Pneuma_benchmark provides runnable benchmark code for aircraft pneumatic-system time-series experiments, including forecasting, classification, and anomaly-detection tasks.
The repository stores code, launch scripts, and small representative examples. Large raw data, generated compact caches, checkpoints, logs, and result workbooks are not tracked in git.
Install Python dependencies:
pip install -r requirements.txtDownload the public data package from Google Drive and extract it under the repository root:
data/
tsfile_datasets_subset10.zip
iotdb-2.0.2-lib/
Cache preparation needs a JDK with java and javac on PATH. It does not
require installing or starting an IoTDB server; the required TsFile reader jars
are included under data/iotdb-2.0.2-lib/.
Run a full smoke test:
bash scripts/reproduce/run_quickstart_smoke.shThe smoke test builds compact caches from the TsFile subset, then runs one small forecasting task, one classification task, and one anomaly-detection task.
The public data package is anonymized. Original flight filenames, aircraft registrations, flight numbers, routes, and dates are not preserved in the published filenames. Pseudo timestamps keep only the relative order needed for chronological train/validation/test splitting.
Normal and fault samples are identified by directory label:
tsfile_datasets/<dataset>_tsfile/0/*.tsfile # normal
tsfile_datasets/<dataset>_tsfile/1/*.tsfile # fault
During cache preparation, these directory labels are stored in each compact
.npz file as the labels array. Classification uses labels 0 and 1
directly. One-class anomaly detection trains on normal samples and evaluates
normal/fault separation.
The current foundation-model forecasting protocol uses:
- anchors:
predict_2_3,predict_4_5,predict_5_6,predict_8_9; - history count:
5; - input length:
5 * 80 + 60 = 460; - prediction length:
20; - loss:
(MAE + RMSE) / 2; - dataset score: average loss over the four anchors;
- main score:
100 / (1 + dataset_score).
The machine-readable protocol record is
examples/qar_context60/protocol_context60.json.
Build all compact caches for the current protocol:
bash scripts/reproduce/prepare_current_caches.shRun the public experiment launchers:
bash scripts/reproduce/run_current_main_forecast.sh
bash scripts/reproduce/run_current_hist_analysis.sh
bash scripts/reproduce/run_current_unimulti.sh
bash scripts/reproduce/run_current_classification.sh
bash scripts/reproduce/run_current_anomaly.shSee docs/QUICKSTART.md for setup details, scripts/reproduce/README.md for
launcher descriptions, and docs/DATASETS.md for dataset scenario names.
run.py: main training and evaluation entry point.requirements.txt: Python dependencies.data_provider/: compact-cache loaders and standard TSLib loaders.exp/: task implementations.models/,layers/,utils/: model definitions and shared utilities.scripts/reproduce/: current protocol launchers.scripts/classification/,scripts/long_term_forecast/,scripts/anomaly_detection/: lower-level task launchers.tools/prepare/: TsFile-to-compact-cache builders.tools/tsfile/: Java TsFile window-dumping helpers.tools/collect/: result table collectors.examples/qar_context60/: tiny representative caches and smoke examples.docs/: setup and dataset notes.
Generated caches are written under data/compact/, temporary extraction files
under data/work/, checkpoints under checkpoints/, logs under logs/, and
results under results/.
Some internal loader names, cache filenames, and legacy script names retain their original identifiers for compatibility with existing experiment scripts.