arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

catchaMouse16

CAnonical Time-series CHaracteristics for Mouse fMRI

The catchaMouse16 feature set provides a useful set of features to summarize the dynamics of fMRI time-series data, with implementations for Python, MATLAB, and C.

Details are in the following (open) journal publication

circle-check

Alam et al. "Canonical time-series features for characterizing biologically informative dynamical patterns in fMRI",arrow-up-right Aperture (2025).

hashtag
πŸ–οΈ Overview

  • A specific subset of 16 time-series features from the time-series feature library designed to distinguish changes in functional Magnetic Resonance Imaging (fMRI) time series taken from mice undergoing experimental manipulations of excitatory and inhibitory neural activity in their cortical circuits.

  • It is a collection of features that are generated from a general pipeline (which can be accessed ) applied to mouse fMRI time-series data taken from mice. This represents a high-performing but minimally redundant data-driven subset of the full library of hctsa features, that best discriminate biologically relevant manipulations (using the DREADD technique) from non-invasive fMRI time series.

hashtag
πŸ““ Reading more about the background to catchaMouse16

For information on the full set of over 7000 time-series features on which catchaMouse16 was derived, see the following (open) publications:

  • B.D. Fulcher and N.S. Jones. . Cell Systems 5, 527 (2017).

  • B.D. Fulcher, M.A. Little, N.S. Jones . J. Roy. Soc. Interface 10, 83 (2013).

The pipeline to reproduce to create the catchaMouse16 feature set is an adaptation of the general pipeline from C.H. Lubba, S.S. Sethi, P. Knaute, S.R. Schultz, B.D. Fulcher, N.S. Jones. . Data Mining and Knowledge Discovery (2019).

hashtag
⌨️ Installation

For C, MATLAB, and Python, the catchaMouse16 contains source code for building native binaries that can be called from these languages. You will need to download the source code, install (unix only), then follow the instructions below to build the binaries for your language.

For Julia users, these binaries have been for all platforms. You can use them by installing the package.

Compile by executing the makefile inside the catchaMouse16/C by running make.

Compute all the time-series features for some time-series data contained in <infile>.

If an <outfile is not provided then the output is sent to the stdout.

Access the efficient python implementation of feature-set by running the following code:

You can then test the features with

hashtag
β„Ή Feature Descriptions

Note: All catchaMouse16 features are statistical properties of the z-scored time series - they aim to focus on the properties of the time-ordering of the data and are insensitive to the raw values in the time series.

The table below follows the same cypher as in with the hctsa name and an interpretable name referred to throughout the paper with corresponding descriptions.

Interpretable name
Feature name
Description

The module is also available for python2:

You can then test the features with

The features are then accessible through a module which can be imported. Namely import catchaMouse16provides access to the features.

Open MATLAB, navigate to catchaMouse16/MATLAB/, and run mexAll. This brings the catchaMouse16 features into the namespace.

Individual features can be accessed as catchaMouse16_{feature}.

Installation:

Usage:

ami3_2bin

CO_HistogramAMI_even_2bin_ami3

Automutual information at lag 3 using a 2-bin histogram estimation method

increment_ami8

IN_AutoMutualInfoStats_diff_20_gaussian_ami8

Mutual information at time lag 8 using Gaussian estimator

dfa_longscale_fit

SC_FluctAnal_2_dfa_50_2_logi_r2_se2

Timescale–fluctuation curve using DFA

noise_titration

CO_AddNoise_1_even_10_ami_at_10

Automutual information at lag 1 after adding white noise at a SNR of 1

prediction_scale

FC_LoopLocalSimple_mean_stderr_chn

Change in

prediction error from a mean forecaster using prior windows of data

floating_circle

CO_TranslateShape_circle_35_pts_std

Variability of time-series points inside a circle translated across the time domain

walker_crossings

PH_Walker_momentum_5_w_momentumzcross

Statistics of a simulated mechanical particle driven by the time series

walker_diff

PH_Walker_biasprop_05_01_sw_meanabsdiff

Statistics of a simulated mechanical particle driven by the time series

stationarity_min

SY_DriftingMean50_min

Minimum mean across 50 segments divided by mean variance in segments

stationarity_floating_circle

CO_TranslateShape_circle_35_pts_statav4_m

StatAv of the statistics of local time-series shapes

outlier_corr

DN_RemovePoints_absclose_05_ac2rat

Change in lag-2 autocorrelation from removing 50% of the time-series values closest to the mean

outlier_asymmetry

ST_LocalExtrema_n100_diffmaxabsmin

Asymmetry in extreme local events

nonlin_autocorr_035

AC_nl_035

⟨xt2 xtβˆ’3 xtβˆ’6⟩t\langle x_t^2 \,x_{t-3}\, x_{t-6} \rangle_t⟨xt2​xtβˆ’3​xtβˆ’6β€‹βŸ©t​

nonlin_autocorr_036

AC_nl_036

⟨xt2 xtβˆ’3 xtβˆ’5⟩t\langle x_t^2\, x_{t-3}\, x_{t-5}\rangle_t⟨xt2​xtβˆ’3​xtβˆ’5β€‹βŸ©t​

nonlin_autocorr_112

AC_nl_112

⟨xt xtβˆ’12 xtβˆ’2⟩t\langle x_t\, x_{t-1}^2\, x_{t-2} \rangle_t⟨xt​xtβˆ’12​xtβˆ’2β€‹βŸ©t​

ami3_10bin

CO_HistogramAMI_even_10bin_ami3

./run_feat <infile> <outfile>
Terminal - Setup
python3 setup_P3.py build
python3 setup_P3.py install
hctsaarrow-up-right
herearrow-up-right
hctsa: A computational framework for automated time-series phenotyping using massive feature extractionarrow-up-right
Highly comparative time-series analysis: the empirical structure of time series and their methodsarrow-up-right
catch22: CAnonical Time-series CHaracteristicsarrow-up-right
Github repositoryarrow-up-right
gslarrow-up-right
pre-builtarrow-up-right
CatchaMouse16.jlarrow-up-right
the catchaMouse16 paperarrow-up-right

Automutual information at lag 3 using a 10-bin histogram estimation method

python3 test_features.py
Terminal - Setup
python2 setup.py build
python2 setup.py install
python2 test_features.py
Example usage
import catchaMouse16
import numpy as np
ts_data = np.rand(100,1)
print(catchaMouse16.SC_FluctAnal_2_dfa_50_2_logi_r2_se2(ts_data))
Example usage
ts_data = randn(100,1) % column vector
catchaMouse16_all(ts_data)
using Pkg
Pkg.add("CatchaMouse16")
using CatchaMouse16
X = randn(1000, 10) # an Array{Float64, 2} with 10 time series
f = catchaMouse16[:AC_nl_035](X) # a 1Γ—10 Matrix{Float64} (for a single feature)
F = catchaMouse16(X) # a 16Γ—10 FeatureMatrix{Float64} (for 16 features)