exp_vals
qiskit_addon_utils.exp_vals
Ferramentas para calcular valores de expectativa.
executor_expectation_values
executor_expectation_values(bool_array, basis_mapping, /, meas_basis_axis=None, *, avg_axis=None, measurement_flips=None, pauli_signs=None, postselect_mask=None, gamma_factor=None, rescale_factors=None)
Calcula os valores esperados a partir dos dados de filmagem e dos qiskit_ibm_runtime.Executor metadados.
Utiliza os dados em bool_array, obtidos com as bases de medição conforme especificado nas chaves de basis_dict, para calcular as grandezas observáveis codificadas nos valores de basis_dict.
Permite, opcionalmente, calcular a média em eixos adicionais de bool_array, como no caso do giro.
Opcionalmente, oferece suporte a rotação de medição, PEC e pós-seleção.
Parâmetros
-
bool_array (ndarray[tuple[int, ...], dtype[bool]]) – Matriz booleana, que provavelmente representa dados de qubits medidos. Os dois últimos eixos representam, respectivamente, o número de disparos e o número de bits clássicos. Presume-se que o bit menos significativo esteja no índice
0do eixo de bits. Semeas_basis_axisfor dado, esse eixo debool_arrayindexa as bases de medida, com comprimentolen(basis_mapping). -
basis_mapping (dict[Pauli, list[SparsePauliOp | None]] |tuple[Sequence[SparsePauliOp], Sequence[str] | PauliList]) –
Os observáveis de Pauli e as bases associadas que foram medidas. Pode ser um
tuple,(observables, msmt_bases), ou umdict,{basis: commuting_observables}.- tupla : Uma tupla de tipo
length-2contendo(observables, msmt_bases), em queobservablesé uma sequência deSparsePauliOpinstâncias para as quais os valores de expectativa individuais devem ser calculados, emsmt_basesé uma sequência de observáveis de Pauli. Espera-se que oi-º Pauli emmsmt_basescorresponda ài-ª fatia debool_arrayao longo demeas_basis_axis. - dict : A
i-ª chave é uma base de medida que se supõe corresponder ài-ª fatia debool_arrayao longo domeas_basis_axiseixo. Os valores são listas de observáveis (SparsePauliOp) cujo comprimento é igual ao número de observáveis.NoneEsses valores são utilizados quando uma observável não comuta, em nível de qubit, com a base. Esse método pressupõe que cada observável apareça apenas uma vez nos valores, mesmo que comute com mais de uma base.
- tupla : Uma tupla de tipo
-
meas_basis_axis (int | None) – Eixo do bool_array que indexa as bases de medição. A ordem deve corresponder à ordem em
basis_mapping. SeNone, entãolen(basis_mapping)deve ser1, ebool_arrayé considerado como correspondendo à única base de medição. -
avg_axis (int |tuple[int, ...] | None) – Eixo ou eixos opcionais do bool_array sobre os quais se deve calcular a média ao determinar os valores esperados. Normalmente, esse é o eixo de “giro”. Deve ser um número não negativo. (O eixo dos tiros, que se presume estar no índice
-2da matriz booleana, é sempre considerado na média). -
measurement_flips (ndarray[tuple[int, ...], dtype[bool]] | None) – Matriz booleana opcional usada com a rotação de medidas. Indica quais bits foram adquiridos com medições precedidas por portas de inversão de bits. O processamento de dados utilizará o resultado da operação XOR entre essa matriz e
bool_array. Deve ter o mesmo formato quebool_array. -
pauli_signs (ndarray[tuple[int, ...], dtype[bool]] | None) – Matriz booleana opcional utilizada com o cancelamento probabilístico de erros (PEC). Presume-se que o eixo final indexe todas as caixas com ruído no circuito. O valor de
Trueindica que o sinal geral de-1deve estar associado ao bloco com ruído, normalmente porque um número ímpar de erros de ruído inverso foi inserido nesse bloco para a randomização do circuito especificada. O eixo final é imediatamente reduzido a uma soma módulo 2 para obter o sinal geral associado a cada randomização do circuito. A forma restante deve serpauli_signs.shape[:-1] == bool_array.shape[:-2]. Observe que esse array não possui um eixo de tiros. -
postselect_mask (ndarray[tuple[int, ...], dtype[bool]] | None) – Matriz booleana opcional usada para a pós-seleção.
True(False) indica uma tomada aceita (rejeitada) pela pós-seleção. A forma deve serbool_array.shape[:-1]. -
gamma_factor (float | None) – Fator de reescalonamento gama a ser aplicado aos valores esperados mitigados pelo PEC. Se
None, os fatores de reescalonamento serão calculados como o número de amostras positivas menos o número de amostras negativas, calculado da seguinte forma:1/(np.sum(~pauli_signs, axis=avg_axis) - np.sum(pauli_signs, axis=avg_axis)). Isso pode falhar devido à divisão por zero se houver um número igual de amostras positivas e negativas. Observe também que isso redimensiona cada valor esperado por um fator diferente. (A fazer: permitir a especificação de uma matriz de valores de gama). -
rescale_factors (Sequence[Sequence[Sequence[float]]] | None) – Fator de escala para cada termo de Pauli em cada observável em cada base no dado
basis_mapping. Normalmente utilizado para fatores de correção de mitigação de leitura (“TREX”). Cada item da lista corresponde a uma base diferente e contém uma lista de listas de fatores para cada termo em cada observável relacionado a essa base. A ordem das bases e dos observáveis dentro de cada base deve ser a mesma que nabasis_mapping. Para observáveis vazios em algumas das bases, mantenha uma lista vazia.NoneSe isso ocorrer, o fator de escala não será aplicado.
Retorna
Uma lista de (exp. val, variance) 2 tuplas, uma para cada observável desejado.
Observação: As covariâncias entre os termos somados em cada observável não são contabilizadas atualmente no
desvios devolvidos. # PENDÊNCIA
Aumentos
- ValueError –
avg_axiscontém valores negativos. - ValueError –
meas_basis_axiséNonemaslen(basis_mapping) != 1. - ValueError – O número de entradas em
basis_mappingnão é igual ao comprimento debool_arrayao longo demeas_basis_axis. - ValueError – Um observável não está abrangido pelas bases de medição.
get_measurement_bases
get_measurement_bases(observables, bases_in_int_format=True)
Escolha as bases para a amostragem a fim de calcular os valores de expectativa para todos os observáveis fornecidos.
Aqui, uma "base" refere-se à medição de um Pauli de peso total ou de peso elevado, a partir do qual podem ser estimados vários Paulis de comutação de qubit.
As bases são escolhidas pelo agrupamento de Paulis comutáveis entre os diferentes observáveis.
Parâmetros
- observables (SparsePauliOp |list[SparsePauliOp]) – Os observáveis a serem calculados usando o computador quântico.
- bases_in_int_format (bool) – Se for verdadeiro, retorne as bases como uma matriz de inteiros, seguindo a convenção do Samplomatic: I=0, Z=1, X=2, Y=3. A ordem dos inteiros seguirá o índice de cada Pauli na sequência. Por exemplo, a base “IXYZ” seria retornada como [1, 3, 2, 0]. Se for falso, retorna as bases como uma matriz de strings.
Retorna
- Lista de bases de Pauli a serem amostradas, codificadas em uma lista de
uint8, onde0=I,1=Z,2=X,3=You uma lista de strings (conforme o parâmetrobases\_in\_int\_format). - Ditado que mapeia cada base medida para os Paulis relevantes e seus coeficientes para cada observável. Com as bases medidas como chaves, para cada observável há um SparsePauliOp que o representa.
Tipo de retorno
tupla [ lista [ ndarray [ tupla [ int, …], d[* type uint8*] ]], dict [ Pauli, list [ SparsePauliOp ]]] | tuple [ list [ str ], dict [ Pauli, list [ SparsePauliOp ]]]
map_observable_isa_to_canonical
map_observable_isa_to_canonical(isa_observable, canonical_qubits)
Mapear um observável definido em relação ao circuito transpilado para a ordem de caixa canônica.
Na ordenação transpilada (ou ISA), os qubits são indexados com base no layout "físico" dos qubits no dispositivo.
Para obter informações sobre as convenções de ordenação de qubit canônico, consulte os documentos do Samplomatic ).
Parâmetros
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Um objeto Pauli, SparsePauliOp, ou SparseObservable.
- canonical_qubits (Sequence[int]) – Uma sequência que especifica o qubit físico para cada qubit canônico.
Retorna
Um operador mapeado do mesmo tipo que isa_observable
Tipo de retorno
map_observable_virtual_to_canonical
map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)
Mapeie um observável com ordenação de qubit virtual para ordem de caixa canônica.
Para obter informações sobre as convenções de ordenação de qubit canônico, consulte os documentos do Samplomatic ).
Parâmetros
- virt_observable (Pauli |SparsePauliOp |SparseObservable) – Um objeto Pauli, SparsePauliOp, ou SparseObservable.
- layout (Sequence[int]) – A lista de qubits físicos usados para o circuito isa.
- canonical_qubits (Sequence[int]) – Um dicionário que mapeia os qubits canônicos dentro de uma caixa para qubits físicos dentro do layout.
Retorna
Um operador mapeado do mesmo tipo que virt_observable
map_observable_isa_to_virtual
map_observable_isa_to_virtual(isa_observable, layout)
Mapear um observável definido em relação ao circuito transpilado para a ordem virtual.
Na ordenação transpilada (ou ISA), os qubits são indexados com base no layout "físico" dos qubits no dispositivo.
Parâmetros
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Um objeto Pauli, SparsePauliOp, ou SparseObservable.
- layout (Sequence[int]) – A lista de qubits físicos usados para o circuito isa.
Retorna
Um operador mapeado do mesmo tipo que isa_observable
Tipo de retorno