8000 Releases · Pometry/Raphtory · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: Pometry/Raphtory

v0.11.1

02 Sep 14:57
fcf885a
Compare
Choose a tag to compare

Release 0.11.1

Bug Fixes

  • Exposed delete on edge in python
  • Fixed missing DTime parsing on Python properties
  • Fixed a bug in import_node(s)/import_edge(s) when the graph is indexed with ints

Graphql

  • Added new RemoteGraph, RemoteNode and RemoteEdge classes to wrap updates to graph on a server. These functions can be seen below
  • Made Properties optional in add_updates for Node and Edge in Graphql
  • fixed a bug in batch add nodes, where you couldn't just add the node_type.
client = graphql.RaphtoryClient(url="http://localhost:1736")
### RaphtoryClient functions
client.new_graph(path)

### RemoteGraph Functions
client.graph(path).add_node()
client.graph(path).add_nodes()
client.graph(path).add_edge()
client.graph(path).add_edges()
client.graph(path).delete_edge()
client.graph(path).add_properties()
client.graph(path).add_constant_properties()
client.graph(path).update_constant_properties()

### RemoteNode functions
client.graph(path).node(name).add_constant_properties()
client.graph(path).node(name).set_node_type()
client.graph(path).node(name).update_constant_properties()
client.graph(path).node(name).add_updates()

### RemoteEdge functions
client.graph(path).edge(src,dst).delete()
client.graph(path).edge(src,dst).add_constant_properties()
client.graph(path).edge(src,dst).update_constant_properties()
client.graph(path).edge(src,dst).add_updates()

##Misc

  • Tided up graphql pytests as having a single file was driving me mad
  • Broke the graphql python module into smaller files

What's Changed

Full Changelog: v0.11.0...v0.11.1

v0.11.0

23 Aug 16:20
9bb4299
Compare
Choose a tag to compare

Release v0.11.0

Cached Graph

  • We have updated the on-disk format of the graph to now be stable across versions.
  • This new storage format is also updatable, allowing deltas to be inserted into an already existing file instead of having to resave the whole graph.
  • You can now 'cache' a graph, attaching a file to it, and periodically save all changes which have been inserted. Great for checkpointing! See the example below:
from raphtory import Graph
g= Graph() #Create new graph

g.add_edge(1,1,2)
g.add_edge(3,4,5)
g.cache("example_graph.raph") #add some updates and write these to a file - keeping the file attached to the graph

g.add_node(2,3)
g.add_edge(10,2,3)
g.write_updates() #Add some new updates and write these out

GraphQL

  • The GraphQL server has had a massive overhaul, allowing it to now create, update, and manage a working directory full of graphs.
  • Graphs will now persist across server runs based on the new cache-graph file format described above.
  • These new APIs also allow you to export subgraphs from one graph into another.

A basic example of this can be seen below:

from raphtory import graphql

server = graphql.GraphServer("graphs/")
server.run()
client = server.get_client() #run a local server and get the client 
#create a new graph in the 'example_graphs' namespace
client.query(""" 
        mutation {
            newGraph(path:"example_graphs/graph1",graphType:EVENT)
        }
""")
#add an edge into the new graph
client.query("""
query add_edge{ 
        updateGraph(path: "example_graphs/graph1") {
            addEdge(time:1,src:"node1",dst:"node2",properties: [
                {key: "new", value: "new props are  awesome"}
                {key: "number", value: 0.7}
                {key: "map", value: { a: "hi"}}
            ]){success}
        }
}""")

Pandas and Parquet loader changes:

  • We have placed time as the second parameter within the graph.load_x_from_y to match g.add_node and g.add_edge.
  • All parameters named props in the graph.load_x_from_y functions have been updated to properties.
  • The Layer_in_df flag has been replaced by layer and layer_col which will now throw an error if both are set.
  • The node_type_in_df flag has been replaced by node_type and node_type_col which will now throw an error if both are set.
  • You can now set the node_type via load_node_props_from_x functions.
  • We have removed the static load_from_pandas and load_from_parquet functions from the graph as these had WAY too many arguments and were all around very confusing. Instead you can now create a graph first and use load_edges_from_X etc.
  • The Datareader behind the Pandas and Parquet loaders now chunks the data and loads these in in part, drastically reducing the memory overhead for large datasets on ingestion.

Minor changes

  • Optimised the way node IDs are stored/referenced, greatly increasing both lookup and insertion speed. This does mean, however, that a graph can only have String XOR Integer ids now, not both at the same time.
  • We have updated to rust 1.80.0

What's Changed

Full Changelog: v0.10.0...v0.11.0

v0.10.0

15 Jul 13:23
d8752c3
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.9.3...v0.10.0

v0.9.3

20 Jun 15:25
6b70f9d
Compare
Choose a tag to compare

Release v0.9.3

v0.9.2

10 Jun 17:04
1c7a7d7
Compare
Choose a tag to compare

New functionality and API changes

  • PersistentGraphs are now available as properties on the graph #1596
  • EventGraphs and PersistentGraphs can now be converted into eachother via into_graph and into_persistent_graph #1596
  • Changed the return type of layer_name and time from Option to Result - this means when they are called incorrectly the user will get an error (explaining when these functions should be used) instead of a None, which could easily be confused for the edge not having a layer name or timestamp. #1593
  • Added unique and ordered_dedupe functions on temporal properties #1603
  • Added a Temporal Bipartite projection #1396
  • Added node type filtering on Nodes PathFromGraph and PathFromNode #1510

GraphQL Improvements

  • Added Microsoft SSO/Authentication #1629
  • Set in_/out_/edges to return GQLEdges objects which can be correctly filtered and paged. #1585
  • Set in_/out_/neighbours to return GQLPathFromNode objects which can be correctly filtered and paged. #1585
  • Added an optional keys argument to the GQLProperties values function - meaning you can select a subset of the properties on the nodes without having to call value over and over. #1585
  • Added Apollo event tracing to find bottlenecks in your queries #1585
  • Removed node/edge filtering as it was ineffecient - all functionality is available now that graphql APIs are in parity with python/rust #1585
  • Removed several old/ultra specific functions which can now be better served by the standard APIs #1585

Bug fixes and performance improvments

  • Drastically improved the performance of the Eval APIs used for writing algorithms in Raphtory - this should see all algorithms written this way run faster. #1617 #1622
  • Reworked the temporal motif algorithms to use more efficient internal functions and data structures #1623
  • Fixed an issue with exploded edges panicking if a requested property wasn't present #1592
  • Graphql can now correctly index Boolean properties #1597
  • Exploded edges now return the correct value when calling first and last #1594
  • Fixed an issue in saving/loading graphs in python where save used relative paths, but load used absolute.
  • Added several new benchmarks to ensure no regressions in performance when making larger core changes.
  • Several documentation fixes

Structural Changes

  • There are several large structural refactors as part of this release, with another planned for 0.10.0 - these are to enable us to make both the Rust and Python libraries more extensible for developers building plugins. #1608 #1631

What's Changed

New Contributors

Full Changelog: v0.8.1...v0.9.2

v0.8.1

01 May 16:00
545069c
Compare
Choose a tag to compare

New Features

  • Exposed update_constant_properties on both the nodes and edges (was previously only available on the graph)

Version changes

  • Removed support for python 3.7
  • Bumped rust from 1.75 to 1.77

Bug fixes

  • Fixed a bug in the property aggregation methods where None's were being included in the results.
  • Changed the notebook argument in to_pyvis to be false by default.

v0.8.0

15 Apr 20:04
baecde7
Compare
Choose a tag to compare

What's Changed

New Contributors

**...

Read more

v0.7.0

21 Dec 17:32
c382036
Compare
Choose a tag to compare

Release v0.7.0

What's Changed

Full Changelog: v0.6.1...v0.7.0

v0.6.1

06 Oct 12:46
4a6da4a
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.6.0...v0.6.1

v0.6.0

03 Oct 17:02
f3964a9
Compare
Choose a tag to compare

Release v0.6.0

What's Changed

Full Changelog: v0.5.7...v0.6.0

0