Lib for Nebula Graph integration with Deep Graph Library (DGL).
Project description
nebula-dgl
nebula-dgl is the Lib for Nebula Graph integration with Deep Graph Library (DGL).
nebula-dgl is still WIP, there is a demo project here .
Guide
Installation
# this is needed until nebula-python release to fix storageclient issue by including https://github.com/vesoft-inc/nebula-python/pull/219
python3 -m pip install nebula3-python==3.3.0
python3 -m pip install dgl dglgo -f https://data.dgl.ai/wheels/repo.html
# build and install
python3 -m pip install .
Playground
Clone this repository to your local directory first.
git clone https://github.com/wey-gu/nebula-dgl.git
cd nebula-dgl
- Deploy NebulaGraph playground with Nebula-UP:
Install NebulaGraph:
curl -fsSL nebula-up.siwei.io/install.sh | bash
Load example data:
~/.nebula-up/load-basketballplayer-dataset.sh
- Create a jupyter notebook in same docker network:
nebula-net
docker run -it --name dgl -p 8888:8888 --network nebula-net \
-v "$PWD":/home/jovyan/work jupyter/datascience-notebook \
start-notebook.sh --NotebookApp.token='secret'
Now you can either:
- access the notebook at http://localhost:8888/lab/tree/work?token=secret and create a new notebook.
Or:
- run ipython with the container:
docker exec -it dgl ipython
cd work
- Install nebula-dgl in notebook:
Install nebula-dgl:
!python3 -m pip install python3 -m pip install nebula3-python==3.3.0
!python3 -m pip install dgl dglgo -f https://data.dgl.ai/wheels/repo.html
!python3 -m pip install .
- Try with a homogeneous graph:
import yaml
import networkx as nx
from nebula_dgl import NebulaLoader
nebula_config = {
"graph_hosts": [
('graphd', 9669),
('graphd1', 9669),
('graphd2', 9669)
],
"nebula_user": "root",
"nebula_password": "nebula",
}
with open('example/homogeneous_graph.yaml', 'r') as f:
feature_mapper = yaml.safe_load(f)
nebula_loader = NebulaLoader(nebula_config, feature_mapper)
homo_dgl_graph = nebula_loader.load()
nx_g = homo_dgl_graph.to_networkx()
nx.draw(nx_g, with_labels=True, pos=nx.spring_layout(nx_g))
Result:
- Compute the degree centrality of the graph:
nx.degree_centrality(nx_g)
Result:
{0: 0.0,
1: 0.04,
2: 0.02,
3: 0.02,
4: 0.06,
5: 0.06,
6: 0.04,
7: 0.24,
8: 0.16,
9: 0.0,
10: 0.02,
11: 0.04,
12: 0.04,
13: 0.04,
14: 0.1,
15: 0.04,
16: 0.0,
17: 0.1,
18: 0.04,
19: 0.04,
20: 0.0,
21: 0.0,
22: 0.04,
23: 0.02,
24: 0.02,
25: 0.04,
26: 0.06,
27: 0.0,
28: 0.02,
29: 0.0,
30: 0.04,
31: 0.12,
32: 0.04,
33: 0.22,
34: 0.14,
35: 0.1,
36: 0.04,
37: 0.14,
38: 0.1,
39: 0.02,
40: 0.14,
41: 0.08,
42: 0.1,
43: 0.12,
44: 0.12,
45: 0.08,
46: 0.1,
47: 0.02,
48: 0.04,
49: 0.12,
50: 0.06}
Nebula Graph to DGL
from nebula_dgl import NebulaLoader
nebula_config = {
"graph_hosts": [
('graphd', 9669),
('graphd1', 9669),
('graphd2', 9669)
],
"nebula_user": "root",
"nebula_password": "nebula"
}
# load feature_mapper from yaml file
with open('example/nebula_to_dgl_mapper.yaml', 'r') as f:
feature_mapper = yaml.safe_load(f)
nebula_loader = NebulaLoader(nebula_config, feature_mapper)
dgl_graph = nebula_loader.load()
Play homogeneous graph algorithms in networkx
import networkx
with open('example/homogeneous_graph.yaml', 'r') as f:
feature_mapper = yaml.safe_load(f)
nebula_loader = NebulaLoader(nebula_config, feature_mapper)
homo_dgl_graph = nebula_loader.load()
nx_g = homo_dgl_graph.to_networkx()
# plot it
networkx.draw(nx_g, with_lables=True)
# get degree
networkx.degree(nx_g)
# get degree centrality
networkx.degree_centrality(nx_g)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nebula-dgl-0.1.1.tar.gz
(12.0 kB
view hashes)
Built Distribution
nebula_dgl-0.1.1-py3-none-any.whl
(11.1 kB
view hashes)
Close
Hashes for nebula_dgl-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42e7060fceb28322e481ae17f708d9a19bb7167698e5e17367d50b3192e77ef8 |
|
MD5 | 4b04bb1175b9c7bd3a50dbacbc2b6350 |
|
BLAKE2b-256 | ea68edaa2d62bb7b683f439a3736ab78dac46a12065f51cacb97f9b3cc520e80 |