def split_filterbank(opts, info): filename = info['filename'] segments = info["segments"] output_location = info["basename"] segment_lengths = map(float, segments.split(',')) for segment_length in segment_lengths: obs_length_req = segment_length * 60.0 input_file = FilReader(filename) number_samples = input_file.header.nsamples obs_time_seconds = input_file.header.tobs if obs_length_req > obs_time_seconds: log.info( "Segment length exceeds observation file length. Skipping the split.." ) continue log.info("calculate acceleration range for %d min" % segment_length) pb = 10.0 * segment_length / (60.0) # 10 percent rule amax = calculate_amax(pb, info["mc"]) info['start_acc'] = -1 * amax info['end_acc'] = amax sampling_time = input_file.header.tsamp NTOREAD = int(obs_length_req / sampling_time) number_of_fils = int(obs_time_seconds / obs_length_req) for i in range(number_of_fils + 1): START = i * NTOREAD path = output_location + '_segment_%d_length_%dmin' % ( i, segment_length) + '.fil' output_name = os.path.basename(path)[:-4] if i == number_of_fils: log.info("Last split") input_file.split(number_samples - NTOREAD, NTOREAD, filename=path) info["output_name"] = output_name info["input_name"] = path call_peasoup(info) log.info("Segmented search done!") else: log.info("Split %d" % i) log.info('START at sample: %d' % START) input_file.split(START, NTOREAD, filename=path) info["output_name"] = output_name info["input_name"] = path call_peasoup(info)