Noise Models¶

Functions¶

 append_kraus_to_gate(kraus_ops, gate_matrix) Follow a gate gate_matrix by a Kraus map described by kraus_ops. pauli_kraus_map(probabilities) Generate the Kraus operators corresponding to a pauli channel. Generate the Kraus operators corresponding to an amplitude damping noise channel. Generate the Kraus operators corresponding to a dephasing channel. tensor_kraus_maps(k1, k2) Generate the Kraus map corresponding to the composition of two maps on different qubits. combine_kraus_maps(k1, k2) Generate the Kraus map corresponding to the composition of two maps on the same qubits with k1 being applied to the state after k2. damping_after_dephasing(T1, T2, gate_time) Generate the Kraus map corresponding to the composition of a dephasing channel followed by an amplitude damping channel. get_noisy_gate(gate_name, params) Look up the numerical gate representation and a proposed ‘noisy’ name. _decoherence_noise_model(gates[, T1, T2, …]) The default noise parameters Similar to _decoherence_noise_model(), but with asymmetric readout. estimate_bitstring_probs(results) Given an array of single shot results estimate the probability distribution over all bitstrings. Given a 2d array of true bitstring probabilities (outer axis iterates over shots, inner axis over bits) and a list of assignment probability matrices (one for each bit in the readout, ordered like the inner axis of results) compute the corrupted probabilities. Convert between bitstring probabilities and joint Z moment expectations.

Classes¶

class pyquil.noise.NoiseModel(gates, assignment_probs)[source]

Encapsulate the QPU noise model containing information about the noisy gates.

Variables
• gates (Sequence[KrausModel]) – The tomographic estimates of all gates.

• assignment_probs (Dict[int,np.array]) – The single qubit readout assignment probability matrices keyed by qubit id.

Create new instance of _NoiseModel(gates, assignment_probs)

Methods

 gates_by_name(name) Return all defined noisy gates of a particular gate name. Create a JSON serializable representation of the noise model. Re-create the noise model from a dictionary representation.
class pyquil.noise.KrausModel(gate, params, targets, kraus_ops, fidelity)[source]

Encapsulate a single gate’s noise model.

Variables
• gate (str) – The name of the gate.

• params (Sequence[float]) – Optional parameters for the gate.

• targets (Sequence[int]) – The target qubit ids.

• kraus_ops (Sequence[np.array]) – The Kraus operators (must be square complex numpy arrays).

• fidelity (float) – The average gate fidelity associated with the Kraus map relative to the ideal operation.

Create new instance of _KrausModel(gate, params, targets, kraus_ops, fidelity)

Methods

 Helper to optionally unpack a JSON compatible representation of a complex Kraus matrix. Helper to optionally unpack a JSON compatible representation of a complex Kraus matrix. Create a dictionary representation of a KrausModel. Recreate a KrausModel from the dictionary representation.