Microscope Components¶
A Microscope
is made up of several qcodes.Instrument
objects used to control and acquire data from physical instruments.
Attocubes¶
The instruments.atto.AttocubeController
interfaces via GPIB with the Attocube hardware (e.g. an ANC300 controller). It enforces stepping voltage limits based on the current temperature mode (either 'LT'
or 'RT'
).
- class
instruments.atto.
AttocubeController
(atto_config: Dict, temp: str, ureg: Any, timestamp_fmt: str, **kwargs)[source]¶Base class for Attocube controller instrument.
- Parameters
atto_config – Configuration dict loaded from microscope configuration json file.
temp – ‘LT’ or ‘RT’, depending on whether the attocubes are at room temp. or low temp.
ureg – pint UnitRegistry instance, used for managing physical units.
timestamp_fmt – Timestamp format to be used for logging.
**kwargs – Keyword arguments to be passed to VisaInstrument constructor.
ask_raw
(cmd: str) → str[source]¶Query instrument with cmd and return response.
- Parameters
cmd – Command to write to controller.
- Returns
- response
Response of Attocube controller to the query cmd.
- Return type
check_response
(response: str) → None[source]¶Raise an exception if controller responds with ‘ERROR’.
- Parameters
response – Response from controller.
step
(axis: Union[int, str], steps: int) → None[source]¶Performs a given number of Attocube steps. steps > 0 corresponds to stepu (up), steps < 0 corresponds to stepd (down).
- Parameters
axis – Either axis label (str, e.g. ‘y’) or index (int, e.g. 2)
steps – Number of steps to perform (>0 for ‘u’, <0 for ‘d’)
Scanner¶
The scanner.Scanner
represents the x, y, z scanner that controls the relative motion between the sample and the SQUID. It enforces voltage limits based on the current temperature mode (either 'LT'
or 'RT'
). A scanner.Scanner
instance creates and closes nidaqmx DAQ analog ouput and input tasks as needed to drive the scanner and sense its current position.
- class
scanner.
Scanner
(scanner_config: Dict[str, Any], daq_config: Dict[str, Any], temp: str, ureg: Any, **kwargs)[source]¶Controls DAQ AOs to drive the scanner.
- Parameters
scanner_config – Scanner configuration dictionary as defined in microscope configuration JSON file.
daq_config – DAQ configuration dictionary as defined in microscope configuration JSON file.
temp – ‘LT’ or ‘RT’ - sets the scanner voltage limit for each axis based on temperature mode.
ureg – pint UnitRegistry, manages units.
check_for_td
(tdc_plot: Any, data_set: Any, counter: Any) → None[source]¶Check whether touchdown has occurred during a capacitive touchdown.
- Parameters
tdc_plot – plots.TDCPlot instance, which contains current data and parameters of the touchdown Loop.
data_set – DataSet containing capacitance data generated by Loop.
counter – utils.Counter intance to keep track of which point in the Loop we’re at.
control_ao_task
(cmd: str) → None[source]¶Write commands to the DAQ AO Task. Used during qc.Loops.
- Parameters
cmd – What you want the Task to do. For example, self.control_ao_task(‘stop’) is equivalent to self.ao_task.stop()
get_pos
() → numpy.ndarray[source]¶Get current scanner [x, y, z] position.
- Returns
- pos
Array of current [x, y, z] scanner voltage.
- Return type
get_td_height
(tdc_plot: Any, task: bool = True) → None[source]¶If a touchdown has occurred, finds the z voltage at which it occurred.
- Parameters
tdc_plot – plots.TDCPlot instance containing data from touchdown.
task – True if get_td_height is being called as a qcodes Task (no return value allowed). Default True.
goto
(new_pos: List[float], retract_first: Optional[bool] = False, speed: Optional[str] = None, quiet: Optional[bool] = False) → None[source]¶Move scanner to given position. By default moves all three axes simultaneously, if necessary.
- Parameters
new_pos – List of [x, y, z] scanner voltage to go to.
retract_first – If True, scanner retracts to value determined by self.temp, then moves in the x,y plane, then moves in z to new_pos. Default: False.
speed – Speed at which to move the scanner (e.g. ‘2 V/s’) in DAQ voltage units. Default set in microscope configuration JSON file.
quiet – If True, only logs changes in logging.DEBUG mode. (goto is called many times during, e.g., a scan.) Default: False.
goto_start_of_next_line
(scan_grids: Dict[str, numpy.ndarray], counter: Any) → None[source]¶Moves scanner to the start of the next line to scan.
- Parameters
scan_grids – Dict of {axis_name: axis_meshgrid} from utils.make_scan_grids().
counter – utils.Counter instance, determines current line of the grid.
load_surface
(fname: str, function: Optional[str] = 'multiquadric', smooth: Optional[float] = 0) → None[source]¶
- Loads a previously acquired sample surface; updates self.metadata[‘plane’], self.metadata[‘td_grid’],
and self.surface_interp.
- Parameters
fname – Full file path for .mat file containing measured surface.
function – String defining the radial basis function for scipy.interpolate.Rbf (e.g. ‘cubic’ or ‘linear’). Default: ‘multiquadric’, the scipy default value.
smooth – Smoothing factor for scipy.interpolate.Rbf. smooth=0 means exact interpolation. Only uses smoothing if function=’linear’. Default: 0.
make_ramp
(pos0: List, pos1: List, speed: Union[int, float]) → numpy.ndarray[source]¶Generates a ramp in x,y,z scanner voltage from point pos0 to point pos1 at given speed.
- Parameters
pos0 – List of initial [x, y, z] scanner voltages.
pos1 – List of final [x, y, z] scanner votlages.
speed – Speed at which to go to pos0 to pos1, in DAQ voltage/second.
- Returns
- ramp
Array of x, y, z values to write to DAQ AOs to move scanner from pos0 to pos1.
- Return type
retract
(speed: Optional[str] = None, quiet: Optional[bool] = False) → None[source]¶Retracts z-bender fully based on whether temp is LT or RT.
- Parameters
speed – Speed at which to move the scanner (e.g. ‘2 V/s’) in DAQ voltage units. Default set in microscope configuration JSON file.
scan_line
(scan_grids: Dict[str, numpy.ndarray], ao_channels: Dict[str, int], daq_rate: Union[int, float], counter: Any, reverse=False) → None[source]¶Scan a single line of a plane.
- Parameters
scan_grids – Dict of {axis_name: axis_meshgrid} from utils.make_scan_grids().
ao_channels – Dict of {axis_name: ao_index} for the scanner ao channels.
daq_rate – DAQ sampling rate in Hz.
counter – utils.Counter instance, determines current line of the grid.
reverse – Determines scan direction (i.e. forward or backward).
SQUID¶
The squids.SQUID
and subclasses like squids.Susceptometer
record SQUID parameters and metadata.
- class
squids.
SQUID
(squid_config: Dict[str, Any], **kwargs)[source]¶SQUID sensor base class. Simply records sensor metadata. No gettable or settable parameters.
- Parameters
squid_config – SQUID configuration dict. Simply added to instrument metadata.
**kwargs – Keyword arguments passed to Instrument constructor.
DAQ¶
Instances of the instruments.daq.DAQAnalogInputs
instrument are created only as needed for a measurement, and removed once the measurement is completed. This ensures that the DAQ hardware resources are available when needed. A instruments.daq.DAQAnalogInputs
instrument has a single gettable parameter, instruments.daq.DAQAnalogInputVoltages
, which aqcuires a given number of samples from the requested DAQ analog input channels.
- class
instruments.daq.
DAQAnalogInputVoltages
(name: str, task: Any, samples_to_read: int, shape: Sequence[int], timeout: Union[float, int], **kwargs)[source]¶Acquires data from one or several DAQ analog inputs.
- Parameters
name – Name of parameter (usually ‘voltage’).
task – nidaqmx.Task with appropriate analog inputs channels.
samples_to_read – Number of samples to read. Will be averaged based on shape.
shape – Desired shape of averaged array, i.e. (nchannels, target_points).
timeout – Acquisition timeout in seconds.
**kwargs – Keyword arguments to be passed to ArrayParameter constructor.
- class
instruments.daq.
DAQAnalogInputs
(name: str, dev_name: str, rate: Union[int, float], channels: Dict[str, int], task: Any, min_val: Optional[float] = -5, max_val: Optional[float] = 5, clock_src: Optional[str] = None, samples_to_read: Optional[int] = 2, target_points: Optional[int] = None, timeout: Union[int, float, None] = 60, **kwargs)[source]¶Instrument to acquire DAQ analog input data in a qcodes Loop or measurement.
- Parameters
name – Name of instrument (usually ‘daq_ai’).
dev_name – NI DAQ device name (e.g. ‘Dev1’).
rate – Desired DAQ sampling rate per channel in Hz.
channels – Dict of analog input channel configuration.
task – fresh nidaqmx.Task to be populated with ai_channels.
min_val – minimum of input voltage range (-0.1, -0.2, -0.5, -1, -2, -5 [default], or -10)
max_val – maximum of input voltage range (0.1, 0.2, 0.5, 1, 2, 5 [default], or 10)
clock_src – Sample clock source for analog inputs. Default: None
samples_to_read – Number of samples to acquire from the DAQ per channel per measurement/loop iteration. Default: 2 (minimum number of samples DAQ will acquire in this timing mode).
target_points – Number of points per channel we want in our final array. samples_to_read will be averaged down to target_points.
timeout – Acquisition timeout in seconds. Default: 60.
**kwargs – Keyword arguments to be passed to Instrument constructor.
- class
instruments.daq.
DAQAnalogOutputVoltage
(name: str, dev_name: str, idx: int, **kwargs)[source]¶Writes data to one or several DAQ analog outputs.
- Parameters
name – Name of parameter (usually ‘voltage’).
dev_name – DAQ device name (e.g. ‘Dev1’).
idx – AO channel inde.
**kwargs – Keyword arguments to be passed to ArrayParameter constructor.
- class
instruments.daq.
DAQAnalogOutputs
(name: str, dev_name: str, channels: Dict[str, int], **kwargs)[source]¶Instrument to write DAQ analog output data in a qcodes Loop or measurement.
- Parameters
name – Name of instrument (usually ‘daq_ao’).
dev_name – NI DAQ device name (e.g. ‘Dev1’).
channels – Dict of analog output channel configuration.
**kwargs – Keyword arguments to be passed to Instrument constructor.
Others Instruments¶
Lockins¶
SR830 driver courtesy of QCoDeS.
Driver for a single Zurich Instruments HF2LI “lockin channel”.
Temperature Controllers¶
Lakeshore temperature controllers.
- class
instruments.lakeshore.
Model_331
(name, address, **kwargs)[source]¶Lakeshore Model 331 Temperature Controller Driver Controlled via sockets Adapted from QCoDeS Lakeshore 336 driver
- class
instruments.lakeshore.
Model_335
(name, address, **kwargs)[source]¶Lakeshore Model 335 Temperature Controller Driver Controlled via sockets Adapted from QCoDeS Lakeshore 336 driver
SourceMeters¶
Keithley SourceMeters.
Arbitrary Function Generators¶
Tektronix AFG3000 series.
Digital Delay Generators¶
Stanford Research DG645.
- class
instruments.dg645.
DG645
(name, address, **kwargs)[source]¶Qcodes driver for SRS DG645 digital delay generator.
Not all instrument functionality is included here. Logan Bishop-Van Horn (2018)