def test_different_transform_opts(self): """Test equality is False if different transform options.""" context1 = transforms.AlignEquispaced(duration=100) context2 = transforms.AlignEquispaced(duration=500) block1 = pulse.ScheduleBlock(alignment_context=context1) block1 += pulse.Delay(10, self.d0) block2 = pulse.ScheduleBlock(alignment_context=context2) block2 += pulse.Delay(10, self.d0) self.assertNotEqual(block1, block2)
def test_parametrized_context(self): """Test parametrize context parameter.""" duration = circuit.Parameter('dur') param_context = transforms.AlignEquispaced(duration=duration) block = pulse.ScheduleBlock(alignment_context=param_context) block += pulse.Delay(10, self.d0) block += pulse.Delay(10, self.d0) block += pulse.Delay(10, self.d0) block += pulse.Delay(10, self.d0) self.assertTrue(block.is_parameterized()) self.assertFalse(block.is_schedulable()) block.assign_parameters({duration: 100}, inplace=True) self.assertFalse(block.is_parameterized()) self.assertTrue(block.is_schedulable()) ref_sched = pulse.Schedule() ref_sched = ref_sched.insert(0, pulse.Delay(10, self.d0)) ref_sched = ref_sched.insert(10, pulse.Delay(20, self.d0)) ref_sched = ref_sched.insert(30, pulse.Delay(10, self.d0)) ref_sched = ref_sched.insert(40, pulse.Delay(20, self.d0)) ref_sched = ref_sched.insert(60, pulse.Delay(10, self.d0)) ref_sched = ref_sched.insert(70, pulse.Delay(20, self.d0)) ref_sched = ref_sched.insert(90, pulse.Delay(10, self.d0)) self.assertScheduleEqual(block, ref_sched)
def test_equispaced_with_longer_duration(self): """Test equispaced context with duration longer than the schedule duration.""" context = transforms.AlignEquispaced(duration=50) d0 = pulse.DriveChannel(0) schedule = pulse.Schedule() for _ in range(3): schedule.append(Delay(10, d0), inplace=True) schedule = context.align(schedule) reference = pulse.Schedule() reference.insert(0, Delay(10, d0), inplace=True) reference.insert(20, Delay(10, d0), inplace=True) reference.insert(40, Delay(10, d0), inplace=True) self.assertEqual(schedule, reference)
def test_equispaced_with_multiple_channels_longer_duration(self): """Test equispaced context with multiple channels and duration longer than the total duration.""" context = transforms.AlignEquispaced(duration=30) d0 = pulse.DriveChannel(0) d1 = pulse.DriveChannel(1) schedule = pulse.Schedule() schedule.append(Delay(10, d0), inplace=True) schedule.append(Delay(20, d1), inplace=True) schedule = context.align(schedule) reference = pulse.Schedule() reference.insert(0, Delay(10, d0), inplace=True) reference.insert(10, Delay(20, d1), inplace=True) self.assertEqual(schedule, reference)
def setUp(self): super().setUp() self.backend = FakeOpenPulse2Q() self.test_waveform0 = pulse.Constant(100, 0.1) self.test_waveform1 = pulse.Constant(200, 0.1) self.d0 = pulse.DriveChannel(0) self.d1 = pulse.DriveChannel(1) self.left_context = transforms.AlignLeft() self.right_context = transforms.AlignRight() self.sequential_context = transforms.AlignSequential() self.equispaced_context = transforms.AlignEquispaced(duration=1000) def _align_func(j): return {1: 0.1, 2: 0.25, 3: 0.7, 4: 0.85}.get(j) self.func_context = transforms.AlignFunc(duration=1000, func=_align_func)