-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add the ability to import skeletons #93
Comments
Skan is a pure Python library for skeleton analysis, may be relevant/useful for us some day. Shout out to @vigji for bringing it to my attention. They even have a guide on displaying 3D skeletons in napari. |
Out of curiosity, how come you don't consider anywhere in the current implementation of the For me it is important enough to deserve a dedicated entry in the pose xarray, what do you think? I could not track down a discussion on this, sorry if I missed it. |
I agree that skeletons are important; we had just neglected them when we first designed the data structure. I guess there are two questions to resolve: Skeleton Representation
Were you thinking of one of the above, or something else? In any case, the skeleton should be optional, in my opinion, because:
Loading SkeletonsI haven't given much thought to this, but I'll share some ideas off the top of my head.
Ultimately, "how to load skeletons" will depend on how we choose to represent them, so the two questions are interconnected. |
I think 0 sofistication is required here, and the minimal representation of list of edges is by far the most convenient one. Would not add the burden of dealing with a separate library dedicated to them, as I can't see the need for any fancy topological optimisation on skeleton operations, and everyone understands easily a list of nodes. Fully agree on not having it mandatory; I would indeed just add the option to have it passed as an argument, either row (list of lists) or via a config file (eg for DLC) from which it could be read. slp files should already contain it What do you think? |
I'm with you on keeping it simple. So an example skeleton could be: skeleton = [
("snout", "left_ear"),
("snout", "right_ear"),
("snout", "neck"),
("neck", "centroid"),
("centroid", "tail_base"),
("tail_base", "tail_end"),
] The above shows list-of-tuples, but list-of-lists should also be acceptable. We could have a function named The user could directly overwrite that attribute at any point, at their own risk. In |
We think the main use cases for the skeleton data would be:
|
For SLEAP we could have something like
load_skeleton.from_sleap_json()
Originally posted by @niksirbi in #88 (comment)
The text was updated successfully, but these errors were encountered: