From 0db64c03ab54bd862f42a947290ec27e98679b66 Mon Sep 17 00:00:00 2001 From: linarphy Date: Tue, 4 Jun 2024 17:10:25 +0200 Subject: [PATCH] Small changes --- src/backscattering_analyzer/__init__.py | 30 ++++++++++++----- src/backscattering_analyzer/data.py | 41 +++++++++++++---------- src/backscattering_analyzer/experiment.py | 38 ++++++++++++++++++--- 3 files changed, 79 insertions(+), 30 deletions(-) diff --git a/src/backscattering_analyzer/__init__.py b/src/backscattering_analyzer/__init__.py index 2ee35dc..408fc00 100644 --- a/src/backscattering_analyzer/__init__.py +++ b/src/backscattering_analyzer/__init__.py @@ -16,7 +16,16 @@ def show_projection( Show projection data with matplotlib """ logger.debug(_("showing experiment result")) - from matplotlib.pyplot import loglog, show, legend, close, vlines + from matplotlib.pyplot import ( + loglog, + show, + legend, + close, + vlines, + title, + xlabel, + ylabel, + ) excited = experiment.signals["excited"].psd().sqrt() reference = experiment.signals["reference"].psd().sqrt() @@ -25,13 +34,14 @@ def show_projection( experiment.projection.y, label="projection", ) # type: ignore[ReportUnusedCallResult] - loglog(excited.x, excited.y, label="excited bench") # type: ignore[ReportUnusedCallResult] - loglog(reference.x, reference.y, label="reference bench") # type: ignore[ReportUnusedCallResult] + loglog(excited.x, excited.y, label=_("excited bench")) # type: ignore[ReportUnusedCallResult] + loglog(reference.x, reference.y, label=_("reference bench")) # type: ignore[ReportUnusedCallResult] loglog( (experiment.projection + reference).x, (experiment.projection + reference).y, - label="sum reference + excited", + label=_("sum reference + excited"), ) # type: ignore[ReportUnusedCallResult] + """ if start_frequency is not None: vlines( [ @@ -39,8 +49,8 @@ def show_projection( ], min(experiment.projection.y), max(experiment.projection.y), - color = 'k', - ) # type: ignore[ReportUnusedCallResult] + color="k", + ) # type: ignore[ReportUnusedCallResult] if end_frequency is not None: vlines( [ @@ -48,9 +58,13 @@ def show_projection( ], min(experiment.projection.y), max(experiment.projection.y), - color = 'k', - ) # type: ignore[ReportUnusedCallResult] + color="k", + ) # type: ignore[ReportUnusedCallResult] + """ legend() # type: ignore[ReportUnusedCallResult] + title(experiment.bench) # type: ignore[ReportUnusedCallResult] + xlabel(_("frequency (Hz)")) # type: ignore[ReportUnusedCallResult] + ylabel(_("stray ($\\frac{1} {\\sqrt {Hz}}$)")) # type: ignore[ReportUnusedCallResult] show() close() logger.debug(_("experiment result showed")) diff --git a/src/backscattering_analyzer/data.py b/src/backscattering_analyzer/data.py index 045fc55..76f02d4 100644 --- a/src/backscattering_analyzer/data.py +++ b/src/backscattering_analyzer/data.py @@ -90,6 +90,7 @@ def load_coupling( date: str, file: str, powers: dict[str, float], + model_powers: dict[str, float], ) -> list[Signal]: """ Load and correct coupling date from modelisation @@ -141,21 +142,27 @@ def load_coupling( ) ) - if bench in ["SDB1", "SDB2"]: - modelisation_signal[0] = ( - modelisation_signal[0] - * (powers["laser"] / 40) - * (powers["dark_fringe"] / 5e-6) ** (1 / 2) - ) # radiation - modelisation_signal[1] = modelisation_signal[1] * ( - powers["dark_fringe"] / 5e-6 - ) ** (1 / 2) # phase - elif bench in ["SWEB", "SNEB"]: - modelisation_signal[1] = ( - modelisation_signal[1] * powers["laser"] / 40 - ) # radiation - elif bench in ["SIB2", "SPRB"]: - logger.info( - _("cannot fix projection power for SIB2 and SPRB coupling") - ) + if model_powers["laser"] != 0: + if bench in ["SDB1", "SDB2"]: + modelisation_signal[0] = ( + modelisation_signal[0] + * (powers["laser"] / model_powers["laser"]) + * (powers["dark_fringe"] / model_powers["dark_fringe"]) + ** (1 / 2) + ) # radiation + modelisation_signal[1] = modelisation_signal[1] * ( + powers["dark_fringe"] / model_powers["dark_fringe"] + ) ** (1 / 2) # phase + elif bench in ["SWEB", "SNEB"]: + modelisation_signal[1] = ( + modelisation_signal[1] + * powers["laser"] + / model_powers["laser"] + ) # radiation + elif bench in ["SIB2", "SPRB"]: + logger.info( + _( + "cannot fix projection power for SIB2 and SPRB coupling" + ) + ) return modelisation_signal diff --git a/src/backscattering_analyzer/experiment.py b/src/backscattering_analyzer/experiment.py index f6a7661..cdae089 100644 --- a/src/backscattering_analyzer/experiment.py +++ b/src/backscattering_analyzer/experiment.py @@ -1,10 +1,9 @@ from pathlib import Path from tomllib import load -from numpy import argmin, float64, pi, log10 +from numpy import argmin, pi, log10 from numpy.core.function_base import logspace from numpy.core.multiarray import array -from numpy.typing import NDArray from science_signal import interpolate from science_signal.signal import Signal from backscattering_analyzer import logger @@ -221,6 +220,36 @@ class Experiment: ) logger.debug(_("movement processed")) + try: + correct_power = bool(values["dates"][date]["correct-power"]) + if correct_power: + model_powers = { + "laser": values["dates"][date]["coupling"]["laser"], + "dark_fringe": values["dates"][date]["coupling"][ + "dark_fringe" + ], + } + else: + model_powers = { + "laser": 0, + "dark_fringe": 0, + } + except KeyError as error: + print(error) + logger.warning( + _( + "cannot find if coupling values should be " + + "corrected due to the diff between power used in " + + "model and the real one. No correction will be " + + "applied" + ) + ) + correct_power = False + model_powers = { + "laser": 0, + "dark_fringe": 0, + } + try: self.coupling = load_coupling( data_folder, @@ -228,6 +257,7 @@ class Experiment: date, self.modelisation_file, self.powers, + model_powers, ) logger.debug(_("coupling signals successfully loaded")) except OSError: @@ -316,9 +346,7 @@ class Experiment: ) = self.get_factors(start=start_frequency, end=end_frequency) for index in range(precision): - logger.debug( - _("search for a local minimum") - ) + logger.debug(_("search for a local minimum")) x = logspace(log10(scatter_min), log10(scatter_max), 1000)