def test_proxy(): mdata = MAGICCInput("HISTRCP_CO2I_EMIS.IN") mdata.read(MAGICC6_DIR) # Get an attribute from the pandas DataFrame plot = mdata.plot assert plot.__module__ == "pandas.plotting._core"
def test_direct_access(): mdata = MAGICCInput("HISTRCP_CO2I_EMIS.IN") mdata.read(MAGICC6_DIR) result = mdata["CO2I_EMIS", "R5LAM", 1983] expected = mdata.df.xs( ("CO2I_EMIS", "SET", "GtC", "R5LAM"), level=["VARIABLE", "TODO", "UNITS", "REGION"], axis=1, drop_level=False, ).loc[[1983]] pd.testing.assert_frame_equal(result, expected) result = mdata["CO2I_EMIS", "R5LAM"] expected = mdata.df.xs( ("CO2I_EMIS", "SET", "GtC", "R5LAM"), level=["VARIABLE", "TODO", "UNITS", "REGION"], axis=1, drop_level=False, ) pd.testing.assert_frame_equal(result, expected) result = mdata["CO2I_EMIS"] expected = mdata.df.xs( ("CO2I_EMIS", "SET", "GtC", slice(None)), level=["VARIABLE", "TODO", "UNITS", "REGION"], axis=1, drop_level=False, ) pd.testing.assert_frame_equal(result, expected) result = mdata[1994] expected = mdata.df.loc[[1994]] pd.testing.assert_frame_equal(result, expected)
def test_lazy_load(): mdata = MAGICCInput("HISTRCP_CO2I_EMIS.IN") # I don't know where the file is yet.. with MAGICC6() as magicc: # and now load the data mdata.read(magicc.run_dir) assert mdata.df is not None
def test_early_call(): mdata = MAGICCInput("HISTRCP_CO2I_EMIS.IN") with pytest.raises(ValueError): mdata["CO2I"]["R5LAM"] with pytest.raises(ValueError): mdata.plot()
def test_load_magicc6_conc(): mdata = MAGICCInput() mdata.read(MAGICC6_DIR, "HISTRCP_CO2_CONC.IN") assert (mdata.df.columns.get_level_values("UNITS") == "ppm").all() assert mdata.df.index.names == ["YEAR"] assert mdata.df.columns.names == ["VARIABLE", "TODO", "UNITS", "REGION"] np.testing.assert_allclose( mdata.df["CO2_CONC", "SET", "ppm", "GLOBAL"][1048], 2.80435733e+002)
def test_MAGICCInput_init(test_filename): if test_filename is None: mdata = MAGICCInput() assert mdata.name is None else: mdata = MAGICCInput(test_filename) assert mdata.name is test_filename assert mdata.df is None assert mdata.metadata == {}
def test_load_magicc7_emis(): mdata = MAGICCInput() mdata.read(MAGICC7_DIR, "HISTSSP_CO2I_EMIS.IN") assert ( mdata.metadata["contact"] == "Zebedee Nicholls, Australian-German Climate and Energy College, University of Melbourne, [email protected]" ) assert (mdata.df.columns.get_level_values("UNITS") == "GtC").all() np.testing.assert_allclose(mdata.df["CO2I", "SET", "GtC", "R6REF"][2013], 0.6638) np.testing.assert_allclose(mdata.df["CO2I", "SET", "GtC", "R6ASIA"][2000], 1.6911)
def test_load_magicc6_emis(): mdata = MAGICCInput() assert mdata.is_loaded == False mdata.read(MAGICC6_DIR, "HISTRCP_CO2I_EMIS.IN") assert mdata.is_loaded == True for key in ["units", "firstdatarow", "dattype"]: with pytest.raises(KeyError): mdata.metadata[key] assert isinstance(mdata.metadata["header"], str) assert isinstance(mdata.df, pd.DataFrame) assert mdata.df.index.names == ["YEAR"] assert mdata.df.columns.names == ["VARIABLE", "TODO", "UNITS", "REGION"] np.testing.assert_allclose( mdata.df["CO2I_EMIS", "SET", "GtC", "R5ASIA"][2000], 1.7682027e+000)
def test_load_prename(): mdata = MAGICCInput("HISTSSP_CO2I_EMIS.IN") mdata.read(MAGICC7_DIR) assert (mdata.df.columns.get_level_values("UNITS") == "GtC").all() mdata.read(MAGICC6_DIR, "HISTRCP_CO2_CONC.IN") assert (mdata.df.columns.get_level_values("UNITS") == "ppm").all() assert not (mdata.df.columns.get_level_values("UNITS") == "GtC").any()
def test_CONC_IN_file_read_write_functionally_identical( starting_fpath, starting_fname, temp_dir): mi_writer = MAGICCInput() mi_writer.read(filepath=starting_fpath, filename=starting_fname) mi_writer.write(join(temp_dir, starting_fname)) mi_written = MAGICCInput() mi_written.read(filepath=temp_dir, filename=starting_fname) nml_written = f90nml.read(join(temp_dir, starting_fname)) mi_initial = MAGICCInput() mi_initial.read(filepath=starting_fpath, filename=starting_fname) nml_initial = f90nml.read(join(temp_dir, starting_fname)) assert mi_written.metadata == mi_initial.metadata pd.testing.assert_frame_equal(mi_written.df, mi_initial.df) assert sorted(nml_written["thisfile_specifications"]) == sorted( nml_initial["thisfile_specifications"])
def test_default_path(): mdata = MAGICCInput("HISTRCP_CO2I_EMIS.IN") mdata.read()
def test_invalid_name(): mdata = MAGICCInput() with pytest.raises(ValueError): mdata.read("/tmp", "MYNONEXISTANT.IN")
def test_no_name(): mdata = MAGICCInput() with pytest.raises(AssertionError): mdata.read("/tmp")