Example #1
0
    def test_missing_hour(self):
        timdif1 = qc.time_difference(2000, 1, 7, None, 2000, 1, 7, 5)
        timdif2 = qc.time_difference(2000, 1, 7, 5, 2000, 1, 7, None)
        timdif3 = qc.time_difference(2000, 1, 7, None, 2000, 1, 7, None)

        self.assertEqual(None, timdif1)
        self.assertEqual(None, timdif2)
        self.assertEqual(None, timdif3)
def calc_alternate_step_speeds(inreps):
    '''
    For an input list of :class:`.MarineReport`, return the time differences, speeds, distance and directions between alternate reports, e.g. 
    1 and 3, 2 and 4, 3 and 5 etc..
    
    :param inreps: Input list of :class:`.MarineReport` in time order
    :type inreps: :class:`.MarineReport`
    :return: time differences, speeds, distance and directions between each consecutive report
    :rtype: list of floats
    
    The routine steps through the input list and calculates various things between alternating data points. Consequently, the 
    first and second values in the list have no corresponding outputs (there's nothing to calculate its difference from). The 
    output is four lists each as long as the input containing time differences, speeds, distances and directions.
    '''

    nobs = len(inreps)
    if nobs > 0:
        speeds = [None]
        time_differences = [None]
        distances = [None]
        ship_directions = [None]
    
        for i in range(1, nobs-1):
                
            tdiff = qc.time_difference(inreps[i-1].year, inreps[i-1].month, 
                                       inreps[i-1].day, inreps[i-1].hour,
                                       inreps[i+1].year, inreps[i+1].month, 
                                       inreps[i+1].day, inreps[i+1].hour)

            shpspd, shpdis, shpdir, side1, side2 = speed1(inreps[i-1].lat, 
                                                          inreps[i+1].lat,
                                                          inreps[i-1].lon, 
                                                          inreps[i+1].lon, 
                                                          tdiff)

            time_differences.append(tdiff)
            speeds.append(shpspd)
            distances.append(shpdis)
            ship_directions.append(shpdir)
    
        time_differences.append(None)
        speeds.append(None)
        distances.append(None)
        ship_directions.append(None)
    else:
        speeds = []
        time_differences = []
        distances = []
        ship_directions = []

    lin = len(inreps)
    assert (len(time_differences) == lin and 
            len(speeds) == lin and 
            len(distances) == lin and 
            len(ship_directions) == lin)

    return time_differences, speeds, distances, ship_directions
Example #3
0
 def test_time_difference_100_years(self):
     timdif = qc.time_difference(1800, 1, 1, 0, 1900, 1, 1, 0)
     self.assertEqual(876576.0, timdif)
Example #4
0
 def test_time_difference_two_years(self):
     timdif = qc.time_difference(2001, 1, 7, 5, 2003, 1, 7, 5)
     self.assertEqual(17520.0, timdif)
Example #5
0
 def test_time_difference_one_year(self):
     timdif = qc.time_difference(2001, 1, 7, 5, 2002, 1, 7, 5)
     self.assertEqual(8760.0, timdif)
Example #6
0
 def test_time_difference_minus_one_day(self):
     timdif = qc.time_difference(2000, 1, 8, 5, 2000, 1, 7, 5)
     self.assertAlmostEqual(-24.0, timdif, delta=0.00001)
Example #7
0
 def test_time_difference_same_time(self):
     timdif = qc.time_difference(2000, 1, 7, 5, 2000, 1, 7, 5)
     self.assertEqual(0.0, timdif)
Example #8
0
 def test_time_difference_one_hour(self):
     timdif = qc.time_difference(2000, 1, 7, 5, 2000, 1, 7, 6)
     self.assertAlmostEqual(1.0, timdif, delta=0.00001)