#!/usr/bin/env python3 """Run the whole pressure pipeline: build -> split -> train -> evaluate -> infer. Default reproduces the documented 3h pressure model. Pass ``--window-hours 6`` to keep the 6h capability (not regenerated by default). """ from __future__ import annotations import argparse import subprocess import sys from pathlib import Path HERE = Path(__file__).resolve().parent def run(script: str, *args: str) -> None: command = [sys.executable, str(HERE / script), *args] print("\n$ " + " ".join(command), flush=True) subprocess.run(command, check=True) def main() -> None: parser = argparse.ArgumentParser(description="压力模型完整流水线") parser.add_argument("--window-hours", type=int, default=3) parser.add_argument("--skip-build", action="store_true") parser.add_argument("--skip-split", action="store_true") parser.add_argument("--skip-train", action="store_true") args = parser.parse_args() window = str(args.window_hours) if not args.skip_build: run("build_datasets.py", "--window-hours", window) if not args.skip_split: run("split_datasets.py", "--split-ratios", "6.5", "2", "1.5", "--seed", "20260921", "--positive-basis", "samples") if not args.skip_train: run("train_model.py", "--all-normal", "--rounds", "800", "--early-stopping-rounds", "50") run("evaluate_model.py") run("infer_and_combine.py") if __name__ == "__main__": main()