Qudi
|
A general magnet logic to control an magnetic stage with an arbitrary set of axis. More...
Public Member Functions | |
def | __init__ (self, config, kwargs) |
def | on_activate (self) |
Definition and initialisation of the GUI. | |
def | on_deactivate (self) |
Deactivate the module properly. | |
def | get_hardware_constraints (self) |
Retrieve the hardware constraints. More... | |
def | move_rel (self, param_dict) |
Move the specified axis in the param_dict relative with an assigned value. More... | |
def | move_abs (self, param_dict) |
Moves stage to absolute position (absolute movement) More... | |
def | get_pos (self, param_list=None) |
Gets current position of the stage. More... | |
def | get_status (self, param_list=None) |
Get the status of the position. More... | |
def | stop_movement (self) |
Stops movement of the stage. More... | |
def | set_velocity (self, param_dict) |
Write new value for velocity. More... | |
def | start_1d_alignment (self, axis_name, axis_range, axis_step, axis_vel, stepwise_meas=True, continue_meas=False) |
def | start_2d_alignment (self, stepwise_meas=True, continue_meas=False) |
def | stop_alignment (self) |
Stops any kind of ongoing alignment measurement by setting a flag. | |
def | get_available_odmr_peaks (self) |
Retrieve the information on which odmr peak the microwave can be applied. More... | |
def | save_1d_data (self) |
def | save_2d_data (self, tag=None, timestamp=None) |
Save the data of the. | |
def | set_pos_checktime (self, checktime) |
def | get_2d_data_matrix (self) |
def | get_2d_axis_arrays (self) |
def | set_move_rel_para (self, dict) |
Set the move relative parameters according to dict. More... | |
def | get_move_rel_para (self, param_list=None) |
Get the move relative parameters. More... | |
def | set_optimize_pos_freq (self, freq) |
Set the optimization frequency. | |
def | get_optimize_pos_freq (self) |
Get the optimization frequency. More... | |
def | get_optimize_pos (self) |
Retrieve whether the optimize position is set. More... | |
def | set_fluorescence_integration_time (self, time) |
Set the integration time. | |
def | get_fluorescence_integration_time (self) |
Get the fluorescence integration time. More... | |
def | set_align_2d_axis0_name (self, axisname) |
2D alignment settings More... | |
def | set_align_2d_axis0_range (self, range) |
Set the specified value. | |
def | set_align_2d_axis0_step (self, step) |
Set the specified value. | |
def | set_align_2d_axis0_vel (self, vel) |
Set the specified value. | |
def | set_align_2d_axis1_name (self, axisname) |
Set the specified value. | |
def | set_align_2d_axis1_range (self, range) |
Set the specified value. | |
def | set_align_2d_axis1_step (self, step) |
Set the specified value. | |
def | set_align_2d_axis1_vel (self, vel) |
Set the specified value. | |
def | get_align_2d_axis0_name (self) |
Return the current value. | |
def | get_align_2d_axis0_range (self) |
Return the current value. | |
def | get_align_2d_axis0_step (self) |
Return the current value. | |
def | get_align_2d_axis0_vel (self) |
Return the current value. | |
def | get_align_2d_axis1_name (self) |
Return the current value. | |
def | get_align_2d_axis1_range (self) |
Return the current value. | |
def | get_align_2d_axis1_step (self) |
Return the current value. | |
def | get_align_2d_axis1_vel (self) |
Return the current value. | |
Static Public Attributes | |
magnetstage = Connector(interface='MagnetInterface') | |
declare connectors | |
optimizerlogic = Connector(interface='OptimizerLogic') | |
counterlogic = Connector(interface='CounterLogic') | |
odmrlogic = Connector(interface='ODMRLogic') | |
savelogic = Connector(interface='SaveLogic') | |
scannerlogic = Connector(interface='ScannerLogic') | |
traceanalysis = Connector(interface='TraceAnalysisLogic') | |
gatedcounterlogic = Connector(interface='GatedCounterLogic') | |
sequencegeneratorlogic = Connector(interface='SequenceGeneratorLogic') | |
align_2d_axis0_range = StatusVar('align_2d_axis0_range', 10e-3) | |
align_2d_axis0_step = StatusVar('align_2d_axis0_step', 1e-3) | |
align_2d_axis0_vel = StatusVar('align_2d_axis0_vel', 10e-6) | |
align_2d_axis1_range = StatusVar('align_2d_axis1_range', 10e-3) | |
align_2d_axis1_step = StatusVar('align_2d_axis1_step', 1e-3) | |
align_2d_axis1_vel = StatusVar('align_2d_axis1_vel', 10e-6) | |
curr_2d_pathway_mode = StatusVar('curr_2d_pathway_mode', 'snake-wise') | |
curr_alignment_method = StatusVar('curr_alignment_method', '2d_fluorescence') | |
odmr_2d_low_center_freq = StatusVar('odmr_2d_low_center_freq', 11028e6) | |
odmr_2d_low_step_freq = StatusVar('odmr_2d_low_step_freq', 0.15e6) | |
odmr_2d_low_range_freq = StatusVar('odmr_2d_low_range_freq', 25e6) | |
odmr_2d_low_power = StatusVar('odmr_2d_low_power', 4) | |
odmr_2d_low_runtime = StatusVar('odmr_2d_low_runtime', 40) | |
odmr_2d_high_center_freq = StatusVar('odmr_2d_high_center_freq', 16768e6) | |
odmr_2d_high_step_freq = StatusVar('odmr_2d_high_step_freq', 0.15e6) | |
odmr_2d_high_range_freq = StatusVar('odmr_2d_high_range_freq', 25e6) | |
odmr_2d_high_power = StatusVar('odmr_2d_high_power', 2) | |
odmr_2d_high_runtime = StatusVar('odmr_2d_high_runtime', 40) | |
odmr_2d_save_after_measure = StatusVar('odmr_2d_save_after_measure', True) | |
odmr_2d_peak_axis0_move_ratio = StatusVar('odmr_2d_peak_axis0_move_ratio', 0) | |
odmr_2d_peak_axis1_move_ratio = StatusVar('odmr_2d_peak_axis1_move_ratio', 0) | |
nuclear_2d_rabi_periode = StatusVar('nuclear_2d_rabi_periode', 1000e-9) | |
nuclear_2d_mw_freq = StatusVar('nuclear_2d_mw_freq', 100e6) | |
nuclear_2d_mw_channel = StatusVar('nuclear_2d_mw_channel', -1) | |
nuclear_2d_mw_power = StatusVar('nuclear_2d_mw_power', -30) | |
nuclear_2d_laser_time = StatusVar('nuclear_2d_laser_time', 900e-9) | |
nuclear_2d_laser_channel = StatusVar('nuclear_2d_laser_channel', 2) | |
nuclear_2d_detect_channel = StatusVar('nuclear_2d_detect_channel', 1) | |
nuclear_2d_idle_time = StatusVar('nuclear_2d_idle_time', 1500e-9) | |
nuclear_2d_reps_within_ssr = StatusVar('nuclear_2d_reps_within_ssr', 1000) | |
nuclear_2d_num_ssr = StatusVar('nuclear_2d_num_ssr', 3000) | |
sigIdleStateChanged = QtCore.Signal(bool) | |
sigPosChanged = QtCore.Signal(dict) | |
sigMeasurementStarted = QtCore.Signal() | |
sigMeasurementContinued = QtCore.Signal() | |
sigMeasurementStopped = QtCore.Signal() | |
sigMeasurementFinished = QtCore.Signal() | |
sigMoveAbs = QtCore.Signal(dict) | |
sigMoveRel = QtCore.Signal(dict) | |
sigAbort = QtCore.Signal() | |
sigVelChanged = QtCore.Signal(dict) | |
sigPosReached = QtCore.Signal() | |
sig1DMatrixChanged = QtCore.Signal() | |
sig2DMatrixChanged = QtCore.Signal() | |
sig3DMatrixChanged = QtCore.Signal() | |
sig1DAxisChanged = QtCore.Signal() | |
sig2DAxisChanged = QtCore.Signal() | |
sig3DAxisChanged = QtCore.Signal() | |
sig2DAxis0NameChanged = QtCore.Signal(str) | |
sig2DAxis0RangeChanged = QtCore.Signal(float) | |
sig2DAxis0StepChanged = QtCore.Signal(float) | |
sig2DAxis0VelChanged = QtCore.Signal(float) | |
sig2DAxis1NameChanged = QtCore.Signal(str) | |
sig2DAxis1RangeChanged = QtCore.Signal(float) | |
sig2DAxis1StepChanged = QtCore.Signal(float) | |
sig2DAxis1VelChanged = QtCore.Signal(float) | |
sigMoveRelChanged = QtCore.Signal(dict) | |
sigFluoIntTimeChanged = QtCore.Signal(float) | |
sigOptPosFreqChanged = QtCore.Signal(float) | |
sigODMRLowFreqChanged = QtCore.Signal() | |
sigODMRHighFreqChanged = QtCore.Signal() | |
sigTest = QtCore.Signal() | |
A general magnet logic to control an magnetic stage with an arbitrary set of axis.
The current status of the magnet logic is highly experimental and not well tested. The implementation has some considerable imperfections. The state of this module is considered to be UNSTABLE.
This module has two major issues:
However, the 'high-level state maschine' for the alignment should be rather general and very powerful to use. The different state were divided in several consecutive methods, where each method can be implemented separately and can be extended for custom needs. (I have drawn a diagram, which is much more telling then the documentation I can write down here.)
I am currently working on that and will from time to time improve the status of this module. So if you want to use it, be aware that there might appear drastic changes.
Alexander Stark
def magnet_logic.MagnetLogic.get_available_odmr_peaks | ( | self | ) |
Retrieve the information on which odmr peak the microwave can be applied.
def magnet_logic.MagnetLogic.get_fluorescence_integration_time | ( | self | ) |
Get the fluorescence integration time.
def magnet_logic.MagnetLogic.get_hardware_constraints | ( | self | ) |
Retrieve the hardware constraints.
def magnet_logic.MagnetLogic.get_move_rel_para | ( | self, | |
param_list = None |
|||
) |
Get the move relative parameters.
list: Optional list with axis names
def magnet_logic.MagnetLogic.get_optimize_pos | ( | self | ) |
Retrieve whether the optimize position is set.
def magnet_logic.MagnetLogic.get_optimize_pos_freq | ( | self | ) |
Get the optimization frequency.
def magnet_logic.MagnetLogic.get_pos | ( | self, | |
param_list = None |
|||
) |
Gets current position of the stage.
list | param_list: optional, if a specific position of an axis is desired, then the labels of the needed axis should be passed as the param_list. If nothing is passed, then from each axis the position is asked. |
def magnet_logic.MagnetLogic.get_status | ( | self, | |
param_list = None |
|||
) |
Get the status of the position.
list | param_list: optional, if a specific status of an axis is desired, then the labels of the needed axis should be passed in the param_list. If nothing is passed, then from each axis the status is asked. |
def magnet_logic.MagnetLogic.move_abs | ( | self, | |
param_dict | |||
) |
Moves stage to absolute position (absolute movement)
dict | param_dict: dictionary, which passes all the relevant parameters, which should be changed. Usage: {'axis_label': <a-value>}. 'axis_label' must correspond to a label given to one of the axis. |
def magnet_logic.MagnetLogic.move_rel | ( | self, | |
param_dict | |||
) |
Move the specified axis in the param_dict relative with an assigned value.
dict | param_dict: dictionary, which passes all the relevant parameters. E.g., for a movement of an axis labeled with 'x' by 23 the dict should have the form: param_dict = { 'x' : 23 } |
def magnet_logic.MagnetLogic.set_align_2d_axis0_name | ( | self, | |
axisname | |||
) |
2D alignment settings
Set the specified value
def magnet_logic.MagnetLogic.set_move_rel_para | ( | self, | |
dict | |||
) |
Set the move relative parameters according to dict.
dict: Dictionary with new values
def magnet_logic.MagnetLogic.set_velocity | ( | self, | |
param_dict | |||
) |
Write new value for velocity.
dict | param_dict: dictionary, which passes all the relevant parameters, which should be changed. Usage: {'axis_label': <the-velocity-value>}. 'axis_label' must correspond to a label given to one of the axis. |
def magnet_logic.MagnetLogic.stop_movement | ( | self | ) |
Stops movement of the stage.