Skip to content

Commit 4ec4669

Browse files
authored
Update BUILD.org
Instructions for adding new data resources and converting the ontology into a Memgraph graph database
1 parent a90bc49 commit 4ec4669

File tree

1 file changed

+368
-4
lines changed

1 file changed

+368
-4
lines changed

BUILD.org

Lines changed: 368 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ other flavor of SQL).
4949
|-----------+----------------+-----------------------------------+---------------------------+--------------------|
5050
| Source | Directory name | Entity type(s) | URL | Extra instructions |
5151
|-----------+----------------+-----------------------------------+---------------------------+--------------------|
52-
| Hetionet | =hetionet= | Many - see =populate-ontology.py= | [[https://github.com/hetio/hetionet/tree/master/hetnet/tsv][GitHub]] | [[Hetionet]] |
53-
| NCBI Gene | =ncbigene= | Genes | [[https://ftp.ncbi.nlm.nih.gov/gene/DATA/GENE_INFO/Mammalia/Homo_sapiens.gene_info.gz][Homo_sapiens.gene_info.gz]] | [[NCBI Gene]] |
54-
| Drugbank | =drugbank= | Drugs / drug candidates | [[https://go.drugbank.com/releases/latest#open-data][DrugBank website]] | [[Drugbank]] |
55-
| DisGeNET | =disgenet= | Diseases and disease-gene edges | [[https://www.disgenet.org/][DisGeNET]] | [[DisGeNET]] |
52+
| Hetionet | =hetionet= | Many - see =populate-ontology.py= | [[https://github.com/hetio/hetionet/tree/master/hetnet/tsv][GitHub]] | [[https://het.io][Hetionet]] |
53+
| NCBI Gene | =ncbigene= | Genes | [[https://ftp.ncbi.nlm.nih.gov/gene/DATA/GENE_INFO/Mammalia/Homo_sapiens.gene_info.gz][Homo_sapiens.gene_info.gz]] | [[https://www.ncbi.nlm.nih.gov/gene/][NCBI Gene]] |
54+
| Drugbank | =drugbank= | Drugs / drug candidates | [[https://go.drugbank.com/releases/latest#open-data][DrugBank website]] | [[https://go.drugbank.com][Drugbank]] |
55+
| DisGeNET | =disgenet= | Diseases and disease-gene edges | [[https://www.disgenet.org/][DisGeNET]] | [[https://disgenet.com][DisGeNET]] |
5656
| | | | | |
5757

5858
*** Hetionet
@@ -438,3 +438,367 @@ CALL db.relationshipTypes() YIELD relationshipType as type
438438
CALL apoc.cypher.run('MATCH ()-[:`'+type+'`]->() RETURN count(*) as count',{}) YIELD value
439439
RETURN type, value.count ORDER BY type
440440
#+end_src
441+
442+
* 4.: Adding new data resources, nodes, relationships, and properties.
443+
444+
In version 2.0, we added "TranscriptionFactor" nodes, "TRANSCRIPTIONFACTORINTERACTSWITHGENE" relationships, node properties of "chromosome" number and "sourcedatabase", relationships properties of "correlation", "score", "p_fisher", "z_score", "affinity_nm", "confidence", "sourcedatabase", and "unbiased".
445+
446+
To achieve this, we added the above entities to the ontology RDF and now named =alzkb_v2.rdf= in the =alzkb\data= directory. Then collect additional source data files as detailed in the table below.
447+
| Source | Directory name | Entity type(s) | URL | Extra instructions |
448+
|-----------|----------------|---------------------------------------------|-----------------------|--------------------|
449+
| TRRUST | =dorothea= | Transcription factors(TF) and TF-gene edges | [[https://www.grnpedia.org/trrust/downloadnetwork.php][TRRUST Download]] | [[https://www.grnpedia.org/trrust/][TRRUST]] |
450+
| DoRothEA | =dorothea= | Transcription factors(TF) and TF-gene edges | [[https://saezlab.github.io/dorothea/][DoRothEA Installation]] | [[https://bioconductor.org/packages/release/data/experiment/vignettes/dorothea/inst/doc/dorothea.R][DoRothEA RScript]] |
451+
452+
** Prepare Source Data
453+
Download =trrust_rawdata.human.tsv= from TRRUST Download. Install DoRothEA by following the DoRothEA Installation within R. Place the =trrust_rawdata.human.tsv= and =alzkb_parse_dorothea.py= inside of =Dorothea/= subdirectory, which should be within your raw data directory (e.g., =D:\data=). Run =alzkb_parse_dorothea.py=. You’ll notice that it creates a =tf.tsv= file that is used while populating the ontology.
454+
455+
** Replicate Hetionet Resources
456+
Since Hetionet does not have an up-to-date update plan, we have replicated them using the rephetio paper and source code to ensure AlzKB has current data. Follow the steps in [[https://github.com/EpistasisLab/AlzKB-updates][AlzKB-updates]] Github repository to create =hetionet-custom-nodes.tsv= and =hetionet-custom-edges.tsv=. Place these files in the =hetionet/= subdirectory.
457+
458+
** Process Data Files
459+
Place the updated =alzkb_parse_ncbigene.py=, =alzkb_parse_drugbank.py=, and =alzkb_parse_disgenet.py= from the =scripts/= directory in their respective raw data file subdirectory. Run each script to process the data for the next step.
460+
461+
** Populate Ontology
462+
Now that we have the updated ontology and updated data files, run the updated =alzkb/populate_ontology.py= to populate records. It creates a =alzkb_v2-populated.rdf= file that will be used in next step.
463+
464+
* 5.: Converting the ontology into a Memgraph graph database
465+
** Installing Memgraph
466+
If you haven't done so already, download Memgraph from the [[https://memgraph.com/docs/getting-started/install-memgraph][Install Memgraph]] page. Most users install Memgraph using a =pre-prepared docker-compose.yml= file by executing:
467+
- for Linux and macOS:
468+
=curl https://install.memgraph.com | sh=
469+
- for Windows:
470+
=iwr https://windows.memgraph.com | iex=
471+
472+
More details are in [[https://memgraph.com/docs/getting-started/install-memgraph/docker][Install Memgraph with Docker]]
473+
474+
** Generating the CSV File
475+
Before uploading the file to Memgrpah, run =alzkb/rdf_to_memgraph_csv.py= with the =alzkb_v2-populated.rdf= file to generate =alzkb-populated.csv=.
476+
477+
** Starting Memgraph with Docker
478+
Follow the instructions in [[https://memgraph.com/docs/data-migration/migrate-from-neo4j#importing-data-into-memgraph][importing-data-into-memgraph]] Step 1. Starting Memgraph with Docker to upload the =alzkb-populated.csv= file to the container.
479+
480+
Open Memgraph Lab. Memgraph Lab is available at =http://localhost:3000=. Click the =Query Execution= in MENU on the left bar. Then, you can type a Cypher query in the =Cypher Editor=.
481+
482+
** Gaining speed with indexes and analytical storage mode
483+
- To create indexes, run the following Cypher queries:
484+
#+begin_src cypher
485+
CREATE INDEX ON :Drug(nodeID);
486+
CREATE INDEX ON :Gene(nodeID);
487+
CREATE INDEX ON :BiologicalProcess(nodeID);
488+
CREATE INDEX ON :Pathway(nodeID);
489+
CREATE INDEX ON :MolecularFunction(nodeID);
490+
CREATE INDEX ON :CellularComponent(nodeID);
491+
CREATE INDEX ON :Symptom(nodeID);
492+
CREATE INDEX ON :BodyPart(nodeID);
493+
CREATE INDEX ON :DrugClass(nodeID);
494+
CREATE INDEX ON :Disease(nodeID);
495+
CREATE INDEX ON :TranscriptionFactor (nodeID);
496+
#+end_src
497+
498+
- To check the current storage mode, run:
499+
#+begin_src cypher
500+
SHOW STORAGE INFO;
501+
#+end_src
502+
503+
- Change the storage mode to analytical before import:
504+
#+begin_src cypher
505+
STORAGE MODE IN_MEMORY_ANALYTICAL;
506+
#+end_src
507+
508+
** Importing data into Memgraph
509+
- Drug nodes
510+
#+begin_src cypher
511+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
512+
WITH row WHERE row._labels = ':Drug' AND row.commonName <> ''
513+
CREATE (d:Drug {nodeID: row._id, commonName: row.commonName, sourceDatabase: row.sourceDatabase,
514+
xrefCasRN: row.xrefCasRN, xrefDrugbank: row.xrefDrugbank});
515+
516+
MATCH (d:Drug)
517+
RETURN count(d);
518+
#+end_src
519+
520+
- Gene nodes
521+
#+begin_src cypher
522+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
523+
WITH row WHERE row._labels = ':Gene'
524+
CREATE (g:Gene {nodeID: row._id, commonName: row.commonName, geneSymbol: row.geneSymbol, sourceDatabase: row.sourceDatabase,
525+
typeOfGene: row.typeOfGene, chromosome: row.chromosome, xrefEnsembl: row.xrefEnsembl,
526+
xrefHGNC: row.xrefHGNC, xrefNcbiGene: toInteger(row.xrefNcbiGene), xrefOMIM: row.xrefOMIM});
527+
528+
MATCH (g:Gene)
529+
RETURN count(g);
530+
#+end_src
531+
532+
- BiologicalProcess nodes
533+
#+begin_src cypher
534+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
535+
WITH row WHERE row._labels = ':BiologicalProcess'
536+
CREATE (b:BiologicalProcess {nodeID: row._id, commonName: row.commonName, sourceDatabase: row.sourceDatabase,
537+
xrefGeneOntology: row.xrefGeneOntology});
538+
539+
MATCH (b:BiologicalProcess)
540+
RETURN count(b)
541+
#+end_src
542+
543+
- Pathway nodes
544+
#+begin_src cypher
545+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
546+
WITH row WHERE row._labels = ':Pathway'
547+
CREATE (p:Pathway {nodeID: row._id, pathwayId: row.pathwayId, pathwayName: row.pathwayName, sourceDatabase: row.sourceDatabase});
548+
549+
MATCH (p:Pathway)
550+
RETURN count(p)
551+
#+end_src
552+
553+
- MolecularFunction nodes
554+
#+begin_src cypher
555+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
556+
WITH row WHERE row._labels = ':MolecularFunction'
557+
CREATE (m:MolecularFunction {nodeID: row._id, commonName: row.commonName, xrefGeneOntology: row.xrefGeneOntology});
558+
559+
MATCH (m:MolecularFunction)
560+
RETURN count(m)
561+
#+end_src
562+
563+
- CellularComponent nodes
564+
#+begin_src cypher
565+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
566+
WITH row WHERE row._labels = ':CellularComponent'
567+
CREATE (c:CellularComponent {nodeID: row._id, commonName: row.commonName, xrefGeneOntology: row.xrefGeneOntology});
568+
569+
MATCH (c:CellularComponent)
570+
RETURN count(c)
571+
#+end_src
572+
573+
- Symptom nodes
574+
#+begin_src cypher
575+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
576+
WITH row WHERE row._labels = ':Symptom'
577+
CREATE (s:Symptom {nodeID: row._id, commonName: row.commonName, sourceDatabase: row.sourceDatabase, xrefMeSH: row.xrefMeSH});
578+
579+
MATCH (s:Symptom)
580+
RETURN count(s)
581+
#+end_src
582+
583+
- BodyPart nodes
584+
#+begin_src cypher
585+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
586+
WITH row WHERE row._labels = ':BodyPart'
587+
CREATE (b:BodyPart {nodeID: row._id, commonName: row.commonName, sourceDatabase: row.sourceDatabase, xrefUberon: row.xrefUberon});
588+
589+
MATCH (b:BodyPart)
590+
RETURN count(b)
591+
#+end_src
592+
593+
- DrugClass nodes
594+
#+begin_src cypher
595+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
596+
WITH row WHERE row._labels = ':DrugClass'
597+
CREATE (d:DrugClass {nodeID: row._id, commonName: row.commonName, sourceDatabase: row.sourceDatabase, xrefNciThesaurus: row.xrefNciThesaurus});
598+
599+
MATCH (d:DrugClass)
600+
RETURN count(d)
601+
#+end_src
602+
603+
- Disease nodes
604+
#+begin_src cypher
605+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
606+
WITH row WHERE row._labels = ':Disease'
607+
CREATE (d:Disease {nodeID: row._id, commonName: row.commonName, sourceDatabase: row.sourceDatabase,
608+
xrefDiseaseOntology: row.xrefDiseaseOntology, xrefUmlsCUI: row.xrefUmlsCUI});
609+
610+
MATCH (d:Disease)
611+
RETURN count(d)
612+
#+end_src
613+
614+
- Transcription Factor nodes
615+
#+begin_src cypher
616+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
617+
WITH row WHERE row._labels = ':TranscriptionFactor'
618+
CREATE (t:TranscriptionFactor {nodeID: row._id, sourceDatabase: row.sourceDatabase, TF: row.TF});
619+
MATCH (t:TranscriptionFactor)
620+
RETURN count(t)
621+
#+end_src
622+
623+
- GENEPARTICIPATESINBIOLOGICALPROCESS relationships
624+
#+begin_src cypher
625+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
626+
WITH row WHERE row._type = 'GENEPARTICIPATESINBIOLOGICALPROCESS'
627+
MATCH (g:Gene {nodeID: row._start}) MATCH (b:BiologicalProcess {nodeID: row._end})
628+
MERGE (g)-[rel:GENEPARTICIPATESINBIOLOGICALPROCESS]->(b)
629+
RETURN count(rel)
630+
#+end_src
631+
632+
- GENEREGULATESGENE relationships
633+
#+begin_src cypher
634+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
635+
WITH row WHERE row._type = 'GENEREGULATESGENE'\
636+
MATCH (g:Gene {nodeID: row._start}) MATCH (g2:Gene {nodeID: row._end})
637+
MERGE (g)-[rel:GENEREGULATESGENE]->(g2)
638+
RETURN count(rel)
639+
#+end_src
640+
641+
- GENEINPATHWAY relationships
642+
#+begin_src cypher
643+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
644+
WITH row WHERE row._type = 'GENEINPATHWAY'
645+
MATCH (g:Gene {nodeID: row._start}) MATCH (p:Pathway {nodeID: row._end})
646+
MERGE (g)-[rel:GENEINPATHWAY]->(p)
647+
RETURN count(rel)
648+
#+end_src
649+
650+
- GENEINTERACTSWITHGENE relationships
651+
#+begin_src cypher
652+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
653+
WITH row WHERE row._type = 'GENEINTERACTSWITHGENE'
654+
MATCH (g:Gene {nodeID: row._start}) MATCH (g2:Gene {nodeID: row._end})
655+
MERGE (g)-[rel:GENEINTERACTSWITHGENE]->(g2)
656+
RETURN count(rel)
657+
#+end_src
658+
659+
- BODYPARTUNDEREXPRESSESGENE relationships
660+
#+begin_src cypher
661+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
662+
WITH row WHERE row._type = 'BODYPARTUNDEREXPRESSESGENE'
663+
MATCH (b:BodyPart {nodeID: row._start}) MATCH (g:Gene {nodeID: row._end})
664+
MERGE (b)-[rel:BODYPARTUNDEREXPRESSESGENE]->(g)
665+
RETURN count(rel)
666+
#+end_src
667+
668+
- BODYPARTOVEREXPRESSESGENE relationships
669+
#+begin_src cypher
670+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
671+
WITH row WHERE row._type = 'BODYPARTOVEREXPRESSESGENE'
672+
MATCH (b:BodyPart {nodeID: row._start}) MATCH (g:Gene {nodeID: row._end})
673+
MERGE (b)-[rel:BODYPARTOVEREXPRESSESGENE]->(g)
674+
RETURN count(rel)
675+
#+end_src
676+
677+
- GENEHASMOLECULARFUNCTION relationships
678+
#+begin_src cypher
679+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
680+
WITH row WHERE row._type = 'GENEHASMOLECULARFUNCTION'
681+
MATCH (g:Gene {nodeID: row._start}) MATCH (m:MolecularFunction {nodeID: row._end})
682+
MERGE (g)-[rel:GENEHASMOLECULARFUNCTION]->(m)
683+
RETURN count(rel)
684+
#+end_src
685+
686+
- GENEASSOCIATEDWITHCELLULARCOMPONENT relationships
687+
#+begin_src cypher
688+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
689+
WITH row WHERE row._type = 'GENEASSOCIATEDWITHCELLULARCOMPONENT'
690+
MATCH (g:Gene {nodeID: row._start}) MATCH (c:CellularComponent {nodeID: row._end})
691+
MERGE (g)-[rel:GENEASSOCIATEDWITHCELLULARCOMPONENT]->(c)
692+
RETURN count(rel)
693+
#+end_src
694+
695+
- GENECOVARIESWITHGENE relationships
696+
#+begin_src cypher
697+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
698+
WITH row WHERE row._type = 'GENECOVARIESWITHGENE'
699+
MATCH (g:Gene {nodeID: row._start}) MATCH (g2:Gene {nodeID: row._end})
700+
MERGE (g)-[rel:GENECOVARIESWITHGENE {sourceDB: row.sourceDB, unbiased: row.unbiased, correlation: ToInteger(row.correlation)}]->(g2)
701+
RETURN count(rel)
702+
#+end_src
703+
704+
- CHEMICALDECREASESEXPRESSION relationships
705+
#+begin_src cypher
706+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
707+
WITH row WHERE row._type = 'CHEMICALDECREASESEXPRESSION'
708+
MATCH (d:Drug {nodeID: row._start}) MATCH (g:Gene {nodeID: row._end})
709+
MERGE (d)-[rel:CHEMICALDECREASESEXPRESSION {sourceDB: row.sourceDB, unbiased: row.unbiased, z_score: ToInteger(row.z_score)}]->(g)
710+
RETURN count(rel)
711+
#+end_src
712+
713+
- CHEMICALINCREASESEXPRESSION relationships
714+
#+begin_src cypher
715+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
716+
WITH row WHERE row._type = 'CHEMICALINCREASESEXPRESSION'
717+
MATCH (d:Drug {nodeID: row._start}) MATCH (g:Gene {nodeID: row._end})
718+
MERGE (d)-[rel:CHEMICALINCREASESEXPRESSION {sourceDB: row.sourceDB, unbiased: row.unbiased, z_score: ToInteger(row.z_score)}]->(g)
719+
RETURN count(rel)
720+
#+end_src
721+
722+
- CHEMICALBINDSGENE relationships
723+
#+begin_src cypher
724+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
725+
WITH row WHERE row._type = 'CHEMICALBINDSGENE'
726+
MATCH (d:Drug {nodeID: row._start}) MATCH (g:Gene {nodeID: row._end})
727+
MERGE (d)-[rel:CHEMICALBINDSGENE {sourceDB: row.sourceDB, unbiased: row.unbiased, affinity_nM: ToInteger(row.affinity_nM)}]->(g)
728+
RETURN count(rel)
729+
#+end_src
730+
731+
- DRUGINCLASS relationships
732+
#+begin_src cypher
733+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
734+
WITH row WHERE row._type = 'DRUGINCLASS'
735+
MATCH (d:Drug {nodeID: row._start}) MATCH (d2:DrugClass {nodeID: row._end})
736+
MERGE (d)-[rel:DRUGINCLASS]->(d2)
737+
RETURN count(rel)
738+
#+end_src
739+
740+
- GENEASSOCIATESWITHDISEASE relationships
741+
#+begin_src cypher
742+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
743+
WITH row WHERE row._type = 'GENEASSOCIATESWITHDISEASE'
744+
MATCH (g:Gene {nodeID: row._start}) MATCH (d:Disease {nodeID: row._end})
745+
MERGE (g)-[rel:GENEASSOCIATESWITHDISEASE {sourceDB: row.sourceDB, score: ToInteger(row.score)}]->(d)
746+
RETURN count(rel)
747+
#+end_src
748+
749+
- SYMPTOMMANIFESTATIONOFDISEASE relationships
750+
#+begin_src cypher
751+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
752+
WITH row WHERE row._type = 'SYMPTOMMANIFESTATIONOFDISEASE'
753+
MATCH (s:Symptom {nodeID: row._start}) MATCH (d:Disease {nodeID: row._end})
754+
MERGE (s)-[rel:SYMPTOMMANIFESTATIONOFDISEASE {sourceDB: row.sourceDB, unbiased: row.unbiased, p_fisher: row.p_fisher}]->(d)
755+
RETURN count(rel)
756+
#+end_src
757+
758+
- DISEASELOCALIZESTOANATOMY relationships
759+
#+begin_src cypher
760+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
761+
WITH row WHERE row._type = 'DISEASELOCALIZESTOANATOMY'
762+
MATCH (d:Disease {nodeID: row._start}) MATCH (b:BodyPart {nodeID: row._end})
763+
MERGE (d)-[rel:DISEASELOCALIZESTOANATOMY {sourceDB: row.sourceDB, unbiased: row.unbiased, p_fisher: row.p_fisher}]->(b)
764+
RETURN count(rel)
765+
#+end_src
766+
767+
- DRUGTREATSDISEASE relationships
768+
#+begin_src cypher
769+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
770+
WITH row WHERE row._type = 'DRUGTREATSDISEASE'
771+
MATCH (d:Drug {nodeID: row._start}) MATCH (d2:Disease {nodeID: row._end})
772+
MERGE (d)-[rel:DRUGTREATSDISEASE]->(d2)
773+
RETURN count(rel)
774+
#+end_src
775+
776+
- DRUGCAUSESEFFECT relationships
777+
#+begin_src cypher
778+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
779+
WITH row WHERE row._type = 'DRUGCAUSESEFFECT'
780+
MATCH (d:Drug {nodeID: row._start}) MATCH (d2:Disease {nodeID: row._end})
781+
MERGE (d)-[rel:DRUGCAUSESEFFECT]->(d2)
782+
RETURN count(rel)
783+
#+end_src
784+
785+
- TRANSCRIPTIONFACTORINTERACTSWITHGENE relationships
786+
#+begin_src cypher
787+
LOAD CSV FROM "/usr/lib/memgraph/alzkb-populated.csv" WITH HEADER AS row
788+
WITH row WHERE row._type = 'TRANSCRIPTIONFACTORINTERACTSWITHGENE'
789+
MATCH (t:TranscriptionFactor {nodeID: row._start}) MATCH (g:Gene {nodeID: row._end})
790+
MERGE (t)-[rel:TRANSCRIPTIONFACTORINTERACTSWITHGENE {sourceDB: row.sourceDB, confidence: row.confidence}]->(g)
791+
RETURN count(rel)
792+
#+end_src
793+
794+
** Switching Back to Transactional Storage Mode
795+
After importing the data, follow these steps to switch back to the transactional storage mode:
796+
- Switch to Transactional Storage Mode:
797+
#+begin_src cypher
798+
STORAGE MODE IN_MEMORY_TRANSACTIONAL;
799+
#+end_src
800+
801+
- Verify the Storage Mode Switch:
802+
#+begin_src cypher
803+
SHOW STORAGE INFO;
804+
#+end_src

0 commit comments

Comments
 (0)