Separate napari image parameter to prevent magicgui slowdown #401
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.
Description
What is this PR
Why is this PR needed?
The problem is that when large images are open in napari, every time I try to edit a parameter (and I imagine - when the progress bar is updated), the gui freezes for a bit. After some testing I realized that every time any parameter updates, magicgui is processing something for all the parameters in the root widget. But, this processing takes particularly long for image parameters, especially for large images (maybe magicgui gets some image data?).
You can see this effect in the video where I change the num threads without and with images being open.
main branch with no images open:
main_no_image.mp4
main branch with an image open. You can see the lag:
main_with_image.mp4
What does this PR do?
This PR breaks out the signal and background inputs to their own magicgui containers. This somehow prevents this processing, because they are in their own container within the root parameter container, rather than directly in the root container. No idea why as I'm not familiar with qt/magicgui.
You can see the fix with this branch:
branch_with_image.mp4
References
None.
How has this PR been tested?
Tested by running the gui and the pipeline.
Is this a breaking change?
No
Does this PR require an update to the documentation?
No.
Checklist: