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), length_coil=float(model.get_setting_by_name(model.LENGTH_COIL).value),
diameter_coil=float(model.get_setting_by_name(model.DIAMETER_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), number_turns=float(model.get_setting_by_name(model.NUMBER_TURNS).value),
q_factor_transmitt=float( q_factor_transmit=float(
model.get_setting_by_name(model.Q_FACTOR_TRANSMITT).value model.get_setting_by_name(model.Q_FACTOR_TRANSMIT).value
), ),
q_factor_receive=float( q_factor_receive=float(
model.get_setting_by_name(model.Q_FACTOR_RECEIVE).value model.get_setting_by_name(model.Q_FACTOR_RECEIVE).value

View file

@ -1,6 +1,13 @@
import logging import logging
from nqrduck_spectrometer.base_spectrometer_model import BaseSpectrometerModel from nqrduck_spectrometer.base_spectrometer_model import BaseSpectrometerModel
from nqrduck_spectrometer.pulseparameters import TXPulse, RXReadout from nqrduck_spectrometer.pulseparameters import TXPulse, RXReadout
from nqrduck_spectrometer.settings import (
FloatSetting,
IntSetting,
BooleanSetting,
SelectionSetting,
StringSetting,
)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -17,7 +24,7 @@ class SimulatorModel(BaseSpectrometerModel):
LENGTH_COIL = "Length coil (m)" LENGTH_COIL = "Length coil (m)"
DIAMETER_COIL = "Diameter coil (m)" DIAMETER_COIL = "Diameter coil (m)"
NUMBER_TURNS = "Number turns" NUMBER_TURNS = "Number turns"
Q_FACTOR_TRANSMITT = "Q factor Transmitt" Q_FACTOR_TRANSMIT = "Q factor Transmit"
Q_FACTOR_RECEIVE = "Q factor Receive" Q_FACTOR_RECEIVE = "Q factor Receive"
POWER_AMPLIFIER_POWER = "PA power (W)" POWER_AMPLIFIER_POWER = "PA power (W)"
GAIN = "Gain" GAIN = "Gain"
@ -27,7 +34,7 @@ class SimulatorModel(BaseSpectrometerModel):
LOSS_RX = "Loss RX (dB)" LOSS_RX = "Loss RX (dB)"
CONVERSION_FACTOR = "Conversion factor" 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" NAME = "Name"
DENSITY = "Density (g/cm^3)" DENSITY = "Density (g/cm^3)"
MOLAR_MASS = "Molar mass (g/mol)" MOLAR_MASS = "Molar mass (g/mol)"
@ -59,53 +66,216 @@ class SimulatorModel(BaseSpectrometerModel):
super().__init__(module) super().__init__(module)
# Simulation settings # Simulation settings
self.add_setting( number_of_points_setting = IntSetting(
self.NUMBER_POINTS, self.NUMBER_POINTS,
8192, 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.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.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) gain_setting = FloatSetting(
self.add_setting(self.LENGTH_COIL, 30e-3, "Length coil", self.HARDWARE) self.GAIN,
self.add_setting(self.DIAMETER_COIL, 8e-3, "Diameter coil", self.HARDWARE) 6000,
self.add_setting(self.NUMBER_TURNS, 8, "Number turns", self.HARDWARE) "Gain of the complete measurement chain",
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
) )
self.add_setting( 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.add_setting(
self.CONVERSION_FACTOR, 2884, "Conversion factor (spectrometer units / V)", self.EXPERIMENTAL_Setup conversion_factor_setting,
) # Conversion factor for the LimeSDR based spectrometer self.EXPERIMENTAL_Setup,
) # Conversion factor for the LimeSDR based spectrometer
# Sample settings # Sample settings
self.add_setting(self.NAME, "BiPh3", "Name", self.SAMPLE) sample_name_setting = StringSetting(
self.add_setting(self.DENSITY, 1.585e6, "Density", self.SAMPLE) self.NAME,
self.add_setting(self.MOLAR_MASS, 440.3, "Molar mass", self.SAMPLE) "BiPh3",
self.add_setting( "Name",
self.RESONANT_FREQUENCY, 83.56e6, "Resonant frequency", self.SAMPLE
) )
self.add_setting(self.GAMMA, 4.342e7, "Gamma", self.SAMPLE) self.add_setting(sample_name_setting, 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) density_setting = FloatSetting(
self.add_setting(self.POWDER_FACTOR, 0.75, "Powder factor", self.SAMPLE) self.DENSITY,
self.add_setting(self.FILLING_FACTOR, 0.7, "Filling factor", self.SAMPLE) 1.585e6,
self.add_setting(self.T1, 83.5e-5, "T1", self.SAMPLE) "Density",
self.add_setting(self.T2, 396e-6, "T2", self.SAMPLE) )
self.add_setting(self.T2_STAR, 50e-6, "T2*", self.SAMPLE) 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 # Pulse parameter options
self.add_pulse_parameter_option(self.TX, TXPulse) self.add_pulse_parameter_option(self.TX, TXPulse)