main_script_virgo/sweb.py

79 lines
2.2 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
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 # pyright: ignore[reportMissingTypeStubs]
install(__name__)
filterwarnings("error")
basicConfig(
level="INFO",
format="%(message)s",
datefmt="[%X]",
handlers=[RichHandler()],
)
logger = getLogger(__name__)
sweb: Bench = Sweb()
excited: Experiment = Experiment(
"2024_10_31", set([sweb]), Path("/home/demagny/data"), AcquisitionType.EXCITED
)
excited.projection.compute()
if excited.sensitivity.data is None:
raise Exception(_("no sensitivity"))
if excited.projection.data is None:
raise Exception(_("no projection"))
show_sensitivity = excited.sensitivity.data.psd().sqrt()
reference = Experiment(
"2024_10_31",
set([deepcopy(sweb)]),
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(_("SWEB"))
fig.gca().set_xlabel(_("frequencies (Hz)"))
fig.gca().set_ylabel(_("sensitivity ($\\frac{1} {\\sqrt {Hz}}$)"))
fig.savefig("SWEB.png")
with open("SWEB.csv", "w") as f:
f.write(
"""
# bench value
SWEB {}
""".format(factors["SWEB"])
)