def test_measure_all(self):
        """Test utility function - measure."""
        with pulse.build(self.backend) as schedule:
            regs = pulse.measure_all()

        self.assertEqual(regs, [pulse.MemorySlot(0), pulse.MemorySlot(1)])
        reference = macros.measure_all(self.backend)

        self.assertEqual(schedule, reference)

        backend_100q = ConfigurableBackend('100q', 100)
        with pulse.build(backend_100q) as schedule:
            regs = pulse.measure_all()

        reference = backend_100q.defaults().instruction_schedule_map.\
            get('measure', list(range(100)))

        self.assertEqual(schedule, reference)
Example #2
0
 def test_measure_all(self):
     """Test measure_all function."""
     sched = macros.measure_all(self.backend)
     expected = Schedule(self.inst_map.get('measure', [0, 1]))
     self.assertEqual(sched.instructions, expected.instructions)
Example #3
0
def generate_schedule(pulse_seq, backend, draw_progs):
    D0 = []
    D1 = []
    for i, a in enumerate(pulse_seq):
        if len(pulse_seq[0]) == 2:
            # D0.append(complex(a[0], a[1]))
            D0.append(complex(a[0], a[1]))
        elif len(pulse_seq[0]) == 4:
            D0.append(complex(a[0], a[1]))
            D1.append(complex(a[2], a[3]))
        else:
            D0.append(a[0])
            # if len(pulse_seq[0]) == 2:
            #     # D0.append(complex(a[0], a[1]))
            #     D0.append(complex(a[0], a[1]))
            #     D1.append(complex(a[2], a[3]))
            # else:
            #     D0.append(a[0])
        # D0.append(a[0])
        # D1.append(complex(a[2], a[3]))
    q1 = 0
    q2 = 1

    drive_chan1 = pulse.DriveChannel(q1)
    meas_chan1 = pulse.MeasureChannel(q1)
    acq_chan1 = pulse.AcquireChannel(q1)
    con_chan1 = pulse.ControlChannel(q1)

    drive_chan2 = pulse.DriveChannel(q2)
    meas_chan2 = pulse.MeasureChannel(q2)
    acq_chan2 = pulse.AcquireChannel(q2)
    con_chan2 = pulse.ControlChannel(q2)

    schedule = pulse.Schedule(name='sigmax')

    # init_x = backend.defaults().instruction_schedule_map.get('x', [1])
    # def_seq = init_x.instructions[0]
    # def_seq = def_seq[1].pulse.get_waveform().samples

    # init_x = backend.defaults().instruction_schedule_map.get('x').data
    # schedule += Play(Waveform(def_seq), drive_chan2)
    # schedule += init_x

    later = schedule.duration

    # schedule += def_cx << later
    # if len(subsystem_list) == 1:
    # schedule += Play(SamplePulse(pulse_seqs[0]), drive_chan1) << later
    # else:
    # schedule += Play(SamplePulse(pulse_seqs[0]), con_chan1) << later
    # schedule += Play(SamplePulse(pulse_seqs[1]), con_chan2) << later

    # schedule += Play(SamplePulse(pulse_seqs[2]), drive_chan1) << later

    # schedule += Play(SamplePulse(pulse_seqs[3]), drive_chan2)
    schedule += Play(Waveform(D0), drive_chan1) << later  # schedule.duration
    if len(pulse_seq[0]) == 4:
        schedule += Play(Waveform(D1),
                         drive_chan2) << later  # schedule.duration
    schedule += measure_all(backend) << schedule.duration

    if draw_progs:
        schedule.draw(plot_range=[0, len(D0)])
    return schedule
    "drive_sigma": 336,
    "pi_amp_01": 0.22109871419576962,
    "pi_amp_12": 0.36665303953291,
    "cal_qubit_freq": 4974529080.135406,
    "scale_factor": 1e-14,
    "qubit_12_freq": 4626195988.353748,
    "dt": 2.2222222222222221e-10
}

pi_pulse_01 = get_pi_pulse_01(calibration)
pi_pulse_12 = get_pi_pulse_12(calibration)

drive_chan = pulse.DriveChannel(0)

zero = pulse.Schedule(name="zero")
zero |= measure_all(backend)

one = pulse.Schedule(name="one")
one |= pulse.Play(pi_pulse_01, drive_chan)
one |= measure_all(backend) << one.duration

two = pulse.Schedule(name="two")
two |= pulse.Play(pi_pulse_01, drive_chan)
two |= pulse.Play(pi_pulse_12, drive_chan) << two.duration
two |= measure_all(backend) << two.duration

prog = assemble_sched([zero, one, two], backend, calibration)
job = backend.run(prog)
job_monitor(job)

data = get_job_data(job, calibration)
Example #5
0
def generate_qiskit_program(pulse_seq,
                            backend,
                            default_seq=None,
                            derotate_flag=False,
                            draw_progs=False):

    D0 = []
    D1 = []
    if default_seq:
        D0 = default_seq
    else:
        for i, a in enumerate(pulse_seq):
            if derotate_flag:
                amp2 = derotate(a[1], i, backend)
                amp1 = derotate(a[0], i, backend)
                D0.append(complex(amp1, amp2))
            else:
                if len(pulse_seq[0]) == 2:
                    # D0.append(complex(a[0], a[1]))
                    D0.append(complex(a[0], a[1]))
                elif len(pulse_seq[0]) == 4:
                    D0.append(complex(a[0], a[1]))
                    D1.append(complex(a[2], a[3]))
                else:
                    D0.append(a[0])
                # if len(pulse_seq[0]) == 2:
                #     # D0.append(complex(a[0], a[1]))
                #     D0.append(complex(a[0], a[1]))
                #     D1.append(complex(a[2], a[3]))
                # else:
                #     D0.append(a[0])
            # D0.append(a[0])
            # D1.append(complex(a[2], a[3]))
    q1 = 0
    q2 = 1

    drive_chan1 = pulse.DriveChannel(q1)
    meas_chan1 = pulse.MeasureChannel(q1)
    acq_chan1 = pulse.AcquireChannel(q1)
    con_chan1 = pulse.ControlChannel(q1)

    drive_chan2 = pulse.DriveChannel(q2)
    meas_chan2 = pulse.MeasureChannel(q2)
    acq_chan2 = pulse.AcquireChannel(q2)
    con_chan2 = pulse.ControlChannel(q2)

    schedule = pulse.Schedule(name='sigmax')

    # init_x = backend.defaults().instruction_schedule_map.get('x', [1])
    # def_seq = init_x.instructions[0]
    # def_seq = def_seq[1].pulse.get_waveform().samples

    # init_x = backend.defaults().instruction_schedule_map.get('x').data
    # schedule += Play(Waveform(def_seq), drive_chan2)
    # schedule += init_x

    later = schedule.duration

    # schedule += def_cx << later
    # if len(subsystem_list) == 1:
    # schedule += Play(SamplePulse(pulse_seqs[0]), drive_chan1) << later
    # else:
    # schedule += Play(SamplePulse(pulse_seqs[0]), con_chan1) << later
    # schedule += Play(SamplePulse(pulse_seqs[1]), con_chan2) << later

    # schedule += Play(SamplePulse(pulse_seqs[2]), drive_chan1) << later

    # schedule += Play(SamplePulse(pulse_seqs[3]), drive_chan2)
    schedule += Play(Waveform(D0), drive_chan1) << later  # schedule.duration
    if len(pulse_seq[0]) == 4:
        schedule += Play(Waveform(D1),
                         drive_chan2) << later  # schedule.duration
    schedule += measure_all(backend) << schedule.duration
    from qiskit import assemble

    if draw_progs:
        schedule.draw(plot_range=[0, len(D0)])

    num_shots = 1024
    qoc_test_program = assemble(
        schedule,
        backend=backend,
        meas_level=2,
        meas_return='single',
        #    qubit_lo_freq=backend.defaults().qubit_freq_est,
        shots=num_shots,
    )
    #    schedule_los=schedule_frequencies)
    return qoc_test_program