def flagfile(basename, max_DM=2097.2, freq_l=0.169615, freq_h=0.200335, padding=3): """ This function takes in a text file of bad 0 DM times and writes out one flagged over the correct de-dispersive smearing times, looking for overlaps along the way. There must be a text file named basename.bad with rows indicating bad times for this to work. """ from subprocess import check_call # BWM: originally planned to move this to the load_file function, # but left it incase we JUST want to call flagfile bads = np.genfromtxt(basename+'.bad', comments='#', autostrip=True) # BWM: again because how np.genfromtxt works, if there is only 1 bad line, we get a list, # if there are 2+ bad lines we get a list of lists. So have to check for np.ndarray # instances and change method accordingly. i = 0 # initialize counter for new list flags = [] if any(isinstance(b, np.ndarray) for b in bads): for bad in bads: start = bad[0] - (padding + disp_delay(freq1=freq_l, freq2=freq_h, DM=max_DM)/1000.0) if start < 0: start = 0 stop = bad[1] + padding if len(flags) > 0: if start <= flags[-1][1]: flags[-1][1] = stop else: flags.append([start, stop]) else: flags.append([start, stop]) else: # if there is a no bad regions (defaulted) then don't put any padding in if bads[0] == bads[1]: padding = 0 max_DM = 0 start = bads[0] - (padding + disp_delay(freq1=freq_l, freq2=freq_h, DM=max_DM)/1000.0) if start < 0: start = 0 stop = bads[1] + padding if len(flags) > 0: if start <= flags[-1][1]: flags[-1][1] = stop else: flags.append([start, stop]) else: flags.append([start, stop]) # save new file as basename.flag np.savetxt(basename+'.flag', flags, fmt='%d') # call flag.sh script to creat masked singlepulse file check_call(['flag.sh', basename])
def flagfile(basename, max_DM=2097.2, freq_l=0.169615, freq_h=0.200335, padding=3): """This function takes in a text file of bad 0 DM times and writes out one flagged over the correct de-dispersive smearing times, looking for overlaps along the way. There must be a text file named basename.bad with rows indicating bad times for this to work. """ from subprocess import Popen bads = np.genfromtxt(basename+'.bad') i = 0 # initialize counter for new list flags = [] for bad in bads: start = bad[0] - (padding + disp_delay(freq1=freq_l, freq2=freq_h, DM=max_DM)/1000) if start < 0: start = 0 stop = bad[1] + padding if len(flags) > 0: if start <= flags[-1][1]: flags[-1][1] = stop else: flags.append([start, stop]) else: flags.append([start, stop]) np.savetxt(basename+'.flag', flags, fmt='%d') Popen(['flag.sh', basename]).communicate()[0]