Exemplo n.º 1
0
    def run(self):
        flip_time = 26.1778
        N = 50
        data = np.zeros((3,N))
        for i in range(N):
            fre = 400.+0.001*i - 0.001*N/2
            temp = self.run_sequence(flip_time,fre)
            data[0,i]=fre

            # accuracy
            data[1,i]=temp[0]

            # count
            data[2,i]=temp[1]
            
            print("\nAccuracy:%.1f%%" % (temp[0]))
            print('Photon Count:%d' % temp[1])
            print('Frequency:%.4f' % fre)
        np.save('microwave',data)
        save_file(data,__file__[:-3])
        plt.figure(1)
        ax1 = plt.subplot(121)
        ax1.bar(data[0],data[1],width=0.001/2)
        ax1.legend('efficiency')

        ax2 = plt.subplot(122)
        ax2.bar(data[0],data[2],width=0.001/2)
        ax2.legend('count')

        plt.show()
        
Exemplo n.º 2
0
    def run(self):
        self.pre_set()

        pmt_on()
        init_fre = 236.1
        lock_point = 871.034654
        scan_step = 0.001 * 5
        rabi_time = 40
        N = 100
        run_times = 200

        amp = 0.5
        file_name = 'data\\Rabi_AOM_Fre_Scan' + 'amp=' + str(
            amp) + 'rabi_time=' + str(rabi_time) + 'fre=' + str(
                init_fre) + '-' + str(float(init_fre + N * scan_step)) + '.csv'
        file = open(file_name, 'w+')
        file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_fre, init_fre + scan_step * (N - 1), N)

        for i in trange(N):

            AOM_435 = init_fre + scan_step * i  # - 0.001*N/2

            # wait for 871 to be locked
            while not is_871_locked(lock_point):
                print('Laser is locking...')
                time.sleep(3)

            # change AOM frequency
            code = "conda activate base && python dds.py " + str(
                AOM_435) + ' ' + str(amp)
            os.system(code)

            # run detection and save data
            temp = self.run_sequence(rabi_time, run_times)

            # print information
            data_item = [AOM_435, temp[0], temp[1], wl_871]
            data[:, i] = data_item

            # write data
            content = str(data[0, i])+','+str(data[1, i]) + \
                ','+str(data[2, i])+','+str(data[3, i])+'\n'

            file_write(file_name, content)
            print_info(data_item)
            print('\n')

        file.close()
        save_file(data, file_name[5:-4])
        curr.off()

        # plot figures
        plt.figure(1)
        x1 = data[0, :]
        y1 = data[1, :]
        plt.plot(x1, y1)
        plt.show()
Exemplo n.º 3
0
    def run(self):
        
        # dds_435 = dds_controller()
        # flip_time = 75
        # microwave_fre = 400.0
        init_time = 1.
        time_interval = 0.5
        N = 40
        data = np.zeros((3,N))
        for i in range(N):
            pumping_time = init_time+time_interval*i
            # pumping_time = 15.0
            temp = self.run_sequence(pumping_time)
            data[0,i]=pumping_time
            data[1,i]=temp[0]*2
            data[2,i]=temp[1]
            print("%d/%d" %((i+1),N))
            print('cout:%d\neffiency:%d%%' % (temp[1],temp[0]))
        

        save_file(data,__file__[:-3])
        plt.figure(1)
        ax1 = plt.subplot(121)
        ax1.plot(data[0],data[1])
        ax1.set_title('Detection Effiency')

        ax2 = plt.subplot(122)
        ax2.plot(data[0],data[2])
        ax2.set_title('Detection Count')
        plt.show()
Exemplo n.º 4
0
    def run(self):
        init_time = 30
        time_interval = 2
        N = 30
        data = np.zeros((3, N))
        for i in range(N):
            microwave_time = init_time + i * time_interval - N / 2 * time_interval
            #microwave_time = init_time + i*time_interval
            temp = self.run_sequence(microwave_time)
            data[0, i] = microwave_time

            # accuracy
            data[1, i] = temp[0]

            # count
            data[2, i] = temp[1]

            print("\nAccuracy:%.1f%%" % (temp[0]))
            print('Photon Count:%d' % temp[1])
            print('microwave time:%d' % microwave_time)

        np.save('microwave', data)
        save_file(data, __file__[:-3])
        plt.figure(1)
        ax1 = plt.subplot(121)
        ax1.bar(data[0], data[1], width=time_interval / 2)
        ax1.legend('efficiency')

        ax2 = plt.subplot(122)
        ax2.bar(data[0], data[2], width=time_interval / 2)
        ax2.legend('count')

        plt.show()
Exemplo n.º 5
0
    def run(self):
        widgets = ['Progress: ',Percentage(), ' ', Bar('#'),' ', Timer(),
           ' ', ETA(), ' ']

        microwave_time =34
        time_interval = 100
        N = 100
        pbar = ProgressBar(widgets=widgets, maxval=10*N).start()
        data = np.zeros((3,N))
        # print(__file__)
        for i in range(N):
            delay_time = time_interval*i
            temp = self.run_sequence(microwave_time,delay_time)
            data[0,i] = delay_time

            # accuracy
            data[1,i]=temp[0]

            # count
            data[2,i]=temp[1]
            
            print("\nAccuracy:%.1f%%" % (temp[0]))
            print('Photon Count:%d' % temp[1])
            print('microwave time:%d' % microwave_time)
            pbar.update(10 * i + 1)
            print('\n')


        pbar.finish()

        np.save('microwave',data)
        save_file(data,__file__[:-3])
        plt.figure(1)
        ax1 = plt.subplot(121)
        ax1.bar(data[0],data[1],width=time_interval/2)
        ax1.legend('efficiency')

        ax2 = plt.subplot(122)
        ax2.bar(data[0],data[2],width=time_interval/2)
        ax2.legend('count')

        plt.figure(2)
        ax3 = plt.subplot(121)
        ax3.plot(data[0],data[1])
        ax3.legend('efficiency')

        ax4=plt.subplot(122)
        ax4.plot(data[0],data[2])
        ax4.legend('count')

        plt.show()
Exemplo n.º 6
0
    def run(self):
        self.pre_set()
        repeat_time = 1000
        data = [None] * repeat_time
        for i in range(repeat_time):
            t1 = time.time()
            temp_data = self.run_sequence()
            t2 = time.time()
            print("\nAccuracy:%.1f%%" % (temp_data[0]))
            print('Photon Count:%d' % temp_data[1])
            print('Costed time:%.1fs' % (t2 - t1))
            data[i] = temp_data[0]

        save_file(data, __file__[:-3])
Exemplo n.º 7
0
    def run(self):
        init_time = 0
        time_interval = 1
        N = 50
        data = np.zeros((3, N))
        for i in range(N):
            microwave_time = init_time + i * time_interval
            #microwave_time = init_time + i*time_interval
            temp = self.run_sequence(microwave_time)
            data[0, i] = microwave_time

            # accuracy
            data[1, i] = temp[0]

            # count
            data[2, i] = temp[1]

            print("\nAccuracy:%.1f%%" % (temp[0]))
            print('Photon Count:%d' % temp[1])
            print('microwave time:%d' % microwave_time)

        np.save('microwave', data)
        save_file(data, __file__[:-3])
        plt.figure(1)
        ax1 = plt.subplot(121)
        ax1.bar(data[0], data[1], width=time_interval / 2)
        ax1.legend('efficiency')

        ax2 = plt.subplot(122)
        ax2.bar(data[0], data[2], width=time_interval / 2)
        ax2.legend('count')

        # fit function
        """
        popt, pcov = curve_fit(fit_func, data[0], data[1])
        print("b:%s,b:%s,c:%s" % tuple(popt))
        plt.figure(2)
        plt.plot(data[0], data[1],'bo', label='intial data')
        xdata = np.linspace(init_time, init_time+time_interval*N,50*N)
        plt.plot(xdata, fit_func(xdata, *popt), 'r-',
        label='fit:a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))
        plt.legend()
        """
        plt.show()
Exemplo n.º 8
0
    def run(self):

        self.pre_set()
        pmt_on()

        center_370_wavelength = 369.526100
        laser_scan_step = -0.000001
        N = 60

        init_370_wavelength = center_370_wavelength - laser_scan_step * N / 2
        data = np.zeros((3, N))

        time_now = time.strftime("%Y-%m-%d-%H-%M")
        file_name = 'data\\' + str(init_370_wavelength) + '-' + str(
            init_370_wavelength +
            N * laser_scan_step) + '-' + time_now + '.csv'
        file = open(file_name, 'w+')
        file.close()

        for i in range(N):
            wavelength_370 = init_370_wavelength + i * laser_scan_step
            laser_lock_370.lock(wavelength_370)
            laser_lock_370.lock_on()
            while not is_locked(wavelength_370):
                time.sleep(5)
                print('wait for 370 to be locked')

            temp = self.run_sequence()
            data[:, i] = [wavelength_370, temp[0], temp[1]]

            content = str(wavelength_370) + ',' + \
                      str(temp[0]) + ',' + str(temp[1])+'\n'
            file_write(file_name, content)

            print('Count:%d\nEffiency:%.1f%%' % (temp[1], temp[0]))
        file.close()
        save_file(data, __file__[:-3])

        laser_lock_370.lock(369.526100)
        laser_lock_370.lock_on()
        while not is_locked(369.526100):
            time.sleep(2)
            print('Set back to initial frequency')
Exemplo n.º 9
0
    def run(self):
        flip_time = 460
        N = 50
        data = np.zeros((3, N))
        for i in range(N):
            fre = 400. + 0.001 * i - 0.001 * N / 2
            temp = self.run_sequence(flip_time, fre)
            data[0, i] = fre

            # accuracy
            data[1, i] = temp[0]

            # count
            data[2, i] = temp[1]

            print("\nAccuracy:%.1f%%" % (temp[0]))
            print('Photon Count:%d' % temp[1])
            print('Frequency:%.4f' % fre)
        np.save('microwave', data)
        save_file(data, __file__[:-3])
Exemplo n.º 10
0
    def run(self):
        pmt_on()
        init_fre = 80
        lock_point = 871.034927
        N = 3000

        widgets = [
            'Progress: ',
            Percentage(), ' ',
            Bar('#'), ' ',
            Timer(), ' ',
            ETA(), ' '
        ]
        pbar = ProgressBar(widgets=widgets, maxval=10 * N).start()

        file_name = 'data\\'+str(init_fre)+'-' + \
            str(float(init_fre+N*0.005))+'.csv'
        file = open(file_name, 'w+')
        file.close()

        rescan_file_name = 'data\\rescan' + \
            str(init_fre)+'-'+str(float(init_fre+N*0.005))+'.csv'
        rescan_file = open(rescan_file_name, 'w+')
        rescan_file.close()

        manual_rescan_file_name = 'data\\manual_rescan' + \
            str(init_fre)+'-'+str(float(init_fre+N*0.005))+'.csv'
        manual_rescan_file = open(manual_rescan_file_name, 'w+')
        manual_rescan_file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_fre, init_fre + 0.005 * (N - 1), N)

        plt.figure(1)
        fig1 = plt.subplot(211)
        line1, = fig1.plot(data[0, 0:0], data[1, 0:0])

        fig2 = plt.subplot(212)
        line2, = fig2.plot(data[0, 0:0], data[2, 0:0])

        for i in range(N):
            AOM_435 = init_fre + 0.005 * i  # - 0.001*N/2

            # wait for 871 to be locked
            while not is_871_locked(lock_point):
                time.sleep(5)

            # change AOM frequency
            code = "conda activate base && python dds.py " + str(AOM_435)
            os.system(code)

            # run detection and save data
            temp = self.run_sequence()
            # print information
            data_item = [AOM_435, temp[0] * 2, temp[1], wm.get_data()[0]]
            data[:, i] = data_item
            """
            line1.set_xdata(data[0, 0:i])
            line1.set_ydata(data[1, 0:i])
            line2.set_xdata(data[0, 0:i])
            line2.set_ydata(data[2, 0:i])

            fig1.relim()
            fig1.autoscale_view(True, True, True)
            fig2.relim()
            fig2.autoscale_view(True, True, True)
            """

            # write data
            content = str(data[0, i])+','+str(data[1, i]) + \
                ','+str(data[2, i])+','+str(data[3, i])+'\n'
            file_write(file_name, content)

            print_info(data_item)
            pbar.update(10 * i + 1)
            print('\n')

            # rescan at most n times when effiency is less than 80%
            rescan_time = 0
            temp_data = []

            if 2 * temp[0] < 80:
                while rescan_time < 5:
                    # check if there is ion

                    time.sleep(0.5)
                    shutter_370.on()
                    time.sleep(0.5)
                    shutter_370.off()

                    time.sleep(0.2)

                    temp1 = self.run_sequence()
                    temp_data.append(list(temp1))
                    rescan_time += 1
                    print('rescan:%d, effiency:%d' %
                          (rescan_time, 2 * temp1[0]))
                    print('\n')

            if rescan_time == 5:
                # print('saveing data')
                temp_data = np.array(temp_data, dtype=np.int)
                effiencies = temp_data[:, 0]

                if 2 * effiencies.mean() < 80:
                    manual_rescan_content = str(AOM_435) + '\n'
                    file_write(manual_rescan_file_name, manual_rescan_content)

                rescan_content = str(AOM_435)
                for k in range(5):
                    rescan_content = rescan_content + ',' + str(
                        2 * effiencies[k])
                rescan_content = rescan_content + '\n'
                file_write(rescan_file_name, rescan_content)
            """
            plt.draw()
            plt.pause(1e-8)
            """
            # update figure
            # line1.set_xdata(data[0,0:i])

        file.close()
        rescan_file.close()
        manual_rescan_file.close()
        save_file(data, __file__[:-3])

        line1.set_xdata(data[0, :])
        line1.set_ydata(data[1, :])
        line2.set_xdata(data[0, :])
        line2.set_ydata(data[2, :])

        fig1.relim()
        fig1.autoscale_view(True, True, True)
        fig2.relim()
        fig2.autoscale_view(True, True, True)
        plt.show()
Exemplo n.º 11
0
    def run(self):

        init_fre = 241.6
        stop_fre = 242.0
        DDS_AMP = 0.8
        lock_point = 871.034636
        scan_step = 0.001
        rabi_time = 100.0

        N = int((stop_fre - init_fre) / scan_step)
        run_times = 200

        file_name = 'data\\Rabi_AOM_fre_Scan'+str(init_fre)+'-'+\
                     str(float(init_fre+N*scan_step))+'.csv'
        file = open(file_name, 'w+')
        file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_fre, init_fre + scan_step * (N - 1), N)

        for i in trange(N):

            AOM_435 = init_fre + scan_step * i  # - 0.001*N/2
            DDS.set_frequency(port=0,
                              frequency=AOM_435,
                              amplitude=DDS_AMP,
                              phase=0)
            # wait for 871 to be locked
            while not is_871_locked(lock_point):
                print('Laser is locking...')
                time.sleep(3)

            # change AOM frequency
            """
            code = "conda activate base && python dds.py " + str(AOM_435)
            os.system(code)
            """

            # run detection and save data
            temp = self.run_sequence(rabi_time, run_times)

            # print information
            data_item = [AOM_435, temp[0], temp[1], wl_871]
            data[:, i] = data_item

            # write data
            content = str(data[0, i])+','+str(data[1, i]) + \
                ','+str(data[2, i])+','+str(data[3, i])+'\n'

            file_write(file_name, content)
            print_info(data_item)
            print('\n')

        min_index = data[1, :].argmin(axis=0)
        register_frequency(data[0, min_index], data[1, min_index])

        file.close()
        save_file(data, file_name[5:-4])

        # plot figures
        plt.figure(1)
        x1 = data[0, :]
        y1 = data[1, :]
        plt.plot(x1, y1)
        plt.show()
Exemplo n.º 12
0
    def run(self):

        # AOM_435 MicroMotion = 228.4915
        # AOM_435 Red Phonon Sideband 239.0195
        # AOM_435 = 239.965-22.52968/2
        t1 = time.time()
        AOM_435 = 241.909
        DDS_AMP = 0.8
        DDS.set_frequency(frequency=AOM_435, amplitude=DDS_AMP)
        lock_point = 871.034636
        init_value = 0.0
        scan_step = 3
        N = 50
        run_times = 200

        file_name = 'data\\Rabi_AOM_Time_Scan'+str(init_value)+'-'+\
                     str(float(init_value+N*scan_step))+'.csv'
        file = open(file_name, 'w+')
        file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_value, init_value + scan_step * (N - 1),
                                 N)

        # drive AOM

        # scab iteration
        for i in trange(N):
            scan_value = init_value + scan_step * i  # - 0.001*N/2

            # wait for 871 to be locked
            while not is_871_locked(lock_point):
                print('Laser is locking...')
                time.sleep(3)

            # run detection and save data
            temp = self.run_sequence(scan_value, run_times)

            # print information
            data_item = [scan_value, temp[0], temp[1], wl_871]
            data[:, i] = data_item

            # write data
            content = str(data[0, i])+','+str(data[1, i]) + \
                ','+str(data[2, i])+','+str(data[3, i])+'\n'

            file_write(file_name, content)
            print_info(data_item)

        file.close()
        save_file(data, file_name[5:-4])
        curr.off()

        t2 = time.time()
        print("Time costed:%s" % (t2 - t1))
        # plot figures
        plt.figure(1)
        x1 = data[0, :]
        y1 = data[1, :]
        plt.plot(x1, y1)
        plt.show()
Exemplo n.º 13
0
    def run(self):
        self.pre_set()

        pmt_on()
        shutter_370.off()
        center_fre = 260
        scan_step = 0.1
        fre_width = 1
        N = int(fre_width / scan_step)
        init_fre = center_fre - N / 2 * scan_step
        # init_fre = 342.57
        lock_point = 871.034694
        widgets = [
            'Progress: ',
            Percentage(), ' ',
            Bar('#'), ' ',
            Timer(), ' ',
            ETA(), ' '
        ]
        pbar = ProgressBar(widgets=widgets, maxval=10 * N).start()

        file_name = 'data\\'+str(lock_point)[5::]+'-'+str(init_fre)+'-' + \
            str(float(init_fre+N*scan_step))+'.csv'
        file = open(file_name, 'w+')
        file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_fre, init_fre + scan_step * (N - 1), N)

        x_data = list(range(100))
        y_data1 = [None] * 100
        y_data2 = [None] * 100
        """
        plt.figure(1)
        fig1 = plt.subplot(211)
        line1, = fig1.plot(x_data,y_data1)
        show_data1 = 'Effiency:0'
        txt1 = fig1.text(0.8,0.8,show_data1 ,verticalalignment = 'center', \
                                            transform=fig1.transAxes)

        fig2 = plt.subplot(212)
        line2, = fig2.plot(x_data,y_data2)
        show_data2 = 'Count:0'
        txt2 = fig2.text(0.8,0.8,show_data2,verticalalignment = 'center', \
                                            transform=fig2.transAxes)
        """
        for i in range(N):
            AOM_435 = init_fre + scan_step * i  # - 0.001*N/2

            # wait for 871 to be locked
            while not is_871_locked(lock_point):
                time.sleep(5)

            # change AOM frequency
            code = "conda activate base && python dds.py " + str(AOM_435)
            os.system(code)

            time.sleep(0.1)
            # run detection and save data
            temp = self.run_sequence()

            if temp[0] < 50:
                ccd_on()
                time.sleep(0.7)
                if not has_ion():
                    costed_time = 0
                    while not has_ion() and costed_time < 300:
                        shutter_370.on()
                        time.sleep(5)
                        costed_time += 5
                    shutter_370.off()
                    time.sleep(0.5)
                    temp = self.run_sequence()
                else:
                    pmt_on()
            y_data1 = y_data1[1::] + [temp[0]]
            y_data2 = y_data2[1::] + [temp[1]]
            # print information
            data_item = [AOM_435, temp[0], temp[1], wm.get_data()[0]]
            data[:, i] = data_item

            # write data
            content = str(data[0, i])+','+str(data[2, i]) + \
                ','+str(data[1, i])+','+str(data[3, i])+'\n'
            file_write(file_name, content)

            print_info(data_item)
            pbar.update(10 * i + 1)
            print('\n')

        shutter_370.on()
        file.close()
        save_file(data, __file__[:-3])
Exemplo n.º 14
0
    def run(self):

        # AOM_435 MicroMotion = 228.4915
        # AOM_435 Red Phonon Sideband 239.0195
        # AOM_435 Blue Sideband

        AOM_435 = 239.912
        AOM_435_RED_SIDEBAND = 238.381
        lock_point = 871.034644
        init_value = 0
        scan_step = 1
        N = 500
        run_times = 200
        amp = 0.9

        cooling_time = 40
        cooling_cycles = 200

        self.pre_set()
        pmt_on()

        file_name = 'data\\Carrier_After_Cooling'+str(init_value)+'-'+\
                     str(float(init_value+N*scan_step))+'.csv'
        file = open(file_name, 'w+')
        file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_value, init_value + scan_step * (N - 1),
                                 N)

        # SIDEBAND COOLING
        code = "conda activate base && python dds.py " + \
            str(AOM_435_RED_SIDEBAND) + ' ' + str(amp)
        os.system(code)

        # satrt cooling
        self.sidebandcooling(cooling_time, cooling_cycles)

        # scan to test if carrier becomes better
        # scan iteration
        code = "conda activate base && python dds.py " + \
            str(AOM_435) + ' ' + str(amp)
        os.system(code)

        for i in trange(N):
            """
            #SIDEBAND COOLING
            code = "conda activate base && python dds.py " + \
                str(AOM_435_RED_SIDEBAND) + ' ' + str(amp)
            os.system(code)

            # satrt cooling
            self.sidebandcooling(cooling_time, cooling_cycles)
            """

            code = "conda activate base && python dds.py " + \
            str(AOM_435) + ' ' + str(amp)
            os.system(code)
            scan_value = init_value + scan_step * i  # - 0.001*N/2

            # wait for 871 to be locked
            while not is_871_locked(lock_point):
                print('Laser is locking...')
                time.sleep(3)

            # run detection and save data
            temp = self.run_sequence(scan_value)

            # print information
            data_item = [scan_value, temp[0], temp[1], wl_871]
            data[:, i] = data_item

            # write data
            content = str(data[0, i])+','+str(data[1, i]) + \
                ','+str(data[2, i])+','+str(data[3, i])+'\n'

            file_write(file_name, content)
            print_info(data_item)

        file.close()
        save_file(data, file_name[5:-4])
        curr.off()

        # plot figures
        plt.figure(1)
        x1 = data[0, :]
        y1 = data[1, :]
        plt.plot(x1, y1)
        plt.show()
Exemplo n.º 15
0
    def run(self):
        self.pre_set()

        pmt_on()
        init_fre = 235.467
        lock_point = 871.034658
        scan_step = 0.0005
        rabi_time = 100

        N = 20
        center_fre = init_fre + N * scan_step / 2
        run_times = 200
        sleep_time = 5
        M = 2000

        time_now = time.strftime("%Y-%m-%d-%H-%M")
        file_name = 'data\\435_long_term' + time_now + '.csv'
        file = open(file_name, 'w+')
        file.close()

        t0 = time.time()
        all_data = np.zeros((3, M))

        for j in range(M):

            data = np.zeros((4, N))
            data[0, :] = np.linspace(init_fre, init_fre + scan_step * (N - 1),
                                     N)
            init_fre = center_fre - N * scan_step / 2
            for i in trange(N):

                AOM_435 = init_fre + scan_step * i  # - 0.001*N/2

                # wait for 871 to be locked
                while not is_871_locked(lock_point):
                    print('Laser is locking...')
                    time.sleep(3)

                # change AOM frequency
                code = "conda activate base && python dds.py " + str(AOM_435)
                os.system(code)

                # run detection and save data
                temp = self.run_sequence(rabi_time, run_times)

                if temp[0] < 5:
                    reload_ion()
                    pmt_on()

                # print information
                data_item = [AOM_435, temp[0], temp[1], wl_871]
                data[:, i] = data_item
                print_info(data_item)

            t1 = time.time()
            delta_t = t1 - t0

            # get the min value of effiency
            ydata = data[1, :]
            min_ind = ydata.argmin(axis=0)

            # judge if it is the random value
            """
            if min_ind > 0 and min_ind < N-1:
                if ydata[min_ind -1] < 50 and ydata[min_ind+1]<50:
                    center_fre = data[0,:][min_ind]
            """

            # save data
            all_data[0, j] = delta_t
            all_data[1, j] = data[0, :][min_ind]
            all_data[2, j] = ydata[min_ind]

            content = str(delta_t) + ',' + str(
                data[0, :][min_ind]) + ',' + str(ydata[min_ind]) + '\n'
            file_write(file_name, content)

            time.sleep(sleep_time)

        file.close()
        save_file(all_data, file_name[5:-4])
Exemplo n.º 16
0
    def run(self):
        self.pre_set()

        pmt_on()
        shutter_370.off()
        scan_step = 0.000001
        # fre_width = 1
        # N = int(fre_width/scan_step)
        N = 8000
        init_fre = 871.034000
        # init_fre = 342.57
        # lock_point = 871.034694
        widgets = [
            'Progress: ',
            Percentage(), ' ',
            Bar('#'), ' ',
            Timer(), ' ',
            ETA(), ' '
        ]
        pbar = ProgressBar(widgets=widgets, maxval=10 * N).start()

        file_name = 'data\\'+str(init_fre)[5::]+'-'+str(init_fre)+'-' + \
            str(float(init_fre+N*scan_step))+'.csv'
        file = open(file_name, 'w+')
        file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_fre, init_fre + scan_step * (N - 1), N)

        x_data = list(range(100))
        y_data1 = [None] * 100
        y_data2 = [None] * 100
        """
        plt.figure(1)
        fig1 = plt.subplot(211)
        line1, = fig1.plot(x_data,y_data1)
        show_data1 = 'Effiency:0'
        txt1 = fig1.text(0.8,0.8,show_data1 ,verticalalignment = 'center', \
                                            transform=fig1.transAxes)

        fig2 = plt.subplot(212)
        line2, = fig2.plot(x_data,y_data2)
        show_data2 = 'Count:0'
        txt2 = fig2.text(0.8,0.8,show_data2,verticalalignment = 'center', \
                                            transform=fig2.transAxes)
        """
        for i in range(N):

            # lock 871
            fre_871 = init_fre + i * scan_step
            wm.lock(1, fre_871)
            time.sleep(0.1)

            # run detection and save data
            temp = self.run_sequence()

            # check state when detection effiency < 50
            if temp[0] < 3 * 50:
                ccd_on()
                time.sleep(0.7)

                # reload ion
                if not has_ion():
                    costed_time = 0
                    curr.on()
                    while not has_ion() and costed_time < 300:
                        shutter_370.on()
                        time.sleep(5)
                        costed_time += 5
                    shutter_370.off()
                    time.sleep(0.5)
                    temp = self.run_sequence()
                else:
                    curr.off()
                    pmt_on()

            y_data1 = y_data1[1::] + [temp[0]]
            y_data2 = y_data2[1::] + [temp[1]]
            # print information
            data_item = [fre_871, temp[0] / 3, temp[1], wm.get_data()[0]]
            data[:, i] = data_item

            # write data
            content = str(data[0, i])+','+str(data[2, i]) + \
                ','+str(data[1, i])+','+str(data[3, i])+'\n'
            file_write(file_name, content)

            print_info(data_item)
            pbar.update(10 * i + 1)
            print('\n')

        shutter_370.on()
        file.close()
        save_file(data, __file__[:-3])
Exemplo n.º 17
0
    for release in check_changes_info:
        if release.get_num_entries_added(
        ) > 0 or release.get_num_entries_updated() > 0:
            changed_releases_info.append(release)

    if changed_releases_info:
        tweet(format_tweet.entry_changes(changed_releases_info))

# new updates should be tweeted last, after all of the other tweets
if new_releases_info:
    tweet(format_tweet.new_updates(list(new_releases_info), stored_data))

# if there was a new major release
for key, value in latest_versions.items():
    for release in new_releases_info:
        if release.get_name() in (f"{key} {value[0]}", f"{key} {value[0]}.0"):
            tweet(
                format_tweet.yearly_report(all_releases, key, value[0],
                                           stored_data))

        elif key == "macOS":
            if release.get_name() in (
                    f"{key} {value[1]} {value[0]}",
                    f"{key} {value[1]} {value[0]}.0",
            ):
                tweet(
                    format_tweet.yearly_report(all_releases, key, value[0],
                                               stored_data))

save_file(stored_data, midnight)
Exemplo n.º 18
0
    def run(self):
        self.pre_set()

        pmt_on()
        init_fre = 235.485
        lock_point = 871.034663
        scan_step = 0.0001
        init_amp = 0.045

        M = 5
        amp_step = 0.005

        init_rabi_time = 8000
        rabi_time_step = 500
        N = 100
        run_times = 200

        plt.figure(figsize=(16, 10))
        for j in trange(M):
            amp = init_amp - j * amp_step
            rabi_time = init_rabi_time + rabi_time_step * j

            file_name = 'data\\435_width_iteration_scan_amp='+str(amp)+ 'rabi_time=' + str(rabi_time)+ 'fre '+str(init_fre)+'-'+\
                     str(float(init_fre+N*scan_step))+'.csv'
            file = open(file_name, 'w+')
            file.close()

            data = np.zeros((4, N))
            data[0, :] = np.linspace(init_fre, init_fre + scan_step * (N - 1),
                                     N)

            for i in range(N):
                AOM_435 = init_fre + scan_step * i  # - 0.001*N/2

                # wait for 871 to be locked
                while not is_871_locked(lock_point):
                    print('Laser is locking...')
                    time.sleep(3)

                # change AOM frequency
                code = "conda activate base && python dds.py " + str(
                    AOM_435) + " " + str(amp)
                print(code)
                os.system(code)

                # run detection and save data
                temp = self.run_sequence(rabi_time, run_times)

                # print information
                data_item = [AOM_435, temp[0], temp[1], wl_871]
                data[:, i] = data_item

                # write data
                content = str(data[0, i])+','+str(data[1, i]) + \
                    ','+str(data[2, i])+','+str(data[3, i])+'\n'

                file_write(file_name, content)
                print_info(data_item)
                print('\n')

            file.close()
            save_file(data, file_name[5:-4])

            ax_label = 'amp=' + str(amp) + ' rabi=' + str(rabi_time) + 'us'
            ax = plt.subplot(1, 5, j + 1)
            ax.plot(data[0, :], data[1, :], label=ax_label)
            ax.legend()

        # plot figures
        fig_name = 'data\\435_width_iteration_scan_amp='+ '-'+str(amp)+'-'+str(init_amp)+'rabi_time=' + str(rabi_time)+ 'fre '+str(init_fre)+'-'+\
                     str(float(init_fre+N*scan_step))+'.pdf'
        plt.savefig(fig_name)
        plt.show()
Exemplo n.º 19
0
    def run(self):
        self.pre_set()

        pmt_on()

        # aom frequnecy is interms of MHz
        init_aom_fre = 210
        stop_aom_fre = 240
        aom_scan_step = 50 / 1000  # 50kHz
        aom_N = int((stop_aom_fre - init_aom_fre) / aom_scan_step)

        # laser_frequency is interms of MHz
        laser_scan_step = -(stop_aom_fre - init_aom_fre)
        init_laser_fre = 344.179520 * 10**6

        laser_N = 2
        N = laser_N * aom_N

        # calculate min and max frequency
        min_fre = init_laser_fre - 2 * 240
        max_fre = init_laser_fre - 2 * 240 + laser_N * laser_scan_step

        # progressbar
        widgets = [
            'Progress: ',
            Percentage(), ' ',
            Bar('#'), ' ',
            Timer(), ' ',
            ETA(), ' '
        ]
        pbar = ProgressBar(widgets=widgets, maxval=10 * N).start()

        # save file
        time_now = time.strftime("%Y-%m-%d-%H-%M")
        file_name = 'data\\' + str(min_fre) + '-' + str(
            max_fre) + '-' + time_now + '.csv'
        file = open(file_name, 'w+')
        file.close()

        rescan_file_name = 'data\\rescan-' + str(min_fre) + '-' + str(
            max_fre) + '-' + time_now + '.csv'
        rescan_file = open(rescan_file_name, 'w+')
        rescan_file.close()

        manual_rescan_file_name = 'data\\manual-rescan-' + \
            str(min_fre)+'-'+str(max_fre)+'-'+time_now+'.csv'
        manual_rescan_file = open(manual_rescan_file_name, 'w+')
        manual_rescan_file.close()

        # save data
        data = np.zeros((4, N))
        data[0, :] = np.linspace(min_fre, max_fre, N)

        x_data = list(range(100))
        y_data1 = [None] * 100
        y_data2 = [None] * 100
        """
        plt.figure(1)
        fig1 = plt.subplot(211)
        line1, = fig1.plot(x_data,y_data1)
        show_data1 = 'Effiency:0'
        txt1 = fig1.text(0.8,0.8,show_data1 ,verticalalignment = 'center', \
                                            transform=fig1.transAxes)

        fig2 = plt.subplot(212)
        line2, = fig2.plot(x_data,y_data2)
        show_data2 = 'Count:0'
        txt2 = fig2.text(0.8,0.8,show_data2,verticalalignment = 'center', \
                                            transform=fig2.transAxes)
        """
        for i in range(laser_N):
            fre_871 = init_laser_fre + i * laser_scan_step

            # convert MHz in to THz
            laser_871_lock.lock(fre_871 / 10**6)
            laser_871_lock.lock_on()

            # wait for 871 to be locked
            while not is_871_locked(fre_871 / 10**6):
                print('wait for 871 to be locked ...')
                time.sleep(1)

            for j in range(aom_N):
                index = i * aom_N + j
                AOM_435 = init_aom_fre + aom_scan_step * j

                # change AOM frequency
                code = "conda activate base && python dds.py " + str(AOM_435)
                os.system(code)

                # run detection and save data
                temp = self.run_sequence()

                y_data1 = y_data1[1::] + [temp[0]]
                y_data2 = y_data2[1::] + [temp[1]]

                # print information
                data_item = [AOM_435, temp[0], temp[1], wm.get_data()[0]]
                data[:, index] = data_item

                # write data
                content = str(data[0, index])+','+str(data[1, index]) + \
                    ','+str(data[2, index])+','+str(data[3, index])+','+str(fre_871)+'\n'
                file_write(file_name, content)

                #
                print('coming to line 298')
                print_info(data_item)
                pbar.update(10 * index + 1)
                print('\n')

                # rescan at most n times when effiency is less than 80%
                rescan_time = 0
                temp_data = []

                if temp[0] < 90:
                    while rescan_time < 5:
                        # check if there is ion
                        ccd_on()
                        time.sleep(0.5)

                        # there is ion try to cool the ion
                        if has_ion():
                            shutter_370.on()
                            time.sleep(0.5)
                            shutter_370.off()
                            pmt_on()
                            time.sleep(0.2)
                            temp1 = self.run_sequence()
                            temp_data.append(list(temp1))
                            rescan_time += 1
                            print('rescan:%d, effiency:%d' %
                                  (rescan_time, temp1[0]))
                            print('\n')

                        # there is no ion reload ion
                        else:
                            reload_ion()
                            pmt_on()

                if rescan_time == 5:
                    # print('saveing data')
                    temp_data = np.array(temp_data, dtype=np.int)
                    effiencies = temp_data[:, 0]
                    counts = temp_data[:, 1]

                    rescan_content = str(AOM_435)
                    for k in range(5):
                        rescan_content = rescan_content + ',' + str(
                            effiencies[k])

                    for kk in range(5):
                        rescan_content = rescan_content + ',' + str(counts[kk])

                    rescan_content = rescan_content + ',' + str(fre_871) + '\n'
                    file_write(rescan_file_name, rescan_content)

                    if effiencies.mean() < 90:
                        file_write(manual_rescan_file_name, rescan_content)

            # update figure
            # line1.set_xdata(data[0,0:index])

        file.close()
        rescan_file.close()
        manual_rescan_file.close()
        save_file(data, __file__[:-3])
Exemplo n.º 20
0
    def run(self):
        
        # dds_435 = dds_controller()
        # flip_time = 75
        # microwave_fre = 400.0
        self.pre_set()
        wm = wlm_web()
        init_fre = 103
        lock_point = 871.034931
        N = 4000
        # progressbar
        widgets = ['Progress: ',Percentage(), ' ', Bar('#'),' ', Timer(),
           ' ', ETA(), ' ']
        pbar = ProgressBar(widgets=widgets, maxval=10*N).start()
        
        file_name = 'data\\'+str(init_fre)+'-'+str(float(init_fre+N*0.0005))+'.csv'
        file = open(file_name,'w+')
        file.close()

        data = np.zeros((4,N))
        for i in range(N):
            file = open(file_name,'a')
            AOM_435 =init_fre+0.0005*i #- 0.001*N/2

            wl_871 = wm.get_data()[0]
            is_871_locked = abs(wl_871-lock_point) < 0.000004
            while not is_871_locked:
                time.sleep(5)
                wl_871 = wm.get_data()[0]
                is_871_locked = abs(wl_871-lock_point) < 0.000004
            
            code = "conda activate base && python dds.py " + str(AOM_435)
            os.system(code)
            temp = self.run_sequence()
            data[0,i]=AOM_435

            # accuracy
            data[1,i]=temp[0]*2

            # count
            data[2,i]=temp[1]

            data[3,i]=wm.get_data()[0]
            
            print("Accuracy:%.1f%%" % (temp[0]*2))
            print('Photon Count:%d' % temp[1])
            pbar.update(10*i+1)
            print('\n')
            content =str(data[0,i])+','+str(data[1,i])+','+str(data[2,i])+','+str(data[3,i])+'\n'
            # print(content)
            file.write(content)
            file.close()

        np.save('microwave',data)
        file.close()
        save_file(data,__file__[:-3])

        plt.figure(1)
        ax1 = plt.subplot(121)
        ax1.plot(data[0],data[1])

        ax2 = plt.subplot(122)
        ax2.plot(data[0],data[2])
        
        plt.show()
Exemplo n.º 21
0
    def run(self):
        self.pre_set()

        pmt_on()
        init_fre = 239.68
        sideband_fre1 = 228.38
        carrier_fre = 239.7
        sideband_fre2 = 250.8

        lock_point = 871.034662
        scan_step = 0.001 / 2

        rabi_time = 200
        scan_times = 200 * 2
        N = 3 * scan_times

        run_times = 200

        file_name = 'data\\Rabi_AOM_fre_Scan'+str(init_fre)+'-'+\
                     str(float(init_fre+N*scan_step))+'.csv'
        file = open(file_name, 'w+')
        file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_fre, init_fre + scan_step * (N - 1), N)

        for i in trange(N):

            if i < scan_times:
                init_fre = sideband_fre1
            elif i < scan_times * 2:
                init_fre = carrier_fre - scan_times * scan_step
            else:
                init_fre = sideband_fre2 - 2 * scan_times * scan_step

            AOM_435 = init_fre + scan_step * i  # - 0.001*N/2

            # wait for 871 to be locked
            while not is_871_locked(lock_point):
                print('Laser is locking...')
                time.sleep(3)

            # change AOM frequency
            code = "conda activate base && python dds.py " + str(AOM_435)
            os.system(code)

            # run detection and save data
            temp = self.run_sequence(rabi_time, run_times)

            # print information
            data_item = [AOM_435, temp[0], temp[1], wl_871]
            data[:, i] = data_item

            # write data
            content = str(data[0, i])+','+str(data[1, i]) + \
                ','+str(data[2, i])+','+str(data[3, i])+'\n'

            file_write(file_name, content)
            print_info(data_item)
            print('\n')

        min_index = data[1, :].argmin(axis=0)
        register_frequency(data[0, min_index], data[1, min_index])

        file.close()
        save_file(data, file_name[5:-4])

        # plot figures
        plt.figure(1)
        x1 = data[0, :scan_times]
        y1 = data[1, :scan_times]

        x2 = data[0, scan_times:2 * scan_times]
        y2 = data[1, scan_times:2 * scan_times]

        x3 = data[0, 2 * scan_times:]
        y3 = data[1, 2 * scan_times:]

        ax1 = plt.subplot(131)
        ax2 = plt.subplot(132)
        ax3 = plt.subplot(133)

        ax1.plot(x1, y1)
        ax2.plot(x2, y2)
        ax3.plot(x3, y3)
        plt.show()
Exemplo n.º 22
0
    def run(self):
        self.pre_set()

        pmt_on()
        init_fre = 210
        lock_point = 871.034661
        scan_step = 0.01
        N = 5000

        widgets = ['Progress: ', Percentage(), ' ', Bar('#'), ' ',
                   Timer(), ' ', ETA(), ' ']
        pbar = ProgressBar(widgets=widgets, maxval=10*N).start()

        file_name = 'data\\'+str(lock_point)[5::]+'-'+str(init_fre)+'-' + \
            str(float(init_fre+N*scan_step))+'.csv'
        file = open(file_name, 'w+')
        file.close()

        rescan_file_name = 'data\\rescan' + str(lock_point)[5::]+'-' + \
            str(init_fre)+'-'+str(float(init_fre+N*scan_step))+'.csv'
        rescan_file = open(rescan_file_name, 'w+')
        rescan_file.close()

        manual_rescan_file_name = 'data\\manual_rescan' + str(lock_point)[5::]+'-' + \
            str(init_fre)+'-'+str(float(init_fre+N*scan_step))+'.csv'
        manual_rescan_file = open(manual_rescan_file_name, 'w+')
        manual_rescan_file.close()

        data = np.zeros((4, N))
        data[0, :] = np.linspace(init_fre, init_fre+scan_step*(N-1), N)

        x_data = list(range(100))
        y_data1 = [None]*100
        y_data2 = [None]*100

        """
        plt.figure(1)
        fig1 = plt.subplot(211)
        line1, = fig1.plot(x_data,y_data1)
        show_data1 = 'Effiency:0'
        txt1 = fig1.text(0.8,0.8,show_data1 ,verticalalignment = 'center', \
                                            transform=fig1.transAxes)

        fig2 = plt.subplot(212)
        line2, = fig2.plot(x_data,y_data2)
        show_data2 = 'Count:0'
        txt2 = fig2.text(0.8,0.8,show_data2,verticalalignment = 'center', \
                                            transform=fig2.transAxes)
        """

        for i in trange(N):

            AOM_435 = init_fre+scan_step*i  # - 0.001*N/2

            # wait for 871 to be locked
            while not is_871_locked(lock_point):
                print('Laser is locking...')
                time.sleep(3)
            # change AOM frequency
            code = "conda activate base && python dds.py " + str(AOM_435)
            os.system(code)

            # run detection and save data
            temp = self.run_sequence()

            y_data1 = y_data1[1::]+[temp[0]]
            y_data2 = y_data2[1::]+[temp[1]]

            # print information
            data_item = [AOM_435, temp[0], temp[1], wl_871]
            data[:, i] = data_item

            # write data
            content = str(data[0, i])+','+str(data[1, i]) + \
                ','+str(data[2, i])+','+str(data[3, i])+'\n'

            file_write(file_name, content)
            print_info(data_item)
            pbar.update(10*i+1)
            print('\n')

            # rescan at most n times when effiency is less than 80%
            rescan_time = 0
            temp_data = []

            # there may multi
            # ple ion
            if temp[1] > 800:
                if has_ion() > 1:
                    reload_ion()
                    pmt_on()

            if temp[0] < 70:
                while rescan_time < 5:
                    # check if there is ion
                    ccd_on()
                    time.sleep(0.8)

                    # there is ion try to cool the ion
                    if has_ion():
                        shutter_370.on()
                        time.sleep(0.5)
                        shutter_370.off()
                        pmt_on()
                        time.sleep(0.2)
                        temp1 = self.run_sequence()
                        temp_data.append(list(temp1))
                        rescan_time += 1
                        print('rescan:%d, effiency:%d' %
                              (rescan_time, temp1[0]))
                        print('\n')

                    # there is no ion reload ion
                    else:
                        reload_ion()
                        pmt_on()

            if rescan_time == 5:
                # print('saveing data')
                temp_data = np.array(temp_data, dtype=np.int)
                effiencies = temp_data[:, 0]
                counts = temp_data[:, 1]

                rescan_content = str(AOM_435)
                for k in range(5):
                    rescan_content = rescan_content+','+str(effiencies[k])

                for kk in range(5):
                    rescan_content = rescan_content+','+str(counts[kk])

                rescan_content = rescan_content + '\n'
                file_write(rescan_file_name, rescan_content)

                if effiencies.mean() < 90:
                    file_write(manual_rescan_file_name, rescan_content)

            # update figure
            # line1.set_xdata(data[0,0:i])

        file.close()
        rescan_file.close()
        manual_rescan_file.close()
        save_file(data, __file__[:-3])
        curr.off()