run_context.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """生成小时标签 + 前后 6 小时上下文波形 HTML。"""
  2. from __future__ import annotations
  3. import json
  4. import sys
  5. from pathlib import Path
  6. import pandas as pd
  7. ROOT = Path(__file__).resolve().parents[1]
  8. if str(ROOT) not in sys.path:
  9. sys.path.insert(0, str(ROOT))
  10. from _tmp_cylinder_vibration import config, context_html, hourly, review
  11. def main() -> None:
  12. frame = pd.read_csv(config.OUTPUT_DIR / "vibration_features_full_local.csv")
  13. frame["sample_time"] = pd.to_datetime(frame["sample_time"])
  14. intervals = pd.read_csv(config.OUTPUT_DIR / "vibration_intervals_full.csv")
  15. for column in ("start_time", "end_time", "max_time"):
  16. intervals[column] = pd.to_datetime(intervals[column], errors="coerce")
  17. baseline = json.loads((config.OUTPUT_DIR / "baseline_full.json").read_text(encoding="utf-8"))
  18. hourly_labels = hourly.build_hourly(intervals, frame)
  19. hourly_labels.to_csv(
  20. config.OUTPUT_DIR / "vibration_hourly_labels.csv",
  21. index=False,
  22. date_format="%Y-%m-%d %H:%M:%S",
  23. )
  24. print(f"[hourly] total={len(hourly_labels)}, confirmed={int(hourly_labels['confirmed'].sum())}")
  25. review_frame = review.build_review(hourly_labels, frame)
  26. review_frame.to_csv(
  27. config.OUTPUT_DIR / "label_review.csv",
  28. index=False,
  29. date_format="%Y-%m-%d %H:%M:%S",
  30. )
  31. print(f"[review] {len(review_frame)} rows -> label_review.csv")
  32. context_html.export_context(frame, intervals, hourly_labels, baseline)
  33. if __name__ == "__main__":
  34. main()