BoxOp
class qiskit.circuit.BoxOp(body, duration=None, unit=None, label=None, annotations=())
Basi: ControlFlowOp
Una "scatola" di operazioni su un circuito che vengono trattate atomicamente in un contesto più ampio.
Una "casella" è un costrutto del flusso di controllo che viene inserito incondizionatamente. Il contenuto della scatola si comporta come se l'inizio e la fine della scatola fossero barriere, ma è consentito eseguire operazioni "fino in fondo" alla scatola. La casella è anche un ambito esplicito ai fini delle variabili, dei tratti e dei passaggi del compilatore.
Una casella può essere "annotata" con oggetti personalizzati definiti dall'utente Annotation definiti dall'utente. Nei casi in cui l'ordine è importante, questi devono essere interpretati applicando prima la prima annotazione dell'elenco, poi la seconda e così via. In generale si raccomanda che le annotazioni non siano dipendenti dall'ordine, per quanto possibile.
In genere lo si crea utilizzando la forma "builder-interface" di QuantumCircuit.box().
Costruttore predefinito di BoxOp.
Parametri
- body (QuantumCircuit) – il circuito da utilizzare come struttura portante della scatola. Ciò dovrebbe includere esplicitamente tutte
expr.Varle variabili che devono essere presenti nel circuito esterno. Il numero richiesto di qubit e clbit per l'istruzione risultante viene dedotto dal numero presente nel circuito, anche se sono inattivi. - duration (None) – una durata opzionale per l'intera scatola.
- unit (Literal['dt', 's', 'ms', 'us', 'ns', 'ps', 'expr'] | None) – l'unità del sito
duration. - label (str | None) – un'etichetta di stringa opzionale per l'istruzione.
- annotations (Iterable[Annotation]) – qualsiasi
Annotationda applicare alla casella. Nei casi in cui l'ordine è importante, le annotazioni devono essere interpretate nello stesso ordine in cui appaiono nell'iterabile.
Attributi
base_class
Ottiene la classe base di questa istruzione. È garantita la presenza nell'albero ereditario di self.
La "classe base" di un'istruzione è la classe più bassa dell'albero di ereditarietà con cui l'oggetto deve essere considerato completamente compatibile per le applicazioni dei circuiti. Questo in genere significa che la sottoclasse è definita solo per offrire una sorta di comodità al programmatore rispetto alla classe base, mentre la classe base è 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 sarà implementata in modo diverso dall'hardware, come ad esempio una strategia di misura alternativa, o una versione di un gate parametrizzato con un particolare insieme di parametri per distinguerlo in un file Target dalla porta parametrizzata completa.
Spesso è esattamente equivalente a type(obj), tranne nel caso di istanze singleton di istruzioni della libreria standard. Queste istanze singleton sono sottoclassi speciali della loro classe base e questa proprietà restituirà la classe base. Ad esempio:
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
TrueIn generale, non si dovrebbe fare affidamento sulla classe precisa di un'istruzione; all'interno di un determinato circuito, si prevede che Instruction.name dovrebbe essere un discriminante più adatto nella maggior parte delle situazioni.
blocks
body
La body QuantumCircuit dell'operazione.
Questo è lo stesso oggetto restituito come unica voce in params() e blocks().
decompositions
Ottenere le scomposizioni dell'istruzione da SessionEquivalenceLibrary.
definition
Definizione di ritorno in termini di altri cancelli di base.
label
Etichetta di istruzioni per la restituzione
mutable
Questa istanza è un'istanza unica mutabile o meno.
Se questo attributo è False , l'istanza del gate è un singleton condiviso e non è mutabile.
name
Restituisce il nome.
num_clbits
Restituisce il numero di clbit.
num_qubits
Restituisce il numero di qubit.
params
Metodi
add_decomposition
add_decomposition(decomposition)
Aggiungere una decomposizione dell'istruzione a SessionEquivalenceLibrary.
broadcast_arguments
broadcast_arguments(qargs, cargs)
Convalida degli argomenti.
Parametri
- qargs (List) – Elenco degli argomenti dei bit quantici.
- cargs (List) – Elenco degli argomenti classici dei bit.
Attese
Tuple(List, List) - Una tupla con singoli argomenti.
Aumenti
CircuitError – Se l'input non è valido. Ad esempio, il numero di argomenti non corrisponde a quanto previsto dal gate.
copy
copy(name=None)
Copia dell'istruzione.
Parametri
name (str) – nome da assegnare al circuito copiato, se None il nome rimane invariato.
Risultati
una copia dell'istruzione corrente, con il nome aggiornato se è stato fornito
Tipo di restituzione
inverse
inverse(annotated=False)
Invertire questa istruzione.
Se annotated è False, l'istruzione inversa viene implementata come una nuova istruzione con la definizione ricorsivamente invertita.
Se annotated è True, l'istruzione inversa è implementata come AnnotatedOperatione corrisponde all'istruzione data annotata con il "modificatore inverso".
Le istruzioni speciali che ereditano da Instruction possono implementare il proprio inverso (ad esempio T e Tdg, Barrier, ecc.) In particolare, possono scegliere come gestire l'argomento annotated , tra cui ignorarlo e restituire sempre una classe gate concreta se l'inverso è definito come gate standard.
Parametri
annotated (bool) – se impostato su True, l'uscita del gate inverso sarà restituita come AnnotatedOperation.
Risultati
L'operazione inversa.
Aumenti
CircuitError – se l'istruzione non è composta e non è stata implementata la sua inversa.
is_parameterized
iter_captured_stretches
iter_captured_stretches()
Ottiene un iteratore sulle variabili di tratto uniche catturate in tutti i blocchi di questo costrutto.
Tipo di restituzione
Iterable [ expr.Stretch ]
iter_captured_vars
iter_captured_vars()
Ottiene un iteratore sulle variabili uniche catturate in tutti i blocchi di questo costrutto.
Tipo di restituzione
repeat
repeat(n)
Crea un'istruzione con self la ripetizione di « » volte.
Parametri
n (int) – Numero di volte in cui ripetere l'istruzione
Risultati
Contiene la definizione.
Tipo di restituzione
Aumenti
CircuitError – Se n < 1.
replace_blocks
replace_blocks(blocks)
Restituisce una nuova versione di questo flusso di operazioni di controllo con gli elementi blocks mappate su quelle nuove.
In genere viene utilizzato in un flusso di lavoro come:
existing_op = ...
def map_block(block: QuantumCircuit) -> QuantumCircuit:
new_block = block.copy_empty_like()
# ... do something to `new_block` ...
return new_block
new_op = existing_op.replace_blocks(
map_block(block) for block in existing_op.blocks
)È responsabilità del chiamante assicurarsi che i blocchi mappati siano definiti su un insieme unificato di risorse del circuito, in modo analogo alla costruzione di un oggetto ControlFlowOp utilizzando il suo costruttore predefinito.
Parametri
blocchi - i nuovi blocchi di sottocircuito da utilizzare.
Risultati
Nuovo ControlFlowOp con blocchi sostituiti.
reverse_ops
reverse_ops()
Per un'istruzione composta, invertire l'ordine delle sottoistruzioni.
Ciò avviene invertendo ricorsivamente tutte le sottoistruzioni. Non inverte alcun cancello.
Risultati
una nuova istruzione con
le sottoistruzioni invertite.
Tipo di restituzione
soft_compare
soft_compare(other)
Confronto soft tra i gate. I loro nomi, il numero di qubit e i numeri di bit classici devono corrispondere. Il numero di parametri deve corrispondere. Ogni parametro viene confrontato. Se uno è un ParameterExpression non viene preso in considerazione.
Parametri
other (instruction) – altre istruzioni.
Risultati
sono auto e altri uguali fino a espressioni parametriche.
Tipo di restituzione
to_mutable
to_mutable()
Restituisce una copia mutabile di questo gate.
Questo metodo restituisce una nuova copia mutabile di questa istanza di gate. Se si utilizza un'istanza singleton, questa sarà una nuova istanza unica che può essere mutata. Se l'istanza è già mutabile, sarà una copia profonda di quell'istanza.
validate_parameter
validate_parameter(parameter)
Il parametro Istruzione non ha alcuna convalida o normalizzazione.