Esempio n. 1
0
 def noisy_moment(self, moment: 'cirq.Moment',
                  system_qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
     if self.is_virtual_moment(moment):
         return moment
     moments = []
     if _homogeneous_moment_is_measurements(moment):
         if self.decay_probs:
             moments.append(
                 ops.Moment(
                     ops.AmplitudeDampingChannel(self.decay_probs[q])(q)
                     for q in system_qubits))
         if self.bitflip_probs:
             moments.append(
                 ops.Moment(
                     ops.BitFlipChannel(self.bitflip_probs[q])(q)
                     for q in system_qubits))
         moments.append(moment)
         return moments
     else:
         moments.append(moment)
         if self.depol_probs:
             gated_qubits = [
                 q for q in system_qubits
                 if moment.operates_on_single_qubit(q)
             ]
             if gated_qubits:
                 moments.append(
                     ops.Moment(
                         ops.DepolarizingChannel(self.depol_probs[q])(q)
                         for q in gated_qubits))
         return moments
Esempio n. 2
0
    def __init__(self, bitflip_prob: float):
        """A noise model with readout error.

        Args:
            bitflip_prob: Probability of a bit-flip during measurement.
        """
        value.validate_probability(bitflip_prob, 'bitflip prob')
        self.readout_noise_gate = ops.BitFlipChannel(bitflip_prob)
Esempio n. 3
0
 def __init__(self, depol_prob: float, bitflip_prob: float):
     """A depolarizing noise model with readout error.
     Args:
         depol_prob: Depolarizing probability.
         bitflip_prob: Probability of a bit-flip during measurement.
     """
     value.validate_probability(depol_prob, 'depol prob')
     value.validate_probability(bitflip_prob, 'bitflip prob')
     self.qubit_noise_gate = ops.DepolarizingChannel(depol_prob)
     self.readout_noise_gate = ops.BitFlipChannel(bitflip_prob)
Esempio n. 4
0
    def __init__(self, bitflip_prob: float, prepend: bool = True):
        """A noise model with readout error.

        Args:
            bitflip_prob: Probability of a bit-flip during measurement.
            prepend: If True, put noise before affected gates. Default: True.
        """
        value.validate_probability(bitflip_prob, 'bitflip prob')
        self.readout_noise_gate = ops.BitFlipChannel(bitflip_prob)
        self._prepend = prepend
Esempio n. 5
0
 def __init__(self, depol_prob: float, bitflip_prob: float,
              decay_prob: float):
     """A depolarizing noise model with damped readout error.
     Args:
         depol_prob: Depolarizing probability.
         bitflip_prob: Probability of a bit-flip during measurement.
         decay_prob: Probability of T1 decay during measurement.
             Bitflip noise is applied first, then amplitude decay.
     """
     value.validate_probability(depol_prob, 'depol prob')
     value.validate_probability(bitflip_prob, 'bitflip prob')
     value.validate_probability(decay_prob, 'decay_prob')
     self.qubit_noise_gate = ops.DepolarizingChannel(depol_prob)
     self.readout_noise_gate = ops.BitFlipChannel(bitflip_prob)
     self.readout_decay_gate = ops.AmplitudeDampingChannel(decay_prob)