-
Couldn't load subscription status.
- Fork 30
Description
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:
MappingPulseTemplateArithmeticPulseTemplate
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?