81 lines
2.3 KiB
Python
Executable file
81 lines
2.3 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__)
|
|
|
|
sdb1: Bench = Sdb1()
|
|
sdb2: Bench = Sdb2()
|
|
|
|
excited: Experiment = Experiment(
|
|
"2024_10_31", set([sdb1, sdb2]), 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(sdb1), deepcopy(sdb2)]),
|
|
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(_("SDB1 SDB2"))
|
|
fig.gca().set_xlabel(_("frequencies (Hz)"))
|
|
fig.gca().set_ylabel(_("sensitivity ($\\frac{1} {\\sqrt {Hz}}$)"))
|
|
fig.savefig("SDB1_SDB2.png")
|
|
with open("SDB1_SDB2.csv", "w") as f:
|
|
f.write(
|
|
"""
|
|
# bench value
|
|
SDB1 {}
|
|
SDB2 {}
|
|
""".format(factors["SDB1"], factors["SDB2"])
|
|
)
|