#!/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() excited: Experiment = Experiment( "2024_10_31", set([sdb1]), 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)]), 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")) fig.gca().set_xlabel(_("frequencies (Hz)")) fig.gca().set_ylabel(_("sensitivity ($\\frac{1} {\\sqrt {Hz}}$)")) fig.savefig("SDB1_mid.png") with open("SDB1_mid.csv", "w") as f: f.write( """ # bench value SDB1_mid {} """.format(factors["SDB1"]) )