VirtualFlyBrain / VFB_json_schema

VFB json schema spec + code for rolling queries producing VFB json schema + related integration tests
Apache License 2.0
0 stars 0 forks source link

Potential issue with Neuron:Class termInfo query not returning Targeting Splits #61

Closed Robbie1977 closed 4 years ago

Robbie1977 commented 4 years ago

For FBbt_00111500

running query:

MATCH (primary:Class) WHERE primary.short_form in ["FBbt_00111500"] WITH primary OPTIONAL MATCH (o:Class)<-[r:SUBCLASSOF|INSTANCEOF]-(primary) WITH CASE WHEN o IS NULL THEN [] ELSE COLLECT ({ short_form: o.short_form, label: coalesce(o.label,''), iri: o.iri, types: labels(o) } ) END AS parents ,primary OPTIONAL MATCH (o:Class)<-[r {type:'Related'}]-(primary) WITH CASE WHEN o IS NULL THEN [] ELSE COLLECT ({ relation: { label: r.label, iri: r.uri, type: type(r) } , object: { short_form: o.short_form, label: coalesce(o.label,''), iri: o.iri, types: labels(o) }  }) END AS relationships ,primary,parents OPTIONAL MATCH (o:Individual)<-[r {type:'Related'}]-(primary) WITH CASE WHEN o IS NULL THEN [] ELSE COLLECT ({ relation: { label: r.label, iri: r.uri, type: type(r) } , object: { short_form: o.short_form, label: coalesce(o.label,''), iri: o.iri, types: labels(o) }  }) END AS related_individuals ,primary,parents,relationships OPTIONAL MATCH (s:Site { short_form: primary.self_xref })  WITH CASE WHEN s IS NULL THEN [] ELSE COLLECT({ link_base: s.link_base, accession: coalesce(primary.short_form, ''), link_text: primary.label + ' on ' + s.label, site: { short_form: s.short_form, label: coalesce(s.label,''), iri: s.iri, types: labels(s) } , icon: coalesce(s.link_icon_url, ''),  link_postfix: coalesce(s.link_postfix, '')})  END AS self_xref, primary, parents, relationships, related_individuals OPTIONAL MATCH (s:Site)<-[dbx:hasDbXref]-(primary) WITH CASE WHEN s IS NULL THEN self_xref ELSE COLLECT({ link_base: s.link_base, accession: coalesce(dbx.accession, ''), link_text: primary.label + ' on ' + s.label, site: { short_form: s.short_form, label: coalesce(s.label,''), iri: s.iri, types: labels(s) } , icon: coalesce(s.link_icon_url, ''),  link_postfix: coalesce(s.link_postfix, '')})   + self_xref END AS xrefs,primary,parents,relationships,related_individuals OPTIONAL MATCH (primary)<-[:has_source|SUBCLASSOF|INSTANCEOF*]-(i:Individual)<-[:depicts]-(channel:Individual)-[irw:in_register_with]->(template:Individual)-[:depicts]->(template_anat:Individual) WITH template, channel, template_anat, irw, primary, parents, relationships, related_individuals, xrefs , i limit 5 OPTIONAL MATCH (channel)-[:is_specified_output_of]->(technique:Class) WITH CASE WHEN channel IS NULL THEN [] ELSE COLLECT({ anatomy: { short_form: i.short_form, label: coalesce(i.label,''), iri: i.iri, types: labels(i) } , channel_image: { channel: { short_form: channel.short_form, label: coalesce(channel.label,''), iri: channel.iri, types: labels(channel) } , imaging_technique: { short_form: technique.short_form, label: coalesce(technique.label,''), iri: technique.iri, types: labels(technique) } ,image: { template_channel : { short_form: template.short_form, label: coalesce(template.label,''), iri: template.iri, types: labels(template) } , template_anatomy: { short_form: template_anat.short_form, label: coalesce(template_anat.label,''), iri: template_anat.iri, types: labels(template_anat) } ,image_folder: irw.folder, index: coalesce(irw.index, []) + [] }} }) END AS anatomy_channel_image ,primary,parents,relationships,related_individuals,xrefs OPTIONAL MATCH (primary)-[rp:has_reference { typ: 'syn'}]->(p:pub) WITH CASE WHEN p is null THEN [] ELSE collect({ pub: { core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p) } , PubMed: coalesce(p.PMID, ''), FlyBase: coalesce(p.FlyBase, ''), DOI: coalesce(p.DOI, '') } , synonym: { label: coalesce(rp.synonym, ''), scope: coalesce(rp.scope, ''), type: coalesce(rp.cat,'') }  }) END AS pub_syn,primary,parents,relationships,related_individuals,xrefs,anatomy_channel_image OPTIONAL MATCH (primary)-[rp:has_reference { typ: 'def'}]->(p:pub) WITH CASE WHEN p is null THEN [] ELSE collect({ core: { short_form: p.short_form, label: coalesce(p.label,''), iri: p.iri, types: labels(p) } , PubMed: coalesce(p.PMID, ''), FlyBase: coalesce(p.FlyBase, ''), DOI: coalesce(p.DOI, '') } ) END AS def_pubs,primary,parents,relationships,related_individuals,xrefs,anatomy_channel_image,pub_syn OPTIONAL MATCH (:Class { label: 'intersectional expression pattern'})<-[:SUBCLASSOF]-(ep:Class)<-[ar:part_of]-(anoni:Individual)-[:INSTANCEOF]->(primary) WITH COLLECT({ short_form: ep.short_form, label: coalesce(ep.label,''), iri: ep.iri, types: labels(ep) } ) as targeting_splits,primary,parents,relationships,related_individuals,xrefs,anatomy_channel_image,pub_syn,def_pubs RETURN { core : { short_form: primary.short_form, label: coalesce(primary.label,''), iri: primary.iri, types: labels(primary) } , description : coalesce(primary.description, []), comment : coalesce(primary.`annotation-comment`, []) } AS term, 'Get JSON for Neuron Class' AS query, '2e501bd' AS version , parents, relationships, related_individuals, xrefs, anatomy_channel_image, pub_syn, def_pubs, targeting_splits

gives json:

[
  {
    "core":{
      "short_form":"FBbt_00111500",
      "label":"antennal mechanosensory and motor center AMMC Db5 neuron",
      "iri":"http://purl.obolibrary.org/obo/FBbt_00111500",
      "types":[
        "Class",
        "VFB",
        "_Class",
        "Neuron",
        "Anatomy",
        "Cell",
        "Entity",
        "Leaf_node"
      ]
    },
    "description":[
      "Descending bilateral neuron whose cell body is located in the cell body rind on the ventral region of the gnathal ganglion. The primary neurite extends posteriomedially to form postsynaptic terminals bilaterally in the gnathal ganglion. A contralateral neurite in the gnathal ganglion extends to form postsynaptic terminals in the contralateral antennal mechanosensory and motor center (AMMC) zone E and saddle, and to arborize in the AMMC zone B. It then exits the brain, projecting into the thoracic-abdominal ganglion."
    ],
    "comment":[
      "The location of presynaptic terminals could not be determined (Matsuo et al., 2016)."
    ]
  },
  "Get JSON for Neuron Class",
  "2e501bd",
  [
    {
      "short_form":"FBbt_00047516",
      "label":"descending neuron of the gnathal ganglion",
      "iri":"http://purl.obolibrary.org/obo/FBbt_00047516",
      "types":[
        "Class",
        "VFB",
        "_Class",
        "Neuron",
        "Anatomy",
        "Cell",
        "Entity"
      ]
    }
  ],
  [
    {
      "relation":{
        "label":"has_synaptic_terminals_in",
        "iri":"http://purl.obolibrary.org/obo/RO_0002130",
        "type":"has_synaptic_terminals_in"
      },
      "object":{
        "short_form":"FBbt_00100016",
        "label":"antennal mechanosensory and motor center zone B",
        "iri":"http://purl.obolibrary.org/obo/FBbt_00100016",
        "types":[
          "Class",
          "VFB",
          "_Class",
          "Synaptic_neuropil",
          "Synaptic_neuropil_subdomain",
          "Anatomy",
          "Entity"
        ]
      }
    },
    {
      "relation":{
        "label":"has_synaptic_terminals_in",
        "iri":"http://purl.obolibrary.org/obo/RO_0002130",
        "type":"has_synaptic_terminals_in"
      },
      "object":{
        "short_form":"FBbt_00004052",
        "label":"thoracico-abdominal ganglion",
        "iri":"http://purl.obolibrary.org/obo/FBbt_00004052",
        "types":[
          "Class",
          "VFB",
          "_Class",
          "Anatomy",
          "Ganglion",
          "Entity"
        ]
      }
    },
    {
      "relation":{
        "label":"has_soma_location",
        "iri":"http://purl.obolibrary.org/obo/RO_0002100",
        "type":"has_soma_location"
      },
      "object":{
        "short_form":"FBbt_00100210",
        "label":"cell body rind around the gnathal ganglion",
        "iri":"http://purl.obolibrary.org/obo/FBbt_00100210",
        "types":[
          "Class",
          "VFB",
          "_Class",
          "Anatomy",
          "Entity"
        ]
      }
    },
    {
      "relation":{
        "label":"has_postsynaptic_terminals_in",
        "iri":"http://purl.obolibrary.org/obo/RO_0002110",
        "type":"has_postsynaptic_terminals_in"
      },
      "object":{
        "short_form":"FBbt_00100019",
        "label":"antennal mechanosensory and motor center zone E",
        "iri":"http://purl.obolibrary.org/obo/FBbt_00100019",
        "types":[
          "Class",
          "VFB",
          "_Class",
          "Synaptic_neuropil",
          "Synaptic_neuropil_subdomain",
          "Anatomy",
          "Entity"
        ]
      }
    },
    {
      "relation":{
        "label":"has_postsynaptic_terminals_in",
        "iri":"http://purl.obolibrary.org/obo/RO_0002110",
        "type":"has_postsynaptic_terminals_in"
      },
      "object":{
        "short_form":"FBbt_00045048",
        "label":"saddle",
        "iri":"http://purl.obolibrary.org/obo/FBbt_00045048",
        "types":[
          "Class",
          "VFB",
          "_Class",
          "Synaptic_neuropil",
          "Synaptic_neuropil_domain",
          "Anatomy",
          "Entity"
        ]
      }
    },
    {
      "relation":{
        "label":"has_postsynaptic_terminals_in",
        "iri":"http://purl.obolibrary.org/obo/RO_0002110",
        "type":"has_postsynaptic_terminals_in"
      },
      "object":{
        "short_form":"FBbt_00014013",
        "label":"adult gnathal ganglion",
        "iri":"http://purl.obolibrary.org/obo/FBbt_00014013",
        "types":[
          "Class",
          "VFB",
          "_Class",
          "Anatomy",
          "Ganglion",
          "Entity"
        ]
      }
    },
    {
      "relation":{
        "label":"part of",
        "iri":"http://purl.obolibrary.org/obo/BFO_0000050",
        "type":"part_of"
      },
      "object":{
        "short_form":"FBbt_00003623",
        "label":"adult central nervous system",
        "iri":"http://purl.obolibrary.org/obo/FBbt_00003623",
        "types":[
          "Class",
          "VFB",
          "_Class",
          "Anatomy",
          "Entity"
        ]
      }
    }
  ],
  [

  ],
  [

  ],
  [
    {
      "anatomy":{
        "short_form":"VFB_00030775",
        "label":"Db5",
        "iri":"http://virtualflybrain.org/reports/VFB_00030775",
        "types":[
          "Individual",
          "VFB",
          "_Individual",
          "Neuron",
          "Anatomy",
          "Cell",
          "Entity"
        ]
      },
      "channel_image":{
        "channel":{
          "short_form":"VFBc_00030775",
          "label":"Db5_c",
          "iri":"http://virtualflybrain.org/reports/VFBc_00030775",
          "types":[
            "Individual",
            "VFB",
            "Entity"
          ]
        },
        "imaging_technique":{
          "short_form":"FBbi_00000251",
          "label":"confocal microscopy",
          "iri":"http://purl.obolibrary.org/obo/FBbi_00000251",
          "types":[
            "Class",
            "_Class",
            "FBBI",
            "Entity"
          ]
        },
        "image":{
          "template_channel":{
            "short_form":"VFBc_00017894",
            "label":"JFRC2_template_c",
            "iri":"http://virtualflybrain.org/reports/VFBc_00017894",
            "types":[
              "Individual",
              "VFB",
              "Template",
              "Entity"
            ]
          },
          "template_anatomy":{
            "short_form":"VFB_00017894",
            "label":"adult brain template JFRC2",
            "iri":"http://virtualflybrain.org/reports/VFB_00017894",
            "types":[
              "Individual",
              "VFB",
              "_Individual",
              "Template",
              "Anatomy",
              "Entity"
            ]
          },
          "image_folder":"http://www.virtualflybrain.org/data/VFB/i/0003/0775/",
          "index":[

          ]
        }
      }
    }
  ],
  [
    {
      "pub":{
        "core":{
          "short_form":"FBrf0230862",
          "label":"Matsuo et al., 2016, J. Comp. Neurol. 524(6): 1099--1164",
          "iri":"http://flybase.org/reports/FBrf0230862",
          "types":[
            "Individual",
            "pub",
            "Entity"
          ]
        },
        "PubMed":"26762251",
        "FlyBase":"FBrf0230862",
        "DOI":"10.1002/cne.23955"
      },
      "synonym":{
        "label":"AMMC-Db5",
        "scope":"hasExactSynonym",
        "type":"None"
      }
    }
  ],
  [
    {
      "core":{
        "short_form":"FBrf0230862",
        "label":"Matsuo et al., 2016, J. Comp. Neurol. 524(6): 1099--1164",
        "iri":"http://flybase.org/reports/FBrf0230862",
        "types":[
          "Individual",
          "pub",
          "Entity"
        ]
      },
      "PubMed":"26762251",
      "FlyBase":"FBrf0230862",
      "DOI":"10.1002/cne.23955"
    }
  ],
  [
    {
      "short_form":null,
      "label":"",
      "iri":null,
      "types":null
    }
  ]
]

Although the query returns:

5 Reports of transgene expression in antennal mechanosensory and motor center AMMC Db5 neuron
Name Expressed_in Reference Images
P{GMR44D02-GAL4} expression pattern antennal mechanosensory and motor center AMMC Db5 neuron Matsuo et al., 2016, J. Comp. Neurol. 524(6): 1099--1164  
P{GMR21H04-GAL4} expression pattern antennal mechanosensory and motor center AMMC Db5 neuron Matsuo et al., 2016, J. Comp. Neurol. 524(6): 1099--1164  
P{VT034258-GAL4} expression pattern antennal mechanosensory and motor center AMMC Db5 neuron Matsuo et al., 2016, J. Comp. Neurol. 524(6): 1099--1164
P{GawB}NP7365 expression pattern antennal mechanosensory and motor center AMMC Db5 neuron Matsuo et al., 2016, J. Comp. Neurol. 524(6): 1099--1164  
P{GawB}NP2228 expression pattern antennal mechanosensory and motor center AMMC Db5 neuron Matsuo et al., 2016, J. Comp. Neurol. 524(6): 1099--1164

which would be fine but these are direct from the same Class (OWL queries only returns itself) hence why I wonder why the NEO term info didn't pick them up?

dosumis commented 4 years ago

Query only pulls splits - the direct annotations in the table above are not splits. Or am I missing something?

Robbie1977 commented 4 years ago

OK it's fine then.

@dosumis Do we want the section to appear with just the query or to be hidden?