Destinazione
class qiskit.transpiler.Target(description=None, num_qubits=0, dt=None, granularity=1, min_length=1, pulse_alignment=1, acquire_alignment=1, qubit_properties=None, concurrent_measurements=None, **_subclass_kwargs)
Basi: BaseTarget
Lo scopo dell'oggetto Target è quello di informare il compilatore di Qiskit sui vincoli di un particolare backend, in modo che il compilatore possa compilare un circuito di input in qualcosa che funzioni e sia ottimizzato per un dispositivo. Attualmente contiene una descrizione delle istruzioni su un backend e delle loro proprietà, nonché alcune informazioni sulla tempistica. Tuttavia, questa interfaccia esatta può evolvere nel tempo, in base alle esigenze del compilatore. Queste modifiche saranno effettuate in modo controllato e retrocompatibile quando vengono apportate (tramite versioning, sottoclassi o mixin) per aggiungere informazioni all'insieme di quelle esposte da un target.
Per fare un esempio semplice, supponiamo che un backend abbia due qubit, supporti UGate su entrambi i qubit e CXGate in entrambe le direzioni. Per modellare questo scenario, dovresti creare il target nel modo seguente:
from qiskit.transpiler import Target, InstructionProperties
from qiskit.circuit.library import UGate, CXGate
from qiskit.circuit import Parameter
gmap = Target()
theta = Parameter('theta')
phi = Parameter('phi')
lam = Parameter('lambda')
u_props = {
(0,): InstructionProperties(duration=5.23e-8, error=0.00038115),
(1,): InstructionProperties(duration=4.52e-8, error=0.00032115),
}
gmap.add_instruction(UGate(theta, phi, lam), u_props)
cx_props = {
(0,1): InstructionProperties(duration=5.23e-7, error=0.00098115),
(1,0): InstructionProperties(duration=4.52e-7, error=0.00132115),
}
gmap.add_instruction(CXGate(), cx_props)Ogni istruzione in Target è indicizzata da un nome di stringa univoco che identifica in modo univoco l'istanza di un oggetto in Target Instruction oggetto nel target. Esiste una mappatura 1:1 tra un nome e un'istanza di Instruction nella destinazione e ogni nome deve essere unico. Per impostazione predefinita, il nome è l'attributo name dell'istruzione, ma può essere impostato su qualsiasi cosa. Ciò consente a un singolo target di avere più istanze della stessa classe di istruzioni con parametri diversi. Per esempio, se un target di backend ha due istanze di un oggetto RXGate una è parametrizzata su qualsiasi theta, mentre l'altra è sintonizzata su un theta di pi/6, è possibile aggiungerle facendo qualcosa di simile:
import math
from qiskit.transpiler import Target, InstructionProperties
from qiskit.circuit.library import RXGate
from qiskit.circuit import Parameter
target = Target()
theta = Parameter('theta')
rx_props = {
(0,): InstructionProperties(duration=5.23e-8, error=0.00038115),
}
target.add_instruction(RXGate(theta), rx_props)
rx_30_props = {
(0,): InstructionProperties(duration=1.74e-6, error=.00012)
}
target.add_instruction(RXGate(math.pi / 6), rx_30_props, name='rx_30')Quindi nell'oggetto target , accedendo a rx_30 si otterrà l'angolo fisso RXGate mentre rx otterrà l'angolo parametrizzato RXGate.
È possibile specificare facoltativamente un limite ai valori validi su un gate nel target utilizzando l'argomento angle_bounds chiave quando si chiama il add_instruction() metodo. I limiti sono impostati sulle operazioni e non sulle singole istruzioni, quindi quando si chiama add_instruction() i limiti vengono applicati a tutti i qargs su cui è definito. I limiti sono specificati in un elenco di coppie di valori float, dove il primo valore float è il limite inferiore e il secondo valore float è il limite superiore. Ad esempio, se hai specificato un limite angolare:
[(0.0, 3.14), (-3.14, 3.14), (0.0, 1.0)]indica i limiti degli angoli per un gate a 3 parametri, in cui il primo parametro accetta angoli compresi tra 0 e 3.14, il secondo tra -3.14 e 3.14, e il terzo parametro tra 0 e 1. Anche tutti i limiti sono impostati in modo inclusivo. Un vincolo può anche essere specificato con None invece di una 2-tupla, il che indica che il parametro non ha vincoli. Ad esempio:
[(0.0, 3.14), None, None]indica un angolo vincolato per un gate a 3 parametri, in cui solo il primo parametro è limitato ad angoli compresi tra 0.0 e 3.14 e gli altri parametri accettano qualsiasi valore.
gate_has_angle_bounds()È possibile verificare se alcune operazioni nel target hanno dei limiti angolari impostati con, has_angle_bounds() e anche se un nome specifico nel target ha dei limiti angolari impostati con. È possibile verificare se un determinato insieme di valori dei parametri rientra nei limiti angolari utilizzando supported_angle_bound(). Nei gestori di pass predefiniti, il WrapAngles pass viene utilizzato per imporre i limiti angolari; affinché ciò funzioni, è necessario fornire una funzione al pass WrapAngleRegistry utilizzato. Per ulteriori dettagli su questo argomento, si veda: “Limiti angolari sui Gates ”.
Questa classe può essere interrogata tramite il protocollo di mappatura, utilizzando il nome dell'istruzione come chiave. È possibile modificare qualsiasi proprietà di un'istruzione tramite il metodo update_instruction_properties() metodo. La modifica tramite il protocollo di mappatura o la mutazione degli attributi di un oggetto non è supportata InstructionProperties di un oggetto non è supportata e ciò invalida lo stato interno dell'oggetto.
Questa classe presuppone che gli indici dei qubit inizino da 0 e siano un insieme contiguo, se si desidera una sottomappatura, i bit dovranno essere reindicizzati in un nuovo oggetto Target oggetto.
Questa classe supporta solo l'aggiunta di porte, qarg e proprietà. Se è necessario rimuovere uno di questi, la soluzione migliore è iterare su un oggetto esistente e creare un nuovo sottoinsieme (o usare uno dei metodi per farlo). L'oggetto memorizza internamente nella cache le diverse visualizzazioni, che potrebbero essere invalidate dalle rimozioni.
Sottoclassi
Sebbene sia tecnicamente possibile sottoclassezzare Targetma si tenga presente che la maggior parte delle informazioni incorporate è in Rust e viene interrogata da Rust nei passaggi del transpiler incorporato. Python -le sovrascritture dello spazio non sono visibili a Rust e non si dovrebbe fare affidamento su di esse per modificare il comportamento dei passaggi di transpiler integrati in Qiskit. Target dovrebbe essere una rappresentazione di una QPU che ha costruttori specializzati, non sottoclassi specializzate; l'API usuale per la costruzione di una QPU dovrebbe essere una funzione che restituisce una classe base Target dovrebbe essere una funzione che restituisce un costruttore di base Targetnon una sottoclasse con un inizializzatore personalizzato.
È possibile utilizzare la sottoclassificazione per aggiungere ulteriori proprietà dello spazio Python al proprio Target, ad esempio per interpretarle successivamente in fasi di transpilazione personalizzate specifiche del backend; il Target viene passato ai costruttori dei plugin di fase.
Non si dovrebbe sottoclasse Target per cercare di modificare il comportamento dei passaggi incorporati di Qiskit; il sottoclasse Python -space non sarà visto dai passaggi scritti in Rust.
Inoltre, poiché il nucleo di Target è scritto in Rust e utilizza __new__() come inizializzatore e bisogna assicurarsi che gli argomenti corretti siano passati all'implementazione sottostante. Se si sovrascrive la firma del metodo __init__() è necessario includere anche una sovrascrittura di __new__() con la stessa firma, che richiama super().__new__() in modo corretto.
Creare un nuovo Target oggetto.
descrizione param
Una stringa opzionale per descrivere il target.
descrizione del tipo
STR
parametri num_qubit
Un int opzionale per specificare il numero di qubit del target backend. Questo non è un limite rigido alla costruzione; qualsiasi chiamata a add_instruction() causerà l'aggiornamento dell'insieme num\code_qubit per accogliere qualsiasi qargs concreto nelle proprietà date.
Questo valore può essere impostato esplicitamente a None per indicare una macchina Target che rappresenta un simulatore o un'altra macchina astratta che non impone limiti al numero di qubit. In questo caso, tutte le istruzioni aggiunte alla destinazione devono essere globali (con properties=None o properties={None: None}).
tipo num_qubit
int
param dt
Risoluzione temporale del sistema dei segnali di ingresso in secondi
tipo dt
mobile
parametri granularità
Un valore intero che rappresenta la risoluzione minima del gate di impulsi in unità di dt. Un gate a impulsi definito dall'utente deve avere una durata pari a un multiplo di questo valore di granularità.
granularità del tipo
int
param Lunghezza minima
Un valore intero che rappresenta la lunghezza minima del gate dell'impulso in unità di dt. Un gate di impulsi definito dall'utente dovrebbe essere più lungo di questa lunghezza.
tipo lunghezza min
int
parametro allineamento_impulsi
Un valore intero che rappresenta la risoluzione temporale dell'ora di inizio dell'istruzione gate. L'istruzione Gate deve iniziare a un tempo che è un multiplo del valore di allineamento.
tipo pulse_alignment
int
parametri allineamento_di_acquisizione
Un valore intero che rappresenta la risoluzione temporale dell'ora di inizio dell'istruzione di misura. L'istruzione di misura deve iniziare a un tempo che è un multiplo del valore di allineamento.
tipo acquisire_allineamento
int
parametri qubit_properties
Un elenco di QubitProperties che definisce le caratteristiche di ciascun qubit del dispositivo di destinazione. Se specificato, la lunghezza di questo elenco deve corrispondere al numero di qubit del target, dove l'indice dell'elenco corrisponde al numero di qubit per cui sono definite le proprietà. Se alcuni qubit non hanno proprietà disponibili, si può impostare la voce su None
tipo qubit_properties
elenco
parametri Misure_concorrenti
Un elenco di insiemi di qubit che devono essere misurati insieme. Questo deve essere fornito come un elenco annidato, come [[0, 1], [2, 3, 4]].
tipo misure_concorrenti
elenco
aumenti ValueError
Se num_qubits e qubit_properties sono entrambi definiti e il valore di num_qubits differisce dalla lunghezza di qubit_properties.
Attributi
acquire_alignment
concurrent_measurements
description
dt
Ritorno dt.
granularity
instructions
Ottiene l'elenco di tuple (Instruction, (qargs)) per il target
Per le operazioni a larghezza variabile definite a livello globale, la tupla avrà la forma (class, None) , dove classe è la classe dell'operazione definita a livello globale.
min_length
num_qubits
operation_names
Ottiene i nomi delle operazioni nella destinazione.
operations
Ottenere gli oggetti dell'operazione nella destinazione.
physical_qubits
Restituisce un elenco ordinato di qubit fisici.
pulse_alignment
qargs
L'insieme di qarg nella destinazione.
qubit_properties
Metodi
add_instruction
add_instruction(instruction, properties=None, name=None, *, angle_bounds=None)
Aggiungete una nuova istruzione al file Target
Poiché gli oggetti di Target sono strettamente additivi, questo è il metodo principale per modificare un Target. In genere, si usa per popolare completamente un Target prima di usarlo in BackendV2. Ad esempio:
from qiskit.circuit.library import CXGate
from qiskit.transpiler import Target, InstructionProperties
target = Target()
cx_properties = {
(0, 1): None,
(1, 0): None,
(0, 2): None,
(2, 0): None,
(0, 3): None,
(2, 3): None,
(3, 0): None,
(3, 2): None
}
target.add_instruction(CXGate(), cx_properties)Aggiungerà un elemento CXGate al target senza proprietà (durata, errore, ecc.) con l'elenco dei bordi di accoppiamento: (0, 1), (1, 0), (0, 2), (2, 0), (0, 3), (2, 3), (3, 0), (3, 2). Se ci sono proprietà disponibili per l'istruzione, è possibile sostituire il valore None nel dizionario delle proprietà con un oggetto InstructionProperties oggetto. Questo schema si ripete per ogni Instruction supporto del target.
Parametri
- instruction (Union[qiskit.circuit.Instruction, Type[qiskit.circuit.Instruction]]) – L'oggetto operazione da aggiungere alla mappa. Se è parametrizzato, è possibile impostare qualsiasi valore del parametro. Facoltativamente, per le istruzioni a larghezza variabile (come le operazioni di flusso di controllo quali
ForLoopoMCXGate), è possibile specificare la classe. Se viene specificata la classe, è necessario specificare l'argomentoname. Quando si utilizza una classe, il gate viene considerato come globale e privo di proprietà definite. - properties (dict) – Un dizionario di voci qarg per un
InstructionPropertiesper l'implementazione di quell'istruzione nel backend. Le proprietà sono opzionali per qualsiasi implementazione di istruzioni, se non ci sonoInstructionPropertiesdisponibili per il backend il valore può essere None. Se non ci sono vincoli sull'istruzione (come in una simulazione ideale o priva di rumore), questo valore può essere impostato su{None, None}, che indica che l'istruzione funziona su tutti i qubit (o su tutte le permutazioni di qubit disponibili per le porte multi-qubit). Il primoNoneindica che si applica a tutti i qubit, mentre il secondoNoneindica che non ci sonoInstructionPropertiesper l'istruzione. Per impostazione predefinita, se properties non è impostato, equivale a passare{None: None}. - name (str) – Un nome opzionale da utilizzare per identificare l'istruzione. Se non viene specificato, verrà utilizzato l'attributo
namedigate. Tutti i cancelli del sitoTargetdevono avere nomi unici. I backend possono distinguere tra diverse parametrizzazioni di un singolo gate fornendo un nome univoco per ciascuno di essi (ad esempio “rx30”, “rx60”, `”rx90”`` come nell'esempio della documentazione della classeTarget). - angle_bounds (list) – I limiti dei parametri per un determinato gate. Questo è specificato da un elenco di tuple (low, high) che rappresentano il limite basso e alto (incluso) dei valori float consentiti per il parametro in quella posizione. Se un parametro non ha un angolo vincolato, si può usare
Noneper rappresentarlo. Ad esempio, se un gate a 3 parametri avesse un vincolo solo sul secondo parametro, lo si rappresenterebbe con:[None, [0, 3.14], None], che significa che il primo e il terzo parametro possono assumere qualsiasi valore, ma il secondo parametro accetta solo valori compresi tra 0 e 3.14.
Aumenti
- AttributeError - Se il cancello è già presente nella mappa
- TranspilerError – Se viene passata una classe di operazione per
instructione non viene specificato alcun nome oppurepropertiesè impostato.
build_coupling_map
build_coupling_map(two_q_gate=None, filter_idle_qubits=False)
Ottenere un CouplingMap da questo obiettivo.
Se vi è una combinazione di operazioni su due qubit soggette a un vincolo di connettività e operazioni definite a livello globale, il risultato sarà lo None stesso, poiché la connettività globale implica che non vi siano vincoli sul target. Se desideri visualizzare i vincoli delle operazioni a due qubit che presentano vincoli, dovresti utilizzare two_q_gate l'argomento per limitare l'output ai gate che presentano un vincolo.
Parametri
- two_q_gate (str) – Nome opzionale di un gate a due qubit nel sito
Targetper il quale generare la mappa di accoppiamento. Se specificato, la mappa di accoppiamento in uscita avrà solo bordi tra i qubit in cui è presente questo gate. - filter_idle_qubits (bool) – Se impostato su
True, l'uscitaCouplingMaprimuoverà tutti i qubit che non hanno operazioni definite nella destinazione. Si noti che l'uso di questo argomento darà come risultato un oggetto di outputCouplingMapche ha dei buchi nei suoi indici che potrebbero differire dalle ipotesi della classe. Il caso d'uso tipico di questo argomento è quello di essere abbinato aCouplingMap.connected_components()che gestirà i buchi come previsto.
Risultati
**L'oggetto CouplingMap **
per questo obiettivo. Se non ci sono vincoli di connettività nella destinazione, verrà restituito None.
Tipo di restituzione
Aumenti
- ValueError - Se un gate non a due qubit viene passato per
two_q_gate. - IndexError - Se viene passata un'istruzione non presente in
Targetpertwo_q_gate.
durations
durations()
Ottenere un oggetto InstructionDurations dalla destinazione
Risultati
La durata dell'istruzione rappresentata nel campo
Destinazione
Tipo di restituzione
from_configuration
classmethod from_configuration(basis_gates, num_qubits=None, coupling_map=None, instruction_durations=None, concurrent_measurements=None, dt=None, timing_constraints=None, custom_name_mapping=None)
Creare un oggetto target dalla configurazione globale individuale
Prima della creazione della classe Target i vincoli di un backend erano rappresentati da una collezione di oggetti diversi, che insieme rappresentavano un sottoinsieme delle informazioni contenute nel file Target. Questa funzione fornisce una semplice interfaccia per convertire questi oggetti separati in un oggetto Target.
Questo costruttore utilizzerà gli input di basis_gates, num_qubits e coupling_map per costruire un modello di base del backend e gli input di instruction_durations, backend_properties e inst_map verranno poi interrogati (nell'ordine) sulla base di tale modello per cercare le proprietà di ogni istruzione e qubit. Se c'è un'incongruenza tra gli ingressi, qualsiasi informazione aggiuntiva o contrastante presente in instruction_durations, backend_properties, o inst_map verrà ignorata.
Parametri
- basis_gates (list[str]) – L'elenco dei nomi dei gate di base per il backend. Affinché il target venga creato, questi nomi devono essere presenti nell'output di
get_standard_gate_name_mapping()oppure nell'argomento specificatocustom_name_mapping. - num_qubits (int | None) – Il numero di qubit supportati dal backend.
- coupling_map (CouplingMap | None) – La mappa di accoppiamento che rappresenta i vincoli di connettività sul backend. Se specificato, tutti i gate di
basis_gatessaranno supportati su tutti i qubit (o coppie di qubit). - instruction_durations (InstructionDurations | None) – Durata opzionale per le istruzioni. Se specificato, avrà la priorità per l'impostazione del campo
durationnegli oggettiInstructionPropertiesper le istruzioni nella destinazione. - concurrent_measurements (list) – Un elenco di insiemi di qubit che devono essere misurati insieme. Questo deve essere fornito come un elenco annidato, come
[[0, 1], [2, 3, 4]]. - dt (float | None) – Risoluzione temporale del sistema dei segnali di ingresso in secondi
- timing_constraints (TimingConstraints | None) – Vincoli temporali facoltativi da includere nel
Target - custom_name_mapping (dict[str, Any] | None) – Un dizionario opzionale che associa nomi personalizzati di porte/operazioni a
basis_gatesunOperationoggetto che rappresenta tale porta/operazione. Per impostazione predefinita, la maggior parte dei nomi dei gate standard è associata all'oggetto gate standard;qiskit.circuit.libraryciò deve essere specificato solo se l'inputbasis_gatesdefinisce gate con nomi che non rientrano in tale insieme.
Risultati
il target costruito dalla configurazione di ingresso
Tipo di restituzione
Aumenti
- TranspilerError – Se i gate di base in ingresso contengono più di 2 qubit e
coupling_mapè - specificato. -
- KeyError - Se non è disponibile alcuna mappatura per un sito specificato
basis_gate.
gate_has_angle_bounds
gate_has_angle_bounds(name)
Controllare se un cancello specifico ha un angolo vincolato impostato
Parametri
name (str) – Il nome dell'istruzione da controllare se ha un limite angolare impostato
Risultati
Restituisce True se il gate si trova nell'obiettivo e se sono stati definiti i limiti dell'angolo. Restituirà False se il gate non ha limiti angolari definiti o non si trova nell'obiettivo.
Tipo di restituzione
get
get(key, default=None)
Ottiene un elemento dalla destinazione. Se non viene trovato, restituisce un valore predefinito o Nessuno.
get_non_global_operation_names
get_non_global_operation_names(strict_direction=False)
Restituisce i nomi delle operazioni non globali per la destinazione
Le operazioni non globali sono quelle del target che non si applicano a tutti i qubit (per le operazioni a singolo qubit) o a tutti i qarg multi-qubit (per le operazioni multi-qubit).
Parametri
strict_direction (bool) – Se impostato su True , le operazioni multi-qubit considerate non globali rispettano la direzione rigorosa (o l'ordine dei qubit nei qarg è significativo). Ad esempio, se cx è definito su (0, 1) e ecr è definito su (1, 0) , per impostazione predefinita nessuno dei due sarà considerato non globale, ma se strict_direction è impostato su True saranno restituiti sia cx che ecr .
Risultati
Un elenco di nomi di operazioni per operazioni che non sono globali in questo target
Tipo di restituzione
Elenco [str ]
has_angle_bounds
has_angle_bounds()
Controlla se ci sono limiti angolari impostati nell'obiettivo
Risultati
Questo restituirà True se sono stati impostati dei limiti angolari su qualsiasi istruzione del circuito
Tipo di restituzione
instruction_properties
instruction_properties(index)
Ottenere le proprietà dell'istruzione per una specifica tupla di istruzioni
Questo metodo deve essere usato insieme all'attributo instructions di un oggetto Target oggetto. È possibile utilizzare questo metodo per ottenere rapidamente le proprietà delle istruzioni per un elemento di instructions utilizzando l'indice dell'elenco. Tuttavia, se non si lavora direttamente con instructions è probabilmente più efficiente accedere direttamente al target tramite il nome e i qubit per ottenere le proprietà dell'istruzione. Ad esempio, se instructions restituito:
[(XGate(), (0,)), (XGate(), (1,))]si possono ottenere le proprietà di XGate sul qubit 1 con:
props = target.instruction_properties(1)ma sarebbe più efficiente accedervi direttamente tramite il nome:
props = target['x'][(1,)](assumendo che il nome canonico di XGatenella destinazione sia 'x') Questo è particolarmente vero per le destinazioni più grandi, poiché la scala peggiorerà con il numero di tuple di istruzioni in una destinazione.
Parametri
index (int) – L'indice della tupla di istruzioni dell'attributo instructions dell'attributo. Ad esempio, se si vogliono le proprietà del terzo elemento in instructions si dovrebbe impostare questo elemento come 2.
Risultati
Le proprietà dell'istruzione per la tupla di istruzioni specificata
Tipo di restituzione
instruction_supported
instruction_supported(operation_name=None, qargs=Ellipsis, operation_class=None, parameters=None, check_angle_bounds=True)
Restituire se l'istruzione (operazione + qubit) è supportata dal target
Parametri
-
operation_name (str) – Il nome dell'operazione per l'istruzione. Deve essere specificato questo o
operation_class; se entrambi sono specificati,operation_classavrà la priorità e questo argomento sarà ignorato. -
qargs (tuple) – La tupla di indici di qubit per l'istruzione. Se non viene specificato, il metodo restituisce
Truese l'operazione specificata è supportata su qualsiasi qubit. L'applicazione tipica avrà sempre questa impostazione (altrimenti è come controllare se la destinazione contiene l'operazione). Normalmente non si imposta questo argomento se si vuole verificare più in generale che il target supporti un'operazione conparameterssu qualsiasi qubit. -
operation_class (Type[qiskit.circuit.Instruction]) – La classe delle operazioni che consente di verificare se il sistema di destinazione supporta una determinata operazione in base alla classe anziché al nome. Questa ricerca è più onerosa in termini di risorse, poiché richiede di scorrere tutte le operazioni presenti nell'oggetto di destinazione, anziché limitarsi a una singola ricerca. Se viene specificato, prevarrà
operation_namesull'argomento. Il caso d'uso tipico di questa operazione è verificare se una specifica variante di un'operazione è supportata dal backend. Ad esempio, se si volesse verificare se unRXGatefosse supportato su un qubit specifico con un angolo fisso. Quella variante ad angolo fisso avrà in genere un nome diverso dall'attributo ("rx") dell'oggettonamenel bersaglio. Questo può essere utilizzato per verificare se, in tal caso, siano disponibili istanze della classe. -
parameters (list) –
Un elenco di parametri per verificare se il target li supporta sui qubit specificati. Se l'istruzione supporta i valori dei parametri specificati nell'elenco sull'operazione e sui qarg specificati, restituirà
True, ma se i parametri non sono supportati dall'istruzione specificata, restituiràFalse. Se questo argomento non è specificato, il metodo restituisceTruese l'istruzione è supportata indipendentemente dai parametri dell'istruzione. Se specificato con qualsiasi oggettoParameternell'elenco, quella voce sarà trattata come se supportasse qualsiasi valore, tuttavia i nomi dei parametri non saranno controllati (ad esempio, se un'operazione nell'obiettivo è elencata come parametrizzata con"theta"e"phi"viene passata in questa funzione che restituiràTrue). Ad esempio, se chiamato con:parameters = [Parameter("theta")] target.instruction_supported("rx", (0,), parameters=parameters)restituirà
Truese un parametroRXGateè supportato sul qubit 0 e accetta qualsiasi parametro. Se è necessario verificare un parametro di valore numerico fisso, questo argomento è solitamente abbinato all'argomentooperation_class. Ad esempio:target.instruction_supported("rx", (0,), RXGate, parameters=[pi / 4])restituirà
Truese sul qubit 0 esiste un RXGate( pi/4 ). -
check_angle_bounds (bool) – Se impostato su True (valore predefinito), il valore di
parameterssarà convalidato rispetto a qualsiasi limite angolare impostato nella destinazione. Se uno qualsiasi dei valori inparametersè impostato per essereParameterExpressionquesto flag non avrà alcun effetto, poiché i limiti angolari influiscono solo sulle operazioni non parametrizzate del circuito.
Risultati
Restituisce True se l'istruzione è supportata e False in caso contrario.
Tipo di restituzione
items
items()
Restituisce coppie di nomi di gate e la relativa mappa di proprietà (str, dicttuple[, InstructionProperties] )
keys
operation_from_name
operation_from_name(instruction)
Ottenere l'oggetto classe dell'operazione per un determinato nome
Parametri
instruction (str) – Il nome dell'istruzione per ottenere l'istanza Instruction per
Risultati
L'istanza dell'istruzione corrispondente al nome. Questa può anche essere la classe per le variabili definite globalmente con le operazioni.
Tipo di restituzione
operation_names_for_qargs
operation_names_for_qargs(qargs, /)
Ottenere i nomi delle operazioni per una tupla qargs specificata
Parametri
qargs (tuple) – Una tupla qargs dei qubit per ottenere i gate che vi si applicano. Per esempio, (0,) restituirà l'insieme di tutte le istruzioni che si applicano al qubit 0. Se impostato su None , restituirà i nomi di tutte le operazioni definite a livello globale nella destinazione.
Risultati
L'insieme dei nomi delle operazioni che si applicano al sito qargs.
Tipo di restituzione
Aumenti
KeyError - Se qargs non è in target
operations_for_qargs
operations_for_qargs(qargs, /)
Ottenere l'oggetto classe di operazione per una tupla qargs specificata
Parametri
qargs (tuple) – Una tupla qargs dei qubit per ottenere i gate che vi si applicano. Per esempio, (0,) restituirà l'insieme di tutte le istruzioni che si applicano al qubit 0. Se impostato su None , restituirà qualsiasi operazione definita a livello globale nella destinazione.
Risultati
L'elenco delle Instruction che si applicano al qarg specificato. Questa può anche essere una classe se un'operazione di larghezza variabile è definita a livello globale.
Tipo di restituzione
Aumenti
KeyError - Se qargs non è nel target
qargs_for_operation_name
qargs_for_operation_name(operation)
Ottenere i qarg per un determinato nome di operazione
Parametri
operation (str) – Il nome dell'operazione per cui ottenere i qarg
Risultati
L'insieme di qarg a cui si applica l'istanza del gate.
Tipo di restituzione
seconds_to_dt
seconds_to_dt(duration)
Converte una data durata in secondi in unità di dt
Parametri
duration (float) – La durata in secondi, ad esempio in un campo InstructionProperties per un'istruzione nel target.
Tipo di restituzione
Risultati
durata: La durata in unità di dt
supported_angle_bound
supported_angle_bound(name, angles)
Verificare che i parametri di uno specifico gate siano conformi ai limiti angolari
Parametri
- name (str) – Il nome dell'istruzione che controlla i limiti angolari di
- angles (list) – Un elenco di valori dei parametri float per
nameper verificare se sono conformi ai limiti angolari definiti.
Risultati
Restituisce True se i valori dei parametri specificati sono compatibili con i limiti dell'angolo. False viene restituito se uno qualsiasi dei parametri non rientra nei limiti definiti.
Tipo di restituzione
Aumenti
- TranspilerError – Se
namenon è presente nel target o non - hanno limiti angolari definiti. -
timing_constraints
timing_constraints()
Ottenere un oggetto TimingConstraints dalla destinazione
Risultati
I vincoli temporali rappresentati nella tabella Target
Tipo di restituzione
TimingConstraints
update_instruction_properties
update_instruction_properties(instruction, qargs, properties)
Aggiorna l'oggetto proprietà per una coppia di istruzioni qarg già presente nella destinazione.
Per facilitare l'accesso, l'utente può ottenere la mappatura tra i qarg applicabili a un'istruzione e le sue proprietà tramite il protocollo di mappatura (usando __getitem__), con il nome dell'istruzione come chiave. Questo metodo è l'unico modo per modificare/aggiornare le proprietà di un'istruzione in Target. L'uso del protocollo di mappatura per le modifiche non è supportato.
Parametri
- instruction (str) – Il nome dell'istruzione da aggiornare
- qargs (tuple) – I qarg per aggiornare le proprietà di
- properties (InstructionProperties) – Le proprietà da impostare per questa istruzione
Aumenti
KeyError - Se instruction o qarg non sono presenti nel target
values
values()
Restituisce la mappa delle proprietà (qargs -> InstructionProperties ) di ogni istruzione nella destinazione
Parametri