コード例 #1
0
    def test_rotations_pulse(self):
        q0 = Transmon("q0", levels=2)
        q1 = Transmon("q1", levels=3, kerr=-200e-3)
        q0.gaussian_pulse.sigma = 40
        q1.gaussian_pulse.sigma = 40
        system = System("system", modes=[q0, q1])
        init_state = system.fock()

        for qubit in [q0, q1]:
            for _ in range(1):
                _ = tune_rabi(system,
                              init_state=init_state,
                              mode_name=qubit.name,
                              verify=False)

        angles = np.linspace(-np.pi, np.pi, 5)
        for angle in angles:
            for qubit in [q0, q1]:
                seq = get_sequence(system)
                qubit.rotate_x(angle)
                unitary = qubit.rotate_x(angle, unitary=True)
                result = seq.run(init_state)
                fidelity = qutip.fidelity(result.states[-1],
                                          unitary * init_state)**2
                self.assertGreater(fidelity, 1 - 1e-2)

                seq = get_sequence(system)
                qubit.rotate_y(angle)
                unitary = qubit.rotate_y(angle, unitary=True)
                result = seq.run(init_state)
                fidelity = qutip.fidelity(result.states[-1],
                                          unitary * init_state)**2
                self.assertGreater(fidelity, 1 - 1e-2)
コード例 #2
0
    def setUpClass(cls):
        qubit = Transmon("qubit", levels=2)
        cavity = Cavity("cavity", levels=6)
        system = System("system", modes=[qubit, cavity])
        system.set_cross_kerr(qubit, cavity, -2e-3)
        with system.use_modes([qubit]):
            _ = tune_rabi(system, init_state=qubit.fock(0), verify=False)

        cls.system = system
コード例 #3
0
ファイル: test_qasm.py プロジェクト: ypeels/sequencing
    def setUpClass(cls):
        q0 = Transmon("q0", levels=2)
        q1 = Transmon("q1", levels=2)
        system = System("system", modes=[q0, q1])

        for qubit in [q0, q1]:
            init_state = system.fock()
            for _ in range(1):
                _ = tune_rabi(
                    system, init_state=init_state, mode_name=qubit.name, verify=False
                )

        cls.system = system
コード例 #4
0
ファイル: test_calibration.py プロジェクト: ypeels/sequencing
    def test_rabi_two_levels(self):
        qubit = Transmon("qubit", levels=2)
        system = System("system", modes=[qubit])
        for _ in range(2):
            _, old_amp, new_amp = tune_rabi(system, qubit.fock(0))
        self.assertLess(abs(old_amp - new_amp), 1e-7)

        init = qubit.fock(0)
        seq = get_sequence(system)
        qubit.rotate_x(np.pi)
        result = seq.run(init)

        target = qubit.Rx(np.pi) * init
        fidelity = qutip.fidelity(result.states[-1], target)**2
        self.assertLess(abs(1 - fidelity), 1e-10)
コード例 #5
0
ファイル: test_qasm.py プロジェクト: ypeels/sequencing
    def setUpClass(cls):
        n = 5
        qubits = [
            Transmon(
                f"q{i}",
                # levels=2,
                # # comment out the above line and uncomment the
                # # below line to use 3-level transmons with
                # # various anharmonicities
                levels=3,
                kerr=-100e-3 * (i + 1),
            )
            for i in reversed(range(n))
        ]
        qreg = System("qreg", modes=qubits)

        # Tune pi pulses for all qubits
        for i, qubit in enumerate(qubits):
            # Use different sigmas so that pulses can be visually distinguished
            qubit.gaussian_pulse.set(sigma=(10 + 2 * i), chop=4)
            with qreg.use_modes([qubit]):
                init_state = qubit.fock(0)
                e_ops = [qubit.fock_dm(1)]
                _ = tune_rabi(
                    qreg,
                    init_state,
                    e_ops=e_ops,
                    mode_name=qubit.name,
                    plot=False,
                    verify=False,
                )
                # # Below line is unnecessary if the qubits
                # # only have two levels
                _ = tune_drag(
                    qreg, init_state, e_ops=e_ops, mode_name=qubit.name, plot=False
                )

        def bell_state(qreg):
            zeros = [0] * len(qreg.active_modes)
            ones = [1] * len(qreg.active_modes)
            return (qreg.logical_basis(*zeros) + qreg.logical_basis(*ones)).unit()

        cls.ideal_state = bell_state(qreg)
        cls.qreg = qreg
コード例 #6
0
ファイル: test_calibration.py プロジェクト: ypeels/sequencing
    def test_drag(self):
        qubit = Transmon("qubit", levels=3, kerr=-200e-3)
        qubit.gaussian_pulse.sigma = 10
        system = System("system", modes=[qubit])
        for _ in range(3):
            _, old_amp, new_amp = tune_rabi(system,
                                            qubit.fock(0),
                                            plot=False,
                                            verify=False)
        self.assertLess(abs(old_amp - new_amp), 1e-7)

        _, old_drag, new_drag = tune_drag(system, qubit.fock(0), update=True)
        self.assertNotAlmostEqual(new_drag, 0)

        init = qubit.fock(0)
        seq = get_sequence(system)
        qubit.rotate_x(np.pi)
        result = seq.run(init)

        target = qubit.Rx(np.pi) * init
        fidelity = qutip.fidelity(result.states[-1], target)**2
        self.assertLess(abs(1 - fidelity), 1e-5)