Source code for openscm_runner.adapters.ciceroscm_py_adapter.make_scenario_data

"""
Module with functionality to make emission input files
"""

# TODO: optimise to speed up reading and writing

import logging
import os

import pandas as pd

from ..utils.cicero_utils.make_scenario_common import COMMONSFILEWRITER

LOGGER = logging.getLogger(__name__)


def _read_ssp245_em(ssp245_em_file):
    """
    Get default data from ssp245_RCMIP
    """
    ssp245df = (
        pd.read_csv(ssp245_em_file, delimiter="\t", index_col=0, skiprows=[1, 2, 3])
        .rename(columns=lambda x: x.strip())
        .rename(columns={"CO2 .1": "CO2_AFOLU"})
        .rename(columns={"CO2": "CO2_FF"})
        .astype(float)
    )

    return ssp245df


[docs]class SCENARIODATAGETTER(COMMONSFILEWRITER): """ Class to write scenariofiles: """ def __init__(self, udir, syear=2015, eyear=2100): """ Intialise scenario data getter """ super().__init__(udir, syear, eyear) self.ssp245data = _read_ssp245_em(os.path.join(udir, "ssp245_em_RCMIP.txt"))
[docs] def get_scenario_data(self, scenarioframe, nystart): """ Get printoutframe, and adding ssp245 data to get a frame for running """ printout_frame = self.make_printoutframe(scenarioframe, self.ssp245data) printout_frame.rename( columns={"CO2_lu": "CO2_AFOLU", "CO2": "CO2_FF"}, inplace=True ) final_frame = pd.concat( [ self.ssp245data.iloc[nystart - 1750 : (self.years[0] - 1750)] .astype(float) .rename(columns={"Component": "Index"}), printout_frame, ] ) return final_frame