Skip to content

Releases: neo4j/graph-data-science

1.1.3

08 Jul 17:03
Compare
Choose a tag to compare

Release date: 9 July, 2020

GDS 1.1.3 is compatible with Neo4j 3.5.9 and above, but not Neo4j 4.x. For a 4.0 compatible release, please see GDS 1.2.2.

Breaking changes:

  • Alpha similarity algorithms no longer accept graph names as a parameter. The algorithms never used the named graph, and now the possibility to specify one is removed - this provides significant performance improvements.

Bug fixes:

  • Fixed a bug where the Jaccard Similarity function would compute incorrectly when inputs contained duplicates.
  • Fixed a bug where Alpha Similarity algorithms would load a graph even though they operate on separate inputs.

See also:

GDS 1.3 Preview

03 Jul 14:58
Compare
Choose a tag to compare
GDS 1.3 Preview Pre-release
Pre-release

Release date: 3 July, 2020

Warning: This is a preview release and not intended for production use. If you have any feedback, please let us know: https://github.com/neo4j/graph-data-science/issues

GDS 1.3.0 is compatible with Neo4j 4.0 and 4.1, but not Neo4j 3.5.x. For a 3.5 compatible release, please see GDS 1.1.2.

New Features

  • Node Embeddings: We have added three proof of concept implementations of node embeddings to our alpha tier - Node2Vec, Random Projections, and GraphSage.
  • Node2Vec supports:
    • gds.alpha.node2vec.stream
    • gds.alpha.node2vec.write
  • Random Projections supports:
    • gds.alpha.randomProjection.stream
    • gds.alpha.randomProjection.write
  • GraphSAGE supports:
    • gds.alpha.graphSage.stream
    • gds.alpha.graphSage.write
  • Betweenness Centrality is now fully supported. We have added the following procedures to the production tier:
    • gds.betweenness.stream
    • gds.betweenness.stats
    • gds.betweenness.mutate
    • gds.betweenness.write
    • gds.betweenness.stream.estimate
    • gds.betweenness.stats.estimate
    • gds.betweenness.mutate.estimate
    • gds.betweenness.write.estimate
  • RBAC integration: GDS Enterprise Edition now respects role based access control definitions
  • Pregel API improvements: we now support relationship weights in our Pregel API
  • Streaming from the in memory graph: We now support gds.graph.streamNodeProperty, gds.graph.streamNodeProperties, gds.graph.streamRelationshipProperty and gds.graph.streamRelationshipProperties, which allow users to stream data from an in memory graph.
  • nodeSimilarity now supports relationship weights.
  • Graph export (gds.graph.export) has graduated to the product supported tier, and now includes the option to specify a default relationship type.
  • Harmonic centrality has been added, and we now support gds.alpha.closeness.harmonic.stream and gds.alpha.closeness.harmonic.stream
  • Stats mode: we’ve added support for the statistics mode (returning percentiles and distribution metrics) for the following procedures
    • Cosine Similarity
    • Euclidean Distance
    • Overlap Similarity
    • Pearson Similarity

Breaking Changes:

  • The alpha procedures for betweenness centrality have been removed (gds.alpha.betweenness.stream, gds.alpha.betweenness.write, gds.alpha.betweenness.sampled.stream, gds.alpha.betweenness.sampled.write).
  • gds.beta.graph.export was removed and replaced with the product ready tier (gds.graph.export).
  • Alpha similarity algorithms no longer accept graph names as parameters; they do not use the named graph, so the requirement to specify one has been removed.

Improvements:

  • Previously, users could export an in-memory graph to an existing (but empty) database, which would produce an inconsistent database -- this operation is no longer allowed.
  • gds.alpha.randomWalk will return partial walks when the configured steps cannot be exhausted
  • gds.alpha.shortestPath.astar now reads lat/lon properties from the in memory graph during algorithm execution
  • Alpha similarity algorithms no longer require graph projections to be specified (this speeds up run time significantly)
  • gds.nodeSimilarity.stats now returns similarityPairs to track the number of comparisons
  • Improved memory estimation for Cypher projections
  • Inner element projection fields are now included as part of syntax checking, as well as typo correction
  • Most IllegalArgumentExceptions are now collected and returned in a single exception

Bug Fixes:

  • Fixed a bug where Node2Vec returned an ArrayIndexOutOfBounds Exception
  • Fixed a bug where Jaccard Similarity would compute incorrectly when inputs contained duplicated
  • Fixed a bug where alpha similarity algorithms loaded a graph even though they operated on separate inputs
  • Fixed a bug where implicit graph loading ignored the concurrency setting in the algorithm configuration
  • Fixed a bug where generated graphs (from gds.beta.graph.generate) were not listed by graph.list
  • Fixed a bug in gds.alpha.ml.ann where the computation could fail with an IndexOutOfBoundsException
  • Path finding algorithms:
    • Fixed a bug affecting gds.alpha.dfs.stream and gds.alpha.bfs.stream where the result-path was in the wrong order.
    • Fixed a bug affection gds.alpha.kshortestPath, gds.alpha.shortestPaths.stream and gds.alpha.shortestPath.astar where a wrong default relationship weight lead to incorrect path calculations
    • Fixed a bug affecting path-finding algorithms, where the startNode or endNode was not loaded
    • Fixed a bug affecting gds.alpha.spanningTree.kmin and gds.alpha.spanningTree.kmax where an incorrect startNodeId was used to create the spanning tree
  • Updated function descriptions to start with “RETURN” instead of “CALL”
  • Added missing fields to the following:
    • nodePropertiesWritten, to the Louvain mutate procedure
    • nodePropertiesWritten to the label propagation algorithm
    • postProcessingMillis to the pageRank stats, write, and mutate procedures

1.3.0-alpha02

25 Jun 18:55
Compare
Choose a tag to compare
1.3.0-alpha02 Pre-release
Pre-release
Tagging for 1.3.0-alpha02

1.2.2

16 Jun 13:50
Compare
Choose a tag to compare

Release date: 16 June, 2020

GDS 1.2.2 is compatible with Neo4j 4.0 and above, but not Neo4j 3.5.x. For a 3.5 compatible release, please see GDS 1.1.2.

Bug fixes:

  • Added missing field nodePropertiesWritten to Louvain mutate procedure
  • Fixed a bug in gds.alpha.ml.ann where the computation sometimes failed with an IndexOutOfBoundsException.
  • Fixed a case in graph creation where a named all-relationships projection would be loaded but the name discarded, and could then not be used for filtering.
  • gds.alpha.randomWalk now returns partial walks when the configured steps cannot be exhausted.
  • Fixed a bug affecting gds.alpha.dfs.stream and gds.alpha.bfs.stream where the result-path was in the wrong order.

See also:

1.1.2

15 Jun 13:49
Compare
Choose a tag to compare

Release date: 15 June, 2020

GDS 1.1.2 is compatible with Neo4j 3.5.9 and above, but not Neo4j 4.x. For a 4.0 compatible release, please see GDS 1.2.1.

Bug fixes:

  • Added missing field nodePropertiesWritten to Louvain mutate procedure
  • Fixed a bug in gds.alpha.ml.ann where the computation sometimes failed with an IndexOutOfBoundsException.
  • Fixed a case in graph creation where a named all-relationships projection would be loaded but the name discarded, and could then not be used for filtering.
  • gds.alpha.randomWalk now returns partial walks when the configured steps cannot be exhausted.
  • Fixed a bug affecting gds.alpha.dfs.stream and gds.alpha.bfs.stream where the result-path was in the wrong order.

See also:

1.2.1

08 May 16:22
Compare
Choose a tag to compare

Release date: May 7, 2020

Bug Fixes:

  • A bug in the maxDegree parameter was fixed, which previously would prevent triangleCount from running when it was used.

1.2.0

07 May 21:28
Compare
Choose a tag to compare

Release date: May 7, 2020

Compatibility: GDS 1.2 is compatible with Neo4j 4.0.0 and above. GDS 1.2 is not compatible with Neo4j 3.5.x.

New Features:

  • Triangle Count has moved into the product tier. This means it is now called via gds.triangleCount, and all associated bugs have been fixed. We have also added an optional maxDegree parameter that users can specify to eliminate dense nodes and speed up calculations.
    • This adds the following new procedures: gds.triangleCount.stream, gds.triangleCount.write, gds.triangleCount.mutate, gds.triangleCount.stats
    • This removes the alpha procedures gds.alpha.triangleCount.stream, gds.alpha.triangleCount.write, and gds.alpha.triangleCount.stats
    • The global triangle count is available as an output of the .stats or .write mode
  • Clustering Coefficient . has moved into the product tier (and is now separate from triangleCount). It can now be called via gds.localClusteringCoefficient, and all bugs have been fixed.
    • This adds the following new procedures: gds.localClusteringCoefficient.stream, gds.localClusteringCoefficient.write, gds.localClusteringCoefficient.mutate, gds.localClusteringCoefficient.stats
    • The global clustering coefficient is available as an output of the .stats or .write mode
  • Graph export has moved to the beta tier, and can now export a new graph as a new database in Neo4j 4.0’s multidatabase environment.
  • All of our product tier community detection algorithms now support assigning consecutive integers for community IDs by using the optional consecutiveID parameter.
  • gds.graph.list now outputs sizeInBytes and memoryUsage to enable users to see the memory footprint of loaded graphs.
  • We have added node label filters to gds.graph.writeNodeProperties, gds.graph.removeNodeProperties, and gds.util.nodeProperty
  • We have added a centralityDistribution result field for page pank’s write, stats, and mutate procedures

Breaking changes:

  • GDS 1.2 has dropped support for Neo4j 3.5, and now only works in 4.0
  • gds.alpha.triangle.stream has been renamed gds.alpha.triangles
  • storeDir has been removed from gds.graph.export, instead it will create a new database in the databases directory of your current installation.
  • creationTime and modificationTime have been updated to used ZonedDateTime
  • We have removed explicit definition of property mappings and aggregations from cypher projections

Bug fixes:

  • Fixed gds.graph.writeNodeProperties where it did not return the count of mutated properties, and incorrectly wrote 0 for nodes which were missing properties.
  • Graphs created via Cypher projections no longer return inferred projections (they just return the query)
  • Corrected a bug where mutated node properties had size 0
  • Fixed a bug where community detection using a seed property from an in-memory node property failed to write results.
  • Fixed a bug where similarity algorithms would throw on weight vectors containing null

GDS 1.1.1 Release (compatible with Neo4j 3.5)

06 May 20:13
Compare
Choose a tag to compare

Release date: 4 May, 2020

GDS 1.1.1 is compatible with Neo4j 3.5.9 and above, but not Neo4j 4.x. For a 4.0 compatible release, please see GDS 1.2.0.

Bug fixes:

  • Fixed several bugs with mutated node properties:
    • Mutated node properties no longer have size 0
    • gds.graph.writeNodeProperties previously did not return counts for node properties; this has been fixed
  • Fixed a bug where progress logging could slow down algorithm performance
  • gds.graph.writeNodeProperties no longer writes 0 to nodes missing the specified property
  • Fixed a bug where seeding from an in-memory node property caused no results to be written back.

1.2.0-alpha01

27 Apr 14:36
Compare
Choose a tag to compare
1.2.0-alpha01 Pre-release
Pre-release

Release date: April 24, 2020

Important information: This is a preview release and not recommended for production. We plan on offering a GA version of our 1.2 library on May 7. If you have feedback on the preview, please open an issue on our github repo!

Compatibility: GDS 1.2 is compatible with Neo4j 4.0.0 and above.

New Features:

  • Triangle Count has moved into the product tier. This means it is now called via gds.triangleCount, and all associated bugs have been fixed.
    • This adds the following new procedures: gds.triangleCount.stream, gds.triangleCount.stream.estimate, gds.triangleCount.write, gds.triangleCount.write.estimate, gds.triangleCount.stats, gds.triangleCount.stats.estimate, gds.triangleCount.mutate, and gds.triangleCount.mutate.estimate
    • This removes the alpha procedures gds.alpha.triangleCount.stream, gds.alpha.triangleCount.write, gds.alpha.triangleCount.stats
  • Graph export has moved to the beta tier, and can now export a new graph as a new database in Neo4j 4.0’s multidatabase environment.
  • All of our product tier community detection algorithms now support assigning consecutive integers for community IDs by using the optional consecutiveID parameter.
  • We have added a schema column to graph.list() display a unified view of the schema of the in memory graph (node labels, node properties, relationship types, relationship properties). This includes any new properties or relationships introduced by using mutate mode.
  • We have added node label filters to gds.graph.writeNodeProperties, gds.graph.removeNodeProperties and gds.util.nodeProperty
  • gds.graph.list now outputs sizeInBytes and memoryUsage to enable users to see the memory footprint of loaded graphs.

Breaking changes:

  • We have dropped support for Neo4j 3.5
  • storeDir has been removed from gds.graph.export, instead it will create a new database in the databases directory of your current installation.
  • creationTime and modificationTime have been updated to used ZonedDateTime
  • We have removed the explicit definition of property mappings and aggregations in cypher projections.

Bug fixes:

  • Fixed &gds.graph.writeNodeProperties where it did not return the count of mutated properties, and incorrectly wrote 0 for nodes which were missing properties.
  • Graphs created via Cypher projections no longer return inferred projections (they just return the query)
  • Corrected a bug where mutated node properties had size 0
  • Fixed a bug where community detection using a seed property from an in-memory node property failed to write results.

1.1.0

10 Apr 16:56
Compare
Choose a tag to compare

Release date: 9 April, 2020

New features:

  • Multiple node label support: You can now load, and reference, multiple node labels in your in memory graph. This allows you to load all the data you need for multiple algorithms once and refer to specific node labels when you call each algorithm. This is specified by the new parameter nodeLabels.
  • Graph mutability: We’ve introduced the ability to update your in-memory analytics graph when you execute product supported and beta algorithms. This allows you to chain together multiple algorithms, and only write back your final results to your Neo4j database. To support this we’ve added procedures to:
  • Heap control: All gds procedures execute on heap, and this may lead to OOMs, so we now block the execution of algorithms that will require more memory than currently available.
  • Graph Export: We’ve added a catalog procedure to allow you to create new Neo4j databases from named in-memory graphs, gds.alpha.graph.export
  • Other features to improve user experience:
    • gds.graph.list now returns a timestamp to indicate when a graph was created as well as a modificationDate to indicate if/when a graph was mutated.
    • Removed redundant write config parameter from several alpha procedures
    • Added validateRelationships parameter to Cypher projections, to control behaviour when a user accidentally specifies relationships between non-existent nodes (specify drop or fail)
    • New aggregation type, COUNT, to summarize parallel relationships based on their total count
    • When a user improperly misconfigures a procedure call, the error message now suggests the possible misspelled key
    • Better error messaging when a user accidentally loads an empty graph

Bug fixes:

  • gds.alpha.spanningTree has been fixed so it now creates relationship properties
  • Fixed .estimate function when run on an in memory graph created via gds.graph.generate
  • Fixed out of order and incorrect progress logging for gds.nodeSimilarity
  • Removed default value of null for graph names in gds.graph.exists()

Breaking changes:

  • Parallel cypher node loading (via use of SKIP and LIMIT) has been disabled -- data are already loaded in parallel, and this method results in significantly worse performance than the default mode.

The GDS library is compatible with Neo4j 3.5 versions 3.5.9 and above.

The GDS library is not compatible with Neo4j 4.0. We plan on releasing a 4.0 compatible version in late April 2020.

Feedback? Please post feedback as issues on our github repo!