Neo4j 在Py4neo中创建现有节点之间的关系
我有一个基因名称列表Neo4j 在Py4neo中创建现有节点之间的关系,neo4j,py2neo,Neo4j,Py2neo,我有一个基因名称列表genes\u list和一个针对其他基因的基因列表(元组列表)genes2,我成功地连接到本地数据库,并创建了20244个标记为GEN的节点,带有name属性。 我试图生成一个脚本,自动创建Neo4j图中任意一对节点的关系(使用变量tupla[0]和tupla[1]),但我无法让for循环用于元组列表,有什么建议吗?我还在学习如何使用这个图书馆,任何建议都会很好!问候 from py2neo import Node,Relationship,Graph, database,
genes\u list
和一个针对其他基因的基因列表(元组列表)genes2
,我成功地连接到本地数据库,并创建了20244个标记为GEN
的节点,带有name
属性。
我试图生成一个脚本,自动创建Neo4j图中任意一对节点的关系(使用变量tupla[0]和tupla[1]
),但我无法让for循环用于元组列表,有什么建议吗?我还在学习如何使用这个图书馆,任何建议都会很好!问候
from py2neo import Node,Relationship,Graph, database,NodeMatcher
import time
import pandas as pd
genes_list=pd.read_csv("Gen_list.txt",delimiter="\t",header=None)
genes_list=genes_list[0].tolist()
for name in genes_list:
graph.run("CREATE(:GEN{name:$name})",name=name)
genes=pd.read_csv(r"C:\Users\espin\OneDrive\Escritorio\MCI\SCRIPTS\dorothea_final.csv", delimiter="\t",header=None)
genes2=list(genes.to_records(index=False))
for tupla in genes2:
existing_u1 = matcher.match("GEN").where(name=tupla[0]).first()
existing_u2 = matcher.match("GEN").where(name=tupla[1).first()
graph.merge(existing_u1,"REGULATES", existing_u2)
我发现,对于想要尝试此实现并使用py2neo V4的人,可以尝试使用graph.run() 请记住,查询必须位于第一个参数中,然后声明由“,”分隔的$
变量
至少,如果您已经创建了节点,并且没有复制现有的节点,则此操作会起作用。您会遇到什么错误?当我运行最后4行时,我会得到以下信息:AttributeError:“NoneType”对象在处理上述异常时没有属性“db_merge”,发生另一个异常:merge=子图。\uuuuu db\u merge\uuuuuu AttributeError:“非类型”对象没有属性“db\u merge”类型错误(“未定义用于合并对象%r”%subgraph)类型错误:未定义用于合并对象的方法无
for tupla in genes2:
graph.run("MATCH(a:GEN{name:$name}) MATCH(b:GEN{name:$name1}) CREATE (a)-[:REGULATES]->(b)",name=tupla[0],name1=tupla[1])