Better error when lock index is different in the same measurement

This commit is contained in:
linarphy 2025-07-12 22:56:06 +02:00
parent d4c7a367ae
commit a260856297
Signed by: linarphy
GPG key ID: 0CBF02E039B4FFFF

View file

@ -2,10 +2,12 @@ from astropy.units import (
Quantity, Quantity,
W, # pyright: ignore[reportAttributeAccessIssue] W, # pyright: ignore[reportAttributeAccessIssue]
mW, # pyright: ignore[reportAttributeAccessIssue] mW, # pyright: ignore[reportAttributeAccessIssue]
s, # pyright: ignore[reportAttributeAccessIssue]
Unit, Unit,
) )
from astropy.units.physical import time from astropy.units.physical import time
from gwpy.time import Time from gwpy.time import Time, from_gps
from numpy import array, where
from ..component import Component from ..component import Component
from ..lockingstate import LockingState from ..lockingstate import LockingState
@ -99,10 +101,27 @@ class MeasurementFactory:
frame="trend", frame="trend",
force_virgotools=force_virgotools, force_virgotools=force_virgotools,
) )
if sum(data["V1:META_ITF_LOCK_index"].diff().abs()) != 0: state_data = data["V1:META_ITF_LOCK_index"].data.astype(int)
raise Exception( if sum(state_data.diff().abs()) != 0:
"The state of the interferometer change in this measurement" indexes = where(array(state_data.diff().data) != 0)[0]
times_change = (
data["V1:META_ITF_LOCK_index"].t0
+ indexes * data["V1:META_ITF_LOCK_index"].dt
) )
message = (
"state of the interferometer changed in '{}'".format(
name
)
)
for i in range(len(indexes)):
time_change = times_change[i]
index = int(indexes[i])
message += "\nat {}, from {} to {}".format(
from_gps(time_change.to(s).value),
LockingState(state_data[index]).name,
LockingState(state_data[index + 1]).name,
)
raise Exception(message)
state = LockingState(data["V1:META_ITF_LOCK_index"].data[0]) state = LockingState(data["V1:META_ITF_LOCK_index"].data[0])
injection_power = data["V1:INJ_IMC_TRA_DC_mean"].mean() injection_power = data["V1:INJ_IMC_TRA_DC_mean"].mean()
dark_fringe_power = data["V1:DET_B1p_DC_mean"].mean() dark_fringe_power = data["V1:DET_B1p_DC_mean"].mean()