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
@CNMFfor 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.mdemonstrates 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
Pas a fifth input argument ininitialize_components.m(default) - New initialization method
greedy_corrbased on the correlation image developed from PC Zhou @zhoupc To use it setoptions.init_method = 'greedy_corr' - New initialization method
HALSbased 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_listand passPas 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.mcan optionally takePas a fifth input argument for data normalization and/or user seeded initialization.extract_DF_F.mdoes not take as an input the neural activity signalSand it no longer producesS_dfas an output variable.- Better memory management from
update_spatial_compononents.mfor handling large datasets. - Faster implementation of
correlation_image.m,HALS_temporal.mandHALS_spatial.mfrom @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.mandupdate_temporal_components.mcan also accept as inputs memory mapped data files.- The output P of
preprocess_data.malso contains information about the power spectrum of each pixel and the classification of each pixel to active/inactive. plot_contours.mcan 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.mfor 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.manddetermine_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_componentsin 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_fftsuppresses 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.mthat was causing it to fail loading certain tiff files. - Better integration of the MCMC deconvolution method in
update_temporal_components. update_temporal_componentsandupdate_temporal_components_parallelare now combined into a single file, namedupdate_temporal_components. The choice is determined fromoptions.temporal_parallelwhich 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_componentstakes the input dataYras its first input and not the residualY_resupdate_temporal_componentsandupdate_temporal_components_parallelno longer produce the residualY_resas an output.