|
1 |
| -# Graphs |
2 |
| - |
3 |
| -[](https://github.com/JuliaGraphs/Graphs.jl/actions/workflows/ci.yml?query=branch%3Amaster) |
4 |
| -[](http://codecov.io/github/JuliaGraphs/Graphs.jl?branch=master) |
5 |
| -[](https://juliagraphs.org/Graphs.jl/dev/) |
6 |
| - |
7 |
| -## Overview |
8 |
| - |
9 |
| -Graphs offers both (a) a set of simple, concrete graph implementations -- `Graph` |
10 |
| -(for undirected graphs) and `DiGraph` (for directed graphs), and (b) an API for |
11 |
| -the development of more sophisticated graph implementations under the `AbstractGraph` |
12 |
| -type. |
13 |
| - |
14 |
| -The project goal is to mirror the functionality of robust network and graph |
15 |
| -analysis libraries such as [NetworkX](http://networkx.github.io). It is an explicit design |
16 |
| -decision that any data not required for graph manipulation (attributes and |
17 |
| -other information, for example) is expected to be stored outside of the graph |
18 |
| -structure itself. Such data lends itself to storage in more traditional and |
19 |
| -better-optimized mechanisms. |
20 |
| - |
21 |
| -Additional functionality may be found in a number of companion packages, including: |
22 |
| - * [LightGraphsExtras.jl](https://github.com/JuliaGraphs/LightGraphsExtras.jl): |
23 |
| - extra functions for graph analysis. |
24 |
| - * [MetaGraphs.jl](https://github.com/JuliaGraphs/MetaGraphs.jl): graphs with |
25 |
| - associated meta-data. |
26 |
| - * [SimpleWeightedGraphs.jl](https://github.com/JuliaGraphs/SimpleWeightedGraphs.jl): |
27 |
| - weighted graphs. |
28 |
| - * [GraphIO.jl](https://github.com/JuliaGraphs/GraphIO.jl): tools for importing |
29 |
| - and exporting graph objects using common file types like edgelists, GraphML, |
30 |
| - Pajek NET, and more. |
| 1 | +# Graphs.jl |
31 | 2 |
|
32 |
| -## Documentation |
33 |
| -Full documentation is available at [GitHub Pages](https://juliagraphs.org/Graphs.jl/dev/). |
34 |
| -Documentation for methods is also available via the Julia REPL help system. |
35 |
| -Additional tutorials can be found at [JuliaGraphsTutorials](https://github.com/JuliaGraphs/JuliaGraphsTutorials). |
| 3 | +[](https://github.com/JuliaGraphs/Graphs.jl/actions/workflows/ci.yml?query=branch%3Amaster) [](http://codecov.io/github/JuliaGraphs/Graphs.jl?branch=master) [](https://juliagraphs.org/Graphs.jl/dev/) |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +The goal of _Graphs.jl_ is to offer a performant platform for network and graph analysis in Julia, following the example of libraries such as [NetworkX](http://networkx.github.io) in Python. To this end, _Graphs.jl_ offers: |
| 8 | + |
| 9 | +- a set of simple, concrete graph implementations -- `SimpleGraph` (for undirected graphs) and `SimpleDiGraph` (for directed graphs) |
| 10 | +- an API for the development of more sophisticated graph implementations under the `AbstractGraph` type |
| 11 | +- a large collection of graph algorithms with the same requirements as this API. |
36 | 12 |
|
37 | 13 | ## Installation
|
38 |
| -Installation is straightforward: enter Pkg mode by hitting `]`, and then |
| 14 | + |
| 15 | +Installation is straightforward. First, enter Pkg mode by hitting `]`, and then run the following command: |
| 16 | + |
39 | 17 | ```julia-repl
|
40 |
| -(v1.0) pkg> add Graphs |
| 18 | +pkg> add Graphs |
41 | 19 | ```
|
42 | 20 |
|
43 |
| -## Supported Versions |
44 |
| -* Graphs master is generally designed to work with the latest stable version of Julia (except during Julia version increments as we transition to the new version). |
45 |
| -* The project was previously developed under the name LightGraphs and older versions of LightGraphs (≤ v1.3.5) must still be used with that name. |
46 |
| -* There was also an older package also called Graphs (git tags `v0.2.5` through `v0.10.3`), but the current code base here is a fork of LightGraphs v1.3.5. |
47 |
| -* All older LightGraphs versions are tagged using the naming scheme `lg-vX.Y.Z` rather than plain `vX.Y.Z` which is used for old Graphs versions (≤ v0.10) and newer versions derived from LightGraphs but released with the Graphs name (≥ v1.4). |
48 |
| -* If you are using a version of Julia prior to 1.x, then you should use LightGraphs.jl at `lg-v.12.*` or Graphs.jl at `v0.10.3` |
49 |
| -* If you are using a version of Julia prior to 1.6, then you should use Graphs.jl at `v1.5.1` |
50 |
| -* Later versions: Some functionality might not work with prerelease / unstable / nightly versions of Julia. If you run into a problem, please file an issue. |
| 21 | +## Basic use |
51 | 22 |
|
52 |
| -# Contributing and Reporting Bugs |
53 |
| -We welcome contributions and bug reports! Please see [CONTRIBUTING.md](https://github.com/JuliaGraphs/Graphs.jl/blob/master/CONTRIBUTING.md) |
54 |
| -for guidance on development and bug reporting. |
| 23 | +_Graphs.jl_ includes numerous convenience functions for generating functions, such as `path_graph`, which builds a simple undirected [path graph](https://en.wikipedia.org/wiki/Path_graph) of a given length. Once created, these graphs can be easily interrogated and modified. |
| 24 | + |
| 25 | +```julia-repl |
| 26 | +julia> g = path_graph(6) |
| 27 | +{6, 5} undirected simple Int64 graph |
| 28 | +
|
| 29 | +# Number of vertices |
| 30 | +julia> nv(g) |
| 31 | +6 |
| 32 | +
|
| 33 | +# Number of edges |
| 34 | +julia> ne(g) |
| 35 | +5 |
| 36 | +
|
| 37 | +# Add an edge to make the path a loop |
| 38 | +julia> add_edge!(g, 1, 6); |
| 39 | +``` |
| 40 | + |
| 41 | +## Documentation |
| 42 | + |
| 43 | +The full documentation is available at [GitHub Pages](https://juliagraphs.org/Graphs.jl/dev/). Documentation for methods is also available via the Julia REPL help system. |
| 44 | +Additional tutorials can be found at [JuliaGraphsTutorials](https://github.com/JuliaGraphs/JuliaGraphsTutorials). |
| 45 | + |
| 46 | +## Citing |
| 47 | + |
| 48 | +We encourage you to cite our work if you have used our libraries, tools or datasets. Starring the _Graphs.jl_ repository on GitHub is also appreciated. |
| 49 | + |
| 50 | +The latest citation information may be found in the [CITATION.bib](https://raw.githubusercontent.com/JuliaGraphs/Graphs.jl/master/CITATION.bib) file within the repository. |
| 51 | + |
| 52 | +## Contributing |
| 53 | + |
| 54 | +We welcome contributions and bug reports! |
| 55 | +Please see [CONTRIBUTING.md](https://github.com/JuliaGraphs/Graphs.jl/blob/master/CONTRIBUTING.md) for guidance on development and bug reporting. |
55 | 56 |
|
56 | 57 | JuliaGraphs development subscribes to the [Julia Community Standards](https://julialang.org/community/standards/).
|
57 | 58 |
|
58 |
| -## Project Status |
| 59 | +## Related packages |
| 60 | + |
| 61 | +It is an explicit design decision that any data not required for graph manipulation (attributes and other information, for example) is expected to be stored outside of the graph structure itself. |
| 62 | + |
| 63 | +Additional functionality like advanced IO and file formats, weighted graphs, property graphs, and optimization-related functions can be found in the packages of the [JuliaGraphs organization](https://juliagraphs.org/). |
| 64 | + |
| 65 | +## Project status |
59 | 66 |
|
60 |
| -The Graphs project is a reboot of the LightGraphs |
61 |
| -package (archived in October 2021), which remains available on GitHub at |
62 |
| -[sbromberger/LightGraphs.jl](https://github.com/sbromberger/LightGraphs.jl). If |
63 |
| -you don't need any new features developed since the fork, you can continue to |
64 |
| -use older versions of LightGraphs indefinitely. New versions will be released |
65 |
| -here using the name Graphs instead of LightGraphs. There was an older package |
66 |
| -also called Graphs. The source history and versions are still available in |
67 |
| -this repository, but the current code base is unrelated to the old Graphs code |
68 |
| -and is derived purely from LightGraphs. To access the history of the old Graphs code, |
69 |
| -you can start from [commit 9a25019](https://github.com/JuliaGraphs/Graphs.jl/commit/9a2501948053f60c630caf9d4fb257e689629041). |
| 67 | +The _Graphs.jl_ project is a reboot of the _LightGraphs.jl_ package (archived in October 2021), which remains available on GitHub at [sbromberger/LightGraphs.jl](https://github.com/sbromberger/LightGraphs.jl). If you don't need any new features developed since the fork, you can continue to use older versions of _LightGraphs.jl_ indefinitely. New versions will be released here using the name _Graphs.jl_ instead of _LightGraphs.jl_. There was an older package also called _Graphs.jl_. The source history and versions are still available in this repository, but the current code base is unrelated to the old _Graphs.jl_ code and is derived purely from _LightGraphs.jl_. To access the history of the old _Graphs.jl_ code, you can start from [commit 9a25019](https://github.com/JuliaGraphs/Graphs.jl/commit/9a2501948053f60c630caf9d4fb257e689629041). |
70 | 68 |
|
71 |
| -**Transition from LightGraphs to Graphs:** |
| 69 | +### Transition from LightGraphs to Graphs |
72 | 70 |
|
73 |
| -LightGraphs and Graphs are functionally identical, still there are some steps involved making the change: |
| 71 | +_LightGraphs.jl_ and _Graphs.jl_ are functionally identical, still there are some steps involved making the change: |
74 | 72 |
|
75 |
| -* Change `LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d"` to `Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"` in your Project.toml. |
76 |
| -* Update your `using` and `import` statements. |
77 |
| -* Update your type constraints and other references to `LightGraphs` to `Graphs`. |
78 |
| -* Increment your version number. Following semantic versioning, we suggest a patch release when no graphs or other `Graphs.jl`-objects can be passed through the API of your package by those depending on it, otherwise consider it a breaking release. "Passed through" entails created outside and consumed inside your package and vice versa. |
79 |
| -* Tag a release. |
| 73 | +- Change `LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d"` to `Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"` in your Project.toml. |
| 74 | +- Update your `using` and `import` statements. |
| 75 | +- Update your type constraints and other references to `LightGraphs` to `Graphs`. |
| 76 | +- Increment your version number. Following semantic versioning, we suggest a patch release when no graphs or other `Graphs.jl`-objects can be passed through the API of your package by those depending on it, otherwise consider it a breaking release. "Passed through" entails created outside and consumed inside your package and vice versa. |
| 77 | +- Tag a release. |
80 | 78 |
|
81 |
| -# Citing |
| 79 | +### About versions |
82 | 80 |
|
83 |
| -We encourage you to cite our work if you have used our libraries, tools or datasets, refer to `CITATION.bib`. |
84 |
| -Starring the repository on GitHub is also appreciated. |
| 81 | +- The master branch of _Graphs.jl_ is generally designed to work with versions of Julia starting from the [LTS release](https://julialang.org/downloads/#long_term_support_release) all the way to the [current stable release](https://julialang.org/downloads/#current_stable_release), except during Julia version increments as we transition to the new version. |
| 82 | +- Later versions: Some functionality might not work with prerelease / unstable / nightly versions of Julia. If you run into a problem, please file an issue. |
| 83 | +- The project was previously developed under the name _LightGraphs.jl_ and older versions of _LightGraphs.jl_ (≤ v1.3.5) must still be used with that name. |
| 84 | +- There was also an older package also called _Graphs.jl_ (git tags `v0.2.5` through `v0.10.3`), but the current code base here is a fork of _LightGraphs.jl_ v1.3.5. |
| 85 | +- All older _LightGraphs.jl_ versions are tagged using the naming scheme `lg-vX.Y.Z` rather than plain `vX.Y.Z`, which is used for old _Graphs.jl_ versions (≤ v0.10) and newer versions derived from _LightGraphs.jl_ but released with the _Graphs.jl_ name (≥ v1.4). |
| 86 | +- If you are using a version of Julia prior to 1.x, then you should use _LightGraphs.jl_ at `lg-v.12.*` or _Graphs.jl_ at `v0.10.3` |
0 commit comments