Skip to content

ROI browser painted-domain coverage gap across VFB templates #405

@Robbie1977

Description

@Robbie1977

ROI browser painted-domain coverage gap across VFB templates

Summary

The painted-domain in_register_with.index property — the curated marker
the ROI browser, VFBquery.get_template_roi_tree, and the WLZIIP 3D viewer's
hover-pick all depend on — is incomplete on the majority of VFB templates.
Only two templates (adult brain Ito2014, Adult Head McKellar2020) are fully
curated; the rest range from ~1% coverage down to 0%. The user-facing
consequence is that the ROI tree under each affected template silently
under-represents the painted-region data that the volume files on disk
already support.

This is a data / curation issue, not a code one. Filing as a tracker so it
can be scheduled.

Per-template coverage today (live against pdb)

short_form label total channels with ie.index coverage
VFB_00030786 adult brain Ito2014 75 75 100%
VFB_00110000 Adult Head McKellar2020 18 18 100%
VFB_00049000 L3 CNS Wood2018 21,451 255 1.18%
VFB_00100000 adult VNS Court2018 3,194 22 0.69%
VFB_00120000 Adult T1 Leg (Kuan2020) 754 4 0.5%
VFB_00101384 JRC_FlyEM_Hemibrain 56,198 97 0.17%
VFB_00017894 adult brain JFRC2 82,201 58 0.07%
VFB_00200000 JRC2018UnisexVNC 158,185 21 0.013%
VFB_00101567 JRC2018Unisex (adult brain) 749,172 46 0.006%
VFB_00050000 L1 larval CNS ssTEM (Cardona/Janelia) 6,304 0 0%

Note: JRC2018Unisex and JRC2018UnisexVNC carry hundreds of thousands of
in_register_with channels because every neuron Individual aligned to those
templates contributes a channel — most of those will be expression-pattern /
single-neuron channels rather than ROI-painted regions, so the raw fraction
will always be small. The story isn't that 0.006% is the right target —
it's that the indexed set is so small that the ROI tree under these
templates renders only the named neuropils and misses the
sub-region / sub-domain painted layer the rest of the volume data supports.

Reproducer

MATCH (t:Template)<-[:depicts]-(:Template)<-[ie:in_register_with]-(:Individual)
      -[:depicts]->(:Individual)-[:INSTANCEOF]->(:Class)
WITH t,
     COUNT(ie) AS n_total,
     sum(CASE WHEN exists(ie.index) THEN 1 ELSE 0 END) AS n_indexed
RETURN t.short_form AS template_sf,
       t.label      AS template_label,
       n_total,
       n_indexed,
       toFloat(n_indexed) / toFloat(n_total) AS frac_indexed
ORDER BY n_total DESC
LIMIT 25

Why this is a curation issue, not a code one

  • Volume data exists. Per-individual painted-domain folders all carry
    their own volume.wlz masks. Where a master labelled volume exists
    (Adult T1 Leg's Leg40-poisson_simple_expanded.nrrd carries ~256 distinct
    uint8 stamps in continuous ranges), it implies the painted-region geometry
    has been authored at some point and isn't being reflected in pdb.
  • The consumer code is filtering correctly. get_template_roi_tree
    applies WHERE exists(ie.index) so that the ROI tree shows only the
    curator-blessed painted set. That's the right behaviour for the brain
    templates where every Individual that aligns to JRC2018Unisex would
    otherwise flood the tree.
  • The fully-curated templates work. Ito2014 and McKellar2020 demonstrate
    the data shape the rest of the templates need to reach.

Suggested scope of the curation pass

  1. Per-template index assignment for each template's painted-domain
    in_register_with channels. Reference shape: Ito2014 / McKellar2020.
  2. Prioritisation by user impact and data readiness:
    • High — JRC2018Unisex / JRC2018UnisexVNC (highest user traffic);
      scoping note: these need a curator decision on what counts as a
      painted-domain channel vs. a neuron / expression-pattern channel,
      since the raw in_register_with count is dominated by the latter.
    • High — Adult T1 Leg (Kuan2020); see the leg-specific issue
      Adult T1 Leg (VFB_00120000) painted-domain ie.index missing on 750 of 754 channels #406. Worksheet attached for ready-to-go curation.
    • Medium — Adult VNS Court2018, JRC_FlyEM_Hemibrain, JFRC2,
      L3 CNS Wood2018.
    • Verify and decide — L1 larval CNS at 0% coverage: should painted
      domains exist here at all? If yes, why has no channel ever been
      indexed?
  3. Write-back tooling. Once curated stamp-to-FBbt mappings are in hand,
    a single Cypher MATCH (...)-[ie:in_register_with]-(...) SET ie.index = [N] keyed on the channel short_form lands the property on the right
    relationships. Happy to draft that script per-template once mappings
    are ready.

Related code-side prep (already ready, not pushed yet)

VFBquery v1.14.6 (run.sh at
~/Documents/Claude/Projects/Claude CoWork/projects/vfbquery-v1.14.6-roi-tree-walk-expansion/)
expands the relationship walk used by get_template_roi_tree to include
has_sensory_dendrite_in | fasciculates_with | attached_to_part_of | sends_synaptic_output_to_cell alongside the existing
SUBCLASSOF | part_of | innervates, so that as templates get curated the
tree-walking step can actually reach the painted leaves (sensory neurons,
motor neurons, muscle cells, nerves) from their anatomy root. This patch
is independent of the curation work and can ship at any time.

Related downstream

  • The WLZIIP 3D viewer at fcgi/wlziipsrv.fcgi?…&obj=Wlz-grey-value
    reports a grey value at the cursor; without the matching ie.index rows
    in pdb, the back-end can't resolve that grey value back to an FBbt class
    for the hover tooltip.
  • get_template_roi_tree is the canonical consumer of ie.index today;
    any future ROI-browser / painted-domain consumer in v2 will hit the same
    filter and the same gap.

How this was discovered

Started with a user-reported missing painted domains on the Adult T1 Leg
template's ROI browser. Live audit on pdb traced the symptom to the
ie.index filter; widening the audit across templates surfaced the broader
gap reported above.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions