コード例 #1
0
 def test_raises_duplicate_qubits(self):
     """Test duplicate qubits raises exception"""
     model = NoiseModel()
     with self.assertRaises(NoiseError):
         with self.assertWarns(DeprecationWarning):
             remap_noise_model(model, [[0, 1], [2, 1]], warnings=False)
     model = NoiseModel()
     error = depolarizing_error(0.5, 1)
     model.add_quantum_error(error, ['u3'], [2], False)
     with self.assertRaises(NoiseError):
         with self.assertWarns(DeprecationWarning):
             remap_noise_model(model, [[3, 2]], warnings=False)
コード例 #2
0
    def test_reduce_noise_model(self):
        """Test reduction mapping of noise model."""
        error1 = depolarizing_error(0.5, 1)
        error2 = depolarizing_error(0.5, 2)
        roerror1 = [[0.9, 0.1], [0.5, 0.5]]
        roerror2 = [[0.8, 0.2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0],
                    [0, 0, 0.1, 0.9]]

        model = NoiseModel()
        model.add_all_qubit_quantum_error(error1, ['u3'], False)
        model.add_quantum_error(error1, ['u3'], [1], False)
        with self.assertWarns(DeprecationWarning):
            model.add_nonlocal_quantum_error(error2, ['cx'], [2, 0], [3, 1],
                                             False)
        model.add_all_qubit_readout_error(roerror1, False)
        model.add_readout_error(roerror2, [0, 2], False)

        remapped_model = remap_noise_model(model, [0, 1, 2],
                                           discard_qubits=True,
                                           warnings=False)
        target = NoiseModel()
        target.add_all_qubit_quantum_error(error1, ['u3'], False)
        target.add_quantum_error(error1, ['u3'], [1], False)
        target.add_all_qubit_readout_error(roerror1, False)
        target.add_readout_error(roerror2, [0, 2], False)
        self.assertEqual(remapped_model, target)
コード例 #3
0
    def test_remap_all_qubit_readout_errors(self):
        """Test remapping of all-qubit readout errors."""
        model = NoiseModel()
        error1 = [[0.9, 0.1], [0.5, 0.5]]
        model.add_all_qubit_readout_error(error1, False)

        remapped_model = remap_noise_model(model, [[0, 1], [1, 2], [2, 0]],
                                           warnings=False)
        self.assertEqual(remapped_model, model)
コード例 #4
0
    def test_remap_all_qubit_quantum_errors(self):
        """Test remapper doesn't effect all-qubit quantum errors."""
        model = NoiseModel()
        error1 = depolarizing_error(0.5, 1)
        error2 = depolarizing_error(0.5, 2)
        model.add_all_qubit_quantum_error(error1, ['u3'], False)
        model.add_all_qubit_quantum_error(error2, ['cx'], False)

        remapped_model = remap_noise_model(model, [[0, 1], [1, 0]],
                                           warnings=False)
        self.assertEqual(model, remapped_model)
コード例 #5
0
    def test_remap_quantum_errors(self):
        """Test remapping of quantum errors."""
        model = NoiseModel()
        error1 = depolarizing_error(0.5, 1)
        error2 = depolarizing_error(0.5, 2)
        model.add_quantum_error(error1, ['u3'], [0], False)
        model.add_quantum_error(error2, ['cx'], [1, 2], False)

        remapped_model = remap_noise_model(model, [[0, 1], [1, 2], [2, 0]],
                                           warnings=False)
        target = NoiseModel()
        target.add_quantum_error(error1, ['u3'], [1], False)
        target.add_quantum_error(error2, ['cx'], [2, 0], False)
        self.assertEqual(remapped_model, target)
コード例 #6
0
    def test_remap_readout_errors(self):
        """Test remapping of readout errors."""
        model = NoiseModel()
        error1 = [[0.9, 0.1], [0.5, 0.5]]
        error2 = [[0.8, 0.2, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0],
                  [0, 0, 0.1, 0.9]]
        model.add_readout_error(error1, [1], False)
        model.add_readout_error(error2, [0, 2], False)

        remapped_model = remap_noise_model(model, [[0, 1], [1, 2], [2, 0]],
                                           warnings=False)
        target = NoiseModel()
        target.add_readout_error(error1, [2], False)
        target.add_readout_error(error2, [1, 0], False)
        self.assertEqual(remapped_model, target)
コード例 #7
0
 def test_remap_nonlocal_quantum_errors(self):
     """Test remapping of non-local quantum errors."""
     model = NoiseModel()
     error1 = depolarizing_error(0.5, 1)
     error2 = depolarizing_error(0.5, 2)
     with self.assertWarns(DeprecationWarning):
         model.add_nonlocal_quantum_error(error1, ['u3'], [0], [1], False)
         model.add_nonlocal_quantum_error(error2, ['cx'], [1, 2], [3, 0],
                                          False)
         remapped_model = remap_noise_model(model, [[0, 1], [1, 2], [2, 0]],
                                            warnings=False)
         target = NoiseModel()
         target.add_nonlocal_quantum_error(error1, ['u3'], [1], [2], False)
         target.add_nonlocal_quantum_error(error2, ['cx'], [2, 0], [3, 1],
                                           False)
     self.assertEqual(remapped_model, target)