Skip to content
Pasqal Documentation

Rydberg

class pulser.channels.Rydberg(addressing, max_abs_detuning, max_amp, min_retarget_interval=None, fixed_retarget_t=None, max_targets=None, clock_period=1, min_duration=1, max_duration=100000000, min_avg_amp=0, mod_bandwidth=None, custom_phase_jump_time=None, eom_config=None, propagation_dir=None)

Bases: Channel

Rydberg beam channel.

Channel targeting the transition between the ground and rydberg states, thus encoding the ‘ground-rydberg’ basis. See base class.

Attributes

basis

The addressed basis name.

clock_period

custom_phase_jump_time

eigenstates

The eigenstates associated with the basis.

eom_config

fixed_retarget_t

max_duration

max_targets

min_avg_amp

min_duration

min_retarget_interval

mod_bandwidth

name

The name of the channel.

phase_jump_time

Time taken to change the phase between consecutive pulses (in ns).

propagation_dir

rise_time

The amplitude rise time (in ns).

addressing

max_abs_detuning

max_amp

Methods

Global

Initializes the channel with global addressing.

Local

Initializes the channel with local addressing.

apply_modulation

Applies the modulation transfer fuction to the input samples.

calc_modulation_buffer

Calculates the minimal buffers needed around a modulated waveform.

default_id

Generates the default ID for indexing this channel in a Device.

is_virtual

Whether the channel is virtual (i.e. partially defined).

modulate

Modulates the input according to the channel's modulation bandwidth.

supports_eom

Whether the channel supports EOM mode operation.

validate_duration

Validates and adapts the duration of an instruction on this channel.

validate_pulse

Checks if a pulse can be executed this channel.

Signatures

classmethod Global(max_abs_detuning, max_amp, **kwargs)

Initializes the channel with global addressing.

Parameters:
  • max_abs_detuning (float | None) – Maximum possible detuning (in rad/µs), in absolute value.

  • max_amp (float | None) – Maximum pulse amplitude (in rad/µs).

Keyword Arguments:
  • clock_period (int, default=4) – The duration of a clock cycle (in ns). The duration of a pulse or delay instruction is enforced to be a multiple of the clock cycle.

  • min_duration (int, default=1) – The shortest duration an instruction can take.

  • max_duration (Optional[int], default=10000000) – The longest duration an instruction can take.

  • mod_bandwidth (Optional[float], default=None) – The modulation bandwidth (in MHz), following Pulser’s non-standard definition (2x the -3dB bandwidth, or the frequency at 75% amplitude attenuation).

  • min_avg_amp – The minimum average amplitude of a pulse (when not zero).

  • custom_phase_jump_time – An optional custom value for the phase jump time that overrides the default value estimated from the modulation bandwidth. It is not enforced in EOM mode.

  • propagation_dir – The propagation direction of the beam associated with the channel, given as a vector in 3D space.

Return type:

TypeVar(ChannelType, bound= Channel)

classmethod Local(max_abs_detuning, max_amp, min_retarget_interval=0, fixed_retarget_t=0, max_targets=None, **kwargs)

Initializes the channel with local addressing.

Parameters:
  • max_abs_detuning (float | None) – Maximum possible detuning (in rad/µs), in absolute value.

  • max_amp (float | None) – Maximum pulse amplitude (in rad/µs).

  • min_retarget_interval (int, default: 0) – Minimum time required between two target instructions (in ns).

  • fixed_retarget_t (int, default: 0) – Time taken to change the target (in ns).

  • max_targets (int | None, default: None) – Maximum number of atoms the channel can target simultaneously.

Keyword Arguments:
  • clock_period (int, default=4) – The duration of a clock cycle (in ns). The duration of a pulse or delay instruction is enforced to be a multiple of the clock cycle.

  • min_duration (int, default=1) – The shortest duration an instruction can take.

  • max_duration (Optional[int], default=10000000) – The longest duration an instruction can take.

  • mod_bandwidth (Optional[float], default=None) – The modulation bandwidth (in MHz), following Pulser’s non-standard definition (2x the -3dB bandwidth, or the frequency at 75% amplitude attenuation).

  • min_avg_amp – The minimum average amplitude of a pulse (when not zero).

  • custom_phase_jump_time – An optional custom value for the phase jump time that overrides the default value estimated from the modulation bandwidth. It is not enforced in EOM mode.

Return type:

TypeVar(ChannelType, bound= Channel)

static apply_modulation(input_samples, mod_bandwidth)

Applies the modulation transfer fuction to the input samples.

Note

This is strictly the application of the modulation transfer function. The samples should be padded beforehand.

Parameters:
  • input_samples (ArrayLike) – The samples to modulate.

  • mod_bandwidth (float) – The modulation bandwidth (in MHz), following Pulser’s non-standard definition (2x the -3dB bandwidth).

Return type:

AbstractArray

calc_modulation_buffer(input_samples, mod_samples, max_allowed_diff=0.01, eom=False)

Calculates the minimal buffers needed around a modulated waveform.

Parameters:
  • input_samples (ArrayLike) – The input samples.

  • mod_samples (ArrayLike) – The modulated samples. Must be of size len(input_samples) + 2 * self.rise_time.

  • max_allowed_diff (float, default: 0.01) – The maximum allowed difference between the input and modulated samples at the end points.

  • eom (bool, default: False) – Whether to calculate the modulation buffers with the EOM bandwidth.

Return type:

tuple[int, int]

Returns:

The minimum buffer times at the start and end of the samples, in ns.

default_id()

Generates the default ID for indexing this channel in a Device.

Return type:

str

is_virtual()

Whether the channel is virtual (i.e. partially defined).

Return type:

bool

modulate(input_samples, keep_ends=False, eom=False)

Modulates the input according to the channel’s modulation bandwidth.

Parameters:
  • input_samples (ArrayLike) – The samples to modulate.

  • keep_ends (bool, default: False) – Assume the end values of the samples were kept constant (i.e. there is no ramp from zero on the ends).

  • eom (bool, default: False) – Whether to calculate the modulation using the EOM bandwidth.

Return type:

AbstractArray

Returns:

The modulated output signal.

supports_eom()

Whether the channel supports EOM mode operation.

Return type:

bool

validate_duration(duration, round_up=True)

Validates and adapts the duration of an instruction on this channel.

Parameters:
  • duration (int) – The duration to validate.

  • round_up (bool, default: True) – Whether to return the duration rounded up to the channel’s clock period.

Return type:

int

Returns:

The duration, potentially adapted to the channels specs.

validate_pulse(pulse)

Checks if a pulse can be executed this channel.

Parameters:

pulse (Pulse) – The pulse to validate.

Return type:

None

property basis: Literal['ground-rydberg']

The addressed basis name.

property eigenstates: list[Literal['u', 'd', 'r', 'g', 'h', 'x']]

The eigenstates associated with the basis.

Returns a tuple of labels, ranked in decreasing order of their associated eigenenergy, as such:

Name

Eigenstate (see Conventions)

Associated label

Up state

\(|0\rangle\)

"u"

Down state

\(|1\rangle\)

"d"

Rydberg state

\(|r\rangle\)

"r"

Ground state

\(|g\rangle\)

"g"

Hyperfine state

\(|h\rangle\)

"h"

Error state

\(|x\rangle\)

"x"

property name: str

The name of the channel.

property phase_jump_time: int

Time taken to change the phase between consecutive pulses (in ns).

Corresponds to two times the rise time when custom_phase_jump_time is not defined.

property rise_time: int

The amplitude rise time (in ns).

The time taken to go from 10% to 90% output amplitude in response to a step change in the input.

Warning

Not to be confused with the intensity rise time, which is what is usually measured experimentally and is defined as the time taken to go from 10% to 90% output power in response to a step change in the input.