https://github.com/eka38b/information_dynamics
Information-theoretic analysis of non-stationary time series
https://github.com/eka38b/information_dynamics
complex-systems information-dynamics information-theory mutual-information transfer-entropy
Last synced: 24 days ago
JSON representation
Information-theoretic analysis of non-stationary time series
- Host: GitHub
- URL: https://github.com/eka38b/information_dynamics
- Owner: Eka38b
- License: other
- Created: 2026-02-17T04:16:16.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-05-02T12:00:47.000Z (about 2 months ago)
- Last Synced: 2026-05-02T13:26:48.010Z (about 2 months ago)
- Topics: complex-systems, information-dynamics, information-theory, mutual-information, transfer-entropy
- Language: Python
- Homepage:
- Size: 965 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Citation: CITATION.cff
Awesome Lists containing this project
README
# Information Dynamics
[]([https://doi.org/10.5281/zenodo.20024405])
`Information_dynamics` is a Python repository for studying information-theoretic dynamics on networks. It provides two complementary ways to analyze evolving information flow:
- **model-based simulations**, where information measures are estimated from trajectories generated by stochastic or deterministic update rules; and
- **equation-based simulations**, where entropy, mutual information, transfer entropy, and reversed transfer entropy are evolved directly as dynamical variables.
The repository is intended as a general-purpose research codebase for testing information-flow mechanisms, exploring network examples, generating datasets, and reproducing manuscript figures when needed.
---
## Repository Structure
```text
Information_dynamics/
├── Core/ # Core classes and equations for information dynamics
├── on_Model/ # Model-based simulations and information-measure estimation
├── on_Equations/ # Direct evolution of information-theoretic variables
├── Utils/ # Plotting and estimator-checking utilities
├── Data/ # Archived outputs from selected simulations
├── Manuscripts/ # Manuscript-related materials, when included
├── requirements.txt
├── CITATION.cff
└── LICENSE
```
---
## Main Components
### `Core/`
Contains the main objects used throughout the repository, including information-network structures, model basics, and the dynamical equations for information-theoretic quantities.
### `on_Model/`
Contains examples in which an underlying system is simulated first. Entropy (`H`), mutual information (`MI`), transfer entropy (`TE`), and reversed transfer entropy (`rTE`) are then estimated from the generated data.
Use this module when you want to connect the information-dynamics framework to explicit stochastic, Boolean, probabilistic, or continuous-state models.
### `on_Equations/`
Contains examples in which the information-theoretic quantities themselves evolve directly through closed equations. No underlying trajectory data or estimator is required.
Use this module when you want to study intrinsic information dynamics, constrained information flow, stationary states, oscillatory behavior, or control-parameter effects.
### `Utils/`
Contains helper scripts for plotting simulation outputs and checking estimator behavior.
### `Data/`
Contains archived outputs generated by selected simulations. These files are useful for checking results without rerunning simulations and for reproducing figures associated with specific studies. See `Data/README.md` for details.
---
## Installation
Clone the repository and install the required Python packages:
```bash
git clone https://github.com/Eka38b/Information_dynamics.git
cd Information_dynamics
pip install -r requirements.txt
```
The code is intended to be run from the repository root using Python module execution.
---
## Basic Usage
Run model-based examples with:
```bash
python -m on_Model.001_Toy_Model_A.main
python -m on_Model.004_ABN_for_GRN.main
python -m on_Model.005_Three_Nodes_GRN.main
python -m on_Model.015_Boolean_Probability_Update.main
```
Run equation-based examples with:
```bash
python -m on_Equations.001_A_Single_Cycle.main
python -m on_Equations.002_Cycle_and_Source.main
python -m on_Equations.005_Oscillatory_Two_Cycles.main
```
Plot selected outputs with:
```bash
python -m Utils.plot_results --dir --links --keys
```
For example:
```bash
python -m Utils.plot_results \
--dir Data/on_Equations001/ \
--links A1 A2 A2 A3 A3 A4 A4 A5 A5 A6 A6 A7 A7 A8 A8 A1 \
--keys MI
```
---
## Typical Output
Simulation outputs are usually written as plain-text time series. Depending on the script, output files may include:
```text
*_H.txt
*_MI.txt
*_TE.txt
*_rTE.txt
*_E_values.txt
*.png
```
Model-specific scripts may produce additional files depending on the variables, links, estimators, or plotting options used in that example.
---
## Reproducibility Examples
The following commands reproduce representative archived outputs included in `Data/`.
### Boolean probability update model
```bash
python -m on_Model.015_Boolean_Probability_Update.main
```
### Oscillatory dynamics of two interacting cycles
```bash
python -m on_Equations.005_Oscillatory_Two_Cycles.main
```
### Small deviation from a stationary single cycle
```bash
python -m on_Equations.001_A_Single_Cycle.main
python -m Utils.plot_results \
--dir Data/on_Equations001/ \
--links A1 A2 A2 A3 A3 A4 A4 A5 A5 A6 A6 A7 A7 A8 A8 A1 \
--keys MI
```
### Transient dynamics with an external information source
```bash
python -m on_Model.001_Toy_Model_A.main
python -m Utils.plot_results \
--dir Data/on_Model001/ \
--links A1 A2 A2 A3 A3 A4 A4 A5 A5 A1 Ext A1 \
--keys TE2
```
---
## Citation
If you use this repository, please cite it using the metadata in `CITATION.cff`. If you use a specific archived release or dataset, cite the corresponding release DOI when available.
---
## License
The source code is distributed under the MIT License. See `LICENSE` for details.