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 Pauli-basis fiducial pairs for idle tomography. |
|
Infers what the preferred basis signs are based on the length of gate-name |
|
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 maximum-length 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 N-qubit Pauli operator whose sign is the product of the signs of the NQPauliState’s per-qubit 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 non-trivial 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 non-trivial 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 Pauli-basis 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 Affine-type errors.
- ham_tmpltuple, optional
A tuple of length-maxweight 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 3-tuple 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) 2-tuples 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 gate-name 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 state-space designations), e.g. (“Gx”,”Gx”).
Returns
- tuple
A 3-tuple 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 2-tuples 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 2-tuples 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 Pauli-product basis.
Returns
- pauli_basis_dicts or None
If successful, a (prepDict,measureDict) 2-tuple 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 germ-power 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_stringCircuit-like, 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 Affine-type errors.
- ham_tmpltuple, optional
A tuple of length-maxweight 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 3-tuple 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 maximum-length 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 germ-power 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_stringCircuit-like, 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 Affine-type errors.
- ham_tmpltuple, optional
A tuple of length-maxweight 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 3-tuple 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 max-L 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) 2-tuple 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 germ-power 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) 2-tuple 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 germ-power 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 germ-power 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_stringCircuit-like, 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 Affine-type intrinsic errors. If “auto” is specified, then the corresponding error-type 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” : 3-tuple of “+”/”-” or default=”auto”
“preferred_meas_basis_signs” : 3-tuple 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