Skip to content

Atomicity overhaul #578

@shumpohl

Description

@shumpohl

Currently the atomicity is half-baked into the type system. A pulse template is atomic if it is always translated into a single waveform. It currently is possible to translate all templates to waveforms by passing them in the to_single_waveform argument of create_program. However they do not implement the interface of AtomicPulseTemplate i.e. have a build_waveform method.

Some "transforming" pulse templates are not subclasses of AtomicPulseTemplate but are expected to behave as such if their wrapped pulse template is atomic:

  • MappingPulseTemplate
  • ArithmeticPulseTemplate

This might lead to problems if they are used in AtomicPulseTemplates that expect their subtemplates to be atomic like AtomicMultiChannelPulseTemplate and ArithmeticAtomicPulseTemplate. One example for this is here: #577 (comment)

This requires some design thought. Maybe something like a TransformingPulseTemplate or TransparentPulseTemplate?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions