def test_drag_validation(self): """Test drag parameter validation, specifically the beta validation.""" duration = 25 sigma = 4 amp = 0.5j beta = 1 command = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta) samples = command.get_sample_pulse().samples self.assertTrue(max(np.abs(samples)) <= 1) beta = sigma**2 with self.assertRaises(PulseError): command = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta) # If sigma is high enough, side peaks fall out of range and norm restriction is met sigma = 100 command = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta)
def test_drag_samples(self): """Test that the drag samples match the formula.""" duration = 25 sigma = 4 amp = 0.5j beta = 1 # formulaic times = np.array(range(25), dtype=np.complex_) times = times - (25 / 2) + 0.5 gauss = amp * np.exp(-(times / sigma)**2 / 2) gauss_deriv = -(times / sigma**2) * gauss drag = gauss + 1j * beta * gauss_deriv # command command = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta) samples = command.get_sample_pulse().samples np.testing.assert_almost_equal(samples, drag)
def check_drag(duration, sigma, amp, beta): command = Drag(duration=duration, sigma=sigma, amp=amp, beta=beta) samples = command.get_sample_pulse().samples self.assertTrue(max(np.abs(samples)) <= 1)