def timing(self, delta_time, s_time, d_time, d_channels): self.delta_time = delta_time #get the sync pulse information # s_time,s_channels=self.read_file(self.file_location) #create two dictionaries: 1 for region one and the other for region 2 self.region1_spectrum = {} self.region2_spectrum = {} for i in range(self.num_channels): self.region1_spectrum[i] = 0 self.region2_spectrum[i] = 0 #convert the lists in np arrays for cython to work with sync_time = np.asarray(s_time) detec_time = np.asarray(d_time) detec_channels = np.asarray(d_channels) sync_num = sync_time.size #loop through the sync pulse times # d_loc=0 # split_loc=0 s = time.time() try: r1, r2 = Timing.channel_timing(sync_time, sync_num, detec_time, detec_channels, delta_time, self.num_channels) except: sync_num -= 1 r1, r2 = Timing.channel_timing(sync_time, sync_num, detec_time, detec_channels, delta_time, self.num_channels) for i in range(len(r1)): self.region1_spectrum[i] = r1[i] self.region2_spectrum[i] = r2[i] print('Process time {:.2f}'.format(time.time() - s)) s = time.time() #convert the sync time and pulse times to np arrays for cython pulse_bins = 100 pulse_timing = np.linspace(0, (s_time[2] - s_time[1]), pulse_bins) pulse_times = Timing.time_point(sync_time, detec_time, sync_num, pulse_timing, pulse_bins) print('Process timing in: {:.2f}s'.format(time.time() - s)) del sync_time del detec_time del s_time del d_time del d_channels return [ self.region1_spectrum, self.region2_spectrum, [pulse_times, pulse_timing] ]