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)
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")
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")