fix(fma): /fma-body tissue classification drift (heart/scapula/pelvis/nerves) + research frontier map#62
Conversation
… fan-out 8 research mindsets (Systems/DB, VSA, Ontology, NARS, Genomics, Coding-theory, AGI, Wildcard) grounded in arxiv + synthesis into a ranked, [G]/[H]/[S]-graded frontier map; citations spot-verified. Lands in claude-notes/research/ per repo convention so it survives the ephemeral container. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GJ4NVBSjq1w5h7RmTbVafb
…vis/nerves)
The converge classifier walked only the is_a chain with greedy substring
matching, so:
- 527 structures absent from the is_a tree (heart, nerves, pelvis bones, many
vessels) had an empty chain -> all defaulted to "other" (heart organ->other;
scapula + both hip bones skeleton->other; 0 nerves);
- bare keyword "organ" matched generic ancestors ("organ zone", "cardinal organ
part"), so the iliotibial tract (fascia) was read as organ;
- "scapula" substring-leaked into "subscapularis"/"scapular".
tissue_of now classifies from the structure's own name + BOTH chains (is_a then
part_of, the latter recovering the ~500 chain-less structures), drops bare
"organ" (organs caught by viscera names + viscus/gland), expands bone/vessel/
organ name lists, adds a fascia tissue, and matches word-bounded for single
tokens. cockpit_bake::layer_of maps fascia -> connective.
Histogram: other 538->226, organ 166->284, bone 230->289, nerve 0->6,
fascia 0->19. Verified heart->organ, scapula/hip bone->bone, iliotibial->fascia,
levator scapulae->muscle, scapular artery->vessel, spinal cord->nerve. Unit test
covers word-boundary + priority + organ-restriction.
OBJ parts aren't in this checkout (fetch_data.sh), so fma_body.mesh was
re-tissued in place via node_row->fma->new-tissue->layer (geometry unchanged;
51,441/329,478 verts recolored); nodes.json + manifest regenerated. A full
re-bake with the OBJ parts reproduces the same tissues.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GJ4NVBSjq1w5h7RmTbVafb
|
Warning Review limit reached
More reviews will be available in 32 minutes and 59 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Two commits on the branch since #61 merged: the
/fma-bodytissue-classification fix and the research frontier-map doc.fix(fma)— tissue classification drift (2a7b388a)Reported: thigh band shown as organ, right scapula + both pelvis bones drifted skeleton→other, heart drifted organ→other, nerves missing.
Root cause:
converge::tissue_ofwalked only the is_a chain with greedy substring matching. But 527 of 1368 structures aren't in the is_a tree at all (heart, nerves, pelvis bones, many vessels) → empty chain → silentlyother. Separately, the bare keyword"organ"matched generic ancestors like"organ zone"/"cardinal organ part", so the iliotibial tract (fascia) was read as organ.Fix: classify from the structure's own name + both chains (is_a then part_of — part_of recovers the chain-less ~500 via their descriptive name), drop the greedy bare
"organ"(organs caught by viscera names +viscus/gland), expand the bone/vessel/organ name lists, add afasciatissue, and match word-bounded for single tokens so"scapula"(bone) can't leak into"subscapularis"/"scapulae"/"subscapular".cockpit_bake::layer_ofmapsfascia → connective.Verified against the real data — converge tissue histogram:
Spot-checked:
heart→organ,left scapula→bone,right hip bone→bone,iliotibial tract→fascia,levator scapulae→muscle,subscapular artery→vessel,spinal cord→nerve. A unit test locks the word-boundary + priority + organ-restriction logic.Viewer artifact: the OBJ parts aren't in this checkout (fetched via
fetch_data.sh), so rather than a full geometry re-bake I re-tissuedcockpit/public/fma_body.meshin place — the tissue is just a per-vertex color + layer(opacity) byte keyed bynode_row, sonode_row→fma→new-tissue→layer_ofrecolored 51,441 / 329,478 verts, geometry byte-identical;nodes.json+ the manifest layer histogram regenerated to match. The/fma-bodyviewer shows the fix after a cockpit redeploy; a full re-bake with the OBJ parts reproduces the identical tissues.docs(research)— frontier map (08912ef7)The 8-lens arxiv-grounded research fan-out (Systems/VSA/Ontology/NARS/Genomics/Coding-theory/AGI/Wildcard) on what the
(part_of:is_a)GUID stack enables, synthesized into a ranked[G]/[H]/[S]-graded map with arXiv-verified citations. Lands inclaude-notes/research/so it survives the ephemeral container.🤖 Generated with Claude Code
https://claude.ai/code/session_01GJ4NVBSjq1w5h7RmTbVafb
Generated by Claude Code