Changed to settings with categories.

This commit is contained in:
jupfi 2024-03-02 20:58:23 +01:00
parent b01f1a5334
commit 0c6dab95c9
2 changed files with 207 additions and 37 deletions

View file

@ -214,8 +214,8 @@ class SimulatorController(BaseSpectrometerController):
length_coil=float(model.get_setting_by_name(model.LENGTH_COIL).value),
diameter_coil=float(model.get_setting_by_name(model.DIAMETER_COIL).value),
number_turns=float(model.get_setting_by_name(model.NUMBER_TURNS).value),
q_factor_transmitt=float(
model.get_setting_by_name(model.Q_FACTOR_TRANSMITT).value
q_factor_transmit=float(
model.get_setting_by_name(model.Q_FACTOR_TRANSMIT).value
),
q_factor_receive=float(
model.get_setting_by_name(model.Q_FACTOR_RECEIVE).value

View file

@ -1,6 +1,13 @@
import logging
from nqrduck_spectrometer.base_spectrometer_model import BaseSpectrometerModel
from nqrduck_spectrometer.pulseparameters import TXPulse, RXReadout
from nqrduck_spectrometer.settings import (
FloatSetting,
IntSetting,
BooleanSetting,
SelectionSetting,
StringSetting,
)
logger = logging.getLogger(__name__)
@ -17,7 +24,7 @@ class SimulatorModel(BaseSpectrometerModel):
LENGTH_COIL = "Length coil (m)"
DIAMETER_COIL = "Diameter coil (m)"
NUMBER_TURNS = "Number turns"
Q_FACTOR_TRANSMITT = "Q factor Transmitt"
Q_FACTOR_TRANSMIT = "Q factor Transmit"
Q_FACTOR_RECEIVE = "Q factor Receive"
POWER_AMPLIFIER_POWER = "PA power (W)"
GAIN = "Gain"
@ -27,7 +34,7 @@ class SimulatorModel(BaseSpectrometerModel):
LOSS_RX = "Loss RX (dB)"
CONVERSION_FACTOR = "Conversion factor"
# Sample settinggs, this will be done in a seperate module later on
# Sample settings, this will be done in a separate module later on
NAME = "Name"
DENSITY = "Density (g/cm^3)"
MOLAR_MASS = "Molar mass (g/mol)"
@ -59,53 +66,216 @@ class SimulatorModel(BaseSpectrometerModel):
super().__init__(module)
# Simulation settings
self.add_setting(
number_of_points_setting = IntSetting(
self.NUMBER_POINTS,
8192,
"Number of points used for the simulation. This influences the dwell time in combination with the total event simulation given by the pulse sequence. ",
"Number of points used for the simulation. This influences the dwell time in combination with the total event simulation given by the pulse sequence.",
)
self.add_setting(
number_of_points_setting,
self.SIMULATION,
)
self.add_setting(
self.NUMBER_ISOCHROMATS, 1000, "Number of isochromats", self.SIMULATION
number_of_isochromats_setting = IntSetting(
self.NUMBER_ISOCHROMATS,
1000,
"Number of isochromats used for the simulation. This influences the computation time.",
)
self.add_setting(number_of_isochromats_setting, self.SIMULATION)
initial_magnetization_setting = FloatSetting(
self.INITIAL_MAGNETIZATION,
1,
"Initial magnetization",
)
self.add_setting(initial_magnetization_setting, self.SIMULATION)
# This doesn't really do anything yet
gradient_setting = FloatSetting(
self.GRADIENT,
1,
"Gradient",
)
self.add_setting(gradient_setting, self.SIMULATION)
noise_setting = FloatSetting(
self.NOISE,
2,
"Noise",
)
self.add_setting(noise_setting, self.SIMULATION)
# Hardware settings
coil_length_setting = FloatSetting(
self.LENGTH_COIL,
30e-3,
"Length coil",
)
self.add_setting(coil_length_setting, self.HARDWARE)
coil_diameter_setting = FloatSetting(
self.DIAMETER_COIL,
8e-3,
"Diameter coil",
)
self.add_setting(coil_diameter_setting, self.HARDWARE)
number_turns_setting = FloatSetting(
self.NUMBER_TURNS,
8,
"Number turns",
)
self.add_setting(number_turns_setting, self.HARDWARE)
q_factor_transmit_setting = FloatSetting(
self.Q_FACTOR_TRANSMIT,
80,
"Q factor Transmit",
)
self.add_setting(q_factor_transmit_setting, self.HARDWARE)
q_factor_receive_setting = FloatSetting(
self.Q_FACTOR_RECEIVE,
80,
"Q factor Receive",
)
self.add_setting(q_factor_receive_setting, self.HARDWARE)
power_amplifier_power_setting = FloatSetting(
self.POWER_AMPLIFIER_POWER,
110,
"Power amplifier power",
)
self.add_setting(
self.INITIAL_MAGNETIZATION, 1, "Initial magnetization", self.SIMULATION
power_amplifier_power_setting, self.HARDWARE
)
self.add_setting(self.GRADIENT, 1, "Gradient", self.SIMULATION)
self.add_setting(self.NOISE, 2, "Noise", self.SIMULATION)
self.add_setting(self.LENGTH_COIL, 30e-3, "Length coil", self.HARDWARE)
self.add_setting(self.DIAMETER_COIL, 8e-3, "Diameter coil", self.HARDWARE)
self.add_setting(self.NUMBER_TURNS, 8, "Number turns", self.HARDWARE)
self.add_setting(self.Q_FACTOR_TRANSMITT, 80, "Q factor Transmitt", self.HARDWARE)
self.add_setting(self.Q_FACTOR_RECEIVE, 80, "Q factor Receive", self.HARDWARE)
self.add_setting(
self.POWER_AMPLIFIER_POWER, 110, "Power amplifier power", self.HARDWARE
gain_setting = FloatSetting(
self.GAIN,
6000,
"Gain of the complete measurement chain",
)
self.add_setting(
self.GAIN, 6000, "Gain of the complete measurement chain", self.HARDWARE
gain_setting, self.HARDWARE
)
temperature_setting = FloatSetting(
self.TEMPERATURE,
300,
"Temperature",
)
self.add_setting(temperature_setting, self.EXPERIMENTAL_Setup)
loss_tx_setting = FloatSetting(
self.LOSS_TX,
25,
"Loss TX in dB",
)
self.add_setting(loss_tx_setting, self.EXPERIMENTAL_Setup)
loss_rx_setting = FloatSetting(
self.LOSS_RX,
25,
"Loss RX in dB",
)
self.add_setting(loss_rx_setting, self.EXPERIMENTAL_Setup)
conversion_factor_setting = FloatSetting(
self.CONVERSION_FACTOR,
2884,
"Conversion factor (spectrometer units / V)",
)
self.add_setting(self.TEMPERATURE, 300, "Temperature", self.EXPERIMENTAL_Setup)
self.add_setting(self.LOSS_TX, 25, "Loss TX", self.EXPERIMENTAL_Setup)
self.add_setting(self.LOSS_RX, 25, "Loss RX", self.EXPERIMENTAL_Setup)
self.add_setting(
self.CONVERSION_FACTOR, 2884, "Conversion factor (spectrometer units / V)", self.EXPERIMENTAL_Setup
conversion_factor_setting,
self.EXPERIMENTAL_Setup,
) # Conversion factor for the LimeSDR based spectrometer
# Sample settings
self.add_setting(self.NAME, "BiPh3", "Name", self.SAMPLE)
self.add_setting(self.DENSITY, 1.585e6, "Density", self.SAMPLE)
self.add_setting(self.MOLAR_MASS, 440.3, "Molar mass", self.SAMPLE)
self.add_setting(
self.RESONANT_FREQUENCY, 83.56e6, "Resonant frequency", self.SAMPLE
sample_name_setting = StringSetting(
self.NAME,
"BiPh3",
"Name",
)
self.add_setting(self.GAMMA, 4.342e7, "Gamma", self.SAMPLE)
self.add_setting(self.NUCLEAR_SPIN, 9 / 2, "Nuclear spin", self.SAMPLE)
self.add_setting(self.SPIN_FACTOR, 2, "Spin factor", self.SAMPLE)
self.add_setting(self.POWDER_FACTOR, 0.75, "Powder factor", self.SAMPLE)
self.add_setting(self.FILLING_FACTOR, 0.7, "Filling factor", self.SAMPLE)
self.add_setting(self.T1, 83.5e-5, "T1", self.SAMPLE)
self.add_setting(self.T2, 396e-6, "T2", self.SAMPLE)
self.add_setting(self.T2_STAR, 50e-6, "T2*", self.SAMPLE)
self.add_setting(sample_name_setting, self.SAMPLE)
density_setting = FloatSetting(
self.DENSITY,
1.585e6,
"Density",
)
self.add_setting(density_setting, self.SAMPLE)
molar_mass_setting = FloatSetting(
self.MOLAR_MASS,
440.3,
"Molar mass",
)
self.add_setting(molar_mass_setting, self.SAMPLE)
resonant_frequency_setting = FloatSetting(
self.RESONANT_FREQUENCY,
83.56e6,
"Resonant frequency",
)
self.add_setting(
resonant_frequency_setting, self.SAMPLE
)
gamma_setting = FloatSetting(
self.GAMMA,
4.342e7,
"Gamma",
)
self.add_setting(gamma_setting, self.SAMPLE)
nuclear_spin_setting = FloatSetting(
self.NUCLEAR_SPIN,
9 / 2,
"Nuclear spin",
)
self.add_setting(nuclear_spin_setting, self.SAMPLE)
spin_factor_setting = FloatSetting(
self.SPIN_FACTOR,
2,
"Spin factor",
)
self.add_setting(spin_factor_setting, self.SAMPLE)
powder_factor_setting = FloatSetting(
self.POWDER_FACTOR,
0.75,
"Powder factor",
)
self.add_setting(powder_factor_setting, self.SAMPLE)
filling_factor_setting = FloatSetting(
self.FILLING_FACTOR,
0.7,
"Filling factor",
)
self.add_setting(filling_factor_setting, self.SAMPLE)
t1_setting = FloatSetting(
self.T1,
83.5e-5,
"T1",
)
self.add_setting(t1_setting, self.SAMPLE)
t2_setting = FloatSetting(
self.T2,
396e-6,
"T2",
)
self.add_setting(t2_setting, self.SAMPLE)
t2_star_setting = FloatSetting(
self.T2_STAR,
50e-6,
"T2*",
)
self.add_setting(t2_star_setting, self.SAMPLE)
# Pulse parameter options
self.add_pulse_parameter_option(self.TX, TXPulse)