feat: Add catmaid spatially indexed skeletons#122
Closed
afonsobspinto wants to merge 401 commits into
Closed
Conversation
07e8130 to
99925a7
Compare
2bc1268 to
4a6ba2e
Compare
ade13c6 to
5b74728
Compare
was previously directly setting global position without applying transform
previously the node position was being used to pretty directly set the mouse position. However, the node position is in model space. We need to transform this into render space, and then permute the axes to get to global space.
also perf, don't make new vec3/float arrays every time mouse moves
refactor/fix: add licenses, fix a broken test, rename and consolidate files
also indicate via comments diff paths and clear seg hasSelectedSegment
this allows us to be more maintainable. This bug stemmed from the isReady using a different path for chunk manage then the rendering did
fix: correct isReady check on spatial skeleton layers
feat: add saturation support and seg higlight to spatial skeleton render
fix: remove skeleton double rendering in browse pass
feat: add python state, remove uneeded functions, convert node type to enum
refactor: Deduplicate catmaid spatially indexed skeletons code
Member
Author
|
Closing as we opened a PR against upstream neuroglancer here |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a new CATMAID datasource for reading and writing skeletons in neuroglancer. These skeletons are a new kind of skeleton, a spatially indexed skeleton source. For rendering these skeletons, on each render frame we first draw a "browse" pass, followed by an "overlay" pass.
The browse pass is designed to provide lightweight skeleton context to the user without requiring full skeleton fetches. Data is retrieved in spatial chunks, where each chunk contains nodes within that AABB and direct children/parent nodes of edges intersection the edges of the AABB. The renderer performs fragment discarding to avoid duplicate rendering. Skeletons that will be rendered in the overlay are discarded during the browse pass. Below is an example browse pass result, with each chunk rendering in its own color:
The overlay pass renders complete skeletons on top of the browse data. A skeleton enters the overlay when it becomes visible in Neuroglancer, which signals the client to fetch the full skeleton. A fetched skeleton enables tree traversal in the "skeleton" tab, and rendering the complete skeleton independent of browse chunk coverage. Below is an example from the overlay in red, with the browse in gray, the side tab shows the skeleton traversal options:
Editing
Edits are supported for visible skeletons present in the overlay pass. Editing includes client-side undo/redo support and edit state synchronisation with CATMAID to detect conflicting multi-user edits. Edit actions include moving nodes, deleting nodes, adding nodes, merging skeletons, splitting skeletons, rerooting skeletons, and some property modifications on nodes (changing radius, confidence, description, and if the node is the true end of a branch or needs to be continued).
When an edit is made:
Trying this out
We have some documentation in the new user guides about setting up a CATMAID project for neuroglancer and using it as a data source. However, the easiest path if you want to serve something locally to try it is likely to follow the CATMAID docker guides.
Known issues
Plans
Outside of working on the known issues, we have ideas for the below:
Features
Planned changes and refactorings
skeleton/api.tsbut some leftovers of this remain which we want to remove.Ours only
regression_test.zip