Skip to content
Pasqal Documentation

Raman

class pulser.channels.Raman(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, propagation_dir=None)

Bases: Channel

Raman beam channel.

Channel targeting the transition between the hyperfine ground states, in which the ‘digital’ basis is encoded. 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 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 at -3dB (50% reduction), in MHz.

  • 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 at -3dB (50% reduction), in MHz.

  • 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 at -3dB (50% reduction), in MHz.

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)

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

Parameters:

duration (int) – The duration to validate.

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['digital']

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 rise time (in ns).

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