コード例 #1
0
def test_stations_by_risk_level():
    s_id = "test-s-id"
    m_id = "test-m-id"
    label = "some station"
    coord = (-2.0, 4.0)
    trange = (
        0, 1)  # because trange is 0,1 relative range is equal to latest level
    river = "River X"
    town = "My Town"
    s = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    label = "some station 1"
    river = "River Y"
    s1 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    label = "some station 4"
    river = "River A"
    s4 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    label = "some station 5"
    river = "River A"
    s5 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)

    s.latest_level = 0.4
    s1.latest_level = 0.75

    s4.latest_level = 4
    s5.latest_level = 0

    stations = [s, s1, s4, s5]
    correct_order = [s4, s5, s1, s]
    ordered_stations = stations_by_risk_level(stations)

    for i in range(0, len(correct_order)):
        assert correct_order[i] == ordered_stations[i]
コード例 #2
0
def test_level_over_threshold_returns_an_ordered_list_of_stations_that_are_over_the_threshold_level():

    test_tol = 0.5
    s_id = "test-s-id"
    m_id = "test-m-id"
    label = "some station"
    coord = (-2.0, 4.0)
    river = "River X"
    town = "My Town"
    trange = (0, 1)
    s1 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    s2 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    s3 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    s4 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    s5 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    s1.latest_level = 0.9
    s2.latest_level = 0.4
    s3.latest_level = 1.5
    s4.latest_level = -1.0
    s5.latest_level = None
    stations = [s1, s2, s3, s4, s5]

    expected_stations = [(s3, 1.5), (s1, 0.9)]
    actual_stations = stations_level_over_threshold(stations, test_tol)

    assert len(expected_stations) == len(actual_stations)
    for i in range(len(expected_stations)):
        assert expected_stations[i][0] == actual_stations[i][0]
        assert expected_stations[i][1] == round(actual_stations[i][1], 2)
コード例 #3
0
def test_determine_numerical_risk():
    s_id = "test-s-id"
    m_id = "test-m-id"
    label = "some station"
    coord = (-2.0, 4.0)
    trange = (
        0, 1)  # because trange is 0,1 relative range is equal to latest level
    river = "River X"
    town = "My Town"
    s = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    label = "some station 1"
    river = "River Y"
    s1 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    label = "some station 4"
    river = "River A"
    s4 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    label = "some station 5"
    river = "River A"
    s5 = MonitoringStation(s_id, m_id, label, coord, trange, river, town)

    s.latest_level = 0.4
    s1.latest_level = 0.75

    s4.latest_level = 4
    s5.latest_level = 0

    stations = [s, s1, s4, s5]
    determine_numerical_risk(stations)

    assert round(s.flood_risk_factor, 1) == round(0.4 * 0.5 - 0.1, 1)
    assert round(s1.flood_risk_factor, 3) == round(0.75 * 0.5 + (0.75 - 0.5),
                                                   3)
    assert round(s5.flood_risk_factor) == round((4 + 0) / 2 - 0.5)
コード例 #4
0
def test_highest_rel_level_lists_stations_in_order_from_the_highest_to_lowest_relative_water_level():

    N = 3
    s_id = "test-s-id"
    m_id = "test-m-id"
    label = "some station"
    coord = (-2.0, 4.0)
    river = "River X"
    town = "My Town"
    trange1 = (1.1, 3.0)
    trange2 = (-1.2, 2.5)
    trange3 = (-1.67, 3.14)
    trange4 = (0, 1)
    s1 = MonitoringStation(s_id, m_id, label, coord, trange1, river, town)
    s2 = MonitoringStation(s_id, m_id, label, coord, trange2, river, town)
    s3 = MonitoringStation(s_id, m_id, label, coord, trange3, river, town)
    s4 = MonitoringStation(s_id, m_id, label, coord, trange4, river, town)
    s1.latest_level = 4.1
    s2.latest_level = 1.0
    s3.latest_level = 1.9
    s4.latest_level = None
    stations = [s1, s2, s3, s4]

    expected_stations = [s1, s3, s2]
    actual_stations = stations_highest_rel_level(stations, N)

    assert expected_stations == actual_stations
コード例 #5
0
    def test_stations_level_over_threshold(self):
        station1 = MonitoringStation(station_id='test_station_id_1',
                                     measure_id='test_measure_id_1',
                                     label='Test Station 1',
                                     coord=(0., 1.),
                                     typical_range=(0., 1.),
                                     river='test_river_1',
                                     town='test_town_1')
        station2 = MonitoringStation(station_id='test_station_id_2',
                                     measure_id='test_measure_id_2',
                                     label='Test Station 2',
                                     coord=(1., 1.),
                                     typical_range=(0., 1.),
                                     river='test_river_2',
                                     town='test_town_2')
        station3 = MonitoringStation(station_id='test_station_id_3',
                                     measure_id='test_measure_id_3',
                                     label='Test Station 3',
                                     coord=(1., 1.),
                                     typical_range=(0., 1.),
                                     river='test_river_3',
                                     town='test_town_3')

        station1.latest_level = 0.5
        station2.latest_level = 0.6
        station3.latest_level = 0.7
        stations = [station1, station2, station3]

        assert stations_level_over_threshold(stations,
                                             0.5) == [(station3, 0.7),
                                                      (station2, 0.6)]
コード例 #6
0
def test_relative_water_level():

    s1 = MonitoringStation("station_1", "measure_id", "station_1", (-2.0, 4.0),
                           None, "river", "town")
    s2 = MonitoringStation("station_2", "measure_id", "station_2", (-2.0, 4.0),
                           (1.0, 2.0), "river", "town")
    s3 = MonitoringStation("station_3", "measure_id", "station_3", (-2.0, 4.0),
                           (1.0, 2.0), "river", "town")
    s1.latest_level = None
    s2.latest_level = 1.0
    s3.latest_level = 4.0

    #print(s2.typical_range)
    #print(s2.relative_water_level())

    assert s1.relative_water_level() == None
    assert s2.relative_water_level() == 0
    assert s3.relative_water_level() == 3
コード例 #7
0
def test_stations_highest_rel_level():
    stations = build_station_list()
    update_water_levels(stations)
    Aurimas = MonitoringStation(1234, 1234, "Aurimas", (1234, 1234), (0.5, 1),
                                "Sarva", "Vilnius", 1997 - 11 - 12, 1234)
    Aurimas.latest_level = 3
    stations.append(Aurimas)
    x = stations_highest_rel_level(stations, 10)

    assert Aurimas in x
コード例 #8
0
def test_stations_level_over_threshold():
    stations = build_station_list()
    update_water_levels(stations)
    Aurimas = MonitoringStation(1234, 1234, "Aurimas", (1234, 1234), (0.5, 1),
                                "Sarva", "Vilnius", 1997 - 11 - 12, 1234)
    Aurimas.latest_level = 1
    stations.append(Aurimas)
    x = stations_level_over_threshold(stations, 0.9)

    assert (Aurimas, 1) in x
コード例 #9
0
def test_relative_water_level():
    #Create station
    s_id = "test-s-id"
    m_id = "test-m-id"
    label = "some station"
    coord = (-2.0, 4.0)
    trange = (2, 3)
    river = "River X"
    town = "My Town"
    s = MonitoringStation(s_id, m_id, label, coord, trange, river, town)

    assert s.relative_water_level() is None

    s.latest_level = s.typical_range[0]

    assert round(s.relative_water_level()) == 0

    s.latest_level = s.typical_range[1]

    assert round(s.relative_water_level()) == 1
コード例 #10
0
def test_relative_water_level():

    s_id = "test-s-id"
    m_id = "test-m-id"
    label = "some station"
    coord = (-2.0, 4.0)
    river = "River X"
    town = "My Town"
    trange1 = (3, 1)
    s1 = MonitoringStation(s_id, m_id, label, coord, trange1, river, town)
    s1.latest_level = 1

    assert s1.relative_water_level() is None

    trange2 = (1, 3)
    s2 = MonitoringStation(s_id, m_id, label, coord, trange2, river, town)
    s2.latest_level = 1.4
    expected_relative_water_level = 0.2
    actual_relative_water_level = round(s2.relative_water_level(), 2)

    assert expected_relative_water_level == actual_relative_water_level
コード例 #11
0
def test_stations_highest_rel_level():
    s1 = MonitoringStation("station_1", "measure_id", "station_1", (-2.0, 4.0),
                           (0.0, 1.0), "river", "town")
    s2 = MonitoringStation("station_2", "measure_id", "station_2", (-2.0, 4.0),
                           (0.0, 1.0), "river", "town")
    s3 = MonitoringStation("station_3", "measure_id", "station_3", (-2.0, 4.0),
                           (0.0, 1.0), "river", "town")
    s4 = MonitoringStation("station_4", "measure_id", "station_4", (-2.0, 4.0),
                           (0.0, 1.0), "river", "town")

    s1.latest_level = 3.0
    s2.latest_level = 1.0
    s3.latest_level = 4.0
    s4.latest_level = 2.0

    stations = [s1, s2, s3, s4]

    stations_at_risk = stations_highest_rel_level(stations, 4)

    assert stations_at_risk == [('station_3', 4.0), ('station_1', 3.0),
                                ('station_4', 2.0), ('station_2', 1.0)]
コード例 #12
0
def test_create_monitoring_station():

    # Create a station
    s_id = "test-s-id"
    m_id = "test-m-id"
    label = "some station"
    coord = (-2.0, 4.0)
    trange = (1, 3)
    river = "Cam"
    town = "My Town"

    s = MonitoringStation(s_id, m_id, label, coord, trange, river, town)
    s.latest_level = None

    assert s.station_id == s_id
    assert s.measure_id == m_id
    assert s.name == label
    assert s.coord == coord
    assert s.typical_range == trange
    assert s.river == river
    assert s.town == town
    assert s.typical_range_consistent() == False
    assert s.relative_water_level() == None
コード例 #13
0
    def stations_highest_rel_level(self):
        station1 = MonitoringStation(station_id='test_station_id_1',
                                     measure_id='test_measure_id_1',
                                     label='Test Station 1',
                                     coord=(0., 1.),
                                     typical_range=(0., 1.),
                                     river='test_river_1',
                                     town='test_town_1')
        station2 = MonitoringStation(station_id='test_station_id_2',
                                     measure_id='test_measure_id_2',
                                     label='Test Station 2',
                                     coord=(1., 1.),
                                     typical_range=(0., 1.),
                                     river='test_river_2',
                                     town='test_town_2')
        station3 = MonitoringStation(station_id='test_station_id_3',
                                     measure_id='test_measure_id_3',
                                     label='Test Station 3',
                                     coord=(1., 1.),
                                     typical_range=(0., 1.),
                                     river='test_river_3',
                                     town='test_town_3')

        station1.latest_level = 0.5
        station2.latest_level = 0.6
        station3.latest_level = 0.7
        stations = [station1, station2, station3]

        assert stations_highest_rel_level(stations,
                                          3) == [station3, station2, station1]
        assert stations_highest_rel_level(stations, 2) == [station3, station2]
        assert stations_highest_rel_level(stations, 1) == [station3]

        station1.latest_level = 0.5
        station2.latest_level = 0.6
        station3.latest_level = 0.2

        assert stations_highest_rel_level(stations,
                                          3) == [station2, station1, station3]
        assert stations_highest_rel_level(stations, 2) == [station2, station1]
コード例 #14
0
from floodsystem.stationdata import build_station_list
from floodsystem.flood import stations_level_over_threshold
from floodsystem.flood import stations_highest_rel_level
from floodsystem.station import MonitoringStation


   
s1 = MonitoringStation('Bourton Dickler',
                       None,
                       None,
                       (51.874767, -1.740083),
                       (0.068, 0.42),
                       'River Glen',
                       'Surfleet Seas End')

s1.latest_level=0.42

s2 = MonitoringStation('Hello',
                       None,
                       None,
                       (51.874767, -1.740083),
                       (0.068, 0.42),
                       'River Glen',
                       'Surfleet Seas End')

s2.latest_level=-7

stations= [s1,s2]