kushalkolar / MESmerize

Platform for Calcium Imaging analysis. DEPRECATED.
GNU General Public License v3.0
59 stars 14 forks source link

[FEATURE REQUEST] Add Rejected ROIs to the ROI Manager #51

Closed Bilalgp closed 2 years ago

Bilalgp commented 3 years ago

Is your feature request related to a problem? Please describe. Sometimes rejected ROI components generated by Caiman have activity of interest and easing the accept/reject threshold doesn't help. I sometimes like to see the rejected components.

Describe the solution or feature you'd like Would it be possible to add rejected components on the .hdf5 import in the ROI Manager?

Do you think this feature will be useful for a broad range of users or is it very specific to your problem or particular analysis method

Broad range since rejected components can still be of potential interest to other users.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

Additional context Add any other context, a diagram or screenshots about the feature request here.

kushalkolar commented 3 years ago

Hi @Bilalgp , thanks for the suggestion. Sorry I've been busy with other projects lately so I'll try to implement this at the end of next week, probably put it towards v0.6: https://github.com/kushalkolar/MESmerize/blob/master/CHANGELOG.md

EricThomson commented 3 years ago

I'm hopping on this train sort of late, but I do like this idea. In general, seeing the components corresponding to idx_components_bad is useful -- naively, this could behave similar to cnm.estimates.plot_contours() when the idx parameter is set to idx_components: one subplot is the "good" components and the second is the bad components -- if we could do this with the viewer in mesmerize that would be really cool.

On a related front, I think some kind of mesmerize-based real-time interface with cnm.estimates.filter_components() where you can change min_SNR and rval_thr and see the results of changing those parameters interactively could be very cool but also I assume not super easy to implement. I currently do this iteratively in Jupyter and it is helpful if slow.

kushalkolar commented 3 years ago

@EricThomson Thanks for the further describing the idea, it helps make it a bit clearer. If the computation time for cnm.estimates.filter_components() is fast it should be easy to create a viewer module to play with min_SNR and rval_thr. Otherwise a gridsearch which the user can manually go through. Most of mesmerize was created when caiman was younger so I'm not as familiar with some of the newer functions.

My time is a bit limited for the next 1-2 weeks, however we're open to contributions if you'd like to play around with creating a viewer module for this! If you install mesmerize from the current master branch you can follow the instructions here to create a plugin (press Ctrl + F5 if you don't see the example with the button).

http://docs.mesmerizelab.org/en/master/developer_guide/viewer_modules.html

Within this plugin, you can adapt import_cnmfe_into_viewer() from the CNMFE batch runner module to import the resulting cnmf objects: https://github.com/kushalkolar/MESmerize/blob/116936c812d0abd60bbfdf3895d03d0231977b73/mesmerize/viewer/modules/batch_run_modules/CNMFE.py#L325

EricThomson commented 3 years ago

Cool thanks I hadn't seen that. I will be working with exploring mesmerize more this week!

kushalkolar commented 2 years ago

@Bilalgp @EricThomson closing this since it's been incorporated in mesmerize-napari which will be ready for public use at the end of summer. You're welcome to try it out and use it however we are breaking things on a daily basis.

https://github.com/nel-lab/mesmerize-napari/pull/20

I currently don't have time to backport this to Mesmerize-pyqtgraph.