Release Date: 5 January 2023

GDS 2.3.0-alpha04 is compatible with Neo4j 5 & 4.4 versions (≥ 4.4.9) & 4.3 versions (≥ 4.3.15) Database.

For GDS compatibility with previous releases, please use GDS Compatibility Table.

Breaking changes


  • Leiden was promoted to the beta tier. It is now called via the 'gds.beta.leiden' command instead of the gds.alpha.leiden command.
  • K-means was promoted to the beta tier. It is now called via the gds.beta.kmeans command instead of the gds.alpha.kmeans command.
  • Minimum weighted spanning tree algorithm was promoted to the beta tier. It is now called via the gds.beta.spanningTree command instead of gds.alpha.spanningTree
    • The procedures gds.alpha.spanningTree.minimum and gds.alpha.spanningTree.maximum have been removed. You can get the same behaviour by specifying the new parameter objective in gds.beta.spanningTree.
    • The weightWriteProperty has been removed as a configuration parameter. To supply the Relationship Type and Property for the produced relationship, use:
      • mutateRelationshipType
      • mutateProperty
    • gds.alpha.spanningTree.kmin and gds.alpha.spanningTree.kmax have been removed as the K-Spanning Tree algorithm has been moved in its own space gds.alpha.kSpanningTree
    • The parameter startNodeId in all Spanning Tree algorithms has been replaced with sourceNode.
  • Arrow: when projecting graphs, null will be translated to NaN for floating point values. This enables users of either the GDS Python Client or PyArrow to load NaN properties stored in Pandas DataFrames
  • Cypher Aggregations will become the primary surface for creating projections with Cypher. Offering a more intuitive and expressive interface than Cypher Projections that can also be used in Fabric or Composite Database setups.
  • The algorithm gds.alpha.influenceMaximization.greedy has been removed. It's replacement is the already existing gds.beta.influenceMaximization.celf algorithm which has the same configuration parameters and offers better performance.

New features


Minimum Directed Steiner Tree

  • Added heuristic for minimum directed Steiner Tree under the gds.beta.steinerTree domain.
    • Added stats mode with gds.beta.steinerTree.stats
    • Added stream mode with gds.beta.steinerTree.stream
    • Added mutate mode with gds.beta.steinerTree.mutate
    • Added write mode with gds.beta.steinerTree.write
    • Now available in progress tracking – gds.list.progress()

Leiden

  • New parameter consecutiveIds that assigns consecutive ids for the discovered communities.
  • New parameter seedProperty to seed initial communities for nodes.
  • New parameter tolerance to enable convergence criteria based on difference in modularity from one iteration to another.
  • Now available in progress tracking – gds.list.progress()
  • Added memory estimation mode:
    • gds.beta.leiden.mutate.estimate
    • gds.beta.leiden.stats.estimate
    • gds.beta.leiden.stream.estimate
    • gds.beta.leiden.write.estimate

Logistic Regression & MLP

  • New configuration parameters classWeights and focusWeight for training methods, supported by procedures:
    • gds.beta.pipeline.nodeClassification.addLogisticRegression
    • gds.beta.pipeline.nodeClassification.addMLP
    • gds.beta.pipeline.linkPrediction.addLogisticRegression
    • gds.beta.pipeline.linkPrediction.addMLP

HashGNN

  • New algorithm gds.alpha.hashgnn.{mutate,stream} to create HashGNN node embeddings
  • New procedures gds.alpha.hashgnn.{mutate,stream}.estimate to estimate the memory required to run HashGNN

Link Prediction

  • Added new optional configuration parameter negativeRelationshipType to gds.beta.pipeline.linkPrediction.configureSplit

Spanning Tree

  • New modes supported: gds.beta.spanningTree.(stats, stream, mutate)
  • New yield output for gds.beta.spanningTree that outputs the sum of weights in the discovered spanning tree.
  • New yield output for gds.beta.spanningTree that outputs the number of relationships written or added for write and mutate mode respectively.
  • Added memory estimation mode :
    • gds.beta.spanningTree.stream.estimate
    • gds.beta.spanningTree.mutate.estimate
    • gds.beta.spanningTree.stats.estimate
    • gds.beta.spanningTree.write.estimate

Write Labels

  • Added gds.alpha.graph.nodeLabel.write to allow for Node Labels to be written back from projections to a Neo4j Database

Graph Projections

  • Arrow now supports specifying undirected relationship types using the undirected_relationship_types configuration argument
  • Cypher Aggregations (gds.alpha.graph.project) now support specifying undirected relationship types using the undirectedRelationshipTypes configuration option
  • New procedure to turn directed relationships into undirected relationships: gds.beta.graph.relationships.toUndirect

Administration

  • Added the jobId and username to the ongoingGdsProcedures return field of gds.alpha.systemMonitor.
  • Added username as a new return field to gds.beta.listProgress.
  • Added a new return field to gds.graph.list called schemaWithOrientation which also includes the orientation.
  • Administrators can now see all running tasks from all users with gds.beta.listProgress

Bug fixes


  • Minimum Weighted Spanning Tree: Graphs with parallel edges could make the discovered tree have wrong weights on relationships
  • Cypher Aggregations: When using gds.alpha.graph.project:
    • The projected graph would list relationship types with zero relationships
    • AIOOB exceptions could surface due to sizing errors
  • Arrow: CREATE_DATABASE action would throw a NPE if missing id fields in Arrow record.. A more descriptive exception is provided

Improvements


Arrow

  • graph import now fully supports external node ids in the 64 Bit space.
  • graph import now supports 16, 32 or 64 Bit node identifiers.

Leiden

  • Better parallelization and improved overall performance improvements

Other Improvements

  • Speed improvements for Dijkstra, Astar, Yens, CELF, weighted Betweenness Centrality, and the Spanning Tree algorithms. The improvements will see a slight increase in the memory consumption of these algorithms.
  • Improved error message for invalid node labels and relationship types

Other changes


  • Histograms returned such as degreeDistribution in gds.graph.list can have slightly different values for specific percentiles due to changes in floating point operations.
  • Progress tracking in the Spanning Tree algorithm has been reworked. Progress reporting may differ from earlier versions.
  • Mark the yielded field schema as deprecated in gds.graph.list and gds.graph.drop. In the next major release, the schema field will use the semantics of schemaWithOrientation
  • In gds.alpha.model.store, the positional argument failIfUnsupportedType is renamed to failIfUnsupported. Both will be supported until it is promoted to the beta tier.
  • Progress tracking for Betweenness Centrality has been reworked. Progress reporting may differ from earlier versions.