Hello,
I'm working on exporting the results of the following query as a JSON stream.
CALL apoc.export.json.query(
"MATCH (interactorA:GraphInteractor)<-[:interactors]-(interaction:GraphBinaryInteractionEvidence)-[:interactors]->(interactorB:GraphInteractor)
WHERE ID(interactorA)<ID(interactorB) AND EXISTS(interactorA.uniprotName) AND EXISTS(interactorB.uniprotName)
OPTIONAL MATCH (interaction)-[identifiersR:identifiers]-(identifiersN:GraphXref)-[sourceR:database]-(sourceN:GraphCvTerm) WHERE sourceN.shortName IN ['reactome','signor','intact']
OPTIONAL MATCH (interaction)-[interactiontypeR:interactionType]-(interactiontypeN:GraphCvTerm)
OPTIONAL MATCH (interaction)-[experimentR:experiment]-(experimentN:GraphExperiment)-[interactionDetectionMethodR:interactionDetectionMethod]-(interactionDetectionMethodN:GraphCvTerm)
OPTIONAL MATCH (experimentN)-[hostOrganismR:hostOrganism]-(hostOrganismN:GraphOrganism)
OPTIONAL MATCH (experimentN)-[participantIdentificationMethodR:participantIdentificationMethod]-(participantIdentificationMethodN:GraphCvTerm)
OPTIONAL MATCH (experimentN)-[publicationR:PUB_EXP]-(publicationN:GraphPublication)-[pubmedIdXrefR:pubmedId]-(pubmedIdXrefN:GraphXref)
OPTIONAL MATCH (interaction)-[clusteredInteractionR:interactions]-(clusteredInteractionN:GraphClusteredInteraction)
OPTIONAL MATCH (interaction)-[complexExpansionR:complexExpansion]-(complexExpansionN:GraphCvTerm)
RETURN
distinct
interactorA.uniprotName as interactorA_uniprot_name,
interactorB.uniprotName as interactorB_uniprot_name,
interactiontypeN.shortName as interaction_type_short_name,
interactiontypeN.mIIdentifier as interaction_type_mi_identifier,
interactionDetectionMethodN.shortName as interaction_detection_method_short_name,
interactionDetectionMethodN.mIIdentifier as interaction_detection_method_mi_identifier,
hostOrganismN.scientificName as host_organism_scientific_name,
hostOrganismN.taxId as host_organism_tax_id,
participantIdentificationMethodN.shortName as participant_detection_method_short_name,
participantIdentificationMethodN.mIIdentifier as participant_detection_method_mi_identifier,
clusteredInteractionN.miscore as mi_score,
pubmedIdXrefN.identifier as pubmed_id,
COLLECT(identifiersN.identifier) as interaction_identifier,
CASE WHEN complexExpansionN.shortName IS NULL THEN 'Not Needed' ELSE complexExpansionN.shortName END as expansion_method_short_name,
CASE WHEN complexExpansionN.mIIdentifier IS NULL THEN 'Not Needed' ELSE complexExpansionN.mIIdentifier END as expansion_method_mi_identifier,
COLLECT (sourceN.shortName) as source_databases
ORDER BY interactorA_uniprot_name
", null, {stream:true}
)
YIELD file, nodes, relationships, properties, data
RETURN file, nodes, relationships, properties, data
I'm currently working on Neo4j Desktop with these configurations :
- apoc.export.file.enabled=true
- dbms.memory.heap.initial_size=2G
- dbms.memory.heap.max_size=2G
- dbms.memory.pagecache.size=3G
- dbms.threads.worker_count=4
The graph is in Neo4j 3.5.7 and I cannot really upgrade it since a lot of work has already been made on top of it. I also use APOC 3.5.0.9.
The query is working on a smaller dataset, but not on the full one (graph.db = 7.2GB). Therefore it might be a problem of size, or maybe of the structuration of the data.
The CSV stream export is also working, as well as JSON file export.
The exact error that I get both from neo4j-java-driver and Neo4j browser is the following
I don't really understand the error, so if someone could explain it to me, it would be wonderful .
I've tried profilining and explain but it didn't helped much