atomiq.components.optoelectronics.camera module

class atomiq.components.optoelectronics.camera.Camera(config_dict, default_config, *args, **kwargs)[source]

Bases: Component

A Camera

This is an abstract class to represent a camera.

A camera needs to have a configuration (exposure time, readout mode, binning, subarray, etc). Since cameras usually need quite some config options to be set, this class works with named configuration sets stored in a dict. An example looks like the following:

config_dict = {
     "camera_usecase1" : {
             "option_xy": 2.3,
             "option_zy": "external",
             ...
     },
     "camera_usecase2": {
         "option_xy": 2e-3,
         "option_zy": "internal",
     },
     ...
}
Parameters:
  • config_dict (dict) -- Dictionary holding the configuration sets for the camera

  • default_config (TStr) -- key from the config dict to use if none is specified in the configure() function

kernel_invariants = {'config_dict', 'default_config'}
configure(config='')[source]

Configure the camera, i.e. set exposure time, readout mode, binning, etc. Named configuration options are available from the config_dict provided upon object creation. We load the one with the key given in config. If no key is given, load the default defined upon object creation.

Parameters:

config (artiq.compiler.types.TMono('str', OrderedDict()))

arm()[source]

Arm the camera such that a subsequent call of the start() method can start the exposure immediately. Arming typically cannot meet realtime requirements. However, once armed, the camera can start exposure on a trigger in realtime

start()[source]

Start exposure of the camera

stop()[source]

Stop exposure of the camera

class atomiq.components.optoelectronics.camera.TriggeredRPCCamera(rpc_camera, fire_ttl, fire_pulsetime=9.999999999999999e-05, *args, **kwargs)[source]

Bases: Camera, Triggerable

Camera that is configured via RPC but triggered via a TTL

Parameters:
  • rpc_camera (Component) -- The ARTIQ RPC object that represents the camera. It needs to provide the RPC functions configure(config: dict) to configure the camera, start() to arm the camera (i.e. wait for trigger), and stop() to stop waiting for trigger or stop exposure.

  • fire_ttl (Switchable) -- The logic signal that triggers the exposure.

  • fire_pulsetime (TFloat) -- The time the logic signal remains high to trigger the camera (default 100us)

A Triggerable has one ore more channel(s) that can be triggered

kernel_invariants = {'camera', 'fire_pulsetime', 'fire_ttl'}
arm()[source]

Arm the camera such that a subsequent call of the start() method can start the exposure immediately. Arming typically cannot meet realtime requirements. However, once armed, the camera can start exposure on a trigger in realtime

stop()[source]

Stop exposure of the camera

fire(channel='')[source]
Parameters:

channel (artiq.compiler.types.TMono('str', OrderedDict()))

start()[source]

Start exposure of the camera

configure(config='')

Configure the camera, i.e. set exposure time, readout mode, binning, etc. Named configuration options are available from the config_dict provided upon object creation. We load the one with the key given in config. If no key is given, load the default defined upon object creation.

Parameters:

config (artiq.compiler.types.TMono('str', OrderedDict()))