def _schedule(self) -> Tuple[pulse.ScheduleBlock, Parameter]: """Create the spectroscopy schedule.""" dt, granularity = self._dt, self._granularity duration = int(granularity * (self.experiment_options.duration / dt // granularity)) sigma = granularity * (self.experiment_options.sigma / dt // granularity) width = granularity * (self.experiment_options.width / dt // granularity) qubit = self.physical_qubits[0] freq_param = Parameter("frequency") with pulse.build(backend=self.backend, name="spectroscopy") as schedule: pulse.shift_frequency(freq_param, pulse.MeasureChannel(qubit)) pulse.play( pulse.GaussianSquare( duration=duration, amp=self.experiment_options.amp, sigma=sigma, width=width, ), pulse.MeasureChannel(qubit), ) pulse.acquire(duration, qubit, pulse.MemorySlot(0)) return schedule, freq_param
def test_execute_block(self): """Test executing a ScheduleBlock on a Pulse backend""" with pulse.build(name="test_block") as sched_block: pulse.play(pulse.Constant(160, 1.0), pulse.DriveChannel(0)) pulse.acquire(50, pulse.MeasureChannel(0), pulse.MemorySlot(0)) backend = FakeArmonk() test_result = backend.run(sched_block).result() self.assertDictEqual(test_result.get_counts(), {"0": 1024})
def test_acquire_qubit(self): """Test acquire instruction on qubit.""" acquire0 = pulse.AcquireChannel(0) mem0 = pulse.MemorySlot(0) with pulse.build() as schedule: pulse.acquire(10, 0, mem0) reference = pulse.Schedule() reference += pulse.Acquire(10, acquire0, mem_slot=mem0) self.assertEqual(schedule, reference)
def test_acquire_register_slot(self): """Test acquire instruction into register slot.""" acquire0 = pulse.AcquireChannel(0) reg0 = pulse.RegisterSlot(0) with pulse.build() as schedule: pulse.acquire(10, acquire0, reg0) reference = pulse.Schedule() reference += pulse.Acquire(10, acquire0, reg_slot=reg0) self.assertEqual(schedule, reference)