Open research • pyGDIS 1.0.0 • Python 3.9+

From nonlinear data to research-ready insight.

A practical, open educational hub for students, engineers, and scientists using the Generalized Dynamical Instability Score. Learn the mathematics, analyze your own trajectories, engineer features for machine learning, and design reproducible validation studies.

5 descriptorsJ · S · A · H · T
0 ≤ score < 1Bounded instability representation
3 workflowsBenchmark · CSV · feature engineering
Research firstBaselines · uncertainty · external validation
01 / First steps

Run your first GDIS analysis

Installation takes one command. The official Lorenz benchmark provides parameter-ordered trajectories and an analytical Jacobian for a guided introduction.

Install

Set up a reproducible environment

Terminal — pinned package version
python -m pip install pygdis==1.0.0 numpy pandas matplotlib scikit-learn

Pin package versions in your experiment environment file and record the Python version.

Your first successful result

Run the built-in Lorenz sweep

Official public API — basic example
from gdis import GDIS
from gdis.benchmarks import LorenzSystem

system = LorenzSystem()
trajectories, parameters = system.generate_sweep()
result = GDIS().fit_transform(
    trajectories, parameters,
    jacobian_function=system.jacobian,
    critical_value=system.critical_value,
)
print(result.to_dataframe().head())
result.plot()

to_dataframe() returns a structured research table, while plot() provides the built-in visualization.

Setup / Reproducible research

Install a dedicated, versioned tutorial environment

Choose Conda on research workstations/HPC, or Python venv and pip. These are proposed dependency pins, not yet a fully certified cross-platform environment. Verify the scripts end to end before describing any setup as tested.

Recommended for HPC

Conda environment

Download environment.yml

Terminal
conda env create -f environment.yml
conda activate pygdis-tutorial
python -m pip check

Keep this environment separate from other projects such as CTCS.

Without Conda

pip with virtual environment

Download requirements.txt

Terminal
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m pip check

Verify packages before experiments

Terminal
python -c "import sys, numpy, sklearn, gdis; print('Python', sys.version.split()[0]); print('NumPy', numpy.__version__); print('scikit-learn', sklearn.__version__); print('pyGDIS imported successfully')"

Record python -m pip freeze, data versions, random seeds and train/test design in each research project. The ROC example below avoids unsupported styling arguments instead of relying only on version pinning.

02 / Guided curriculum

A learning path from fundamentals to publication-quality studies

Designed to work as both a classroom resource and a laboratory onboarding sequence.

01

Understand instability

Start with stable, periodic, bifurcating, and chaotic regimes; learn what a parameter sweep means.

Read the conceptual guide
02

Reproduce a benchmark

Use Lorenz and the logistic map to compare observed dynamics with reference behavior.

Run the example scripts
03

Analyze experimental CSV files

Restructure long-format measurements and troubleshoot common data issues.

Prepare a dataset
04

Study descriptor contributions

Contrast sustained instability, the transition component, and individual descriptors.

Explore interpretation
05

Build ML features

Translate independent GDIS profiles into features, then compare to ordinary statistical baselines.

View classification tutorial
06

Validate and publish

Design leakage-safe evaluation, uncertainty analysis, controls, replication, and proper reporting.

Research checklist
03 / Scientific foundations

What does pyGDIS measure?

GDIS combines five complementary perspectives on dynamical behavior, then accounts for both persistent instability and localized descriptor changes.

J

Local dynamical sensitivity

Sensitivity to local state perturbations or a trajectory-derived divergence proxy when equations are unavailable.

S

Trajectory stretching

Geometric expansion of neighboring trajectories and evolving state-space distances.

A

Attractor expansion

The spatial extent and expansion of the sampled dynamical state cloud.

H

Nonlinear complexity

An information-oriented view of changing trajectory structure.

T

Temporal persistence

The temporal character of the observed dynamics over the acquisition interval.

Output

Bounded GDIS profile

A parameter-indexed score, not a probability of failure and not a per-observation diagnostic label.

How the measure is assembled

DescriptorsJ, S, A, H, T
NormalizationRobust scaling
AggregationCore + modulation
TransitionLocalized variation
GDISBounded final score

Φ = −ln(1 − Isustained) + λtItransition,base  ·  GDIS = 1 − exp(−Φ). Default λt = 0.18 in v1.0.0.

04 / Applications explorer

Research directions across disciplines

These are candidate research workflows, not claims of domain-specific clinical or engineering validation. Each card identifies what to measure and what to validate.

Physics

Bifurcation and chaos

Use controlled Lorenz, Rössler, or logistic sweeps and compare GDIS to reference bifurcations and Lyapunov analyses.

Engineering

Vibration and condition monitoring

Analyze oscillatory sensor streams across operating loads; assess whether features predict independent equipment faults.

Energy

Power-system dynamics

Explore parameter sweeps of frequency, voltage, or rotor-angle states; validate against recognized stability measures.

Neuroscience

Neural dynamics

Compare dynamical regimes of simulated or recorded neural activity; control for artifacts, filtering, and subjects.

Biological systems

Cellular and ecological transitions

Explore multivariate trajectories under experimentally varied conditions, with appropriate biological replication.

Machine learning

Classification and prediction

Summarize an independent dynamical sweep as numerical features and test added value over strong raw-signal baselines.

05 / Data workflows

Bring your own measurements

The data-only workflow does not require governing equations. It requires parameter-ordered trajectories: every parameter corresponds to a time series with consistent observed state columns.

Required long-format CSV structure

parametertimex1x2
0.100.000.120.83
0.100.010.150.80
0.150.000.220.71
0.150.010.270.67

Numbers are illustrative; parameter groups must contain many time steps in real experiments.

Compute from arrays or use the official CSV example

Python — trajectory-only estimator
# Each trajectory is a 2D array: (time, observed_variables).
# The parameter values must correspond to the trajectory list.
from gdis import GDIS

result = GDIS().fit_transform(trajectories, parameters)
summary = result.to_dataframe()
summary.to_csv('gdis_results.csv', index=False)
print(summary.head())

Official complete CSV loader ↗

Data integrity: sort time within each parameter, retain comparable state variables, handle missing measurements explicitly, document sampling rate, and avoid pooling unrelated subjects into a single sweep.
06 / Practical laboratory

Reproducible notebooks-in-a-script

Download complete, commented Python programs. Each creates CSV outputs plus publication-friendly PNG/PDF figures when run locally.

Tutorial A · nonlinear dynamics

Logistic-map transition atlas

Generate a bifurcation diagram, time-series panels, GDIS and sustained-instability curves, plus a descriptor dashboard.

Download complete logistic-map script

Output: tutorial_output/

Tutorial B · predictive modeling

Dynamical features for classification

Construct independent synthetic sweep samples; compare a raw-data baseline with pyGDIS-only and combined logistic-regression models.

Download ML classification script

Output: ml_output/

Terminal — run either example
python pygdis_logistic_tutorial.py --publish-static-dir ./figures
python pygdis_ml_classification.py --publish-static-dir ./figures
Both examples are educational synthetic experiments. Their results must be generated by running the scripts; no accuracy, GDIS curve, or validated predictive benefit is asserted in advance.
07 / Machine learning

Turn dynamical instability profiles into useful features

pyGDIS is not itself a classifier. Instead, it produces interpretable descriptors that can become inputs to a supervised model when an independent dataset and meaningful labels are available.

Independent sweepsOne sample each
pyGDIS profilesComputed separately
Feature tableMean, max, variation
Train/test splitBy experiment/group
EvaluationBaseline comparison

Starter feature extraction

Python — one sweep to one feature record
# One independent parameter sweep -> one machine-learning sample.
from gdis import GDIS
import numpy as np

def sweep_features(trajectories, parameters):
    r = GDIS().fit_transform(trajectories, parameters)
    scores = np.asarray(r.gdis, dtype=float)
    return {
        'gdis_mean': float(scores.mean()),
        'gdis_max': float(scores.max()),
        'gdis_std': float(scores.std()),
        'gdis_range': float(np.ptp(scores)),
    }

# Fit the classifier on multiple *independent* sweeps.
# Split by experiment/subject/system BEFORE model selection.

Recommended experimental design

  1. Define labels and independent units before looking at results.
  2. Divide experiments, subjects, devices, or systems into training and test partitions.
  3. Compute features without learning from test labels or using test subjects for normalization.
  4. Fit scaling and classifier hyperparameters using training data only.
  5. Compare against time-domain, spectral, and established nonlinear-dynamics features.
  6. Report balanced accuracy, ROC-AUC where appropriate, confidence intervals, and calibration if probabilities matter.
  7. Repeat on a genuinely independent cohort or operating condition.
Important: pyGDIS descriptor normalization takes place across a parameter sweep. Do not casually split trajectories from the same sweep between training and test sets. If multiple sweeps share a subject or device, group those together as well.
08 / Research rigor

From demonstration to defensible evidence

A useful research hub should teach researchers how to challenge the method, not just how to run it.

Experimental and statistical checklist

  • Specify the scientific question and target endpoint.
  • Predefine the independent evaluation unit and reference controls.
  • Record software versions, data provenance, preprocessing and seed.
  • Conduct sensitivity analysis for parameter-grid density and time-series length.
  • Check noise robustness, missingness, and state-variable scaling.
  • Compare against Lyapunov, entropy, spectral, and simple statistical benchmarks.
  • Prespecify validation metrics and uncertainty estimation.
  • Identify any data-driven transition localization explicitly.

What a study may claim

Supported by a single synthetic example: the pipeline can run and visualize a known dynamical scenario.

Needs controlled benchmark evaluation: sensitivity to particular classes of transitions or robustness across simulation settings.

Needs independent application data: performance in patient data, industrial failure forecasting, or a novel field.

Avoid: describing GDIS as a calibrated risk probability, a proof of chaos, or a clinical diagnostic without independent evidence.

Research interpretation: GDIS is an exploratory or complementary dynamical measure, not a diagnosis, causality test, or universal early-warning guarantee. Compare against appropriate baselines, quantify uncertainty, and independently validate claims.
09 / Reference library

Everything needed to continue

Primary sources, examples, mathematical documentation, and attribution.

pyGDIS package on PyPIRelease information and verified quick-start API
Open package ↗
Source code, tests, and documented examplesOpen-source reference implementation under MIT license
Explore GitHub ↗
Official documentationInstallation, usage, mathematics, public API and applications
Read documentation ↗
Citation informationCite the IEEE Access paper and the versioned Zenodo archive
Citation formats ↗
Return to main pyGDIS overviewProduct introduction, installation, architecture and CSV workflow
Go to main page ↗
Research attribution / How to cite

Cite the scientific paper and pyGDIS software

For published research using pyGDIS, cite both the IEEE Access methods paper and the versioned Zenodo software record. These are separate scholarly outputs.

Research article

Generalized Dynamical Instability Score (GDIS)

Ismail, H., Harb, A., & Bikdash, M. (2026). Generalized Dynamical Instability Score (GDIS): A Framework for Quantifying Instability and Critical Transitions in Nonlinear Dynamical Systems. IEEE Access.

Read the paper on IEEE Xplore ↗

Journal page/volume numbers and article DOI are intentionally omitted until verified from the publication record.

Copy BibTeX for your bibliography

These entries include only bibliographic fields verified from the institutional publication listing and the pyGDIS software citation file.

BibTeX — article and archived software
@article{ismail2026gdis,
  author  = {Ismail, Hamid and Harb, Ahmad and Bikdash, Marwan},
  title   = {Generalized Dynamical Instability Score (GDIS): A Framework for Quantifying Instability and Critical Transitions in Nonlinear Dynamical Systems},
  journal = {IEEE Access},
  year    = {2026},
  url     = {https://ieeexplore.ieee.org/document/11733735}
}

@software{ismail2026pygdis,
  author  = {Ismail, Hamid D. and Harb, Ahmad and Bikdash, Marwan},
  title   = {pyGDIS: Generalized Dynamical Instability Score},
  year    = {2026},
  version = {1.0.0},
  doi     = {10.5281/zenodo.22779275},
  url     = {https://doi.org/10.5281/zenodo.22779275}
}
10 / Frequently asked questions

Common questions, answered

Do I need the governing differential equations?

No. The package supports data-only estimation through a trajectory-based divergence proxy. It is still important to check whether the proxy is meaningful for your measurements.

Can I calculate a separate GDIS score for every isolated patient recording?

The reference workflow evaluates parameter-ordered trajectory families; a single unstructured recording is not equivalent to a sweep. First define a scientifically meaningful parameter or experimental condition and an independent sampling design.

Can GDIS be used as a feature for random forests, SVMs or neural networks?

Yes, as an engineered representation. Compare models using the same held-out samples and prevent normalization, subject and experiment leakage.

Does a high GDIS value prove a system will fail?

No. It describes the framework's instability score on the supplied data and parameter domain. Any failure-prediction interpretation requires a validated outcome model and appropriate evidence.

Where should students start?

Install the package, run the Lorenz quick start, explore the logistic-map script, then load a properly structured CSV dataset.