def from_label(cls, label): r"""Return a tensor product of Pauli X,Y,Z eigenstates. .. list-table:: Single-qubit state labels :header-rows: 1 * - Label - Statevector * - ``"0"`` - :math:`\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}` * - ``"1"`` - :math:`\begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}` * - ``"+"`` - :math:`\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}` * - ``"-"`` - :math:`\frac{1}{2}\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix}` * - ``"r"`` - :math:`\frac{1}{2}\begin{pmatrix} 1 & -i \\ i & 1 \end{pmatrix}` * - ``"l"`` - :math:`\frac{1}{2}\begin{pmatrix} 1 & i \\ -i & 1 \end{pmatrix}` Args: label (string): a eigenstate string ket label (see table for allowed values). Returns: Statevector: The N-qubit basis state density matrix. Raises: QiskitError: if the label contains invalid characters, or the length of the label is larger than an explicitly specified num_qubits. """ from qiskit.quantum_info.states.statevector import Statevector return DensityMatrix(Statevector.from_label(label))
def test_from_labels(self): """Initialize from labels.""" desired_sv = Statevector.from_label('01+-lr') qc = QuantumCircuit(6) qc.initialize('01+-lr', range(6)) job = execute(qc, BasicAer.get_backend('statevector_simulator')) result = job.result() statevector = result.get_statevector() fidelity = state_fidelity(statevector, desired_sv) self.assertGreater( fidelity, self._desired_fidelity, "Initializer has low fidelity {:.2g}.".format(fidelity))
def from_label(cls, label): """Return a tensor product of Pauli X,Y,Z eigenstates. Args: label (string): a eigenstate string ket label 0,1,+,-,r,l. Returns: Statevector: The N-qubit basis state density matrix. Raises: QiskitError: if the label contains invalid characters, or the length of the label is larger than an explicitly specified num_qubits. Additional Information: The labels correspond to the single-qubit states: '0': [[1, 0], [0, 0]] '1': [[0, 0], [0, 1]] '+': [[0.5, 0.5], [0.5 , 0.5]] '-': [[0.5, -0.5], [-0.5 , 0.5]] 'r': [[0.5, -0.5j], [0.5j , 0.5]] 'l': [[0.5, 0.5j], [-0.5j , 0.5]] """ return DensityMatrix(Statevector.from_label(label))