Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
46779f7
Remove explicit calling of cuda processes
kushalbakshi Jul 12, 2024
a7d7fc9
VERSION (dev) to 1.11.5 after release
pgunn Jan 15, 2025
38dc06a
Fix typing errors in sbx_utils
ethanbb Jan 17, 2025
e63a98a
Add test for bidirectional SBX movie loading
ethanbb Jan 17, 2025
56bcb79
Don't modify or use recordsPerBuffer in sbx_shape
ethanbb Jan 17, 2025
7926044
Remove check for return value of tifffile.imwrite
ethanbb Jan 18, 2025
86ed5ab
Merge pull request #1452 from proektlab/sbx-framerate-fix
pgunn Jan 18, 2025
8090e27
Addresses #1454 using pyside6
pgunn Jan 22, 2025
db6ddac
volpy_gui: change import errors based on a stackoverflow suggestion
pgunn Jan 22, 2025
96d8a06
Add pyside6 to pyproject - so many places to update things!
pgunn Jan 24, 2025
d1236ec
Add workaround to fix pyqtgraph issue 2380
pgunn Jan 27, 2025
66120c7
volpy_gui: use limits keyword, which makes the menu actually work
pgunn Jan 27, 2025
6ef1051
If we're going qt6, let's go qt6. Fix plugin path
pgunn Jan 27, 2025
a663909
Change all np.Inf to np.inf
Jan 29, 2025
0f17607
Merge pull request #1457 from fdeguire03/dev
pgunn Jan 31, 2025
a41dc59
caiman.base.movies: Remove a number of methods that seem to be unused
pgunn Jan 31, 2025
244b081
Merge pull request #1458 from flatironinstitute/dev-cleanup_movie
pgunn Jan 31, 2025
8d69792
Forgot to add Kushal to the authors in pyproject
pgunn Feb 4, 2025
f89104a
Merge pull request #1455 from flatironinstitute/dev-volpy_qt6
pgunn Feb 5, 2025
98475bb
Forgot to update environment-minimal.yml for pyside6
pgunn Feb 5, 2025
f7d21de
demos: Don't use the useless return value to CNMF.fit()
pgunn Feb 7, 2025
54d4acb
Adjust the tests to not use return values from methods that should no…
pgunn Feb 7, 2025
383dcb8
cnmf.py:CNMF:fit() -- remove return value
pgunn Feb 11, 2025
6d40c41
CNNF:deconvolve() -- remove return value (and remove some old py2 code)
pgunn Feb 11, 2025
99810c7
CNMF: remove hals methods (unused in the codebase, broken code)
pgunn Feb 11, 2025
1dad866
CNMF: remove return value of update_temporal, update_spatial, initialize
pgunn Feb 11, 2025
35ff29a
Fix more stuff that used return value of cnmf.fit()
pgunn Feb 11, 2025
34d28c2
github tests: avoid defaults channel
pgunn Feb 11, 2025
b8bd582
demo_seeded_CNMF: remove useless assignment for estimates visualisati…
pgunn Feb 12, 2025
93d9abf
Add notes of cleanup need to online_cnmf, whitespace fix in movies
pgunn Feb 12, 2025
9bd0496
cnmf.estimates: Remove a lot of unnecessary "return self" from method…
pgunn Feb 12, 2025
8b1e380
Darned editor messed up my last diff
pgunn Feb 12, 2025
2314d2d
And another typo
pgunn Feb 12, 2025
ae2c50a
Add dependency versions to pyproject.toml
ethanbb Feb 26, 2025
c62c326
Add dev dependencies (for testing) plus some that were missing
ethanbb Feb 26, 2025
2c7e309
Move dev dependencies into main list
ethanbb Feb 26, 2025
45bf9e1
Merge pull request #1474 from proektlab/versions-in-pyproject
pgunn Feb 26, 2025
91aaf4b
Small improvements to function documentation in cnmf/temporal
pgunn Feb 27, 2025
b48c1a3
cnmf: Abort run if we get empty spatial components. Also small loggin…
pgunn Feb 27, 2025
4089c3e
Missed a bit of code in refit that relied on the return value of cnm.…
pgunn Feb 27, 2025
3d69f99
Fix more return value dependencies
pgunn Feb 27, 2025
c7d63df
CNMF and Estimates: add __str__, __repr__, __getitem__
pgunn Mar 4, 2025
86e63a0
CNMF.initialization.greedyROI() - Add a limited mechanism to specify …
pgunn Mar 4, 2025
963c260
Fix last diff; forgot to fix different var names after refactor
pgunn Mar 4, 2025
c090782
Update spatial.py
zyyk78 Mar 5, 2025
e1b5943
Plumb init args up to initialize_components()
pgunn Mar 14, 2025
b93f4c8
greedyROI param plumbing: update docs, get everything in a better shape
pgunn Mar 20, 2025
f4713d8
Merge pull request #1478 from flatironinstitute/more_params_for_nmf
pgunn Mar 25, 2025
f43dda9
Merge pull request #1464 from flatironinstitute/dev-fix_calling_conve…
pgunn Mar 26, 2025
0bc0aed
Handle cases where parameters end up with bad values for OnACID given…
pgunn Mar 26, 2025
66c73e7
Fix missing datafile concern in #1467
pgunn Apr 4, 2025
c38e761
Forgot to add avg_mask_fixed to list in caimanmanager
pgunn Apr 4, 2025
db988c1
seeded_CNMF notebook: Forgot a newline
pgunn Apr 4, 2025
aec3b0b
Merge pull request #1486 from flatironinstitute/fix_demo_seeded_notebook
pgunn Apr 8, 2025
a05c96b
Merge pull request #1485 from flatironinstitute/spot_bad_params_for_h…
pgunn Apr 9, 2025
8f0defc
Fix refactoring mistake I made in commit 38436e1
pgunn Apr 15, 2025
64dfbad
Adjust background check so if there are no components we don't prod a…
pgunn Apr 17, 2025
a3924fa
demo_pipeline_voltage_imaging.py: Save the demo data with other demo …
pgunn Apr 25, 2025
d524fbc
volpy: also have notebook put sample data same place the rest of caim…
pgunn Apr 25, 2025
d987e5e
Readme: more on env vars, install routes
pgunn May 8, 2025
7ac6fad
Readme: Fix formatting goof
pgunn May 8, 2025
28f7b4c
VERSION to 1.12.1 in dev
pgunn May 13, 2025
881e627
setup.py: Fix mistake in packaging new datafiles
pgunn May 13, 2025
8139127
VERSION to 1.12.2 after release
pgunn May 13, 2025
1a4f5de
fix: Resolve Python Logger warnings
emmanuel-ferdman May 14, 2025
fecb148
caiman/motion_correction: apply_shift_iteration() gets docs, MotionCo…
pgunn May 15, 2025
e56e493
Add some visibility methods to MotionCorrect
pgunn May 15, 2025
133215e
Update some deprecated uses of logger.warn()
pgunn May 15, 2025
575c3a3
Address another deprecation warning
pgunn May 15, 2025
490fba5
cnmf/deconvolution: ravel arguments to avoid warning/future API change
pgunn May 15, 2025
78b5c74
Merge pull request #1499 from flatironinstitute/scipy_ravel_fixes
pgunn May 15, 2025
47da899
Switch from the deprecated pkg_resources API to importlib
pgunn May 20, 2025
11ed9b8
Move from LooseVersion to packaging.version.Version to avoid deprecation
pgunn May 20, 2025
611f9a1
mrcnn: another move from deprecated version APIs
pgunn May 20, 2025
1d035ad
And fix a number of other import path deprecations visible through th…
pgunn May 20, 2025
72bdb4c
Merge pull request #1500 from flatironinstitute/switch_pkgresources_t…
pgunn May 20, 2025
80d986b
caimanmanager: remove convergencewarnings from what's displayed
pgunn May 20, 2025
05d7699
Fix docs for part of components_evaluation, cast types to deal with u…
pgunn May 20, 2025
05f7ffe
Merge pull request #1501 from flatironinstitute/unpack_oasis_call_and…
pgunn May 21, 2025
1dd5a00
Convert all uses of np.matrix to np.ndarray, coordinating with API di…
pgunn May 21, 2025
5de9bb0
Merge branch 'dev' into main
pgunn May 21, 2025
f7fc2d8
Merge pull request #1498 from emmanuel-ferdman/main
pgunn May 21, 2025
aba262d
make_G_matrix: make sure the ndarrays end up in the right shape
pgunn May 22, 2025
618bcab
Merge pull request #1502 from flatironinstitute/matrix_to_ndarray
pgunn May 27, 2025
cc602bd
caiman.source_extraction.cnmf.deconvolution.GetSn(): Simplify phrasin…
pgunn May 29, 2025
6d0c262
deconvolution.py: Fix a dumb goof
pgunn May 29, 2025
fe0d89f
Merge pull request #1506 from flatironinstitute/dev_simplify_getsn
pgunn May 30, 2025
1c95bb9
np.shape(obj) to obj.shape
pgunn Jun 3, 2025
960c4a4
Merge pull request #1508 from flatironinstitute/no_np_shape
pgunn Jun 3, 2025
e4667ce
spatial: fix bad docs on a few functions, remove dead code, otherwise…
pgunn Jun 4, 2025
522aa9c
Merge branch 'dev' into main
pgunn Jun 4, 2025
e971bae
Merge pull request #1481 from zyyk78/main
pgunn Jun 4, 2025
b587970
Merge branch 'main' of https://github.com/kushalbakshi/CaImAn
kushalbakshi Jun 18, 2025
54aa353
caiman_gui: Fix a crash relating to shiboken/Qt
pgunn Jun 18, 2025
1969522
Merge branch 'main' into main
kushalbakshi Jun 18, 2025
b8d398b
Add some usage notes to caiman_gui
pgunn Jun 18, 2025
68dbd81
caiman_gui: modernise qt to qt6 usage, fixes #1389
pgunn Jun 18, 2025
71c31f4
README: Accidentally had Cai in contributors section twice
pgunn Jun 18, 2025
47a9bc2
cnmf/params: note init_batch can't be bigger than frame count on firs…
pgunn Jul 2, 2025
60c3dde
environment.yml: fix misordering
pgunn Jul 2, 2025
684c91a
demo_pipeline_voltage_imaging: move memmap from hardcoding to parameter
pgunn Jul 2, 2025
6643371
Add str, repr, and getitem to onacid
pgunn Jul 11, 2025
30d59ee
Merge pull request #1511 from flatironinstitute/dev-add_str_repr_and_…
pgunn Jul 15, 2025
1ea1a0d
OnACID class: remove unused return value from fit_online(), CNMF clas…
pgunn Jul 16, 2025
90d94f9
Remove todo on removing return of self in OnACID.fit_online(); decide…
pgunn Jul 16, 2025
6419245
Merge pull request #1512 from flatironinstitute/dev-OnACID_no_return_…
pgunn Jul 17, 2025
587c4ba
environment.yml: add ipywidgets as dependency because we explicitly i…
pgunn Jul 17, 2025
bd18f10
Merge pull request #1514 from flatironinstitute/dev
pgunn Jul 17, 2025
3cd67b4
Merge branch 'flatironinstitute:main' into main
kushalbakshi Sep 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/run_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ jobs:
activate-environment: caiman
conda-solver: libmamba
miniforge-version: latest
channels: conda-forge
conda-remove-defaults: "true"

- name: Install OS Dependencies
shell: bash -l {0}
Expand Down
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ There are two primary ways to install Caiman.
The easiest route is to install the miniforge distribution of Anaconda, and use that to install the rest using prebuilt packages. Most users should take this path.

## Route B
The alternative route is to make sure you have a working compiler, create a python virtualenv, grab the caiman sources, and use pip to populate the virtualenv and build Caiman. This route is not as tested and is not presently documented; it is a standard pip-based install.
The alternative route is to make sure you have a working compiler, create a python virtualenv, grab the caiman sources, and use pip to populate the virtualenv and build Caiman. This route is not as tested and is not presently documented; it is a standard pip-based install (although it will invoke your C++ compiler to build some components).

# Quick start (Route A)
Follow these three steps to get started quickly, from installation to working through a demo notebook. If you do not already have conda installed, [you can find it here](https://github.com/conda-forge/miniforge). The miniforge distribution of conda is preferred; it will require fewer steps and likely encounter fewer issues. If you are using a different distro of conda, you will likely need to add `-c conda-forge` to the commands you use to make your environment.
Expand Down Expand Up @@ -62,6 +62,11 @@ Jupyter will open. Navigate to demos/notebooks/ and click on `demo_pipeline.ipyn

> `<your home>` in the first line is your home directory, its location depdnding on your OS/computer. On Linux/Mac it is `~` while on Windows it will be something like `C:\Users\your_user_name\`

# Quick Start (Route B)
This differs from the quick start above in two ways:
* For the first step only, go to [this doc](https://github.com/flatironinstitute/CaImAn/blob/main/docs/source/Installation.rst) and run through the parts of section 1B relevant to your operating system. After that, steps 2 and onward are the same
* You will probably want to manually set some environment variables before any use of caiman; see [here](https://github.com/conda-forge/caiman-feedstock/blob/main/recipe/activate.sh) for a Linux/OSX example, or [here](https://github.com/conda-forge/caiman-feedstock/blob/main/recipe/activate.bat) for a Windows example. Either make a note of this or modify your dotfiles/configuration to do it for you.

## For installation help
Caiman should install easily on Linux, Mac, and Windows. If you run into problems, we have a dedicated [installation page](./docs/source/Installation.rst). If you don't find what you need there, [create an issue](https://github.com/flatironinstitute/Caiman/issues) on GitHub.

Expand Down Expand Up @@ -163,7 +168,6 @@ Special thanks to the following people for letting us use their datasets in demo

Also a special thanks to:
* Eric Thompson, for various strong contributions to code and demos, both before and during his employment at the Flatiron Institute.
* Cai Changjia, for Volpy
* Ethan Blackwood, for several contributions in various areas

# License
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.11.5
1.12.2
37 changes: 27 additions & 10 deletions bin/caiman_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,23 @@
from caiman.source_extraction.cnmf.cnmf import load_CNMF
from caiman.source_extraction.cnmf.params import CNMFParams

##############################
# This is a tool that can help you visualise dumps of the CNMF object,
# generated as demonstrated in demo_pipeline.
#
# If you're already using it, that's fine, but there are better tools
# out there (such as the Mesmerize-vis package). To use, point it at the
# hdf5 file that CLI demo or jupyter notebook made, or have your own code
# call the save method on the CNMF object, and then feed that (and then the
# mmap file) into this script when it asks, and you'll see your ROIs and
# be able to experiment with thresholding (and re-save with those different
# thresholds).
#
# mesmerize-vis offers a better approach to these things, and is much more
# recent and better maintained.



# Always start by initializing Qt (only once per application)
app = QtWidgets.QApplication([])

Expand Down Expand Up @@ -66,7 +83,7 @@ def make_color_img(img, gain=255, min_max=None, out_type=np.uint8):
M = FileDialog()
d, f = os.path.split(cnm_obj.mmap_file)
cnm_obj.mmap_file = M.getOpenFileName(caption='Load memory mapped file',
directory=d, filter=f + ';;*.mmap')[0]
filter=f + ';;*.mmap')[0]

if fpath[-3:] == 'nwb':
mov = caiman.load(cnm_obj.mmap_file,
Expand Down Expand Up @@ -405,23 +422,23 @@ def move(event):


## PARAMS
params = [{'name': 'min_cnn_thr', 'type': 'float', 'value': 0.99, 'limits': (0, 1),'step':0.01},
{'name': 'cnn_lowest', 'type': 'float', 'value': 0.1, 'limits': (0, 1),'step':0.01},
{'name': 'rval_thr', 'type': 'float', 'value': 0.85, 'limits': (-1, 1),'step':0.01},
{'name': 'rval_lowest', 'type': 'float', 'value': -1, 'limits': (-1, 1),'step':0.01},
{'name': 'min_SNR', 'type': 'float', 'value': 2, 'limits': (0, 20),'step':0.1},
{'name': 'SNR_lowest', 'type': 'float', 'value': 0, 'limits': (0, 20),'step':0.1},
{'name': 'RESET', 'type': 'action'},
params = [{'name': 'min_cnn_thr', 'type': 'float', 'value': 0.99, 'limits': (0, 1), 'step':0.01},
{'name': 'cnn_lowest', 'type': 'float', 'value': 0.1, 'limits': (0, 1), 'step':0.01},
{'name': 'rval_thr', 'type': 'float', 'value': 0.85, 'limits': (-1, 1), 'step':0.01},
{'name': 'rval_lowest', 'type': 'float', 'value': -1, 'limits': (-1, 1), 'step':0.01},
{'name': 'min_SNR', 'type': 'float', 'value': 2, 'limits': (0, 20), 'step':0.1},
{'name': 'SNR_lowest', 'type': 'float', 'value': 0, 'limits': (0, 20), 'step':0.1},
{'name': 'RESET', 'type': 'action'},
{'name': 'SHOW BACKGROUND', 'type': 'action'},
{'name': 'SHOW NEURONS', 'type': 'action'}
{'name': 'SHOW NEURONS', 'type': 'action'}
]

## Create tree of Parameter objects
pars = Parameter.create(name='params', type='group', children=params)


params_action = [{'name': 'Filter components', 'type': 'bool', 'value': True, 'tip': "Filter components"},
{'name': 'View components', 'type': 'list', 'values': ['All','Accepted',
{'name': 'View components', 'type': 'list', 'limits': ['All','Accepted',
'Rejected', 'Unassigned'], 'value': 'All'},
{'name': 'ADD GROUP', 'type': 'action'},
{'name': 'REMOVE GROUP', 'type': 'action'},
Expand Down
5 changes: 3 additions & 2 deletions caiman/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#!/usr/bin/env python

import pkg_resources
import importlib.metadata

from caiman.base.movies import movie, load, load_movie_chain, _load_behavior, play_movie
from caiman.base.timeseries import concatenate
from caiman.cluster import start_server, stop_server
from caiman.mmapping import load_memmap, save_memmap, save_memmap_each, save_memmap_join
from caiman.summary_images import local_correlations

__version__ = pkg_resources.get_distribution('caiman').version
__version__ = importlib.metadata.version('caiman')
Loading
Loading