87 lines
2.4 KiB
Python
Executable file
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"])
|
|
)
|