유틸리티
qiskit_mitigation.utils
Qiskit 오류 완화 유틸리티.
load_tasks_from_result
load_tasks_from_result(result, return_trex=False)
결과에 저장된 passthrough_data를 사용하여 실행 결과에서 객체를 MitigationTask 불러옵니다.
매개변수
- result (QuantumProgramResult) – 작업들을 불러올 대상인 resul 객체.
- return_trex (bool) – True인 경우, 반환되는
MitigationTask객체 목록에 TREX 보정 요소를 포함합니다.
리턴
주어진 결과를 산출한 프로그램을 구성하는 객체 MitigationTask 목록.
리턴 유형
목록 [ MitigationTask ]
find_combined_unique_layers
find_combined_unique_layers(circuits, mitigation_types=None, custom_boxing_options=None, box_types='all')
지정된 박싱 옵션을 사용하여, 지정된 회로 전반에 걸쳐 발견된 고유한 박싱 처리된 레이어를 반환합니다.
반환된 목록에는 입력 회로에 나타나는 각 고유한 박스형 레이어(로 표시됨 CircuitInstruction)의 인스턴스가 하나씩 포함됩니다. 일부 완화 방법에서는 관련 박싱 옵션을 적용합니다. 원하는 완화 방법을 지정하면, 고유한 레이어를 찾기 위해 회로를 박스 처리할 때 이러한 옵션이 적용됩니다. 학습에 사용되는 고유 레이어가 실행 시 사용되는 레이어와 동일하도록 보장하기 위해, 권장되는 완화 방안을 마련하는 것이 좋습니다. 반환된 상자는 측정값이 포함된 상자만, 게이트만 포함된 상자만, 또는 모든 유형의 상자가 반환되도록 필터링할 수 있습니다.
매개변수
- circuits (list[QuantumCircuit]) – 해당 레이어의 고유한 레이어를 찾기 위한 회로.
- mitigation_types (list[MitigationTask] | None) – 회로에 적용될 완화 조치가 시작된 완화 클래스 목록입니다. 각 완화 방법마다 고유한 계층에 영향을 미치는 박싱 옵션을 적용할 수 있습니다. 목록이 주어지는 경우, 그 길이는 와 같아야 합니다
circuits. - custom_boxing_options (dict |list[dict] | None) – 이 함수가
generate_boxing_pass_manager()고유한 레이어를 찾기 위해 사용할 사용자 정의 박싱 옵션입니다. 단일 dict가 지정된 경우, 모든 작업에 동일한 사용자 정의 박싱 옵션이 적용됩니다.None가 주어지면 기본 박싱 옵션이 사용됩니다. - box_types (Literal['gates', 'measurement', 'all']) –
"gates","measurements"또는 중 하나일 수 있으며"all", 이는 각각 게이트 레이어만 있는 필터 박스, 측정 레이어만 있는 필터 박스, 또는 모든 레이어가 포함된 필터 박스에 해당합니다.
리턴
주어진 박싱 옵션을 사용하여 주어진 회로 전반에 걸쳐 발견된 고유한 박싱 레이어.
리턴 유형
목록[CircuitInstruction]
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)
샷 데이터 및 qiskit_ibm_runtime.Executor 메타데이터를 기반으로 기대값을 계산합니다.
의 키에 명시된 측정 기준에 따라 획득된 데이터를 사용하여 bool_array, 의 값에 인코딩된 관측량을 계산합니다 basis_mapping``basis_mapping.
선택적으로 bool_array, 트위링 시와 같이 의 추가 축에 대해 평균을 구할 수 있습니다.
선택적으로 측정 트위링, PEC 및 사후 선별을 지원합니다.
매개변수
-
bool_array (ndarray[tuple[int, ...], dtype[bool]]) – 부울 배열로, 측정된 큐비트의 데이터를 나타내는 것으로 추정됩니다. 마지막 두 축은 각각 샷 수와 고전 비트 수를 나타냅니다. 최하위 비트는 비트 축의
0인덱스 위치에 있는 것으로 간주합니다.meas_basis_axis가 주어지면, 의 그 축은 길이 인 측정 기저를 나타낸다bool_array``len(basis_mapping). -
basis_mapping (dict[Pauli, list[SparsePauliOp | None]] |tuple[Sequence[SparsePauliOp], Sequence[str] | PauliList]) –
측정된 파울리 관측량과 이에 대응하는 기저.
tuple,(observables, msmt_bases), 또는dict, 일 수 있습니다{basis: commuting_observables}.- 튜플 : 를 포함하는 length-2 튜플로
(observables, msmt_bases), 여기서observables는 개별 기대값을 계산해야 하는SparsePauliOp인스턴스의 시퀀스이며, 는 파울리 관측량의 시퀀스이다msmt_bases. 에서 번째i파울리는 를 따라bool_array의 번째i슬라이스와 일치할 것으로 예상됩니다msmt_bases``meas_basis_axis. - dict : 번째
i키는 축을meas_basis_axis따라bool_array의 번째i슬라이스에 해당한다고 가정되는 측정 기준입니다. 이 값들은 관측 가능 변수의 개수와 길이가 동일한 관측 가능 변수 목록(SparsePauliOp)입니다.None이 값들은 관측 가능한 양이 기저와 큐비트 단위로 교환 관계를 이루지 않을 때 사용됩니다. 이 방법은 각 관측 가능한 양이, 비록 하나 이상의 기저와 교환 관계를 이룬다 하더라도, 값들 속에서 단 한 번만 나타난다고 가정합니다.
- 튜플 : 를 포함하는 length-2 튜플로
-
meas_basis_axis (int | None) – 측정 기준을 인덱싱하는 bool_array의 축입니다. 정렬 순서는
basis_mapping.의 정렬 순서와 일치해야 합니다. 만약 라면None, 는 이어야len(basis_mapping)하며1, 는 유일한 측정 기저에 대응하는 것으로 가정한다bool_array. -
avg_axis (int |tuple[int, ...] | None) – 기대값을 계산할 때 평균을 구할 bool_array의 선택적 축 하나 또는 여러 개. 보통 이것이 “회전” 축입니다. 반드시 0 이상이어야 한다. (부울 배열의
-2인덱스 위치에 있다고 가정되는 샷 축에 대해서는 항상 평균이 계산됩니다.) -
measurement_flips (ndarray[tuple[int, ...], dtype[bool]] | None) – 측정값 트와일링에 사용되는 선택적 부울 배열입니다. 비트 플립 게이트가 선행된 측정에서 어떤 비트가 획득되었는지를 나타냅니다. 데이터 처리 시 이 배열과
bool_array.을 XOR 연산한 결과를 사용할 것입니다. .와 모양이 같아야 합니다bool_array. -
pauli_signs (ndarray[tuple[int, ...], dtype[bool]] | None) – 확률적 오차 상쇄(PEC)와 함께 사용되는 선택적 부울 배열입니다. 최종 축은 회로 내의 모든 노이즈가 포함된 박스를 참조하는 것으로 가정합니다. 의 값은 의 전반적인 부호가 노이즈가 포함된 박스와 연관되어야
-1함을True나타내며, 이는 일반적으로 지정된 회로 무작위화에 따라 해당 박스에 홀수 개의 역노이즈 오류가 삽입되었기 때문이다. 마지막 축은 각 회로 무작위화와 관련된 전체 부호를 구하기 위해 즉시 2를 법으로 한 합으로 축소됩니다. 나머지 도형은 반드시 이어야 합니다pauli_signs.shape[:-1] == bool_array.shape[:-2]. 이 배열에는 ‘shots’ 축이 없다는 점에 유의하십시오. -
postselect_mask (ndarray[tuple[int, ...], dtype[bool]] | None) – 사후 선별에 사용되는 선택적 부울 배열입니다.
True(False)는 사후 선별에서 해당 샷이 승인(거부)되었음을 나타냅니다. 모양은 이어야 합니다bool_array.shape[:-1]. -
gamma_factor (float | None) – PEC 완화 기대값에 적용할 재조정 계수 감마. 이 경우
None, 재조정 계수는 양성 샘플 수에서 음성 샘플 수를 뺀 값으로 계산되며, 이는 다음과 같이 산출됩니다1/(np.sum(~pauli_signs, axis=avg_axis) - np.sum(pauli_signs, axis=avg_axis)). 양수 샘플과 음수 샘플의 개수가 같을 경우, 0으로 나누는 오류로 인해 이 작업이 실패할 수 있습니다. 또한, 이 방법은 각 기대값을 서로 다른 배수로 재조정한다는 점에 유의하십시오. (TODO: 감마 값의 배열을 지정할 수 있도록 한다). -
rescale_factors (dict[str, float] | None) – 계산된 관측량에서 발견된 각 고유 파울리 항에 대한 스케일 계수. 일반적으로 판독 오차 완화(“TREX”) 보정 계수에 사용됩니다. 이 경우
None, 배율 계수가 적용되지 않습니다.
리턴
(예: (값, 분산) 2-튜플로, 원하는 관측 변수마다 하나씩.
참고: 현재 [ ]에서는 각 관측 변수 내 합산된 항들 간의 공분산이 고려되지 않습니다.
반환된 분산. # 수행할 작업
인상
- ValueError – 음수 값, 중복된 축, 또는 마지막 두 축(샷, 비트) 중 하나가
avg_axis포함되어 있습니다. - ValueError – …를 포함합니다
avg_axis``meas_basis_axis. - ValueError –
meas_basis_axis는None이지만len(basis_mapping) != 1. - ValueError – 가
meas_basis_axis음수이거나 의 마지막 두 축(샷, 비트) 중 하나를 가리킵니다bool_array. - ValueError – 의 원소 개수는 를 따라
bool_array의 길이와 같지basis_mapping않다meas_basis_axis. - ValueError – 관측량은 측정 기준에 포함되지 않습니다.
get_measurement_bases
get_measurement_bases(observables)
주어진 모든 관측량의 기대값을 계산하기 위해 표본으로 삼을 기저를 선택하십시오.
여기서 “기준”이란 전체 가중치 또는 높은 가중치의 파울리 연산 측정을 의미하며, 이를 통해 여러 큐비트 단위로 교환 관계에 있는 파울리 연산들을 추정할 수 있다.
기초는 서로 다른 관측량에 걸쳐 통근하는 파울리들을 그룹화하여 선택됩니다.
매개변수
observables (SparsePauliOp |list[SparsePauliOp]) – 양자 컴퓨터를 사용하여 계산할 관측량.
리턴
- uint8 목록에 인코딩된 폴리 기지-샘플 목록으로, 여기서 0=I,1=Z,2=X,3=Y 이다.
- 각 관측량에 대해, 측정된 기저를 해당 파울리 상태와 그 계수에 매핑하는 딕셔너리. 측정된 기저를 키로 삼아, 각 관측량마다 이를 나타내는 SparsePauliOp 가 존재합니다.
리턴 유형
튜플 [ ndarray [ 튜플 [ int, …], dtype[uint8]], dict [ Pauli, list [ SparsePauliOp ]]]
map_observable_isa_to_canonical
map_observable_isa_to_canonical(isa_observable, canonical_qubits)
트랜스파일링된 회로에 상대적으로 정의된 관측 가능 객체를 표준 박스 순서로 매핑합니다.
트랜스파일된(또는 ISA) 순서에서는, 큐비트들이 장치 내 큐비트의 “물리적” 배치를 기준으로 인덱싱됩니다.
표준 큐비트 순서 지정 규칙에 대한 정보는 Samplomatic 문서를 참조하십시오.
매개변수
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Pauli, SparsePauliOp, 또는 SparseObservable 에 게시된 글입니다.
- canonical_qubits (Sequence[int]) – 각 표준 큐비트에 해당하는 물리적 큐비트를 지정하는 시퀀스.
리턴
다음과 같은 유형의 매핑된 연산자 isa_observable
리턴 유형
map_observable_virtual_to_canonical
map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)
가상 큐비트 순서를 갖는 관측 가능량을 표준 박스 순서로 매핑한다.
표준 큐비트 순서 지정 규칙에 대한 정보는 Samplomatic 문서를 참조하십시오.
매개변수
- virt_observable (Pauli |SparsePauliOp |SparseObservable) – Pauli, SparsePauliOp, 또는 SparseObservable 에 게시된 글입니다.
- layout (Sequence[int]) – isa 회로에 사용된 물리적 큐비트 목록.
- canonical_qubits (Sequence[int]) – 각 표준 큐비트에 해당하는 물리적 큐비트를 지정하는 시퀀스.
리턴
다음과 같은 유형의 매핑된 연산자 virt_observable
리턴 유형
map_observable_isa_to_virtual
map_observable_isa_to_virtual(isa_observable, layout)
트랜스파일된 회로에 상대적으로 정의된 관측 가능 객체를 가상 순서에 매핑합니다.
트랜스파일된(또는 ISA) 순서에서는, 큐비트들이 장치 내 큐비트의 “물리적” 배치를 기준으로 인덱싱됩니다.
매개변수
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Pauli, SparsePauliOp, 또는 SparseObservable 에 게시된 글입니다.
- layout (Sequence[int]) – isa 회로에 사용된 물리적 큐비트 목록.
리턴
다음과 같은 유형의 매핑된 연산자 isa_observable
리턴 유형