PauliProductRotationGate
class qiskit.circuit.library.PauliProductRotationGate(pauli, angle, label=None)
Basi: Gate
Una rotazione di Pauli generica.
Questo implementa l'operazione unitaria
per un Pauli e un angolo di rotazione , che potrebbero essere rappresentati da un parametro non vincolato.
Esempio:
from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliProductRotationGate
from qiskit.quantum_info import Pauli
pauli = Pauli("XYZ")
ppr = PauliProductRotationGate(pauli, angle=0.2)
circuit = QuantumCircuit(10)
circuit.append(ppr, [1, 2, 6])Parametri
- pauli (qiskit.quantum_info.Pauli) – Il vettore di Pauli che definisce l'asse di rotazione. Può includere una fase di , ma non o .
- angle (ParameterValueType) – L'angolo di rotazione.
- label (str | None) – Un'etichetta facoltativa da visualizzare nel gate nelle rappresentazioni del circuito.
Attributi
base_class
Ottieni la classe base di questa istruzione. Questo elemento è sicuramente presente nell'albero di ereditarietà di self.
La «classe base» di un'istruzione è la classe più bassa nel suo albero di ereditarietà con cui l'oggetto deve essere considerato pienamente compatibile per _tutte_ le applicazioni circuitali. Ciò significa in genere che la sottoclasse è definita esclusivamente per offrire una maggiore praticità al programmatore rispetto alla classe base, mentre quest'ultima è la "vera" classe dal punto di vista comportamentale. In particolare, non si dovrebbe sovrascrivere base_class se si sta definendo una versione personalizzata di un'istruzione che verrà implementata in modo diverso dall'hardware, come ad esempio una strategia di misurazione alternativa, oppure una versione di un gate parametrizzato con un particolare insieme di parametri allo scopo di distinguerla in un Target dal gate completamente parametrizzato.
Questo è spesso esattamente equivalente a type(obj), tranne nel caso delle istanze singole delle istruzioni della libreria standard. Queste istanze singleton sono sottoclassi speciali della loro classe base, e questa proprietà restituirà tale classe base. Ad esempio:
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
TrueIn generale, non è consigliabile basarsi sulla classe precisa di un'istruzione; all'interno di un dato circuito, è prevedibile che Instruction.name sia un discriminatore più adeguato nella maggior parte dei casi.
decompositions
Recupera le scomposizioni dell'istruzione dall' SessionEquivalenceLibrary.
definition
Definizione del ritorno in termini di altre porte logiche di base.
label
Etichetta con istruzioni per la restituzione
mutable
Questa istanza è un'istanza unica modificabile o no?
Se questo attributo è presente, False l'istanza del gate è un singleton condiviso e non è modificabile.
name
Restituisce il nome.
num_clbits
Restituisce il numero di clbit.
num_qubits
Restituisce il numero di qubit.
params
I parametri di questo Instruction. Idealmente si tratterà di angoli di porta.
Metodi
add_decomposition
add_decomposition(decomposition)
Aggiungi una scomposizione dell'istruzione all' SessionEquivalenceLibrary
broadcast_arguments
broadcast_arguments(qargs, cargs)
Convalida e gestione degli argomenti e delle loro relazioni.
Ad esempio, cx([q[0],q[1]], q[2]) significa cx(q[0], q[2]); cx(q[1], q[2]). Questo metodo restituisce gli argomenti nel raggruppamento corretto. Nell'esempio riportato:
in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
[q[1], q[2]], []Le regole generali in materia di radiodiffusione sono le seguenti:
Se len(qargs) == 1:
[q[0], q[1]] -> [q[0]],[q[1]]Se len(qargs) == 2:
[[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]]Se len(qargs) è maggiore o uguale a 3:
[q[0], q[1]], [r[0], r[1]], ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
Parametri
- qargs (list) – Elenco degli argomenti relativi ai bit quantistici.
- cargs (list) – Elenco degli argomenti classici relativi ai bit.
Risultati
Una tupla con un solo argomento.
Aumenti
CircuitError – Se l'input non è valido. Ad esempio, il numero di argomenti non corrisponde a quanto previsto dal gate.
Tipo di restituzione
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
Restituisce una versione controllata di se stessa.
La porta restituita rappresenta un’operazione di Pauli ( ), dove è l’ e di Pauli originale, tensorializzata con i proiettori e (a seconda dello stato di controllo).
Parametri
- num_ctrl_qubits (int) – Numero di controlli da aggiungere. Il valore predefinito è
1. - label (str | None) – Etichetta del cancello (opzionale). Il valore predefinito è
None. Viene ignorato se il gate controllato è implementato come operazione annotata. - ctrl_state (int |str | None) – Lo stato di controllo della porta, specificato come numero intero o come stringa di bit (ad es.
"110"). SeNone, assume per impostazione predefinita lo stato in cui tutti i2**num_ctrl_qubits - 1bit sono a 1. - annotated (bool | None) – Indica se il gate controllato debba essere implementato come gate controllato o come operazione annotata. Se
None, si considera comeFalse.
Risultati
Una versione controllata di questo gate.
Aumenti
QiskitError – non valido num_ctrl_qubits o ctrl_state.
copy
copy(name=None)
Copia delle istruzioni.
Parametri
name (str) – nome da assegnare al circuito copiato; in None tal caso, il nome rimane invariato.
Risultati
una copia delle istruzioni attuali, con il nome aggiornato se è stato fornito
Tipo di restituzione
inverse
is_parameterized
pauli
pauli()
Restituisce l'asse di rotazione di Pauli.
Si noti che ciò non include alcun eventuale segno presente Pauli nell'oggetto utilizzato per costruire questa porta logica, poiché il segno viene assorbito dall'angolo di rotazione, accessibile tramite params l'attributo.
Risultati
L'asse di rotazione di Pauli.
Tipo di restituzione
power
power(exponent, annotated=False)
Elevare questo numero alla potenza di exponent.
Implementato come gate unitario (rif. UnitaryGate) oppure come operazione annotata (cfr. AnnotatedOperation). Nel caso di diverse porte standard, come ad esempio RXGate, quando la potenza di una porta può essere espressa in termini di un'altra porta standard che viene restituita direttamente.
Parametri
- exponent (float) – il potere di alzare il cancello per
- annotated (bool) – indica se il power gate può essere implementato come operazione annotata. Nel caso di diverse porte logiche standard, come ad esempio
RXGate, questo argomento viene ignorato quando la potenza di una porta può essere espressa in termini di un'altra porta logica standard.
Risultati
Un'operazione che implementa gate^exponent
Aumenti
CircuitError – Se il gate non è unitario
repeat
repeat(n)
Crea un'istruzione con self la ripetizione di « » volte.
Parametri
n (int) – Numero di volte in cui ripetere l'istruzione
Risultati
Che contiene la definizione.
Tipo di restituzione
Aumenti
CircuitError – Se n < 1.
reverse_ops
reverse_ops()
Per un'istruzione composta, invertire l'ordine delle sottoistruzioni.
Ciò avviene invertendo in modo ricorsivo tutte le sottoistruzioni. Non inverte alcun gate.
Risultati
una nuova istruzione con
sottoistruzioni invertite.
Tipo di restituzione
soft_compare
soft_compare(other)
Confronto graduale tra i gate. I loro nomi, il numero di qubit e il numero di bit classici devono corrispondere. Il numero di parametri deve corrispondere. Viene effettuato un confronto tra ciascun parametro. Se si è un " ParameterExpression ", questo non viene preso in considerazione.
Parametri
other (instruction) – altre istruzioni.
Risultati
il "self" e "other" sono equivalenti nelle espressioni dei parametri.
Tipo di restituzione
to_matrix
to_matrix()
Restituisce una rappresentazione sotto forma di matrice densa di PauliProductRotationGate.
Questo implementa
per un angolo di rotazione e Pauli .
to_mutable
to_mutable()
Restituisce una copia modificabile di questo gate.
Questo metodo restituirà una nuova copia modificabile di questa istanza di gate. Se si utilizza un'istanza singleton, si tratterà di una nuova istanza unica che può essere modificata. Se l'istanza è già modificabile, verrà eseguita una copia profonda di tale istanza.
validate_parameter
validate_parameter(parameter)
I parametri del gate devono essere di tipo int, float o ParameterExpression