def test_validate_directional(): # test that validation works as expected with directional data assert validate(df.rename(region={'Europe': 'Austria>Germany'})) assert not validate(df.rename(region={'Europe': 'Austria>foo'})) # test that directional data with more than one `>` fails assert not validate(df.rename(region={'Europe': 'Austria>Italy>France'}))
def test_validate_subannual_datetime_as_subannual(): # test that validation works as expected with continuous time as subannual assert validate(IamDataFrame(TEST_DF, subannual='01-01 00:00+01:00')) # assert that missing timezone fails assert not validate(IamDataFrame(TEST_DF, subannual='01-01 00:00')) # assert that wrong timezone fails assert not validate(IamDataFrame(TEST_DF, subannual='01-01 00:00+02:00')) # assert that value not castable to datetime fails assert not validate(IamDataFrame(TEST_DF, subannual='01-32 00:00+01:00'))
def _generate_yearly_values(input_file): data_wrapper = dr.load_gdx_file(input_file, DEF_GAMS_DIR) dt.generate_load_demand_series(data_wrapper) dt.generate_primary_energy_values(data_wrapper) dt.generate_final_energy_values(data_wrapper) dt.generate_capacity_values(data_wrapper) dt.generate_transport_capacity_values(data_wrapper) dt.generate_storage_capacity_values(data_wrapper) dt.generate_emissions_values(data_wrapper) # dt.generate_additional_emissions_values(data_wrapper) - currently not in nomenclature dt.generate_secondary_energy(data_wrapper) dt.generate_exogenous_costs(data_wrapper) dt.generate_co2_prices(data_wrapper) data_wrapper.generate_idataframe(True) nomenclature.validate(data_wrapper.idataframe) return data_wrapper
def test_validate_time_entry(): df_sub = TEST_DF.rename(columns={'year': 'subannual'}).\ replace([2005, 2010], value=['2005-06-17 00:00+01:00', '2010-07-21 12:00+01:00']) assert validate(IamDataFrame(df_sub))
def test_validate_subannual_months(): # test that validation works as expected with months # (and representative timeslices generally) assert validate(IamDataFrame(TEST_DF, subannual='January')) assert not validate(IamDataFrame(TEST_DF, subannual='foo'))
def test_validate_fail(): # test that simple validation fails on variable and region dimension assert not (validate(df.rename(variable={'Primary Energy': 'foo'}))) assert not (validate(df.rename(region={'Europe': 'foo'})))
def test_validate(): # test simple validation assert validate(df)
def test_validate_unit_entry(): assert not (validate(df.rename(unit={'EJ/yr': 'MWh'})))
def _generate_load_factors(input_file): data_wrapper_series = dr.load_gdx_file(input_file, DEF_GAMS_DIR) dt.generate_load_factors(data_wrapper_series) data_wrapper_series.generate_idataframe_renewable_series() nomenclature.validate(data_wrapper_series.idataframe) return data_wrapper_series
import pyam # Read SCOPE output file TEST_DF = pd.read_excel("scope_sd_20201120_test_data.xlsx") # Create dictionary and convert regions with iso_mapping into IAMC format TEST_DICT = TEST_DF.to_dict() DICT_REGIO = {} DICT_REGIO["Region"] = {} for i in range(len(TEST_DICT["Region"].keys())): try: DICT_REGIO["Region"][i] = nc.iso_mapping[TEST_DICT["Region"][i]] except KeyError: DICT_REGIO["Region"][i] = TEST_DICT["Region"][i] NEW_DICT = {} NEW_DICT["Model"] = TEST_DICT["Model"] NEW_DICT["Scenario"] = TEST_DICT["Scenario"] NEW_DICT["Region"] = DICT_REGIO["Region"] NEW_DICT["Variable"] = TEST_DICT["Variable"] NEW_DICT["Unit"] = TEST_DICT["Unit"] NEW_DICT["Subannual"] = TEST_DICT["Subannual"] NEW_DICT[2050] = TEST_DICT[2050] NEW_DF = pd.DataFrame.from_dict(NEW_DICT) # Save dict into new excel file NEW_DF.to_excel("scope_sd_20201120_test_data_validated.xlsx") # Check the created excel file with the openENTRANCE nomenclature nc.validate("scope_sd_20201120_test_data_validated.xlsx")
#delete lines with 0 units sheet = sheet[sheet.NumberUnits > 0] # converting region names from plan4eu to OpenEntrance sheet = sheet.replace({"Zone": plan4euRegDict}) sheet = sheet.replace({"Name": vardict['technos']}) iamc_region = sheet['Zone'] iamc_techno = sheet['Name'] for name_plan4eu in vardict[key].keys(): iamc_value = sheet[name_plan4eu] iamc_unit = vardict[key][name_plan4eu]['unit'] iamc_variable = vardict[key][name_plan4eu]['variable'] + iamc_techno #conversion needed? if name_plan4eu in vardict['conversion'].keys(): if vardict['conversion'][name_plan4eu] == 'DivideByMaxPower': iamc_value = iamc_value / sheet['MaxPower'] iamc = pd.DataFrame({ 'Model': cfg['model'], 'Scenario': cfg['scenario'], 'Region': iamc_region, 'Variable': iamc_variable, 'Unit': iamc_unit, '2050': iamc_value }) iamc.to_csv(outputfile, index=False, mode='a', header=False) nc.validate(outputfile)