Example #1
0

if __name__ == '__main__':
    from pulse_templates.coherent_control.single_qubit_gates.standard_set import single_qubit_std_set
    from pulse_templates.coherent_control.single_qubit_gates.single_qubit_gates import single_qubit_gate_spec
    from pulse_templates.demo_pulse_lib.virtual_awg import get_demo_lib
    from pulse_templates.utility.plotting import plot_seg
    from pulse_lib.segments.utility.looping import linspace
    pulse = get_demo_lib('six')
    seg = pulse.mk_segment()

    X90 = single_qubit_gate_spec(
        'qubit4_MW',
        1e9,
        200,
        120,
        padding=20,
    )
    ss_set = single_qubit_std_set()
    ss_set.X = X90

    test_pulse = single_qubit_gate_spec(
        'qubit2_MW',
        1e9,
        200,
        120,
        padding=20,
        phase_corrections={'qubit4_MW': 1 * np.pi})

    phase_offset_charac(seg, ss_set, test_pulse, 0)
    plot_seg(seg)
Example #2
0
    # example -- make cphase spec
    cphase12 = two_qubit_gate_generic(
        cphase_basic, {
            'gates': gates,
            'v_exchange_pulse_off': (0, 4, 0),
            'v_exchange_pulse_on': (0, 8, 0),
            't_gate': 100,
            't_ramp': 20
        }, {
            'qubit1_MW': 0.23,
            'qubit2_MW': 0.8
        })

    # make two sinle qubit gates sets
    qubit_1 = single_qubit_std_set(ss)
    qubit_1.X = single_qubit_gate_spec('qubit1_MW', 1e9, 100, MW_power=5)

    qubit_2 = single_qubit_std_set(ss)
    qubit_2.X = single_qubit_gate_spec('qubit2_MW', 1e9, 100, MW_power=5)

    two_qubit_gate_spec = two_qubit_std_set(qubit_1, qubit_2, ss)
    two_qubit_gate_spec.cphase = cphase12

    qubit_1.X.add(seg)
    two_qubit_gate_spec.cphase.add(seg)
    qubit_1.X.add(seg)
    # # composite gate
    # two_qubit_gate_spec.CNOT12.add(v_exchange_pulse_on = (0,12,0))

    # wait(seg, gates, 250, base_level)
    def __init__(self, pulse):
        self.measurement_manager = measurement_manager()
        self.segment_mgr = segment_mgr(pulse)

        self.wait = wait_std_set(self.segment_mgr, gates=('P1',), p_0=(0,))
        self.q1 = single_qubit_std_set(self.segment_mgr)
        self.q1.X = single_qubit_gate_spec('qubit1_MW', 11.002e9, 100, MW_power=5)
        self.q1.X2 = single_qubit_gate_spec('qubit1_MW', 11.002e9, 200, MW_power=5)

        self.q2 = single_qubit_std_set(self.segment_mgr)
        self.q2.X = single_qubit_gate_spec('qubit2_MW', 11.103e9, 100, MW_power=5)
        self.q2.X2 = single_qubit_gate_spec('qubit2_MW', 11.103e9, 200, MW_power=5)
        
        self.q3 = single_qubit_std_set(self.segment_mgr)
        self.q3.X = single_qubit_gate_spec('qubit3_MW', 11.201e9, 100, MW_power=5)
        self.q3.X2 = single_qubit_gate_spec('qubit3_MW', 11.201e9, 200, MW_power=5)

        self.q4 = single_qubit_std_set(self.segment_mgr)
        self.q4.X = single_qubit_gate_spec('qubit4_MW', 11.303e9, 100, MW_power=5)
        self.q4.X2 = single_qubit_gate_spec('qubit4_MW', 11.303e9, 200, MW_power=5)
        
        self.q5 = single_qubit_std_set(self.segment_mgr)
        self.q5.X = single_qubit_gate_spec('qubit5_MW', 11.405e9, 100, MW_power=5)
        self.q5.X2 = single_qubit_gate_spec('qubit5_MW', 11.405e9, 200, MW_power=5)

        self.q6 = single_qubit_std_set(self.segment_mgr)
        self.q6.X = single_qubit_gate_spec('qubit6_MW', 11.508e9, 100, MW_power=5)
        self.q6.X2 = single_qubit_gate_spec('qubit6_MW', 11.508e9, 200, MW_power=5)


        cphase12 = two_qubit_gate_generic(cphase_basic, {'gates' : ('vP1','vB1', 'vP2'), 
                                    'v_exchange_pulse_off' : (0,4,0),
                                    'v_exchange_pulse_on' : (0,8,0),
                                    't_gate' : 100,
                                    't_ramp' : 20},
                 {'qubit1_MW' : 0.23, 'qubit2_MW' : 0.8})

        self.q12 = two_qubit_std_set(self.q1, self.q2, self.segment_mgr)
        self.q12.cphase = cphase12

        cphase23 = two_qubit_gate_generic(cphase_basic, {'gates' : ('vP2','vB2', 'vP3'), 
                                    'v_exchange_pulse_off' : (0,4,0),
                                    'v_exchange_pulse_on' : (0,8,0),
                                    't_gate' : 100,
                                    't_ramp' : 20},
                 {'qubit2_MW' : 0.23, 'qubit3_MW' : 0.8})

        self.q23 = two_qubit_std_set(self.q2, self.q3, self.segment_mgr)
        self.q23.cphase = cphase23

        cphase34 = two_qubit_gate_generic(cphase_basic, {'gates' : ('vP3','vB3', 'vP4'), 
                                    'v_exchange_pulse_off' : (0,4,0),
                                    'v_exchange_pulse_on' : (0,8,0),
                                    't_gate' : 100,
                                    't_ramp' : 20},
                 {'qubit3_MW' : 0.23, 'qubit4_MW' : 0.8})

        self.q34 = two_qubit_std_set(self.q3, self.q4, self.segment_mgr)
        self.q34.cphase = cphase34

        cphase45 = two_qubit_gate_generic(cphase_basic, {'gates' : ('vP4','vB4', 'vP5'), 
                                    'v_exchange_pulse_off' : (0,4,0),
                                    'v_exchange_pulse_on' : (0,8,0),
                                    't_gate' : 100,
                                    't_ramp' : 20},
                 {'qubit4_MW' : 0.23, 'qubit5_MW' : 0.8})

        self.q45 = two_qubit_std_set(self.q4, self.q5, self.segment_mgr)
        self.q45.cphase = cphase45

        cphase56 = two_qubit_gate_generic(cphase_basic, {'gates' : ('vP5','vB5', 'vP6'), 
                                    'v_exchange_pulse_off' : (0,4,0),
                                    'v_exchange_pulse_on' : (0,8,0),
                                    't_gate' : 100,
                                    't_ramp' : 20},
                 {'qubit5_MW' : 0.23, 'qubit6_MW' : 0.8})

        self.q56 = two_qubit_std_set(self.q5, self.q6, self.segment_mgr)
        self.q56.cphase = cphase56


        i_12 = measurement('PSB_12_init', chan=[1,2], accept=0, threshold=0.5, phase=0.3)
        init12_kwargs = {'gates' : ('vP1','vB1', 'vP2'), 't_ramp' : 2e3, 
                't_read' : 2e3, 'p_0' : (0,0,0), 'p_1' : (5.5,0,-5.5)}
        init_spec_12 = readout_spec(i_12, PSB_read, init12_kwargs)
        self.init12 = readout_std_set(init_spec_12, self.measurement_manager, self.segment_mgr)

        i_3 = measurement('PSB_3_init', chan=[1,2], accept=0, threshold=0.5, phase=0.3)
        init_spec_3 = readout_spec(i_3, PSB_read, init12_kwargs, (self.wait(100), self.q23.CNOT12, self.wait(100),))
        self.init3  = readout_std_set(init_spec_3, self.measurement_manager, self.segment_mgr)
        
        i_56 = measurement('PSB_56_init', chan=[3,4], accept=0, threshold=0.5, phase=0.3)
        init56_kwargs = {'gates' : ('vP5','vB5', 'vP6'), 't_ramp' : 2e3, 
                't_read' : 2e3, 'p_0' : (0,0,0), 'p_1' : (-5.5,0,5.5)}
        init_spec_56 = readout_spec(i_56, PSB_read, init56_kwargs)
        self.init56 = readout_std_set(init_spec_56, self.measurement_manager, self.segment_mgr)
        
        i_4 = measurement('PSB_4_init', chan=[1,2], accept=0, threshold=0.5, phase=0.3)
        init_spec_4 = readout_spec(i_4, PSB_read, init56_kwargs, (self.wait(100), self.q45.CNOT21, self.wait(100),))
        self.init4  = readout_std_set(init_spec_4, self.measurement_manager, self.segment_mgr)

        

        r_12 = measurement('read12', chan=[1,2], threshold=0.5, phase=0.3)
        readout_spec_12 = readout_spec(r_12, PSB_read, init12_kwargs)
        self.read12 = readout_std_set(readout_spec_12, self.measurement_manager, self.segment_mgr)

        r_1 = measurement('read1', chan=[1,2], threshold=0.5, phase=0.3)
        readout_spec_1 = readout_spec(r_1, PSB_read, init12_kwargs, (self.wait(100),self.q12.CNOT12,self.wait(100)))
        self.read1 = readout_std_set(readout_spec_1, self.measurement_manager, self.segment_mgr)

        r_2 = measurement('read2', chan=[1,2], threshold=0.5, phase=0.3)
        readout_spec_2 = readout_spec(r_2, PSB_read, init12_kwargs, (self.wait(100),self.q12.CNOT21,self.wait(100)))
        self.read2 = readout_std_set(readout_spec_2, self.measurement_manager, self.segment_mgr)

        r_3 = measurement('read3', flip='read12', chan=[1,2], threshold=0.5, phase=0.3)
        readout_spec_3 = readout_spec(r_3, PSB_read, init12_kwargs, (self.wait(100),self.q23.CNOT12,self.wait(100)))
        self.read3 = readout_std_set(readout_spec_3, self.measurement_manager, self.segment_mgr)

        r_56 = measurement('read56', chan=[3,4], threshold=0.5, phase=0.3)
        readout_spec_56 = readout_spec(r_56, PSB_read, init56_kwargs)
        self.read56 = readout_std_set(readout_spec_56, self.measurement_manager, self.segment_mgr)

        r_6 = measurement('read6', chan=[5,6], threshold=0.5, phase=0.3)
        readout_spec_6 = readout_spec(r_6, PSB_read, init56_kwargs, (self.wait(100),self.q56.CNOT21,self.wait(100)))
        self.read6 = readout_std_set(readout_spec_6, self.measurement_manager, self.segment_mgr)

        r_5 = measurement('read5', chan=[5,6], threshold=0.5, phase=0.3)
        readout_spec_5 = readout_spec(r_5, PSB_read, init56_kwargs, (self.wait(100),self.q56.CNOT12,self.wait(100)))
        self.read5 = readout_std_set(readout_spec_5, self.measurement_manager, self.segment_mgr)

        r_4 = measurement('read4', flip='read56', chan=[5,6], threshold=0.5, phase=0.3)
        readout_spec_4 = readout_spec(r_4, PSB_read, init56_kwargs, (self.wait(100),self.q45.CNOT21,self.wait(100)))
        self.read4 = readout_std_set(readout_spec_4, self.measurement_manager, self.segment_mgr)
                getattr(segment, qubits[j].qubit)[i], gates[j])


if __name__ == '__main__':
    from pulse_templates.coherent_control.single_qubit_gates.standard_set import single_qubit_std_set
    from pulse_templates.coherent_control.single_qubit_gates.single_qubit_gates import single_qubit_gate_spec
    from pulse_templates.demo_pulse_lib.virtual_awg import get_demo_lib
    from pulse_templates.utility.plotting import plot_seg
    from pulse_lib.segments.utility.looping import linspace

    import matplotlib.pyplot as plt

    pulse = get_demo_lib('six')
    seg = pulse.mk_segment()

    ss_set4 = single_qubit_std_set()
    ss_set4.X = single_qubit_gate_spec('qubit4_MW', 1e9, 100, 120)

    ss_set3 = single_qubit_std_set()
    ss_set3.X = single_qubit_gate_spec('qubit3_MW', 1e9, 100, 120)
    # ss_set.X2 = single_qubit_gate_spec('qubit4_MW', 1e9, 200, 120)
    print('executing test')
    print(generate_measurement_operators(2))
    # ss_set.X.add(seg)
    generate_state_tomography(seg, ss_set3, ss_set4, axis=0)

    print('test done')

    plot_seg(seg, 1)

    plt.show()