Giter Site home page Giter Site logo

hanjun-dai / pytorch_structure2vec Goto Github PK

View Code? Open in Web Editor NEW
305.0 305.0 75.0 14.5 MB

pytorch implementation of structure2vec (https://arxiv.org/abs/1603.05629)

License: MIT License

Makefile 3.08% C 2.14% C++ 33.78% Python 58.47% MATLAB 1.94% Shell 0.60%

pytorch_structure2vec's People

Contributors

deadlyelder avatar hanjun-dai avatar vaastav avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pytorch_structure2vec's Issues

./include/mol_utils.h:5:31: fatal error: GraphMol/RingInfo.h: No such file or directory

你好,我在运行
cd hardvard_cep
make -j4
出现了如下问题。
g++ -Wall -O3 -std=c++11 -I./include -I/Code -Wno-unused-local-typedef -fPIC -MMD -c -o build/lib/mol_utils.o src/lib/mol_utils.cpp
In file included from src/lib/mol_utils.cpp:1:0:
./include/mol_utils.h:5:31: fatal error: GraphMol/RingInfo.h: No such file or directory
compilation terminated.
Makefile:41: recipe for target 'build/lib/mol_utils.o' failed
make: *** [build/lib/mol_utils.o] Error 1

在此之前,运行cd s2v_lib make -j4没问题,并把export RDBASE=/usr/lib/python2.7/dist-packages/rdkit 添加到了/root/.bashrc中。

graph_classification/main.py fails when options mode="gpu" is provided

Hello,
Default mode is set to "cpu". When mode is passed as "gpu" graph_classification/main.py fails as it incorrectly calls scatter method with "torch.FloatTensor". This patch fixes the error by correctly calling scatter method with "torch.cuda.FloatTensor" when "gpu" is set.

Below is the fix.

From 808205995523058acb971d97d4d656e7d5d0c1d3 Mon Sep 17 00:00:00 2001
From: Arshad Hussain <[email protected]>
Date: Wed, 14 Feb 2018 09:32:16 +0000
Subject: [PATCH] graph_classification/main.py fails when options mode="gpu" is
 provided

Default mode is set to "cpu". When mode is passed as "gpu"
graph_classification/main.py fails as it incorrectly calls
scatter method with "torch.FloatTensor". This patch fixes
the error by correctly calling scatter method with
"torch.cuda.FloatTensor" when "gpu" is set.

Signed-off-by: Arshad Hussain <[email protected]>
---
 graph_classification/main.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/graph_classification/main.py b/graph_classification/main.py
index 92bbada..faafbe8 100644
--- a/graph_classification/main.py
+++ b/graph_classification/main.py
@@ -50,8 +50,9 @@ class Classifier(nn.Module):
         node_feat = torch.zeros(n_nodes, cmd_args.feat_dim)
         if cmd_args.mode == 'gpu':
             node_feat = node_feat.cuda()
-
-        node_feat.scatter_(1, concat_feat, 1)
+            node_feat.scatter_(1, concat_feat.cuda(), 1)
+        else:
+            node_feat.scatter_(1, concat_feat, 1)

         return node_feat, labels
-
2.7.4

Error message Without the Fix.

====== begin of s2v configuration ======
| msg_average = 0
======   end of s2v configuration ======
Namespace(batch_size=50, data='NCI109', feat_dim=0, fold=1, gm='mean_field', hidden=64, latent_dim=64, learning_rate=0.001, max_lv=3, mode='gpu', num_class=0, num_epochs=100, out_dim=0, seed=1)
loading data
# classes: 2
# node features: 38
# train: 3715, # test: 412
  0%|                                                                                                                                          | 0/74 [00:00<?, ?batch/s]Traceback (most recent call last):
  File "main.py", line 117, in <module>
    avg_loss = loop_dataset(train_graphs, classifier, train_idxes, optimizer=optimizer)
  File "main.py", line 79, in loop_dataset
    _, loss, acc = classifier(batch_graph)
  File "/usr/local/lib/python2.7/dist-packages/torch/nn/modules/module.py", line 357, in call
    result = self.forward(*input, **kwargs)
  File "main.py", line 61, in forward
    node_feat, labels = self.PrepareFeatureLabel(batch_graph)
  File "main.py", line 54, in PrepareFeatureLabel
    node_feat.scatter_(1, concat_feat, 1)
TypeError: scatter_ received an invalid combination of arguments - got (int, torch.LongTensor, int), but expected one of:
 * (int dim, torch.cuda.LongTensor index, float value)
      didn't match because some of the arguments have invalid types: (int, torch.LongTensor, int)
 * (int dim, torch.cuda.LongTensor index, torch.cuda.FloatTensor src)
      didn't match because some of the arguments have invalid types: (int, torch.LongTensor, int)

Significance of tag for sample data under graph classification

Hi,
I noticed that multiple nodes for the sample data in a graph under the graph classification folder have the same tag. I was assuming tag meant the unique ID for that node but I guess not. Could you please explain what you mean by the tag in this scenario because I think that might be the cause of the issues I am seeing with my dataset.

MacOS compilation

Hello,

The Makefile doesn't work out of the box on MacOS for the simple reason that find doesn't have a printf option.

I replaced this line with

cpp_files = $(shell $(FIND) src/lib -name "*.cpp" -print | rev | cut -d"/" -f1 | rev)

It seems to do the trick under both MacOS and Linux

Getting the embedding vector for a graph

I was wondering what are the exact instructions for extracting the embedded vector for a graph from a pre-trained model.
I was able to train a model using my dataset but I am unsure regarding how to use that model. If you could provide some instructions then I'd be really grateful! Thanks

Error with make -j4 in Harvard CEP

After I installed rdkit, I tried make -j4 in .../pytorch_structure2vec/harvard_cep/

I got this error, do you have any idea?
"""
g++ -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -Wall -O3 -std=c++11 -I./include -I/.../rdkit/Code -Wno-unused-local-typedef -fPIC -MMD -c -o build/lib/mol_utils.o src/lib/mol_utils.cpp
g++: error: unrecognized command line option '-fno-plt'
Makefile:41: recipe for target 'build/lib/mol_utils.o' failed
make: *** [build/lib/mol_utils.o] Error 1
"""

I've tried 3 different platforms but the same error comes out all the time.

Thank you ! I'll wait for the answer :)

Missing libs2v.so file

dll_path = '%s/build/dll/libs2v.so' % os.path.dirname(os.path.realpath(file))
if os.path.exists(dll_path):
S2VLIB = _s2v_lib(sys.argv)
else:
S2VLIB = None

Undefined symbol in libmol.so

Hi @Hanjun-Dai, I have installed rdkit from source and was able to compile the harvard cep. However, when I try to run the example experiment, loading libmol.so in mol_lib.py line 12:

self.lib = ctypes.CDLL('%s/build/dll/libmol.so' % dir_path)

returns an undefined symbol error:

OSError: ./build/dll/libmol.so: undefined symbol: _ZN5RDKit17SmilesMolSupplierC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_iibb

Any hints here? Thanks!

seek for help about graph classification

hi,i'm trying to run the program about the graph classification.here is the error.
Traceback (most recent call last):
File "main.py", line 114, in
avg_loss = loop_dataset(train_graphs, classifier, train_idxes, optimizer=optimizer)
File "main.py", line 76, in loop_dataset
_, loss, acc = classifier(batch_graph)
File "/home/lt/miniconda3/envs/pytorch/lib/python3.6/site-packages/torch/nn/modules/module.py", line 206, in call
result = self.forward(*input, **kwargs)
File "main.py", line 62, in forward
embed = self.s2v(batch_graph, node_feat, None)
File "/home/lt/miniconda3/envs/pytorch/lib/python3.6/site-packages/torch/nn/modules/module.py", line 206, in call
result = self.forward(*input, **kwargs)
File "/home/lt/Downloads/pytorch_structure2vec-master/graph_classification/../s2v_lib/embedding.py", line 50, in forward
h = self.mean_field(node_feat, edge_feat, n2n_sp, e2n_sp, subg_sp)
File "/home/lt/Downloads/pytorch_structure2vec-master/graph_classification/../s2v_lib/embedding.py", line 66, in mean_field
n2npool = gnn_spmm(n2n_sp, cur_message_layer)
File "/home/lt/Downloads/pytorch_structure2vec-master/graph_classification/../s2v_lib/pytorch_util.py", line 85, in gnn_spmm
return MySpMM.apply(sp_mat, dense_mat)
AttributeError: type object 'MySpMM' has no attribute 'apply'

libmol.so: file too short

python main.py -gm mean_field -saved_model saved/mean_field.model -phase test -mode cpu
Traceback (most recent call last):
File "main.py", line 3, in
from mol_lib import MOLLIB, MolGraph
File "/home/caijiangyao/structure2vec/harvard_cep/mol_lib.py", line 115, in
MOLLIB = _mol_lib()
File "/home/caijiangyao/structure2vec/harvard_cep/mol_lib.py", line 12, in init
self.lib = ctypes.CDLL('%s/build/dll/libmol.so' % dir_path)
File "/usr/lib/python2.7/ctypes/init.py", line 366, in init
self._handle = _dlopen(self._name, mode)
OSError: /home/caijiangyao/structure2vec/harvard_cep/build/dll/libmol.so: file too short

object 'MySpMM' has no attribute 'apply'

Hi, I am doing graph classification experiments. In the folder "graph_classification", I type "./run.sh", and get the following errors. Do you have any idea?

pytorch_structure2vec/graph_classification/../s2v_lib/pytorch_util.py", line 70, in gnn_spmm
return MySpMM.apply(sp_mat, dense_mat)
AttributeError: type object 'MySpMM' has no attribute 'apply'

It seems the torch.autograd.Function class does not have a method "apply".
I am using python2.7 and cuda 8.0. I have tried different versions of PyTorch (0.3.1, 0.3.0, 0.2.0), and no one works.

I am new to PyTorch. Thanks for help!

AttributeError: type object 'object' has no attribute '__getattr__'

Dear author, I want to know the version of the pytorch you used. I am using torch-0.1.11.post5-cp27-none-linux_x86_64. But when I ran:
python main.py -gm mean_field -saved_model saved/mean_field.model -phase test -mode cpu
Some error occurred, and I think it was caused by different versions of pytorch.

Thanks!

‘’
====== begin of s2v configuration ======
| msg_average = 0
====== end of s2v configuration ======
loading data
train: 1900000
valid: 82601
test: 220289
Traceback (most recent call last):
File "main.py", line 111, in
regressor = Regressor()
File "main.py", line 92, in init
max_lv=cmd_args.max_lv)
File "/home/xjtuncy/lab/pytorch_structure2vecLab/pytorch_structure2vec-master/harvard_cep/../s2v_lib/embedding.py", line 35, in init
weights_init(self)
File "/home/xjtuncy/lab/pytorch_structure2vecLab/pytorch_structure2vec-master/harvard_cep/../s2v_lib/pytorch_util.py", line 46, in weights_init
for name, p in m.named_parameters():
File "/usr/local/lib/python2.7/dist-packages/torch/nn/modules/module.py", line 237, in getattr
return object.getattr(self, name)
AttributeError: type object 'object' has no attribute 'getattr'
‘’

RDKit::BadFileException

When enter ‘python mol_lib.py ’,error occurs as follows:

pytorch_structure2vec/harvard_cep$ python mol_lib.py
filename =
terminate called after throwing an instance of 'RDKit::BadFileException'
what(): BadFileException
已放弃 (核心已转储)

Error when run graph classification in loopy_bp mode.

====== begin of s2v configuration ======
| msg_average = 0
====== end of s2v configuration ======
Namespace(batch_size=50, data='MUTAG', feat_dim=0, fold=1, gm='loopy_bp', hidden=100, latent_dim=64, learning_rate=0.0001, max_lv=4, mode='cpu', num_class=0, num_epochs=1000, out_dim=1024, seed=1)
loading data

classes: 2

node features: 7

train: 170, # test: 18

Traceback (most recent call last):
File "main.py", line 103, in
classifier = Classifier()
File "main.py", line 34, in init
max_lv=cmd_args.max_lv)
File "/home/ase/Graph/pytorch_structure2vec/graph_classification/../s2v_lib/embedding.py", line 89, in init
self.w_e2l = nn.Linear(num_edge_feats, latent_dim)
File "/home/ase/venv_python3/lib/python3.6/site-packages/torch/nn/modules/linear.py", line 56, in init
self.reset_parameters()
File "/home/ase/venv_python3/lib/python3.6/site-packages/torch/nn/modules/linear.py", line 59, in reset_parameters
init.kaiming_uniform_(self.weight, a=math.sqrt(5))
File "/home/ase/venv_python3/lib/python3.6/site-packages/torch/nn/init.py", line 290, in kaiming_uniform_
std = gain / math.sqrt(fan)
ZeroDivisionError: float division by zero

When I run main.py in loopy_bp mode on any data set, it will throw an error like this. Can you tell me how to fix it? Thanks a lot.

LoadMolGraph for NetworkX objects

# def __CtypeNetworkX(self, g):
# edges = g.edges()
# e_list_from = (ctypes.c_int * len(edges))()
# e_list_to = (ctypes.c_int * len(edges))()
# if len(edges):
# a, b = zip(*edges)
# e_list_from[:] = a
# e_list_to[:] = b
# return (len(g.nodes()), len(edges), ctypes.cast(e_list_from, ctypes.c_void_p), ctypes.cast(e_list_to, ctypes.c_void_p))
# def TakeSnapshot(self):
# self.lib.UpdateSnapshot()
# def ClearTrainGraphs(self):
# self.ngraph_train = 0
# self.lib.ClearTrainGraphs()
# def InsertGraph(self, g, is_test):
# n_nodes, n_edges, e_froms, e_tos = self.__CtypeNetworkX(g)
# if is_test:
# t = self.ngraph_test
# self.ngraph_test += 1
# else:
# t = self.ngraph_train
# self.ngraph_train += 1
# self.lib.InsertGraph(is_test, t, n_nodes, n_edges, e_froms, e_tos)
# def LoadModel(self, path_to_model):
# p = ctypes.cast(path_to_model, ctypes.c_char_p)
# self.lib.LoadModel(p)
# def GetSol(self, gid, maxn):
# sol = (ctypes.c_int * (maxn + 10))()
# val = self.lib.GetSol(gid, sol)
# return val, sol

Is the commented code a working alternative to load NetworkX objects?

Error compiling harvard_cep: Cannot find rdkit files

I have installed rdkit from source and running ctest for rdkit shows that everything but pythonTestDirChem pass.

This is what i can for compiling harvard_cep:

g++ -shared -Wall -O3 -std=c++11 -I./include -I/home/gtj/summer2018/pytorch_structure2vec/RDKIT/rdkit-Release_2018_03_2/Code -Wno-unused-local-typedef -fPIC -MMD -o build/dll/libmol.so src/mol_lib.cpp build/lib/mol_utils.o -lm -L/home/gtj/summer2018/pytorch_structure2vec/RDKIT/rdkit-Release_2018_03_2/lib -lRDKitGraphMol -lRDKitRDGeneral -lRDKitSmilesParse -lRDKitDepictor -lRDKitSmilesParse -lRDKitFileParsers -lRDKitFingerprints
/usr/bin/ld: cannot find -lRDKitGraphMol
/usr/bin/ld: cannot find -lRDKitRDGeneral
/usr/bin/ld: cannot find -lRDKitSmilesParse
/usr/bin/ld: cannot find -lRDKitDepictor
/usr/bin/ld: cannot find -lRDKitSmilesParse
/usr/bin/ld: cannot find -lRDKitFileParsers
/usr/bin/ld: cannot find -lRDKitFingerprints
collect2: error: ld returned 1 exit status
Makefile:35: recipe for target 'build/dll/libmol.so' failed

Wrong with pytorch=0.4.1

Traceback (most recent call last):
File "main.py", line 124, in
test_loss = loop_dataset(test_data, regressor, list(range(len(test_data))))
File "main.py", line 56, in loop_dataset
_, mae, mse = regressor(batch_graph)
File "/home/worker/anaconda3/envs/struc2vec/lib/python2.7/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "main.py", line 101, in forward
embed = self.s2v(batch_graph, node_feat, edge_feat)
File "/home/worker/anaconda3/envs/struc2vec/lib/python2.7/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/home/worker/dodge/project/pytorch_structure2vec/harvard_cep/../s2v_lib/embedding.py", line 50, in forward
h = self.mean_field(node_feat, edge_feat, n2n_sp, e2n_sp, subg_sp)
File "/home/worker/dodge/project/pytorch_structure2vec/harvard_cep/../s2v_lib/embedding.py", line 59, in mean_field
e2npool_input = gnn_spmm(e2n_sp, input_edge_linear)
File "/home/worker/dodge/project/pytorch_structure2vec/harvard_cep/../s2v_lib/pytorch_util.py", line 70, in gnn_spmm
return MySpMM.apply(sp_mat, dense_mat)
File "/home/worker/dodge/project/pytorch_structure2vec/harvard_cep/../s2v_lib/pytorch_util.py", line 56, in forward
return torch.mm(sp_mat, dense_mat)
RuntimeError: addmm: expected 'mat1' to be CUDA, but got CPU

error message when running python mol_lib.py

When I run

cd harvard_cep
python mol_lib.py

I got the following error:

Traceback (most recent call last):
File "mol_lib.py", line 115, in
MOLLIB = _mol_lib()
File "mol_lib.py", line 12, in init
self.lib = ctypes.CDLL('%s/build/dll/libmol.so' % dir_path)
File "/home/account/anaconda3/lib/python3.7/ctypes/init.py", line 356, in init
self._handle = _dlopen(self._name, mode)
OSError: /home/account/pytorch_structure2vec-master/harvard_cep/build/dll/libmol.so: undefined symbol: _ZN5RDKit17SmilesMolSupplierC1ERKSsS2_iibb

I think this issue is related with #2, but I can not solve this problem with the suggestion. I have tried to rebuilt rdkit and boost severl times, but the same error still incurs.

Thanks for help!

Weird results for test error and training error

Hi,
Sorry for bugging so much. I was trying to run the graph classification code with a custom dataset. The custom dataset is simple such that it contains 1000 copies of the same graph as I wanted to get a baseline for the graphs that I have. I expected the model to overfit and the training and test error to go to 0 over epochs but I am seeing something completely different. The test error never hits 0 but it starts increasing. Attached is the graph : (x-axis is the epoch #, blue line is training error, red line is test error).
I am wondering if I screwed something up in configuration and was wondering if you had any insight as to why I am seeing these results.

losses

Issue with main.py

This is what I get running main.py:

=================testing=====================
/home/gtj/summer2018/pytorch_structure2vec/harvard_cep/build/dll/libmol.so
=================doneTsT=====================
====== begin of s2v configuration ======
| msg_average = 0
======   end of s2v configuration ======
loading data
train: 1900000
valid: 82601
test: 220289
loading model from saved/mean_field.model
loading graph from data/test.txt.bin
num_nodes: 6094162	num_edges: 7357400
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 220289/220289 [00:02<00:00, 92711.73it/s]
  0%|                                                                                                                                                  | 0/4406 [00:00<?, ?batch/s]Traceback (most recent call last):
  File "main.py", line 124, in <module>
    test_loss = loop_dataset(test_data, regressor, list(range(len(test_data))))
  File "main.py", line 56, in loop_dataset
    _, mae, mse = regressor(batch_graph)
  File "/usr/local/lib/python2.7/dist-packages/torch/nn/modules/module.py", line 491, in __call__
    result = self.forward(*input, **kwargs)
  File "main.py", line 101, in forward
    embed = self.s2v(batch_graph, node_feat, edge_feat)
  File "/usr/local/lib/python2.7/dist-packages/torch/nn/modules/module.py", line 491, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/gtj/summer2018/pytorch_structure2vec/harvard_cep/../s2v_lib/embedding.py", line 50, in forward
    h = self.mean_field(node_feat, edge_feat, n2n_sp, e2n_sp, subg_sp)
  File "/home/gtj/summer2018/pytorch_structure2vec/harvard_cep/../s2v_lib/embedding.py", line 59, in mean_field
    e2npool_input = gnn_spmm(e2n_sp, input_edge_linear)
  File "/home/gtj/summer2018/pytorch_structure2vec/harvard_cep/../s2v_lib/pytorch_util.py", line 70, in gnn_spmm
    return MySpMM.apply(sp_mat, dense_mat)
  File "/home/gtj/summer2018/pytorch_structure2vec/harvard_cep/../s2v_lib/pytorch_util.py", line 56, in forward
    return torch.mm(sp_mat, dense_mat)
RuntimeError: Expected object of type torch.cuda.sparse.FloatTensor but found type torch.sparse.FloatTensor for argument #4 'mat1'
Exception KeyError: KeyError(<weakref at 0x7ff2a58fa7e0; to 'tqdm' at 0x7ff2a599ba10>,) in <bound method tqdm.__del__ of   0%|                                                                                                                                                  | 0/4406 [00:00<?, ?batch/s]> ignored

The issue here is
RuntimeError: Expected object of type torch.cuda.sparse.FloatTensor but found type torch.sparse.FloatTensor
Not sure the cause of this, as searching torch.cuda.sparse.FloatTensor on google returns nothign revelant.

data cooking question

Hi hanjun, I got a question about how to prepare the input data for your project.
After I run /harvard_cep/mol_lib.py, I got a file named "logwrite". But the data format in the logwrite file is different from what is introduced in /graph_classification/README.md.

As I understood, in "logwrite", each drug is converted into the following format:

N M
N lines of numbers

what is the meaning of this format?

Thank you for your time.

error message when running make -j4

After I ran these
cd harvard_cep
make -j4
I received

g++ -Wall -O3 -std=c++11 -I./include -I/home/xuzhang/anaconda3/envs/rdkit/Code -Wno-unused-local-typedef -fPIC -MMD -c -o build/lib/mol_utils.o src/lib/mol_utils.cpp
In file included from src/lib/mol_utils.cpp:1:0:
./include/mol_utils.h:5:31: fatal error: GraphMol/RingInfo.h: No such file or directory
compilation terminated.
Makefile:41: recipe for target 'build/lib/mol_utils.o' failed
make: *** [build/lib/mol_utils.o] Error 1

Your help is highly appreciated

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.