EIDA consistency checker: compare availability vs dataselect services and generate reports.
Project description
EIDA Consistency Checker
A tool to evaluate the consistency between EIDA nodes' availability and dataselect web services.
Designed for use in quality control and monitoring tasks across the European Integrated Data Archive (EIDA).
🚀 Installation & Quick Start
You can use eida-consistency in two ways:
Option 1: Using uvx
uvx eida-consistency <command> [options]
Option 2: Global install
uv tool install eida-consistency
Now it’s available globally:
eida-consistency <command> [options]
Update it with:
uv tool upgrade eida-consistency
🔍 CLI Commands
Run Consistency Check
Check if availability spans align with dataselect results:
uvx eida-consistency consistency --node RESIF --epochs 10 --duration 600
Options:
--node: Node code (e.g.RESIF,NOA,ETH)--epochs: Number of random test epochs (default: 10)--duration: Epoch length in seconds (≥600)--seed: Reproducible seed--delete-old: Keep only the most recent report--stdout: Print JSON report to stdout--report-dir: Save reports to a custom folder (default:reports/)--log-level: Control verbosity (DEBUG,INFO,WARNING,ERROR)
Compare Reports
Compare results across two runs with the same seed:
uvx eida-consistency compare reports/resif_run1.json reports/resif_run2.json
Explore Inconsistencies
Drill down into inconsistencies with day-by-day exploration:
uvx eida-consistency explore reports/nodes/noa/*.json --index 7 --days 15 --verbose
You can also use:
uvx eida-consistency explore --latest
to automatically use the newest report.
Manage Node List
Reload routing cache:
uvx eida-consistency reload-nodes
List currently cached nodes:
uvx eida-consistency list-nodes
📂 Reports
Reports are stored in ./reports/ by default, or in a custom folder using --report-dir.
- JSON reports:
reports/resif_<seed>.json - Markdown reports:
reports/resif_<seed>.md - Global summary:
summary.md
📚 Library Usage
You can also use eida-consistency as a Python library to run checks programmatically or build custom tools.
Check a Single Candidate
from eida_consistency.core.checker import check_candidate
# Define a candidate (network, station, channel, starttime)
candidate = {
"network": "GR",
"station": "ATH",
"channel": "BHZ",
"starttime": "2023-01-01T00:00:00",
}
# Run the check
results, stats = check_candidate(
base_url="http://node.eida.eu/fdsnws",
candidate=candidate,
epochs=5,
duration=600
)
for res in results:
url, available, start, end, loc, span = res
print(f"Time: {start} -> Available: {available}")
Run a Full Consistency Check
from eida_consistency.runner import run_consistency_check
# Run check for a specific node and get the report path
report_path = run_consistency_check(
node="NOA",
epochs=10,
duration=600
)
print(f"Report generated at: {report_path}")
For full API documentation, please visit our Documentation Site or run:
uv run mkdocs serve
🧪 Example Workflow
1. Run a check for NOA:
uvx eida-consistency consistency --seed 1234 --node NOA --epochs 20 --duration 600 --report-dir reports/test_noa
2. Explore incosistencies:
If inconsistencies are found:
uvx eida-consistency explore reports/nodes/resif/*.json --verbose
3. Apply fixes
Investigate the reported service inconsistencies and fix them at node level. Maybe use dmtri command suggested.
4. Re-run Consistency
uvx eida-consistency consistency --seed 1234 --node NOA --epochs 20 --duration 600 --report-dir reports/test_noa
5.Compare Before/After
uv run eida-consistency compare reports/test_noa/old.json reports/test_noa/new.json
📊 Global Consistency Summary
| Node | Epochs Requested | Epochs Usable | Total Checks | Consistent | Inconsistent | Score |
|---|---|---|---|---|---|---|
| BGR | 20 | 20 | 20 | 15 | 5 | 75.0 % |
| BGS | 20 | 11 | 11 | 6 | 5 | 54.55 % |
| ETH | 20 | 20 | 20 | 19 | 1 | 95.0 % |
| GEOFON | 20 | 20 | 20 | 20 | 0 | 100.0 % |
| KOERI | 20 | 20 | 20 | 10 | 10 | 50.0 % |
| LMU | 20 | 20 | 20 | 20 | 0 | 100.0 % |
| NIEP | 20 | 20 | 20 | 15 | 5 | 75.0 % |
| NOA | 20 | 20 | 20 | 16 | 4 | 80.0 % |
| RESIF | 20 | 20 | 20 | 20 | 0 | 100.0 % |
| UIB-NORSAR | 20 | 20 | 20 | 18 | 2 | 90.0 % |
📖 Full details: summary.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 eida_consistency-0.3.7.tar.gz.
File metadata
- Download URL: eida_consistency-0.3.7.tar.gz
- Upload date:
- Size: 151.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30811d8888bdd743b1fe4fbfdad1505fba05fb2fd189bbe321c8371ac2fc6932
|
|
| MD5 |
e73aefd3200032b4c4750e8e7dfdd59f
|
|
| BLAKE2b-256 |
3f879ea48174e89d564dc2ea207d8049d91a43286e7f9d60a86911f4bbac58fd
|
Provenance
The following attestation bundles were made for eida_consistency-0.3.7.tar.gz:
Publisher:
publish.yml on EIDA/eida-consistency
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
eida_consistency-0.3.7.tar.gz -
Subject digest:
30811d8888bdd743b1fe4fbfdad1505fba05fb2fd189bbe321c8371ac2fc6932 - Sigstore transparency entry: 844809185
- Sigstore integration time:
-
Permalink:
EIDA/eida-consistency@976c867e34778a6b3bf5895caeed20ff5d03b709 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/EIDA
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@976c867e34778a6b3bf5895caeed20ff5d03b709 -
Trigger Event:
push
-
Statement type:
File details
Details for the file eida_consistency-0.3.7-py3-none-any.whl.
File metadata
- Download URL: eida_consistency-0.3.7-py3-none-any.whl
- Upload date:
- Size: 35.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b901ea496039c38274c919406360f8a4fed21c2b008a53aabc190097cf9e65d4
|
|
| MD5 |
218984f7aa9b18076420a8357d695bff
|
|
| BLAKE2b-256 |
204992b3432dae3e98abdb38ac6ca15ad27fd895ae734c9413fa2383b0dd4ed5
|
Provenance
The following attestation bundles were made for eida_consistency-0.3.7-py3-none-any.whl:
Publisher:
publish.yml on EIDA/eida-consistency
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
eida_consistency-0.3.7-py3-none-any.whl -
Subject digest:
b901ea496039c38274c919406360f8a4fed21c2b008a53aabc190097cf9e65d4 - Sigstore transparency entry: 844809186
- Sigstore integration time:
-
Permalink:
EIDA/eida-consistency@976c867e34778a6b3bf5895caeed20ff5d03b709 -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/EIDA
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@976c867e34778a6b3bf5895caeed20ff5d03b709 -
Trigger Event:
push
-
Statement type: