qibolab.instruments package#
Subpackages#
- qibolab.instruments.qblox package
- Submodules
- qibolab.instruments.qblox.acquisition module
demodulate()
AveragedAcquisition
DemodulatedAcquisition
DemodulatedAcquisition.scope
DemodulatedAcquisition.bins
DemodulatedAcquisition.duration
DemodulatedAcquisition.raw
DemodulatedAcquisition.integration
DemodulatedAcquisition.shots_i
DemodulatedAcquisition.shots_q
DemodulatedAcquisition.raw_i
DemodulatedAcquisition.raw_q
DemodulatedAcquisition.classified
- qibolab.instruments.qblox.cluster_qcm_bb module
- qibolab.instruments.qblox.cluster_qcm_rf module
- qibolab.instruments.qblox.cluster_qrm_rf module
QrmRf
QrmRf.name
QrmRf.address
QrmRf.device
QrmRf.classification_parameters
QrmRf.qubit_id
QrmRf.threshold
QrmRf.channels
QrmRf.DEFAULT_SEQUENCERS
QrmRf.FREQUENCY_LIMIT
QrmRf.connect()
QrmRf.setup()
QrmRf.get_if()
QrmRf.process_pulse_sequence()
QrmRf.upload()
QrmRf.play_sequence()
QrmRf.acquire()
QrmRf.disconnect()
- qibolab.instruments.qblox.controller module
- qibolab.instruments.qblox.debug module
- qibolab.instruments.qblox.module module
- qibolab.instruments.qblox.port module
- qibolab.instruments.qblox.q1asm module
- qibolab.instruments.qblox.sequencer module
- qibolab.instruments.qblox.sweeper module
- qibolab.instruments.qm package
- Submodules
- qibolab.instruments.qm.acquisition module
Acquisition
RawAcquisition
IntegratedAcquisition
IntegratedAcquisition.i
IntegratedAcquisition.q
IntegratedAcquisition.istream
IntegratedAcquisition.qstream
IntegratedAcquisition.RESULT_CLS
IntegratedAcquisition.AVERAGED_RESULT_CLS
IntegratedAcquisition.assign_element()
IntegratedAcquisition.measure()
IntegratedAcquisition.download()
IntegratedAcquisition.fetch()
ShotsAcquisition
ShotsAcquisition.threshold
ShotsAcquisition.angle
ShotsAcquisition.i
ShotsAcquisition.q
ShotsAcquisition.shot
ShotsAcquisition.shots
ShotsAcquisition.RESULT_CLS
ShotsAcquisition.AVERAGED_RESULT_CLS
ShotsAcquisition.assign_element()
ShotsAcquisition.measure()
ShotsAcquisition.download()
ShotsAcquisition.fetch()
declare_acquisitions()
fetch_results()
- qibolab.instruments.qm.config module
SAMPLING_RATE
DEFAULT_INPUTS
QMConfig
QMConfig.version
QMConfig.controllers
QMConfig.octaves
QMConfig.elements
QMConfig.pulses
QMConfig.waveforms
QMConfig.digital_waveforms
QMConfig.integration_weights
QMConfig.mixers
QMConfig.register_port()
QMConfig.iq_imbalance()
QMConfig.register_drive_element()
QMConfig.register_readout_element()
QMConfig.register_flux_element()
QMConfig.register_element()
QMConfig.register_pulse()
QMConfig.register_waveform()
QMConfig.register_integration_weights()
- qibolab.instruments.qm.controller module
OCTAVE_ADDRESS_OFFSET
declare_octaves()
find_baking_pulses()
controllers_config()
QMController
QMController.name
QMController.address
QMController.opxs
QMController.octaves
QMController.time_of_flight
QMController.smearing
QMController.bounds
QMController.calibration_path
QMController.script_file_name
QMController.manager
QMController.config
QMController.is_connected
QMController.simulation_duration
QMController.cloud
QMController.ports()
QMController.sampling_rate
QMController.connect()
QMController.disconnect()
QMController.calibrate_mixers()
QMController.execute_program()
QMController.simulate_program()
QMController.create_sequence()
QMController.play()
QMController.sweep()
- qibolab.instruments.qm.devices module
- qibolab.instruments.qm.ports module
- qibolab.instruments.qm.sequence module
- qibolab.instruments.qm.sweepers module
- qibolab.instruments.rfsoc package
- Submodules
- qibolab.instruments.rfsoc.convert module
- qibolab.instruments.rfsoc.driver module
RFSoCPort
RFSoC
RFSoC.cfg
RFSoC.PortType
RFSoC.sampling_rate
RFSoC.connect()
RFSoC.disconnect()
RFSoC.play()
RFSoC.validate_input_command()
RFSoC.update_cfg()
RFSoC.classify_shots()
RFSoC.play_sequence_in_sweep_recursion()
RFSoC.recursive_python_sweep()
RFSoC.merge_sweep_results()
RFSoC.get_if_python_sweep()
RFSoC.convert_sweep_results()
RFSoC.sweep()
- qibolab.instruments.zhinst package
- Submodules
- qibolab.instruments.zhinst.executor module
COMPILER_SETTINGS
ZhPort
SubSequence
Zurich
Zurich.PortType
Zurich.signal_map
Zurich.calibration
Zurich.session
Zurich.smearing
Zurich.results
Zurich.acquisition_type
Zurich.sequence
Zurich.sub_sequences
Zurich.unsplit_channels
Zurich.sampling_rate
Zurich.connect()
Zurich.disconnect()
Zurich.calibration_step()
Zurich.register_readout_line()
Zurich.register_drive_line()
Zurich.register_flux_line()
Zurich.register_couplerflux_line()
Zurich.run_exp()
Zurich.frequency_from_pulses()
Zurich.create_sub_sequences()
Zurich.experiment_flow()
Zurich.play()
Zurich.sequence_zh()
Zurich.create_exp()
Zurich.set_calibration_for_rt_sweep()
Zurich.set_instrument_nodes_for_nt_sweep()
Zurich.get_channel_node_path()
Zurich.select_exp()
Zurich.play_sweep()
Zurich.sweep()
- qibolab.instruments.zhinst.pulse module
- qibolab.instruments.zhinst.sweep module
- qibolab.instruments.zhinst.util module
Submodules#
qibolab.instruments.abstract module#
- class qibolab.instruments.abstract.InstrumentSettings[source]#
Bases:
object
Container of settings that are dumped in the platform runcard json.
- class qibolab.instruments.abstract.Instrument(name, address)[source]#
Bases:
ABC
Parent class for all the instruments connected via TCPIP.
- property signature#
- class qibolab.instruments.abstract.Controller(name, address)[source]#
Bases:
Instrument
Instrument that can play pulses (using waveform generator).
- abstract property sampling_rate#
Sampling rate of control electronics in giga samples per second (GSps).
- ports(port_name, *args, **kwargs)[source]#
Get ports associated to this controller.
- Parameters:
port_name – Identifier for the port. The type of the identifier depends on the specialized port defined for each instrument.
- Returns:
qibolab.instruments.port.Port
object providing the interface for setting instrument parameters.
- exception qibolab.instruments.abstract.InstrumentException(instrument: Instrument, message: str)[source]#
Bases:
Exception
qibolab.instruments.bluefors module#
- class qibolab.instruments.bluefors.TemperatureController(name: str, address: str, port: int = 8888)[source]#
Bases:
Instrument
Bluefors temperature controller.
``` # Example usage if __name__ == “__main__”:
tc = TemperatureController(“XLD1000_Temperature_Controller”, “192.168.0.114”, 8888) tc.connect() temperature_values = tc.read_data() for temperature_value in temperature_values:
print(temperature_value)
- get_data() dict[str, dict[str, float]] [source]#
Connect to the socket and get temperature data.
- The typical message looks like this:
flange_name: {‘temperature’:12.345678, ‘timestamp’:1234567890.123456}
timestamp can be converted to datetime using datetime.fromtimestamp. :returns:
- socket message in this format:
{“flange_name”: {‘temperature’: <value(float)>, ‘timestamp’:<value(float)>}}
qibolab.instruments.dummy module#
- class qibolab.instruments.dummy.DummyPort(name: str, offset: float = 0.0, lo_frequency: int = 0, lo_power: int = 0, gain: int = 0, attenuation: int = 0, power_range: int = 0, filters: dict | None = None)[source]#
Bases:
Port
- lo_frequency: int = 0#
Local oscillator frequency for the given port.
Relevant only for controllers with internal local oscillators.
- lo_power: int = 0#
Local oscillator power for the given port.
Relevant only for controllers with internal local oscillators.
- class qibolab.instruments.dummy.DummyDevice[source]#
Bases:
object
Dummy device that does nothing but follows the QCoDeS interface.
- class qibolab.instruments.dummy.DummyLocalOscillator(name, address, ref_osc_source=None)[source]#
Bases:
LocalOscillator
Dummy local oscillator instrument.
Useful for testing the interface defined in
qibolab.instruments.oscillator.LocalOscillator
.
- class qibolab.instruments.dummy.DummyInstrument(name, address)[source]#
Bases:
Controller
Dummy instrument that returns random voltage values.
Useful for testing code without requiring access to hardware.
- Parameters:
- BOUNDS = Bounds(waveforms=1, readout=1, instructions=1)#
- property sampling_rate#
Sampling rate of control electronics in giga samples per second (GSps).
- play(qubits: Dict[str | int, Qubit], couplers: Dict[str | int, Coupler], sequence: PulseSequence, options: ExecutionParameters)[source]#
Play a pulse sequence and retrieve feedback.
- Returns:
(Dict[ResultType]) mapping the serial of the readout pulses used to the acquired
qibolab.result.ExecutionResults
object.
- sweep(qubits: Dict[str | int, Qubit], couplers: Dict[str | int, Coupler], sequence: PulseSequence, options: ExecutionParameters, *sweepers: List[Sweeper])[source]#
Play a pulse sequence while sweeping one or more parameters.
- Returns:
(dict) mapping the serial of the readout pulses used to the acquired
qibolab.result.ExecutionResults
object.
qibolab.instruments.erasynth module#
- qibolab.instruments.erasynth.RECONNECTION_ATTEMPTS = 10#
Number of times to attempt sending requests to the web server in case of failure.
- qibolab.instruments.erasynth.TIMEOUT = 10#
Timeout time for HTTP requests in seconds.
- class qibolab.instruments.erasynth.ERASynthEthernet(name, address)[source]#
Bases:
object
ERA ethernet driver that follows the QCoDeS interface.
Controls the instrument via HTTP requests to the instrument’s web server.
- property url#
- post(name, value)[source]#
Post a value to the instrument’s web server.
Try to post multiple times, waiting for 0.1 seconds between each attempt.
- Parameters:
name – str = The name of the value to post.
value – str = The value to post.
- get(name)[source]#
Get a value from the instrument’s web server.
Try to get multiple times, waiting for 0.1 seconds between each attempt.
- Parameters:
name – str = The name of the value to get.
- set(name, value)[source]#
Set a value to the instrument’s web server.
- Parameters:
name (str) – Name of the paramater that we are updating. In qibolab this can be
frequency
,power
orref_osc_source
, however the instrument’s web server may support more values.value – New value to set to the given parameter. The type of value depends on the parameter being updated.
- class qibolab.instruments.erasynth.ERA(name, address, ethernet=True, ref_osc_source=None)[source]#
Bases:
LocalOscillator
Driver to control the ERAsynth++ local oscillator.
This driver is using: https://qcodes.github.io/Qcodes_contrib_drivers/api/generated/qcodes_contrib_drivers.drivers.ERAInstruments.html#qcodes_contrib_drivers.drivers.ERAInstruments.erasynth.ERASynthPlusPlus
or the custom
qibolab.instruments.erasynth.ERASynthEthernet
object if we are connected via ethernet.
qibolab.instruments.icarusq module#
qibolab.instruments.icarusqfpga module#
qibolab.instruments.oscillator module#
- qibolab.instruments.oscillator.RECONNECTION_ATTEMPTS = 3#
Number of times to attempt connecting to instrument in case of failure.
- class qibolab.instruments.oscillator.LocalOscillatorSettings(power: float | None = None, frequency: float | None = None, ref_osc_source: str | None = None)[source]#
Bases:
InstrumentSettings
Local oscillator parameters that are saved in the platform runcard.
- class qibolab.instruments.oscillator.LocalOscillator(name, address, ref_osc_source=None)[source]#
Bases:
Instrument
Abstraction for local oscillator instruments.
Local oscillators are used to upconvert signals, when the controllers cannot send sufficiently high frequencies to address the qubits and resonators. They cannot be used to play or sweep pulses.
- property frequency#
- property power#
- property ref_osc_source#
qibolab.instruments.port module#
- class qibolab.instruments.port.Port[source]#
Bases:
object
Abstract interface for instrument parameters.
These parameters are exposed to the user through
qibolab.channels.Channel
.Drivers should subclass this interface and implement the getters and setters for all the parameters that are available for the corresponding instruments.
Each port is identified by the
name
attribute. Note that the type of the identifier can be different of each port implementation.- lo_frequency: float#
Local oscillator frequency for the given port.
Relevant only for controllers with internal local oscillators.
qibolab.instruments.rohde_schwarz module#
- class qibolab.instruments.rohde_schwarz.SGS100A(name, address, ref_osc_source=None)[source]#
Bases:
LocalOscillator
Driver to control the Rohde-Schwarz SGS100A local oscillator.
This driver is using: https://qcodes.github.io/Qcodes/api/generated/qcodes.instrument_drivers.rohde_schwarz.html#module-qcodes.instrument_drivers.rohde_schwarz.SGS100A