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

str

check_response(response: str) → None[source]

Raise an exception if controller responds with ‘ERROR’.

Parameters

response – Response from controller.

clear_instances()[source]

Remove instrument instance.

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

stop(axis: Union[int, str]) → None[source]

Stops all motion along axis and then grounds the output.

Parameters

axis – Either axis label (str, e.g. ‘y’) or index (int, e.g. 2)

write_raw(cmd: str) → str[source]

Write cmd and don’t wait for response.

Parameters

cmd – Command to write to controller.

class instruments.atto.ANC300(atto_config: Dict, temp: str, ureg: Any, timestamp_format: str, **kwargs)[source]

ANC300 Attocube controller instrument.

initialize() → None[source]

Initialize instrument with parameters from self.metadata.

class instruments.atto.ANC150(atto_config: Dict, temp: str, ureg: Any, timestamp_format: str, **kwargs)[source]

ANC150 Attocube controller instrument.

initialize() → None[source]

Initialize instrument with parameters from self.metadata.

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.

clear_instances()[source]

Clear scanner instances.

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

numpy.ndarray

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

numpy.ndarray

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.

class squids.Susceptometer(squid_config: Dict[str, Any], **kwargs)[source]

Records SQUID susceptometer metadata.

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.

get_raw()[source]

Averages data to get self.target_points points per channel. If self.target_points == self.samples_to_read, no averaging is done.

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.

clear_instances()[source]

Clear instances of DAQAnalogInputs Instruments.

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.

get_raw()[source]

Returns last voltage array written to outputs.

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.

clear_instances()[source]

Clear instances of DAQAnalogOutputs Instruments.

Others Instruments

Lockins

  • SR830 driver courtesy of QCoDeS.

    class qcodes.instrument_drivers.stanford_research.SR830.SR830(name, address, **kwargs)[source]

    This is the qcodes driver for the Stanford Research Systems SR830 Lock-in Amplifier

  • 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

class instruments.lakeshore.Model_340(name, address, active_channels={'A': 'cernox', 'B': 'diode'}, **kwargs)[source]

Lakeshore Model 340 Temperature Controller Driver Controlled via sockets Adapted from QCoDeS Lakeshore 336 driver

class instruments.lakeshore.Model_372(name, address, active_channels={'ch1': '50K Plate', 'ch2': '3K Plate'}, **kwargs)[source]

Lakeshore Model 372 Temperature Controller Driver Controlled via sockets Adapted from QCoDeS Lakeshore 336 driver

SourceMeters

Keithley SourceMeters.

class instruments.keithley.Keithley_2400(name, address, **kwargs)[source]

QCoDeS driver for the Keithley 2400 voltage source.

reset()[source]

Reset the instrument. When the instrument is reset, it performs the following actions.

Returns the SourceMeter to the GPIB default conditions.

Cancels all pending commands.

Cancels all previously send *OPC and *OPC?

Arbitrary Function Generators

Tektronix AFG3000 series.

class instruments.afg3000.AFG3000(name, address, **kwargs)[source]

Qcodes driver for Tektronix AFG3000 series arbitrary function generator.

Not all instrument functionality is included here. By default, most parameters are not queried during a snapshot. Logan Bishop-Van Horn (2018)

clear_instances()[source]

Clear instances of AFG3000 Instruments.

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)

calibrate() → None[source]

Run auto-calibration routine.

clear_instances()[source]

Clear instances of DG645 Instruments.

local() → None[source]

Go to local.

remote() → None[source]

Go to remote.

reset() → None[source]

Reset instrument.

save_settings(location: int) → None[source]

Save instrument settings to given location.

Parameters

location – Location to which to save the settings (in [1..9]).

self_test() → None[source]

Run self-test routine.

trigger() → None[source]

Initiates a single trigger if instrument is in single shot mode.

wait() → None[source]

Wait for all prior commands to execute before continuing.

Heater Power Supply

AIM & Thurlby Thandar PSU (BlueFors warmup heater).

class instruments.heater.EL320P(name, address, **kwargs)[source]

Qcodes driver for AIM & Thurlby Thandar EL320P power supply.