在py2neo中创建节点后创建关系

时间:2014-09-08 11:59:28

标签: python neo4j py2neo

我实际上正在研究遗传学,目前正在尝试学习py2neo来制作生物数据库而且我有点新手,所以请原谅我这个简单的问题。

我有一个密码字典,如下所示:

codon_dict={'A': ['GCT', 'GCC', 'GCA', 'GCG'], 'C': ['TGT', 'TGC'], 'E': ['GAA', 'GAG'], 'D': ['GAT', 'GAC'], 'G': ['GGT', 'GGC', 'GGA', 'GGG'], 'F': ['TTT', 'TTC'], 'I': ['ATT', 'ATC', 'ATA'], 'H': ['CAT', 'CAC'], 'K': ['AAA', 'AAG'], 'M': ['ATG'], 'L': ['CTT', 'CTC', 'TTA', 'CTA', 'TTG', 'CTG'], 'N': ['AAT', 'AAC'], 'Q': ['CAA', 'CAG'], 'P': ['CCT', 'CCC', 'CCA', 'CCG'], 'S': ['TCT', 'TCC', 'TCA', 'TCG', 'AGT', 'AGC'], 'R': ['CGT', 'CGC', 'CGA', 'AGA', 'CGG', 'AGG'], 'T': ['ACT', 'ACC', 'ACA', 'ACG'], 'W': ['TGG'], 'V': ['GTT', 'GTC', 'GTA', 'GTG'], 'Y': ['TAT', 'TAC'], 'Stop': ['TAA', 'TAG', 'TGA']}

创建节点的简单代码:

from py2neo import neo4j
from py2neo import node,rel

gdb=neo4j.GraphDatabaseService()

gdb.clear()

for i in codon_dict:
    gdb.create(({"aminoacid_name":i,"comprised_of":codon_dict[i]}))

这给了我:

[Node('http://localhost:7474/db/data/node/9830')]
[Node('http://localhost:7474/db/data/node/9831')]
[Node('http://localhost:7474/db/data/node/9832')]
[Node('http://localhost:7474/db/data/node/9833')]
[Node('http://localhost:7474/db/data/node/9834')]
[Node('http://localhost:7474/db/data/node/9835')]
[Node('http://localhost:7474/db/data/node/9836')]
[Node('http://localhost:7474/db/data/node/9837')]
[Node('http://localhost:7474/db/data/node/9838')]
[Node('http://localhost:7474/db/data/node/9839')]
[Node('http://localhost:7474/db/data/node/9840')]
[Node('http://localhost:7474/db/data/node/9841')]
[Node('http://localhost:7474/db/data/node/9842')]
[Node('http://localhost:7474/db/data/node/9843')]
[Node('http://localhost:7474/db/data/node/9844')]
[Node('http://localhost:7474/db/data/node/9845')]
[Node('http://localhost:7474/db/data/node/9846')]
[Node('http://localhost:7474/db/data/node/9847')]
[Node('http://localhost:7474/db/data/node/9848')]
[Node('http://localhost:7474/db/data/node/9849')]
[Node('http://localhost:7474/db/data/node/9850')]

在这段代码之后,我得到了我想要的所有节点,但在创建节点后,我无法通过它们的名称或URL分配关系((A,“类似”,V)或(9850,“STOPS”, 9840))。

有没有办法在创建节点后单独创建关系,还是必须在创建节点时将它们相互关联?

1 个答案:

答案 0 :(得分:3)

穆罕默德,

此处的a link向您展示了您的需求。

每个create调用的返回值是刚刚创建的节点的Node对象,因此您可以将它们存储在单独的变量或字典中,并使用它们来构建关系。如果使用上面链接中显示的neo4j.Node(uri)语法,也可以从数据库中返回每个节点。构建关系的create方法中的参数必须是Node对象或对在同一create方法调用中创建的节点的基于0的索引引用。你不会使用索引表单,所以你会有像

这样的东西
codon_nodes = dict()

for i in codon_dict:
    codon_nodes[i] = gdb.create(({"aminoacid_name":i,"comprised_of":codon_dict[i]}))[0]

rel = gdb.create((codon_nodes['A'], 'is similar', codon_nodes['V']))

恩典与和平,

吉姆