Package: adbcug-adapter
ArangoDB-cuGraph AdapterThe ArangoDB-cuGraph Adapter exports Graphs from ArangoDB, the multi-model database for graph & beyond, into RAPIDS cuGraph, a library of collective GPU-accelerated graph algorithms, and vice-versa.About RAPIDS cuGraphWhile offering a similar API and set of graph algorithms to NetworkX, RAPIDS cuGraph library is GPU-based. Especially for large graphs, this results in a significant performance improvement of cuGraph compared to NetworkX. Please note that storing node attributes is currently not supported by cuGraph. In order to run cuGraph, an Nvidia-CUDA-enabled GPU is required.InstallationPrerequisites: A CUDA-capable GPULatest Releasepip install --extra-index-url=https://pypi.nvidia.com cudf-cu11 cugraph-cu11
pip install adbcug-adapterCurrent Statepip install --extra-index-url=https://pypi.nvidia.com cudf-cu11 cugraph-cu11
pip install git+https://github.com/arangoml/cugraph-adapter.gitQuickstartimportcudfimportcugraphfromarangoimportArangoClientfromadbcug_adapterimportADBCUG_Adapter,ADBCUG_Controller# Connect to ArangoDBdb=ArangoClient().db()# Instantiate the adapteradbcug_adapter=ADBCUG_Adapter(db)ArangoDB to cuGraph######################## 1.1: via Graph name ########################cug_g=adbcug_adapter.arangodb_graph_to_cugraph("fraud-detection")############################## 1.2: via Collection names ##############################cug_g=adbcug_adapter.arangodb_collections_to_cugraph("fraud-detection",{"account","bank","branch","Class","customer"},#  Vertex collections{"accountHolder","Relationship","transaction"},# Edge collections)cuGraph to ArangoDB################################## 2.1: with a Homogeneous Graph ##################################edges=[("Person/A","Person/B",1),("Person/B","Person/C",-1)]cug_g=cugraph.MultiGraph(directed=True)cug_g.from_cudf_edgelist(cudf.DataFrame(edges,columns=["src","dst","weight"]),source="src",destination="dst",edge_attr="weight")edge_definitions=[{"edge_collection":"knows","from_vertex_collections":["Person"],"to_vertex_collections":["Person"],}]adb_g=adbcug_adapter.cugraph_to_arangodb("Knows",cug_g,edge_definitions,edge_attr="weight")############################################################### 2.2: with a Homogeneous Graph & a custom ADBCUG Controller ###############################################################classCustom_ADBCUG_Controller(ADBCUG_Controller):"""ArangoDB-cuGraph controller.Responsible for controlling how nodes & edges are handled whentransitioning from ArangoDB to cuGraph & vice-versa."""def_prepare_cugraph_node(self,cug_node:dict,col:str)->None:"""Prepare a cuGraph node before it gets inserted into the ArangoDBcollection **col**.:param cug_node: The cuGraph node object to (optionally) modify.:param col: The ArangoDB collection the node belongs to."""cug_node["foo"]="bar"def_prepare_cugraph_edge(self,cug_edge:dict,col:str)->None:"""Prepare a cuGraph edge before it gets inserted into the ArangoDBcollection **col**.:param cug_edge: The cuGraph edge object to (optionally) modify.:param col: The ArangoDB collection the edge belongs to."""cug_edge["bar"]="foo"adb_g=ADBCUG_Adapter(db,Custom_ADBCUG_Controller()).cugraph_to_arangodb("Knows",cug_g,edge_definitions)#################################### 2.3: with a Heterogeneous Graph ####################################edges=[('student:101','lecture:101'),('student:102','lecture:102'),('student:103','lecture:103'),('student:103','student:101'),('student:103','student:102'),('teacher:101','lecture:101'),('teacher:102','lecture:102'),('teacher:103','lecture:103'),('teacher:101','teacher:102'),('teacher:102','teacher:103')]cug_g=cugraph.MultiGraph(directed=True)cug_g.from_cudf_edgelist(cudf.DataFrame(edges,columns=["src","dst"]),source='src',destination='dst')# ...# Learn how this example is handled in Colab:# https://colab.research.google.com/github/arangoml/cugraph-adapter/blob/master/examples/ArangoDB_cuGraph_Adapter.ipynb#scrollTo=nuVoCZQv6oyiDevelopment & TestingPrerequisite:arangorestore,CUDA-capable GPUgit clone https://github.com/arangoml/cugraph-adapter.gitcd cugraph-adapter(create virtual environment of choice)pip install --extra-index-url=https://pypi.nvidia.com cudf-cu11 cugraph-cu11pip install -e .[dev](create an ArangoDB instance with method of choice)pytest --url <> --dbName <> --username <> --password <>Note: Apytestparameter can be omitted if the endpoint is using its default value:defpytest_addoption(parser):parser.addoption("--url",action="store",default="http://localhost:8529")parser.addoption("--dbName",action="store",default="_system")parser.addoption("--username",action="store",default="root")parser.addoption("--password",action="store",default="")