Skip to main content

Manifold Dimensional Expansion (MDE)


Manifold dimensional expansion is a causal discovery and dimensionality reduction technique designed to identify low dimensional maximally predictive observables of a dynamical system with multivariate observations.

The algorithm is based on a greedy implementation of the generalized Takens embedding theorem. However, instead of using time delays for dimensionality expansion, observables that improve the forecast skill of a target variable are added until no further improvement can be achieved. The default predictor is the simplex function in pyEDM providing a fully nonlinear predictor from Empirical Dynamic Modeling (EDM).

Specifically, given a target observable, scan all other observables to find the best 1-D predictor of the target, ensuring the predictor has causal inference with the target. With this 1-D vector scan all remaining observables to find the 2-D embedding with best predictability and causal inference. This greedy algorithm is iterated up to the point that no further prediction skill improvement can be produced.

Causal inference is performed by default with Convergent Cross Mapping (CCM) ensuring the added observable is part of the dynamical system of the interrogated time series. The embedding dimension needed for CCM is automatically determined if parameter E=0, the default. Otherwise the specifed value of E is used. To account for unobserved variables time delay vectors of the top observables can be added.

Output is a DataFrame with a ranked list of observation vectors and predictive skill satisfying MDE criteria for the target variable.


Installation

python -m pip install dimx

Documentation

Documentation is available at MDE Docs


Usage

MDE is an object-oriented class implementation with command line interface (CLI) support. CLI parameters are configured through command line arguments, MDE class arguments through the MDE class constuctor.

MDE can be imported as a module and executed with dimx.Run() or from the command line with theManifoldDimExpand.py executable as shown below.

CLI example:

./ManifoldDimExpand.py -d ../data/Fly80XY_norm_1061.csv 
-rc index FWD Left_Right -D 10 -t FWD -l 1 300 -p 301 600
-C 10 -ccs 0.01 -emin 0.5 -P -title "MDE FWD" -v

MDE class constructor API example:

from dimx import MDE
from pandas import read_csv

df = read_csv( './data/Fly80XY_norm_1061.csv' )

mde = MDE( df, target = 'FWD', 
           removeColumns = ['index','FWD','Left_Right'], 
           D = 10, lib = [1,300], pred = [301,600], ccmSeed = 12345,
           cores = 10, plot = True, title = "MDE FWD" )

mde.Run()

mde.MDEOut
  variables       rho
0      TS33  0.652844
1       TS4  0.792290
2      TS17  0.823024
3      TS71  0.840094
4      TS44  0.840958
5      TS37  0.845765
6       TS9  0.846601
7      TS30  0.859614
8      TS47  0.860541
9      TS67  0.860230

Metadata

Release files for dimx 1.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dimx 1.4.1
File Size Uploaded
dimx-1.4.1.tar.gz 416.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dimx 1.4.1
File Interpreter ABI Platform
dimx-1.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 825.2 kB

Release files / dimx-1.4.1.tar.gz

Download URL dimx-1.4.1.tar.gz
Size 416.4 kB
Tags Source
SHA-256 checksum
How to use checksums
efdf4b5e5f5bca4a541b03db4332762ee4b2128decf6288973dda23f85db155e
BLAKE2b-256 checksum
How to use checksums
142f89562afa6bc6120251a5024ee3e49150934172882bd132f455743b77794e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.6

Release files / dimx-1.4.1-py3-none-any.whl

Download URL dimx-1.4.1-py3-none-any.whl
Size 408.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89e747234841c1a54743f67c447897ab77152bbe16f1d6057ce4ab5e9129e944
BLAKE2b-256 checksum
How to use checksums
581d269ecb75f10683f392e7206be2f186505189dbd6cdd4664c893dc24d7405
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.6

Release history Release notifications | RSS feed

This release

1.4.1 This release

2 release files

1.2.0

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page