2016-03-19 3 views
0

Ich habe eine CSV-Datei mit Inhalt wie folgt generiertCypher Abfrage zur Erstellung und Verknüpfung von Knoten aus einer CSV-Datei

GOID   GOName     
GO:0007190  activation of adenylate cyclase activity  



DiseaseID  DiseaseName 

D058490  46 XY Disorders of Sex Development 

D000172  Acromegaly 

D049913  ACTH-Secreting,Pituitary Adenoma  

D058186  Acute Kidney Injury 

D000310  Adrenal Gland Neoplasms 

D000312  Adrenal Hyperplasia Congenital 

C537045  Albright's hereditary osteodystrophy  

D000544  Alzheimer Disease 

D019969  Amphetamine-Related Disorders 

D000855  Anorexia  

D000860  Anoxia 

D001008  Anxiety Disorders 

D001169  Arthritis Experimental 

D001171  Arthritis Juvenile 

D001172  Arthritis Rheumatoid  

D001249  Asthma 

D001254  Astrocytoma 

und so weiter. Ich möchte eine Verbindung zwischen GOIDs durch Krankheiten herstellen, so dass ein Krankheitsknoten mit zwei oder mehr verschiedenen GOID-Knoten verbunden ist. Disease-Label:

Meine Ausgabe wie diese enter image description here

Antwort

0
  1. Laden Sie Ihre Krankheiten auf einmal wie unter einem aussehen sollte.
  2. Laden Sie alle Ihre globalen Daten gleichzeitig unter: Globales Label
  3. Erstellen Sie eine weitere CSV-Datei mit den Verknüpfungen Global-> Disease, und verwenden Sie MERGE, um die Beziehungen zu erstellen.

Die CSV-Beziehung würde wie folgt aussehen:

goID,diseaseID 
"GO:1234","D000456" 

Der Befehl, um die CSV zu lesen und die Beziehungen schaffen würde wie folgt aussehen:

USING PERIODIC COMMIT 500 
LOAD CSV WITH HEADERS FROM "file:/D:/Relationships.csv" as line 
MERGE (:Global {goID: line.goID})-[:RELATIONSHIP]->(:Disease {diseaseID: line.diseaseID}) 

einmal Ihre Daten geladen ist, können Sie kann dann wie folgt abfragen:

MATCH (g:Global {goID: "GO:0007190"})-[r:RELATIONSHIP]->(d:Disease) 
return g, r, d 

Streng

match (d:Disease) 
match (go1:GO)-[:RELATIONSHIP]->(d) 
match (go2:GO)-[:RELATIONSHIP]->(d) where go2 <> go1 
create (go1)-[:RELATIONSHIP]->(go2) 
create (go2)-[:RELATIONSHIP]->(go1) 

Sprechen Sie nicht brauchen eine bidirektionale Beziehung, so die Schaffung der zweiten Beziehung werden konnte links: Für Fälle, in denen eine Krankheit mehrere globale Bedingungen hat, können Sie eine Beziehung wie so finden und schaffen. Ein potenzielles Problem ist, wenn mehr als eine Krankheit zwei globale Werte verbindet. Wenn das ein Problem ist, würde das Festlegen einer "Disease" -Eigenschaft für die Beziehung helfen zu identifizieren, wie diese Globals verwandt sind.

+0

Danke Tim für Ihre Hilfe meine Ausgabe zeigt ---> 9234 Etiketten hinzugefügt, erstellt 9234 Knoten, erstellt 4617 Beziehungen, Anweisung in 244681 ms ausgeführt, aber es zeigt keine Ausgabe in grafischer Form. Sollte ich irgendwelche Matchabfragen auslösen .... ??? – AnkyD90

+0

LOAD CSV bezieht sich auf die Daten in Ihre Datenbank. Sobald dies erledigt ist, verwenden Sie MATCH(), um diese Daten abzufragen und Ihre Graphen zu erhalten. Ich habe die Antwort mit einem Beispiel aktualisiert. –

+0

Danke Tim für deine Hilfe, aber wenn ich MATCH() abfeuern dann Ausgabe zeigt -> (keine Zeilen) keine Hilfe? – AnkyD90