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
 prepNQPauliState
The state that is prepared.
 errorNQPauliOp
The type (as a pauli operator) of Hamiltonian error.
 observableNQPauliOp
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
 prepNQPauliState
The state that is prepared.
 errorNQPauliOp
The type (as a pauli operator) of Stochastic error.
 measNQPauliState
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
 prepNQPauliState
The state that is prepared.
 errorNQPauliOp
The type (as a pauli operator) of Stochastic error.
 measNQPauliState
The basis that is measured (essentially the POVM).
 outcomeNQOutcome
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
 prepNQPauliState
The state that is prepared.
 errorNQPauliOp
The type (as a pauli operator) of Affine error.
 measNQPauliState
The basis that is measured (essentially the POVM).
 outcomeNQOutcome
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
 prepNQPauliState
The state that is prepared.
 errorNQPauliOp
The type (as a pauli operator) of Affine error.
 observableNQPauliOp
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
 nqubitsint
The number of qubits.
 maxweightint, optional
The maximum weight of errors to consider.
 include_hamiltonian, include_stochastic, include_affinebool, optional
Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
 ham_tmpltuple, 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, 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_dictdict
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
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_listlist
A list whose elements are 2tuples of
Circuit
objects. pauli_basis_dictstuple
A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See
preferred_signs_from_paulidict()
for details on each dictionary’s format. nqubitsint
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
 modelModel
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_lengths, 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
 nqubitsint
The number of qubits.
 max_lengthslist
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_dictstuple
A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See
preferred_signs_from_paulidict()
for details on each dictionary’s format. maxweightint, optional
The maximum weight of errors to consider.
 idle_stringCircuitlike, optional
A Circuit or tuple of operation labels that represents the idle gate being characterized by idle tomography.
 include_hamiltonian, include_stochastic, include_affinebool, optional
Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
 ham_tmpltuple, 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, 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
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_lengths, 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
 nqubitsint
The number of qubits.
 max_lengthslist
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_dictstuple
A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See
preferred_signs_from_paulidict()
for details on each dictionary’s format. maxweightint, optional
The maximum weight of errors to consider.
 idle_stringCircuitlike, optional
A Circuit or tuple of operation labels that represents the idle gate being characterized by idle tomography.
 include_hamiltonian, include_stochastic, include_affinebool, optional
Whether to include fiducial pairs for finding Hamiltonian, Stochastic, and Affinetype errors.
 ham_tmpltuple, 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, 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
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_lengths, 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
 datasetDataSet
The set of data counts (observations) to use.
 pauli_fidpairtuple
A (prep,measure) 2tuple of
NQPauliState
objects specifying the prepation state and measurement basis. pauli_basis_dictstuple
A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See
preferred_signs_from_paulidict()
for details on each dictionary’s format. idle_stringCircuit
The Circuit representing the idle operation being characterized.
 outcomeNQOutcome
The outcome being tracked.
 max_lengthslist
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_lengths.
 fit_orderint, 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_lengths, 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
 datasetDataSet
The set of data counts (observations) to use.
 pauli_fidpairtuple
A (prep,measure) 2tuple of
NQPauliState
objects specifying the prepation state and measurement basis. pauli_basis_dictstuple
A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See
preferred_signs_from_paulidict()
for details on each dictionary’s format. idle_stringCircuit
The Circuit representing the idle operation being characterized.
 observableNQPauliOp
The observable whose expectation value is being tracked.
 max_lengthslist
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_lengths.
 fit_orderint, 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_lengths, 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
 nqubitsint
The number of qubits.
 datasetDataSet
The set of data counts (observations) to use.
 max_lengthslist
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_dictstuple
A (prepPauliBasisDict,measPauliBasisDict) tuple of dictionaries specifying the way to prepare and measure in Pauli bases. See
preferred_signs_from_paulidict()
for details on each dictionary’s format. maxweightint, optional
The maximum weight of errors to consider.
 idle_stringCircuitlike, optional
A Circuit or tuple of operation labels that represents the idle gate being characterized by idle tomography.
 include_hamiltonian, include_stochastic, 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_optionsdict, 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
make_idle_tomography_list()
 verbosityint, optional
How much detail to send to stdout.
 commmpi4py.MPI.Comm, optional
When not None, an MPI communicator for distributing the computation across multiple processors.
Returns
IdleTomographyResults