コード例 #1
0
    def test_sensor_pair_get_secondary(self):
        sensor_1 = Sensor('avhrr-m01', Period((2007, 1, 1), (2008, 1, 1)))
        sensor_2 = Sensor('avhrr-m02', Period((2007, 7, 1), (2008, 7, 1)))

        sensor_pair = SensorPair(sensor_1, sensor_2)
        secondary = sensor_pair.get_secondary()
        self.assertEqual('avhrr-m02', secondary.get_name())
コード例 #2
0
ファイル: period_test.py プロジェクト: bcdev/MMS
 def test_period_greater_than_equal(self):
     period_1 = Period((2007, 1, 1), (2008, 1, 1))
     period_2 = Period((2007, 2, 4), (2007, 5, 17))
     period_3 = Period((2007, 1, 1), (2008, 1, 1))
     self.assertTrue(period_2 >= period_1)
     self.assertTrue(period_3 >= period_1)
     self.assertFalse(period_1 >= period_2)
コード例 #3
0
def plotAccounts(ledger,
                 accountLists,
                 timeframe,
                 xlabel,
                 ylabel,
                 labels,
                 smooth=False,
                 invert=None,
                 totals=False):
    print(accountLists)
    if invert is None:
        invert = [False for _ in accountLists]
    dates = [
        d.start for d in util.subdivideTime(timeframe, Period(config.month))
    ]
    data = [
        getQuery(ledger,
                 accountList,
                 timeframe,
                 Period(config.month),
                 invert=invert,
                 totals=totals)
        for (accountList, invert) in zip(accountLists, invert)
    ]
    if smooth:
        dates = smoothDates(dates, N=smooth)
        data = [smoothData(d, N=smooth) for d in data]
    datePlot(dates, data, xlabel=xlabel, ylabel=ylabel, labels=labels)
コード例 #4
0
ファイル: period_test.py プロジェクト: bcdev/MMS
    def test_period_equality(self):
        period_1 = Period((2007, 1, 1), (2008, 1, 1))
        period_2 = Period((2007, 1, 1), (2008, 1, 1))
        self.assertTrue(period_1 == period_2)

        period_3 = Period((2009, 1, 1), (2010, 1, 1))
        self.assertFalse(period_1 == period_3)
コード例 #5
0
    def test_sensor_pair_equality(self):
        sensor_1 = Sensor('atsr-en', Period((2007, 1, 1), (2008, 1, 1)))
        sensor_2 = Sensor('atsr-e2', Period((2007, 7, 1), (2008, 7, 1)))

        sensor_pair_1 = SensorPair(sensor_1, sensor_2)
        sensor_pair_2 = SensorPair(sensor_2, sensor_1)
        self.assertTrue(sensor_pair_1 == sensor_pair_2)
コード例 #6
0
ファイル: period_test.py プロジェクト: bcdev/MMS
    def test_period_inequality(self):
        period_1 = Period((2007, 1, 1), (2008, 1, 1))
        period_2 = Period((2007, 3, 4), (2007, 5, 17))
        self.assertTrue(period_1 != period_2)

        period_3 = Period((2007, 1, 1), (2008, 1, 1))
        self.assertFalse(period_1 != period_3)
コード例 #7
0
ファイル: period_test.py プロジェクト: bcdev/MMS
 def test_period_less_than_equal(self):
     period_1 = Period((2007, 1, 1), (2008, 1, 1))
     period_2 = Period((2007, 3, 4), (2007, 5, 17))
     period_3 = Period((2007, 1, 1), (2008, 1, 1))
     self.assertTrue(period_1 <= period_2)
     self.assertTrue(period_1 <= period_3)
     self.assertFalse(period_2 <= period_1)
コード例 #8
0
ファイル: workflow_test.py プロジェクト: bcdev/MMS
    def test_get_effective_production_period_one_sensor_with_workflow_period(
            self):
        w = Workflow('test', 2, 'config', Period((1994, 1, 1), (1994, 12, 31)))
        w.add_primary_sensor('avhrr.n11', (1988, 11, 8), (1994, 12, 31))

        period = w._get_effective_production_period()
        self.assertEqual(Period((1994, 1, 1), (1994, 12, 31)), period)
コード例 #9
0
    def test_sensor_ge(self):
        sensor_1 = Sensor('atsr-en', Period((2007, 1, 1), (2008, 1, 1)))
        sensor_2 = Sensor('atsr-e2', Period((2008, 1, 1), (2009, 1, 1)))
        self.assertTrue(sensor_1 >= sensor_2)

        sensor_3 = Sensor('atsr-e2', Period((2009, 1, 1), (2010, 1, 1)))
        self.assertTrue(sensor_2 >= sensor_3)
        self.assertTrue(sensor_3 >= sensor_2)
コード例 #10
0
ファイル: period_test.py プロジェクト: bcdev/MMS
    def test_period_grow_not_intersecting(self):
        period_1 = Period((1980, 1, 1), (1980, 5, 31))
        period_2 = Period((1980, 6, 1), (1980, 11, 1))

        grown = period_1.grow(period_2)

        self.assertFalse(grown)
        self.assertEqual(Period((1980, 1, 1), (1980, 5, 31)), period_1)
コード例 #11
0
    def test_sensor_pair_construction_with_production_period(self):
        sensor_1 = Sensor('avhrr-n12', Period((2007, 1, 1), (2008, 1, 1)))
        sensor_2 = Sensor('avhrr-n13', Period((2007, 7, 1), (2008, 7, 1)))

        sensor_pair = SensorPair(sensor_1, sensor_2,
                                 Period((2007, 8, 1), (2007, 9, 1)))
        self.assertEqual(Period((2007, 8, 1), (2007, 9, 1)),
                         sensor_pair.get_period())
コード例 #12
0
ファイル: period_test.py プロジェクト: bcdev/MMS
    def test_period_grow_inside(self):
        period_1 = Period((1980, 1, 1), (1980, 5, 31))
        period_2 = Period((1980, 2, 1), (1980, 3, 1))

        grown = period_1.grow(period_2)

        self.assertFalse(grown)
        self.assertEqual(Period((1980, 1, 1), (1980, 5, 31)), period_1)
コード例 #13
0
ファイル: workflow_test.py プロジェクト: bcdev/MMS
    def test_get_next_period_overlap_year(self):
        w = Workflow('test', 7)

        date = datetime.date(2001, 12, 26)
        next_period = w._get_next_period(date)
        self.assertEqual(Period((2001, 12, 27), (2001, 12, 31)), next_period)

        next_period = w._get_next_period(next_period.get_end_date())
        self.assertEqual(Period((2002, 1, 1), (2002, 1, 7)), next_period)
コード例 #14
0
    def test_sensor_pair_construction_with_production_period_invalid(self):
        sensor_1 = Sensor('avhrr-n12', Period((2007, 1, 1), (2008, 1, 1)))
        sensor_2 = Sensor('avhrr-n13', Period((2007, 7, 1), (2008, 7, 1)))

        try:
            SensorPair(sensor_1, sensor_2, Period((2000, 8, 1), (2000, 9, 1)))
            self.fail("ValueError exoected")
        except ValueError:
            pass
コード例 #15
0
ファイル: workflow_test.py プロジェクト: bcdev/MMS
    def test_get_next_period_cut_at_month_end(self):
        w = Workflow('test', 10)

        date = datetime.date(2001, 9, 22)
        next_period = w._get_next_period(date)
        self.assertEqual(Period((2001, 9, 23), (2001, 9, 30)), next_period)

        next_period = w._get_next_period(next_period.get_end_date())
        self.assertEqual(Period((2001, 10, 1), (2001, 10, 10)), next_period)
コード例 #16
0
    def test_sensor_pair_ge(self):
        sensor_1 = Sensor('atsr-en', Period((2007, 1, 1), (2008, 1, 1)))
        sensor_2 = Sensor('atsr-e2', Period((2007, 7, 1), (2008, 7, 1)))
        sensor_3 = Sensor('atsr-e1', Period((2007, 10, 1), (2008, 10, 1)))

        sensor_pair_1 = SensorPair(sensor_1, sensor_2)
        sensor_pair_2 = SensorPair(sensor_2, sensor_3)
        sensor_pair_3 = SensorPair(sensor_1, sensor_3)
        self.assertTrue(sensor_pair_1 >= sensor_pair_2)
        self.assertTrue(sensor_pair_1 >= sensor_pair_3)
コード例 #17
0
ファイル: period_test.py プロジェクト: bcdev/MMS
    def test_period_is_intersecting(self):
        period_1 = Period((1999, 7, 14), (2000, 2, 21))
        period_2 = Period((1998, 3, 4), (1999, 10, 2))
        self.assertTrue(period_1.is_intersecting(period_2))
        self.assertTrue(period_2.is_intersecting(period_1))

        period_3 = Period((1999, 7, 14), (2000, 2, 21))
        period_4 = Period((2000, 2, 23), (2001, 1, 12))
        self.assertFalse(period_3.is_intersecting(period_4))
        self.assertFalse(period_4.is_intersecting(period_3))
コード例 #18
0
ファイル: workflow_test.py プロジェクト: bcdev/MMS
    def test_add_get_secondary_sensors_multiple(self):
        w = Workflow('test', 9)
        w.add_secondary_sensor('atsr-e2', '1996-06-01', '1997-01-01')
        w.add_secondary_sensor('atsr-e1', '1992-06-01', '1996-01-01')
        w.add_secondary_sensor('atsr-en', '1997-01-01', '1999-01-01')

        sensors = w._get_secondary_sensors()
        self.assertEqual([
            Sensor('atsr-en', Period((1997, 1, 1), (1999, 1, 1))),
            Sensor('atsr-e2', Period((1996, 6, 1), (1997, 1, 1))),
            Sensor('atsr-e1', Period((1992, 6, 1), (1996, 1, 1)))
        ], sensors)
コード例 #19
0
ファイル: workflow_test.py プロジェクト: bcdev/MMS
    def test_add_get_primary_sensors_multiple(self):
        w = Workflow('test', 5)
        w.add_primary_sensor('atsr-e2', '1995-06-01', '1996-01-01')
        w.add_primary_sensor('atsr-e1', '1991-06-01', '1995-01-01')
        w.add_primary_sensor('atsr-en', '1996-01-01', '1998-01-01')

        sensors = w._get_primary_sensors()
        self.assertEqual([
            Sensor('atsr-en', Period((1996, 1, 1), (1998, 1, 1))),
            Sensor('atsr-e2', Period((1995, 6, 1), (1996, 1, 1))),
            Sensor('atsr-e1', Period((1991, 6, 1), (1995, 1, 1)))
        ], sensors)
コード例 #20
0
    def test_sensor_pair_construction_invalid(self):
        sensor_1 = Sensor('avhrr-n14', Period((2007, 1, 1), (2008, 1, 1)))
        sensor_2 = Sensor('avhrr-n15', Period((2008, 1, 1), (2009, 1, 1)))

        try:
            SensorPair(sensor_1, sensor_2)
            self.fail()
        except exceptions.ValueError:
            pass

        try:
            SensorPair(sensor_2, sensor_1)
        except exceptions.ValueError:
            pass
コード例 #21
0
    def test_period_ctor(self):
        a = Period()
        self.assertEqual(a.start, 1)
        self.assertEqual(a.end, 1)
        self.assertEqual(a.rate, 0)

        b = Period(start=5, end=10, rate=10)
        self.assertEqual(b.start, 5)
        self.assertEqual(b.end, 10)
        self.assertEqual(b.rate, 10)

        with self.assertRaises(AssertionError):
            c = Period(start=0, end=10, rate=10)

        with self.assertRaises(AssertionError):
            c = Period(start=13, end=10, rate=10)

        with self.assertRaises(AssertionError):
            c = Period(start="time", end=10, rate=10)

        with self.assertRaises(AssertionError):
            c = Period(start=1, end=0, rate=10)

        with self.assertRaises(AssertionError):
            c = Period(start=1, end=13, rate=10)

        with self.assertRaises(AssertionError):
            c = Period(start=1, end="time", rate=10)
コード例 #22
0
def parse_html_period_row(tr, crn):
    '''
    Creates a Period from a table row.
    '''

    ptype = get_td_text(tr, 3)
    if len(ptype) < 3:
        ptype = "???"

    # If days are empty, then we do not care about this period.
    days = list(
        map(lambda s: DAY_NUMS[s],
            filter(lambda s: len(s) > 0 and s != " ", get_td_text(tr, 6))))
    if len(days) == 0:
        raise PeriodError("Period days are empty.")

    course_summary = ''.join(get_td_text(tr, 1).split()[1:]).strip()
    if len(course_summary) > 0:
        course_summaries[crn] = course_summary
    else:
        course_summary = course_summaries[crn]

    # 9:00 or 10:00
    # Convert from H:MM to HH:MM
    start_time, end_time = determine_times(get_td_text(tr, 7),
                                           get_td_text(tr, 8))

    location = tr.xpath('td[10]')[0].text_content().strip()

    return Period(crn, course_summary, ptype, days, start_time, end_time,
                  location)
コード例 #23
0
def parse(dataset='data/exam_comp_set1.exam'):
    with open(dataset) as f:
        indices = {}
        lines = []
        for i, line in enumerate(f):
            if line.startswith('['):
                indices[determine_header(line)] = i
            lines.append(line.strip())
        exams = parse_data(lines, indices[EXAMS_HEADER],
                           indices[PERIOD_HEADER],
                           lambda x: Exam(int(x[0]), [int(i) for i in x[1:]]))
        periods = parse_data(
            lines, indices[PERIOD_HEADER], indices[ROOM_HEADER],
            lambda x: Period(x[0], x[1], int(x[2]), int(x[3])))
        rooms = parse_data(lines, indices[ROOM_HEADER],
                           indices[PERIOD_CONSTRAINTS_HEADER],
                           lambda x: Room(int(x[0]), int(x[1])))
        period_constraints = parse_constraint(
            lines, indices[PERIOD_CONSTRAINTS_HEADER],
            indices[ROOM_CONSTRAINTS_HEADER], lambda x: PeriodHardConstraint(
                PeriodHardEnum.fromstring(x[1]), int(x[0]), int(x[2])),
            PeriodHardEnum)
        room_constraints = parse_constraint(
            lines, indices[ROOM_CONSTRAINTS_HEADER],
            indices[INSTITUTIONAL_CONSTRAINTS_HEADER],
            lambda x: RoomHardConstraint(RoomHardEnum.fromstring(x[1]),
                                         int(x[0])), RoomHardEnum)
        institutional_constraints = parse_constraint(
            lines, indices[INSTITUTIONAL_CONSTRAINTS_HEADER], len(lines),
            lambda x: InstitutionalConstraint(
                InstitutionalEnum.fromstring(x[0]), [int(i) for i in x[1:]]),
            InstitutionalEnum)
        return exams, periods, rooms, period_constraints, room_constraints, institutional_constraints
コード例 #24
0
    def test_sensor_pair_construction(self):
        sensor_1 = Sensor('avhrr-n12', Period((2007, 1, 1), (2008, 1, 1)))
        sensor_2 = Sensor('avhrr-n13', Period((2007, 7, 1), (2008, 7, 1)))
        sensor_3 = Sensor('avhrr-n14', Period((2008, 1, 1), (2009, 1, 1)))

        sensor_pair = SensorPair(sensor_1, sensor_2)
        self.assertEqual('avhrr-n12', sensor_pair.get_primary_name())
        self.assertEqual('avhrr-n13', sensor_pair.get_secondary_name())
        self.assertEqual(Period((2007, 7, 1), (2008, 1, 1)),
                         sensor_pair.get_period())

        sensor_pair = SensorPair(sensor_3, sensor_2)
        self.assertEqual('avhrr-n14', sensor_pair.get_primary_name())
        self.assertEqual('avhrr-n13', sensor_pair.get_secondary_name())
        self.assertEqual(Period((2008, 1, 1), (2008, 7, 1)),
                         sensor_pair.get_period())
コード例 #25
0
ファイル: period_test.py プロジェクト: bcdev/MMS
    def test_period_construction(self):
        period_1 = Period((2007, 1, 1), '2008-01-01')
        self.assertEqual(datetime.date(2007, 1, 1).isoformat(), period_1.get_start_date().isoformat())
        self.assertEqual(datetime.date(2008, 1, 1).isoformat(), period_1.get_end_date().isoformat())

        period_2 = Period('2007-02-01', (2008, 1, 2))
        self.assertEqual(datetime.date(2007, 2, 1).isoformat(), period_2.get_start_date().isoformat())
        self.assertEqual(datetime.date(2008, 1, 2).isoformat(), period_2.get_end_date().isoformat())

        period_3 = Period((2007, 3, 3), datetime.date(2007, 3, 5))
        self.assertEqual(datetime.date(2007, 3, 3).isoformat(), period_3.get_start_date().isoformat())
        self.assertEqual(datetime.date(2007, 3, 5).isoformat(), period_3.get_end_date().isoformat())

        period_4 = Period(datetime.date(1979, 12, 31), (1980, 2, 14))
        self.assertEqual(datetime.date(1979, 12, 31).isoformat(), period_4.get_start_date().isoformat())
        self.assertEqual(datetime.date(1980, 2, 14).isoformat(), period_4.get_end_date().isoformat())
コード例 #26
0
ファイル: workflow_test.py プロジェクト: bcdev/MMS
 def test_add_get_primary_sensors_version(self):
     w = Workflow('test', 5)
     w.add_primary_sensor('atsr-e2', '1995-06-01', '1996-01-01',
                          'version_5')
     self.assertEqual([
         Sensor('atsr-e2', Period((1995, 6, 1), (1996, 1, 1)), 'version_5')
     ], w._get_primary_sensors())
コード例 #27
0
def parse_periods(f):
    nr_periods = parse_int_from_header(f.readline())
    periods = {}
    for i in range(nr_periods):
        vals = f.readline().split((','))
        periods[i] = Period(vals[0], vals[1], int(vals[2]), int(vals[3]))
    return periods
コード例 #28
0
ファイル: workflow_test.py プロジェクト: bcdev/MMS
    def test_get_effective_production_period_many_sensors(self):
        w = Workflow('test', 2)
        w.add_primary_sensor('avhrr.n11', (1988, 11, 8), (1994, 12, 31))
        w.add_primary_sensor('avhrr.n12', (1991, 9, 16), (1998, 12, 14))
        w.add_secondary_sensor('avhrr.n10', (1986, 11, 17), (1991, 9, 16))

        period = w._get_effective_production_period()
        self.assertEqual(Period((1988, 11, 8), (1991, 9, 16)), period)
コード例 #29
0
def getBudgetDict(budgetFilename: Path) -> Dict:
    with budgetFilename.open("r") as f:
        budgetDict = yaml.load(f, Loader=yaml.SafeLoader)
        assert config.periodIdentifier in budgetDict
        budgetDict[config.periodIdentifier] = Period(budgetDict[config.periodIdentifier])
        assert config.accountsIdentifier in budgetDict
    for (k, v) in budgetDict[config.accountsIdentifier].items():
        budgetDict[config.accountsIdentifier][k] = Amount(v.replace(config.currency, ""))
    return budgetDict
コード例 #30
0
    def add_primary_sensor(self, name, start_date, end_date, version=''):
        """

        :type name: str
        """
        period = Period(start_date, end_date)
        for sensor in self._get_primary_sensors():
            if sensor.get_name() == name and sensor.get_period().is_intersecting(period):
                raise ValueError("Periods of sensor '" + name + "' must not intersect.")
        if version == '':
            self.primary_sensors.add(Sensor(name, period))
        else:
            self.primary_sensors.add(Sensor(name, period, version))