Esempio n. 1
0
 def __init__(self):
     super().__init__(
         None,
         name="FakeV2",
         description="A fake BackendV2 example",
         online_date=datetime.datetime.utcnow(),
         backend_version="0.0.1",
     )
     self._target = Target()
     self._theta = Parameter("theta")
     self._phi = Parameter("phi")
     self._lam = Parameter("lambda")
     rx_props = {
         (0, ): InstructionProperties(duration=5.23e-8, error=0.00038115),
         (1, ): InstructionProperties(duration=4.52e-8, error=0.00032115),
     }
     self._target.add_instruction(RXGate(self._theta), rx_props)
     rx_30_props = {
         (0, ): InstructionProperties(duration=1.23e-8, error=0.00018115),
         (1, ): InstructionProperties(duration=1.52e-8, error=0.00012115),
     }
     self._target.add_instruction(RXGate(np.pi / 6),
                                  rx_30_props,
                                  name="rx_30")
     u_props = {
         (0, ): InstructionProperties(duration=5.23e-8, error=0.00038115),
         (1, ): InstructionProperties(duration=4.52e-8, error=0.00032115),
     }
     self._target.add_instruction(UGate(self._theta, self._phi, self._lam),
                                  u_props)
     cx_props = {
         (0, 1): InstructionProperties(duration=5.23e-7, error=0.00098115),
     }
     self._target.add_instruction(CXGate(), cx_props)
     measure_props = {
         (0, ): InstructionProperties(duration=6e-6, error=5e-6),
         (1, ): InstructionProperties(duration=1e-6, error=9e-6),
     }
     self._target.add_instruction(Measure(), measure_props)
     ecr_props = {
         (1, 0): InstructionProperties(duration=4.52e-9,
                                       error=0.0000132115),
     }
     self._target.add_instruction(ECRGate(), ecr_props)
     self.options.set_validator("shots", (1, 4096))
     self._qubit_properties = {
         0:
         QubitProperties(t1=63.48783e-6,
                         t2=112.23246e-6,
                         frequency=5.17538e9),
         1:
         QubitProperties(t1=73.09352e-6,
                         t2=126.83382e-6,
                         frequency=5.26722e9),
     }
Esempio n. 2
0
 def test_update_instruction_properties(self):
     self.aqt_target.update_instruction_properties(
         "rxx",
         (0, 1),
         InstructionProperties(duration=1e-6, error=1e-5),
     )
     self.assertEqual(self.aqt_target["rxx"][(0, 1)].duration, 1e-6)
     self.assertEqual(self.aqt_target["rxx"][(0, 1)].error, 1e-5)
Esempio n. 3
0
 def setUp(self):
     super().setUp()
     self.pulse_target = Target(
         dt=3e-7, granularity=2, min_length=4, pulse_alignment=8, aquire_alignment=8
     )
     with pulse.build(name="sx_q0") as self.custom_sx_q0:
         pulse.play(pulse.Constant(100, 0.1), pulse.DriveChannel(0))
     with pulse.build(name="sx_q1") as self.custom_sx_q1:
         pulse.play(pulse.Constant(100, 0.2), pulse.DriveChannel(1))
     sx_props = {
         (0,): InstructionProperties(
             duration=35.5e-9, error=0.000413, calibration=self.custom_sx_q0
         ),
         (1,): InstructionProperties(
             duration=35.5e-9, error=0.000502, calibration=self.custom_sx_q1
         ),
     }
     self.pulse_target.add_instruction(SXGate(), sx_props)
Esempio n. 4
0
 def setUp(self):
     super().setUp()
     self.cmap20 = FakeTokyo().configuration().coupling_map
     self.target_19 = Target()
     rng = np.random.default_rng(12345)
     instruction_props = {
         edge: InstructionProperties(duration=rng.uniform(1e-7, 1e-6),
                                     error=rng.uniform(1e-4, 1e-3))
         for edge in CouplingMap.from_heavy_hex(3).get_edges()
     }
     self.target_19.add_instruction(CXGate(), instruction_props)
 def test_reverse_direction(self, opt_level):
     target = Target(2)
     target.add_instruction(CXGate(), {(0, 1): InstructionProperties(error=1.2e-6)})
     target.add_instruction(ECRGate(), {(0, 1): InstructionProperties(error=1.2e-7)})
     target.add_instruction(
         UGate(Parameter("theta"), Parameter("phi"), Parameter("lam")), {(0,): None, (1,): None}
     )
     qr = QuantumRegister(2)
     circ = QuantumCircuit(qr)
     circ.append(random_unitary(4, seed=1), [1, 0])
     tqc = transpile(
         circ,
         target=target,
         optimization_level=opt_level,
         translation_method="synthesis",
         layout_method="trivial",
     )
     tqc_index = {qubit: index for index, qubit in enumerate(tqc.qubits)}
     self.assertGreaterEqual(len(tqc.get_instructions("ecr")), 1)
     for instr in tqc.get_instructions("ecr"):
         self.assertEqual((0, 1), (tqc_index[instr.qubits[0]], tqc_index[instr.qubits[1]]))
Esempio n. 6
0
 def test_instruction_supported_multiple_parameters(self):
     target = Target(1)
     target.add_instruction(
         UGate(self.theta, self.phi, self.lam),
         {(0, ): InstructionProperties(duration=270.22e-9, error=0.00713)},
     )
     self.assertFalse(
         target.instruction_supported("u", parameters=[math.pi]))
     self.assertTrue(
         target.instruction_supported(
             "u", parameters=[math.pi, math.pi, math.pi]))
     self.assertTrue(
         target.instruction_supported(
             operation_class=UGate, parameters=[math.pi, math.pi, math.pi]))
     self.assertFalse(
         target.instruction_supported(operation_class=UGate,
                                      parameters=[Parameter("x")]))
Esempio n. 7
0
    def setUp(self):
        super().setUp()
        self.fake_backend = FakeBackendV2()
        self.fake_backend_target = self.fake_backend.target
        self.theta = Parameter("theta")
        self.phi = Parameter("phi")
        self.ibm_target = Target()
        i_props = {
            (0, ): InstructionProperties(duration=35.5e-9, error=0.000413),
            (1, ): InstructionProperties(duration=35.5e-9, error=0.000502),
            (2, ): InstructionProperties(duration=35.5e-9, error=0.0004003),
            (3, ): InstructionProperties(duration=35.5e-9, error=0.000614),
            (4, ): InstructionProperties(duration=35.5e-9, error=0.006149),
        }
        self.ibm_target.add_instruction(IGate(), i_props)
        rz_props = {
            (0, ): InstructionProperties(duration=0, error=0),
            (1, ): InstructionProperties(duration=0, error=0),
            (2, ): InstructionProperties(duration=0, error=0),
            (3, ): InstructionProperties(duration=0, error=0),
            (4, ): InstructionProperties(duration=0, error=0),
        }
        self.ibm_target.add_instruction(RZGate(self.theta), rz_props)
        sx_props = {
            (0, ): InstructionProperties(duration=35.5e-9, error=0.000413),
            (1, ): InstructionProperties(duration=35.5e-9, error=0.000502),
            (2, ): InstructionProperties(duration=35.5e-9, error=0.0004003),
            (3, ): InstructionProperties(duration=35.5e-9, error=0.000614),
            (4, ): InstructionProperties(duration=35.5e-9, error=0.006149),
        }
        self.ibm_target.add_instruction(SXGate(), sx_props)
        x_props = {
            (0, ): InstructionProperties(duration=35.5e-9, error=0.000413),
            (1, ): InstructionProperties(duration=35.5e-9, error=0.000502),
            (2, ): InstructionProperties(duration=35.5e-9, error=0.0004003),
            (3, ): InstructionProperties(duration=35.5e-9, error=0.000614),
            (4, ): InstructionProperties(duration=35.5e-9, error=0.006149),
        }
        self.ibm_target.add_instruction(XGate(), x_props)
        cx_props = {
            (3, 4): InstructionProperties(duration=270.22e-9, error=0.00713),
            (4, 3): InstructionProperties(duration=305.77e-9, error=0.00713),
            (3, 1): InstructionProperties(duration=462.22e-9, error=0.00929),
            (1, 3): InstructionProperties(duration=497.77e-9, error=0.00929),
            (1, 2): InstructionProperties(duration=227.55e-9, error=0.00659),
            (2, 1): InstructionProperties(duration=263.11e-9, error=0.00659),
            (0, 1): InstructionProperties(duration=519.11e-9, error=0.01201),
            (1, 0): InstructionProperties(duration=554.66e-9, error=0.01201),
        }
        self.ibm_target.add_instruction(CXGate(), cx_props)
        measure_props = {
            (0, ): InstructionProperties(duration=5.813e-6, error=0.0751),
            (1, ): InstructionProperties(duration=5.813e-6, error=0.0225),
            (2, ): InstructionProperties(duration=5.813e-6, error=0.0146),
            (3, ): InstructionProperties(duration=5.813e-6, error=0.0215),
            (4, ): InstructionProperties(duration=5.813e-6, error=0.0333),
        }
        self.ibm_target.add_instruction(Measure(), measure_props)

        self.aqt_target = Target(description="AQT Target")
        rx_props = {
            (0, ): None,
            (1, ): None,
            (2, ): None,
            (3, ): None,
            (4, ): None,
        }
        self.aqt_target.add_instruction(RXGate(self.theta), rx_props)
        ry_props = {
            (0, ): None,
            (1, ): None,
            (2, ): None,
            (3, ): None,
            (4, ): None,
        }
        self.aqt_target.add_instruction(RYGate(self.theta), ry_props)
        rz_props = {
            (0, ): None,
            (1, ): None,
            (2, ): None,
            (3, ): None,
            (4, ): None,
        }
        self.aqt_target.add_instruction(RZGate(self.theta), rz_props)
        r_props = {
            (0, ): None,
            (1, ): None,
            (2, ): None,
            (3, ): None,
            (4, ): None,
        }
        self.aqt_target.add_instruction(RGate(self.theta, self.phi), r_props)
        rxx_props = {
            (0, 1): None,
            (0, 2): None,
            (0, 3): None,
            (0, 4): None,
            (1, 0): None,
            (2, 0): None,
            (3, 0): None,
            (4, 0): None,
            (1, 2): None,
            (1, 3): None,
            (1, 4): None,
            (2, 1): None,
            (3, 1): None,
            (4, 1): None,
            (2, 3): None,
            (2, 4): None,
            (3, 2): None,
            (4, 2): None,
            (3, 4): None,
            (4, 3): None,
        }
        self.aqt_target.add_instruction(RXXGate(self.theta), rxx_props)
        measure_props = {
            (0, ): None,
            (1, ): None,
            (2, ): None,
            (3, ): None,
            (4, ): None,
        }
        self.aqt_target.add_instruction(Measure(), measure_props)
        self.empty_target = Target()
        self.ideal_sim_target = Target(num_qubits=3,
                                       description="Ideal Simulator")
        self.lam = Parameter("lam")
        for inst in [
                UGate(self.theta, self.phi, self.lam),
                RXGate(self.theta),
                RYGate(self.theta),
                RZGate(self.theta),
                CXGate(),
                ECRGate(),
                CCXGate(),
                Measure(),
        ]:
            self.ideal_sim_target.add_instruction(inst, {None: None})
Esempio n. 8
0
 def test_empty_repr(self):
     properties = InstructionProperties()
     self.assertEqual(
         repr(properties),
         "InstructionProperties(duration=None, error=None, calibration=None)",
     )
Esempio n. 9
0
    def __init__(self):
        super().__init__(
            name="FakeMumbaiV2",
            description="A fake BackendV2 example based on IBM Mumbai",
            online_date=datetime.datetime.utcnow(),
            backend_version="0.0.1",
        )
        dt = 0.2222222222222222e-9
        self._target = Target(dt=dt)
        self._phi = Parameter("phi")
        rz_props = {
            (0, ): InstructionProperties(duration=0.0, error=0),
            (1, ): InstructionProperties(duration=0.0, error=0),
            (2, ): InstructionProperties(duration=0.0, error=0),
            (3, ): InstructionProperties(duration=0.0, error=0),
            (4, ): InstructionProperties(duration=0.0, error=0),
            (5, ): InstructionProperties(duration=0.0, error=0),
            (6, ): InstructionProperties(duration=0.0, error=0),
            (7, ): InstructionProperties(duration=0.0, error=0),
            (8, ): InstructionProperties(duration=0.0, error=0),
            (9, ): InstructionProperties(duration=0.0, error=0),
            (10, ): InstructionProperties(duration=0.0, error=0),
            (11, ): InstructionProperties(duration=0.0, error=0),
            (12, ): InstructionProperties(duration=0.0, error=0),
            (13, ): InstructionProperties(duration=0.0, error=0),
            (14, ): InstructionProperties(duration=0.0, error=0),
            (15, ): InstructionProperties(duration=0.0, error=0),
            (16, ): InstructionProperties(duration=0.0, error=0),
            (17, ): InstructionProperties(duration=0.0, error=0),
            (18, ): InstructionProperties(duration=0.0, error=0),
            (19, ): InstructionProperties(duration=0.0, error=0),
            (20, ): InstructionProperties(duration=0.0, error=0),
            (21, ): InstructionProperties(duration=0.0, error=0),
            (22, ): InstructionProperties(duration=0.0, error=0),
            (23, ): InstructionProperties(duration=0.0, error=0),
            (24, ): InstructionProperties(duration=0.0, error=0),
            (25, ): InstructionProperties(duration=0.0, error=0),
            (26, ): InstructionProperties(duration=0.0, error=0),
        }
        self._target.add_instruction(RZGate(self._phi), rz_props)
        x_props = {
            (0, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00020056469709026198),
            (1, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0004387432040599484),
            (2, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002196765027963209),
            (3, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0003065541555566093),
            (4, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002402026686478811),
            (5, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002162777062721698),
            (6, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00021981280474256117),
            (7, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00018585647396926756),
            (8, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00027053333211825124),
            (9, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002603116226593832),
            (10, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00023827406030798066),
            (11, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00024856063217108685),
            (12, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002065075637361354),
            (13, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00024898181450337464),
            (14, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00017758796319636606),
            (15, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00016530893922883836),
            (16, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0003213658218204255),
            (17, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00024068450432012685),
            (18, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00026676441863976344),
            (19, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00017090891698571018),
            (20, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00021057196071004095),
            (21, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00030445404779882887),
            (22, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00019322295843406375),
            (23, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00030966037392287727),
            (24, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00023570754161126),
            (25, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00018367783963229033),
            (26, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00019630609928571516),
        }
        self._target.add_instruction(XGate(), x_props)
        sx_props = {
            (0, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00020056469709026198),
            (1, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0004387432040599484),
            (2, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002196765027963209),
            (3, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0003065541555566093),
            (4, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002402026686478811),
            (5, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002162777062721698),
            (6, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00021981280474256117),
            (7, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00018585647396926756),
            (8, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00027053333211825124),
            (9, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002603116226593832),
            (10, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00023827406030798066),
            (11, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00024856063217108685),
            (12, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0002065075637361354),
            (13, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00024898181450337464),
            (14, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00017758796319636606),
            (15, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00016530893922883836),
            (16, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.0003213658218204255),
            (17, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00024068450432012685),
            (18, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00026676441863976344),
            (19, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00017090891698571018),
            (20, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00021057196071004095),
            (21, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00030445404779882887),
            (22, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00019322295843406375),
            (23, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00030966037392287727),
            (24, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00023570754161126),
            (25, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00018367783963229033),
            (26, ):
            InstructionProperties(duration=3.5555555555555554e-08,
                                  error=0.00019630609928571516),
        }
        self._target.add_instruction(SXGate(), sx_props)
        chunk_size = 16
        cx_props = {
            (0, 1):
            InstructionProperties(duration=101 * chunk_size * dt,
                                  error=0.030671121181161276),
            (4, 1):
            InstructionProperties(duration=70 * chunk_size * dt,
                                  error=0.014041986073052737),
            (4, 7):
            InstructionProperties(duration=74 * chunk_size * dt,
                                  error=0.0052040275323747),
            (10, 7):
            InstructionProperties(duration=92 * chunk_size * dt,
                                  error=0.005625282141655502),
            (10, 12):
            InstructionProperties(duration=84 * chunk_size * dt,
                                  error=0.005771827440726435),
            (15, 12):
            InstructionProperties(duration=84 * chunk_size * dt,
                                  error=0.0050335609425562755),
            (15, 18):
            InstructionProperties(duration=64 * chunk_size * dt,
                                  error=0.0051374141171115495),
            (12, 13):
            InstructionProperties(duration=70 * chunk_size * dt,
                                  error=0.011361175954064051),
            (13, 14):
            InstructionProperties(duration=101 * chunk_size * dt,
                                  error=0.005231334872256355),
            # From FakeMumbai:
            (1, 0):
            InstructionProperties(duration=4.551111111111111e-07,
                                  error=0.030671121181161276),
            (1, 2):
            InstructionProperties(duration=7.395555555555556e-07,
                                  error=0.03420291964205785),
            (1, 4):
            InstructionProperties(duration=3.6266666666666663e-07,
                                  error=0.014041986073052737),
            (2, 1):
            InstructionProperties(duration=7.04e-07,
                                  error=0.03420291964205785),
            (2, 3):
            InstructionProperties(duration=4.266666666666666e-07,
                                  error=0.005618162036535312),
            (3, 2):
            InstructionProperties(duration=3.911111111111111e-07,
                                  error=0.005618162036535312),
            (3, 5):
            InstructionProperties(duration=3.5555555555555553e-07,
                                  error=0.006954580732294352),
            (5, 3):
            InstructionProperties(duration=3.911111111111111e-07,
                                  error=0.006954580732294352),
            (5, 8):
            InstructionProperties(duration=1.3155555555555553e-06,
                                  error=0.021905829471073668),
            (6, 7):
            InstructionProperties(duration=2.4177777777777775e-07,
                                  error=0.011018069718028878),
            (7, 4):
            InstructionProperties(duration=3.7688888888888884e-07,
                                  error=0.0052040275323747),
            (7, 6):
            InstructionProperties(duration=2.7733333333333333e-07,
                                  error=0.011018069718028878),
            (7, 10):
            InstructionProperties(duration=4.337777777777778e-07,
                                  error=0.005625282141655502),
            (8, 5):
            InstructionProperties(duration=1.351111111111111e-06,
                                  error=0.021905829471073668),
            (8, 9):
            InstructionProperties(duration=6.897777777777777e-07,
                                  error=0.011889378687341773),
            (8, 11):
            InstructionProperties(duration=5.902222222222222e-07,
                                  error=0.009523844852027258),
            (9, 8):
            InstructionProperties(duration=6.542222222222222e-07,
                                  error=0.011889378687341773),
            (11, 8):
            InstructionProperties(duration=6.257777777777777e-07,
                                  error=0.009523844852027258),
            (11, 14):
            InstructionProperties(duration=4.053333333333333e-07,
                                  error=0.004685421425282804),
            (12, 10):
            InstructionProperties(duration=3.9822222222222215e-07,
                                  error=0.005771827440726435),
            (12, 15):
            InstructionProperties(duration=4.053333333333333e-07,
                                  error=0.0050335609425562755),
            (13, 12):
            InstructionProperties(duration=5.831111111111111e-07,
                                  error=0.011361175954064051),
            (14, 11):
            InstructionProperties(duration=3.697777777777778e-07,
                                  error=0.004685421425282804),
            (14, 13):
            InstructionProperties(duration=3.5555555555555553e-07,
                                  error=0.005231334872256355),
            (14, 16):
            InstructionProperties(duration=3.484444444444444e-07,
                                  error=0.0051117141032224755),
            (16, 14):
            InstructionProperties(duration=3.1288888888888885e-07,
                                  error=0.0051117141032224755),
            (16, 19):
            InstructionProperties(duration=7.537777777777777e-07,
                                  error=0.013736796355458464),
            (17, 18):
            InstructionProperties(duration=2.488888888888889e-07,
                                  error=0.007267536233537236),
            (18, 15):
            InstructionProperties(duration=3.413333333333333e-07,
                                  error=0.0051374141171115495),
            (18, 17):
            InstructionProperties(duration=2.8444444444444443e-07,
                                  error=0.007267536233537236),
            (18, 21):
            InstructionProperties(duration=4.977777777777778e-07,
                                  error=0.007718304749257138),
            (19, 16):
            InstructionProperties(duration=7.182222222222222e-07,
                                  error=0.013736796355458464),
            (19, 20):
            InstructionProperties(duration=4.266666666666666e-07,
                                  error=0.005757038521092134),
            (19, 22):
            InstructionProperties(duration=3.6266666666666663e-07,
                                  error=0.004661878013991871),
            (20, 19):
            InstructionProperties(duration=3.911111111111111e-07,
                                  error=0.005757038521092134),
            (21, 18):
            InstructionProperties(duration=5.333333333333332e-07,
                                  error=0.007718304749257138),
            (21, 23):
            InstructionProperties(duration=3.911111111111111e-07,
                                  error=0.007542515578725928),
            (22, 19):
            InstructionProperties(duration=3.271111111111111e-07,
                                  error=0.004661878013991871),
            (22, 25):
            InstructionProperties(duration=4.835555555555555e-07,
                                  error=0.005536735115231589),
            (23, 21):
            InstructionProperties(duration=4.266666666666666e-07,
                                  error=0.007542515578725928),
            (23, 24):
            InstructionProperties(duration=6.613333333333332e-07,
                                  error=0.010797784688907186),
            (24, 23):
            InstructionProperties(duration=6.257777777777777e-07,
                                  error=0.010797784688907186),
            (24, 25):
            InstructionProperties(duration=4.337777777777778e-07,
                                  error=0.006127506135155392),
            (25, 22):
            InstructionProperties(duration=4.48e-07,
                                  error=0.005536735115231589),
            (25, 24):
            InstructionProperties(duration=4.693333333333333e-07,
                                  error=0.006127506135155392),
            (25, 26):
            InstructionProperties(duration=3.484444444444444e-07,
                                  error=0.0048451525929122385),
            (26, 25):
            InstructionProperties(duration=3.1288888888888885e-07,
                                  error=0.0048451525929122385),
        }
        self.target.add_instruction(CXGate(), cx_props)
        # Error and duration the same as CX
        rzx_90_props = {
            (0, 1):
            InstructionProperties(duration=101 * chunk_size * dt,
                                  error=0.030671121181161276),
            (4, 1):
            InstructionProperties(duration=70 * chunk_size * dt,
                                  error=0.014041986073052737),
            (4, 7):
            InstructionProperties(duration=74 * chunk_size * dt,
                                  error=0.0052040275323747),
            (10, 7):
            InstructionProperties(duration=92 * chunk_size * dt,
                                  error=0.005625282141655502),
            (10, 12):
            InstructionProperties(duration=84 * chunk_size * dt,
                                  error=0.005771827440726435),
            (15, 12):
            InstructionProperties(duration=84 * chunk_size * dt,
                                  error=0.0050335609425562755),
            (15, 18):
            InstructionProperties(duration=64 * chunk_size * dt,
                                  error=0.0051374141171115495),
            (12, 13):
            InstructionProperties(duration=70 * chunk_size * dt,
                                  error=0.011361175954064051),
            (13, 14):
            InstructionProperties(duration=101 * chunk_size * dt,
                                  error=0.005231334872256355),
        }
        self.target.add_instruction(RZXGate(np.pi / 2),
                                    rzx_90_props,
                                    name="rzx_90")
        rzx_45_props = {
            (0, 1):
            InstructionProperties(duration=52 * chunk_size * dt,
                                  error=0.030671121181161276 / 2),
            (4, 1):
            InstructionProperties(duration=37 * chunk_size * dt,
                                  error=0.014041986073052737 / 2),
            (4, 7):
            InstructionProperties(duration=40 * chunk_size * dt,
                                  error=0.0052040275323747 / 2),
            (10, 7):
            InstructionProperties(duration=46 * chunk_size * dt,
                                  error=0.005625282141655502 / 2),
            (10, 12):
            InstructionProperties(duration=45 * chunk_size * dt,
                                  error=0.005771827440726435 / 2),
            (15, 12):
            InstructionProperties(duration=42 * chunk_size * dt,
                                  error=0.0050335609425562755 / 2),
            (15, 18):
            InstructionProperties(duration=34 * chunk_size * dt,
                                  error=0.0051374141171115495 / 2),
            (12, 13):
            InstructionProperties(duration=37 * chunk_size * dt,
                                  error=0.011361175954064051 / 2),
            (13, 14):
            InstructionProperties(duration=52 * chunk_size * dt,
                                  error=0.005231334872256355 / 2),
        }
        self.target.add_instruction(RZXGate(np.pi / 4),
                                    rzx_45_props,
                                    name="rzx_45")
        rzx_30_props = {
            (0, 1):
            InstructionProperties(duration=37 * chunk_size * dt,
                                  error=0.030671121181161276 / 3),
            (4, 1):
            InstructionProperties(duration=24 * chunk_size * dt,
                                  error=0.014041986073052737 / 3),
            (4, 7):
            InstructionProperties(duration=29 * chunk_size * dt,
                                  error=0.0052040275323747 / 3),
            (10, 7):
            InstructionProperties(duration=32 * chunk_size * dt,
                                  error=0.005625282141655502 / 3),
            (10, 12):
            InstructionProperties(duration=32 * chunk_size * dt,
                                  error=0.005771827440726435 / 3),
            (15, 12):
            InstructionProperties(duration=29 * chunk_size * dt,
                                  error=0.0050335609425562755 / 3),
            (15, 18):
            InstructionProperties(duration=26 * chunk_size * dt,
                                  error=0.0051374141171115495 / 3),
            (12, 13):
            InstructionProperties(duration=24 * chunk_size * dt,
                                  error=0.011361175954064051 / 3),
            (13, 14):
            InstructionProperties(duration=377 * chunk_size * dt,
                                  error=0.005231334872256355 / 3),
        }
        self.target.add_instruction(RZXGate(np.pi / 6),
                                    rzx_30_props,
                                    name="rzx_30")
        reset_props = {(i, ):
                       InstructionProperties(duration=3676.4444444444443)
                       for i in range(27)}
        self._target.add_instruction(Reset(), reset_props)

        meas_props = {
            (0, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.02089999999999992),
            (1, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.020199999999999996),
            (2, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.014100000000000001),
            (3, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.03710000000000002),
            (4, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.015100000000000002),
            (5, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.01869999999999994),
            (6, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.013000000000000012),
            (7, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.02059999999999995),
            (8, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.06099999999999994),
            (9, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.02950000000000008),
            (10, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.040000000000000036),
            (11, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.017299999999999982),
            (12, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.04410000000000003),
            (13, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.017199999999999993),
            (14, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.10119999999999996),
            (15, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.07840000000000003),
            (16, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.014499999999999957),
            (17, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.021299999999999986),
            (18, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.022399999999999975),
            (19, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.01859999999999995),
            (20, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.02859999999999996),
            (21, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.021600000000000064),
            (22, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.030200000000000005),
            (23, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.01970000000000005),
            (24, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.03079999999999994),
            (25, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.04400000000000004),
            (26, ):
            InstructionProperties(duration=3.552e-06,
                                  error=0.026800000000000046),
        }
        self.target.add_instruction(Measure(), meas_props)
        self._qubit_properties = {
            0:
            QubitProperties(t1=0.00015987993124584417,
                            t2=0.00016123516590787283,
                            frequency=5073462814.921423),
            1:
            QubitProperties(t1=0.00017271188343294773,
                            t2=3.653713654834547e-05,
                            frequency=4943844681.620448),
            2:
            QubitProperties(t1=7.179635917914033e-05,
                            t2=0.00012399765778639733,
                            frequency=4668157502.363186),
            3:
            QubitProperties(t1=0.0001124203171256432,
                            t2=0.0001879954854434302,
                            frequency=4887315883.214115),
            4:
            QubitProperties(t1=9.568769051084652e-05,
                            t2=6.9955557231525e-05,
                            frequency=5016355075.77537),
            5:
            QubitProperties(t1=9.361326963775646e-05,
                            t2=0.00012561361411231962,
                            frequency=4950539585.866738),
            6:
            QubitProperties(t1=9.735672898365994e-05,
                            t2=0.00012522003396944046,
                            frequency=4970622491.726983),
            7:
            QubitProperties(t1=0.00012117839009784141,
                            t2=0.0001492370106539427,
                            frequency=4889863864.167805),
            8:
            QubitProperties(t1=8.394707006435891e-05,
                            t2=5.5194256398727296e-05,
                            frequency=4769852625.405966),
            9:
            QubitProperties(t1=0.00012392229685657686,
                            t2=5.97129502818714e-05,
                            frequency=4948868138.885028),
            10:
            QubitProperties(t1=0.00011193014813922708,
                            t2=0.00014091085124119432,
                            frequency=4966294754.357908),
            11:
            QubitProperties(t1=0.000124426408667364,
                            t2=9.561432905002298e-05,
                            frequency=4664636564.282378),
            12:
            QubitProperties(t1=0.00012469120424014884,
                            t2=7.1792446286313e-05,
                            frequency=4741461907.952719),
            13:
            QubitProperties(t1=0.00010010942474357871,
                            t2=9.260751861141544e-05,
                            frequency=4879064835.799635),
            14:
            QubitProperties(t1=0.00010793367069728063,
                            t2=0.00020462601085738193,
                            frequency=4774809501.962878),
            15:
            QubitProperties(t1=0.00010814279470918582,
                            t2=0.00014052616328020083,
                            frequency=4860834948.367331),
            16:
            QubitProperties(t1=9.889617874757627e-05,
                            t2=0.00012160357011388956,
                            frequency=4978318747.333388),
            17:
            QubitProperties(t1=8.435212562619916e-05,
                            t2=4.43587633824445e-05,
                            frequency=5000300619.491221),
            18:
            QubitProperties(t1=0.00011719166507869474,
                            t2=5.461866556148401e-05,
                            frequency=4772460318.985625),
            19:
            QubitProperties(t1=0.00013321880066203932,
                            t2=0.0001704632622810825,
                            frequency=4807707035.998121),
            20:
            QubitProperties(t1=9.14192211953385e-05,
                            t2=0.00014298332288799443,
                            frequency=5045028334.669125),
            21:
            QubitProperties(t1=5.548103716494676e-05,
                            t2=9.328101902519704e-05,
                            frequency=4941029753.792485),
            22:
            QubitProperties(t1=0.00017109481586484562,
                            t2=0.00019209594920551097,
                            frequency=4906801587.246266),
            23:
            QubitProperties(t1=0.00010975552427765991,
                            t2=0.00015616813868639905,
                            frequency=4891601685.652732),
            24:
            QubitProperties(t1=0.0001612962696960434,
                            t2=6.940808472789023e-05,
                            frequency=4664347869.784967),
            25:
            QubitProperties(t1=0.00015414506978323392,
                            t2=8.382170181880107e-05,
                            frequency=4742061753.511209),
            26:
            QubitProperties(t1=0.00011828557676958944,
                            t2=0.00016963640893557827,
                            frequency=4961661099.733828),
        }
Esempio n. 10
0
 def __init__(self, bidirectional=True):
     super().__init__(
         None,
         name="Fake5QV2",
         description="A fake BackendV2 example",
         online_date=datetime.datetime.utcnow(),
         backend_version="0.0.1",
     )
     self._target = Target()
     self._theta = Parameter("theta")
     self._phi = Parameter("phi")
     self._lam = Parameter("lambda")
     u_props = {
         (0, ): InstructionProperties(duration=5.23e-8, error=0.00038115),
         (1, ): InstructionProperties(duration=4.52e-8, error=0.00032115),
         (2, ): InstructionProperties(duration=5.23e-8, error=0.00038115),
         (3, ): InstructionProperties(duration=4.52e-8, error=0.00032115),
         (4, ): InstructionProperties(duration=4.52e-8, error=0.00032115),
     }
     self._target.add_instruction(UGate(self._theta, self._phi, self._lam),
                                  u_props)
     cx_props = {
         (0, 1): InstructionProperties(duration=5.23e-7, error=0.00098115),
         (3, 4): InstructionProperties(duration=5.23e-7, error=0.00098115),
     }
     if bidirectional:
         cx_props[(1, 0)] = InstructionProperties(duration=6.23e-7,
                                                  error=0.00099115)
         cx_props[(4, 3)] = InstructionProperties(duration=7.23e-7,
                                                  error=0.00099115)
     self._target.add_instruction(CXGate(), cx_props)
     measure_props = {
         (0, ): InstructionProperties(duration=6e-6, error=5e-6),
         (1, ): InstructionProperties(duration=1e-6, error=9e-6),
         (2, ): InstructionProperties(duration=6e-6, error=5e-6),
         (3, ): InstructionProperties(duration=1e-6, error=9e-6),
         (4, ): InstructionProperties(duration=1e-6, error=9e-6),
     }
     self._target.add_instruction(Measure(), measure_props)
     ecr_props = {
         (1, 2): InstructionProperties(duration=4.52e-9,
                                       error=0.0000132115),
         (2, 3): InstructionProperties(duration=4.52e-9,
                                       error=0.0000132115),
     }
     if bidirectional:
         ecr_props[(2, 1)] = InstructionProperties(duration=5.52e-9,
                                                   error=0.0000232115)
         ecr_props[(3, 2)] = InstructionProperties(duration=5.52e-9,
                                                   error=0.0000232115)
     self._target.add_instruction(ECRGate(), ecr_props)
     self.options.set_validator("shots", (1, 4096))
     self._qubit_properties = {
         0:
         QubitProperties(t1=63.48783e-6,
                         t2=112.23246e-6,
                         frequency=5.17538e9),
         1:
         QubitProperties(t1=73.09352e-6,
                         t2=126.83382e-6,
                         frequency=5.26722e9),
         2:
         QubitProperties(t1=73.09352e-6,
                         t2=126.83382e-6,
                         frequency=5.26722e9),
         3:
         QubitProperties(t1=73.09352e-6,
                         t2=126.83382e-6,
                         frequency=5.26722e9),
         4:
         QubitProperties(t1=73.09352e-6,
                         t2=126.83382e-6,
                         frequency=5.26722e9),
     }
Esempio n. 11
0
 def test_multiple_gate_error_matrix(self):
     """Test error matrix ona small target with multiple gets on each qubit generates"""
     target = Target(num_qubits=3)
     phi = Parameter("phi")
     lam = Parameter("lam")
     theta = Parameter("theta")
     target.add_instruction(
         RZGate(phi), {(i, ): InstructionProperties(duration=0, error=0)
                       for i in range(3)})
     target.add_instruction(
         UGate(theta, phi, lam),
         {(i, ): InstructionProperties(duration=1e-7, error=1e-2)
          for i in range(3)},
     )
     cx_props = {
         (0, 1): InstructionProperties(error=1e-3),
         (0, 2): InstructionProperties(error=1e-3),
         (1, 0): InstructionProperties(error=1e-3),
         (1, 2): InstructionProperties(error=1e-3),
         (2, 0): InstructionProperties(error=1e-3),
         (2, 1): InstructionProperties(error=1e-3),
     }
     target.add_instruction(CXGate(), cx_props)
     ecr_props = {
         (0, 1): InstructionProperties(error=2e-2),
         (1, 2): InstructionProperties(error=2e-2),
         (2, 0): InstructionProperties(error=2e-2),
     }
     target.add_instruction(ECRGate(), ecr_props)
     expected_error_matrix = np.array([
         [1e-2, 2e-2, 1e-3],
         [1e-3, 1e-2, 2e-2],
         [2e-2, 1e-3, 1e-2],
     ])
     np.testing.assert_array_equal(expected_error_matrix,
                                   DenseLayout(target=target).error_mat)