Logistic-map bifurcation
Parameter-dependent attractor structure
Figure not published yet — run the matching example and copy the resulting PNG.
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.
Installation takes one command. The official Lorenz benchmark provides parameter-ordered trajectories and an analytical Jacobian for a guided introduction.
python -m pip install pygdis==1.0.0 numpy pandas matplotlib scikit-learnPin package versions in your experiment environment file and record the Python version.
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.
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.
conda env create -f environment.yml
conda activate pygdis-tutorial
python -m pip checkKeep this environment separate from other projects such as CTCS.
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m pip checkpython -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.
Designed to work as both a classroom resource and a laboratory onboarding sequence.
Start with stable, periodic, bifurcating, and chaotic regimes; learn what a parameter sweep means.
Read the conceptual guideUse Lorenz and the logistic map to compare observed dynamics with reference behavior.
Run the example scriptsRestructure long-format measurements and troubleshoot common data issues.
Prepare a datasetContrast sustained instability, the transition component, and individual descriptors.
Explore interpretationTranslate independent GDIS profiles into features, then compare to ordinary statistical baselines.
View classification tutorialDesign leakage-safe evaluation, uncertainty analysis, controls, replication, and proper reporting.
Research checklistGDIS combines five complementary perspectives on dynamical behavior, then accounts for both persistent instability and localized descriptor changes.
Sensitivity to local state perturbations or a trajectory-derived divergence proxy when equations are unavailable.
Geometric expansion of neighboring trajectories and evolving state-space distances.
The spatial extent and expansion of the sampled dynamical state cloud.
An information-oriented view of changing trajectory structure.
The temporal character of the observed dynamics over the acquisition interval.
A parameter-indexed score, not a probability of failure and not a per-observation diagnostic label.
Φ = −ln(1 − Isustained) + λtItransition,base · GDIS = 1 − exp(−Φ). Default λt = 0.18 in v1.0.0.
These are candidate research workflows, not claims of domain-specific clinical or engineering validation. Each card identifies what to measure and what to validate.
Use controlled Lorenz, Rössler, or logistic sweeps and compare GDIS to reference bifurcations and Lyapunov analyses.
Analyze oscillatory sensor streams across operating loads; assess whether features predict independent equipment faults.
Explore parameter sweeps of frequency, voltage, or rotor-angle states; validate against recognized stability measures.
Compare dynamical regimes of simulated or recorded neural activity; control for artifacts, filtering, and subjects.
Explore multivariate trajectories under experimentally varied conditions, with appropriate biological replication.
Summarize an independent dynamical sweep as numerical features and test added value over strong raw-signal baselines.
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.
| parameter | time | x1 | x2 |
|---|---|---|---|
| 0.10 | 0.00 | 0.12 | 0.83 |
| 0.10 | 0.01 | 0.15 | 0.80 |
| 0.15 | 0.00 | 0.22 | 0.71 |
| 0.15 | 0.01 | 0.27 | 0.67 |
Numbers are illustrative; parameter groups must contain many time steps in real experiments.
# 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())Download complete, commented Python programs. Each creates CSV outputs plus publication-friendly PNG/PDF figures when run locally.
Generate a bifurcation diagram, time-series panels, GDIS and sustained-instability curves, plus a descriptor dashboard.
Download complete logistic-map script
Output: tutorial_output/
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/
python pygdis_logistic_tutorial.py --publish-static-dir ./figures
python pygdis_ml_classification.py --publish-static-dir ./figuresRun the scripts on your research workstation or HPC system. They save PNG and PDF files in their output directories; optionally publish the PNG versions to Django's static figure folder. Figures below appear only after real outputs have been copied to the web server. They are not precomputed claims.
Parameter-dependent attractor structure
Figure not published yet — run the matching example and copy the resulting PNG.
Time-series dynamics at selected parameters
Figure not published yet — run the matching example and copy the resulting PNG.
Bounded score and sustained-instability component
Figure not published yet — run the matching example and copy the resulting PNG.
Detailed normalized descriptors and transition evidence
Figure not published yet — run the matching example and copy the resulting PNG.
Raw baseline versus dynamical feature distributions
Figure not published yet — run the matching example and copy the resulting PNG.
Held-out ROC curves and confusion matrix
Figure not published yet — run the matching example and copy the resulting PNG.
Balanced accuracy across feature groups
Figure not published yet — run the matching example and copy the resulting PNG.
python pygdis_logistic_tutorial.py --publish-static-dir ./figures
python pygdis_ml_classification.py --publish-static-dir ./figures
# Then copy ./figures/*.png to your Django server:
# /var/www/mysite/pygdis_web/static/pygdis_hub/figures/
# Finally: python manage.py collectstatic --noinputpyGDIS 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.
# 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.A useful research hub should teach researchers how to challenge the method, not just how to run it.
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.
Primary sources, examples, mathematical documentation, and attribution.
For published research using pyGDIS, cite both the IEEE Access methods paper and the versioned Zenodo software record. These are separate scholarly outputs.
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.
Ismail, H. D., Harb, A., & Bikdash, M. (2026). pyGDIS: Generalized Dynamical Instability Score (Version 1.0.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22779275
These entries include only bibliographic fields verified from the institutional publication listing and the pyGDIS software citation file.
@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}
}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.
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.
Yes, as an engineered representation. Compare models using the same held-out samples and prevent normalization, subject and experiment leakage.
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.
Install the package, run the Lorenz quick start, explore the logistic-map script, then load a properly structured CSV dataset.