Paper-aligned AMI and extension pAMI diagnostics for forecastability triage
Project description
Forecastability Triage Toolkit
A deterministic forecastability triage toolkit with AMI as the paper-aligned foundation and pAMI as a project extension.
This repository provides a deterministic triage workflow for deciding whether a time series shows exploitable structure before you commit to expensive model search. The maintained package facade exposes run_triage, run_batch_triage, analyzers, request/result models, config models, dataset helpers, and the scorer registry through forecastability and forecastability.triage.
Package And API Quickstart
Install the package surface:
pip install dependence-forecastability
Optional runtime extras:
pip install "dependence-forecastability[transport]"
pip install "dependence-forecastability[agent]"
Run one deterministic triage call through the top-level facade:
from forecastability import TriageRequest, generate_ar1, run_triage
series = generate_ar1(n_samples=300, phi=0.8, random_state=42)
result = run_triage(
TriageRequest(
series=series,
goal="univariate",
max_lag=20,
n_surrogates=99,
random_state=42,
)
)
summary = {
"blocked": result.blocked,
"readiness_status": result.readiness.status.value,
"compute_surrogates": None if result.method_plan is None else result.method_plan.compute_surrogates,
"forecastability_class": None if result.interpretation is None else result.interpretation.forecastability_class,
"primary_lags": [] if result.interpretation is None else list(result.interpretation.primary_lags),
}
print(summary)
Transport and runtime entry points:
| Surface | Entry point | Stability |
|---|---|---|
| Python facade | forecastability, forecastability.triage |
Stable |
| CLI | forecastability |
Beta |
| HTTP API | forecastability.adapters.api:app |
Beta |
| Dashboard | forecastability-dashboard |
Beta |
| MCP server | adapter surface | Experimental |
| Agent narration | adapter surface | Experimental |
Repository Workflow
If you are working in the repository rather than installing the package, start here:
uv sync
Canonical maintainer scripts:
| Script | Role |
|---|---|
scripts/run_canonical_triage.py |
Canonical single-series workflow |
scripts/run_benchmark_panel.py |
Benchmark-panel workflow |
scripts/build_report_artifacts.py |
Report artifact builder |
Secondary utilities:
scripts/download_data.pyscripts/run_exog_analysis.pyscripts/check_notebook_contract.pyscripts/rebuild_benchmark_fixture_artifacts.pyscripts/rebuild_diagnostic_regression_fixtures.py
Current config status:
| Config | Current role |
|---|---|
configs/benchmark_panel.yaml |
Active benchmark-panel configuration |
configs/canonical_examples.yaml |
Descriptive reference for canonical examples, not the root runner's only source of truth |
configs/interpretation_rules.yaml |
Reference thresholds for interpretation policy |
configs/benchmark_exog_panel.yaml |
Secondary exogenous benchmark workflow |
configs/exogenous_screening_workbench.yaml |
Secondary workbench configuration |
configs/robustness_study.yaml |
Secondary robustness-study workflow |
Notebook Path And Artifact Surfaces
The canonical notebook path is:
- docs/notebooks/README.md
- notebooks/walkthroughs/00_air_passengers_showcase.ipynb
notebooks/walkthroughs/01through04notebooks/triage/01through06for deep dives
Main checked-in artifact surfaces:
outputs/json/canonical_examples_summary.jsonand related canonical JSON outputsoutputs/tables/*.csvoutputs/reports/*.md
[!NOTE] Checked-in artifacts are reference outputs. They are useful examples of the output surface, but they should not be treated as guaranteed-fresh build products for the current working tree.
Statistical Notes
- AMI is computed per horizon rather than aggregated before computation.
- pAMI is a project extension and a linear-residual approximation, not exact conditional mutual information.
- Surrogate significance uses phase-randomized FFT surrogates with at least 99 surrogates and two-sided 95% bands.
- “Significance skipped” and “no significant lags” are different outcomes. Use
compute_surrogatesor the route choice to tell them apart. - In rolling-origin workflows, diagnostics are computed on the training window only.
- Phase surrogates can be conservative for strongly periodic series.
Documentation Map
| Need | Start here |
|---|---|
| Documentation index by role | docs/README.md |
| Stable imports and runtime entry points | docs/public_api.md |
| Live module layout | docs/code/module_map.md |
| HTTP API contract | docs/api_contract.md |
| Notebook path | docs/notebooks/README.md |
| Contributor workflow | docs/maintenance/developer_guide.md |
For the repository-wide docs map, see docs/README.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dependence_forecastability-0.2.0.tar.gz.
File metadata
- Download URL: dependence_forecastability-0.2.0.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99573db7b0fe1af4abfd25202769b16ec3681a37765cc55428fb9f97fcdf0f65
|
|
| MD5 |
c5d0c23ab4344d196dc053115f3c3856
|
|
| BLAKE2b-256 |
06e3698440664e24173b6b44448ab7f149bc6dff8039c280582cbb64dca67f3a
|
Provenance
The following attestation bundles were made for dependence_forecastability-0.2.0.tar.gz:
Publisher:
publish-pypi.yml on AdamKrysztopa/dependence-forecastability
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dependence_forecastability-0.2.0.tar.gz -
Subject digest:
99573db7b0fe1af4abfd25202769b16ec3681a37765cc55428fb9f97fcdf0f65 - Sigstore transparency entry: 1297571493
- Sigstore integration time:
-
Permalink:
AdamKrysztopa/dependence-forecastability@864bf5c04f2f533556e10cbecc1f637ef37bc87d -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/AdamKrysztopa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@864bf5c04f2f533556e10cbecc1f637ef37bc87d -
Trigger Event:
push
-
Statement type:
File details
Details for the file dependence_forecastability-0.2.0-py3-none-any.whl.
File metadata
- Download URL: dependence_forecastability-0.2.0-py3-none-any.whl
- Upload date:
- Size: 184.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac77b0c590ea22aa71d5ff8e4b18338a64960dbc313b81674f6209694ed3555a
|
|
| MD5 |
c06846c60279ea8b0b24acc102bcc2c8
|
|
| BLAKE2b-256 |
3919ceea56ab9fd031559a9bbe2c78fc684ed546280bd7bff5fe6f78a03e10e2
|
Provenance
The following attestation bundles were made for dependence_forecastability-0.2.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on AdamKrysztopa/dependence-forecastability
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dependence_forecastability-0.2.0-py3-none-any.whl -
Subject digest:
ac77b0c590ea22aa71d5ff8e4b18338a64960dbc313b81674f6209694ed3555a - Sigstore transparency entry: 1297571564
- Sigstore integration time:
-
Permalink:
AdamKrysztopa/dependence-forecastability@864bf5c04f2f533556e10cbecc1f637ef37bc87d -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/AdamKrysztopa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@864bf5c04f2f533556e10cbecc1f637ef37bc87d -
Trigger Event:
push
-
Statement type: