def waiting(self, train, dep_win, arr_win, min_window=1, min_num_p=10): """ Uses algorithm1 on the delay data Returns a tuple of lists (departures, arrivals). Both departures and arrivals are lists of lists containing (delayingtrain,thistrain, algoresult). """ victim = self.data_to_array(train, 'Pl.avg.', 'Fakt.avg.') sig_deps = [] sig_arrs = [] #departures for key in dep_win: delayer = self.data_to_array(key, 'Pl.avg.', 'Fakt.avg.') pairs = train_sorting.sort_out_complete_pairs(delayer, victim) result = train_algos.algorithm1(pairs[0], pairs[1]) if result[0] > min_num_p: if result[1] < result[2] and result[1] > 0: if abs(result[2] - result[1]) >= min_window: sig_deps.append([key, result]) #arrivals for key in arr_win: delayer = self.data_to_array(key, 'Pl.ank.', 'Fakt.ank.') pairs = train_sorting.sort_out_complete_pairs(delayer, victim) result = train_algos.algorithm1(pairs[0], pairs[1]) if result[0] > min_num_p: if result[1] < result[2] and result[1] > 0: if abs(result[2] - result[1]) >= min_window: sig_arrs.append([key, result]) return sig_deps, sig_arrs
def wrt_trains(self, train1, train2, t1_dir='Departure', t2_dir='Departure'): """ Writes data from train1 and train2 to a file named train1_train2.txt """ t1_arr = None t2_arr = None #TODO(Simon): raise errors if str_eq(t1_dir, 'Arrival'): if str_eq(t2_dir, 'Arrival'): t1_arr = self.data_to_array(train1, 'Pl.ank.', 'Fakt.ank.') t2_arr = self.data_to_array(train2, 'Pl.ank.', 'Fakt.ank.') elif str_eq(t2_dir, 'Departure'): t1_arr = self.data_to_array(train1, 'Pl.ank.', 'Fakt.ank.') t2_arr = self.data_to_array(train2, 'Pl.avg.', 'Fakt.avg.') else: #Raise some kind of error pass elif str_eq(t1_dir, 'Departure'): if str_eq(t2_dir, 'Arrival'): t1_arr = self.data_to_array(train1, 'Pl.avg.', 'Fakt.avg.') t2_arr = self.data_to_array(train2, 'Pl.ank.', 'Fakt.ank.') elif str_eq(t2_dir, 'Departure'): t1_arr = self.data_to_array(train1, 'Pl.avg.', 'Fakt.avg.') t2_arr = self.data_to_array(train2, 'Pl.avg.', 'Fakt.avg.') else: #Raise some knd of error pass else: #Raise some kind of error pass #Filter out days with missing values(what does this do?) outdata = train_sorting.sort_out_complete_pairs(t1_arr, t2_arr) outfile = open(train1 + '_' + train2 + '.txt', 'w') outfile.write(train1 + ' ' + train2 + '\n') for i in range(len(outdata[0])): outfile.write(str(outdata[0][i]) + ' ' + str(outdata[1][i]) + '\n') outfile.close()