75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
# pyright: basic
|
|
import plotly.express as px
|
|
import pandas as p
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
p.options.plotting.backend = "plotly"
|
|
|
|
|
|
SHIELD_CERNOX = "LS336 CHD[K]"
|
|
BOTTOM_SCREWED_CERNOX = "LS336 CHB[K]"
|
|
TOP_SCREWED_CERNOX = "LS336 CHA[K]"
|
|
BOTTOM_SAMPLE_CERNOX = "LS218 CH8[K]"
|
|
TOP_SAMPLE_CERNOX = "LS218 CH1[K]"
|
|
|
|
CERNOXES = [
|
|
SHIELD_CERNOX,
|
|
TOP_SCREWED_CERNOX,
|
|
TOP_SAMPLE_CERNOX,
|
|
BOTTOM_SAMPLE_CERNOX,
|
|
BOTTOM_SCREWED_CERNOX,
|
|
]
|
|
SHIELD_CUTOFF_TEMP: float = 70.0
|
|
CERNOX_CUTOFF_TEMP: float = 25.0
|
|
|
|
|
|
def read_file(
|
|
filename: Path,
|
|
channels: list[str],
|
|
experiment_start: datetime | None = None,
|
|
experiment_end: datetime | None = None,
|
|
) -> p.DataFrame:
|
|
"""
|
|
Reads tab-separated file with measurement data, keeping only the columns with the specified header and the date.
|
|
"""
|
|
df = p.DataFrame(
|
|
p.read_csv(filename, sep="\t", index_col=False)[["date"] + channels]
|
|
)
|
|
df["date"] = p.to_datetime(df["date"], format="%Y-%m-%d_%H-%M-%S-%f")
|
|
if experiment_start:
|
|
df = df.loc[df["date"] >= experiment_start]
|
|
if experiment_end:
|
|
df = df.loc[df["date"] <= experiment_end]
|
|
df.set_index("date", inplace=True)
|
|
return df
|
|
|
|
|
|
def cleanup_query(
|
|
min_temp: float = 0, shield_cutoff: float = 70.0, probe_cutoff: float = 25
|
|
) -> str:
|
|
return f"""0 < `{SHIELD_CERNOX}` < {shield_cutoff} and \
|
|
0 < `{TOP_SCREWED_CERNOX}` < {probe_cutoff} and \
|
|
0 < `{BOTTOM_SCREWED_CERNOX}` < {probe_cutoff} and \
|
|
0 < `{TOP_SAMPLE_CERNOX}` < {probe_cutoff} and \
|
|
0 < `{BOTTOM_SCREWED_CERNOX}` < {probe_cutoff}"""
|
|
|
|
|
|
fg230 = read_file(
|
|
Path("FG230_monitoring.txt"),
|
|
CERNOXES,
|
|
experiment_start=datetime.fromisoformat("2025-04-29T14:32:00"),
|
|
experiment_end=datetime.fromisoformat("2025-04-29T15:45:00"),
|
|
).query(cleanup_query())
|
|
|
|
fg500 = read_file(
|
|
Path("FG500_monitoring.txt"),
|
|
CERNOXES,
|
|
datetime.fromisoformat("2025-05-30T10:30:00"),
|
|
datetime.fromisoformat("2025-05-30T11:32:00"),
|
|
).query(cleanup_query())
|
|
|
|
|
|
fg230.plot().show()
|
|
fg500.plot().show()
|