-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
latest API proposal #22
Comments
I think this is great...would need to make sure that |
In the implementation I actually made it so that |
For showing the dataframe we can instead use something like this instead of just list widgets: widgetti/ipyvuetify#71 |
Hi all, I slightly tested this and the latest API seems already quite good. Here are my notes as you asked Kushal: 1 - I tested it and for an initial visualization it worked well. However, I believe this could be improved also by adding some numeric labelling. In examples where more than 100 neurons are present, the bookeh is still more user friendly for verifying that all 'good' neurons are well deconvoluted. I think it could be very useful to also add a numeric slider for the neurons visualization. 2 - Also, I had the idea that could be interesting adding a feature of neuron removal/changing from good to bad indexes by visualization and deletion. 3 - I think it could also be useful to add a feature to open images other than created by mesmerize core also. I did not understood very well how to do that. In my current code I have been using mesmerize core lazy imports for things other than calcium analysis and to couple it with fastplotlib. Maybe it could be useful to separate the lazy imports in another small package by itself to use it as a dependency of fastplotlib? I have several other small points but that would be dependent on changes that I did to CaImAn itself so if I find them useful for overall users I'll post later. |
You could already do this yourself by creating a slider to go through components and use
Yes, haven't gotten around to doing this yet
Yes we've thought of this, if it happens it won't be for a few months but I think we're leaning in that direction now. I think there's a general use for a simple array interface for lazy loading or computing which is simpler than Dask (which is overkill for this purpose). |
Do you have any ideas for the kind of API you would like for this purpose? For example this would produce the follwing viz: row.cnmf.viz(
[
["mcorr", "temporal_stack"],
["temporal"]
],
... kwargs
) |
@kushalkolar I do not have a clear idea in mind yet, but in my mind, when I am using this visualization, I sometimes see bad components detected as good and most frequently good components detected as bad, even after tuning the quality parameters selection (because it depends on the recordings also). I would try to start adding some kind of buttons that would go bold also when clicking on neurons wither good or bad. When you clicked that button it would induce a deletion of that number from one of the arrays into the other. Coding wise, I would have to see if this is the easiest way, but it would be very straight forward. I can foresee problems in people that mistakenly click on buttons, so I would add a line of code to resave after visualization if the user wants. This way, it would only change the saved files if people actually trusted what they did. In summary:
|
The basics of this was done in #23 , leaving open until it's documented |
The API as merged in #28 is more or less final. |
I think we finally have enough from
mesmerize-core
andfastplotlib
, as well as user experience, to make an elegant API formesmerize-viz
(which I can probably write in a weekend).Basically, we make DataFrame and Series extensions for visualizations, to get rid of the common plotting code that is all over the current
mesmerize-core
demo nbs.For example for mcorr:
Similar for cnmf:
plots this (and the RCM too): https://user-images.githubusercontent.com/9403332/210027199-6e4ac193-6096-4d18-80d5-a41591ea4d4f.gif
Contours are automatically put on the rcm plot etc. and all contours and temporal are linked by default. Use "good" contours by default.
There are checkboxes allowing to choose if you want to view good, bad, or no contours. If they want to change colors or other stuff they have to access the graphics themselves.
We can also allow these to be called at the DataFrame level.
This makes a grid of all items in the dataframe:
This plots only one item but provides a dataframe widget to go through multiple batch items:
Potential dataframe widgets:
widgetti/ipyvuetify#71
https://github.com/mwouts/itables
❗ Need to determine if these also work with vaex and/or polars if we migrate away from pandas.
Signatures:
row.mcorr.viz
fastplotlib.ImageWidget
row.cnmf.viz
component_ixs
args (see below), could be done like "rcm.0", "rcm.1".str
,np.ndarray
, ordict
str
ornp.ndarray
, used forget_temporal()
,get_contours()
,get_rcm()
, etc.dict
, must be like{"rcm": "all", "contours": "good"}
. If there are multiple of the samedata
, can do{"rcm.0": "good", "rcm.1": "bad"}
caiman.get_input_movie()
fastplotlib.ImageWidget
The text was updated successfully, but these errors were encountered: