lightlab.laboratory.experiments module

This module contains tokens for experiments that use devices and instruments. This is useful to keep track of what is connected to what.

Summary

Classes:

Experiment Experiment base class.
MasterExperiment Does nothing except hold sub experiments to synchronize them.

Reference

class Experiment(instruments=None, devices=None, **kwargs)[source]

Bases: lightlab.laboratory.virtualization.Virtualizable

Experiment base class.

This class is intended to be inherited by the user.

Usage:

experiment = Experiment()
with experiment.asVirtual():
    experiment.measure()  # measure is a DualFunction


# Quick tutorial on decorators:
with obj as foo:
    foo.something()

# this is equivalent to
foo = obj.__enter__()
foo.something()
obj.__exit__()
lab
is_valid(reset=True)[source]
valid
instruments = None
instruments_requirements = None
devices = None
validate_exprs = None
connections = None
name = None
startup()[source]
global_hardware_warmup()[source]
hardware_warmup()[source]
hardware_cooldown()[source]
asReal()[source]

Wraps making self.virtual to False. Also does hardware warmup and cooldown

registerInstrument(instrument, host=None, bench=None)[source]
registerInstruments(*instruments, host=None, bench=None)[source]
registerConnection(connection)[source]
registerConnections(*connections)[source]
validate()[source]
lock(key)[source]
unlock()[source]
display()[source]
class MasterExperiment[source]

Bases: lightlab.laboratory.virtualization.Virtualizable

Does nothing except hold sub experiments to synchronize them. This is purely a naming thing.