Qudi
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
magnet_logic.MagnetLogic Class Reference

A general magnet logic to control an magnetic stage with an arbitrary set of axis. More...

Inheritance diagram for magnet_logic.MagnetLogic:
Inheritance graph
[legend]
Collaboration diagram for magnet_logic.MagnetLogic:
Collaboration graph
[legend]

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.
 

Public Attributes

 pathway_modes
 
 move_rel_dict
 
 align_2d_axis0_name
 
 align_2d_axis1_name
 
 alignment_methods
 
 odmr_2d_low_fitfunction_list
 
 odmr_2d_low_fitfunction
 
 odmr_2d_high_fitfunction_list
 
 odmr_2d_high_fitfunction
 
 norm
 
 odmr_2d_single_trans
 

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()
 

Detailed Description

A general magnet logic to control an magnetic stage with an arbitrary set of axis.

DISCLAIMER

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

Member Function Documentation

◆ get_available_odmr_peaks()

def magnet_logic.MagnetLogic.get_available_odmr_peaks (   self)

Retrieve the information on which odmr peak the microwave can be applied.

Returns
list: with string entries denoting the peak number

◆ get_fluorescence_integration_time()

def magnet_logic.MagnetLogic.get_fluorescence_integration_time (   self)

Get the fluorescence integration time.

Returns
float: Integration time in seconds

◆ get_hardware_constraints()

def magnet_logic.MagnetLogic.get_hardware_constraints (   self)

Retrieve the hardware constraints.

Returns
dict: dict with constraints for the magnet hardware. The keys are the labels for the axis and the items are again dicts which contain all the limiting parameters.

◆ get_move_rel_para()

def magnet_logic.MagnetLogic.get_move_rel_para (   self,
  param_list = None 
)

Get the move relative parameters.

list: Optional list with axis names

Returns
dict: Dictionary with new values

◆ get_optimize_pos()

def magnet_logic.MagnetLogic.get_optimize_pos (   self)

Retrieve whether the optimize position is set.

Returns
bool: whether the optimize_pos is set or not.

◆ get_optimize_pos_freq()

def magnet_logic.MagnetLogic.get_optimize_pos_freq (   self)

Get the optimization frequency.

Returns
float: Optimization frequency in 1/steps

◆ get_pos()

def magnet_logic.MagnetLogic.get_pos (   self,
  param_list = None 
)

Gets current position of the stage.

Parameters
listparam_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.
Returns
dict: with keys being the axis labels and item the current position.

◆ get_status()

def magnet_logic.MagnetLogic.get_status (   self,
  param_list = None 
)

Get the status of the position.

Parameters
listparam_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.
Returns
dict: with the axis label as key and a tuple of a status number and a status dict as the item.

◆ move_abs()

def magnet_logic.MagnetLogic.move_abs (   self,
  param_dict 
)

Moves stage to absolute position (absolute movement)

Parameters
dictparam_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.
Returns
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 }

◆ move_rel()

def magnet_logic.MagnetLogic.move_rel (   self,
  param_dict 
)

Move the specified axis in the param_dict relative with an assigned value.

Parameters
dictparam_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 }
Returns
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 }

◆ set_align_2d_axis0_name()

def magnet_logic.MagnetLogic.set_align_2d_axis0_name (   self,
  axisname 
)

2D alignment settings

Set the specified value

◆ set_move_rel_para()

def magnet_logic.MagnetLogic.set_move_rel_para (   self,
  dict 
)

Set the move relative parameters according to dict.

dict: Dictionary with new values

Returns
dict: Dictionary with new values

◆ set_velocity()

def magnet_logic.MagnetLogic.set_velocity (   self,
  param_dict 
)

Write new value for velocity.

Parameters
dictparam_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.

◆ stop_movement()

def magnet_logic.MagnetLogic.stop_movement (   self)

Stops movement of the stage.


The documentation for this class was generated from the following file: