Microwave
- class pulser.channels.Microwave(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
Microwave adressing channel.
Channel targeting the transition between two rydberg states, thus encoding the ‘XY’ basis. See base class.
Attributes
The addressed basis name.
clock_period
custom_phase_jump_time
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
The name of the channel.
Time taken to change the phase between consecutive pulses (in ns).
propagation_dir
The rise time (in ns).
addressing
max_abs_detuning
max_amp
Methods
Initializes the channel with global addressing.
Initializes the channel with local addressing.
Applies the modulation transfer fuction to the input samples.
Calculates the minimal buffers needed around a modulated waveform.
Generates the default ID for indexing this channel in a Device.
Whether the channel is virtual (i.e. partially defined).
Modulates the input according to the channel's modulation bandwidth.
Whether the channel supports EOM mode operation.
Validates and adapts the duration of an instruction on this channel.
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['XY']
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.