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)
示例#2
0
    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)