From 22ae5f192b88ba856d6ddf30f0b4b3d371e91700 Mon Sep 17 00:00:00 2001 From: linarphy Date: Tue, 18 Jun 2024 16:27:01 +0200 Subject: [PATCH] Add script to compute and display projection --- display.py | 179 +++++++++++++++++++++++++++++++++++++++++++ values-coupling.toml | 52 +++++++++++++ values.toml | 56 ++++++++++++++ 3 files changed, 287 insertions(+) create mode 100755 display.py create mode 100644 values-coupling.toml create mode 100644 values.toml diff --git a/display.py b/display.py new file mode 100755 index 0000000..c19317a --- /dev/null +++ b/display.py @@ -0,0 +1,179 @@ +#!/usr/bin/env python3 + +from gettext import install +from backscattering_analyzer.display import show_projection # type: ignore[reportMissingTypeStubs] +from backscattering_analyzer.experiment import Experiment # type: ignore[reportMissingTypeStubs] +from logging import basicConfig, getLogger +from rich.console import Console +from rich.theme import Theme +from rich.logging import RichHandler +from warnings import filterwarnings +from command_parser.flag import Flag # type: ignore[reportMissingTypeStubs] +from command_parser.value import Value # type: ignore[reportMissingTypeStubs] +from command_parser.parser import parse # type: ignore[reportMissingTypeStubs] +from sys import argv +from importlib.metadata import version + +install(__name__) + +filterwarnings("error") + +flags = [ + Flag("help"), + Flag("version", single_char="V"), + Flag("verbose"), + Flag("full"), +] +values = [ + Value("date", "2023_03_24"), + Value("bench", "SDB1"), + Value("file", "values.toml", single_char="F"), + Value("vibration-frequency", "0.2"), +] +parse(" ".join(argv[1:]), flags, values) + +if flags[0].value: + theme = Theme( + { + "main": "white bold", + "option": "grey50 italic", + "argument": "red", + "description": "green italic", + } + ) + console = Console(theme=theme) + help = ( + "[main]display[/main] [option]\\[options][/option]" + "\n [argument]-b --bench[/argument] [description]bench of the experiment[/description]" + "\n [argument]-d --date[/argument] [description]date of the experiment[/description]" + "\n [argument]-h --help[/argument] [description]print this help and exit[/description]" + "\n [argument]-f --full[/argument] [description]run experiment with all benches with all dates[/description]" + "\n [argument]-F --file[/argument] [description]file containing all the parameters values (toml file)[/decription]" + "\n [argument]-v --verbose[/argument] [description]be verbose[/description]" + "\n [argument]-V --version[/argument] [description]print version number and exit[/description]" + ) + console.print(help) + exit(0) + +if flags[1].value: + version = ( + "Versions\n" + "numpy {numpy}\n" + "scipy {scipy}\n" + "matplotlib {matplotlib}\n" + "science_signal {science_signal}\n" + "backscattering_analyzer {backscattering_analyzer}\n" + "command_parser {command_parser}\n" + "script 0.1.0\n" + ).format( + numpy=version("numpy"), + scipy=version("scipy"), + matplotlib=version("matplotlib"), + science_signal=version("science_signal"), + backscattering_analyzer=version("backscattering_analyzer"), + command_parser=version("command_parser"), + ) + console = Console() + console.print(version) + exit(0) + +if flags[2].value: + level = "DEBUG" +else: + level = "INFO" + + +basicConfig( + level=level, + format="%(message)s", + datefmt="[%X]", + handlers=[RichHandler()], +) + +logger = getLogger(__name__) + +if flags[3].value: + logger.debug(_("loading every experiments")) + experiments: list[Experiment] = [] + results: dict[str, float | None] = dict({}) + for bench in ["SDB1", "SDB2", "SNEB", "SWEB"]: + if bench in ["SDB1", "SDB2"]: + experiment = Experiment( + bench, + "2023_03_24", + values[2].value, + float(values[3].value), + ) + if bench == "SDB1": + start_frequency, end_frequency = 12.5, 30 + else: + start_frequency, end_frequency = 40, 50 + experiment.factors = experiment.fit_factors( + start_frequency=start_frequency, + end_frequency=end_frequency, + ) + results[ + "{bench}-{date}".format( + bench=bench, + date="2023_03_24", + ) + ] = experiment.factors["true"] + elif bench == "SNEB": + for date in ["2023_03_24", "2024_01_21"]: + experiment = Experiment( + bench, + date, + values[2].value, + float(values[3].value), + ) + experiment.factors = experiment.fit_factors( + start_frequency = 15, + end_frequency = 100, + ) + results[ + "{bench}-{date}".format( + bench=bench, + date=date + ) + ] = experiment.factors["true"] + else: # bench == SWEB + for date in ["2023_03_24", "2023_12_20"]: + experiment = Experiment( + bench, + date, + values[2].value, + float(values[3].value), + ) + experiment.factors = experiment.fit_factors( + start_frequency = 15, + end_frequency = 100, + ) + results[ + "{bench}-{date}".format( + bench=bench, + date=date + ) + ] = experiment.factors["true"] + console = Console() + console.print(results) + +else: + experiment = Experiment( + values[1].value, values[0].value, values[2].value, float(values[3].value) + ) + + if experiment.bench == "SDB1": + start_frequency, end_frequency = 12.5, 30 + elif experiment.bench == "SDB2": + start_frequency, end_frequency = 40, 50 + else: + start_frequency, end_frequency = 15, 100 + + experiment.factors = experiment.fit_factors( + start_frequency=start_frequency, + end_frequency=end_frequency, + ) + + show_projection(experiment, start_frequency, end_frequency) + +exit(0) diff --git a/values-coupling.toml b/values-coupling.toml new file mode 100644 index 0000000..93a87e5 --- /dev/null +++ b/values-coupling.toml @@ -0,0 +1,52 @@ +[general] + data_folder = "/home/demagny/data" +[interferometer] + wavelength = 1.064e-6 +[benches] + [benches.SDB1] + scatter_factor = [3.1e-10, 0] + [benches.SDB1.calib] + bench = 1.15 + mirror = 1.15 + + [benches.SDB2] + scatter_factor = [4.1e-13, 0] + [benches.SDB2.calib] + bench = 1.3 + mirror = 1.3 + [benches.SIB2] + scatter_factor = [0, 0] + [benches.SIB2.calib] + bench = 1.0 + mirror = 1.0 + [benches.SNEB] + scatter_factor = [4.7e-9, 0] + [benches.SNEB.calib] + bench = 1.01 + mirror = 1.01 + [benches.SPRB] + scatter_factor = [0, 0] + [benches.SPRB.calib] + bench = 1.0 + mirror = 1.0 + [benches.SWEB] + scatter_factor = [1.3e-9, 0] + [benches.SWEB.calib] + bench = 0.98 + mirror = 0.98 +[dates] + [dates.2023_03_24] + laser = 23 + dark_fringe = 8e-3 + modelisation = "scatterCoupling_march.mat" + correct-power = false + [dates.2023_12_20] + laser = 12.1 + dark_fringe = 4.445e-3 + modelisation = "scatterCoupling_dec_jan.mat" + correct-power = false + [dates.2024_01_21] + laser = 12.1 + dark_fringe = 4.445e-3 + modelisation = "scatterCoupling_dec_jan.mat" + correct-power = false diff --git a/values.toml b/values.toml new file mode 100644 index 0000000..8adfdad --- /dev/null +++ b/values.toml @@ -0,0 +1,56 @@ +[general] + data_folder = "/home/demagny/data" +[interferometer] + wavelength = 1.064e-6 +[benches] + [benches.SDB1] + scatter_factor = [1.5e-9, 0] + [benches.SDB1.calib] + bench = 1.15 + mirror = 1.15 + + [benches.SDB2] + scatter_factor = [2.4e-11, 0] + [benches.SDB2.calib] + bench = 1.3 + mirror = 1.3 + [benches.SIB2] + scatter_factor = [0, 0] + [benches.SIB2.calib] + bench = 1.0 + mirror = 1.0 + [benches.SNEB] + scatter_factor = [9.5e-9, 0] + [benches.SNEB.calib] + bench = 1.01 + mirror = 1.01 + [benches.SPRB] + scatter_factor = [0, 0] + [benches.SPRB.calib] + bench = 1.0 + mirror = 1.0 + [benches.SWEB] + scatter_factor = [4.7e-9, 0] + [benches.SWEB.calib] + bench = -0.98 + mirror = 0.98 +[dates] + [dates.2023_03_24] + laser = 23 + dark_fringe = 8e-3 +#modelisation = "scatterCouplingO4.mat" + modelisation = "scatterCoupling_40.mat" + correct-power = true + [dates.2023_03_24.coupling] + laser = 40 + dark_fringe = 5e-3 + [dates.2023_12_20] + laser = 12.1 + dark_fringe = 4.445e-3 + modelisation = "scatterCouplingMisalignSR.mat" + correct-power = false + [dates.2024_01_21] + laser = 12.1 + dark_fringe = 4.445e-3 + modelisation = "scatterCouplingMisalignSR.mat" + correct-power = false