From e9985025ec2cf25d9fac3db52bdba9168cf05183 Mon Sep 17 00:00:00 2001 From: Rob Court Date: Mon, 12 Jun 2023 18:58:47 +0100 Subject: [PATCH 01/15] Adding Query for scRNAseq datasets to return clusters and samples Ref https://github.com/VirtualFlyBrain/vfb-pipeline-polishing/issues/1 --- model/vfb.xmi | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/model/vfb.xmi b/model/vfb.xmi index 3223567ac..0a502c405 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -622,6 +622,22 @@ returnType="//@libraries.3/@types.0" queryProcessorId="neo4jQueryProcessor"/> + + + + + + + From 2ce905866023e82fcd2532ddb9a73e1387083087 Mon Sep 17 00:00:00 2001 From: Rob Court Date: Tue, 13 Jun 2023 14:22:48 +0100 Subject: [PATCH 02/15] fixed query typo --- model/vfb.xmi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/model/vfb.xmi b/model/vfb.xmi index 0a502c405..386a3c0b5 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -628,10 +628,10 @@ name="dataset_scRNAseq_query"> + query=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id OPTIONAL MATCH (ds)-[:has_reference]->(p:pub) WITH { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} AS cluster, { short_form: ds.short_form, label: coalesce(ds.label,''), iri: ds.iri, types: labels(ds), unique_facets: apoc.coll.sort(coalesce(ds.uniqueFacets, [])), symbol: coalesce(([]+ds.symbol)[0], '')} AS dataset, COLLECT({ core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p), unique_facets: apoc.coll.sort(coalesce(p.uniqueFacets, [])), symbol: coalesce(([]+p.symbol)[0], '')} , PubMed: coalesce(([]+p.PMID)[0], ''), FlyBase: coalesce(([]+p.FlyBase)[0], ''), DOI: coalesce(([]+p.DOI)[0], '') }) AS pubs, c RETURN { core : { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} , description : coalesce(c.description, []), comment : coalesce(c.comment, []) } AS term, 'Get JSON for dataset scRNAseq query' AS query, 'ma3c0d68' AS version , cluster, dataset, pubs", "parameters" : { "ids" : $ARRAY_ID_RESULTS , "id" : "$ID" }" + countQuery=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id RETURN count(c) as count", "parameters" : { "ids" : $ARRAY_ID_RESULTS , "id" : "$ID" }"/> + queryChain="//@dataSources.0/@queries.6"> From f65222cad3e87d704442aa4ea972afa2ead6e1c7 Mon Sep 17 00:00:00 2001 From: Rob Court Date: Tue, 13 Jun 2023 14:24:42 +0100 Subject: [PATCH 03/15] fix typo --- model/vfb.xmi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model/vfb.xmi b/model/vfb.xmi index 386a3c0b5..bba352e64 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -628,7 +628,7 @@ name="dataset_scRNAseq_query"> @@ -1263,7 +1263,7 @@ name="Show all data for a scRNAseq dataset" description="List all data for $NAME" returnType="//@libraries.3/@types.0" - queryChain="//@dataSources.0/@queries.6"> + queryChain="//@dataSources.0/@queries.23"> From 04c27a2582ec87bb69cc94ccdf820c38a1e292a3 Mon Sep 17 00:00:00 2001 From: Rob Court Date: Tue, 13 Jun 2023 14:57:52 +0100 Subject: [PATCH 04/15] Adding MANC link --- .../VFBToolbar/vfbtoolbarMenuConfiguration.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/configuration/VFBToolbar/vfbtoolbarMenuConfiguration.js b/components/configuration/VFBToolbar/vfbtoolbarMenuConfiguration.js index 9e4a99ddd..994fe22ce 100644 --- a/components/configuration/VFBToolbar/vfbtoolbarMenuConfiguration.js +++ b/components/configuration/VFBToolbar/vfbtoolbarMenuConfiguration.js @@ -421,6 +421,15 @@ var toolbarMenu = { handlerAction: "openNewTab", parameters: ["https://neuprint.janelia.org/?dataset=hemibrain%3Av1.2.1&qt=findneurons"] } + }, + { + label: "Adult Male VNC (MANC) NeuPRINT+ (FlyEM, Janelia)", + icon: "", + position: "right-start", + action: { + handlerAction: "openNewTab", + parameters: ["https://neuprint.janelia.org/?dataset=manc%3Av1.0&qt=findneurons"] + } } ] }, From 0c5507456d217900af964a8f61e0704f0c4b7802 Mon Sep 17 00:00:00 2001 From: Rob Court Date: Thu, 15 Jun 2023 09:56:14 +0100 Subject: [PATCH 05/15] removing duplicate cluster column --- model/vfb.xmi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/vfb.xmi b/model/vfb.xmi index bba352e64..cd2c2def6 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -630,7 +630,7 @@ xsi:type="gep_2:SimpleQuery" name="Get JSON for dataset scRNAseq query" description="Get JSON for dataset scRNAseq query" - query=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id OPTIONAL MATCH (ds)-[:has_reference]->(p:pub) WITH { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} AS cluster, { short_form: ds.short_form, label: coalesce(ds.label,''), iri: ds.iri, types: labels(ds), unique_facets: apoc.coll.sort(coalesce(ds.uniqueFacets, [])), symbol: coalesce(([]+ds.symbol)[0], '')} AS dataset, COLLECT({ core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p), unique_facets: apoc.coll.sort(coalesce(p.uniqueFacets, [])), symbol: coalesce(([]+p.symbol)[0], '')} , PubMed: coalesce(([]+p.PMID)[0], ''), FlyBase: coalesce(([]+p.FlyBase)[0], ''), DOI: coalesce(([]+p.DOI)[0], '') }) AS pubs, c RETURN { core : { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} , description : coalesce(c.description, []), comment : coalesce(c.comment, []) } AS term, 'Get JSON for dataset scRNAseq query' AS query, 'ma3c0d68' AS version , cluster, dataset, pubs", "parameters" : { "ids" : $ARRAY_ID_RESULTS , "id" : "$ID" }" + query=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id OPTIONAL MATCH (ds)-[:has_reference]->(p:pub) WITH { short_form: ds.short_form, label: coalesce(ds.label,''), iri: ds.iri, types: labels(ds), unique_facets: apoc.coll.sort(coalesce(ds.uniqueFacets, [])), symbol: coalesce(([]+ds.symbol)[0], '')} AS dataset, COLLECT({ core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p), unique_facets: apoc.coll.sort(coalesce(p.uniqueFacets, [])), symbol: coalesce(([]+p.symbol)[0], '')} , PubMed: coalesce(([]+p.PMID)[0], ''), FlyBase: coalesce(([]+p.FlyBase)[0], ''), DOI: coalesce(([]+p.DOI)[0], '') }) AS pubs, c RETURN { core : { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} , description : coalesce(c.description, []), comment : coalesce(c.comment, []) } AS term, 'Get JSON for dataset scRNAseq query' AS query, 'ma3c0d68' AS version, dataset, pubs", "parameters" : { "ids" : $ARRAY_ID_RESULTS , "id" : "$ID" }" countQuery=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id RETURN count(c) as count", "parameters" : { "ids" : $ARRAY_ID_RESULTS , "id" : "$ID" }"/> Date: Thu, 15 Jun 2023 19:46:20 +0100 Subject: [PATCH 06/15] removing unused array --- model/vfb.xmi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model/vfb.xmi b/model/vfb.xmi index cd2c2def6..2be623cca 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -630,8 +630,8 @@ xsi:type="gep_2:SimpleQuery" name="Get JSON for dataset scRNAseq query" description="Get JSON for dataset scRNAseq query" - query=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id OPTIONAL MATCH (ds)-[:has_reference]->(p:pub) WITH { short_form: ds.short_form, label: coalesce(ds.label,''), iri: ds.iri, types: labels(ds), unique_facets: apoc.coll.sort(coalesce(ds.uniqueFacets, [])), symbol: coalesce(([]+ds.symbol)[0], '')} AS dataset, COLLECT({ core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p), unique_facets: apoc.coll.sort(coalesce(p.uniqueFacets, [])), symbol: coalesce(([]+p.symbol)[0], '')} , PubMed: coalesce(([]+p.PMID)[0], ''), FlyBase: coalesce(([]+p.FlyBase)[0], ''), DOI: coalesce(([]+p.DOI)[0], '') }) AS pubs, c RETURN { core : { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} , description : coalesce(c.description, []), comment : coalesce(c.comment, []) } AS term, 'Get JSON for dataset scRNAseq query' AS query, 'ma3c0d68' AS version, dataset, pubs", "parameters" : { "ids" : $ARRAY_ID_RESULTS , "id" : "$ID" }" - countQuery=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id RETURN count(c) as count", "parameters" : { "ids" : $ARRAY_ID_RESULTS , "id" : "$ID" }"/> + query=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id OPTIONAL MATCH (ds)-[:has_reference]->(p:pub) WITH { short_form: ds.short_form, label: coalesce(ds.label,''), iri: ds.iri, types: labels(ds), unique_facets: apoc.coll.sort(coalesce(ds.uniqueFacets, [])), symbol: coalesce(([]+ds.symbol)[0], '')} AS dataset, COLLECT({ core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p), unique_facets: apoc.coll.sort(coalesce(p.uniqueFacets, [])), symbol: coalesce(([]+p.symbol)[0], '')} , PubMed: coalesce(([]+p.PMID)[0], ''), FlyBase: coalesce(([]+p.FlyBase)[0], ''), DOI: coalesce(([]+p.DOI)[0], '') }) AS pubs, c RETURN { core : { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} , description : coalesce(c.description, []), comment : coalesce(c.comment, []) } AS term, 'Get JSON for dataset scRNAseq query' AS query, 'ma3c0d68' AS version, dataset, pubs", "parameters" : { "id" : "$ID" }" + countQuery=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id RETURN count(c) as count", "parameters" : { "id" : "$ID" }"/> Date: Fri, 16 Jun 2023 19:26:28 +0100 Subject: [PATCH 07/15] dataset not needed --- model/vfb.xmi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/vfb.xmi b/model/vfb.xmi index 2be623cca..15253b2cd 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -630,7 +630,7 @@ xsi:type="gep_2:SimpleQuery" name="Get JSON for dataset scRNAseq query" description="Get JSON for dataset scRNAseq query" - query=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id OPTIONAL MATCH (ds)-[:has_reference]->(p:pub) WITH { short_form: ds.short_form, label: coalesce(ds.label,''), iri: ds.iri, types: labels(ds), unique_facets: apoc.coll.sort(coalesce(ds.uniqueFacets, [])), symbol: coalesce(([]+ds.symbol)[0], '')} AS dataset, COLLECT({ core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p), unique_facets: apoc.coll.sort(coalesce(p.uniqueFacets, [])), symbol: coalesce(([]+p.symbol)[0], '')} , PubMed: coalesce(([]+p.PMID)[0], ''), FlyBase: coalesce(([]+p.FlyBase)[0], ''), DOI: coalesce(([]+p.DOI)[0], '') }) AS pubs, c RETURN { core : { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} , description : coalesce(c.description, []), comment : coalesce(c.comment, []) } AS term, 'Get JSON for dataset scRNAseq query' AS query, 'ma3c0d68' AS version, dataset, pubs", "parameters" : { "id" : "$ID" }" + query=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id OPTIONAL MATCH (ds)-[:has_reference]->(p:pub) WITH COLLECT({ core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p), unique_facets: apoc.coll.sort(coalesce(p.uniqueFacets, [])), symbol: coalesce(([]+p.symbol)[0], '')} , PubMed: coalesce(([]+p.PMID)[0], ''), FlyBase: coalesce(([]+p.FlyBase)[0], ''), DOI: coalesce(([]+p.DOI)[0], '') }) AS pubs, c RETURN { core : { short_form: c.short_form, label: coalesce(c.label,''), iri: c.iri, types: labels(c), unique_facets: apoc.coll.sort(coalesce(c.uniqueFacets, [])), symbol: coalesce(([]+c.symbol)[0], '')} , description : coalesce(c.description, []), comment : coalesce(c.comment, []) } AS term, 'Get JSON for dataset scRNAseq query' AS query, 'ma3c0d68' AS version, pubs", "parameters" : { "id" : "$ID" }" countQuery=""statement": "MATCH (c:Individual)-[:has_source]->(ds:scRNAseq_DataSet) WHERE ds.short_form = $id RETURN count(c) as count", "parameters" : { "id" : "$ID" }"/> Date: Sun, 18 Jun 2023 15:06:55 +0100 Subject: [PATCH 08/15] update GA code --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4171aed28..06e0e3e87 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,7 +26,7 @@ ARG VFB_TREE_PDB_SERVER_ARG=https://pdb.v4.virtualflybrain.org ARG VFB_OWL_SERVER_ARG=http://owl.virtualflybrain.org/kbs/vfb/ ARG VFB_R_SERVER_ARG=http://r.virtualflybrain.org/ocpu/library/vfbr/R/vfb_nblast ARG SOLR_SERVER_ARG=https://solr.virtualflybrain.org/solr/ontology/select -ARG googleAnalyticsSiteCode_ARG=UA-18509775-2 +ARG googleAnalyticsSiteCode_ARG=G-8JYPDQDX3B ENV MAXSIZE=2G ARG finalBuild=false ENV USESSL=${finalBuild} From 16016fe6c8f03bc2dbc917133151e5403086deec Mon Sep 17 00:00:00 2001 From: Rob Court Date: Mon, 19 Jun 2023 15:39:56 +0100 Subject: [PATCH 09/15] Adding hasScRNAseq filter to search --- components/configuration/VFBMain/searchConfiguration.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/configuration/VFBMain/searchConfiguration.js b/components/configuration/VFBMain/searchConfiguration.js index 91c2eb23a..dee23751a 100644 --- a/components/configuration/VFBMain/searchConfiguration.js +++ b/components/configuration/VFBMain/searchConfiguration.js @@ -189,6 +189,11 @@ var searchConfiguration = { "filter_name": "Synaptic Neuropil", "enabled": "disabled", }, + { + "key": "hasScRNAseq", + "filter_name": "Has scRNAseq data", + "enabled": "disabled", + }, { "key": "DataSet", "filter_name": "Dataset", From ea8274fdf400d516f7ae8338cb22a88b8b2faf79 Mon Sep 17 00:00:00 2001 From: Rob Court Date: Wed, 21 Jun 2023 17:22:41 +0100 Subject: [PATCH 10/15] Speeding up cypher --- components/configuration/VFBTree/VFBTreeConfiguration.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/configuration/VFBTree/VFBTreeConfiguration.js b/components/configuration/VFBTree/VFBTreeConfiguration.js index abd9f9a69..ce12a0d05 100644 --- a/components/configuration/VFBTree/VFBTreeConfiguration.js +++ b/components/configuration/VFBTree/VFBTreeConfiguration.js @@ -9,7 +9,7 @@ var treeCypherQuery = instance => ({ "statement": "MATCH (root:Class)<-[:INSTANCEOF]-(t:Template {short_form:'" + instance + "'})" + "<-[:depicts]-(tc:Template)<-[ie:in_register_with]-(c:Individual)-[:depicts]->(image:" + "Individual)-[r:INSTANCEOF]->(anat:Class:Anatomy) WHERE exists(ie.index) WITH root, anat,r,image" - + " MATCH p=allshortestpaths((root)<-[:SUBCLASSOF|part_of*..]-(anat)) " + + " MATCH p=allshortestpaths((root)<-[:SUBCLASSOF|part_of*..50]-(anat)) " + "UNWIND nodes(p) as n UNWIND nodes(p) as m WITH * WHERE id(n) < id(m) " + "MATCH path = allShortestPaths( (n)-[:SUBCLASSOF|part_of*..1]-(m) ) " + "RETURN collect(distinct { node_id: id(anat), short_form: anat.short_form, image: image.short_form })" From 0c2cd758bfdd2a89c14a4a5ac21ed173eb42e823 Mon Sep 17 00:00:00 2001 From: Rob Court Date: Wed, 21 Jun 2023 20:08:08 +0100 Subject: [PATCH 11/15] adding reverse gene expression query --- model/vfb.xmi | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/model/vfb.xmi b/model/vfb.xmi index 15253b2cd..e9965ff21 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -162,6 +162,9 @@ + + + + + + + + From 358f40ccf7281cdfb547f462f689b118333181c5 Mon Sep 17 00:00:00 2001 From: Rob Court Date: Wed, 21 Jun 2023 20:17:36 +0100 Subject: [PATCH 12/15] query only where results --- model/vfb.xmi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/vfb.xmi b/model/vfb.xmi index e9965ff21..71110ce56 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -1296,6 +1296,6 @@ returnType="//@libraries.3/@types.0" queryChain="//@dataSources.0/@queries.24"> + type="//@libraries.3/@types.1 //@libraries.3/@types.48 //@libraries.3/@types.47"/> From ef8f30bd200ed9ccc63aa1ec971a52d2a4a9903a Mon Sep 17 00:00:00 2001 From: Rob Court Date: Thu, 22 Jun 2023 15:15:39 +0100 Subject: [PATCH 13/15] typo fix --- model/vfb.xmi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/vfb.xmi b/model/vfb.xmi index 71110ce56..55e35e3bd 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -651,7 +651,7 @@ id="cluster_expression_query" name="Get JSON for cluster expression query" description="Get JSON for cluster expression query" - query=""statement": "MATCH (primary:Individual:Cluster)-[e:expresses]->(g:Gene:Class) WHERE g.short_form in [$id] WITH e.expression_level[0] as expression_level, e.expression_extent[0] as expression_extent, { short_form: g.short_form, label: coalesce(g.label,''), iri: g.iri, types: labels(g), unique_facets: apoc.coll.sort(coalesce(g.uniqueFacets, [])), symbol: coalesce(([]+g.symbol)[0], '')} AS gene,primary MATCH (a:Anatomy)<-[:composed_primarily_of]-(primary) WITH { short_form: a.short_form, label: coalesce(a.label,''), iri: a.iri, types: labels(a), unique_facets: apoc.coll.sort(coalesce(a.uniqueFacets, [])), symbol: coalesce(([]+a.symbol)[0], '')} AS anatomy,primary,expression_level,expression_extent,gene RETURN { core : { short_form: primary.short_form, label: coalesce(primary.label,''), iri: primary.iri, types: labels(primary), unique_facets: apoc.coll.sort(coalesce(primary.uniqueFacets, [])), symbol: coalesce(([]+primary.symbol)[0], '')} , description : coalesce(primary.description, []), comment : coalesce(primary.comment, []) } AS term, 'Get JSON for expression in cluster query' AS query, 'ma3c0d68' AS version , expression_level, expression_extent, term, anatomy", "parameters" : { "id" : "$ID" }" + query=""statement": "MATCH (primary:Individual:Cluster)-[e:expresses]->(g:Gene:Class) WHERE g.short_form in [$id] WITH e.expression_level[0] as expression_level, e.expression_extent[0] as expression_extent, { short_form: g.short_form, label: coalesce(g.label,''), iri: g.iri, types: labels(g), unique_facets: apoc.coll.sort(coalesce(g.uniqueFacets, [])), symbol: coalesce(([]+g.symbol)[0], '')} AS gene,primary MATCH (a:Anatomy)<-[:composed_primarily_of]-(primary) WITH { short_form: a.short_form, label: coalesce(a.label,''), iri: a.iri, types: labels(a), unique_facets: apoc.coll.sort(coalesce(a.uniqueFacets, [])), symbol: coalesce(([]+a.symbol)[0], '')} AS anatomy,primary,expression_level,expression_extent,gene RETURN { core : { short_form: primary.short_form, label: coalesce(primary.label,''), iri: primary.iri, types: labels(primary), unique_facets: apoc.coll.sort(coalesce(primary.uniqueFacets, [])), symbol: coalesce(([]+primary.symbol)[0], '')} , description : coalesce(primary.description, []), comment : coalesce(primary.comment, []) } AS term, 'Get JSON for expression in cluster query' AS query, 'ma3c0d68' AS version , expression_level, expression_extent, anatomy", "parameters" : { "id" : "$ID" }" countQuery=""statement": "MATCH (primary:Individual:Cluster)-[e:expresses]->(g:Gene:Class) WHERE g.short_form in [$id] RETURN count(primary) as count", "parameters" : { "id" : "$ID" }"/> Date: Mon, 26 Jun 2023 16:18:15 +0100 Subject: [PATCH 14/15] removing undefined string as causes error: react-dom.development.js:327 Uncaught TypeError: Cannot read properties of undefined (reading 'getId') at VFBFocusTerm.menuHandler (VFBMainContainer.js_+_282_modules:2281:41) at MenuSection.eval (VFBMainContainer.js_+_282_modules:318:40) at HTMLUnknownElement.callCallback (react-dom.development.js:188:14) at Object.invokeGuardedCallbackDev (react-dom.development.js:237:16) at invokeGuardedCallback (react-dom.development.js:292:31) at invokeGuardedCallbackAndCatchFirstError (react-dom.development.js:306:25) at executeDispatch (react-dom.development.js:389:3) at executeDispatchesInOrder (react-dom.development.js:414:5) at executeDispatchesAndRelease (react-dom.development.js:3278:5) at executeDispatchesAndReleaseTopLevel (react-dom.development.js:3287:10) --- components/configuration/VFBFocusTerm/focusTermConfiguration.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/configuration/VFBFocusTerm/focusTermConfiguration.js b/components/configuration/VFBFocusTerm/focusTermConfiguration.js index 9e72457a4..960d05967 100644 --- a/components/configuration/VFBFocusTerm/focusTermConfiguration.js +++ b/components/configuration/VFBFocusTerm/focusTermConfiguration.js @@ -115,7 +115,7 @@ var focusTermConfiguration = { position: "bottom-start", dynamicListInjector: { handlerAction: "subMenuGrouping", - parameters: ["undefined"] + parameters: [] } } ] From cbd5e8aa1e40d7644aa12508a1ba17047f6bcc4c Mon Sep 17 00:00:00 2001 From: Rob Court Date: Fri, 12 Jan 2024 14:47:46 +0000 Subject: [PATCH 15/15] Update vfb.xmi to merge https://github.com/VirtualFlyBrain/geppetto-vfb/blob/v2.2.2.10/model/vfb.xmi --- model/vfb.xmi | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/model/vfb.xmi b/model/vfb.xmi index cc8faf7df..9010562b0 100644 --- a/model/vfb.xmi +++ b/model/vfb.xmi @@ -162,6 +162,9 @@ + + + + + + + + + + + + + + +