Skip to main content
IBM Quantum Platform

유틸리티

qiskit_mitigation.utils

Qiskit 오류 완화 유틸리티.

load_tasks_from_result

load_tasks_from_result(result, return_trex=False)

GitHub

결과에 저장된 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')

GitHub

지정된 박싱 옵션을 사용하여, 지정된 회로 전반에 걸쳐 발견된 고유한 박싱 처리된 레이어를 반환합니다.

반환된 목록에는 입력 회로에 나타나는 각 고유한 박스형 레이어(로 표시됨 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)

GitHub

샷 데이터 및 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 이 값들은 관측 가능한 양이 기저와 큐비트 단위로 교환 관계를 이루지 않을 때 사용됩니다. 이 방법은 각 관측 가능한 양이, 비록 하나 이상의 기저와 교환 관계를 이룬다 하더라도, 값들 속에서 단 한 번만 나타난다고 가정합니다.
  • 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)

GitHub

주어진 모든 관측량의 기대값을 계산하기 위해 표본으로 삼을 기저를 선택하십시오.

여기서 “기준”이란 전체 가중치 또는 높은 가중치의 파울리 연산 측정을 의미하며, 이를 통해 여러 큐비트 단위로 교환 관계에 있는 파울리 연산들을 추정할 수 있다.

기초는 서로 다른 관측량에 걸쳐 통근하는 파울리들을 그룹화하여 선택됩니다.

매개변수

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)

GitHub

트랜스파일링된 회로에 상대적으로 정의된 관측 가능 객체를 표준 박스 순서로 매핑합니다.

트랜스파일된(또는 ISA) 순서에서는, 큐비트들이 장치 내 큐비트의 “물리적” 배치를 기준으로 인덱싱됩니다.

표준 큐비트 순서 지정 규칙에 대한 정보는 Samplomatic 문서를 참조하십시오.

매개변수

  • isa_observable (Pauli |SparsePauliOp |SparseObservable) – Pauli, SparsePauliOp, 또는 SparseObservable 에 게시된 글입니다.
  • canonical_qubits (Sequence[int]) – 각 표준 큐비트에 해당하는 물리적 큐비트를 지정하는 시퀀스.

리턴

다음과 같은 유형의 매핑된 연산자 isa_observable

리턴 유형

Pauli | SparsePauliOp | SparseObservable

map_observable_virtual_to_canonical

map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)

GitHub

가상 큐비트 순서를 갖는 관측 가능량을 표준 박스 순서로 매핑한다.

표준 큐비트 순서 지정 규칙에 대한 정보는 Samplomatic 문서를 참조하십시오.

매개변수

  • virt_observable (Pauli |SparsePauliOp |SparseObservable) – Pauli, SparsePauliOp, 또는 SparseObservable 에 게시된 글입니다.
  • layout (Sequence[int]) – isa 회로에 사용된 물리적 큐비트 목록.
  • canonical_qubits (Sequence[int]) – 각 표준 큐비트에 해당하는 물리적 큐비트를 지정하는 시퀀스.

리턴

다음과 같은 유형의 매핑된 연산자 virt_observable

리턴 유형

Pauli | SparsePauliOp | SparseObservable

map_observable_isa_to_virtual

map_observable_isa_to_virtual(isa_observable, layout)

GitHub

트랜스파일된 회로에 상대적으로 정의된 관측 가능 객체를 가상 순서에 매핑합니다.

트랜스파일된(또는 ISA) 순서에서는, 큐비트들이 장치 내 큐비트의 “물리적” 배치를 기준으로 인덱싱됩니다.

매개변수

리턴

다음과 같은 유형의 매핑된 연산자 isa_observable

리턴 유형

Pauli | SparsePauliOp | SparseObservable

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.