Skip to content

Commit 7b85555

Browse files
authored
Merge pull request #89 from adamnsch/1.0.0-pre-release-actions
1.0.0 pre-release actions
2 parents d8308ea + 6f3e36d commit 7b85555

File tree

4 files changed

+20
-23
lines changed

4 files changed

+20
-23
lines changed

README.md

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,12 @@ It enables users to write pure Python code to project graphs, run algorithms, as
66
The API is designed to mimic the GDS Cypher procedure API in Python code.
77
It abstracts the necessary operations of the [Neo4j Python driver](https://neo4j.com/docs/python-manual/current/) to offer a simpler surface.
88

9+
`graphdatascience` is only guaranteed to work with GDS versions 2.0+.
10+
911
Please leave any feedback as issues on [the source repository](https://github.com/neo4j/graph-data-science-client).
1012
Happy coding!
1113

1214

13-
## NOTE
14-
15-
This is a work in progress and some GDS features are known to be missing or not working properly (see [Known limitations](#known-limitations) below).
16-
Further, this library targets GDS versions 2.0+ (not yet released) and as such may not work with older versions.
17-
18-
1915
## Installation
2016

2117
To install the latest deployed version of `graphdatascience`, simply run:
@@ -28,7 +24,7 @@ pip install graphdatascience
2824
## Usage
2925

3026
What follows is a high level description of some of the operations supported by `graphdatascience`.
31-
For extensive documentation of all capabilities, please refer to the [Python client chapter of the GDS Manual](https://neo4j.com/docs/graph-data-science/2.0-preview/python-client/).
27+
For extensive documentation of all capabilities, please refer to the [Python client chapter of the GDS Manual](https://neo4j.com/docs/graph-data-science/current/python-client/).
3228

3329
Extensive end-to-end examples in Jupyter ready-to-run notebooks can be found in the [`examples` source directory](https://github.com/neo4j/graph-data-science-client/tree/main/examples):
3430

@@ -37,7 +33,7 @@ Extensive end-to-end examples in Jupyter ready-to-run notebooks can be found in
3733

3834
### Imports and setup
3935

40-
The library wraps the [Neo4j Python driver](https://neo4j.com/docs/python-manual/2.0-preview/) with a `GraphDataScience` object through which most calls to GDS will be made.
36+
The library wraps the [Neo4j Python driver](https://neo4j.com/docs/python-manual/current/) with a `GraphDataScience` object through which most calls to GDS will be made.
4137

4238
```python
4339
from graphdatascience import GraphDataScience
@@ -70,7 +66,7 @@ gds = GraphDataScience("neo4j+s://my-aura-ds.databases.neo4j.io:7687", auth=("ne
7066

7167
### Projecting a graph
7268

73-
Supposing that we have some graph data in our Neo4j database, we can [project the graph into memory](https://neo4j.com/docs/graph-data-science/2.0-preview/graph-project/).
69+
Supposing that we have some graph data in our Neo4j database, we can [project the graph into memory](https://neo4j.com/docs/graph-data-science/current/graph-project/).
7470

7571
```python
7672
# Optionally we can estimate memory of the operation first
@@ -83,12 +79,12 @@ assert res["projectMillis"] >= 0
8379

8480
The `G` that is returned here is a `Graph` which on the client side represents the projection on the server side.
8581

86-
The analogous calls `gds.graph.project.cypher{,.estimate}` for [Cypher based projection](https://neo4j.com/docs/graph-data-science/2.0-preview/graph-project-cypher/) are also supported.
82+
The analogous calls `gds.graph.project.cypher{,.estimate}` for [Cypher based projection](https://neo4j.com/docs/graph-data-science/current/graph-project-cypher/) are also supported.
8783

8884

8985
### Running algorithms
9086

91-
We can take a projected graph, represented to us by a `Graph` object named `G`, and run [algorithms](https://neo4j.com/docs/graph-data-science/2.0-preview/algorithms/) on it.
87+
We can take a projected graph, represented to us by a `Graph` object named `G`, and run [algorithms](https://neo4j.com/docs/graph-data-science/current/algorithms/) on it.
9288

9389
```python
9490
# Optionally we can estimate memory of the operation first (if the algo supports it)
@@ -100,16 +96,16 @@ assert res["nodePropertiesWritten"] == G.node_count()
10096
```
10197

10298
These calls take one positional argument and a number of keyword arguments depending on the algorithm.
103-
The first (positional) argument is a `Graph`, and the keyword arguments map directly to the algorithm's [configuration map](https://neo4j.com/docs/graph-data-science/2.0-preview/common-usage/running-algos/#algorithms-syntax-configuration-parameters).
99+
The first (positional) argument is a `Graph`, and the keyword arguments map directly to the algorithm's [configuration map](https://neo4j.com/docs/graph-data-science/current/common-usage/running-algos/#algorithms-syntax-configuration-parameters).
104100

105-
The other [algorithm execution modes](https://neo4j.com/docs/graph-data-science/2.0-preview/common-usage/running-algos/) - stats, stream and write - are also supported via analogous calls.
101+
The other [algorithm execution modes](https://neo4j.com/docs/graph-data-science/current/common-usage/running-algos/) - stats, stream and write - are also supported via analogous calls.
106102
The stream mode call returns a pandas DataFrame (with contents depending on the algorithm of course).
107103
The mutate, stats and write mode calls however return a pandas Series with metadata about the algorithm execution.
108104

109105

110106
#### Topological link prediction
111107

112-
The methods for doing [topological link prediction](https://neo4j.com/docs/graph-data-science/2.0-preview/algorithms/linkprediction/) are a bit different.
108+
The methods for doing [topological link prediction](https://neo4j.com/docs/graph-data-science/current/algorithms/linkprediction/) are a bit different.
113109
Just like in the GDS procedure API they do not take a graph as an argument, but rather two node references as positional arguments.
114110
And they simply return the similarity score of the prediction just made as a float - not any kind of pandas data structure.
115111

@@ -144,7 +140,7 @@ This includes support for models trained using pipelines (for Link Prediction an
144140

145141
#### Pipelines
146142

147-
There's native support for [Link prediction pipelines](https://neo4j.com/docs/graph-data-science/2.0-preview/algorithms/ml-models/linkprediction-pipelines/) and [Node classification pipelines](https://neo4j.com/docs/graph-data-science/2.0-preview/algorithms/ml-models/nodeclassification-pipelines/).
143+
There's native support for [Link prediction pipelines](https://neo4j.com/docs/graph-data-science/current/algorithms/ml-models/linkprediction-pipelines/) and [Node classification pipelines](https://neo4j.com/docs/graph-data-science/current/algorithms/ml-models/nodeclassification-pipelines/).
148144
Apart from the call to create a pipeline, the GDS native pipelines calls are represented by methods on pipeline Python objects.
149145
Additionally to the standard GDS calls, there are several methods to query the pipeline for information about it.
150146

@@ -192,7 +188,7 @@ Note that with GraphSAGE we call the `train` method directly and supply all trai
192188

193189
### Graph catalog utils
194190

195-
All procedures from the [GDS Graph catalog](https://neo4j.com/docs/graph-data-science/2.0-preview/management-ops/graph-catalog-ops/) are supported with `graphdatascience`.
191+
All procedures from the [GDS Graph catalog](https://neo4j.com/docs/graph-data-science/current/management-ops/graph-catalog-ops/) are supported with `graphdatascience`.
196192
Some examples are (where `G` is a `Graph`):
197193

198194
```python
@@ -210,7 +206,7 @@ The idea is to have a way of creating `Graph`s for already projected graphs, wit
210206

211207
### Pipeline catalog utils
212208

213-
All procedures from the [GDS Pipeline catalog](https://neo4j.com/docs/graph-data-science/2.0-preview/pipeline-catalog/) are supported with `graphdatascience`.
209+
All procedures from the [GDS Pipeline catalog](https://neo4j.com/docs/graph-data-science/current/pipeline-catalog/) are supported with `graphdatascience`.
214210
Some examples are (where `pipe` is a machine learning training pipeline object):
215211

216212
```python
@@ -228,7 +224,7 @@ The idea is to have a way of creating pipeline objects for already existing pipe
228224

229225
### Model catalog utils
230226

231-
All procedures from the [GDS Model catalog](https://neo4j.com/docs/graph-data-science/2.0-preview/model-catalog/) are supported with `graphdatascience`.
227+
All procedures from the [GDS Model catalog](https://neo4j.com/docs/graph-data-science/current/model-catalog/) are supported with `graphdatascience`.
232228
Some examples are (where `model` is a machine learning model object):
233229

234230
```python
@@ -247,7 +243,7 @@ The idea is to have a way of creating model objects for already loaded models, w
247243
### Node matching without Cypher
248244

249245
When calling path finding or topological link prediction algorithms one has to provide specific nodes as input arguments.
250-
When using the GDS procedure API directly to call such algorithms, typically Cypher `MATCH` statements are used in order to find valid representations of input nodes of interest, see eg. [this example in the GDS docs](https://neo4j.com/docs/graph-data-science/2.0-preview/algorithms/dijkstra-source-target/#algorithms-dijkstra-source-target-examples-stream).
246+
When using the GDS procedure API directly to call such algorithms, typically Cypher `MATCH` statements are used in order to find valid representations of input nodes of interest, see eg. [this example in the GDS docs](https://neo4j.com/docs/graph-data-science/current/algorithms/dijkstra-source-target/#algorithms-dijkstra-source-target-examples-stream).
251247
To simplify this, `graphdatascience` provides a utility function, `gds.find_node_id`, for letting one find nodes without using Cypher.
252248

253249
Below is an example of how this can be done (supposing `G` is a projected `Graph` with `City` nodes having `name` properties):
@@ -272,8 +268,8 @@ For more advanced filtering we recommend users do matching via Cypher's `MATCH`.
272268

273269
Operations known to not yet work with `graphdatascience`:
274270

275-
* [Numeric utility functions](https://neo4j.com/docs/graph-data-science/2.0-preview/management-ops/utility-functions/#utility-functions-numeric) (will never be supported)
276-
* [Cypher on GDS](https://neo4j.com/docs/graph-data-science/2.0-preview/management-ops/create-cypher-db/) (might be supported in the future)
271+
* [Numeric utility functions](https://neo4j.com/docs/graph-data-science/current/management-ops/utility-functions/#utility-functions-numeric) (will never be supported)
272+
* [Cypher on GDS](https://neo4j.com/docs/graph-data-science/current/management-ops/create-cypher-db/) (might be supported in the future)
277273

278274

279275
## License
File renamed without changes.

graphdatascience/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.1.1"
1+
__version__ = "1.0.0"

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
version = f.readline().strip().split()[-1][1:-1]
1111

1212
classifiers = [
13+
"Development Status :: 5 - Production/Stable",
1314
"Intended Audience :: Developers",
1415
"Intended Audience :: Science/Research",
1516
"License :: OSI Approved :: Apache Software License",
@@ -22,7 +23,7 @@
2223
]
2324

2425
project_urls = {
25-
"Documentation": "https://neo4j.com/docs/graph-data-science/2.0-preview/python-client/",
26+
"Documentation": "https://neo4j.com/docs/graph-data-science/current/python-client/",
2627
"Source": "https://github.com/neo4j/graph-data-science-client",
2728
"Bug Tracker": "https://github.com/neo4j/graph-data-science-client/issues",
2829
}

0 commit comments

Comments
 (0)