Skip to content

feat: add manifest concept to skeleton API for level of indirection in by ID fetching - #251

Merged
seankmartin merged 22 commits into
feature/edit-modefrom
feat/skeleton-revise-api
Oct 19, 2026
Merged

seankmartin merged 22 commits into
feature/edit-modefrom
feat/skeleton-revise-api

Conversation

@seankmartin

@seankmartin seankmartin commented Oct 14, 2026 •

Copy link
Copy Markdown

This would allow future work to change from one full fragment per ID to many without
needing to change the complete file layout. Additional summary of what tried to do with core API with aim to have skeleton/api.ts pretty much final for this PR:

  1. Enable the manifest concept for future proofing. This also introduces fragments, and edges between fragments.
    Catmaid still has one fragment and one fetch.
  2. Make clear what spatial and not, to allow for precomputed and other by ID only sources in future.
  3. Normalise names in our API with existing neuroglancer names (chunks, not cells), signal direct param not inside
    options and also with existing concepts.
  4. Remove catmaid specific things that leaked into the generic API.
  5. Remove limited scope bounds, use coordinateSpace to describe the full model space instead.
  6. Remove lack of flexibility in node (vertex) attributes. Use an enum to describe the specially handled node
    attributes, and leave the rest as normal. Allows hooking these into the shader at a later date but that part not
    done yet as focus is on the API structure. Description remains separate as it is a string.
  7. Try write a few clariyfing comments in the API about the contract and expectations
  8. Remove levels allowed to be in any order, contract now expects them sorted. Catmaid now sorts within the
    datasource part itself.
  9. Make SkeletonNode fully readonly, matching rest of API.

As a way to stress test this API, it adds support for precomputed skeletons in the skeleton browser

seankmartin and others added 21 commits October 14, 2026 18:03
This would allow future work to change from one full fragment per ID to many without
needing to change the complete file layout
This is unsafe state manipulation being removed for this round of PR
Also includes a large refactor to clarify which parts are spatial specific and not. For
example, a skeleton node is not spatial, so gets pulled out of that path. This rename
causes a pretty large shift in the code and restructure.

Should also more reliably hide parts of the skeleton tab content when only in readonly.

While a big change, it should overall result in a clearer way forward for precomputed
and less duplication and hopefully clearer boundaries.
Also require spatial to be coarsest to finest for simplicity
This allows them to be used in shaders, and also more easily allows to extend the list
of known keys in the future and to support unknown or non-specially handled keys
Bounds have been introduced as part of the coordinateSpace metadata instead, so these
second bounds were a duplicate and could be a source of error.

Also allow confidence values to be optional, if not provided, we assume the datasource
can store 0 - 100 and doesn't use discrete bins for confidence
…mputed

feat, refactor: skeleton tab for precomputed skeletons
Previously the concept of being directed was not clear, and there were two ways to
indicate edges which then had to be resolved. Now a fragment source indicates if it is
directed, and gives the edges
@seankmartin
seankmartin added this pull request to stack #259 October 19, 2026 14:31
@seankmartin
seankmartin merged commit b87e4ea into feature/edit-mode Oct 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant