Skip to content
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

Parallel load of vtp fiber bundles #144

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

pieper
Copy link
Contributor

@pieper pieper commented Nov 16, 2020

This is ready for testing. The feature is a bit rough and we should discuss how to better integrate it with the gui and what features to add. E.g. it needs a progress bar.

Currently you select a directory filled with .vtp files and it does the file reading and some of the mrml operations in dedicated threads.

Here's a comparison of the traditional load on the right and the parallel load on the left:

https://www.dropbox.com/t/Iw1RoZmavrq2Y3bb

This version does the xml reading in threads,
but updating the nodes is the time consuming
part that still takes place in main thread.
Greatly improves loading performance
@ljod
Copy link
Member

ljod commented Nov 18, 2020

Hi Steve. It looks like this works great. Our most common use case right now is loading a MRML file with fiber bundles, where the MRML file describes the atlas and/or gives colors for the bundles according to some information like statistics we have generated with some external analysis. So the use case where we load an unannotated directory directly is not so common. I still think this feature is great, but we may not use it currently. I wonder if we should integrate this as a start point? And consider applying this to MRML files later? Or do we want to avoid adding this button and instead put this deeper into Slicer as a general feature for multiple vtk/vtp loads wherever they occur?

@pieper
Copy link
Contributor Author

pieper commented Nov 18, 2020

@ljod yes, that's a good point. At this point this PR an experiment to see what we can do to split off some of the mrml loading from the main thread. Since it works this way we can think about how to generalize this to other storable mrml nodes. I suspect most could operate the same way but some may need work to be thread safe. Let me think about it. It would be best to do something that works for all Slicer data, but it might also be possible to do a mrml level solution that only works for dmri.

@pieper
Copy link
Contributor Author

pieper commented Nov 23, 2020

@ljod or @zhangfanmark where is an example of a mrml file with lots of tracts of the type you mentioned above?

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.

None yet

2 participants