Skip to content

Releases: flatironinstitute/CaImAn-MATLAB

CaImAn-MATLAB

08 May 16:00
Compare
Choose a tag to compare

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

09 Nov 17:25
Compare
Choose a tag to compare

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

08 Feb 14:59
Compare
Choose a tag to compare

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

27 Jun 16:29
Compare
Choose a tag to compare
Maintenance Release Pre-release
Pre-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 in initialize_components.m (default)
  • New initialization method greedy_corrbased on the correlation image developed from PC Zhou @zhoupc To use it set options.init_method = 'greedy_corr'
  • New initialization method HALS based only on constrained NMF iterations. To use it set options.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 pass P as a fifth input argument in initialize_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 take P 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 signal S and it no longer produces S_dfas an output variable.
  • Better memory management from update_spatial_compononents.m for handling large datasets.
  • Faster implementation of correlation_image.m, HALS_temporal.m and HALS_spatial.m from @zhoupc

Acknowledgements

Special thanks to Pengcheng Zhou @zhoupc and Weijian Yang @NTCColumbia for their contributions.

Maintenance Release

28 Apr 18:43
Compare
Choose a tag to compare

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

11 Apr 19:29
Compare
Choose a tag to compare
Pre-release

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 and update_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

24 Feb 19:04
Compare
Choose a tag to compare

Main changes

  1. Introducing manually_refine_components.m for interactive component addition and removal after initialization.
  2. 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.
  3. Parallel implementation of threshold_components.m and determine_search_location.m
  4. Better estimation of temporal components and background when no initializer is present, e.g., when analyzing a new dataset with known spatial components.
  5. 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

03 Feb 16:36
Compare
Choose a tag to compare

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

28 Jan 19:42
Compare
Choose a tag to compare

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 and update_temporal_components_parallel are now combined into a single file, named update_temporal_components. The choice is determined from options.temporal_parallel which by default chooses the parallel implementation if the parallel processing toolbox is present.

v0.3

15 Jan 18:58
Compare
Choose a tag to compare

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 data Yr as its first input and not the residual Y_res
  • update_temporal_components and update_temporal_components_parallel no longer produce the residual Y_res as an output.