Example #1
0
    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
Example #2
0
    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()