Я пытаюсь создать узлы и ребро для некоторых химических веществ и связанные с ними реакции в Neo4j с питоном, но я ударяя проблемы с созданием узла/отношений ...Programatically создание краев в Neo4j с питоном
Моего кода .. .
from neo4j.v1 import GraphDatabase, basic_auth
driver = GraphDatabase.driver("bolt://localhost", auth=basic_auth("neo4j", "password"))
session = driver.session()
def addReactionNeo4j(reagents, products, reaction):
cypher = "CREATE (%s:Reaction {RXNid:\"%s\", name:\"%s\"})" % (reaction[0],reaction[1],reaction[2])
session.run(cypher)
print cypher
for reagent in reagents:
cypher = "CREATE (%s:Molecule {CHMid: \"%s\", smiles:\"%s\"})" % (reagent[0], reagent[1], reagent[2])
session.run(cypher)
print cypher
cypher = "CREATE (%s)-[:REAGENT]->(%s)" %(reagent[0], reaction[0])
print cypher
session.run(cypher)
for product in products:
cypher = "CREATE (%s:Molecule {CHMid: \"%s\", smiles:\"%s\"})" % (product[0], product[1], product[2])
session.run(cypher)
print cypher
cypher = "CREATE (%s)-[:PRODUCT]->(%s)" %(reaction[0], product[0])
session.run(cypher)
print cypher
reagents1 = []
reagents1.append(["Chem2","nbutylamine","CCCCN"])
reagents1.append(["Chem3","butanoicAcid","CCCCOO"])
products1 =[]
products1.append(["Chem1","Nbutylbutanamide","CCCCNC(O)CCCC"])
reaction1 = ["Reaction1", "reaction1", "AmideFormation"]
addReactionNeo4j(reagents1, products1, reaction1)
session.close()
Этот код должен написать шифровальный код и выполнить его в Neo4j.
Это дает следующий Cypher код в качестве выходного
CREATE (Reaction1:Reaction {RXNid:"reaction1", name:"AmideFormation"})
CREATE (Chem2:Molecule {CHMid: "nbutylamine", smiles:"CCCCN"})
CREATE (Chem2)-[:REAGENT]->(Reaction1)
CREATE (Chem3:Molecule {CHMid: "butanoicAcid", smiles:"CCCCOO"})
CREATE (Chem3)-[:REAGENT]->(Reaction1)
CREATE (Chem1:Molecule {CHMid: "Nbutylbutanamide ", smiles:"CCCCNC(O)CCCC"})
CREATE (Reaction1)-[:PRODUCT]->(Chem1)
Этот код работает, как ожидалось при вставке в Neo4j
Но если посмотреть на график, созданный код (который в теория должна выполнять один и тот же код шифрования). Я получаю созданные узлы, но у него возникают проблемы с связыванием узлов вместе с ребрами - оставляя узлы несвязанными.
Может кто-нибудь сообщить мне о том, что я делаю не так?
Благодаря
Chris