예제 #1
0
    def end_time(self):
        std_units = Settings.get_solo().standard_time_units

        end_times = self.obs_files.values_list('end_time', 'time_units',
                                               'calendar')

        if not end_times:
            return None

        std_times = [
            (standardise_time_unit(time, unit, std_units, cal), cal)
            for time, unit, cal in end_times
        ]

        none_values_removed = [(std_time, cal)
                               for std_time, cal in std_times
                               if std_time is not None]

        if not none_values_removed:
            return None

        latest_time, calendar = max(none_values_removed, key=lambda x: x[0])

        latest_obj = cf_units.num2date(latest_time, std_units, calendar)

        return latest_obj
예제 #2
0
    def test_same_units(self):
        time_unit = 'days since 2000-01-01'
        time_num = 3.14159

        actual = standardise_time_unit(time_num, time_unit, time_unit,
                                       '360_day')
        assert_almost_equal(actual, time_num)
예제 #3
0
    def start_time(self):
        std_units = Settings.get_solo().standard_time_units

        start_times = self.datafile_set.values_list('start_time', 'time_units',
            'calendar')

        if not start_times:
            return None

        std_times = [
            (standardise_time_unit(time, unit, std_units, cal), cal)
            for time, unit, cal in start_times
        ]

        none_values_removed = [(std_time, cal)
                               for std_time, cal in std_times
                               if std_time is not None]

        if not none_values_removed:
            return None

        earliest_time, calendar = min(none_values_removed, key=lambda x: x[0])

        earliest_obj = cf_units.num2date(earliest_time, std_units, calendar)

        return earliest_obj.strftime('%Y-%m-%d')
예제 #4
0
    def test_different_units(self):
        old_unit = 'days since 2000-01-01'
        new_unit = 'days since 2000-02-01'
        time_num = 33.14159

        actual = standardise_time_unit(time_num, old_unit, new_unit, '360_day')
        expected = 3.14159
        assert_almost_equal(actual, expected, decimal=5)
예제 #5
0
 def test_none(self):
     time_unit = 'days since 2000-01-01'
     self.assertIsNone(
         standardise_time_unit(None, time_unit, time_unit, '360_day'))