qat.ir.lowered module

class PartitionedIR(target_map=<factory>, pulse_channels=<factory>, shots=None, compiled_shots=None, returns=<factory>, assigns=<factory>, acquire_map=<factory>, pp_map=<factory>, rp_map=<factory>)

Bases: object

Contains the IR that has been processed and reduced to a program per pulse channel. Also splits out any post-processing instructions to be used by the executor.

Programs are typically sent to hardware as a package per physical / logical channel, and need to be partitioned out. They also need to be free of instructions that are not used at runtime. This class does this.

This will eventually be replaced by some “partitoned module” approach, which might have a similar schema, or might just be many modules.

acquire_map: dict[PulseChannel | str, list[Acquire]]
assigns: list[Assign]
compiled_shots: int | None = None
get_pulse_channel(id)

Get a pulse channel by its ID.

Maintains API with the QuantumInstructionBuilder.

Return type:

PulseChannel | None

pp_map: dict[str, list[PostProcessing]]
pulse_channels: dict[str, PulseChannel]
returns: list[Return]
rp_map: dict[str, ResultsProcessing]
shots: int | None = None
target_map: dict[str, list[Instruction]]