Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
October 6, 2023 15:08
January 20, 2023 20:43
October 4, 2021 11:06
October 13, 2023 11:12
June 13, 2022 01:15
June 9, 2022 15:43
August 26, 2018 16:57
October 13, 2023 12:14

catch22 - CAnonical Time-series CHaracteristics



catch22 is a collection of 22 time-series features coded in C that can be run from Python, R, Matlab, and Julia, licensed under the GNU GPL v3 license (or later). The catch22 features are a high-performing subset of the over 7000 features in hctsa.

Features were selected based on their classification performance across a collection of 93 real-world time-series classification problems, as described in our open-access paper:

But what do the features do? You can learn more about what each feature does, with visualizations of how the features behave on real data, here.

The computational pipeline used to generate the catch22 feature set is in the op_importance repository.

For catch22-related information and resources, including a list of publications using catch22, see the catch22 wiki.

Summary of the performance of the catch22 feature set across 93 classification problems, and a comparison to the hctsa feature set (cf. Fig. 4 from our paper):

Installation: Python, R, Matlab, Julia, and compiled C

There are native versions of this code for other programming languages:

You can also use the C-compiled features directly or in Matlab, following the detailed installation instructions on the wiki.

Acknowledgement πŸ‘

If you use this software, please read and cite this open-access article:

Important Notes

  • When presenting results using catch22, you must identify the version used to allow clear reproduction of your results. For example, CO_f1ecac was altered from an integer-valued output to a linearly interpolated real-valued output from v0.3.
  • catch22 features only evaluate dynamical properties of time series and do not respond to basic differences in the location (e.g., mean) or spread (e.g., variance).
  • If the location and spread of the raw time-series distribution may be important for your application, you should apply the function argument catch24 = true (TRUE in R, True in Python) to your call to the catch22 function in the language of your choice. This will result in 24 features being calculated: the catch22 features in addition to mean and standard deviation.
  • Time series are z-scored internally (for features other than mean and standard deviation), which means that, e.g., constant time series will lead to NaN outputs.
  • Time-series data are taken as an ordered sequence of values (without time stamps). We assume an evenly sampled time series.
  • See language-specific usage information in the wiki.