qiskit_noise_learning.models.PauliLindbladModel
class qiskit_noise_learning.models.PauliLindbladModel(gate_set: GateSet, generators: dict[str, QubitSparsePauliList], noise_site: dict[str, str] | None = None)
Basi: LinearMap[GeneratorIndex, FidelityIndex]
Una corrispondenza lineare tra i tassi dei generatori di Pauli-Lindblad e le logaritmiche delle fedeltà.
Questa classe di modelli presuppone che ogni gate dell'insieme dei gate sia o un'operazione unitaria, o una preparazione pura (tutti i qubit sono preparati e la parte unitaria è banale), oppure una misurazione pura (tutti i qubit sono misurati e la parte unitaria è banale). Si ipotizza inoltre che siano presenti almeno un preparato e almeno un gate di misurazione.
Il modello di rumore per ciascun gate, in questo caso, è un canale di Pauli, parametrizzato in termini di velocità di una decomposizione di Pauli-Lindblad , dove sono le velocità e . Nel caso dei gate unitari, il rumore può essere modellato come se si verificasse prima o dopo l’operatore unitario ideale.
Parametri
- gate_set – L'insieme di gate le cui fedeltà vengono modellate. Da convertire in un
ModelGateSet. - generatori – Un dizionario che associa il nome di un gate all'insieme dei generatori di Pauli-Lindblad relativi al modello di rumore di quel gate. I generatori per ciascun gate devono essere univoci. I generatori per gli strati di preparazione e di misurazione devono essere costituiti esclusivamente da I e X.
- noise_site – Un dizionario che specifica, per ogni nome di gate, se il modello di rumore si verifica prima o dopo il gate, indicato con le stringhe e
"before""after". Eventuali valori non specificati per l'insieme di porte saranno sostituiti con i valori predefiniti:"after"per le porte unitarie e le porte di preparazione pura, e"before"per la misurazione pura. Se viene specificato un valore per la misurazione pura o la preparazione diverso da quello predefinito, verrà generato un errore.
Aumenti
ValueError : se l'insieme di gate non ha la forma richiesta o se noise_site contiene valori non validi.
__init__
__init__(gate_set: GateSet, generators: dict[str, QubitSparsePauliList], noise_site: dict[str, str] | None = None)
Metodi
Rubrica 1 | Rubrica 2 |
|---|---|
__init__(gate_set, generatori[, noise_site]) | |
compose(esterno) | Post-composizione: self mappa I->O, outer mappa O->C, result mappa I->C. |
k_local(gate_set[, k, gate_k, paulis, ...]) | Costruire un modello k-locale. |
k_partition_local(gate_set[, k, gate_k, ...]) | Costruire un modello k-locale in base alle partizioni dei qubit. |
left_multiply(matrice) | Moltiplicare a sinistra per una matrice esplicita. |
pre_compose(interno) | Precomposizione: le immagini interne sono A→I, le immagini su se stesso sono I→O, le immagini risultanti sono A→O. |
projected_output(output_indices, vettore) | Calcolare la proiezione della mappa applicata a un vettore. |
rows(output_indices) | Costruire la sottomatrice le cui righe corrispondono agli indici di fedeltà indicati. |
to_pauli_lindblad_maps(model_data[, ...]) | Restituisce un dizionario contenente PauliLindbladMap per ogni gate del modello. |
Attributi
Rubrica 1 | Rubrica 2 |
|---|---|
gate_set | L'insieme di porte le cui fedeltà vengono modellate. |
generators | I generatori per il modello di rumore. |
input_space | Lo spazio degli input. |
meas_names | I nomi delle misure presenti in questo modello. |
noise_site | Se ciascuna mappa di rumore si verifica prima o dopo ciascun gate. |
output_space | Lo spazio di output. |
prep_names | I nomi dei preparati presenti in questo modello. |
gate_set
Tipo: ModelGateSet
L'insieme di porte le cui fedeltà vengono modellate.
generators
Tipo: dict[str, QubitSparsePauliList]
I generatori per il modello di rumore.
meas_names
noise_site
prep_names
rows
rows(output_indices: Iterable[FidelityIndex]) → IndexedMatrix[FidelityIndex, GeneratorIndex]
Costruire la sottomatrice le cui righe corrispondono agli indici di fedeltà indicati.
Parametri
output_indices – Gli indici di fedeltà che identificano le righe desiderate.
Risultati
Un IndexedMatrix indice basato sugli indici di fedeltà richiesti (diversi da zero) e sugli indici dei generatori presenti in quelle righe.
Aumenti
ValueError : se un indice di fedeltà assegna un'etichetta a un gate che non è presente nel modello.
k_partition_local
static k_partition_local(gate_set: GateSet, k: int = 2, gate_k: dict[str, int] | None = None, qubit_partitions: dict[str, list[set[int]]] | None = None, local_paulis: dict[str, list[QubitSparsePauliList]] | None = None, noise_site: dict[str, Literal['before', 'after']] | None = None) → Self
Costruire un modello k-locale in base alle partizioni dei qubit.
Si noti che la partizione predefinita per questo metodo (descritta di seguito) comporta un comportamento predefinito diverso rispetto a PauliLindbladModel.k_local().
Questo metodo definisce la k-località in termini di partizioni di un insieme di qubit , generalizzando il concetto tradizionale oltre i singoli qubit. Una partizione è un insieme di insiemi disgiunti di indici di qubit che copre . Due indici di qubit sono vicini se uno dei due bordi o è presente nella mappa di accoppiamento, che viene ricavata da gate_set o, in caso contrario, assume per impostazione predefinita la mappa di accoppiamento completa. Data una partizione , due insiemi distinti di indici di qubit sono vicini se esistono indici e che sono vicini. Analogamente, due elementi distinti sono vicini più prossimi se esiste un elemento distinto che è vicino sia a che a , e così via.
Per un dato gate, il modello locale viene costruito in modo ricorsivo a partire dai termini locali definiti nell’argomento local_paulis, con termini locali per sottoinsiemi di dimensione m data da local_paulis[m]. I termini locali vengono costruiti tramite il prodotto tensoriale dei termini locali tra coppie di sottoinsiemi adiacenti. In generale, i termini locali di tipo sono costruiti a partire dal prodotto tensoriale dei termini locali di tipo e dei termini locali di tipo su insiemi di insiemi connessi di tipo .
Se non qubit_partition viene specificato alcun valore, si presume la partizione dei singleton. Se non local_paulis viene specificato alcun valore, si considera l'insieme di tutti i possibili stati di Pauli sul numero dato di qubit.
Parametri
- gate_set – L'insieme di gate oggetto della modellazione. Deve contenere esclusivamente livelli Clifford, di preparazione pura e di misurazione pura. Da convertire in un
ModelGateSet. La mappa di accoppiamento viene ricavata dagate_set.model_gate_set.coupling_map, oppure, se èNone, viene utilizzata per impostazione predefinita la mappa di accoppiamento completa. - k – Il grado di località predefinito del modello. Si applica a tutti i cancelli non specificati in
gate_k. Il valore predefinito è2. Un valore pari a non produce0generatori, ovvero la porta viene modellata come priva di rumore. - gate_k – Un dizionario che associa i nomi dei gate ai valori di località specifici per ciascun gate, che sostituiscono quelli predefiniti per
ki gate specificati. - qubit_partitions – Un dizionario che indica una partizione di qubit per ciascun gate. Eventuali partizioni non specificate verranno popolate con un valore predefinito in cui i qubit vengono raggruppati se sono collegati da operazioni di gate unitarie.
- local_paulis – Un dizionario che indica i Pauli 1-locali da utilizzare per ciascuna partizione di qubit per ogni gate. I.e.
len(local_paulis[gate_name])deve essere pari alla dimensione massima della partizione inqubit_partitions[gate_name], elocal_paulis[gate_name][k].num_qubitsdeve essere pari ak. Per i gate di Clifford, il valore predefinito èlocal_paulis[gate_name][k]costituito da tutti i Pauli non identici possibili sukqubit, mentre per la misurazione e la preparazione il valore predefinito è costituito da tutti i Pauli composti da i su qubitk. - noise_site – Dizionario che indica se modellare il rumore del gate come
"before"o"after"il gate stesso.
Risultati
Una nuova PauliLindbladModel istanza.
Aumenti
- ValueError : se un valore
kqualsiasi superalen(gate_set.qubit_subset). - ValueError : se un valore
kqualsiasi è negativo. - ValueError : se
gate_kcontiene nomi non presenti nell'insieme dei gate. - ValueError : il nome non
gate_setè presente in nessun altro dizionario. - ValueError : una delle partizioni non è valida.
- ValueError :
local_paulisnon soddisfa la forma prevista.
k_local
static k_local(gate_set: GateSet, k: int = 2, gate_k: dict[str, int] | None = None, paulis: dict[str, QubitSparsePauliList] | None = None, noise_site: dict[str, Literal['before', 'after']] | None = None) → Self
Costruire un modello k-locale.
Ciò equivale a chiamare la funzione specificando PauliLindbladModel.k_partition_local() , per ogni gate, una partizione composta da singleton.
Parametri
- gate_set – L'insieme di gate oggetto della modellazione. Deve contenere esclusivamente livelli Clifford, di preparazione pura e di misurazione pura. Da convertire in un
ModelGateSet. - k – Il grado di località predefinito del modello. Si applica a tutti i cancelli non specificati in
gate_k. Il valore predefinito è2. Un valore pari a non produce0generatori, ovvero la porta viene modellata come priva di rumore. - gate_k – Un dizionario che associa i nomi dei gate ai valori di località specifici per ciascun gate, che sostituiscono quelli predefiniti per
ki gate specificati. - paulis – Un dizionario che indica i Paulis a singolo qubit da utilizzare nel modello k-locale per ciascun gate. Per i gate di Clifford, il valore predefinito è "tutti i Pauli a singolo qubit", mentre per la misurazione e la preparazione il valore predefinito è " ".
- noise_site – Dizionario che indica se modellare il rumore del gate come
"before"o"after"il gate stesso.
Risultati
Una nuova istanza PauliFidelityModel .
to_pauli_lindblad_maps
to_pauli_lindblad_maps(model_data: ModelData, include_spam: bool = False, symmetrize_spam: bool = False, restrict_to_qubit_idxs: bool = False) → dict[str, PauliLindbladMap]
Restituisce un dizionario contenente PauliLindbladMap per ogni gate del modello.
Parametri
- model_data – I parametri del modello stimato.
- include_spam – Indica se includere i filtri antispam nell'output.
- symmetrize_spam – Indica se simmetrizzare le mappe di rumore di preparazione e di misura in mappe di depolarizzazione generalizzate completamente specificate. Non ha alcun effetto a meno che non sia
include_spamTrue. Per i livelli SPAM, il rumore può essere specificato solo con i Pauli I e X. In tal casoFalse, questo metodo restituisce le mappe SPAM con i generatori così come sono specificati: solo con i Pauli I e X. In tal casoTrue, le mappe di rumore SPAM vengono restituite, in alternativa, come mappe di depolarizzazione generalizzate; ciò significa che tutti i generatori che presentano lo stesso modello hanno necessariamente la stessa frequenza. La mappa depolarizzante generalizzata viene scelta in modo tale che: (1) abbia le stesse fedeltà sugli operatori solo-Z della mappa originale solo-X, e (2) non aggiunga alcun nuovo modello massimo. Si noti che il numero dei generatori potrebbe aumentare: la mappatura richiede che l’insieme dei sottoinsiemi di qubit specificati dai generatori sia chiuso rispetto alla formazione di sottoinsiemi, cosa che in genere non si verifica per le mappe k-locali. Infine, si noti che ciò potrebbe comportare l'introduzione di tassi negativi che prima non esistevano; in tal caso viene visualizzato un avviso. - restrict_to_qubit_idxs – Limita le mappe di Pauli-Lindblad restituite esclusivamente ai qubit su cui è definito ciascun gate. L'indice del qubit
idxnella mappa restituita corrisponde al qubit fisicosorted(gate.qubit_idxs)[idx]. SeFalse, ogni mappa restituita agisce su tutti i qubitgate_set.num_qubits, indicizzati in base all'indice fisico dei qubit.
Risultati
Un dizionario che mette in relazione i nomi dei varchi con le corrispondenti mappe di rumore.
Aumenti
ValueError : se non model_data contiene i parametri corretti.