Пример #1
0
    def testSpline(self):
        """
        Test if the spline kind is correctly transfered into
        the arguments in QobjEvo
        """
        tlist = np.array([1, 2, 3, 4, 5, 6], dtype=float)
        coeff = np.array([1, 1, 1, 1, 1, 1], dtype=float)
        processor = Processor(N=1, spline_kind="step_func")
        processor.add_control(sigmaz(), label="sz")
        processor.set_all_coeffs({"sz": coeff})
        processor.set_tlist(tlist)

        ideal_qobjevo, _ = processor.get_qobjevo(noisy=False)
        assert_(ideal_qobjevo.args["_step_func_coeff"])
        noisy_qobjevo, c_ops = processor.get_qobjevo(noisy=True)
        assert_(noisy_qobjevo.args["_step_func_coeff"])
        processor.add_noise(ControlAmpNoise(coeff=coeff, tlist=tlist))
        noisy_qobjevo, c_ops = processor.get_qobjevo(noisy=True)
        assert_(noisy_qobjevo.args["_step_func_coeff"])

        tlist = np.array([1, 2, 3, 4, 5, 6], dtype=float)
        coeff = np.array([1, 1, 1, 1, 1, 1], dtype=float)
        processor = Processor(N=1, spline_kind="cubic")
        processor.add_control(sigmaz(), label="sz")
        processor.set_all_coeffs({"sz": coeff})
        processor.set_all_tlist(tlist)

        ideal_qobjevo, _ = processor.get_qobjevo(noisy=False)
        assert ("_step_func_coeff" not in ideal_qobjevo.args)
        noisy_qobjevo, c_ops = processor.get_qobjevo(noisy=True)
        assert ("_step_func_coeff" not in noisy_qobjevo.args)
        processor.t1 = 100.
        processor.add_noise(ControlAmpNoise(coeff=coeff, tlist=tlist))
        noisy_qobjevo, c_ops = processor.get_qobjevo(noisy=True)
        assert ("_step_func_coeff" not in noisy_qobjevo.args)
Пример #2
0
    def test_pulse_mode(self):
        processor = Processor(2)
        processor.add_control(sigmax(), targets=0, label="sx")
        processor.set_coeffs({"sx": np.array([1., 2., 3.])})
        processor.set_tlist({"sx": np.array([0., 1., 2., 3.])})

        processor.pulse_mode = "continuous"
        assert (processor.pulse_mode == "continuous")
        assert (processor.pulses[0].spline_kind == "cubic")
        processor.pulse_mode = "discrete"
        assert (processor.pulse_mode == "discrete")
        assert (processor.pulses[0].spline_kind == "step_func")
Пример #3
0
    def test_control_and_coeffs(self):
        processor = Processor(2)
        processor.add_control(sigmax())
        processor.add_control(sigmaz())

        # Set coeffs and tlist without a label
        coeffs = np.array([[1., 2., 3.], [3., 2., 1.]])
        processor.set_coeffs(coeffs)
        assert_allclose(coeffs, processor.coeffs)
        tlist = np.array([0., 1., 2., 3.])
        processor.set_tlist(tlist)
        assert_allclose(tlist, processor.get_full_tlist())
        processor.set_tlist({0: tlist, 1: tlist})
        assert_allclose(tlist, processor.get_full_tlist())

        # Pulses
        assert (len(processor.pulses) == 2)
        assert (processor.find_pulse(0) == processor.pulses[0])
        assert (processor.find_pulse(1) == processor.pulses[1])
        with pytest.raises(KeyError):
            processor.find_pulse("non_exist_pulse")