Releases: flatironinstitute/CaImAn-MATLAB
CaImAn-MATLAB
This release brings various bugs fixes and stability improvements together with some new features:
- Component classification using a pre-trained convolutional neural network. Visit the Wiki for more info.
- Inclusion of a new class object
@CNMF
for simplifying the analysis. See the demos demo_script_class.m and demo_patches_class.m for examples on how to use the class. - Better integration with the OASIS algorithm for fast deconvolution.
Migration to flatiron repo
This is just a release before migrating the code under the github repo of the Flatiron Institute.
Motion correction, big data handling, and GUI based component selection
This (pre)release brings several major improvements:
- Inclusion of non-rigid motion correction with the NoRMCorre package available here.
- A new pipeline for scalable analysis of large datasets. The script
run_pipeline.m
demonstrates how to execute a pipeline that consists of motion correction, source extraction and deconvolution. Datasets with length 100k frames can be end-to-end analyzed within a few hours on moderate multi-core machines. More details can be found here. - Inclusion of a graphical user interface (ROI_GUI.m) that performs post analysis classification of components by adjusting several intuitive thresholds based on the size of each components, and the inferred shape and trace. More features to come.
This release also serves as a snapshot of the code before its migration to the Simons Foundation github account.
Acknowledgements
Special thanks to J. Taxidis, UCLA, for providing the GUI.
Maintenance Release
New Features
- The dataset is normalized by the noise value before the initialization to deal with cell detection in the darker areas of the field of view. To use this feature pass
P
as a fifth input argument ininitialize_components.m
(default) - New initialization method
greedy_corr
based on the correlation image developed from PC Zhou @zhoupc To use it setoptions.init_method = 'greedy_corr'
- New initialization method
HALS
based only on constrained NMF iterations. To use it setoptions.init_method = 'HALS'
- The user can now seed the algorithm initialization by providing a K x 2 matrix with the centroids of the cells. To use this feature pass the centroid matrix as
P.ROI_list
and passP
as a fifth input argument ininitialize_components.m
- New plotting and post-processing tools through [
postProcessCNMF.m
]. Developed from W.Yang @NTCColumbia (https://github.com/epnev/ca_source_extraction/blob/master/postProcessCNMF.m) developed from W.Yang @NTCColumbia - New ordering method
order_components.m
Modifications
initialize_components.m
can optionally takeP
as a fifth input argument for data normalization and/or user seeded initialization.extract_DF_F.m
does not take as an input the neural activity signalS
and it no longer producesS_df
as an output variable.- Better memory management from
update_spatial_compononents.m
for handling large datasets. - Faster implementation of
correlation_image.m
,HALS_temporal.m
andHALS_spatial.m
from @zhoupc
Acknowledgements
Special thanks to Pengcheng Zhou @zhoupc and Weijian Yang @NTCColumbia for their contributions.
Maintenance Release
This release fixes a bug in run_CNMF_patches.m
and update_temporal_components.m
that was causing the algorithm to give incorrect results when running in patch mode. extract_DF_F.m
has also been modified to allow for multiple background components (thanks to @ingiehong ) and more options for calculating baseline fluorescence (percentile with or without running windows).
Handling of large datasets
New features
The main new feature with this release is the ability to handle large datasets through a memory mapping process and by processing the different spatially overlapping patches in parallel. This process is described is more detail in the wiki page. Several new functions are introduced for this:
memmap_file.m
: Save a tiff stack file as a matlab file that can be memory mapped. If the dataset is too large to load in memory, it can be read/saved in pieces.memmap_file_sequence.m
: Save a sequence of tiff files as a matlab file that can be memory mapped.construct_patches.m
: A simple function that determines the different spatial patches to be processed in parallel.
Another new feature is an unsupervised classifier for classifying the components into true and false. The classifier works by first classifying the observed voxels into active/inactive based on their power spectrum properties and then classifies the identified components as active when they significantly overlap with the set of active voxels.
Other changes
update_temporal_components.m
andupdate_temporal_components.m
can also accept as inputs memory mapped data files.- The output P of
preprocess_data.m
also contains information about the power spectrum of each pixel and the classification of each pixel to active/inactive. plot_contours.m
can accept precomputed coordinates for faster plotting.- Several bug fixes, and changes for performance improvement have been implemented.
Maintenance release
Main changes
- Introducing
manually_refine_components.m
for interactive component addition and removal after initialization. - Integration of handling 3d imaging data in various parts of the code including
initialize_components.m
,greedyROI.m
,HALS.m
,update_spatial_components.m
,threshold_components.m
,determine_search_location.m
. Full handling of 3d imaging data is still under testing. - Parallel implementation of
threshold_components.m
anddetermine_search_location.m
- Better estimation of temporal components and background when no initializer is present, e.g., when analyzing a new dataset with known spatial components.
- The noise image is used by default as a background image, since computation of the correlation image can become very expensive when the dataset is large.
Maintainance release
Description
This release introduces a simple GUI with the function plot_components_GUI.m
for viewing the extracted components. It also fixes the following minor issues:
update_spatial_components
in the demo file now also gives C as an output to fix a dimensionality mismatch bug occurring when spatial components were being removed because they were empty/too small.get_noise_fft
suppresses a warning signal occurring when the length of the traces was an odd number.
Contributors
@urslu and @fabiansinz for bug fixing and @agiovann for GUI implementation
bug fixing and improved integration
Main changes in this release:
- Fixed a bug in
bigread2.m
that was causing it to fail loading certain tiff files. - Better integration of the MCMC deconvolution method in
update_temporal_components
. update_temporal_components
andupdate_temporal_components_parallel
are now combined into a single file, namedupdate_temporal_components
. The choice is determined fromoptions.temporal_parallel
which by default chooses the parallel implementation if the parallel processing toolbox is present.
v0.3
This release introduces a new way for merging components that does not require the computation of the residual Y_res
, yielding significant gains in speed and memory requirements. The choice for using fast merging can be tuned from options.fast_merge which is set by default to 1. To enable this option the following changes have been made:
merge_components
takes the input dataYr
as its first input and not the residualY_res
update_temporal_components
andupdate_temporal_components_parallel
no longer produce the residualY_res
as an output.