tensorcircuit.results.readout_mitigation#

readout error mitigation functionalities

class tensorcircuit.results.readout_mitigation.ReadoutMit(execute: Callable[[...], List[Dict[str, int]]], iter_threshold: int = 4096)[source]#

Bases: object

__init__(execute: Callable[[...], List[Dict[str, int]]], iter_threshold: int = 4096)[source]#

The Class for readout error mitigation

Parameters
  • execute (Callable[..., List[ct]]) – execute function to run the cirucit

  • iter_threshold (int, optional) – iteration threshold, defaults to 4096

apply_correction(counts: Dict[str, int], qubits: Sequence[int], positional_logical_mapping: Optional[Dict[int, int]] = None, logical_physical_mapping: Optional[Dict[int, int]] = None, distance: Optional[int] = None, method: str = 'constrained_least_square', max_iter: int = 25, tol: float = 1e-05, return_mitigation_overhead: bool = False, details: bool = False) → Dict[str, int][source]#

Main readout mitigation program for all methods.

Parameters
  • counts (ct) – raw count

  • qubits (Sequence[int]) – user-defined logical qubits to show final mitted results

  • positional_logical_mapping (Optional[Dict[int, int]], optional) – positional_logical_mapping, defaults to None.

  • logical_physical_mapping (Optional[Dict[int, int]], optional) – logical_physical_mapping, defaults to None

  • distance (int, optional) – defaults to None

  • method (str, optional) – mitigation method, defaults to “square”

  • max_iter (int, optional) – defaults to 25

  • tol (float, optional) – defaults to 1e-5

:param return_mitigation_overhead:defaults to False :type return_mitigation_overhead: bool, optional :param details: defaults to False :type details: bool, optional :return: mitigated count :rtype: ct

apply_readout_mitigation(raw_count: Dict[str, int], method: str = 'inverse') → Dict[str, int][source]#

Main readout mitigation program for method=”inverse” or “square”

Parameters
  • raw_count (ct) – the raw count

  • method (str, optional) – mitigation method, defaults to “inverse”

Returns

mitigated count

Return type

ct

cals_from_api(qubits: Union[int, List[int]], device: Optional[str] = None) → None[source]#

Get local calibriation matrix from cloud API from tc supported providers

Parameters
  • qubits (Union[int, List[int]]) – list of physical qubits to be calibriated

  • device (Optional[str], optional) – the device str to qurey for the info, defaults to None

cals_from_system(qubits: Union[int, List[int]], shots: int = 8192, method: str = 'local', masks: Optional[List[str]] = None) → None[source]#

Get calibrattion information from system.

Parameters
  • qubits (Sequence[Any]) – calibration qubit list (physical qubits on device)

  • shots (int, optional) – shots used for runing the circuit, defaults to 8192

  • method (str, optional) – calibration method, defaults to “local”, it can also be “global”

expectation(counts: Dict[str, int], z: Optional[Sequence[int]] = None, diagonal_op: Optional[Any] = None, positional_logical_mapping: Optional[Dict[int, int]] = None, logical_physical_mapping: Optional[Dict[int, int]] = None, method: str = 'constrained_least_square') → float[source]#

Calculate expectation value after readout error mitigation

Parameters
  • counts (ct) – raw counts

  • z (Optional[Sequence[int]]) – if defaults as None, then diagonal_op must be set a list of qubit that we measure Z op on

  • diagoal_op (Tensor) – shape [n, 2], explicitly indicate the diagonal op on each qubit eg. [1, -1] for z [1, 1] for I, etc.

  • positional_logical_mapping (Optional[Dict[int, int]], optional) – positional_logical_mapping, defaults to None.

  • logical_physical_mapping (Optional[Dict[int, int]], optional) – logical_physical_mapping, defaults to None

  • method (str, optional) – readout mitigation method, defaults to “constrained_least_square”

Returns

expectation value after readout error mitigation

Return type

float

get_matrix(qubits: Optional[Sequence[Any]] = None) → Any[source]#

Calculate cal_matrix according to use qubit list.

Parameters

qubits (Sequence[Any], optional) – used qubit list, defaults to None

Returns

cal_matrix

Return type

Tensor

global_miti_readout_circ() → List[tensorcircuit.circuit.Circuit][source]#

Generate circuits for global calibration.

Returns

circuit list

Return type

List[Circuit]

local_miti_readout_circ() → List[tensorcircuit.circuit.Circuit][source]#

Generate circuits for local calibration.

Returns

circuit list

Return type

List[Circuit]

local_miti_readout_circ_by_mask(bsl: List[str]) → List[tensorcircuit.circuit.Circuit][source]#
mapping_preprocess(counts: Dict[str, int], qubits: Sequence[int], positional_logical_mapping: Optional[Dict[int, int]] = None, logical_physical_mapping: Optional[Dict[int, int]] = None) → Dict[str, int][source]#

Preprocessing to deal with qubit mapping, including positional_logical_mapping and logical_physical_mapping. Return self.use_qubits(physical) and corresponding counts.

Parameters
  • counts (ct) – raw_counts on positional_qubits

  • qubits (Sequence[int]) – user-defined logical qubits to show final mitted results

  • positional_logical_mapping (Optional[Dict[int, int]], optional) – positional_logical_mapping, defaults to None.

  • logical_physical_mapping (Optional[Dict[int, int]], optional) – logical_physical_mapping, defaults to None

Returns

counts on self.use_qubit(physical)

Return type

ct

mitigate_probability(probability_noise: Any, method: str = 'inverse') → Any[source]#

Get the mitigated probability.

Parameters
  • probability_noise (Tensor) – probability of raw count

  • method (str, optional) – mitigation methods, defaults to “inverse”, it can also be “square”

Returns

mitigated probability

Return type

Tensor

newrange(m: int, qubits: Optional[Sequence[Any]]) → int[source]#

Rerange the order according to used qubit list.

Parameters
  • m (int) – index

  • qubits (Sequence[Any]) – used qubit list

Returns

new index

Return type

int

reduced_cal_matrix(counts, qubits, distance=None)[source]#
ubs(i: int, qubits: Optional[Sequence[Any]]) → int[source]#

Help omit calibration results that not in used qubit list.

Parameters
  • i (int) – index

  • qubits (Sequence[Any]) – used qubit list

Returns

omitation related value

Return type

int