deltakit.explorer.qpu.NoiseParameters#

class deltakit.explorer.qpu.NoiseParameters(*, gate_noise: list[~collections.abc.Callable[[~deltakit_circuit._noise_factory.NoiseContext], ~deltakit_circuit.noise_channels._pauli_noise.PauliXError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliYError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliZError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.CorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.ElseCorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._leakage_noise.Leakage | ~deltakit_circuit.noise_channels._leakage_noise.Relax | ~collections.abc.Iterable[~deltakit_circuit.noise_channels._pauli_noise.PauliXError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliYError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliZError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.CorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.ElseCorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._leakage_noise.Leakage | ~deltakit_circuit.noise_channels._leakage_noise.Relax]]] = <factory>, idle_noise: ~collections.abc.Callable[[~deltakit_circuit._qubit_identifiers.Qubit, float], ~deltakit_circuit.noise_channels._abstract_noise_channels.NoiseChannel] | None = None, reset_noise: list[~collections.abc.Callable[[~deltakit_circuit._noise_factory.NoiseContext], ~deltakit_circuit.noise_channels._pauli_noise.PauliXError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliYError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliZError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.CorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.ElseCorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._leakage_noise.Leakage | ~deltakit_circuit.noise_channels._leakage_noise.Relax | ~collections.abc.Iterable[~deltakit_circuit.noise_channels._pauli_noise.PauliXError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliYError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliZError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.CorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.ElseCorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._leakage_noise.Leakage | ~deltakit_circuit.noise_channels._leakage_noise.Relax]]] = <factory>, measurement_noise_after: list[~collections.abc.Callable[[~deltakit_circuit._noise_factory.NoiseContext], ~deltakit_circuit.noise_channels._pauli_noise.PauliXError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliYError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliZError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.CorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.ElseCorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._leakage_noise.Leakage | ~deltakit_circuit.noise_channels._leakage_noise.Relax | ~collections.abc.Iterable[~deltakit_circuit.noise_channels._pauli_noise.PauliXError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliYError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliZError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.CorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.ElseCorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._leakage_noise.Leakage | ~deltakit_circuit.noise_channels._leakage_noise.Relax]]] = <factory>, measurement_noise_before: list[~collections.abc.Callable[[~deltakit_circuit._noise_factory.NoiseContext], ~deltakit_circuit.noise_channels._pauli_noise.PauliXError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliYError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliZError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.CorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.ElseCorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._leakage_noise.Leakage | ~deltakit_circuit.noise_channels._leakage_noise.Relax | ~collections.abc.Iterable[~deltakit_circuit.noise_channels._pauli_noise.PauliXError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliYError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliZError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._pauli_noise.PauliChannel2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise1[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._depolarising_noise.Depolarise2[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.CorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._correlated_noise.ElseCorrelatedError[~deltakit_circuit._qubit_identifiers.T] | ~deltakit_circuit.noise_channels._leakage_noise.Leakage | ~deltakit_circuit.noise_channels._leakage_noise.Relax]]] = <factory>, measurement_flip: dict[type[~deltakit_circuit.gates._measurement_gates.MX | ~deltakit_circuit.gates._measurement_gates.MY | ~deltakit_circuit.gates._measurement_gates.MZ | ~deltakit_circuit.gates._measurement_gates.MRX | ~deltakit_circuit.gates._measurement_gates.MRY | ~deltakit_circuit.gates._measurement_gates.MRZ | ~deltakit_circuit.gates._measurement_gates.HERALD_LEAKAGE_EVENT | ~deltakit_circuit.gates._measurement_gates.MPP], ~collections.abc.Callable[[~deltakit_circuit.gates._measurement_gates.MX | ~deltakit_circuit.gates._measurement_gates.MY | ~deltakit_circuit.gates._measurement_gates.MZ | ~deltakit_circuit.gates._measurement_gates.MRX | ~deltakit_circuit.gates._measurement_gates.MRY | ~deltakit_circuit.gates._measurement_gates.MRZ | ~deltakit_circuit.gates._measurement_gates.HERALD_LEAKAGE_EVENT | ~deltakit_circuit.gates._measurement_gates.MPP], ~deltakit_circuit.gates._measurement_gates.MX | ~deltakit_circuit.gates._measurement_gates.MY | ~deltakit_circuit.gates._measurement_gates.MZ | ~deltakit_circuit.gates._measurement_gates.MRX | ~deltakit_circuit.gates._measurement_gates.MRY | ~deltakit_circuit.gates._measurement_gates.MRZ | ~deltakit_circuit.gates._measurement_gates.HERALD_LEAKAGE_EVENT | ~deltakit_circuit.gates._measurement_gates.MPP]] = <factory>)#

Bases: object

Dataclass to capture a noise model for a quantum computer.

Parameters:
  • gate_noise (Dict[Type[Gate], Callable[[Gate], NoiseChannel]]) – Noise to be added after applying a gate. This is specified through a dictionary with gate classes as keys and functions which take a gate and return a noise channel as values. The noise can thus be different for each gate class and can be dependent on the qubit(s) involved in the gate. By default, there is no noise.

  • idle_noise (Optional[Callable[[Qubit, float], NoiseChannel]]) – Noise to be added to an idle qubit. This can be dependent on the qubit and the time for which it is idle. By default, there is no noise.

  • reset_noise (Optional[Callable[[OneQubitResetGate], NoiseChannel]]) – Noise to be added after resetting a qubit. This can be dependent on the reset gate applied and the qubit involved. By default, there is no noise.

  • measurement_noise_after (Optional[Callable[[OneQubitMeasurementGate], NoiseChannel]]) – Noise to be added after measuring a qubit. This can be dependent on the measurement gate applied and the qubit involved. By default, there is no noise.

  • measurement_flip (Optional[Callable[[_MeasurementGate], _MeasurementGate]]) – Mapping from a measurement gate to a noisy measurement gate, capturing adding error associated with obtaining an incorrect measurement result. By default, there is no noise.

  • measurement_noise_before (Optional[Callable[[OneQubitMeasurementGate], NoiseChannel]]) – Noise which will be applied before a measurement gate. By default, there is no noise.

Raises:

ValueError – If any key in gate_noise is not a one-qubit or two-qubit gate.

Methods#

NoiseParameters.as_noise_profile_after_gate

Returns the noise profiles encapsulated by this object as a single generator of noise profiles.