Skip to content

Pulser

The Pulser backend features a basic integration with the pulse-level programming interface Pulser. This backend offers for now few simple operations which are translated into a valid, non time-dependent pulse sequence. In particular, one has access to:

  • analog rotations: AnalogRx and AnalogRy blocks
  • free evolution blocks (basically no pulse, just interaction): AnalogWait block
  • a block for creating entangled states: AnalogEntanglement
  • digital rotation Rx and Ry

Backend dataclass

Bases: Backend

The Pulser backend

create_register(register, spacing=DEFAULT_SPACING)

Create Pulser register instance.

PARAMETER DESCRIPTION
register

graph representing a register with accompanying coordinate data

TYPE: Register

spacing

distance between qubits in micrometers

TYPE: float DEFAULT: DEFAULT_SPACING

RETURNS DESCRIPTION
Register

Pulser register

TYPE: Register

Source code in qadence/backends/pulser/backend.py
def create_register(register: Register, spacing: float = DEFAULT_SPACING) -> PulserRegister:
    """Create Pulser register instance.

    Args:
        register (Register): graph representing a register with accompanying coordinate data
        spacing (float): distance between qubits in micrometers

    Returns:
        Register: Pulser register
    """

    # create register from coordinates
    coords = np.array(list(register.coords.values()))
    return PulserRegister.from_coordinates(coords * spacing)

Device

Bases: StrEnum

Supported types of devices for Pulser backend

IDEALIZED = IdealDevice class-attribute instance-attribute

idealized device, least realistic

REALISTIC = RealisticDevice class-attribute instance-attribute

device with realistic specs