FermionicGate
class FermionicGate(name, num_modes, /, params=None, *, label=None)
Basi: Gate
La classe base per tutti i gate fermionici.
Per garantire la coerenza, alle istanze di FermionicCircuit. possono essere aggiunte solo sottoclassi di questa classe di gate. Pertanto, questa classe funge (per lo più) da tipo (per il momento).
Trattandosi di una sottoclasse di, la Gate documentazione relativa ai suoi metodi potrebbe fare riferimento ai qubit. Tali riferimenti devono essere interpretati come riferiti ai fermioni nel contesto delle istanze di questa sottoclasse.
Può anche capitare che alcuni dei metodi ereditati non abbiano sempre senso a causa di questa reinterpretazione. Sei stato avvertito.
Parametri
- name (str) – Il nome del cancello.
- num_qubits – Il numero di qubit su cui agisce il gate.
- params (list | None) – Un elenco di parametri.
- label (str | None) – Un'etichetta facoltativa per il cancello.
- num_modes (int)
Attributi
num_modes
Il numero di modi fermionici su cui agisce questo gate.
Attributi ereditati
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 al programmatore una maggiore comodità 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.
Spesso ciò equivale esattamente a type(obj), tranne nel caso di istanze singole delle istruzioni della libreria standard. Queste istanze singleton sono sottoclassi speciali della loro classe base, e questa proprietà restituirà proprio quella 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 criterio di discriminazione più adeguato nella maggior parte dei casi.
decompositions
Recupera le scomposizioni dell'istruzione dall' SessionEquivalenceLibrary e.
definition
Definizione del ritorno in termini di altre porte logiche di base.
label
Etichetta con le istruzioni per la restituzione
mutable
Questa istanza è un'istanza unica mutabile 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 gate.
Metodi del protocollo
_apply_unitary_
_apply_unitary_(vec, norb, nelec, copy)
Applica questa porta a un vettore di stato ffsim, implementando il protocollo ffsim.
Questo è il punto di ingresso per il posizionamento dell’identità del protocollo ffsim.SupportsApplyUnitary di ffsim (replicato localmente come SupportsApplyUnitary): esso presuppone che il gate agisca sulle modalità del 0..num_modes vettore di stato e delega al meccanismo sensibile al posizionamento ( _apply_unitary_placed_() vedi SupportsApplyUnitaryPlaced), che ogni gate fermionico concreto implementa. Si veda quel metodo per la semantica di ( vec compresa la verifica dell'accettabilità di un vettore None ), norb, nelec, e copy.
Aumenti
NotImplementedError – se questo gate non implementa _apply_unitary_placed_ (un semplice FermionicGate utilizzato solo come indicatore di tipo) e, pertanto, non può essere applicato a un vettore di stato.
Parametri
Tipo di restituzione
np.ndarray
Metodi ereditati
add_decomposition
add_decomposition(decomposition)
Aggiungi una scomposizione dell'istruzione all' SessionEquivalenceLibrary e.
broadcast_arguments
broadcast_arguments(qargs, cargs)
Convalida e gestione degli argomenti e delle loro relazioni.
Ad esempio, significa cx([q[0],q[1]], q[2]) 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 norme 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) >= 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 bit classici.
Risultati
Una tupla con un unico 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.
Il gate controllato viene implementato come ControlledGate quando annotated è False, e come AnnotatedOperation quando è annotated True.
qiskit.circuit.gate.Gate.control()L'argomento annotated è deprecato a partire dalla versione 2.3 di Qiskit. Verrà rimosso in Qiskit 3.0. Il metodo Gate.control () non accetta più il valore annotated=None. Il nuovo valore predefinito è annotated=True, il che indica che il gate controllato viene rappresentato come un AnnotatedOperation (a meno che non esista già una classe dedicata ai gate controllati). È possibile impostare esplicitamente annotated=False per mantenere il comportamento precedente. Tuttavia, si consiglia di utilizzare annotated=True, poiché in questo modo la costruzione del circuito controllato viene rinviata al transpiler e, inoltre, vengono rese possibili ulteriori ottimizzazioni delle porte controllate (che in genere portano a circuiti di qualità superiore).
Parametri
- num_ctrl_qubits (int) – Numero di controlli da aggiungere. Il valore predefinito è
1. - label (str | None) – Etichetta opzionale per il cancello. Il valore predefinito è
None. Viene ignorato se il gate controllato è implementato come operazione annotata. - ctrl_state (int |str | None) – Lo stato di controllo del gate, specificato come numero intero o come stringa di bit (ad es.
"110"). SeNone, il valore predefinito è lo stato "tutti a uno"2**num_ctrl_qubits - 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 tal caso None , il nome rimane lo stesso.
Risultati
una copia delle istruzioni attuali, con il nome aggiornato qualora fosse stato indicato
Tipo di restituzione
inverse
inverse(annotated=False)
Inverti questa istruzione.
Se annotated è impostato su False, l'istruzione inversa viene implementata come un'istruzione nuova con la definizione invertita in modo ricorsivo.
Se annotated è True, l'istruzione inversa viene implementata come AnnotatedOperation, e corrisponde all'istruzione specificata annotata con il "modificatore inverso".
Le istruzioni speciali che derivano dalla classe Instruction possono implementare la propria inversa (ad esempio T e Tdg, Barrier, ecc.) In particolare, possono scegliere come gestire l'argomento, annotated ad esempio ignorandolo e restituendo sempre una classe di porta concreta se l'inversa è definita come porta standard.
Parametri
annotated (bool) – Se impostato su True, il gate inverso in uscita verrà restituito come AnnotatedOperation.
Risultati
L'operazione inversa.
Aumenti
CircuitError – se l'istruzione non è composta e non è stata implementata un'inversa per essa.
is_parameterized
is_parameterized()
Restituisce se il Instruction contiene parametri di compilazione.
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 standard, come ad esempio
RXGate, questo argomento viene ignorato quando la potenza di una porta può essere espressa in termini di un’altra porta standard.
Risultati
Un'operazione che implementa gate^exponent
Aumenti
CircuitError – Se il gate non è unitario
repeat
repeat(n)
Crea un'istruzione ripetuta self 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 soft tra i gate. I loro nomi, il numero di qubit e il numero di bit classici devono corrispondere. Il numero dei parametri deve corrispondere. Ogni parametro viene confrontato. Se si è un " ParameterExpression ", questo non viene preso in considerazione.
Parametri
other (instruction) – altre istruzioni.
Risultati
"self" e "other" sono equivalenti fino alle espressioni dei parametri.
Tipo di restituzione
to_matrix
to_matrix()
Restituisce un oggetto Numpy.array corrispondente alla matrice unitaria del gate.
Risultati
se la sottoclasse Gate presenta una definizione a matrice.
Tipo di restituzione
np.ndarray
Aumenti
CircuitError – Se una sottoclasse di Gate non implementa questo metodo, verrà generata un’eccezione quando viene chiamato questo metodo della classe base.
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 potrà essere modificata. Se l'istanza è già modificabile, si tratterà di una copia profonda di tale istanza.
validate_parameter
validate_parameter(parameter)
I parametri del gate devono essere di tipo int, float o ParameterExpression