main_script_virgo/sneb.py

87 lines
2.4 KiB
Python
Executable file

#!/usr/bin/env python3
from copy import deepcopy
from warnings import filterwarnings
from gettext import install
from logging import basicConfig, getLogger
from pathlib import Path
from rich.logging import RichHandler
from matplotlib.pyplot import figure, show
from backscattering_analyzer import Experiment, AcquisitionType, Sneb, Sweb, Sdb1, Sdb2 # pyright: ignore[reportMissingTypeStubs]
from backscattering_analyzer.bench import Bench # pyright: ignore[reportMissingTypeStubs]
from backscattering_analyzer.utils import fit_projection
from science_signal.signal import Signal # pyright: ignore[reportMissingTypeStubs]
install(__name__)
filterwarnings("error")
basicConfig(
level="INFO",
format="%(message)s",
datefmt="[%X]",
handlers=[RichHandler()],
)
logger = getLogger(__name__)
sneb: Bench = Sneb()
excited: Experiment = Experiment(
"2024_10_31", set([sneb]), Path("/home/demagny/data"), AcquisitionType.EXCITED
)
nb_point = 60000
cut_excited = Signal(
excited.sensitivity.data.x[:-nb_point],
excited.sensitivity.data.y[:-nb_point],
)
cut_movement = Signal(
excited.get_bench("SNEB").movement.x[:-nb_point],
excited.get_bench("SNEB").movement.y[:-nb_point],
)
excited.sensitivity.data = cut_excited
excited.get_bench("SNEB").movement = cut_movement
show_sensitivity = excited.sensitivity.data.psd().sqrt()
reference = Experiment(
"2024_10_31",
set([deepcopy(sneb)]),
Path("/home/demagny/data"),
AcquisitionType.REFERENCE,
)
if reference.sensitivity.data is None:
raise Exception(_("reference experiment does not have any sensitivity data"))
factors, diff = fit_projection(
excited,
reference,
)
excited.projection.scatter_factor = factors
excited.projection.compute()
projection = reference.sensitivity.data.psd().sqrt() + excited.projection.data
fig = figure(figsize=(20, 10))
fig.gca().loglog(show_sensitivity.x, show_sensitivity.y, label=_("excited sensitivity"))
fig.gca().loglog(
projection.x, projection.y, label=_("projection + reference sensitivity")
)
fig.gca().legend()
fig.gca().grid(True, "both")
fig.gca().set_xlim(5, 100)
fig.gca().set_ylim(10e-28, 10e-18)
fig.gca().set_title(_("SNEB"))
fig.gca().set_xlabel(_("frequencies (Hz)"))
fig.gca().set_ylabel(_("sensitivity ($\\frac{1} {\\sqrt {Hz}}$)"))
fig.savefig("SNEB.png")
with open("SNEB.csv", "w") as f:
f.write(
"""
# bench value
SNEB {}
""".format(factors["SNEB"])
)