atomiq.components.primitives¶
All components in atomiq derive from the Component class. In addition they can inherit from one or more
primitive classes, depending on the properties of the respective component. If, for example, the component represents
a device that can measure something, it will inherit from Measurable. If on the other hand, it can be
switched, it will inherit from Switchable.
Attributes¶
Classes¶
An atomiq Component |
|
Functions¶
|
Module Contents¶
- atomiq.components.primitives.logger¶
- class atomiq.components.primitives.Component(parent, identifier, debug_output=False, *args, **kwargs)[source]¶
Bases:
artiq.language.environment.HasEnvironmentAn atomiq Component
Every component in atomiq inherits from this class. It provides basic functionality for automatic and recursive building and initialization of components (prepare, build, prerun). It also takes care for joining kernel invariants along the inheritance tree.
Note
The arguments parent and identifier are automatically passed to the component object by the atomiq object builder.
- Parameters:
parent -- The parent context of the component. Usually this is the experiment that uses the component
identifier (str) -- A unique name to identify the component.
debug_output (bool) -- Set whether the component should show debug output. Using this switch rather than the debug kernel logger can allow the compiler to not include the debug commands in the kernel code if the output is not needed.
- kernel_invariants¶
- _shape_changing_arguments: tuple = ()¶
Names of the constructor arguments whose value (not only their type) changes the shape of the component, i.e. change the types and signatures of class members. The component factory gives objects of the same shape a shared class (and thus a shared compiler specialization). Arguments listed here are compared by value. Definitions along the inheritance hierarchy are merged.
- experiment¶
- identifier¶
- debug_output = False¶
- core¶
- _kernel_invariants¶
- _prepare_done = False¶
- _build_done = False¶
- _hooks_done = []¶
- _prerun()[source]¶
Specify here what should be done for this component before the run starts. In contrast to the _build() method, the _prerun() routine is executed on the core device before the actual experiment starts.
- children = []¶
- __in_build = True¶
- class atomiq.components.primitives.Measurable(channels)[source]¶
- Parameters:
channels (list[str])
- kernel_invariants¶
- channels: list[str]¶
- class atomiq.components.primitives.Triggerable(channels)[source]¶
- Parameters:
channels (list[str])
- kernel_invariants¶
- channels: list[str]¶
- class atomiq.components.primitives.Switchable(channels)[source]¶
- Parameters:
channels (list[str])
- kernel_invariants¶
- channels: list[str]¶