pygsti.extras.idletomography.idtcore
¶
Core Idle Tomography routines
Module Contents¶
Functions¶

Computes the Jacobian matrix element for a Hamiltonian error: how the 

Computes the "expected" outcome when the stochastic error error 

Computes the Jacobian matrix element for a Stochastic error: how the 

Computes the Jacobian matrix element for a Affine error: how the 

Computes the Jacobian matrix element for a Affine error: how the 

Construct a list of Paulibasis fiducial pairs for idle tomography. 

Infers what the preferred basis signs are based on the length of gatename 

Translate 

Intelligently determine preparation and measurement Pauli basis 

Construct the list of experiments needed to perform idle tomography. 

Construct lists of experiments, one for each maximumlength value, needed 

Extract the observed error rate from a series of experiments which prepares 

Extract the observed error rate from a series of experiments which prepares 

Analyze dataset using the idle tomography protocol to characterize 
 pygsti.extras.idletomography.idtcore.hamiltonian_jac_element(prep, error, observable)¶
Computes the Jacobian matrix element for a Hamiltonian error: how the expectation value of observable in state prep changes due to Hamiltonian error.
 Parameters
prep (NQPauliState) – The state that is prepared.
error (NQPauliOp) – The type (as a pauli operator) of Hamiltonian error.
observable (NQPauliOp) – The observable whose expectation value is measured. Note: giving a NQPauliState will be treated as an Nqubit Pauli operator whose sign is the product of the signs of the NQPauliState’s perqubit basis signs.
 Returns
float
 pygsti.extras.idletomography.idtcore.stochastic_outcome(prep, error, meas)¶
Computes the “expected” outcome when the stochastic error error occurs between preparing in prep and measuring in basis meas.
Note: currently, the preparation and measurement bases must be the same (up to signs) or an AssertionError is raised. (If they’re not, there isn’t a single expected outcome).
 Parameters
prep (NQPauliState) – The state that is prepared.
error (NQPauliOp) – The type (as a pauli operator) of Stochastic error.
meas (NQPauliState) – The basis which is measured. The ‘signs’ of the basis Paulis determine which state is measured as a ‘0’ vs. a ‘1’. (essentially the POVM.)
 Returns
NQOutcome
 pygsti.extras.idletomography.idtcore.stochastic_jac_element(prep, error, meas, outcome)¶
Computes the Jacobian matrix element for a Stochastic error: how the probability of outcome changes with respect to the rate of error when preparing state prep and measuring in basis meas.
 Parameters
prep (NQPauliState) – The state that is prepared.
error (NQPauliOp) – The type (as a pauli operator) of Stochastic error.
meas (NQPauliState) – The basis that is measured (essentially the POVM).
outcome (NQOutcome) – The measurement outcome that is considered.
 Returns
float
 pygsti.extras.idletomography.idtcore.affine_jac_element(prep, error, meas, outcome)¶
Computes the Jacobian matrix element for a Affine error: how the probability of outcome changes with respect to the rate of error when preparing state prep and measuring in basis meas.
Note: Affine error maps leave qubits corresponging to I’s in error alone. An affine error is defined as replacing portions of the density matrix corresponding to nontrivial Pauli operators with those operators.
 Parameters
prep (NQPauliState) – The state that is prepared.
error (NQPauliOp) – The type (as a pauli operator) of Affine error.
meas (NQPauliState) – The basis that is measured (essentially the POVM).
outcome (NQOutcome) – The measurement outcome that is considered.
 Returns
float
 pygsti.extras.idletomography.idtcore.affine_jac_obs_element(prep, error, observable)¶
Computes the Jacobian matrix element for a Affine error: how the expectation value of observable changes with respect to the rate of error when preparing state prep.
Note: Affine error maps leave qubits corresponging to I’s in error alone. An affine error is defined as replacing portions of the density matrix corresponding to nontrivial Pauli operators with those operators.
 Parameters
prep (NQPauliState) – The state that is prepared.
error (NQPauliOp) – The type (as a pauli operator) of Affine error.
observable (NQPauliOp) – The observable whose expectation value is measured.
 Returns
float
 pygsti.extras.idletomography.idtcore.idle_tomography_fidpairs(nqubits, maxweight=2, include_hamiltonian=True, include_stochastic=True, include_affine=True, ham_tmpl='auto', preferred_prep_basis_signs=('+', '+', '+'), preferred_meas_basis_signs=('+', '+', '+'))¶
Construct a list of Paulibasis fiducial pairs for idle tomography.
This function constructs the “standard” set of fiducial pairs used to generate idle tomography sequences which probe Hamiltonian, Stochastic, and/or Affine errors in an idle gate.
 Parameters
nqubits (int) – The number of qubits.
maxweight (int, optional) – The maximum weight of errors to consider.
include_hamiltonian (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
include_stochastic (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
include_affine (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
ham_tmpl (tuple, optional) – A tuple of lengthmaxweight Pauli strings (i.e. string w/letters “X”, “Y”, or “Z”), describing how to construct the fiducial pairs used to detect Hamiltonian errors. The special (and default) value “auto” uses (“X”,”Y”,”Z”) and (“ZY”,”ZX”,”XZ”,”YZ”,”YX”,”XY”) for maxweight equal to 1 and 2, repectively, and will generate an error if maxweight > 2.
preferred_prep_basis_signs (tuple, optional) – A 3tuple of “+” or “” strings indicating which sign for preparing or measuring in the X, Y, and Z bases is preferable. Usually one orientation if preferred because it’s easier to achieve using the native model.
preferred_meas_basis_signs (tuple, optional) – A 3tuple of “+” or “” strings indicating which sign for preparing or measuring in the X, Y, and Z bases is preferable. Usually one orientation if preferred because it’s easier to achieve using the native model.
 Returns
list – a list of (prep,meas) 2tuples of NQPauliState objects, each of length nqubits, representing the fiducial pairs.
 pygsti.extras.idletomography.idtcore.preferred_signs_from_paulidict(pauli_basis_dict)¶
Infers what the preferred basis signs are based on the length of gatename strings in pauli_basis_dict (shorter strings are preferred).
 Parameters
pauli_basis_dict (dict) – A dictionary w/keys like “+X” or “Y” and values that are tuples of gate names (not labels, which include qubit or other statespace designations), e.g. (“Gx”,”Gx”).
 Returns
tuple – A 3tuple of elements in {“+”, ““}, exactly the format expected by preferred_*_basis_signs arguments of :function:`idle_tomography_fidpairs`.
 pygsti.extras.idletomography.idtcore.fidpairs_to_pauli_fidpairs(fidpairs_list, pauli_basis_dicts, nqubits)¶
Translate
GatesString
type fiducial pairs toNQPauliState
type “Pauli fiducial pairs” using pauli_basis_dicts. Parameters
fidpairs_list (list) – A list whose elements are 2tuples of
Circuit
objects.pauli_basis_dicts (tuple) – A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See :function:`preferred_signs_from_paulidict` for details on each dictionary’s format.
nqubits (int) – The number of qubits. Needed because
Circuit
objects don’t contain this information.
 Returns
list – A list of 2tuples of
NQPauliState
objects.
 pygsti.extras.idletomography.idtcore.determine_paulidicts(model)¶
Intelligently determine preparation and measurement Pauli basis dictionaries from a
Model
.The returned dictionaries are required for various parts of idle tomography, as they bridge the native model’s gates to the “Pauli basis language” used in idle tomography.
 Parameters
model (Model) – The model which defines the available preparation, measurement, and operations. It is assumed that model’s operation are expressed in a Pauliproduct basis.
 Returns
pauli_basis_dicts or None – If successful, a (prepDict,measureDict) 2tuple of Pauli basis dictionaries. If unsuccessful, None.
 pygsti.extras.idletomography.idtcore.make_idle_tomography_list(nqubits, max_lenghts, pauli_basis_dicts, maxweight=2, idle_string=((),), include_hamiltonian=True, include_stochastic=True, include_affine=True, ham_tmpl='auto', preferred_prep_basis_signs='auto', preferred_meas_basis_signs='auto')¶
Construct the list of experiments needed to perform idle tomography.
 Parameters
nqubits (int) – The number of qubits.
max_lenghts (list) – A list of maximum germpower lengths. Each specifies a number many times to repeat the idle gate, and typically this is a list of the powers of 2 preceded by zero, e.g. [0,1,2,4,16]. The largest value in this list should be chosen to be the maximum number of idle gates you want to perform in a row (typically limited by performance or time constraints).
pauli_basis_dicts (tuple) – A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See :function:`preferred_signs_from_paulidict` for details on each dictionary’s format.
maxweight (int, optional) – The maximum weight of errors to consider.
idle_string (Circuitlike, optional) – A Circuit or tuple of operation labels that represents the idle gate being characterized by idle tomography.
include_hamiltonian (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
include_stochastic (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
include_affine (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
ham_tmpl (tuple, optional) – A tuple of lengthmaxweight Pauli strings (i.e. string w/letters “X”, “Y”, or “Z”), describing how to construct the fiducial pairs used to detect Hamiltonian errors. The special (and default) value “auto” uses (“X”,”Y”,”Z”) and (“ZY”,”ZX”,”XZ”,”YZ”,”YX”,”XY”) for maxweight equal to 1 and 2, repectively, and will generate an error if maxweight > 2.
preferred_prep_basis_signs (tuple, optional) – A 3tuple of “+” or “” strings indicating which sign for preparing or measuring in the X, Y, and Z bases is preferable. Usually one orientation if preferred because it’s easier to achieve using the native model. Additionally, the special (and default) value “auto” may be used, in which case :function:`preferred_signs_from_paulidict` is used to choose preferred signs based on pauli_basis_dicts.
preferred_meas_basis_signs (tuple, optional) – A 3tuple of “+” or “” strings indicating which sign for preparing or measuring in the X, Y, and Z bases is preferable. Usually one orientation if preferred because it’s easier to achieve using the native model. Additionally, the special (and default) value “auto” may be used, in which case :function:`preferred_signs_from_paulidict` is used to choose preferred signs based on pauli_basis_dicts.
 Returns
list – A list of
Circuit
objects.
 pygsti.extras.idletomography.idtcore.make_idle_tomography_lists(nqubits, max_lenghts, pauli_basis_dicts, maxweight=2, idle_string=((),), include_hamiltonian=True, include_stochastic=True, include_affine=True, ham_tmpl='auto', preferred_prep_basis_signs='auto', preferred_meas_basis_signs='auto')¶
Construct lists of experiments, one for each maximumlength value, needed to perform idle tomography. This is potentiall useful for running GST on idle tomography data.
 Parameters
nqubits (int) – The number of qubits.
max_lenghts (list) – A list of maximum germpower lengths. Each specifies a number many times to repeat the idle gate, and typically this is a list of the powers of 2 preceded by zero, e.g. [0,1,2,4,16]. The largest value in this list should be chosen to be the maximum number of idle gates you want to perform in a row (typically limited by performance or time constraints).
pauli_basis_dicts (tuple) – A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See :function:`preferred_signs_from_paulidict` for details on each dictionary’s format.
maxweight (int, optional) – The maximum weight of errors to consider.
idle_string (Circuitlike, optional) – A Circuit or tuple of operation labels that represents the idle gate being characterized by idle tomography.
include_hamiltonian (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
include_stochastic (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
include_affine (bool, optional) – Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
ham_tmpl (tuple, optional) – A tuple of lengthmaxweight Pauli strings (i.e. string w/letters “X”, “Y”, or “Z”), describing how to construct the fiducial pairs used to detect Hamiltonian errors. The special (and default) value “auto” uses (“X”,”Y”,”Z”) and (“ZY”,”ZX”,”XZ”,”YZ”,”YX”,”XY”) for maxweight equal to 1 and 2, repectively, and will generate an error if maxweight > 2.
preferred_prep_basis_signs (tuple, optional) – A 3tuple of “+” or “” strings indicating which sign for preparing or measuring in the X, Y, and Z bases is preferable. Usually one orientation if preferred because it’s easier to achieve using the native model. Additionally, the special (and default) value “auto” may be used, in which case :function:`preferred_signs_from_paulidict` is used to choose preferred signs based on pauli_basis_dicts.
preferred_meas_basis_signs (tuple, optional) – A 3tuple of “+” or “” strings indicating which sign for preparing or measuring in the X, Y, and Z bases is preferable. Usually one orientation if preferred because it’s easier to achieve using the native model. Additionally, the special (and default) value “auto” may be used, in which case :function:`preferred_signs_from_paulidict` is used to choose preferred signs based on pauli_basis_dicts.
 Returns
list – A list of lists of
Circuit
objects, one list per maxL value.
 pygsti.extras.idletomography.idtcore.compute_observed_samebasis_err_rate(dataset, pauli_fidpair, pauli_basis_dicts, idle_string, outcome, max_lenghts, fit_order=1)¶
Extract the observed error rate from a series of experiments which prepares and measures in the same Pauli basis and tracks a particular outcome.
 Parameters
dataset (DataSet) – The set of data counts (observations) to use.
pauli_fidpair (tuple) – A (prep,measure) 2tuple of
NQPauliState
objects specifying the prepation state and measurement basis.pauli_basis_dicts (tuple) – A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See :function:`preferred_signs_from_paulidict` for details on each dictionary’s format.
idle_string (Circuit) – The Circuit representing the idle operation being characterized.
outcome (NQOutcome) – The outcome being tracked.
max_lenghts (list) – A list of maximum germpower lengths. The seriese of sequences considered is prepFiducial + idle_string^L + measFiducial, where L ranges over the values in max_lenghts.
fit_order (int, optional) – The polynomial order used to fit the observed data probabilities.
 Returns
dict – A dictionary of information about the fit, including the observed error rate and the data points that were fit.
 pygsti.extras.idletomography.idtcore.compute_observed_diffbasis_err_rate(dataset, pauli_fidpair, pauli_basis_dicts, idle_string, observable, max_lenghts, fit_order=1)¶
Extract the observed error rate from a series of experiments which prepares and measures in different Pauli basis and tracks the expectation value of a particular observable.
 Parameters
dataset (DataSet) – The set of data counts (observations) to use.
pauli_fidpair (tuple) – A (prep,measure) 2tuple of
NQPauliState
objects specifying the prepation state and measurement basis.pauli_basis_dicts (tuple) – A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See :function:`preferred_signs_from_paulidict` for details on each dictionary’s format.
idle_string (Circuit) – The Circuit representing the idle operation being characterized.
observable (NQPauliOp) – The observable whose expectation value is being tracked.
max_lenghts (list) – A list of maximum germpower lengths. The seriese of sequences considered is prepFiducial + idle_string^L + measFiducial, where L ranges over the values in max_lenghts.
fit_order (int, optional) – The polynomial order used to fit the observed data probabilities.
 Returns
dict – A dictionary of information about the fit, including the observed error rate and the data points that were fit.
 pygsti.extras.idletomography.idtcore.do_idle_tomography(nqubits, dataset, max_lenghts, pauli_basis_dicts, maxweight=2, idle_string=((),), include_hamiltonian='auto', include_stochastic='auto', include_affine='auto', advanced_options=None, verbosity=0, comm=None)¶
Analyze dataset using the idle tomography protocol to characterize idle_string.
 Parameters
nqubits (int) – The number of qubits.
dataset (DataSet) – The set of data counts (observations) to use.
max_lenghts (list) – A list of maximum germpower lengths. Each specifies a number many times to repeat the idle gate, and typically this is a list of the powers of 2 preceded by zero, e.g. [0,1,2,4,16]. The largest value in this list should be chosen to be the maximum number of idle gates you want to perform in a row (typically limited by performance or time constraints).
pauli_basis_dicts (tuple) – A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See :function:`preferred_signs_from_paulidict` for details on each dictionary’s format.
maxweight (int, optional) – The maximum weight of errors to consider.
idle_string (Circuitlike, optional) – A Circuit or tuple of operation labels that represents the idle gate being characterized by idle tomography.
include_hamiltonian ({True,False,"auto"}) – Whether to extract Hamiltonian, Stochastic, and Affinetype intrinsic errors. If “auto” is specified, then the corresponding errortype is extracted only if there is enough data to reliably infer them (i.e. enough data to construct “full rank” Jacobian matrices).
include_stochastic ({True,False,"auto"}) – Whether to extract Hamiltonian, Stochastic, and Affinetype intrinsic errors. If “auto” is specified, then the corresponding errortype is extracted only if there is enough data to reliably infer them (i.e. enough data to construct “full rank” Jacobian matrices).
include_affine ({True,False,"auto"}) – Whether to extract Hamiltonian, Stochastic, and Affinetype intrinsic errors. If “auto” is specified, then the corresponding errortype is extracted only if there is enough data to reliably infer them (i.e. enough data to construct “full rank” Jacobian matrices).
advanced_options (dict, optional) –
A dictionary of optional advanced arguments which influence the way idle tomography is performed. Allowed keys are:
”jacobian mode”: {“separate”,”together”} how to evaluate jacobians
”preferred_prep_basis_signs” : 3tuple of “+”/”” or default=”auto”
”preferred_meas_basis_signs” : 3tuple of “+”/”” or default=”auto”
”pauli_fidpairs”: alternate list of pauli fiducial pairs to use
”fit order” : integer order for polynomial fits to data
”ham_tmpl” : see :function:`make_idle_tomography_list`
verbosity (int, optional) – How much detail to send to stdout.
comm (mpi4py.MPI.Comm, optional) – When not None, an MPI communicator for distributing the computation across multiple processors.
 Returns
IdleTomographyResults