Component#
Class Arguments
Argument |
Type |
Default Value |
---|---|---|
parent |
||
identifier |
TStr |
|
debug_output |
TBool |
False |
Bold arguments are mandatory. For more documentation on the listed arguments refer to the class definition below. If parameters appear in this list but not in the class definition below, please recursively check the linked base classes for the definition of the parameter.
Inheritance Diagram
Example Component Dictionary
{
"primitives_example": {
"classname": "atomiq.components.primitives.Component",
"arguments": {
"parent": "<mandatory parameter ()>",
"identifier": "<mandatory parameter (TStr)>",
"debug_output": false
}
}
}
Class Description
- class atomiq.components.primitives.Component(parent, identifier, debug_output=False, *args, **kwargs)
Bases:
HasEnvironment
An 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 (TStr) -- A unique name to identify the component.
debug_output (TBool) -- 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.
- append_to_dataset(key, value)
Append a value to a dataset.
The target dataset must be a list (i.e. support
append()
), and must have previously been set from this experiment.The broadcast/persist/archive mode of the given key remains unchanged from when the dataset was last set. Appended values are transmitted efficiently as incremental modifications in broadcast mode.
- build()
Should be implemented by the user to request arguments.
Other initialization steps such as requesting devices may also be performed here.
There are two situations where the requested devices are replaced by
DummyDevice()
and arguments are set to their defaults (orNone
) instead: when the repository is scanned to build the list of available experiments and when the dataset browserartiq_browser
is used to open or run the analysis stage of an experiment. Do not rely on being able to operate on devices or arguments inbuild()
.Datasets are read-only in this method.
Leftover positional and keyword arguments from the constructor are forwarded to this method. This is intended for experiments that are only meant to be executed programmatically (not from the GUI).
- call_child_method(method, *args, **kwargs)
Calls the named method for each child, if it exists for that child, in the order of registration.
- Parameters:
method (str) -- Name of the method to call
args -- Tuple of positional arguments to pass to all children
kwargs -- Dict of keyword arguments to pass to all children
- get_argument(key, processor, group=None, tooltip=None)
Retrieves and returns the value of an argument.
This function should only be called from
build
.- Parameters:
key -- Name of the argument.
processor -- A description of how to process the argument, such as instances of
BooleanValue
andNumberValue
.group -- An optional string that defines what group the argument belongs to, for user interface purposes.
tooltip -- An optional string to describe the argument in more detail, applied as a tooltip to the argument name in the user interface.
- get_dataset(key, default=<class 'artiq.language.environment.NoDefault'>, archive=True)
Returns the contents of a dataset.
The local storage is searched first, followed by the master storage (which contains the broadcasted datasets from all experiments) if the key was not found initially.
If the dataset does not exist, returns the default value. If no default is provided, raises
KeyError
.By default, datasets obtained by this method are archived into the output HDF5 file of the experiment. If an archived dataset is requested more than one time or is modified, only the value at the time of the first call is archived. This may impact reproducibility of experiments.
- Parameters:
archive -- Set to
False
to prevent archival together with the run's results. Default isTrue
.
- get_device(key)
Creates and returns a device driver.
- get_device_db()
Returns the full contents of the device database.
- mutate_dataset(key, index, value)
Mutate an existing dataset at the given index (e.g. set a value at a given position in a NumPy array)
If the dataset was created in broadcast mode, the modification is immediately transmitted.
If the index is a tuple of integers, it is interpreted as
slice(*index)
. If the index is a tuple of tuples, each sub-tuple is interpreted asslice(*sub_tuple)
(multi-dimensional slicing).
- set_dataset(key, value, broadcast=False, persist=False, archive=True)
Sets the contents and handling modes of a dataset.
Datasets must be scalars (
bool
,int
,float
or NumPy scalar) or NumPy arrays.- Parameters:
broadcast -- the data is sent in real-time to the master, which dispatches it.
persist -- the master should store the data on-disk. Implies broadcast.
archive -- the data is saved into the local storage of the current run (archived as a HDF5 file).
- set_default_scheduling(priority=None, pipeline_name=None, flush=None)
Sets the default scheduling options.
This function should only be called from
build
.
- setattr_argument(key, processor=None, group=None, tooltip=None)
Sets an argument as attribute. The names of the argument and of the attribute are the same.
The key is added to the instance's kernel invariants.
- setattr_dataset(key, default=<class 'artiq.language.environment.NoDefault'>, archive=True)
Sets the contents of a dataset as attribute. The names of the dataset and of the attribute are the same.
- setattr_device(key)
Sets a device driver as attribute. The names of the device driver and of the attribute are the same.
The key is added to the instance's kernel invariants.