Skip to content

intsystems/n_ode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

156 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dynamical systems time series classification

Code and experiments for a time series classifier built on the assumption that series of different classes are generated by distinct dynamical systems (ordinary or stochastic differential equations), whose noisy phase trajectories form the observed data.

Each series is assigned to the class whose dynamics best fit it. The theoretical classifier is asymptotically optimal under suitable noise conditions; in practice the intractable exact trajectories are replaced by conditional expectations from a smoothing problem and unknown vector fields are learned from data with Neural ODEs (NODE). Univariate series are lifted to a phase space via the Takens embedding.

See paper/node_classification_Semkin.tex for the full method and proofs.

Repository structure

.
├── experiment/       # empirical study (see below)
├── paper/            # LaTeX source of the paper and figures
├── diploma/          # thesis based on the paper
├── pyproject.toml    # dependencies (managed with uv)
└── uv.lock

Experiments

Each folder is a self-contained Snakemake pipeline (Snakefile + config.yaml) with field-learning and classification scripts. Results are tracked with MLflow.

Folder Task
linear_systems Classify three synthetic linear ODE systems; our classifier vs. k-NN+DTW and LSTM baselines across noise levels
linear_systems_sde Same task for the SDE version of the systems
basic_motions Human activity recognition from IMU (BasicMotions), ODE, with acceleration as a control variable
basic_motions_no_control Ablation of the above without the acceleration control
basic_motions_sde IMU activity recognition, SDE
basic_motions_sde_no_control SDE ablation without control
ecg5000 Heart failure detection from univariate ECG (ECG5000) via Takens embedding + NODE
toy Illustrative examples used for the paper's figures (close vector fields, noise, solver discrepancy)

Setup

Requires Python ≥ 3.12. Install with uv:

uv sync

Running an experiment

Pipelines are run from the repository root (paths in each Snakefile are root-relative), for example:

uv run snakemake -s experiment/linear_systems/Snakefile --cores 1

Authors

  • Kirill Semkin
  • Vadim Strijov

About

Neural ODE classification

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages