qiskit-documentation/docs/api/qiskit/0.36/qiskit.circuit.library.Stat...

175 lines
5.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: StatePreparation
description: API reference for qiskit.circuit.library.StatePreparation
in_page_toc_min_heading_level: 1
python_api_type: class
python_api_name: qiskit.circuit.library.StatePreparation
---
# StatePreparation
<Class id="qiskit.circuit.library.StatePreparation" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.20/qiskit/circuit/library/data_preparation/state_preparation.py" signature="StatePreparation(params, num_qubits=None, inverse=False, label=None)" modifiers="class">
Bases: `qiskit.circuit.gate.Gate`
Complex amplitude state preparation.
Class that implements the (complex amplitude) state preparation of some flexible collection of qubit registers.
**Parameters**
* **params** (`Union`\[`str`, `list`, `int`, `Statevector`])
* Statevector: Statevector to initialize to.
* list: vector of complex amplitudes to initialize to.
* string: labels of basis states of the Pauli eigenstates Z, X, Y. See [`Statevector.from_label()`](qiskit.quantum_info.Statevector#from_label "qiskit.quantum_info.Statevector.from_label"). Notice the order of the labels is reversed with respect to the qubit index to be applied to. Example label 01 initializes the qubit zero to $|1\rangle$ and the qubit one to $|0\rangle$.
* int: an integer that is used as a bitmap indicating which qubits to initialize to $|1\rangle$. Example: setting params to 5 would initialize qubit 0 and qubit 2 to $|1\rangle$ and qubit 1 to $|0\rangle$.
* **num\_qubits** (`Optional`\[`int`]) This parameter is only used if params is an int. Indicates the total number of qubits in the initialize call. Example: initialize covers 5 qubits and params is 3. This allows qubits 0 and 1 to be initialized to $|1\rangle$ and the remaining 3 qubits to be initialized to $|0\rangle$.
* **inverse** (`bool`) if True, the inverse state is constructed.
* **label** (`Optional`\[`str`]) An optional label for the gate
**Raises**
**QiskitError** `num_qubits` parameter used when `params` is not an integer
When a Statevector argument is passed the state is prepared using a recursive initialization algorithm, including optimizations, from \[1], as well as some additional optimizations including removing zero rotations and double cnots.
**References:** \[1] Shende, Bullock, Markov. Synthesis of Quantum Logic Circuits (2004) \[[https://arxiv.org/abs/quant-ph/0406176v5](https://arxiv.org/abs/quant-ph/0406176v5)]
## Methods Defined Here
### broadcast\_arguments
<Function id="qiskit.circuit.library.StatePreparation.broadcast_arguments" signature="StatePreparation.broadcast_arguments(qargs, cargs)">
Validation and handling of the arguments and its relationship.
For example, `cx([q[0],q[1]], q[2])` means `cx(q[0], q[2]); cx(q[1], q[2])`. This method yields the arguments in the right grouping. In the given example:
```python
in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
[q[1], q[2]], []
```
The general broadcasting rules are:
> * If len(qargs) == 1:
>
> ```python
> [q[0], q[1]] -> [q[0]],[q[1]]
> ```
>
> * If len(qargs) == 2:
>
> ```python
> [[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]]
> [[q[0]], [r[0], r[1]]] -> [q[0], r[0]], [q[0], r[1]]
> [[q[0], q[1]], [r[0]]] -> [q[0], r[0]], [q[1], r[0]]
> ```
>
> * If len(qargs) >= 3:
>
> ```python
> [q[0], q[1]], [r[0], r[1]], ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
> ```
**Parameters**
* **qargs** List of quantum bit arguments.
* **cargs** List of classical bit arguments.
**Returns**
A tuple with single arguments.
**Raises**
**CircuitError** If the input is not valid. For example, the number of arguments does not match the gate expectation.
</Function>
### inverse
<Function id="qiskit.circuit.library.StatePreparation.inverse" signature="StatePreparation.inverse()">
Return inverted StatePreparation
</Function>
### validate\_parameter
<Function id="qiskit.circuit.library.StatePreparation.validate_parameter" signature="StatePreparation.validate_parameter(parameter)">
StatePreparation instruction parameter can be str, int, float, and complex.
</Function>
## Attributes
### condition\_bits
<Attribute id="qiskit.circuit.library.StatePreparation.condition_bits">
Get Clbits in condition.
**Return type**
`List`\[`Clbit`]
</Attribute>
### decompositions
<Attribute id="qiskit.circuit.library.StatePreparation.decompositions">
Get the decompositions of the instruction from the SessionEquivalenceLibrary.
</Attribute>
### definition
<Attribute id="qiskit.circuit.library.StatePreparation.definition">
Return definition in terms of other basic gates.
</Attribute>
### duration
<Attribute id="qiskit.circuit.library.StatePreparation.duration">
Get the duration.
</Attribute>
### label
<Attribute id="qiskit.circuit.library.StatePreparation.label">
Return instruction label
**Return type**
`str`
</Attribute>
### name
<Attribute id="qiskit.circuit.library.StatePreparation.name">
Return the name.
</Attribute>
### num\_clbits
<Attribute id="qiskit.circuit.library.StatePreparation.num_clbits">
Return the number of clbits.
</Attribute>
### num\_qubits
<Attribute id="qiskit.circuit.library.StatePreparation.num_qubits">
Return the number of qubits.
</Attribute>
### params
<Attribute id="qiskit.circuit.library.StatePreparation.params">
return instruction params.
</Attribute>
### unit
<Attribute id="qiskit.circuit.library.StatePreparation.unit">
Get the time unit of duration.
</Attribute>
</Class>