175 lines
10 KiB
Plaintext
175 lines
10 KiB
Plaintext
---
|
||
title: ScalableSymbolicPulse
|
||
description: API reference for qiskit.pulse.library.ScalableSymbolicPulse
|
||
in_page_toc_min_heading_level: 1
|
||
python_api_type: class
|
||
python_api_name: qiskit.pulse.library.ScalableSymbolicPulse
|
||
---
|
||
|
||
# ScalableSymbolicPulse
|
||
|
||
<Class id="qiskit.pulse.library.ScalableSymbolicPulse" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.25/qiskit/pulse/library/symbolic_pulses.py" signature="qiskit.pulse.library.ScalableSymbolicPulse(pulse_type, duration, amp, angle, parameters=None, name=None, limit_amplitude=None, envelope=None, constraints=None, valid_amp_conditions=None)" modifiers="class">
|
||
Bases: [`SymbolicPulse`](qiskit.pulse.library.SymbolicPulse "qiskit.pulse.library.symbolic_pulses.SymbolicPulse")
|
||
|
||
Subclass of [`SymbolicPulse`](qiskit.pulse.library.SymbolicPulse "qiskit.pulse.library.SymbolicPulse") for pulses with scalable envelope.
|
||
|
||
Instance of [`ScalableSymbolicPulse`](#qiskit.pulse.library.ScalableSymbolicPulse "qiskit.pulse.library.ScalableSymbolicPulse") behaves the same as an instance of [`SymbolicPulse`](qiskit.pulse.library.SymbolicPulse "qiskit.pulse.library.SymbolicPulse"), but its envelope is assumed to have a scalable form $\text{amp}\times\exp\left(i\times\text{angle}\right)\times\text{F} \left(t,\text{parameters}\right)$, where $\text{F}$ is some function describing the rest of the envelope, and both amp and angle are real (float). Note that both amp and angle are stored in the [`parameters`](#qiskit.pulse.library.ScalableSymbolicPulse.parameters "qiskit.pulse.library.ScalableSymbolicPulse.parameters") dictionary of the [`ScalableSymbolicPulse`](#qiskit.pulse.library.ScalableSymbolicPulse "qiskit.pulse.library.ScalableSymbolicPulse") instance.
|
||
|
||
When two [`ScalableSymbolicPulse`](#qiskit.pulse.library.ScalableSymbolicPulse "qiskit.pulse.library.ScalableSymbolicPulse") objects are equated, instead of comparing amp and angle individually, only the complex amplitude :math:’text\{amp}timesexpleft(itimestext\{angle}right)’ is compared.
|
||
|
||
Create a scalable symbolic pulse.
|
||
|
||
<Admonition title="Deprecated since version 0.25.0" type="danger">
|
||
Setting `amp` to a complex in the ScalableSymbolicPulse constructor is deprecated as of qiskit-terra 0.25.0. It will be removed no earlier than 3 months after the release date. Instead, use a float for `amp` (for the magnitude) and a float for `angle`
|
||
</Admonition>
|
||
|
||
**Parameters**
|
||
|
||
* **pulse\_type** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – Display name of this pulse shape.
|
||
* **duration** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – Duration of pulse.
|
||
* **amp** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – The magnitude of the complex amplitude of the pulse.
|
||
* **angle** ([*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")) – The phase of the complex amplitude of the pulse.
|
||
* **parameters** ([*Dict*](https://docs.python.org/3/library/typing.html#typing.Dict "(in Python v3.12)")*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")*,* [*ParameterExpression*](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression") *|*[*complex*](https://docs.python.org/3/library/functions.html#complex "(in Python v3.12)")*] | None*) – Dictionary of pulse parameters that defines the pulse envelope.
|
||
* **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – Display name for this particular pulse envelope.
|
||
* **limit\_amplitude** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)") *| None*) – If `True`, then limit the absolute value of the amplitude of the waveform to 1. The default is `True` and the amplitude is constrained to 1.
|
||
* **envelope** (*Expr | None*) – Pulse envelope expression.
|
||
* **constraints** (*Expr | None*) – Pulse parameter constraint expression.
|
||
* **valid\_amp\_conditions** (*Expr | None*) – Extra conditions to skip a full-waveform check for the amplitude limit. If this condition is not met, then the validation routine will investigate the full-waveform and raise an error when the amplitude norm of any data point exceeds 1.0. If not provided, the validation always creates a full-waveform.
|
||
|
||
**Raises**
|
||
|
||
[**PulseError**](pulse#qiskit.pulse.PulseError "qiskit.pulse.PulseError") – If both amp is complex and angle is not None or 0.
|
||
|
||
## Attributes
|
||
|
||
### constraints
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.constraints">
|
||
Return symbolic expression for the pulse parameter constraints.
|
||
</Attribute>
|
||
|
||
### duration
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.duration" />
|
||
|
||
### envelope
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.envelope">
|
||
Return symbolic expression for the pulse envelope.
|
||
</Attribute>
|
||
|
||
### id
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.id">
|
||
Unique identifier for this pulse.
|
||
</Attribute>
|
||
|
||
### limit\_amplitude
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.limit_amplitude" attributeValue="True" />
|
||
|
||
### name
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.name" />
|
||
|
||
### parameters
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.parameters" />
|
||
|
||
### pulse\_type
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.pulse_type">
|
||
Return display name of the pulse shape.
|
||
</Attribute>
|
||
|
||
### valid\_amp\_conditions
|
||
|
||
<Attribute id="qiskit.pulse.library.ScalableSymbolicPulse.valid_amp_conditions">
|
||
Return symbolic expression for the pulse amplitude constraints.
|
||
</Attribute>
|
||
|
||
## Methods
|
||
|
||
### draw
|
||
|
||
<Function id="qiskit.pulse.library.ScalableSymbolicPulse.draw" signature="draw(style=None, backend=None, time_range=None, time_unit='dt', show_waveform_info=True, plotter='mpl2d', axis=None)">
|
||
Plot the interpolated envelope of pulse.
|
||
|
||
**Parameters**
|
||
|
||
* **style** ([*Dict*](https://docs.python.org/3/library/typing.html#typing.Dict "(in Python v3.12)")*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")*,* [*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)")*] | None*) – Stylesheet options. This can be dictionary or preset stylesheet classes. See `IQXStandard`, `IQXSimple`, and `IQXDebugging` for details of preset stylesheets.
|
||
|
||
* **backend** (*Optional\[BaseBackend]*) – Backend object to play the input pulse program. If provided, the plotter may use to make the visualization hardware aware.
|
||
|
||
* **time\_range** ([*Tuple*](https://docs.python.org/3/library/typing.html#typing.Tuple "(in Python v3.12)")*\[*[*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*,* [*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")*] | None*) – Set horizontal axis limit. Tuple `(tmin, tmax)`.
|
||
|
||
* **time\_unit** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – The unit of specified time range either `dt` or `ns`. The unit of `ns` is available only when `backend` object is provided.
|
||
|
||
* **show\_waveform\_info** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – Show waveform annotations, i.e. name, of waveforms. Set `True` to show additional information about waveforms.
|
||
|
||
* **plotter** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) –
|
||
|
||
Name of plotter API to generate an output image. One of following APIs should be specified:
|
||
|
||
```python
|
||
mpl2d: Matplotlib API for 2D image generation.
|
||
Matplotlib API to generate 2D image. Charts are placed along y axis with
|
||
vertical offset. This API takes matplotlib.axes.Axes as `axis` input.
|
||
```
|
||
|
||
axis and style kwargs may depend on the plotter.
|
||
|
||
* **axis** ([*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(in Python v3.12)") *| None*) – Arbitrary object passed to the plotter. If this object is provided, the plotters use a given `axis` instead of internally initializing a figure object. This object format depends on the plotter. See plotter argument for details.
|
||
|
||
**Returns**
|
||
|
||
Visualization output data. The returned data type depends on the `plotter`. If matplotlib family is specified, this will be a `matplotlib.pyplot.Figure` data.
|
||
</Function>
|
||
|
||
### get\_waveform
|
||
|
||
<Function id="qiskit.pulse.library.ScalableSymbolicPulse.get_waveform" signature="get_waveform()">
|
||
Return a Waveform with samples filled according to the formula that the pulse represents and the parameter values it contains.
|
||
|
||
Since the returned array is a discretized time series of the continuous function, this method uses a midpoint sampler. For `duration`, return:
|
||
|
||
$$
|
||
\{f(t+0.5) \in \mathbb{C} | t \in \mathbb{Z} \wedge 0<=t<\texttt{duration}\}
|
||
$$
|
||
|
||
**Returns**
|
||
|
||
A waveform representation of this pulse.
|
||
|
||
**Raises**
|
||
|
||
* [**PulseError**](pulse#qiskit.pulse.PulseError "qiskit.pulse.PulseError") – When parameters are not assigned.
|
||
* [**PulseError**](pulse#qiskit.pulse.PulseError "qiskit.pulse.PulseError") – When expression for pulse envelope is not assigned.
|
||
|
||
**Return type**
|
||
|
||
[*Waveform*](qiskit.pulse.library.Waveform "qiskit.pulse.library.waveform.Waveform")
|
||
</Function>
|
||
|
||
### is\_parameterized
|
||
|
||
<Function id="qiskit.pulse.library.ScalableSymbolicPulse.is_parameterized" signature="is_parameterized()">
|
||
Return True iff the instruction is parameterized.
|
||
|
||
**Return type**
|
||
|
||
[bool](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")
|
||
</Function>
|
||
|
||
### validate\_parameters
|
||
|
||
<Function id="qiskit.pulse.library.ScalableSymbolicPulse.validate_parameters" signature="validate_parameters()">
|
||
Validate parameters.
|
||
|
||
**Raises**
|
||
|
||
[**PulseError**](pulse#qiskit.pulse.PulseError "qiskit.pulse.PulseError") – If the parameters passed are not valid.
|
||
</Function>
|
||
</Class>
|
||
|