Esempio n. 1
0
def climate_model(fossil_gtc_carbon):
    data = scenarios['RCP26']['WORLD']
    copy_row = data.loc[[2007]]

    for index, row in data.iterrows():
        if index > 2007:
            data = data.drop(index)

    for i in range(2008, 2101):
        temp = copy.deepcopy(copy_row)
        for index, row in temp.iterrows():
            data.loc[i] = row.tolist()
            break
    
    # All future years have this amount of CO2
    for i in range(2019, 2101):
        data.at[i, "FossilCO2"] = float(fossil_gtc_carbon)

    # Funnel into model and parse results
    results = pymagicc.run(data)
    results_df = results['SURFACE_TEMP']['GLOBAL']
    ret_json = {}
    ret_json['start_year'] = str(results_df.index[0])
    ret_json['global_temps'] = list(results_df.values)
    results_df = results['SURFACE_TEMP']['NH-LAND']
    # Specific data used by the sea model
    ret_json['NH_temps'] = list(results_df.values)
    return ret_json
Esempio n. 2
0
def diagnose_tcr_tcre(direction, **kwargs):
    postcrtest = {
        'file_co2_conc': '1PCTCO2_CO2_CONC.IN',
        'testscen': '1pctCO2'
    }
    negtcrtest = {'file_co2_conc': onepctcdr, 'testscen': '1pctCO2-cdr'}

    if 'pos' in direction:
        selectedtst = postcrtest
    elif 'neg' in direction:
        selectedtst = negtcrtest

    print('Calculating TCR & TCRE from {}.'.format(selectedtst['testscen']))

    timeseries = pymagicc.run(scenario=None,
                              only=[
                                  'Atmospheric Concentrations|CO2',
                                  'INVERSEEMIS',
                                  'Radiative Forcing',
                                  'Surface Temperature',
                              ],
                              **kwargs,
                              file_co2_conc=selectedtst['file_co2_conc'])
    # drop all the irrelevant inverse emissions
    timeseries = timeseries.filter(variable='Inverse Emissions*',
                                   level=1,
                                   keep=False)
    timeseries['scenario'] = selectedtst['testscen']
    tcr, tcre = get_tcr_tcre_from_diagnosis_results(timeseries)

    return {'tcr': tcr, 'tcre': tcre, 'timeseries': timeseries}
Esempio n. 3
0
def diagnose_ecs(direction, **kwargs):
    posecstest = {
        'file_co2_conc': 'ABRUPT2XCO2_CO2_CONC.IN',
        'testscen': 'abrupt-2xCO2'
    }
    negecstest = {'file_co2_conc': abrupt0p5, 'testscen': 'abrupt-0p5xCO2'}

    if 'pos' in direction:
        selectedtst = posecstest
    elif 'neg' in direction:
        selectedtst = negecstest

    print('Calculating ECS from {}.'.format(selectedtst['testscen']))

    timeseries = pymagicc.run(scenario=None,
                              only=[
                                  'Atmospheric Concentrations|CO2',
                                  'INVERSEEMIS',
                                  'Radiative Forcing',
                                  'Surface Temperature',
                              ],
                              **kwargs,
                              file_co2_conc=selectedtst['file_co2_conc'])
    # drop all the irrelevant inverse emissions
    timeseries = timeseries.filter(variable='Inverse Emissions*',
                                   level=1,
                                   keep=False)
    timeseries['scenario'] = selectedtst['testscen']

    ecs = get_ecs_from_diagnosis_results(timeseries)
    return {'ecs': ecs, 'timeseries': timeseries}
Esempio n. 4
0
def test_set_years():
    results, conf = run(rcp26,
                        return_config=True,
                        startyear=1900,
                        endyear=2000)
    assert conf["years"]["startyear"] == 1900
    assert conf["years"]["endyear"] == 2000
    assert results["SURFACE_TEMP"].GLOBAL.index[0] == 1900
    assert results["SURFACE_TEMP"].GLOBAL.index[-1] == 2000
Esempio n. 5
0
def test_run_rcp85(package):
    if package.version == 7:
        pytest.skip(magicc7_not_included_msg)
    results = run(rcp85, magicc_version=package.version)

    result_temp = (results.filter(variable="Surface Temperature",
                                  year=2100,
                                  region="World").timeseries().squeeze())
    np.testing.assert_allclose(result_temp, 4.676012, rtol=1e-5)
    do_basic_run_checks(results)
Esempio n. 6
0
def test_run_rcp60(package):
    if package.version == 7:
        pytest.skip(MAGICC7_NOT_INCLUDED_MSG)
    results = run(rcp60, magicc_version=package.version)

    result_temp = (results.filter(variable="Surface Temperature",
                                  year=2100,
                                  region="World").timeseries().squeeze())
    np.testing.assert_allclose(result_temp, 3.102484, rtol=1e-5)
    do_basic_run_checks(results)
Esempio n. 7
0
def test_run_rcp85():
    results = run(rcp85)
    surface_temp = pd.read_csv(os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "./original_data/RCP85/DAT_SURFACE_TEMP.OUT"),
                               delim_whitespace=True,
                               skiprows=19,
                               index_col=0)

    assert surface_temp.GLOBAL.equals(results["SURFACE_TEMP"].GLOBAL)
Esempio n. 8
0
def test_parameters(package):
    results = run(
        rcp26,
        magicc_version=package.version,
        out_parameters=True,
        core_climatesensitivity=1.5,
    )
    assert results.metadata["parameters"]["allcfgs"][
        "core_climatesensitivity"] == 1.5
    # Test removal of newlines in PARAMETERS.out
    assert "H\nFC134a" not in results.metadata["parameters"]["allcfgs"][
        "fgas_names"]
Esempio n. 9
0
def test_set_years(package):
    results = run(
        rcp26,
        magicc_version=package.version,
        out_parameters=True,
        startyear=1900,
        endyear=2000,
    )
    assert results.metadata["parameters"]["years"]["startyear"] == 1900
    assert results.metadata["parameters"]["years"]["endyear"] == 2000
    assert results["time"].min().year == 1900
    assert results["time"].max().year == 2000
Esempio n. 10
0
def test_default_config():
    _, conf = run(rcp26, return_config=True)
    assert conf["allcfgs"]["core_climatesensitivity"] == 3
    assert conf["years"]["startyear"] == 1765
Esempio n. 11
0
def test_parameters():
    _, params = run(rcp26, return_config=True, core_climatesensitivity=1.5)
    assert params['allcfgs']["core_climatesensitivity"] == 1.5
    # Test removal of newlines in PARAMETERS.out
    assert 'H\nFC134a' not in params['allcfgs']["fgas_names"]
Esempio n. 12
0
def test_out_carboncycle():
    out = run(rcp26, out_carboncycle=1)
    assert "CARBONCYCLE" in out.keys()
Esempio n. 13
0
import os
import matplotlib.pyplot as plt
import pymagicc

from pymagicc import scenarios

plt.style.use("ggplot")
plt.rcParams["figure.figsize"] = 10, 5
plt.rcParams["font.family"] = "serif"
plt.rcParams["font.size"] = 12


path = os.path.join(os.path.dirname(__file__),
                    './example-plot.png')

for name, scen in sorted(scenarios.items(), reverse=True):
    results, params = pymagicc.run(scen, return_config=True)
    temp = (results["SURFACE_TEMP"].GLOBAL.loc[1850:] -
            results["SURFACE_TEMP"].GLOBAL.loc[1850:1900].mean())
    temp.plot(label=name)

plt.legend()
plt.title("Global Mean Temperature Projection")
plt.ylabel(u"°C over pre-industrial (1850-1900 mean)")
plt.legend(loc="best")

plt.savefig(path, dpi=96)
Esempio n. 14
0
def test_set_years():
    results = run(rcp26, out_parameters=True, startyear=1900, endyear=2000)
    assert results.metadata["parameters"]["years"]["startyear"] == 1900
    assert results.metadata["parameters"]["years"]["endyear"] == 2000
    assert results["time"].min().year == 1900
    assert results["time"].max().year == 2000
Esempio n. 15
0

plt.style.use("ggplot")
plt.rcParams["figure.figsize"] = 10, 5
plt.rcParams["font.family"] = "serif"
plt.rcParams["font.size"] = 12


output_path = os.path.join(
    os.path.dirname(__file__),
    './example-plot.png'
)

results = []
for scen in rcps.groupby("scenario"):
    results_scen = pymagicc.run(scen)
    results.append(results_scen)

results = scmdata.run_append(results)

temperature_rel_to_1850_1900 = (
    results
    .filter(variable="Surface Temperature", region="World")
    .relative_to_ref_period_mean(year=range(1850, 1900 + 1))
)

temperature_rel_to_1850_1900.lineplot()
plt.title("Global Mean Temperature Projection")
plt.ylabel("°C over pre-industrial (1850-1900 mean)")

plt.savefig(output_path, dpi=96)
Esempio n. 16
0
import os
import matplotlib.pyplot as plt

import pymagicc
from pymagicc import scenarios

plt.style.use("ggplot")
plt.rcParams["figure.figsize"] = 10, 5
plt.rcParams["font.family"] = "serif"
plt.rcParams["font.size"] = 12

output_path = os.path.join(os.path.dirname(__file__), './example-plot.png')

for name, scen in scenarios.items():
    results = pymagicc.run(scen)
    results_df = results.df
    results_df.set_index("time", inplace=True)

    global_temp_time_rows = ((results_df.variable == "Surface Temperature")
                             & (results_df.region == "World"))

    temp = (results_df.value[global_temp_time_rows].loc[1850:] -
            results_df.value[global_temp_time_rows].loc[1850:1900].mean())
    temp.plot(label=name)

plt.legend()
plt.title("Global Mean Temperature Projection")
plt.ylabel("°C over pre-industrial (1850-1900 mean)")
plt.legend(loc="best")

plt.savefig(output_path, dpi=96)
Esempio n. 17
0
def test_default_config():
    results = run(rcp26, out_parameters=True)
    assert results.metadata["parameters"]["allcfgs"][
        "core_climatesensitivity"] == 3
    assert results.metadata["parameters"]["years"]["startyear"] == 1765
Esempio n. 18
0
import pymagicc
from pathlib import Path

root = Path(__file__).parents[1]

_, conf = pymagicc.run(pymagicc.rcp45, return_config=True)

conf["allcfgs"]["rundate"] = "No date specified."

conf.write(str(root / "pymagicc/default_config.nml"), force=True)