コード例 #1
0
ファイル: test_timeseries.py プロジェクト: mitterrutzner/ixmp
def test_remove_multiple_geodata(mp):
    scen = TimeSeries(mp, *test_args, version="new", annotation="fo")
    scen.add_geodata(DATA["geo"])
    row = DATA["geo"].loc[[False, True, True]]
    scen.remove_geodata(row)
    scen.commit("adding geodata (references to map layers)")
    assert_geodata(scen.get_geodata(), DATA["geo"].loc[[True, False, False]])
コード例 #2
0
def test_remove_multiple_geodata(mp):
    scen = TimeSeries(mp, *test_args, version='new', annotation='fo')
    scen.add_geodata(DATA['geo'])
    row = DATA['geo'].loc[[False, True, True]]
    scen.remove_geodata(row)
    scen.commit('adding geodata (references to map layers)')
    assert_geodata(scen.get_geodata(), DATA['geo'].loc[[True, False, False]])
コード例 #3
0
def test_get_timeseries_iamc(mp):
    scen = TimeSeries(mp, *test_args)
    obs = scen.timeseries(region='World', variable='Testing', iamc=True)

    exp = DATA['timeseries'].pivot_table(index=['region', 'variable', 'unit'],
                                         columns='year')['value'].reset_index()
    exp['model'] = 'Douglas Adams'
    exp['scenario'] = 'Hitchhiker'

    npt.assert_array_equal(exp[IAMC_IDX], obs[IAMC_IDX])
    npt.assert_array_almost_equal(exp[2010], obs[2010])
コード例 #4
0
ファイル: test_timeseries.py プロジェクト: mitterrutzner/ixmp
def test_get_timeseries_iamc(mp):
    scen = TimeSeries(mp, *test_args)
    obs = scen.timeseries(region="World", variable="Testing", iamc=True)

    exp = (DATA["timeseries"].pivot_table(
        index=["region", "variable",
               "unit"], columns="year")["value"].reset_index())
    exp["model"] = "Douglas Adams"
    exp["scenario"] = "Hitchhiker"

    npt.assert_array_equal(exp[IAMC_IDX], obs[IAMC_IDX])
    npt.assert_array_almost_equal(exp[2010], obs[2010])
コード例 #5
0
ファイル: data.py プロジェクト: iiasa/ixmp
def populate_test_platform(platform):
    """Populate `platform` with data for testing.

    Many of the tests in :mod:`ixmp.tests.core` depend on this set of data.

    The data consist of:

    - 3 versions of the Dantzig cannery/transport Scenario.

      - Version 2 is the default.
      - All have :obj:`HIST_DF` and :obj:`TS_DF` as time-series data.

    - 1 version of a TimeSeries with model name 'Douglas Adams' and scenario
      name 'Hitchhiker', containing 2 values.
    """
    s1 = make_dantzig(platform, solve=True, quiet=True)

    s2 = s1.clone()
    s2.set_as_default()

    s2.clone()

    s4 = TimeSeries(platform, **models["h2g2"], version="new")
    s4.add_timeseries(
        pd.DataFrame.from_dict(
            dict(
                region="World",
                variable="Testing",
                unit="???",
                year=[2010, 2020],
                value=[23.7, 23.8],
            )))
    s4.commit("")
    s4.set_as_default()
コード例 #6
0
ファイル: test_base.py プロジェクト: iiasa/ixmp
    def test_cache_invalidate(self, test_mp):
        backend = test_mp._backend

        ts = TimeSeries(test_mp, model="foo", scenario="bar", version="new")

        backend.cache_invalidate(ts, "par", "baz",
                                 dict(x=["x1", "x2"], y=["y1", "y2"]))
コード例 #7
0
ファイル: test_timeseries.py プロジェクト: mitterrutzner/ixmp
def test_new_timeseries_error(test_mp):
    scen = TimeSeries(test_mp, *test_args, version="new", annotation="fo")
    df = {"year": [2010, 2020], "value": [23.5, 23.6]}
    df = pd.DataFrame.from_dict(df)
    df["region"] = "World"
    df["variable"] = "Testing"
    # column `unit` is missing
    pytest.raises(ValueError, scen.add_timeseries, df)
コード例 #8
0
def test_new_timeseries_error(test_mp):
    scen = TimeSeries(test_mp, *test_args, version='new', annotation='fo')
    df = {'year': [2010, 2020], 'value': [23.5, 23.6]}
    df = pd.DataFrame.from_dict(df)
    df['region'] = 'World'
    df['variable'] = 'Testing'
    # column `unit` is missing
    pytest.raises(ValueError, scen.add_timeseries, df)
コード例 #9
0
ファイル: test_timeseries.py プロジェクト: OFR-IIASA/ixmp
    def test_new_timeseries_as_iamc(self, test_mp):
        # TODO rescue use of subannual= here

        scen = TimeSeries(test_mp,
                          *models["h2g2"],
                          version="new",
                          annotation="fo")
        scen.add_timeseries(DATA["timeseries"].pivot_table(values="value",
                                                           index=IDX_COLS))
        scen.commit("importing a testing timeseries")

        # compare returned dataframe - default behaviour set to 'auto'
        assert_timeseries(scen)
        # test behaviour of 'auto' explicitly
        assert_timeseries(scen, subannual="auto")
        # test behaviour of 'False' explicitly
        assert_timeseries(scen, subannual=False)

        # test behaviour of 'True' explicitly
        exp = (DATA["timeseries"].pivot_table(values="value",
                                              index=IDX_COLS).reset_index())
        exp["model"] = "Douglas Adams"
        exp["scenario"] = "Hitchhiker"
        exp["subannual"] = "Year"
        assert_timeseries(scen,
                          exp=exp,
                          cols=COLS_WITH_SUBANNUAL,
                          subannual=True)
コード例 #10
0
def test_default(mp, ts):
    # NB this is required before the is_default method can be used
    # FIXME should return False regardless
    ts.commit('')

    # Temporary TimeSeries is has not been set_as_default
    assert not ts.is_default()

    ts.set_as_default()
    assert ts.is_default()

    # NB TimeSeries cannot be cloned, so create a new one with the same
    #    name
    ts2 = TimeSeries(mp, ts.model, ts.scenario, version='new')
    ts2.commit('')
    ts2.set_as_default()

    assert ts2.is_default()
    # Original TimeSeries is no longer default
    assert not ts.is_default()
コード例 #11
0
def test_new_timeseries_as_iamc(test_mp):
    scen = TimeSeries(test_mp, *test_args, version='new', annotation='fo')
    scen.add_timeseries(DATA['timeseries'].pivot_table(values='value',
                                                       index=IDX_COLS))
    scen.commit('importing a testing timeseries')

    # compare returned dataframe - default behaviour set to 'auto'
    assert_timeseries(scen)
    # test behaviour of 'auto' explicitly
    assert_timeseries(scen, subannual='auto')
    # test behaviour of 'False' explicitly
    assert_timeseries(scen, subannual=False)

    # test behaviour of 'True' explicitly
    exp = (DATA['timeseries'].pivot_table(values='value',
                                          index=IDX_COLS).reset_index())
    exp['model'] = 'Douglas Adams'
    exp['scenario'] = 'Hitchhiker'
    exp['subannual'] = 'Year'
    assert_timeseries(scen, exp=exp, cols=COLS_WITH_SUBANNUAL, subannual=True)
コード例 #12
0
ファイル: test_timeseries.py プロジェクト: OFR-IIASA/ixmp
 def test_init2(self, test_mp):
     # Scheme argument
     with pytest.raises(TypeError, match="'scheme' argument"):
         TimeSeries(test_mp, "m", "s", scheme="scheme")
コード例 #13
0
def test_fetch_empty_geodata(mp):
    scen = TimeSeries(mp, *test_args, version='new', annotation='fo')
    empty = scen.get_geodata()
    assert_geodata(empty, DATA['geo'].loc[[False, False, False]])
コード例 #14
0
def test_new_subannual_timeseries_as_iamc(mp):
    mp.add_timeslice('Summer', 'Season', 1.0 / 4)
    scen = TimeSeries(mp, *test_args, version='new', annotation='fo')
    timeseries = DATA['timeseries'].pivot_table(values='value', index=IDX_COLS)
    scen.add_timeseries(timeseries)
    scen.commit('adding yearly data')

    # add subannual timeseries data
    ts_summer = timeseries.copy()
    ts_summer['subannual'] = 'Summer'
    scen.check_out()
    scen.add_timeseries(ts_summer)
    scen.commit('adding subannual data')

    # generate expected dataframe+
    ts_year = timeseries.copy()
    ts_year['subannual'] = 'Year'
    exp = pd.concat([ts_year, ts_summer]).reset_index()
    exp['model'] = 'Douglas Adams'
    exp['scenario'] = 'Hitchhiker'

    # compare returned dataframe - default behaviour set to 'auto'
    assert_timeseries(scen,
                      exp=exp[COLS_WITH_SUBANNUAL],
                      cols=COLS_WITH_SUBANNUAL)
    # test behaviour of 'auto' explicitly
    assert_timeseries(scen,
                      exp=exp[COLS_WITH_SUBANNUAL],
                      cols=COLS_WITH_SUBANNUAL,
                      subannual='auto')
    # test behaviour of 'True' explicitly
    assert_timeseries(scen,
                      exp=exp[COLS_WITH_SUBANNUAL],
                      cols=COLS_WITH_SUBANNUAL,
                      subannual=True)
    # setting False raises an error because subannual data exists
    pytest.raises(ValueError, scen.timeseries, subannual=False)
コード例 #15
0
def test_timeseries_edit(mp):
    scen = TimeSeries(mp, *test_args)
    df = {
        'region': ['World'] * 2,
        'variable': ['Testing'] * 2,
        'unit': ['???', '???'],
        'year': [2010, 2020],
        'value': [23.7, 23.8]
    }
    exp = pd.DataFrame.from_dict(df)
    obs = scen.timeseries()
    npt.assert_array_equal(exp[IDX_COLS], obs[IDX_COLS])
    npt.assert_array_almost_equal(exp['value'], obs['value'])

    scen.check_out(timeseries_only=True)
    df = {
        'region': ['World'] * 2,
        'variable': ['Testing'] * 2,
        'unit': ['???', '???'],
        'year': [2010, 2020],
        'value': [23.7, 23.8]
    }
    df = pd.DataFrame.from_dict(df)
    scen.add_timeseries(df)
    scen.commit('testing of editing timeseries (same years)')

    scen.check_out(timeseries_only=True)
    df = {
        'region': ['World'] * 3,
        'variable': ['Testing', 'Testing', 'Testing2'],
        'unit': ['???', '???', '???'],
        'year': [2020, 2030, 2030],
        'value': [24.8, 24.9, 25.1]
    }
    df = pd.DataFrame.from_dict(df)
    scen.add_timeseries(df)
    scen.commit('testing of editing timeseries (other years)')
    mp.close_db()

    mp.open_db()
    scen = TimeSeries(mp, *test_args)
    obs = scen.timeseries().sort_values(by=['year'])
    df = df.append(exp.loc[0]).sort_values(by=['year'])
    npt.assert_array_equal(df[IDX_COLS], obs[IDX_COLS])
    npt.assert_array_almost_equal(df['value'], obs['value'])
コード例 #16
0
ファイル: test_timeseries.py プロジェクト: mitterrutzner/ixmp
def test_new_timeseries_as_year_value(test_mp):
    scen = TimeSeries(test_mp, *test_args, version="new", annotation="fo")
    scen.add_timeseries(DATA["timeseries"])
    scen.commit("importing a testing timeseries")
    assert_timeseries(scen)
コード例 #17
0
def test_new_timeseries_as_year_value(test_mp):
    scen = TimeSeries(test_mp, *test_args, version='new', annotation='fo')
    scen.add_timeseries(DATA['timeseries'])
    scen.commit('importing a testing timeseries')
    assert_timeseries(scen)
コード例 #18
0
def test_get_timeseries(mp):
    scen = TimeSeries(mp, *test_args)
    assert_timeseries(scen)
コード例 #19
0
def prepare_scenario(mp, args_all):
    scen = TimeSeries(mp, *args_all, version='new', annotation='nk')
    scen.add_timeseries(DATA[2010])
    scen.commit('updating timeseries in IAMC format')
    scen = TimeSeries(mp, *args_all)
    return scen
コード例 #20
0
ファイル: test_timeseries.py プロジェクト: mitterrutzner/ixmp
def test_timeseries_edit(mp):
    scen = TimeSeries(mp, *test_args)
    df = {
        "region": ["World"] * 2,
        "variable": ["Testing"] * 2,
        "unit": ["???", "???"],
        "year": [2010, 2020],
        "value": [23.7, 23.8],
    }
    exp = pd.DataFrame.from_dict(df)
    obs = scen.timeseries()
    npt.assert_array_equal(exp[IDX_COLS], obs[IDX_COLS])
    npt.assert_array_almost_equal(exp["value"], obs["value"])

    scen.check_out(timeseries_only=True)
    df = {
        "region": ["World"] * 2,
        "variable": ["Testing"] * 2,
        "unit": ["???", "???"],
        "year": [2010, 2020],
        "value": [23.7, 23.8],
    }
    df = pd.DataFrame.from_dict(df)
    scen.add_timeseries(df)
    scen.commit("testing of editing timeseries (same years)")

    scen.check_out(timeseries_only=True)
    df = {
        "region": ["World"] * 3,
        "variable": ["Testing", "Testing", "Testing2"],
        "unit": ["???", "???", "???"],
        "year": [2020, 2030, 2030],
        "value": [24.8, 24.9, 25.1],
    }
    df = pd.DataFrame.from_dict(df)
    scen.add_timeseries(df)
    scen.commit("testing of editing timeseries (other years)")
    mp.close_db()

    mp.open_db()
    scen = TimeSeries(mp, *test_args)
    obs = scen.timeseries().sort_values(by=["year"])
    df = df.append(exp.loc[0]).sort_values(by=["year"])
    npt.assert_array_equal(df[IDX_COLS], obs[IDX_COLS])
    npt.assert_array_almost_equal(df["value"], obs["value"])
コード例 #21
0
ファイル: test_timeseries.py プロジェクト: OFR-IIASA/ixmp
 def test_fetch_empty_geodata(self, mp):
     scen = TimeSeries(mp, *models["h2g2"], version="new", annotation="fo")
     empty = scen.get_geodata()
     assert_geodata(empty, DATA["geo"].loc[[False, False, False]])
コード例 #22
0
ファイル: test_timeseries.py プロジェクト: mitterrutzner/ixmp
def test_fetch_empty_geodata(mp):
    scen = TimeSeries(mp, *test_args, version="new", annotation="fo")
    empty = scen.get_geodata()
    assert_geodata(empty, DATA["geo"].loc[[False, False, False]])
コード例 #23
0
ファイル: test_timeseries.py プロジェクト: mitterrutzner/ixmp
def test_new_subannual_timeseries_as_iamc(mp):
    mp.add_timeslice("Summer", "Season", 1.0 / 4)
    scen = TimeSeries(mp, *test_args, version="new", annotation="fo")
    timeseries = DATA["timeseries"].pivot_table(values="value", index=IDX_COLS)
    scen.add_timeseries(timeseries)
    scen.commit("adding yearly data")

    # add subannual timeseries data
    ts_summer = timeseries.copy()
    ts_summer["subannual"] = "Summer"
    scen.check_out()
    scen.add_timeseries(ts_summer)
    scen.commit("adding subannual data")

    # generate expected dataframe+
    ts_year = timeseries.copy()
    ts_year["subannual"] = "Year"
    exp = pd.concat([ts_year, ts_summer]).reset_index()
    exp["model"] = "Douglas Adams"
    exp["scenario"] = "Hitchhiker"

    # compare returned dataframe - default behaviour set to 'auto'
    assert_timeseries(scen,
                      exp=exp[COLS_WITH_SUBANNUAL],
                      cols=COLS_WITH_SUBANNUAL)
    # test behaviour of 'auto' explicitly
    assert_timeseries(scen,
                      exp=exp[COLS_WITH_SUBANNUAL],
                      cols=COLS_WITH_SUBANNUAL,
                      subannual="auto")
    # test behaviour of 'True' explicitly
    assert_timeseries(scen,
                      exp=exp[COLS_WITH_SUBANNUAL],
                      cols=COLS_WITH_SUBANNUAL,
                      subannual=True)
    # setting False raises an error because subannual data exists
    pytest.raises(ValueError, scen.timeseries, subannual=False)