Homological Observability
This package provides tools for analyzing the recoverability of accumulated cycle histories in finite-state Markov jump processes.
A state snapshot records where a system is; its cycle history records the net circulation accumulated around the network. At finite temporal resolution, the same sequence of snapshots can hide different net windings, even when all transition rates are known. Longer observation adds both snapshots and history to recover. How rapidly must sampling improve to keep pace, and how can additional counters reduce that requirement?
The theoretical foundation is Stochastic Histories at Finite Temporal Resolution: Homological Observability and Information Phase Diagrams in Markov Jump Processes (paper DOI). The package also reproduces the paper's finite-model calculations.
Read the paper · Reproduce the calculations · Cite
Analyze your own network. Provide its transition graph and optional integer counter rules. Each counter accumulates signed integer increments on edge crossings. The software computes hidden cycle differences and their exposure layers, the corresponding asymptotic sampling requirements, and the information retained by different counter configurations. Use the command line or Python to obtain explanatory reports and exact integer evidence.
| Task | Inputs | Guide |
|---|---|---|
| Analyze your own network and observation scheme | Graph, optional counters and sampling parameters | analyze |
| Compare counter configurations | Several counter choices on one graph | compare |
| Construct a critical-limit experiment | Graph, optional counters, exact rates, critical layer and intensity | critical |
| Reproduce the paper's calculations | Included models and reference data | reproduce |
The graph must be finite, connected, and simple, with positive transition-rate support in both directions. The recording protocol uses regular noiseless state snapshots and optional exact counters. Network and counter analyses need no rate values. The critical experiment uses exact positive rates to compute path weights and limiting mark distributions.
Install
Use Python 3.11–3.13. In your working directory, create a virtual environment and install the package from PyPI:
python3 -m venv .venv
.venv/bin/python -m pip install homological-observability==1.2.0
The installation guide
includes Windows commands. On Windows, use
.venv\Scripts\homological-observability.exe in place of
.venv/bin/homological-observability below, and .venv\Scripts\python.exe
in place of .venv/bin/python. Activation is optional. Installation needs
internet access; examples and reference data are included in the package.
Try a counter comparison
A four-state ring and a seven-state ring are connected by a bridge. You can count signed crossings on either ring: which choice postpones the earliest remaining cycle-history ambiguity?
.venv/bin/homological-observability study-example bridge --output bridge-study.json
.venv/bin/homological-observability compare bridge-study.json --output-dir bridge-results
Open bridge-results/comparison.md. The study completes all six candidates;
three of its results are:
| Configuration | First hidden layer | Remaining hidden rank |
|---|---|---|
| Snapshots only | 2 | 2 |
| Counter x on the four-state ring | 4 | 1 |
| Counter y on the seven-state ring | 2 | 1 |
Counting the short ring postpones the first unresolved cycle direction to layer four. Counting the long ring leaves the earlier ambiguity in place. The two counters retain different information, even though each leaves one hidden direction. The study also shows that a weighted counter can tie a scalar objective without retaining the same information, and that a proportional extra channel is redundant.
The worked comparison
explains the hidden layers and the example's sampling law. COMPLETE records
the scope of the calculation; the report describes the remaining ambiguity.
The bundle contains structured results, exact witnesses, the input, and replay
instructions. Each run uses a new output directory.
Reproduce the paper evidence
.venv/bin/homological-observability reproduce --check --output-dir generated_results
This command regenerates the paper's finite-model calculations, compares them
with the packaged reference data, and writes generated_results/REPORT.md
and generated_results/companion_summary.png. For pinned dependencies
and the reader-side test suite, follow the
reproduction guide.
Analyze your own network
For one observation scheme, prepare my-model.json with your graph, optional
counter rules, and any sampling parameters. The
model input guide
explains the fields and includes a complete example. Run:
.venv/bin/homological-observability analyze my-model.json
To compare several counter configurations, adapt the bridge study.
Save a copy of bridge-study.json as my-study.json. Update the study and
model names, research question, graph, and candidate counters. Replace the
example's alpha: 0.375 with your own sampling exponent, or remove it for a
comparison of graph and counter information alone. Keep an explicit cycle
enumeration budget, then run:
.venv/bin/homological-observability compare my-study.json --output-dir my-results
The study editing guide
walks through these choices. The input guide
describes signed edge increments, sampling units, validation, and resource
limits. Every exported study also includes a model file for each candidate,
ready to inspect separately with analyze.
Python API
Run this with the virtual environment's Python interpreter:
import homological_observability as ho
study = ho.load_study_example("bridge")
comparison = ho.compare_configurations(study)
print(ho.render_comparison_text(comparison))
Use ho.load_study("my-study.json") for your own study. The
output guide
describes structured results and renderers, including single-configuration
analysis and rate-dependent critical experiments.
Interpretation and further reading
Integer lattice calculations and finite catalogues are exact when complete. Sampling thresholds, phase labels, and entropy coefficients describe long-time asymptotic limits under the stated model assumptions. Choosing a sampling interval for a specified finite-run error tolerance requires additional risk analysis. Cycle enumeration can grow exponentially; use computation budgets and check the reported completeness of each result.
- Overview and first study
- Scientific assumptions and research uses
- Integer layers and sampling: a worked two-loop example
- Rate-dependent critical experiments
- Changes by version
- Report an issue
Theory and citation
The paper map connects the software's calculations to the theoretical results and paper evidence.
Cite the paper for theoretical results and the software for computations. When your work uses both, cite them separately. The citation guide provides the full paper and software references and a copyable paper BibTeX entry. Record the software version used and the Git commit for a source checkout.
Authors: HongZheng Liu, YiNuo Tian, Zhiyue Wu, and Jianqun Cheng.
The software is distributed under the MIT License. The archived paper is licensed under CC BY 4.0.
Metadata
Release files for homological-observability 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| homological_observability-1.2.0.tar.gz | 342.2 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| homological_observability-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 446.2 kB
Release files / homological_observability-1.2.0.tar.gz
| Download URL | homological_observability-1.2.0.tar.gz |
|---|---|
| Size | 342.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fe5a091d17214cb5fe1d8c5e8a1eae9547f6e4fe1caa39915c3363de80706f9c
|
|
BLAKE2b-256 checksum How to use checksums |
dad138a0fe6ef0bd147da5e5b4d87a71d8a0fcd63e2a2340ee84b7a20700f514
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / homological_observability-1.2.0-py3-none-any.whl
| Download URL | homological_observability-1.2.0-py3-none-any.whl |
|---|---|
| Size | 104.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd6f79b2761e6aa69a8db6ebe64e87c936a0bef8808bc3d18c35a89fd4bdabec
|
|
BLAKE2b-256 checksum How to use checksums |
0a3d3be6a3c481cebef3d19e07666e0f0cfadd1098ae48d8bc6e5ad0506db601
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logSecurity for homological-observability 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for homological_observability-1.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.