kushalkolar / caiman-napari-prototype Goto Github PK
View Code? Open in Web Editor NEWprototype caiman plugin for napari
License: Apache License 2.0
prototype caiman plugin for napari
License: Apache License 2.0
Using a batch manager would probably be the most useful way to implement this. Mesmerize users like it a lot because it saves them time and helps with parameter optimization.
-> See if anyone has already made a batch/process manager for napari
pandas extensions should make it very easy to create a batch processor!
caiman
functionalities. This allows us to create dock widgets that can interact with the napari viewer. It's very similar to how dock widgets & plugins interact with the mesmerize
viewer, so we can probably just take the ui
files and param creation functions from mesmerize itself and put the various caiman
modules (NoRMCorr, CNMF etc.) each in tab widgets or similar.napari.qt.threading.thread_worker
, else use QProcess
like mesmerize
to run all the dview
stuff inside.@thread_worker
doesn't work, napari just hangs. QProcess
works well, probably a better solution anwywaysUser must open the movie using our plugin. With the napari
API, there is no way to get the originating file path for any image(s) that are currently open in the viewer. For now support the same image filetypes that are supported by caiman
. Allow the user to view these movies using lazy methods such as zarr
.
-> After we get basic functionality working, allow the user to open any arbitrary format that napari supports. In our plugin the user can specify the plugin to use to open the image. See plugin
kwarg in napari.Viewer.open().
-> Maybe add an attribute like origin_path
to napari.layers.Image
, might be useful for other napari devs.
User sets params for NoRMCorr
/CNMF(E)
in our plugin, adds this to a batch, repeats for all movies.
When the batch runs, the filepath is used to get each image and memmap files are created.
Similar to mesmerize
, the user clicks on a batch item to view its output
If the output is a motion corrected video, our plugin loads the memmap file for visualizing the movie in the viewer.
If the user wants to perform CNMF(E) on the motion corrected video, the same memmap file is used. Else a memmap file is created.
For CNMF(E) outputs, napari.layers.Shapes
is used to draw the ROIs. Rejected & accepted components in two separate layers.
-> Use pyqtgraph to show the traces? napari
doesn't have a way to plot timeseries data.
zarr
.From the grant's Policies section:
All new code must be released under a permissive open source license (MIT, BSD 2-Clause, BSD 3-Clause, or Apache v2.0). All pre-existing and derivative code must be licensed under the most permissive license possible, given the licensing terms of the pre-existing code.
Caiman is under GPL v2, will this be an issue if the plugin only interfaces with caiman?
Should we go with Apache 2.0?
If we can submit the prototype for the grant, I can add these features within a few days:
Add NoRMCorre with hard-coded params, use QProcess
just like for CNMF and put the mcorr video in a different layer within the napari viewer.
UI entry for for CNMF (can just use the same UI template file that exists in mesmerize).
Use a tab widget or stack widget where each page shows one of:
QTextBrowser
that just shows the stdout from running QProcesses
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.