diff --git a/notebooks/run-ciceroscm.ipynb b/notebooks/run-ciceroscm.ipynb index d25b9ac6..51086988 100644 --- a/notebooks/run-ciceroscm.ipynb +++ b/notebooks/run-ciceroscm.ipynb @@ -1050,13 +1050,7 @@ "2021-05-27 02:30:55 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No H-2402 data available, using ssp245\n", "2021-05-27 02:30:55 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No BMB_AEROS_BC data available, using ssp245\n", "2021-05-27 02:30:55 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No BMB_AEROS_OC data available, using ssp245\n", - "2021-05-27 02:30:56 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Removing CICERO-SCM instance: /tmp/ciceroscm-tdthunqc\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "2021-05-27 02:30:56 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Removing CICERO-SCM instance: /tmp/ciceroscm-tdthunqc\n", "2021-05-27 02:30:56 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Creating new CICERO-SCM instance: /tmp/ciceroscm-r7fy70x2\n", "2021-05-27 02:30:56 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No CFC-11 data available, using ssp245\n", "2021-05-27 02:30:56 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No CFC-12 data available, using ssp245\n", @@ -1113,13 +1107,7 @@ "2021-05-27 02:30:58 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No H-2402 data available, using ssp245\n", "2021-05-27 02:30:58 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No BMB_AEROS_BC data available, using ssp245\n", "2021-05-27 02:30:58 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No BMB_AEROS_OC data available, using ssp245\n", - "2021-05-27 02:30:59 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Removing CICERO-SCM instance: /tmp/ciceroscm-tuf4iiei\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "2021-05-27 02:30:59 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Removing CICERO-SCM instance: /tmp/ciceroscm-tuf4iiei\n", "2021-05-27 02:30:59 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Creating new CICERO-SCM instance: /tmp/ciceroscm-kwa39gxb\n", "2021-05-27 02:30:59 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No CFC-11 data available, using ssp245\n", "2021-05-27 02:30:59 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No CFC-12 data available, using ssp245\n", @@ -1176,13 +1164,7 @@ "2021-05-27 02:31:01 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No H-2402 data available, using ssp245\n", "2021-05-27 02:31:01 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No BMB_AEROS_BC data available, using ssp245\n", "2021-05-27 02:31:01 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No BMB_AEROS_OC data available, using ssp245\n", - "2021-05-27 02:31:02 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Removing CICERO-SCM instance: /tmp/ciceroscm-r8_isy1v\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "2021-05-27 02:31:02 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Removing CICERO-SCM instance: /tmp/ciceroscm-r8_isy1v\n", "2021-05-27 02:31:02 openscm_runner.adapters.ciceroscm_adapter.ciceroscm_wrapper MainThread - INFO: Creating new CICERO-SCM instance: /tmp/ciceroscm-ies2v6mi\n", "2021-05-27 02:31:02 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No CFC-11 data available, using ssp245\n", "2021-05-27 02:31:02 openscm_runner.adapters.ciceroscm_adapter.make_scenario_files MainThread - WARNING: No CFC-12 data available, using ssp245\n", @@ -2243,7 +2225,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -2257,7 +2239,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.7.0" } }, "nbformat": 4, diff --git a/notebooks/run-ciceroscmpy.ipynb b/notebooks/run-ciceroscmpy.ipynb new file mode 100644 index 00000000..ed602bea --- /dev/null +++ b/notebooks/run-ciceroscmpy.ipynb @@ -0,0 +1,2487 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "dfb48434", + "metadata": {}, + "source": [ + "# Minimal OpenSCM-Runner example with CICERO-SCM" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "292a00b7", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "if (typeof IPython !== 'undefined') { IPython.OutputArea.prototype._should_scroll = function(lines){ return false; }}" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/masan/gitrepos/openscm-runner/src/openscm_runner/progress.py:5: TqdmExperimentalWarning: Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)\n", + " from tqdm.autonotebook import tqdm\n" + ] + } + ], + "source": [ + "# NBVAL_IGNORE_OUTPUT\n", + "import logging\n", + "import os.path\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import scmdata\n", + "\n", + "import openscm_runner\n", + "from openscm_runner.run import run\n", + "from openscm_runner.adapters import CICEROSCMPY" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "4b979e3f", + "metadata": {}, + "outputs": [], + "source": [ + "STDERR_INFO_HANDLER = logging.StreamHandler()\n", + "FORMATTER = logging.Formatter(\n", + " \"%(asctime)s %(name)s %(threadName)s - %(levelname)s: %(message)s\",\n", + " datefmt=\"%Y-%m-%d %H:%M:%S\",\n", + ")\n", + "STDERR_INFO_HANDLER.setFormatter(FORMATTER)\n", + "\n", + "OPENSCM_RUNNER_LOGGER = logging.getLogger(\"openscm_runner\")\n", + "OPENSCM_RUNNER_LOGGER.setLevel(logging.INFO)\n", + "OPENSCM_RUNNER_LOGGER.addHandler(STDERR_INFO_HANDLER)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "19f1c618", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.10.1.dev61+g5f033b6.d20220805'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# NBVAL_IGNORE_OUTPUT\n", + "openscm_runner.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "60446400", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'1.0.0'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cicero_scm = CICEROSCMPY()\n", + "cicero_scm.get_version()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3b6e05b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time2015-01-012020-01-012030-01-012040-01-012050-01-012060-01-012070-01-012080-01-012090-01-012100-01-01
modelregionscenariounitvariable
AIM/CGEWorldssp370Mt BC/yrEmissions|BC9.72742410.22789310.68755411.00638810.94571210.58161710.2038759.7610729.4496389.105233
kt C2F6/yrEmissions|C2F61.5700002.0183001.3574000.9344000.6637000.4905000.3796000.3087000.1825000.182500
kt C6F14/yrEmissions|C6F140.3500000.4498910.3026260.2083150.1479210.1093000.0845730.0688180.0407000.040700
kt CF4/yrEmissions|CF410.86990012.75128310.3274058.7761197.7833287.1479346.7413386.4810406.0183456.018345
Mt CH4/yrEmissions|CH4388.072796418.454212471.330793515.545705558.974274602.318529647.129406693.382453735.323193777.732192
Mt CO/yrEmissions|CO934.349885968.199943985.3938281002.733950996.036314969.819813946.592481926.132789919.418030915.425024
Mt CO2/yrEmissions|CO2|MAGICC AFOLU3517.4400003875.0918633518.0376333161.9072972889.1262783144.5467633048.5139562843.3053002564.9364002656.121100
Emissions|CO2|MAGICC Fossil and Industrial35635.28629840932.94636149329.32168455336.06253060014.93234463423.82085366993.46461170561.92062175234.11302180069.712021
kt HFC125/yrEmissions|HFC12578.790600154.436090212.358860251.941960282.002550299.827430318.903410340.664240358.674180380.636610
kt HFC134a/yrEmissions|HFC134a201.953400233.567600199.087200192.274300201.090800203.604500213.079700232.340800254.877700280.732500
kt HFC143a/yrEmissions|HFC143a32.38100056.24730076.10490093.629800106.882500114.293000123.598200133.430100140.363400148.953400
kt HFC227ea/yrEmissions|HFC227ea3.6633004.9607245.0732305.0839055.2332344.8597324.5802644.4679984.3955524.400470
kt HFC23/yrEmissions|HFC2314.4857002.3552000.5274000.3183000.1603000.0845000.0439000.0227000.0116000.000000
kt HFC245fa/yrEmissions|HFC245fa11.72850018.89473625.23135231.38122236.91108940.87751545.07966549.71119054.01971458.678425
kt HFC32/yrEmissions|HFC3238.5792006.2725001.4046000.8477000.4269000.2250000.1169000.0605000.0309000.000000
kt HFC4310mee/yrEmissions|HFC4310mee1.1516001.1436180.7220520.5756770.5304880.4861570.4644220.4657730.4742460.491929
kt N2O/yrEmissions|N2O10900.00000011774.92991513291.80517714526.61029915634.91166416637.95545417624.30129318581.10700019626.75870020654.084200
Mt NH3/yrEmissions|NH365.27970368.74021474.35698678.14136980.71400282.57354583.41856983.67151985.95385088.308379
Mt NOx/yrEmissions|NOx155.520450166.055266169.680102170.896874169.856025163.489875157.435306151.232142148.066756144.449167
Mt OC/yrEmissions|OC34.74602435.84026237.48275038.29422738.37922537.54233136.56092535.55650034.75008433.748357
kt SF6/yrEmissions|SF68.0200008.4088008.6672008.7075008.5142008.5193008.5895008.7306009.0644009.521300
Mt SO2/yrEmissions|Sulfur100.77116798.60215899.22155799.57091699.77785195.88289691.85516587.40315483.61622978.147378
Mt VOC/yrEmissions|VOC227.244819237.021540246.670646250.865856256.014508252.178651247.398146241.421792235.276703227.919036
ssp370-lowNTCF-aerchemmipMt BC/yrEmissions|BC9.7274249.6541498.5857237.3971005.8757505.4921535.0926654.6822604.3336133.967145
kt C2F6/yrEmissions|C2F61.5700002.0183001.3574000.9344000.6637000.4905000.3796000.3087000.1825000.182500
kt C6F14/yrEmissions|C6F140.3500000.4498910.3026260.2083150.1479210.1093000.0845730.0688180.0407000.040700
kt CF4/yrEmissions|CF410.86990012.75128310.3274058.7761197.7833287.1479346.7413386.4810406.0183456.018345
Mt CH4/yrEmissions|CH4388.072796418.454212471.330793515.545705558.974274602.318529647.129406693.382453735.323193777.732192
Mt CO/yrEmissions|CO934.349885925.476786838.223607732.376446602.469951566.425696532.060408498.984701470.975278438.754040
Mt CO2/yrEmissions|CO2|MAGICC AFOLU3517.4400003875.0918633518.0376333161.9072972889.1262783144.5467633048.5139562843.3053002564.9364002656.121100
\n", + "
" + ], + "text/plain": [ + "time 2015-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 9.727424 \n", + " kt C2F6/yr Emissions|C2F6 1.570000 \n", + " kt C6F14/yr Emissions|C6F14 0.350000 \n", + " kt CF4/yr Emissions|CF4 10.869900 \n", + " Mt CH4/yr Emissions|CH4 388.072796 \n", + " Mt CO/yr Emissions|CO 934.349885 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3517.440000 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 35635.286298 \n", + " kt HFC125/yr Emissions|HFC125 78.790600 \n", + " kt HFC134a/yr Emissions|HFC134a 201.953400 \n", + " kt HFC143a/yr Emissions|HFC143a 32.381000 \n", + " kt HFC227ea/yr Emissions|HFC227ea 3.663300 \n", + " kt HFC23/yr Emissions|HFC23 14.485700 \n", + " kt HFC245fa/yr Emissions|HFC245fa 11.728500 \n", + " kt HFC32/yr Emissions|HFC32 38.579200 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 1.151600 \n", + " kt N2O/yr Emissions|N2O 10900.000000 \n", + " Mt NH3/yr Emissions|NH3 65.279703 \n", + " Mt NOx/yr Emissions|NOx 155.520450 \n", + " Mt OC/yr Emissions|OC 34.746024 \n", + " kt SF6/yr Emissions|SF6 8.020000 \n", + " Mt SO2/yr Emissions|Sulfur 100.771167 \n", + " Mt VOC/yr Emissions|VOC 227.244819 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 9.727424 \n", + " kt C2F6/yr Emissions|C2F6 1.570000 \n", + " kt C6F14/yr Emissions|C6F14 0.350000 \n", + " kt CF4/yr Emissions|CF4 10.869900 \n", + " Mt CH4/yr Emissions|CH4 388.072796 \n", + " Mt CO/yr Emissions|CO 934.349885 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3517.440000 \n", + "\n", + "time 2020-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 10.227893 \n", + " kt C2F6/yr Emissions|C2F6 2.018300 \n", + " kt C6F14/yr Emissions|C6F14 0.449891 \n", + " kt CF4/yr Emissions|CF4 12.751283 \n", + " Mt CH4/yr Emissions|CH4 418.454212 \n", + " Mt CO/yr Emissions|CO 968.199943 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3875.091863 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 40932.946361 \n", + " kt HFC125/yr Emissions|HFC125 154.436090 \n", + " kt HFC134a/yr Emissions|HFC134a 233.567600 \n", + " kt HFC143a/yr Emissions|HFC143a 56.247300 \n", + " kt HFC227ea/yr Emissions|HFC227ea 4.960724 \n", + " kt HFC23/yr Emissions|HFC23 2.355200 \n", + " kt HFC245fa/yr Emissions|HFC245fa 18.894736 \n", + " kt HFC32/yr Emissions|HFC32 6.272500 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 1.143618 \n", + " kt N2O/yr Emissions|N2O 11774.929915 \n", + " Mt NH3/yr Emissions|NH3 68.740214 \n", + " Mt NOx/yr Emissions|NOx 166.055266 \n", + " Mt OC/yr Emissions|OC 35.840262 \n", + " kt SF6/yr Emissions|SF6 8.408800 \n", + " Mt SO2/yr Emissions|Sulfur 98.602158 \n", + " Mt VOC/yr Emissions|VOC 237.021540 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 9.654149 \n", + " kt C2F6/yr Emissions|C2F6 2.018300 \n", + " kt C6F14/yr Emissions|C6F14 0.449891 \n", + " kt CF4/yr Emissions|CF4 12.751283 \n", + " Mt CH4/yr Emissions|CH4 418.454212 \n", + " Mt CO/yr Emissions|CO 925.476786 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3875.091863 \n", + "\n", + "time 2030-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 10.687554 \n", + " kt C2F6/yr Emissions|C2F6 1.357400 \n", + " kt C6F14/yr Emissions|C6F14 0.302626 \n", + " kt CF4/yr Emissions|CF4 10.327405 \n", + " Mt CH4/yr Emissions|CH4 471.330793 \n", + " Mt CO/yr Emissions|CO 985.393828 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3518.037633 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 49329.321684 \n", + " kt HFC125/yr Emissions|HFC125 212.358860 \n", + " kt HFC134a/yr Emissions|HFC134a 199.087200 \n", + " kt HFC143a/yr Emissions|HFC143a 76.104900 \n", + " kt HFC227ea/yr Emissions|HFC227ea 5.073230 \n", + " kt HFC23/yr Emissions|HFC23 0.527400 \n", + " kt HFC245fa/yr Emissions|HFC245fa 25.231352 \n", + " kt HFC32/yr Emissions|HFC32 1.404600 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 0.722052 \n", + " kt N2O/yr Emissions|N2O 13291.805177 \n", + " Mt NH3/yr Emissions|NH3 74.356986 \n", + " Mt NOx/yr Emissions|NOx 169.680102 \n", + " Mt OC/yr Emissions|OC 37.482750 \n", + " kt SF6/yr Emissions|SF6 8.667200 \n", + " Mt SO2/yr Emissions|Sulfur 99.221557 \n", + " Mt VOC/yr Emissions|VOC 246.670646 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 8.585723 \n", + " kt C2F6/yr Emissions|C2F6 1.357400 \n", + " kt C6F14/yr Emissions|C6F14 0.302626 \n", + " kt CF4/yr Emissions|CF4 10.327405 \n", + " Mt CH4/yr Emissions|CH4 471.330793 \n", + " Mt CO/yr Emissions|CO 838.223607 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3518.037633 \n", + "\n", + "time 2040-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 11.006388 \n", + " kt C2F6/yr Emissions|C2F6 0.934400 \n", + " kt C6F14/yr Emissions|C6F14 0.208315 \n", + " kt CF4/yr Emissions|CF4 8.776119 \n", + " Mt CH4/yr Emissions|CH4 515.545705 \n", + " Mt CO/yr Emissions|CO 1002.733950 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3161.907297 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 55336.062530 \n", + " kt HFC125/yr Emissions|HFC125 251.941960 \n", + " kt HFC134a/yr Emissions|HFC134a 192.274300 \n", + " kt HFC143a/yr Emissions|HFC143a 93.629800 \n", + " kt HFC227ea/yr Emissions|HFC227ea 5.083905 \n", + " kt HFC23/yr Emissions|HFC23 0.318300 \n", + " kt HFC245fa/yr Emissions|HFC245fa 31.381222 \n", + " kt HFC32/yr Emissions|HFC32 0.847700 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 0.575677 \n", + " kt N2O/yr Emissions|N2O 14526.610299 \n", + " Mt NH3/yr Emissions|NH3 78.141369 \n", + " Mt NOx/yr Emissions|NOx 170.896874 \n", + " Mt OC/yr Emissions|OC 38.294227 \n", + " kt SF6/yr Emissions|SF6 8.707500 \n", + " Mt SO2/yr Emissions|Sulfur 99.570916 \n", + " Mt VOC/yr Emissions|VOC 250.865856 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 7.397100 \n", + " kt C2F6/yr Emissions|C2F6 0.934400 \n", + " kt C6F14/yr Emissions|C6F14 0.208315 \n", + " kt CF4/yr Emissions|CF4 8.776119 \n", + " Mt CH4/yr Emissions|CH4 515.545705 \n", + " Mt CO/yr Emissions|CO 732.376446 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3161.907297 \n", + "\n", + "time 2050-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 10.945712 \n", + " kt C2F6/yr Emissions|C2F6 0.663700 \n", + " kt C6F14/yr Emissions|C6F14 0.147921 \n", + " kt CF4/yr Emissions|CF4 7.783328 \n", + " Mt CH4/yr Emissions|CH4 558.974274 \n", + " Mt CO/yr Emissions|CO 996.036314 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 2889.126278 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 60014.932344 \n", + " kt HFC125/yr Emissions|HFC125 282.002550 \n", + " kt HFC134a/yr Emissions|HFC134a 201.090800 \n", + " kt HFC143a/yr Emissions|HFC143a 106.882500 \n", + " kt HFC227ea/yr Emissions|HFC227ea 5.233234 \n", + " kt HFC23/yr Emissions|HFC23 0.160300 \n", + " kt HFC245fa/yr Emissions|HFC245fa 36.911089 \n", + " kt HFC32/yr Emissions|HFC32 0.426900 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 0.530488 \n", + " kt N2O/yr Emissions|N2O 15634.911664 \n", + " Mt NH3/yr Emissions|NH3 80.714002 \n", + " Mt NOx/yr Emissions|NOx 169.856025 \n", + " Mt OC/yr Emissions|OC 38.379225 \n", + " kt SF6/yr Emissions|SF6 8.514200 \n", + " Mt SO2/yr Emissions|Sulfur 99.777851 \n", + " Mt VOC/yr Emissions|VOC 256.014508 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 5.875750 \n", + " kt C2F6/yr Emissions|C2F6 0.663700 \n", + " kt C6F14/yr Emissions|C6F14 0.147921 \n", + " kt CF4/yr Emissions|CF4 7.783328 \n", + " Mt CH4/yr Emissions|CH4 558.974274 \n", + " Mt CO/yr Emissions|CO 602.469951 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 2889.126278 \n", + "\n", + "time 2060-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 10.581617 \n", + " kt C2F6/yr Emissions|C2F6 0.490500 \n", + " kt C6F14/yr Emissions|C6F14 0.109300 \n", + " kt CF4/yr Emissions|CF4 7.147934 \n", + " Mt CH4/yr Emissions|CH4 602.318529 \n", + " Mt CO/yr Emissions|CO 969.819813 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3144.546763 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 63423.820853 \n", + " kt HFC125/yr Emissions|HFC125 299.827430 \n", + " kt HFC134a/yr Emissions|HFC134a 203.604500 \n", + " kt HFC143a/yr Emissions|HFC143a 114.293000 \n", + " kt HFC227ea/yr Emissions|HFC227ea 4.859732 \n", + " kt HFC23/yr Emissions|HFC23 0.084500 \n", + " kt HFC245fa/yr Emissions|HFC245fa 40.877515 \n", + " kt HFC32/yr Emissions|HFC32 0.225000 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 0.486157 \n", + " kt N2O/yr Emissions|N2O 16637.955454 \n", + " Mt NH3/yr Emissions|NH3 82.573545 \n", + " Mt NOx/yr Emissions|NOx 163.489875 \n", + " Mt OC/yr Emissions|OC 37.542331 \n", + " kt SF6/yr Emissions|SF6 8.519300 \n", + " Mt SO2/yr Emissions|Sulfur 95.882896 \n", + " Mt VOC/yr Emissions|VOC 252.178651 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 5.492153 \n", + " kt C2F6/yr Emissions|C2F6 0.490500 \n", + " kt C6F14/yr Emissions|C6F14 0.109300 \n", + " kt CF4/yr Emissions|CF4 7.147934 \n", + " Mt CH4/yr Emissions|CH4 602.318529 \n", + " Mt CO/yr Emissions|CO 566.425696 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3144.546763 \n", + "\n", + "time 2070-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 10.203875 \n", + " kt C2F6/yr Emissions|C2F6 0.379600 \n", + " kt C6F14/yr Emissions|C6F14 0.084573 \n", + " kt CF4/yr Emissions|CF4 6.741338 \n", + " Mt CH4/yr Emissions|CH4 647.129406 \n", + " Mt CO/yr Emissions|CO 946.592481 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3048.513956 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 66993.464611 \n", + " kt HFC125/yr Emissions|HFC125 318.903410 \n", + " kt HFC134a/yr Emissions|HFC134a 213.079700 \n", + " kt HFC143a/yr Emissions|HFC143a 123.598200 \n", + " kt HFC227ea/yr Emissions|HFC227ea 4.580264 \n", + " kt HFC23/yr Emissions|HFC23 0.043900 \n", + " kt HFC245fa/yr Emissions|HFC245fa 45.079665 \n", + " kt HFC32/yr Emissions|HFC32 0.116900 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 0.464422 \n", + " kt N2O/yr Emissions|N2O 17624.301293 \n", + " Mt NH3/yr Emissions|NH3 83.418569 \n", + " Mt NOx/yr Emissions|NOx 157.435306 \n", + " Mt OC/yr Emissions|OC 36.560925 \n", + " kt SF6/yr Emissions|SF6 8.589500 \n", + " Mt SO2/yr Emissions|Sulfur 91.855165 \n", + " Mt VOC/yr Emissions|VOC 247.398146 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 5.092665 \n", + " kt C2F6/yr Emissions|C2F6 0.379600 \n", + " kt C6F14/yr Emissions|C6F14 0.084573 \n", + " kt CF4/yr Emissions|CF4 6.741338 \n", + " Mt CH4/yr Emissions|CH4 647.129406 \n", + " Mt CO/yr Emissions|CO 532.060408 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 3048.513956 \n", + "\n", + "time 2080-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 9.761072 \n", + " kt C2F6/yr Emissions|C2F6 0.308700 \n", + " kt C6F14/yr Emissions|C6F14 0.068818 \n", + " kt CF4/yr Emissions|CF4 6.481040 \n", + " Mt CH4/yr Emissions|CH4 693.382453 \n", + " Mt CO/yr Emissions|CO 926.132789 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 2843.305300 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 70561.920621 \n", + " kt HFC125/yr Emissions|HFC125 340.664240 \n", + " kt HFC134a/yr Emissions|HFC134a 232.340800 \n", + " kt HFC143a/yr Emissions|HFC143a 133.430100 \n", + " kt HFC227ea/yr Emissions|HFC227ea 4.467998 \n", + " kt HFC23/yr Emissions|HFC23 0.022700 \n", + " kt HFC245fa/yr Emissions|HFC245fa 49.711190 \n", + " kt HFC32/yr Emissions|HFC32 0.060500 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 0.465773 \n", + " kt N2O/yr Emissions|N2O 18581.107000 \n", + " Mt NH3/yr Emissions|NH3 83.671519 \n", + " Mt NOx/yr Emissions|NOx 151.232142 \n", + " Mt OC/yr Emissions|OC 35.556500 \n", + " kt SF6/yr Emissions|SF6 8.730600 \n", + " Mt SO2/yr Emissions|Sulfur 87.403154 \n", + " Mt VOC/yr Emissions|VOC 241.421792 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 4.682260 \n", + " kt C2F6/yr Emissions|C2F6 0.308700 \n", + " kt C6F14/yr Emissions|C6F14 0.068818 \n", + " kt CF4/yr Emissions|CF4 6.481040 \n", + " Mt CH4/yr Emissions|CH4 693.382453 \n", + " Mt CO/yr Emissions|CO 498.984701 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 2843.305300 \n", + "\n", + "time 2090-01-01 \\\n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 9.449638 \n", + " kt C2F6/yr Emissions|C2F6 0.182500 \n", + " kt C6F14/yr Emissions|C6F14 0.040700 \n", + " kt CF4/yr Emissions|CF4 6.018345 \n", + " Mt CH4/yr Emissions|CH4 735.323193 \n", + " Mt CO/yr Emissions|CO 919.418030 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 2564.936400 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 75234.113021 \n", + " kt HFC125/yr Emissions|HFC125 358.674180 \n", + " kt HFC134a/yr Emissions|HFC134a 254.877700 \n", + " kt HFC143a/yr Emissions|HFC143a 140.363400 \n", + " kt HFC227ea/yr Emissions|HFC227ea 4.395552 \n", + " kt HFC23/yr Emissions|HFC23 0.011600 \n", + " kt HFC245fa/yr Emissions|HFC245fa 54.019714 \n", + " kt HFC32/yr Emissions|HFC32 0.030900 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 0.474246 \n", + " kt N2O/yr Emissions|N2O 19626.758700 \n", + " Mt NH3/yr Emissions|NH3 85.953850 \n", + " Mt NOx/yr Emissions|NOx 148.066756 \n", + " Mt OC/yr Emissions|OC 34.750084 \n", + " kt SF6/yr Emissions|SF6 9.064400 \n", + " Mt SO2/yr Emissions|Sulfur 83.616229 \n", + " Mt VOC/yr Emissions|VOC 235.276703 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 4.333613 \n", + " kt C2F6/yr Emissions|C2F6 0.182500 \n", + " kt C6F14/yr Emissions|C6F14 0.040700 \n", + " kt CF4/yr Emissions|CF4 6.018345 \n", + " Mt CH4/yr Emissions|CH4 735.323193 \n", + " Mt CO/yr Emissions|CO 470.975278 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 2564.936400 \n", + "\n", + "time 2100-01-01 \n", + "model region scenario unit variable \n", + "AIM/CGE World ssp370 Mt BC/yr Emissions|BC 9.105233 \n", + " kt C2F6/yr Emissions|C2F6 0.182500 \n", + " kt C6F14/yr Emissions|C6F14 0.040700 \n", + " kt CF4/yr Emissions|CF4 6.018345 \n", + " Mt CH4/yr Emissions|CH4 777.732192 \n", + " Mt CO/yr Emissions|CO 915.425024 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 2656.121100 \n", + " Emissions|CO2|MAGICC Fossil and Industrial 80069.712021 \n", + " kt HFC125/yr Emissions|HFC125 380.636610 \n", + " kt HFC134a/yr Emissions|HFC134a 280.732500 \n", + " kt HFC143a/yr Emissions|HFC143a 148.953400 \n", + " kt HFC227ea/yr Emissions|HFC227ea 4.400470 \n", + " kt HFC23/yr Emissions|HFC23 0.000000 \n", + " kt HFC245fa/yr Emissions|HFC245fa 58.678425 \n", + " kt HFC32/yr Emissions|HFC32 0.000000 \n", + " kt HFC4310mee/yr Emissions|HFC4310mee 0.491929 \n", + " kt N2O/yr Emissions|N2O 20654.084200 \n", + " Mt NH3/yr Emissions|NH3 88.308379 \n", + " Mt NOx/yr Emissions|NOx 144.449167 \n", + " Mt OC/yr Emissions|OC 33.748357 \n", + " kt SF6/yr Emissions|SF6 9.521300 \n", + " Mt SO2/yr Emissions|Sulfur 78.147378 \n", + " Mt VOC/yr Emissions|VOC 227.919036 \n", + " ssp370-lowNTCF-aerchemmip Mt BC/yr Emissions|BC 3.967145 \n", + " kt C2F6/yr Emissions|C2F6 0.182500 \n", + " kt C6F14/yr Emissions|C6F14 0.040700 \n", + " kt CF4/yr Emissions|CF4 6.018345 \n", + " Mt CH4/yr Emissions|CH4 777.732192 \n", + " Mt CO/yr Emissions|CO 438.754040 \n", + " Mt CO2/yr Emissions|CO2|MAGICC AFOLU 2656.121100 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# NBVAL_IGNORE_OUTPUT\n", + "input_emissions = scmdata.ScmRun(\n", + " os.path.join(\n", + " \"..\", \"tests\", \"test-data\", \"rcmip_scen_ssp_world_emissions.csv\"\n", + " ),\n", + " lowercase_cols=True,\n", + ")\n", + "\n", + "input_emissions.head(30)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "9916c815", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "599b9bbba44241dfac11364b8f0ef228", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Climate models: 0%| | 0.00/1.00 [00:00\n", + " {\n", + " \"Index\": 30040,\n", + " \"pamset_udm\":\n", + " {\n", + " \"lambda\": 0.540,\n", + " \"akapa\": 0.341,\n", + " \"cpi\": 0.556,\n", + " \"W\": 1.897,\n", + " \"rlamdo\": 16.618,\n", + " \"beto\": 3.225,\n", + " \"mixed\": 107.277,\n", + " },\n", + " \"pamset_emiconc\":\n", + " {\n", + " \"qdirso2\": -0.457,\n", + " \"qindso2\": -0.514,\n", + " \"qbc\": 0.200,\n", + " \"qoc\": -0.103,\n", + " }\n", + " },\n", + " {\n", + " \"Index\": 1,\n", + " \"pamset_udm\":\n", + " {\n", + " \"lambda\": 0.3925,\n", + " \"akapa\": 0.2421,\n", + " \"cpi\": 0.3745,\n", + " \"W\": 0.8172,\n", + " \"rlamdo\": 16.4599,\n", + " \"beto\": 4.4369,\n", + " \"mixed\": 35.4192,\n", + " },\n", + " \"pamset_emiconc\":\n", + " {\n", + " \"qdirso2\": -0.3428,\n", + " \"qindso2\": -0.3856,\n", + " \"qbc\": 0.1507,\n", + " \"qoc\": -0.0776,\n", + " }\n", + " },\n", + " # {\"q\": np.array([0.3, 0.45]), \"r0\": 30.0, \"lambda_global\": 0.9},\n", + " # {\"q\": np.array([0.35, 0.4]), \"r0\": 25.0, \"lambda_global\": 1.1},\n", + " ]\n", + " ],\n", + " },\n", + " scenarios=input_emissions,\n", + " output_variables=(\n", + " \"Surface Air Temperature Change\",\n", + " \"Atmospheric Concentrations|CO2\",\n", + " \"Effective Radiative Forcing\",\n", + " \"Effective Radiative Forcing|CO2\",\n", + " \"Effective Radiative Forcing|CH4\",\n", + " \"Effective Radiative Forcing|N2O\",\n", + " \"Effective Radiative Forcing|Greenhouse Gases\",\n", + " \"Effective Radiative Forcing|Aerosols\",\n", + " \"Effective Radiative Forcing|Aerosols|Direct Effect|BC\",\n", + " \"Effective Radiative Forcing|Aerosols|Direct Effect|OC\",\n", + " \"Effective Radiative Forcing|Aerosols|Direct Effect|SOx\",\n", + " \"Effective Radiative Forcing|Aerosols|Direct Effect\",\n", + " \"Effective Radiative Forcing|Aerosols|Indirect Effect\",\n", + " ),\n", + " # not yet implemented\n", + " # out_config={\"CICEROSCM\": (\"lambda\",)}\n", + ").filter(\n", + " year=range(1, input_emissions[\"year\"].max() + 1)\n", + ") # TODO: remove filter once we know how to stop the model" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1a46ccf2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time1750-01-011751-01-011752-01-011753-01-011754-01-011755-01-011756-01-011757-01-011758-01-011759-01-01...2091-01-012092-01-012093-01-012094-01-012095-01-012096-01-012097-01-012098-01-012099-01-012100-01-01
climate_modelmodelregionrun_idscenariounitvariable
CICERO-SCM-PYIMAGEWorld30040ssp119KSurface Air Temperature Change-0.000991-0.002477-0.003106-0.003481-0.003731-0.003882-0.003924-0.003943-0.003956-0.003921...1.1505461.1420391.1334811.1248641.1161831.1074321.0986091.0897081.0807281.071665
ppmAtmospheric Concentrations|CO2278.037703278.072183278.104705278.135873278.166063278.195537278.224562278.253198278.281554278.309720...380.324354378.984228377.631902376.267474374.891035373.502674372.102481370.690545369.266955367.831803
W/m^2Effective Radiative Forcing-0.017220-0.016162-0.014795-0.013800-0.013231-0.012251-0.011114-0.011020-0.010237-0.009722...2.1704862.1498772.1291222.1082132.0871432.0659042.0444912.0228962.0011151.979142
Effective Radiative Forcing|CO20.0000000.0006900.0013420.0019650.0025700.0031600.0037410.0043140.0048810.005445...1.7647651.7445791.7241441.7034601.6825261.6613411.6399051.6182151.5962721.574073
Effective Radiative Forcing|CH40.0000000.0002790.0009640.0014370.0018030.0021470.0025880.0028920.0030940.003024...0.1578400.1554160.1530420.1507130.1484260.1461760.1439610.1417760.1396200.137489
\n", + "

5 rows × 351 columns

\n", + "
" + ], + "text/plain": [ + "time 1750-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.000991 \n", + " ppm Atmospheric Concentrations|CO2 278.037703 \n", + " W/m^2 Effective Radiative Forcing -0.017220 \n", + " Effective Radiative Forcing|CO2 0.000000 \n", + " Effective Radiative Forcing|CH4 0.000000 \n", + "\n", + "time 1751-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.002477 \n", + " ppm Atmospheric Concentrations|CO2 278.072183 \n", + " W/m^2 Effective Radiative Forcing -0.016162 \n", + " Effective Radiative Forcing|CO2 0.000690 \n", + " Effective Radiative Forcing|CH4 0.000279 \n", + "\n", + "time 1752-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.003106 \n", + " ppm Atmospheric Concentrations|CO2 278.104705 \n", + " W/m^2 Effective Radiative Forcing -0.014795 \n", + " Effective Radiative Forcing|CO2 0.001342 \n", + " Effective Radiative Forcing|CH4 0.000964 \n", + "\n", + "time 1753-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.003481 \n", + " ppm Atmospheric Concentrations|CO2 278.135873 \n", + " W/m^2 Effective Radiative Forcing -0.013800 \n", + " Effective Radiative Forcing|CO2 0.001965 \n", + " Effective Radiative Forcing|CH4 0.001437 \n", + "\n", + "time 1754-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.003731 \n", + " ppm Atmospheric Concentrations|CO2 278.166063 \n", + " W/m^2 Effective Radiative Forcing -0.013231 \n", + " Effective Radiative Forcing|CO2 0.002570 \n", + " Effective Radiative Forcing|CH4 0.001803 \n", + "\n", + "time 1755-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.003882 \n", + " ppm Atmospheric Concentrations|CO2 278.195537 \n", + " W/m^2 Effective Radiative Forcing -0.012251 \n", + " Effective Radiative Forcing|CO2 0.003160 \n", + " Effective Radiative Forcing|CH4 0.002147 \n", + "\n", + "time 1756-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.003924 \n", + " ppm Atmospheric Concentrations|CO2 278.224562 \n", + " W/m^2 Effective Radiative Forcing -0.011114 \n", + " Effective Radiative Forcing|CO2 0.003741 \n", + " Effective Radiative Forcing|CH4 0.002588 \n", + "\n", + "time 1757-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.003943 \n", + " ppm Atmospheric Concentrations|CO2 278.253198 \n", + " W/m^2 Effective Radiative Forcing -0.011020 \n", + " Effective Radiative Forcing|CO2 0.004314 \n", + " Effective Radiative Forcing|CH4 0.002892 \n", + "\n", + "time 1758-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.003956 \n", + " ppm Atmospheric Concentrations|CO2 278.281554 \n", + " W/m^2 Effective Radiative Forcing -0.010237 \n", + " Effective Radiative Forcing|CO2 0.004881 \n", + " Effective Radiative Forcing|CH4 0.003094 \n", + "\n", + "time 1759-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change -0.003921 \n", + " ppm Atmospheric Concentrations|CO2 278.309720 \n", + " W/m^2 Effective Radiative Forcing -0.009722 \n", + " Effective Radiative Forcing|CO2 0.005445 \n", + " Effective Radiative Forcing|CH4 0.003024 \n", + "\n", + "time ... \\\n", + "climate_model model region run_id scenario unit variable ... \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change ... \n", + " ppm Atmospheric Concentrations|CO2 ... \n", + " W/m^2 Effective Radiative Forcing ... \n", + " Effective Radiative Forcing|CO2 ... \n", + " Effective Radiative Forcing|CH4 ... \n", + "\n", + "time 2091-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.150546 \n", + " ppm Atmospheric Concentrations|CO2 380.324354 \n", + " W/m^2 Effective Radiative Forcing 2.170486 \n", + " Effective Radiative Forcing|CO2 1.764765 \n", + " Effective Radiative Forcing|CH4 0.157840 \n", + "\n", + "time 2092-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.142039 \n", + " ppm Atmospheric Concentrations|CO2 378.984228 \n", + " W/m^2 Effective Radiative Forcing 2.149877 \n", + " Effective Radiative Forcing|CO2 1.744579 \n", + " Effective Radiative Forcing|CH4 0.155416 \n", + "\n", + "time 2093-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.133481 \n", + " ppm Atmospheric Concentrations|CO2 377.631902 \n", + " W/m^2 Effective Radiative Forcing 2.129122 \n", + " Effective Radiative Forcing|CO2 1.724144 \n", + " Effective Radiative Forcing|CH4 0.153042 \n", + "\n", + "time 2094-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.124864 \n", + " ppm Atmospheric Concentrations|CO2 376.267474 \n", + " W/m^2 Effective Radiative Forcing 2.108213 \n", + " Effective Radiative Forcing|CO2 1.703460 \n", + " Effective Radiative Forcing|CH4 0.150713 \n", + "\n", + "time 2095-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.116183 \n", + " ppm Atmospheric Concentrations|CO2 374.891035 \n", + " W/m^2 Effective Radiative Forcing 2.087143 \n", + " Effective Radiative Forcing|CO2 1.682526 \n", + " Effective Radiative Forcing|CH4 0.148426 \n", + "\n", + "time 2096-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.107432 \n", + " ppm Atmospheric Concentrations|CO2 373.502674 \n", + " W/m^2 Effective Radiative Forcing 2.065904 \n", + " Effective Radiative Forcing|CO2 1.661341 \n", + " Effective Radiative Forcing|CH4 0.146176 \n", + "\n", + "time 2097-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.098609 \n", + " ppm Atmospheric Concentrations|CO2 372.102481 \n", + " W/m^2 Effective Radiative Forcing 2.044491 \n", + " Effective Radiative Forcing|CO2 1.639905 \n", + " Effective Radiative Forcing|CH4 0.143961 \n", + "\n", + "time 2098-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.089708 \n", + " ppm Atmospheric Concentrations|CO2 370.690545 \n", + " W/m^2 Effective Radiative Forcing 2.022896 \n", + " Effective Radiative Forcing|CO2 1.618215 \n", + " Effective Radiative Forcing|CH4 0.141776 \n", + "\n", + "time 2099-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.080728 \n", + " ppm Atmospheric Concentrations|CO2 369.266955 \n", + " W/m^2 Effective Radiative Forcing 2.001115 \n", + " Effective Radiative Forcing|CO2 1.596272 \n", + " Effective Radiative Forcing|CH4 0.139620 \n", + "\n", + "time 2100-01-01 \n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY IMAGE World 30040 ssp119 K Surface Air Temperature Change 1.071665 \n", + " ppm Atmospheric Concentrations|CO2 367.831803 \n", + " W/m^2 Effective Radiative Forcing 1.979142 \n", + " Effective Radiative Forcing|CO2 1.574073 \n", + " Effective Radiative Forcing|CH4 0.137489 \n", + "\n", + "[5 rows x 351 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# NBVAL_IGNORE_OUTPUT\n", + "res.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b52b0148", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time1750-01-011751-01-011752-01-011753-01-011754-01-011755-01-011756-01-011757-01-011758-01-011759-01-01...2091-01-012092-01-012093-01-012094-01-012095-01-012096-01-012097-01-012098-01-012099-01-012100-01-01
climate_modelmodelregionrun_idscenariounitvariable
CICERO-SCM-PYREMIND-MAGPIEWorld1ssp585W/m^2Effective Radiative Forcing|Aerosols|Direct Effect|BC0.0141080.0139780.0139790.0140870.0142650.0141990.0142250.0144600.0142230.014417...0.0599990.0580560.0561130.0541690.0522260.0502820.0483390.0463950.0444520.042508
Effective Radiative Forcing|Aerosols|Direct Effect|OC-0.011734-0.011662-0.011675-0.011758-0.011885-0.011855-0.011881-0.012046-0.011905-0.012043...-0.030674-0.030643-0.030611-0.030580-0.030548-0.030517-0.030485-0.030454-0.030422-0.030391
Effective Radiative Forcing|Aerosols|Direct Effect|SOx-0.007191-0.007098-0.007065-0.007105-0.007256-0.007198-0.007130-0.007390-0.007308-0.007290...-0.119687-0.116034-0.112381-0.108728-0.105075-0.101422-0.097769-0.094116-0.090463-0.086809
Effective Radiative Forcing|Aerosols|Direct Effect-0.004817-0.004782-0.004761-0.004775-0.004876-0.004854-0.004786-0.004976-0.004989-0.004915...-0.090362-0.088621-0.086880-0.085139-0.083397-0.081656-0.079915-0.078174-0.076433-0.074692
Effective Radiative Forcing|Aerosols|Indirect Effect-0.008089-0.007984-0.007947-0.007992-0.008162-0.008097-0.008020-0.008312-0.008221-0.008200...-0.134631-0.130522-0.126412-0.122303-0.118194-0.114085-0.109976-0.105866-0.101757-0.097648
\n", + "

5 rows × 351 columns

\n", + "
" + ], + "text/plain": [ + "time 1750-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.014108 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.011734 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007191 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004817 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.008089 \n", + "\n", + "time 1751-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.013978 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.011662 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007098 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004782 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.007984 \n", + "\n", + "time 1752-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.013979 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.011675 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007065 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004761 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.007947 \n", + "\n", + "time 1753-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.014087 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.011758 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007105 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004775 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.007992 \n", + "\n", + "time 1754-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.014265 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.011885 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007256 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004876 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.008162 \n", + "\n", + "time 1755-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.014199 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.011855 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007198 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004854 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.008097 \n", + "\n", + "time 1756-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.014225 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.011881 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007130 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004786 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.008020 \n", + "\n", + "time 1757-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.014460 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.012046 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007390 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004976 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.008312 \n", + "\n", + "time 1758-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.014223 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.011905 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007308 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004989 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.008221 \n", + "\n", + "time 1759-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.014417 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.012043 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.007290 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.004915 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.008200 \n", + "\n", + "time ... \\\n", + "climate_model model region run_id scenario unit variable ... \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... ... \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... ... \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... ... \n", + " Effective Radiative Forcing|Aerosols|Direct Effect ... \n", + " Effective Radiative Forcing|Aerosols|Indirect E... ... \n", + "\n", + "time 2091-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.059999 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030674 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.119687 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.090362 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.134631 \n", + "\n", + "time 2092-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.058056 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030643 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.116034 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.088621 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.130522 \n", + "\n", + "time 2093-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.056113 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030611 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.112381 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.086880 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.126412 \n", + "\n", + "time 2094-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.054169 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030580 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.108728 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.085139 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.122303 \n", + "\n", + "time 2095-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.052226 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030548 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.105075 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.083397 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.118194 \n", + "\n", + "time 2096-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.050282 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030517 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.101422 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.081656 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.114085 \n", + "\n", + "time 2097-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.048339 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030485 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.097769 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.079915 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.109976 \n", + "\n", + "time 2098-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.046395 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030454 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.094116 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.078174 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.105866 \n", + "\n", + "time 2099-01-01 \\\n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.044452 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030422 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.090463 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.076433 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.101757 \n", + "\n", + "time 2100-01-01 \n", + "climate_model model region run_id scenario unit variable \n", + "CICERO-SCM-PY REMIND-MAGPIE World 1 ssp585 W/m^2 Effective Radiative Forcing|Aerosols|Direct Eff... 0.042508 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.030391 \n", + " Effective Radiative Forcing|Aerosols|Direct Eff... -0.086809 \n", + " Effective Radiative Forcing|Aerosols|Direct Effect -0.074692 \n", + " Effective Radiative Forcing|Aerosols|Indirect E... -0.097648 \n", + "\n", + "[5 rows x 351 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# NBVAL_IGNORE_OUTPUT\n", + "res.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "cf666602", + "metadata": {}, + "outputs": [], + "source": [ + "plot_kwargs = dict(\n", + " quantiles_plumes=[((0.05, 0.95), 0.5), ((0.5,), 1.0)],\n", + " quantile_over=\"run_id\",\n", + " hue_var=\"scenario\",\n", + " style_var=\"model\",\n", + " style_label=\"IAM\",\n", + " time_axis=\"year\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "1e0dfadc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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ztgahBBCCCHOtPXeAH7T7O5ldIkExx/R0qVL2bhxI1/84hcpKysjHE4Ul//6179m3LhxlJSUUFVVdVrXfP/99/nUpz4FwJQpU3jppZc6PP7//u//OHz4MFOmTGHKlCnJ7d///vcpLS3lsssuo66u7jSfTAghhBDizPHGDTZ4g929jC6T4LgLNE3juuuuY/z48fzhD38A4LbbbqO8vJy//vWvVFZWkpKSAkB+fj6bN2/ma1/7GosWLTqt+5SWlvL8888D8MILL+D3+2loaAAgEolQXl7OZZddxosvvgjA/fffT79+/XjzzTd58803AQgGg1x22WVs3bqVq666ij/+8Y9n4iMQQgghhPhI3moKYPSgicydOevBsaZpNk3Ttmia9srZvtfZsnbtWjZv3sxrr73Gb37zG1avXt3usZ/5zGcAGD9+PDU1Nad1n0WLFvHWW28xduxY3nrrLfr374/NZgMS9cgbN27kb3/7G9/61reorq5u8xpOp5MZM2Z85DUIIYQQQpwpByIxdgZ7duu2U52LzPE3gQ/OwX3Omv79+wPQu3dvbr31VioqKto91uVyAYkX6AzDaLX/y1/+MmVlZdx4442t9vXr14/nn3+eLVu28NOf/hSA7OzsFmsoKipi8uTJbNmypc37OxwONE3rcA1CCCGEEGebUopVjb7uXsZpO6vBsaZpA4DpwJ/O5n3OpmAwiN/vT/79jTfeYPTo0QBkZGQk93XVE088QWVlJcuWLWu1r76+Hqt5YszPfvYz7rrrLgCampqIRqPJY95++21Gjhz5kdcghBBCCHG27QiEORKNd/cyTtvZbuX2KPBdIKO9AzRNuwe4BxItyjrTldZrZ1JdXR233norAIZh8IUvfIHrr78egNmzZzNnzhxSUlJYt27dx77XqlWr+N73voemaVx11VX85je/AeCDDz7g3nvvRdd1LMti3rx5yeD4nnvu4frrr0/WHgshhBBCdLeYZbGm6fxsLaups1QgrWnaDOBGpdTXNU2bDDyolJrR0Tnl5eXq5FZpkAgMR4wYcVbWKER3ku9tIcSF4PbfJ5JDz957eTevRPQka5v8rPN0HBwPcru4vSD3HK2oJU3TNimlytvadzbLKiYCN2maVgP8HfiUpmn/7yzeTwghhBBCdDO/YbLxPGrddqqzFhwrpb6nlBqglCoEPgesVErdcbbuJ4QQ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KiIQCOD3+ykoKMAwDF599VUmTZpESUkJR4+emJNeWFjIxo0byc/P59///neLteXk5LBmzRomTZrEX/7yl2QWeejQodhsNn784x8nM8LH17Ju3Touv/xy4vE4H374IaNGjToHn6IQQgjR87xxtA5PoBqap+HFIgamYbFVLyCm2ellBRkUPpoc9AHQOLCJ3o5q+oxaR7m7CkfuidHR5CXagLXVTVhZGmnhFOzHosTDLpQb4g2JjDHNgXFG2enVGB+np9iw90lFsyVqeE1lURMK8mHQi1u3MSVf4TA9xBwDiZkxMpwZFKQV0DetLwVpBeS4cqRjxUnOWlsCpVQtUNv8d7+maR8A/YHzKjjetm0bc+fORdd1HA5H8kW7SCSCUorFixcnjx00aBATJkzA5/OxZMkS3G43r776Kg8//DAOhwNd11myZAm5ubnU1dVx0003EY1GsSyLKVOmtGjz1hVPPfVU8oW8oqIinnjiieS+22+/nblz57J3714AnE4nS5cu5f7778fr9WIYBt/61rckOBZCCPGJtDsY5r36D1DNdcGmYRENG9RpqezTs9CVxdjYAYg3D/rQIgx1bmbIwC2kDj7RNk2LghlJJaalYsR1lKWD0tB0C0030O0xHO4Idmccd1qIwWnbAIiFXRw7lIXdmYUt154IjE8zQNU0hS3LgS0vlbilqA54qQp42RX0Em3uqJFhszM5ry92K0Bf9SFfGXYDjpTCj/8BXsC0U2d7n5WbaFohsBoYrZTynbLvHuAegEGDBo3ft29fi3M/+OADRowYcdbX+HHNnj2bGTNmJF+qE6Iz58v3thBCdOT23yfK9Z699/JuXknXxS3Fb3dtoC6YKKdQCkLeKDET3rANIag5GWXUMdy/Hw2Di/VNDEt7B7st8SJawMzE5s8k598hclb7aSjvzcErc1rcw1IWkZiTw57hZKYco3dONc60CM6MMC5nEJs9kY1WFkSi6QQCecRiqXRlJLSmKXRdoee60TNT2Opr5LWjBzFOiul6Od0MT8+iOC2Dfq7UFoF31J5P0FGE0rq3dWv/9P7d1spN07RNSqnytvad9U9F07R04J/At04NjAGUUn8A/gBQXl5+9iN1IYQQQnyirT62j7pgbfLraCiOZSq2670Jak6yVITiwEGybYe5JOVVMu0NANQHitimyihuaiTDilB3iSLiPMrRkanJ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LQsXLuTqq68mFovx+9//npqaGjye7ETfwWCQu+6665Ce43Cus2nTJpYtW8b8+fM7y+68805GjBjB5s2bMc2u/6BDoRCFhYX7XOenP/0p3/72t6murgagurqab33rW/zkJz/hr3/9KwBz5sxh/vz5XHPNNSxevJhTTjmFZ5999pCeUQghRP+xYOubtMTjdDQ0k/Clect5KqbOcPWq9ylpriNs7cRhaM4rfoxKb5j1dhV3pm4ACrlC7WK8TuDGpMjrxZWXIuVvxjb37XVVClzKxoVNnpmmzLlv3nFSO9mSLmJ1vIC1sTw2Rn3UpgLUpgI831GF27AZl5dkUn6c8XkJvKaFoS2UtjB1BsNOY+o0pp3CYacw9JGlBSQyNrXtcWrb4wTcDkoCLooDbly9mZ8M2QVEKidnt0Q7NKzJBsrx1uzUcLVvQ97AbA5z2diDmm1i97RvAV1MM9tJEu355zhKjrng+O67797vvtmzZzN9+nQAli1bxlNPPbXfY7/3ve8d0n3nzJnD97//fWbPns2KFSu44YYbugTH8+fP57XXXuv8+c033+TKK6/k1FNP5dVXX+Wcc87hmmuuYerUqUyePJny8nKqq6s555xz+NSnPsWFF17Y5VqLFi1i3bp1/OpXv+Lqq69m06ZNDB48mGBw/xNmf3D56W9961tcddVVXY45mOt80Jo1a5gyZUqXIHh3Csfq1auZNGkSmzdvZsqUKYTDYWKxGEuWLNnnOqtXr+b222/vUjZjxgx+85vfdP48atQonnzySdra2pg7dy7XXHONBMdCCHGMenXXctaG22mta8J2JnjZfSYAn9q2BLOlmcZyDwOSRVw+4Dk8jgy/TV/KmvR0TjNDFKpdBG0Dv8NFfj5YefUkHPtbnW1vipizgKirlJiziLizgIQjj5TpxzayaRRVue0s26ahI8n21hhbmiM0R1K81+7lvXYvplIMLvYxujzIsFJ/twPqlM7gsJI47CROO47TiuO047isGE4rhtuK4spEcVkRDP3huc6RZIZIMsO2lhj5PiclATdFPhem0cuTAXsKYMjJMHgWhOtg1wpoWpudUzm0Eza/kJ3pomJydoW+A+RPu5WPAXo0IZpoo+7AA/b6gWMuOO4rkyZNoqamhrlz53LBBRfss7+7tIqqqirWr1/Piy++yIsvvsg555zDggULOOecc3juued45513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ICYPysfjNPu6WvslwfFB8Hq9LF++nFWrVlFUVMRvfvObzn3Dhw9n+fLlndvnPve5zn3hcJgdO3YA2TltP0xVVVWXpaU/6KWXXmLlypW8/fbbbNmyhVtu2f+a9xMnTuyyGt+CBQsYP358l2Pmzp3Lqaeeyty5czvLEokEn/zkJ7n55pvZvHkzy5Yt41e/+hVbtmzpPOaqq65i+fLlLF68mG9/+9s0NDTsc//bbrutS5sUFBR86LMLIYQ4PL/74/38eMgEGsxKqjLb+a/3/sn9/3kPYydO6+uqCdGtynwvZ48p5+bTh3HayP6Z/y7B8SGaNWsWO3fuPKhjr7zySubPnw9kg9FPf/rT+z129uzZrF69mvXr13/oNQOBAA8++CBPPPEEra2t3R5zySWXsHDhQgA2b95Mfn4+JSV7PoBaaxYsWMDDDz/MokWLOnuh//a3vzFr1iwuuuiizmMnTJjAddddt889ysrKGD58ONu2bfvQ+gohhOgZv/7T/+On1dNpU0WMSG/ifmVw29d+2NfVEuKgmIbqsaWqj9QxlXN8991398h1v/e97x3UcZZl8cILL/D5z3++s2zz5s1MmTKl8+df/epXnekUl112Gddffz233347//znP/nb3/7GX//6126vbRgG3/jGN/jhD3/IX/7ylw+tR15eHtXV1WzcuJETTzyx2/2DBg1i1apVLFy4kKuuuoo///nPnfvfeOMNqqurGT58OGeeeSZPP/00l112GatXr2batIPrbdiyZQtbtmxhxIgRrFmzpsu+n//85/zv//4vAIWFhbz00ksHdU0hhBAH52d/+AG/GXYWURVgbGINv6oczoQp+/7/QAhx6I6p4LivxONxpkyZws6dOxk7diznnntu577daRXdKS4uprCwkHnz5jF27Fh8BxgpfPXVV3PvvfeydevWA9bpQMt+z5kzh3nz5vH888/zwgsvdAmO586dy5w5czqPe+SRR7jsssv2ucall17Kxo0bGTVqFP/4xz8AmD9/Pq+99hput5uHHnqIoqKifc677bbbuP322w/4DEIIIQ7djx76fzw48hwSysfk6HL+MOkUBg0e2dfVEuK4cUwFxwfbw3u07c45jsVifOITn+A3v/kNX/7ywS23edVVV/HFL36Rhx9++IDHOhwOvva1r3Hfffd96HHhcJiamhpGjRrFd77zHZ5++mmA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# NBVAL_IGNORE_OUTPUT\n", + "ax = plt.figure(figsize=(12, 7)).add_subplot(111)\n", + "res.filter(variable=\"Surface Air Temperature Change\").plumeplot(\n", + " ax=ax, **plot_kwargs\n", + ")\n", + "ax.axhline(1.1)\n", + "ax.axvline(2018)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f29eb3ee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(,\n", + " [,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# NBVAL_IGNORE_OUTPUT\n", + "ax = plt.figure(figsize=(12, 7)).add_subplot(111)\n", + "res.filter(variable=\"Atmospheric Concentrations|CO2\").plumeplot(\n", + " ax=ax, **plot_kwargs\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "dbc14683", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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NhMNSumOYTEZJYgWJfTu3TvsD3swm3rdddcxZ84c/f4TJ/w132azWc8KFzds2DAWLFjA2rVr6du3LwB9+vRh7ty5+ja//vor+fn5ZY4nIiKCWbNm8cILL+DxeMjOzqZFixaAfzJYUGpqKm+//TYAP/30k15THSo7O5uYmBgiIiLYvn073333nf692j6OoOjoaGJiYvS/AW+++aaenQ4VGxvLwYMH2bBhAwC5ubmVDpJTUlL46KOPcDgc5OXl8fHHH5f6uHfeeYdXX32VrKwssrKy2L17N19++SUFBQVlvg+K6969u36mYtGiRVx99dUA7Ny5kyuvvJInnniCxo0bs3fvXq6++moWLVoE+F+vPXv26LW9QTt37qRDhw48+OCDJCcns337dv17wY4WSnnxeHJxOo+Qm7uH+6dM5MILG9GunYXc3J8BH/n5/wsE0E6czsO43Sfo1esKXv3nW7hcDkDjfzv34XDAtddew9tvf4LXWx+7vRUORzT16l3GBRc0xedrTGTkZUREtMVub4nN1gyLpWEgQA4G2JX7HO3Tpw+vv/66ntnfv38/hw8f5pprruG9997j2LFjABw/fhzwJ99yc3NL3dfXX3+t/w66XC62bt1K69atufbaaykoKOBf//oXgJ4YHD16NBEREWRnZ3PvvfeyZs0ajh07ViLoPlWSkT6PtWrVin//+9+Af8bviBEj+OGHH+jcubP+i19c6Id4qND2Rl27dmX16tUAXHbZZWEf7sEPnOL7SkpKYs2aNSX2u27dukoezZkvmF0uLcN8OtsxB0sz3PpCJWVPPNT7LoeUQRjrYKGSsDHpNdThHTukNENAyRrpvn376i3wyjJr1iwmTpxIYmIiHo+H1NRU5s2bx8MPP8zEiRNp3749RqORGTNmMGTIEMaNG0diYmKpn5W9e/dm1KhRDBo0CIvFAsDYsWPJysqic+fOKKVo3LgxH3zwQblj6tSpE4mJibzzzjs88MADpKen89RTT+kTAAEmTJjAmDFjiI+PJz4+vtSa4L59+zJv3jzi4+OJjY3lqquu0r93Oo4j6I033tAnG7Zr144FCxaUeIzFYmHx4sXcc889FBYWYrfbycjIqNT+k5OTGThwIImJiTRt2pQOHToQHR0d9piCggI+//xz5s2bp99Xr149evTowUcffVTm+6C42bNnM2bMGJ5//nl9siHA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7W+++aba4w0VOvb09HTmzJlTpZK1UJ9++mmFjzkdx1EVZZWsde3atdJleBU5dOgQt9xyC2+//bY+12XdunXs3LmTDh06VGo8Z7OHH36Y33//nR9//BGbzUZubi4vvPBCXQ/rrFbZBVnuAh4HHECwqFoB7WppXGcMu/2iWn+OtNgmtf4cNcXn8/Hdd99hs53aPxQ2m420tDRWrFjB4sWLGT58OOA/QzJ79mz69OlT7vbBD+qCggL69OnDnDlzuPfee3nkkUfo1asXy5cvJysri7S0tEqPafXq1WRkZPDtt98SERFBWloaDoejVo+jqurVq1elx1utVv260WjE46laL3Ahqus/x3I47KpOKVzZmljMXNOw9H8ayyMla1KyFvTyyy+Tnp4eNmG8R48e+vXRo0djs9n473//S0pKChMnTmTixIkcOXKEiIgI/vnPfxIXF8eRI0dKfc+UNz6v18sf//hHvvnmG1q0aMGHH36o/y0r67UJzuU5evQoXbt2JSsri59//pkxY8bgcrnw+XwsW7aMSy+9lLfeeotZs2bhcrm48sor+cc//hH2j2JBQQH//Oc/ycrK0v+GR0VFha34WNp7xev1cuedd+q/B3fccQf33XcfO3fuLPW1ee+993j88ccxGo1ER0ezZs2aSr1HzloVpaz9mW12AI0q89javNRFaUdtKe0UwulWvFwhqKLSjr/+9a/67f/+979KKaUefPDBUks7LrjgAuVyuUrd18cff6wGDx6sWrZsqZxOp1JKqVdeeUUNGjRI3+aXX35ReXl55Y79hx9+UBdddJFyu91q8ODBaunSpUopf2lD69atlVL+0o4777xTKaXUjz/+WGppxwcffKD69++vlFJq27Ztymq1qlWrVp224whKTExUa9as0Y9h8uTJSqnw07bFSztycnJKLe0ILdlISEhQu3fvVuvXr1edOnVShYWFKjc3V1166aVS2iFq3Mqj2eqdA0dr9LLyaHaFzysla1KyVrxkLbS048Ybb1QffPBBiTEHpaenq379+imPx1+Sec0116hff/1VKaXUd999p3r16qWUKvs9U9b4du/erYxGo/438+abb1Zvvvlmha9N8Od55MgR/e/Z3Xffrd566y39NSsoKFBbt25V/fv31//mTJgwQb3xxhthx7Z582aVlJRU5rErVfp7JTMzU/3hD3/QHxMsGSrr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sVqtrFy5ko0bN+rlXY899hh79uxh165d7Nmzh8mTJ+uf7U8++SRvvfUWjRs3plWrVnTp0oX777+/xFg6duyI2+3myy+/1P92BN1www369SuuuIJ9+/YBMHPmTKZPn65/hrdt25Zp06bx/PPP8+abb1bqNRDnpooKGC8CrMAOYD+wDzhZy2MSZzCfz8d3332HzWY7pf3YbDbS0tJYsWIFixcvZvjw4YD/DMns2bPp06dPudsHA9CCggL69OnDnDlzuPfee3nkkUfo1asXy5cvJysri7S0tEqPafXq1WRkZPDtt98SERFBWloaDoejVo+jqurVq1elx1utVv260WjE46l898oVK1Zw8uRJOnToAEBBQQF2u53+/fuX+z6ozBjnzZvH999/zyeffEKXLl3YuHFjpcY0depU+vXrx6effkpKSgorVqwgLi6u0sckTp/VvxzmSK6z4gdWQeMoK2mxTcp9TPElwqdNm8bYsWNZt24d/fv356abbgL85VnBf2JvvfVW7rvvPnr06MGePXvo06cP27Zt48knnyQ6Opoff/wRgBMnTjB06FBefvnlUpMQw4YNY8mSJfTr1w+Xy8XKlSuZO3cur732GtHR0WzYsAGn00lKSgq9e/cu8Y91kNfrZeXKldx5552A/x/LtWvXYjKZyMjIYPr06Sxbtoy5c+cSERHBtm3b2LJlS5kLkLz++us0aNCAwsJCkpOTGTp0KM8++2ytHUfoz6Bt27YsX76c22+/ndmzZ9OzZ08effRRHn/8cV588UXA/097ZmYmLpeLuLg4Fi9eTHJyMjk5Ofo/5aG2b9/OqlWryM3NJTY2lgkTJrBp0yaWLVvG5s2bcbvddO7cudQl04MeeughHnnkkRKBdJDb7ebNN9/kpZdeAuDnn38uEZR37dqVOXPmlPkc4vxQUY10XyAZCBZQ/h+wQdO0LzRNe7y2ByfOPL1792b27Nn67eCH8HXXXRf2gRKs6zWbzWE1ZqGGDRvGggULWLt2LX379gWgT58+zJ07V9/m119/JT8/v8zxREREMGvWLF544QU8Hg/Z2dm0aNEC8NfFBaWmpurN+n/66Sc90xMqOzubmJgYIiIi2L59O999953+vdo+jqDo6GhiYmJYu3YtAG+++aaenQ4VGxvLwYMH2bBhAwC5ubmVDpJTUlL46KOPcDgc5OXllTmJ75133uHV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x49Hnz59ErbZH/7wBxQVFaG4uBhz587FypUrsX37dkyZMiVla/KRI0fw05/+FNu2bUNJSQkWLVrk+K4Bhvi2yn/ooYfstMuWLUMwGERxcTGmTp2K9957D3/729/sbcgTbRFORKiqqkLHjh0BAL/73e/w2GOP4bzzzgNgbIV96623Jq1/a6Fz585Ys2YNPvjgAzz//POYOnWqI3zVqlX2Z0jm//2//2e/OF111VVNVV2GYbJNsq0PG/MAMARAXwB7Uol/pm4RXvXOO3T8lVUNelSZ29EmQlEUKi4uto+XXnqJiIimTZtGL7/8sh2vTZs2tvuGG26gTZs2ERHRl19+Sb169SIiojlz5tBdd91lx/vuu+9i0srXq1atoptuuomIiOrq6qhbt25UU1NDixYtokcffZSIiGpra6msrIw+//zzmLpb+UQiEbr22mvpjTfeICKiyspKCofDRET01ltv0aRJk4iI6PHHH6cZM2YQEdGuXbtIVVV7O9/zzz+fjh49SkREx44dIyKimpoaKigooG+//bZR70Nug2uuuYaIiIqKiqiiooKIiB544AH7uQ4dOpRmzZpllyVveWzdt7y18UMPPUQDBw6k2tpaOnr0KHXq1IlCoRBt3bqViouL6fTp03Ty5Em66KKL7K2M3VuE33LLLbRs2TKqrKyk8847z95KOd7n4KGHHqK+fftSTU0NERGNGzeOli5dSkREzz33HE2YMIGIiAoLC+mrr74iIqLjx48TEdFjjz1mt9HHH39M3bt3p9OnTzvuady4cbR582YiMrY5t9pa3iLcvVUzEdGECRPsz7fVdm+//Tbl5+fb7RKvzdauXUsDBw6kU6dOEVH0M+JVjsW0adOoR48edtveeOONdpny1tPyd23dunV06623kq7rpGkajR07ljZu3Eh79uyhiy++OOYz6v6eym339ttvU/v27am4uJi6detGPXv2pMrKSiIi6tixI504ccKz3mcC1dXVdNVVV1EwGKSCggJ66aWX6N5776XevXtTUVER/epXvyIi4/nNnDmTysrK6OKLL6Y1a9bE5KXrOnXs2JFqa2uJyPjMlZeX04cffkgFBQV2PHk7cIZhWiYtcotwInpHCNEjm3VoDrQdPDgr5VrDCtJhw4YNju7kkydPorq6Ghs2bMBLL71k+1vWr3iMGTMGd911F+rq6vDmm29iyJAh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sjL6/PPPY+pu5ROJROjaa6+lN954g4iIKisrbeviW2+9RZMmTSIioscff5xmzJhBRES7du0iVVVta+L5559PR48eJSKiY8eOERFRTU0NFRQU0Lffftuo9yG3wTXXXENEREVFRVRRUUFERA888ID9XIcOHUqzZs2yy7rgggto69atjvuWrbcPPfQQDRw4kGpra+no0aPUqVMnCoVCtHXrViouLqbTp0/TyZMn6aKLLqL58+cTUaxF+pZbbqFly5ZRZWUlnXfeeRQKhYgo/ufgoYceor59+1JNTQ0REY0bN46WLl1KRETPPfccTZgwgYiICgsL6auvviIiouPHjxMR0WOPPWa30ccff0zdu3en06dPO+5p3LhxtHnzZiIiqqqqsts6nkXaYsKECfbn22q7t99+m/Lz8+12iddma9eupYEDB9KpU6eIKPoZSWaR7tGjh922N954o12mbF2Xv2vr1q2jW2+9lXRdJ03TaOzYsbRx40bas2cPXXzxxTGf0UQW6YkTJ9Krr77qqNOJEyeoY8eORETUsWNHOnHihGfdGYZhWiOZWqR5HelWTF5eHnbu3JlWmg0bNjjGZZ48eRLV1dXYsGEDXnrpJdu/Y8eOCfMZM2YM7rrrLtTV1eHNN9/EkCFDkJeXh/Xr12P37t1YuXIlAKCyshL79u3DBRdc4EhvWYgPHz6M3r17Y+TIkXb8adOmYd++fRBCIBwOAwDeeecde+xwMBhEMBj0rNeCBQuwevVqAMChQ4ewb98+nH322Y12H+42qKysxIkTJzB06FAAwLRp03DdddfZ4ZMnTwYAfPLJJzj33HPRv39/AED79u096zd27Fjk5OQgJycH55xzDv71r3/h3XffxYQJE5Cbm4vc3FxcffXVnmlDoRDWrl2LJ554Au3atcOAAQOwbt06jBs3Lu7nAADGjx+PvLw8AMCWLVuwatUqAMY2ynPmzAEAlJeXY/r06fjJT36CSZMmATDG9N55550AgF69euH888/Hp59+6qhTeXk57rnnHkyZMgWTJk1Ct27dPOvuxvh/GMsll1xit0m8NtuwYQNmzJiB/Px8AECnTp1SKnP+/Pm49tprU4prlb9+/XqUlpYCMHp59u3bh127duG6665D586d0yqfYRiGaXxYSDcDzi+IL9SaG7qu4/3330dubm698snNzcWwYcOwbt06rFixAtdf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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# NBVAL_IGNORE_OUTPUT\n", + "ax = plt.figure(figsize=(12, 7)).add_subplot(111)\n", + "ax, legend_items = res.filter(\n", + " variable=\"Effective Radiative Forcing*\",\n", + " scenario=\"ssp245\",\n", + " year=range(2000, 2030),\n", + ").plumeplot(\n", + " quantiles_plumes=[((0.05, 0.95), 0.5), ((0.5,), 1.0)],\n", + " quantile_over=\"run_id\",\n", + " hue_var=\"variable\",\n", + " hue_label=\"Variable\",\n", + " style_var=\"scenario\",\n", + " style_label=\"Scenario\",\n", + " ax=ax,\n", + " time_axis=\"year\",\n", + ")\n", + "ax.legend(handles=legend_items, ncol=2, loc=\"center right\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a642793a-0520-4ac8-b5c8-a742994b9029", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/setup.cfg b/setup.cfg index 594e7591..d8356b49 100644 --- a/setup.cfg +++ b/setup.cfg @@ -59,9 +59,13 @@ fair = magicc = pymagicc >= 2.0.0, < 3 +ciceroscmpy = + ciceroscm + models = %(fair)s %(magicc)s + %(ciceroscmpy)s notebooks = ipywidgets @@ -107,6 +111,8 @@ openscm_runner = adapters/ciceroscm_adapter/utils_templates/run_dir/input_RF/RFLUC/*.txt adapters/ciceroscm_adapter/utils_templates/run_dir/input_RF/RFSUN/*.txt adapters/ciceroscm_adapter/utils_templates/run_dir/input_RF/RFVOLC/*.txt + adapters/ciceroscm_py_adapter/*.txt + [flake8] max-line-length = 88 diff --git a/src/openscm_runner/adapters/__init__.py b/src/openscm_runner/adapters/__init__.py index 6cb01788..115353b9 100644 --- a/src/openscm_runner/adapters/__init__.py +++ b/src/openscm_runner/adapters/__init__.py @@ -5,11 +5,13 @@ from .base import _Adapter from .ciceroscm_adapter import CICEROSCM # noqa: F401 +from .ciceroscm_py_adapter import CICEROSCMPY # noqa: F401 from .fair_adapter import FAIR # noqa: F401 from .magicc7 import MAGICC7 # noqa: F401 _registered_adapters: List[Type[_Adapter]] = [ CICEROSCM, + CICEROSCMPY, FAIR, MAGICC7, ] diff --git a/src/openscm_runner/adapters/ciceroscm_adapter/_utils.py b/src/openscm_runner/adapters/ciceroscm_adapter/_utils.py index 6fdee499..28c89b6d 100644 --- a/src/openscm_runner/adapters/ciceroscm_adapter/_utils.py +++ b/src/openscm_runner/adapters/ciceroscm_adapter/_utils.py @@ -5,45 +5,6 @@ import platform -def _get_unique_index_values(idf, index_col, assert_all_same=True): - """ - Get unique values in index column from a dataframe - - Parameters - ---------- - idf : :obj:`pd.DataFrame` - Dataframe to get index values from - - index_col : str - Column in index to get the values for - - assert_all_same : bool - Should we assert that all the values are the same before - returning? If True, only a single value is returned. If - False, a list is returned. - - Returns - ------- - str, list - Values found, either a string or a list depending on - ``assert_all_same``. - - Raises - ------ - AssertionError - ``assert_all_same`` is True and there's more than one - unique value. - """ - out = idf.index.get_level_values(index_col).unique().tolist() - if assert_all_same: - if len(out) > 1: - raise AssertionError(out) - - return out[0] - - return out - - def _get_executable(rundir): """ Get the right executable for the operating system diff --git a/src/openscm_runner/adapters/ciceroscm_adapter/ciceroscm.py b/src/openscm_runner/adapters/ciceroscm_adapter/ciceroscm.py index be45c050..20adde27 100644 --- a/src/openscm_runner/adapters/ciceroscm_adapter/ciceroscm.py +++ b/src/openscm_runner/adapters/ciceroscm_adapter/ciceroscm.py @@ -6,12 +6,22 @@ from subprocess import check_output # nosec from ..base import _Adapter -from ._run_ciceroscm_parallel import run_ciceroscm_parallel +from ..utils.cicero_utils._run_ciceroscm_parallel import run_ciceroscm_parallel from ._utils import _get_executable +from .ciceroscm_wrapper import CiceroSCMWrapper LOGGER = logging.getLogger(__name__) +def _execute_run(cfgs, output_variables, scenariodata): + cscm = CiceroSCMWrapper(scenariodata) + try: + out = cscm.run_over_cfgs(cfgs, output_variables) + finally: + cscm.cleanup_tempdirs() + return out + + class CICEROSCM(_Adapter): # pylint: disable=too-few-public-methods """ Adapter for CICEROSCM @@ -40,7 +50,7 @@ def _run(self, scenarios, cfgs, output_variables, output_config): if output_config is not None: raise NotImplementedError("`output_config` not implemented for CICERO-SCM") - runs = run_ciceroscm_parallel(scenarios, cfgs, output_variables) + runs = run_ciceroscm_parallel(scenarios, cfgs, output_variables, _execute_run) return runs @classmethod diff --git a/src/openscm_runner/adapters/ciceroscm_adapter/ciceroscm_wrapper.py b/src/openscm_runner/adapters/ciceroscm_adapter/ciceroscm_wrapper.py index 48e7c0c9..6f1e7bb7 100644 --- a/src/openscm_runner/adapters/ciceroscm_adapter/ciceroscm_wrapper.py +++ b/src/openscm_runner/adapters/ciceroscm_adapter/ciceroscm_wrapper.py @@ -14,7 +14,8 @@ from scmdata import ScmRun, run_append from ...settings import config -from ._utils import _get_executable, _get_unique_index_values +from ..utils.cicero_utils._utils import _get_unique_index_values +from ._utils import _get_executable from .make_scenario_files import SCENARIOFILEWRITER from .read_results import CSCMREADER from .write_parameter_files import PARAMETERFILEWRITER @@ -22,6 +23,21 @@ LOGGER = logging.getLogger(__name__) +def get_endyear(scenariodata): + """ + Get end year from scenariodata + """ + scenarioframe = scenariodata.reset_index( + ("model", "region", "scenario", "unit"), drop=True + ) + years = scenarioframe.columns + if isinstance(years[0], pd.Timestamp): + endyear = int(years[-1].year) + else: + endyear = int(years[-1]) + return endyear + + class CiceroSCMWrapper: # pylint: disable=too-few-public-methods """ CICEROSCM Wrapper for parallel runs @@ -35,7 +51,7 @@ def __init__(self, scenariodata): self.sfilewriter = SCENARIOFILEWRITER(udir) self.pamfilewriter = PARAMETERFILEWRITER(udir) self._setup_tempdirs() - self.resultsreader = CSCMREADER(self.rundir) + self.resultsreader = CSCMREADER(self.rundir, get_endyear(scenariodata)) self.scen = _get_unique_index_values(scenariodata, "scenario") self.model = _get_unique_index_values(scenariodata, "model") diff --git a/src/openscm_runner/adapters/ciceroscm_adapter/make_scenario_files.py b/src/openscm_runner/adapters/ciceroscm_adapter/make_scenario_files.py index 4cdf43c5..4e580a65 100644 --- a/src/openscm_runner/adapters/ciceroscm_adapter/make_scenario_files.py +++ b/src/openscm_runner/adapters/ciceroscm_adapter/make_scenario_files.py @@ -4,15 +4,13 @@ # TODO: optimise to speed up reading and writing -import csv import logging import os import numpy as np -import openscm_units import pandas as pd -from ._utils import _get_unique_index_values +from ..utils.cicero_utils.make_scenario_common import COMMONSFILEWRITER LOGGER = logging.getLogger(__name__) @@ -31,83 +29,17 @@ def _read_ssp245_em(ssp245_em_file): return ssp245df -def _unit_conv_factor(unit, cicero_unit): - with openscm_units.unit_registry.context("NOx_conversions"): - - if cicero_unit.startswith("GgH1"): - conv_factor = ( - openscm_units.unit_registry(unit) - .to(cicero_unit.replace("GgH1", "GgHalon1")) - .magnitude - ) - elif cicero_unit.startswith("GgH2"): - conv_factor = ( - openscm_units.unit_registry(unit) - .to(cicero_unit.replace("GgH2", "GgHalon2")) - .magnitude - ) - else: - conv_factor = openscm_units.unit_registry(unit).to(cicero_unit).magnitude - - return conv_factor - - -class SCENARIOFILEWRITER: +class SCENARIOFILEWRITER(COMMONSFILEWRITER): """ Class to write scenariofiles: """ def __init__(self, udir): - self.components = [] - self.units = [] - self.concunits = [] - - self.component_dict = { - "CO2_lu": ["CO2|MAGICC AFOLU", 1], - "CFC-113": ["CFC113", 1], - "CFC-114": ["CFC114", 1], - "SO2": ["Sulfur", 1], - "NMVOC": ["VOC", 1], - "CFC-11": ["CFC11", 1], - "CFC-115": ["CFC115", 1], - "CFC-12": ["CFC12", 1], - "HCFC-141b": ["HCFC141b", 1], - "HCFC-142b": ["HCFC142b", 1], - "HCFC-22": ["HCFC22", 1], - "H-1211": ["Halon1211", 1], - "H-1301": ["Halon1301", 1], - "H-2402": ["Halon2402", 1], - "CO2": ["CO2|MAGICC Fossil and Industrial", 1], - "CH4": ["CH4", 1], - "N2O": ["N2O", 1], - "CH3Br": ["CH3Br", 1], - "CCl4": ["CCl4", 1], - "CH3CCl3": ["CH3CCl3", 1], - "HCFC-123": ["HCFC-123", 1], - "HFC125": ["HFC125", 1], - "HFC134a": ["HFC134a", 1], - "HFC143a": ["HFC143a", 1], - "HFC227ea": ["HFC227ea", 1], - "HFC23": ["HFC23", 1], - "HFC245fa": ["HFC245fa", 1], - "HFC32": ["HFC32", 1], - "HFC4310mee": ["HFC4310mee", 1], - "C2F6": ["C2F6", 1], - "C6F14": ["C6F14", 1], - "CF4": ["CF4", 1], - "SF6": ["SF6", 1], - "NOx": ["NOx", 1], - "CO": ["CO", 1], - "NH3": ["NH3", 1], - "BMB_AEROS_BC": ["BMB_AEROS_BC", 1], - "BMB_AEROS_OC": ["BMB_AEROS_OC", 1], - "BC": ["BC", 1], - "OC": ["OC", 1], - } # Halon1212, CH3Cl - self.initialize_units_comps(os.path.join(udir, "gases_v1RCMIP.txt")) - self.years = np.arange(2015, 2101) # Temporary default values, is updated later + """ + Intialise scenario file writer + """ + super().__init__(udir) self.ssp245data = _read_ssp245_em(os.path.join(udir, "ssp245_em_RCMIP.txt")) - self.udir = udir def get_top_of_file(self, ssp245_em_file): """ @@ -119,92 +51,6 @@ def get_top_of_file(self, ssp245_em_file): return top_of_file - def initialize_units_comps(self, gasfile): - """ - Get the list of gas components and units - from the gases file: - """ - with open(gasfile, "r", encoding="ascii") as txt_rcpfile: - gasreader = csv.reader(txt_rcpfile, delimiter="\t") - next(gasreader) - for row in gasreader: - if row[1] == "X": - continue - - component = row[0] - unit = row[1] - - if component == "N2O" and unit == "Tg_N": - # in openscm-units, to get the mass of nitrogen, have - # to use the unit "Tg N2ON" (converting to "Tg N" just - # converts using the mass fraction of a single nitrogen - # atom, admittedly this isn't immediately obvious and - # arguably is a bug in openscm-units) - unit = "TgN2ON" - elif "_" in unit: - unit = unit.replace("_", "") - else: - comp_str = component.replace("-", "").replace("BMB_AEROS_", "") - unit = f"{unit}{comp_str}" - - unit = f"{unit} / yr" - - self.components.append(component) - self.units.append(unit) - self.concunits.append(row[2]) - - self.components.insert(1, "CO2_lu") - self.units.insert(1, "PgC / yr") - self.concunits.insert(1, "ppm") - - def get_unit_convfactor(self, comp, scenarioframe): - """ - Get unit and conversion factor for component - """ - # Find the unit and the original unit - cicero_unit = self.units[self.components.index(comp)] - unit = _get_unique_index_values( - scenarioframe[ - scenarioframe.index.get_level_values("variable") - == f"Emissions|{self.component_dict[comp][0]}" - ], - "unit", - ) - - return _unit_conv_factor(unit, cicero_unit) - - def transform_scenarioframe(self, scenarioframe): - """ - Get rid of multiindex and interpolate scenarioframe - """ - if ( - _get_unique_index_values(scenarioframe, "region") != "World" - ): # pragma: no cover - raise NotImplementedError() # emergency valve - - scenarioframe = scenarioframe.reset_index( - ("model", "region", "scenario", "unit"), drop=True - ) - years = scenarioframe.columns - - if not isinstance(years[0], np.int64): - yearsint = [np.int64(d.year) for d in years] - scenarioframe.rename( - lambda d: np.int64(d.year), axis="columns", inplace=True - ) - else: - yearsint = years - - self.years = np.arange(yearsint[0], yearsint[-1] + 1) - for year in self.years: - if year not in scenarioframe.columns: - scenarioframe[year] = np.nan - - scenarioframe = scenarioframe.reindex(sorted(scenarioframe.columns), axis=1) - interpol = scenarioframe.interpolate(axis=1) - - return interpol - def write_scenario_data(self, scenarioframe, odir, scenario): """ Take a scenariodataframe @@ -215,53 +61,9 @@ def write_scenario_data(self, scenarioframe, odir, scenario): "inputfiles", f"{scenario}_em.txt", ) - logging.getLogger("pyam").setLevel(logging.ERROR) - avail_comps = [ - c.replace("Emissions|", "") - for c in _get_unique_index_values( - scenarioframe, "variable", assert_all_same=False - ) - ] - ciceroscm_comps = [v[0] for v in self.component_dict.values()] - not_used_comps = set(avail_comps) - set(ciceroscm_comps) - if not_used_comps: - LOGGER.warning("%s not used by CICERO-SCM", not_used_comps) - - interpol = self.transform_scenarioframe(scenarioframe) - printout_frame = pd.DataFrame(columns=self.components, index=self.years) - - # Setting conversion factors for components with data from scenarioframe - for comp in self.components: - if self.component_dict[comp][0] in avail_comps: - convfactor = self.get_unit_convfactor(comp, scenarioframe) - if ( - self.component_dict[comp][0] in ("BC", "OC") - and f"BMB_AEROS_{self.component_dict[comp][0]}" not in avail_comps - ): - printout_frame[comp] = ( - interpol.T[f"Emissions|{self.component_dict[comp][0]}"] - * convfactor - ).to_numpy() - self.ssp245data[ - f"BMB_AEROS_{self.component_dict[comp][0]}" - ].loc[ - str(self.years[0]) : str(self.years[-1]) - ].to_numpy().astype( - np.float - ) - else: - printout_frame[comp] = ( - interpol.T[f"Emissions|{self.component_dict[comp][0]}"] - * convfactor - ) - else: - LOGGER.warning("No %s data available, using ssp245", comp) - printout_frame[comp] = ( - self.ssp245data[comp] - .loc[str(self.years[0]) : str(self.years[-1])] - .to_numpy() - ) - - printout_frame = printout_frame.astype(float).reset_index() + printout_frame = self.make_printoutframe( + scenarioframe, self.ssp245data + ).reset_index() printout_frame_fmt = ["%d"] + ["%.8f"] * (printout_frame.shape[1] - 1) with open(fname, "w", encoding="ascii") as sfile: diff --git a/src/openscm_runner/adapters/ciceroscm_adapter/read_results.py b/src/openscm_runner/adapters/ciceroscm_adapter/read_results.py index 1499425c..5b97adcb 100644 --- a/src/openscm_runner/adapters/ciceroscm_adapter/read_results.py +++ b/src/openscm_runner/adapters/ciceroscm_adapter/read_results.py @@ -4,62 +4,76 @@ """ import os -import numpy as np import pandas as pd +from ..utils.cicero_utils.cicero_forcing_postprocessing_common import ( + get_data_from_forc_common, + openscm_to_cscm_dict, +) -def get_data_from_conc_file(folder, variable): + +def get_data_from_conc_file(folder, variable, endyear): """ Get data from concentration files """ df_temp = pd.read_csv(os.path.join(folder, "temp_conc.txt"), delimiter=r"\s+") - years = df_temp.Year[:] - timeseries = df_temp[variable].to_numpy() # pylint:disable=unsubscriptable-object + years = df_temp.Year[: endyear - df_temp.Year[0] + 1] + timeseries = df_temp[variable].to_numpy()[ + : len(years) + ] # pylint:disable=unsubscriptable-object return years, timeseries -def get_data_from_em_file(folder, variable): +def get_data_from_em_file(folder, variable, endyear): """ Get data from emissions files """ df_temp = pd.read_csv(os.path.join(folder, "temp_em.txt"), delimiter=r"\s+") - years = df_temp.Year[:] - timeseries = df_temp[variable].to_numpy() # pylint:disable=unsubscriptable-object + years = df_temp.Year[: endyear - df_temp.Year[0] + 1] + timeseries = df_temp[variable].to_numpy()[ + : len(years) + ] # pylint:disable=unsubscriptable-object return years, timeseries -def get_data_from_temp_file(folder, variable): +def get_data_from_temp_file(folder, variable, endyear): """ Get data from temperature files """ df_temp = pd.read_csv(os.path.join(folder, "temp_temp.txt"), delimiter=r"\s+") - years = df_temp.Year[:] - timeseries = df_temp[variable].to_numpy() # pylint:disable=unsubscriptable-object + years = df_temp.Year[: endyear - df_temp.Year[0] + 1] + timeseries = df_temp[variable].to_numpy()[ + : len(years) + ] # pylint:disable=unsubscriptable-object return years, timeseries -def get_data_from_ohc_file(folder, variable): +def get_data_from_ohc_file(folder, variable, endyear): """ Get data from ocean heat content files """ df_temp = pd.read_csv(os.path.join(folder, "temp_ohc.txt"), delimiter=r"\s+") - years = df_temp.Year[:] + years = df_temp.Year[: endyear - df_temp.Year[0] + 1] # Units are 10^22J and output should be 10^21J = ZJ conv_factor = 10.0 timeseries = ( - df_temp[variable].to_numpy() # pylint:disable=unsubscriptable-object + df_temp[variable].to_numpy()[ + : len(years) + ] # pylint:disable=unsubscriptable-object * conv_factor ) return years, timeseries -def get_data_from_rib_file(folder, variable): +def get_data_from_rib_file(folder, variable, endyear): """ Get data from rib files """ df_temp = pd.read_csv(os.path.join(folder, "temp_rib.txt"), delimiter=r"\s+") - years = df_temp.Year[:] - timeseries = df_temp[variable].to_numpy() # pylint:disable=unsubscriptable-object + years = df_temp.Year[: endyear - df_temp.Year[0] + 1] + timeseries = df_temp[variable].to_numpy()[ + : len(years) + ] # pylint:disable=unsubscriptable-object return years, timeseries @@ -75,50 +89,9 @@ class CSCMREADER: Class to read CICERO-SCM output data """ - def __init__(self, odir): + def __init__(self, odir, endyear): self.odir = odir - self.variable_dict = { - "Surface Air Temperature Change": "dT_glob_air", - # GMST - "Surface Air Ocean Blended Temperature Change": "dT_glob", - # ERFs - "Effective Radiative Forcing": "Total_forcing+sunvolc", - "Effective Radiative Forcing|Anthropogenic": "Total_forcing", - "Effective Radiative Forcing|Aerosols": "Aerosols", - "Effective Radiative Forcing|Aerosols|Direct Effect": "Aerosols|Direct Effect", - "Effective Radiative Forcing|Aerosols|Direct Effect|BC": "BC", - "Effective Radiative Forcing|Aerosols|Direct Effect|OC": "OC", - "Effective Radiative Forcing|Aerosols|Direct Effect|SOx": "SO2", - "Effective Radiative Forcing|Aerosols|Indirect Effect": "SO4_IND", - "Effective Radiative Forcing|Greenhouse Gases": "GHG", - "Effective Radiative Forcing|F-Gases": "Fgas", - "Effective Radiative Forcing|HFC125": "HFC125", - "Effective Radiative Forcing|HFC134a": "HFC134a", - "Effective Radiative Forcing|HFC143a": "HFC143a", - "Effective Radiative Forcing|HFC227ea": "HFC227ea", - "Effective Radiative Forcing|HFC23": "HFC23", - "Effective Radiative Forcing|HFC245fa": "HFC245fa", - "Effective Radiative Forcing|HFC32": "HFC32", - "Effective Radiative Forcing|HFC4310mee": "HFC4310mee", - "Effective Radiative Forcing|CF4": "CF4", - "Effective Radiative Forcing|C6F14": "C6F14", - "Effective Radiative Forcing|C2F6": "C2F6", - "Effective Radiative Forcing|SF6": "SF6", - "Effective Radiative Forcing|CO2": "CO2", - "Effective Radiative Forcing|CH4": "CH4", - "Effective Radiative Forcing|N2O": "N2O", - "Emissions|CO2": "CO2", - "Emissions|CH4": "CH4", - "Emissions|N2O": "N2O", - # Heat uptake - "Heat Uptake": "RIB_glob", - "Heat Content|Ocean": "OHCTOT", - # concentrations - "Atmospheric Concentrations|CO2": "CO2", - "Atmospheric Concentrations|CH4": "CH4", - "Atmospheric Concentrations|N2O": "N2O", - } - self.rib_list = "RIB_glob" + self.variable_dict = openscm_to_cscm_dict self.temp_list = ( "dT_glob", "dT_glob_air", @@ -130,6 +103,7 @@ def __init__(self, odir): self.ohc_list = "OHCTOT" self.volc_series = self.read_volc_series() self.sun_series = self.read_sun_series() + self.endyear = endyear def read_volc_series(self): """ @@ -165,14 +139,14 @@ def read_variable_timeseries(self, scenario, variable, sfilewriter): ) if "Concentration" in variable: years, timeseries = get_data_from_conc_file( - folder, self.variable_dict[variable] + folder, self.variable_dict[variable], self.endyear ) unit = sfilewriter.concunits[ sfilewriter.components.index(self.variable_dict[variable]) ] elif "Emissions" in variable: years, timeseries = get_data_from_em_file( - folder, self.variable_dict[variable] + folder, self.variable_dict[variable], self.endyear ) unit = sfilewriter.units[ sfilewriter.components.index(self.variable_dict[variable]) @@ -184,21 +158,20 @@ def read_variable_timeseries(self, scenario, variable, sfilewriter): unit = "W/m^2" elif self.variable_dict[variable] in self.temp_list: years, timeseries = get_data_from_temp_file( - folder, self.variable_dict[variable] + folder, self.variable_dict[variable], self.endyear ) unit = "K" - elif self.variable_dict[variable] in self.rib_list: + elif self.variable_dict[variable] == "RIB_glob": years, timeseries = get_data_from_rib_file( - folder, self.variable_dict[variable] + folder, self.variable_dict[variable], self.endyear ) unit = "W/m^2" elif self.variable_dict[variable] in self.ohc_list: years, timeseries = get_data_from_ohc_file( - folder, self.variable_dict[variable] + folder, self.variable_dict[variable], self.endyear ) unit = "ZJ" - return years, timeseries, unit def get_volc_forcing(self, startyear, endyear): @@ -221,60 +194,19 @@ def get_data_from_forc_file(self, folder, variable): """ Get data from forcing files """ - forc_sums = ["Aerosols", "Aerosols|Direct Effect"] - fgas_list = [ - "CFC-11", - "CFC-12", - "CFC-113", - "CFC-114", - "CFC-115", - "CH3Br", - "CCl4", - "CH3CCl3", - "HCFC-22", - "HCFC-141b", - "HCFC-123", - "HCFC-142b", - "H-1211", - "H-1301", - "H-2402", - "HFC125", - "HFC134a", - "HFC143a", - "HFC227ea", - "HFC23", - "HFC245fa", - "HFC32", - "HFC4310mee", - "C2F6", - "C6F14", - "CF4", - "SF6", - ] - ghg_not_fgas = ["CO2", "CH4", "N2O", "TROP_O3", "STRAT_O3", "STRAT_H2O"] - df_temp = pd.read_csv(os.path.join(folder, "temp_forc.txt"), delimiter=r"\s+") - years = df_temp.Year[:] - if variable in forc_sums: - timeseries = np.zeros(len(years)) - for comp, value in self.variable_dict.items(): - if variable in comp and value not in forc_sums: - timeseries = timeseries + df_temp[value].to_numpy() - elif variable in ("Fgas", "GHG"): - timeseries = np.zeros(len(years)) - for comp in fgas_list: - timeseries = timeseries + df_temp[comp].to_numpy() - if variable == "GHG": - for comp in ghg_not_fgas: - timeseries = timeseries + df_temp[comp].to_numpy() - elif variable == "Total_forcing+sunvolc": - timeseries = df_temp["Total_forcing"].to_numpy() - timeseries = timeseries + self.get_volc_forcing( - years.to_numpy()[0], years.to_numpy()[-1] + years = df_temp.Year[: self.endyear - df_temp.Year[0] + 1] + if variable == "Total_forcing+sunvolc": + volc = self.get_volc_forcing(years.to_numpy()[0], years.to_numpy()[-1]) + sun = self.get_sun_forcing(years.to_numpy()[0], years.to_numpy()[-1]) + return get_data_from_forc_common( + df_temp[: self.endyear - df_temp.Year[0] + 1], + variable, + self.variable_dict, + volc, + sun, ) - timeseries = timeseries + self.get_sun_forcing( - years.to_numpy()[0], years.to_numpy()[-1] - ) - else: - timeseries = df_temp[variable].to_numpy() + years, timeseries = get_data_from_forc_common( + df_temp[: self.endyear - df_temp.Year[0] + 1], variable, self.variable_dict + ) return years, timeseries diff --git a/src/openscm_runner/adapters/ciceroscm_adapter/write_parameter_files.py b/src/openscm_runner/adapters/ciceroscm_adapter/write_parameter_files.py index d6ded251..16240d9a 100644 --- a/src/openscm_runner/adapters/ciceroscm_adapter/write_parameter_files.py +++ b/src/openscm_runner/adapters/ciceroscm_adapter/write_parameter_files.py @@ -13,6 +13,18 @@ def splitall(path): return out +def check_pamset_consistency(pamset): + """ + Check consistency of parameter set so scenario_end is + equal to or earlier than model_end + """ + if "model_end" in pamset and "scenario_end" not in pamset: + pamset["scenario_end"] = pamset["model_end"] + elif "model_end" in pamset and pamset["scenario_end"] > pamset["model_end"]: + pamset["scenario_end"] = pamset["model_end"] + return pamset + + class PARAMETERFILEWRITER: # pylint: disable=too-few-public-methods """ Class to write parameterfiles @@ -65,10 +77,13 @@ def write_parameterfile(self, pamset, filedir): "input/ssp434_em_RCMIP.txt", f"{filedir_to_pamfile}/inputfiles/{scen}_em.txt", ) + pamset = check_pamset_consistency(pamset) + for k, value in self._pamset_defaults.items(): old = f"{k} {value}" if k in ("model_end", "scenario_start", "scenario_end"): new = f"{k} {pamset.get(k, value)}" + print(f"{k} {pamset.get(k, value)}") else: new = f"{k} {pamset.get(k, float(value)):.4}" filedata = filedata.replace(old, new) diff --git a/src/openscm_runner/adapters/ciceroscm_py_adapter/__init__.py b/src/openscm_runner/adapters/ciceroscm_py_adapter/__init__.py new file mode 100644 index 00000000..adc77d4c --- /dev/null +++ b/src/openscm_runner/adapters/ciceroscm_py_adapter/__init__.py @@ -0,0 +1,4 @@ +""" +Module supporting the CICEROSCM Python adapter +""" +from .ciceroscmpy import CICEROSCMPY # noqa: F401 diff --git a/src/openscm_runner/adapters/ciceroscm_py_adapter/_compat.py b/src/openscm_runner/adapters/ciceroscm_py_adapter/_compat.py new file mode 100644 index 00000000..ea13f747 --- /dev/null +++ b/src/openscm_runner/adapters/ciceroscm_py_adapter/_compat.py @@ -0,0 +1,11 @@ +""" +Handling of compatibility of ciceroscm imports with different states of installation +""" +# pylint:disable=unused-import +try: + import ciceroscm as cscmpy + + HAS_CICEROSCM = True +except ImportError: + cscmpy = None + HAS_CICEROSCM_PY = False diff --git a/src/openscm_runner/adapters/ciceroscm_py_adapter/ciceroscmpy.py b/src/openscm_runner/adapters/ciceroscm_py_adapter/ciceroscmpy.py new file mode 100644 index 00000000..142e0739 --- /dev/null +++ b/src/openscm_runner/adapters/ciceroscm_py_adapter/ciceroscmpy.py @@ -0,0 +1,64 @@ +""" +CICEROSCMPY adapter +""" +import logging + +from ..base import _Adapter +from ..utils.cicero_utils._run_ciceroscm_parallel import run_ciceroscm_parallel +from ._compat import cscmpy +from .cscmpy_wrapper import CSCMPYWrapper + +LOGGER = logging.getLogger(__name__) + + +def _execute_run(cfgs, output_variables, scenariodata): + cscm = CSCMPYWrapper(scenariodata) + try: + out = cscm.run_over_cfgs(cfgs, output_variables) + finally: + LOGGER.info("Finished run") + return out + + +class CICEROSCMPY(_Adapter): # pylint: disable=too-few-public-methods + """ + Adapter for CICEROSCM python version + """ + + model_name = "CiceroSCMPY" + + def __init__(self): # pylint: disable=useless-super-delegation + """ + Initialise the CICEROSCM adapter + + """ + super().__init__() + + def _init_model(self): # pylint: disable=arguments-differ + pass + + def _run(self, scenarios, cfgs, output_variables, output_config): + """ + Run the model. + + This method is the internal implementation of the :meth:`run` interface + + cfgs is a list of indices to run + """ + if output_config is not None: + raise NotImplementedError("`output_config` not implemented for CICERO-SCM") + + runs = run_ciceroscm_parallel(scenarios, cfgs, output_variables, _execute_run) + return runs + + @classmethod + def get_version(cls): + """ + Get the CICEROSCM version being used by this adapter + + Returns + ------- + str + The CICEROSCM version id + """ + return cscmpy.__version__ diff --git a/src/openscm_runner/adapters/ciceroscm_py_adapter/cscmpy_wrapper.py b/src/openscm_runner/adapters/ciceroscm_py_adapter/cscmpy_wrapper.py new file mode 100644 index 00000000..2610a01f --- /dev/null +++ b/src/openscm_runner/adapters/ciceroscm_py_adapter/cscmpy_wrapper.py @@ -0,0 +1,115 @@ +""" +CICEROSCM_WRAPPER for parallelisation +""" +import logging +import os + +import pandas as pd +from scmdata import ScmRun, run_append + +from ..utils.cicero_utils._utils import _get_unique_index_values +from ._compat import cscmpy +from .make_scenario_data import SCENARIODATAGETTER +from .read_results import CSCMREADER + +LOGGER = logging.getLogger(__name__) + + +def get_start_end_years(scenariodata): + """ + Get end year, reasonable startyear + and reasonable emissions start from + scenariodata + """ + scenarioframe = scenariodata.reset_index( + ("model", "region", "scenario", "unit"), drop=True + ) + years = scenarioframe.columns + if isinstance(years[0], pd.Timestamp): + nyend = int(years[-1].year) + emstart = int(years[0].year) + else: + nyend = int(years[-1]) + emstart = int(years[0]) + return nyend, emstart + + +class CSCMPYWrapper: # pylint: disable=too-few-public-methods + """ + CICEROSCM Wrapper for parallel runs + """ + + def __init__(self, scenariodata, nystart=1750): + """ + Intialise CICEROSCM wrapper + """ + self.udir = os.path.join( + os.path.dirname(__file__), "..", "ciceroscm_adapter", "utils_templates" + ) + nyend, emstart = get_start_end_years( + scenariodata + ) # Get nyend and emstart from scenariodata + self.sdatagetter = SCENARIODATAGETTER(self.udir, nystart, nyend) + self.resultsreader = CSCMREADER(nystart, nyend) + self.cscm = cscmpy.CICEROSCM( + { + "gaspam_file": os.path.join( + os.path.dirname(__file__), "gases_vupdate_2022_AR6.txt" + ), # TODO set from cfgs + "nyend": nyend, + "nystart": nystart, + "emstart": emstart, + "concentrations_file": os.path.join( + self.udir, "run_dir", "ssp245_conc_RCMIP.txt" + ), + "emissions_data": self.sdatagetter.get_scenario_data( + scenariodata, nystart + ), + "nat_ch4_file": os.path.join( + self.udir, "run_dir", "input_OTHER", "NATEMIS", "natemis_ch4.txt" + ), # TODO set from cfgs + "nat_n2o_file": os.path.join( + self.udir, "run_dir", "input_OTHER", "NATEMIS", "natemis_n2o.txt" + ), # TODO set from cfgs + "sunvolc": 1, + } + ) + self.scen = _get_unique_index_values(scenariodata, "scenario") + self.model = _get_unique_index_values(scenariodata, "model") + + def run_over_cfgs(self, cfgs, output_variables): + """ + Run over each configuration parameter set + write parameterfiles, run, read results + and make an ScmRun with results + """ + runs = [] + for i, pamset in enumerate(cfgs): + self.cscm._run( # pylint: disable=protected-access + {"results_as_dict": True}, + pamset_udm=pamset["pamset_udm"], + pamset_emiconc=pamset["pamset_emiconc"], + ) + for variable in output_variables: + (years, timeseries, unit,) = self.resultsreader.get_variable_timeseries( + self.cscm.results, variable, self.sdatagetter + ) + if isinstance(years, pd.DataFrame) and years.empty: # pragma: no cover + continue # pragma: no cover + print(variable) + runs.append( + ScmRun( + pd.Series(timeseries, index=years), + columns={ + "climate_model": "CICERO-SCM-PY", + "model": self.model, + "run_id": pamset.get("Index", i), + "scenario": self.scen, + "region": ["World"], + "variable": [variable], + "unit": [unit], + }, + ) + ) + + return run_append(runs) diff --git a/src/openscm_runner/adapters/ciceroscm_py_adapter/gases_vupdate_2022_AR6.txt b/src/openscm_runner/adapters/ciceroscm_py_adapter/gases_vupdate_2022_AR6.txt new file mode 100755 index 00000000..e03aaf98 --- /dev/null +++ b/src/openscm_runner/adapters/ciceroscm_py_adapter/gases_vupdate_2022_AR6.txt @@ -0,0 +1,47 @@ +GAS EM_UNIT CONC_UNIT BETA ALPHA TAU1(YEARS) TAU2 TAU3 NATURAL_EMISSIONS SARF_TO_ERF +CO2 Pg_C ppm 2.123 0 150 0 0 0 1.05 +CH4 Tg ppb 2.78 0 9.6 120 160 275 0.8771929824561404 +N2O Tg_N ppb 4.81 0 121 0 0 9.5 1.07 +SO2 Tg_S - 11 0 0.02 0 0 0 1 +CFC-11 Gg ppt 22.6 0.000259 52 0 0 0 1.13 +CFC-12 Gg ppt 20.8 0.00032 102 0 0 0 1.12 +CFC-113 Gg ppt 32.5 0.000301 93 0 0 0 1 +CFC-114 Gg ppt 29.7 0.000314 189 0 0 0 1 +CFC-115 Gg ppt 27.1 0.000246 540 0 0 0 1 +CH3Br Gg ppt 16.4 0.000004 0.8 0 0 0 1 +CCl4 Gg ppt 25.3 0.000166 32 0 0 0 1 +CH3CCl3 Gg ppt 22 0.000065 5 0 0 0 1 +HCFC-22 Gg ppt 14.9 0.000214 11.9 0 0 0 1 +HCFC-141b Gg ppt 26.3 0.000161 9.4 0 0 0 1 +HCFC-123 Gg ppt 20.1 0.00016 1.3 0 0 0 1 +HCFC-142b Gg ppt 16.8852 0.000193 18 0 0 0 1 +H-1211 Gg ppt 28.37 0.0003 16 0 0 0 1 +H-1301 Gg ppt 25.55 0.000299 72 0 0 0 1 +H-2402 Gg ppt 45.9564 0.000312 28 0 0 0 1 +HFC125 Gg ppt 21.27 0.000234 30 0 0 0 1 +HFC134a Gg ppt 18.09 0.000167 14 0 0 0 1 +HFC143a Gg ppt 14.90 0.000168 51 0 0 0 1 +HFC227ea Gg ppt 30.14 0.000273 36 0 0 0 1 +HFC23 Gg ppt 12.41 0.000191 228 0 0 0 1 +HFC245fa Gg ppt 23.76 0.000245 7.9 0 0 0 1 +HFC32 Gg ppt 9.22 0.000111 5.4 0 0 0 1 +HFC4310mee Gg ppt 44.68 0.000357 17 0 0 0 1 +C2F6 Gg ppt 24.46 0.000261 10000 0 0 0 1 +C6F14 Gg ppt 59.92 0.000449 3100 0 0 0 1 +CF4 Gg ppt 15.60 0.000099 50000 0 0 0 1 +SF6 Gg ppt 25.89 0.000567 3200 0 0 0 1 +NOx Mt_N - 0 0 0 0 0 0 1 +CO Mt - 0 0 0 0 0 0 1 +NMVOC Mt - 0 0 0 0 0 0 1 +NH3 Mt - 0 0 0 0 0 0 1 +SO4_IND X - 0 0 0 0 0 0 1 +TROP_O3 X - 0 0 0 0 0 0 1 +STRAT_O3 X - 0 0 0 0 0 0 1 +STRAT_H2O X - 0 0 0 0 0 0 1 +BMB_AEROS_BC Tg - 0 0 0 0 0 0 1 +BMB_AEROS_OC Tg - 0 0 0 0 0 0 1 +BMB_AEROS X - 0 0 0 0 0 0 1 +LANDUSE X - 0 0 0 0 0 0 1 +BC Tg - 0 0 0 0 0 0 1 +OC Tg - 0 0 0 0 0 0 1 +OTHER X - 0 0 0 0 0 0 1 diff --git a/src/openscm_runner/adapters/ciceroscm_py_adapter/make_scenario_data.py b/src/openscm_runner/adapters/ciceroscm_py_adapter/make_scenario_data.py new file mode 100644 index 00000000..bcfbecd0 --- /dev/null +++ b/src/openscm_runner/adapters/ciceroscm_py_adapter/make_scenario_data.py @@ -0,0 +1,61 @@ +""" +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 + + +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")) + + 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 diff --git a/src/openscm_runner/adapters/ciceroscm_py_adapter/read_results.py b/src/openscm_runner/adapters/ciceroscm_py_adapter/read_results.py new file mode 100644 index 00000000..1ccc6de8 --- /dev/null +++ b/src/openscm_runner/adapters/ciceroscm_py_adapter/read_results.py @@ -0,0 +1,158 @@ +""" +Module that reads in CICERO-SCM results +and returns data to append to SCMRun +""" +import numpy as np +import pandas as pd + +from ..utils.cicero_utils.cicero_forcing_postprocessing_common import ( + get_data_from_forc_common, + openscm_to_cscm_dict, +) + + +def get_data_from_conc(results, variable): + """ + Get data from concentration files + """ + df_temp = results["concentrations"] + years = df_temp.Year[:] + timeseries = df_temp[variable].to_numpy() # pylint:disable=unsubscriptable-object + return years, timeseries + + +def get_data_from_em(results, variable): + """ + Get data from emissions files + """ + df_temp = results["emissions"] + years = df_temp.Year[:] + timeseries = df_temp[variable].to_numpy() # pylint:disable=unsubscriptable-object + return years, timeseries + + +def get_data_from_temp_or_rib(results, variable): + """ + Get data for temperature or rib variables + """ + return results[variable] + + +def get_data_from_ohc(results, variable): + """ + Get data from ocean heat content files + """ + df_temp = results[variable] + # Units are 10^22J and output should be 10^21J = ZJ + conv_factor = 10.0 + timeseries = df_temp * conv_factor # pylint:disable=unsubscriptable-object + return timeseries + + +def convert_cicero_unit(cicero_unit): + """ + Convert cicero unit convention for pint + """ + return f"{cicero_unit.replace('_', '')} / yr" + + +class CSCMREADER: + """ + Class to read CICERO-SCM output data + """ + + def __init__(self, nystart, nyend): + self.variable_dict = openscm_to_cscm_dict + self.variable_dict[ + "Effective Radiative Forcing|Aerosols|Direct Effect|SOx" + ] = "SO4_DIR" + self.temp_list = ( + "dT_glob", + "dT_glob_air", + "dT_glob_sea", + "dSL(m)", + "dSL_thermal(m)", + "dSL_ice(m)", + "RIB_glob", + ) + self.ohc_list = "OHCTOT" + self.indices = np.arange(nystart, nyend + 1) + + def get_variable_timeseries(self, results, variable, sfilewriter): + """ + Get variable timeseries + Connecting up to correct data dictionary to get data + """ + if variable not in self.variable_dict: + return ( + pd.Series([], dtype="float64"), + pd.Series([], dtype="float64"), + "NoUnit", + ) + if "Concentration" in variable: + years, timeseries = get_data_from_conc( + results, self.variable_dict[variable] + ) + unit = sfilewriter.concunits[ + sfilewriter.components.index(self.variable_dict[variable]) + ] + elif "Emissions" in variable: + years, timeseries = get_data_from_em(results, self.variable_dict[variable]) + unit = sfilewriter.units[ + sfilewriter.components.index(self.variable_dict[variable]) + ] + elif "Forcing" in variable: + years, timeseries = self.get_data_from_forc( + results, self.variable_dict[variable] + ) + unit = "W/m^2" + elif self.variable_dict[variable] in self.temp_list: + timeseries = get_data_from_temp_or_rib( + results, self.variable_dict[variable] + ) + years = self.indices + if self.variable_dict[variable] == "RIB_glob": + unit = "W/m^2" + else: + unit = "K" + + elif self.variable_dict[variable] in self.ohc_list: + timeseries = get_data_from_ohc(results, self.variable_dict[variable]) + years = self.indices + unit = "ZJ" + + return years, timeseries, unit + + def get_volc_forcing(self, results): + """ + Return volcanic forcing time series from startyear up to and including endyear + """ + volc_series = pd.Series( + (results["Volcanic_forcing_NH"] + results["Volcanic_forcing_SH"]) / 2 + ) + volc_series.index = self.indices # TODO get correct time rang + return volc_series + + def get_sun_forcing(self, results): + """ + Return volcanic forcing time series from startyear up to and including endyear + """ + sun_series = pd.Series(results["Solar_forcing"]) + sun_series.index = self.indices + return sun_series + + def get_data_from_forc(self, results, variable): + """ + Get data from forcing files + """ + df_temp = results["forcing"] + if variable == "Total_forcing+sunvolc": + volc = self.get_volc_forcing(results) + sun = self.get_sun_forcing(results) + return get_data_from_forc_common( + df_temp, variable, self.variable_dict, volc, sun + ) + years, timeseries = get_data_from_forc_common( + df_temp, variable, self.variable_dict + ) + return years, timeseries diff --git a/src/openscm_runner/adapters/utils/cicero_utils/__init__.py b/src/openscm_runner/adapters/utils/cicero_utils/__init__.py new file mode 100644 index 00000000..156f43ed --- /dev/null +++ b/src/openscm_runner/adapters/utils/cicero_utils/__init__.py @@ -0,0 +1,3 @@ +""" +Utility functions for ciceroscm adapters +""" diff --git a/src/openscm_runner/adapters/ciceroscm_adapter/_run_ciceroscm_parallel.py b/src/openscm_runner/adapters/utils/cicero_utils/_run_ciceroscm_parallel.py similarity index 81% rename from src/openscm_runner/adapters/ciceroscm_adapter/_run_ciceroscm_parallel.py rename to src/openscm_runner/adapters/utils/cicero_utils/_run_ciceroscm_parallel.py index 1830b025..134f4611 100644 --- a/src/openscm_runner/adapters/ciceroscm_adapter/_run_ciceroscm_parallel.py +++ b/src/openscm_runner/adapters/utils/cicero_utils/_run_ciceroscm_parallel.py @@ -7,9 +7,8 @@ import scmdata -from ...settings import config -from ..utils._parallel_process import _parallel_process -from .ciceroscm_wrapper import CiceroSCMWrapper +from ....settings import config +from ...utils._parallel_process import _parallel_process LOGGER = logging.getLogger(__name__) @@ -21,17 +20,7 @@ """int: Number of front parallel runs to do before starting full parallel runs""" -def _execute_run(cfgs, output_variables, scenariodata): - cscm = CiceroSCMWrapper(scenariodata) - try: - out = cscm.run_over_cfgs(cfgs, output_variables) - finally: - cscm.cleanup_tempdirs() - - return out - - -def run_ciceroscm_parallel(scenarios, cfgs, output_vars): +def run_ciceroscm_parallel(scenarios, cfgs, output_vars, _execute_run): """ Run CICEROSCM in parallel diff --git a/src/openscm_runner/adapters/utils/cicero_utils/_utils.py b/src/openscm_runner/adapters/utils/cicero_utils/_utils.py new file mode 100644 index 00000000..f515e7f7 --- /dev/null +++ b/src/openscm_runner/adapters/utils/cicero_utils/_utils.py @@ -0,0 +1,42 @@ +""" +Utility functions for CICERO-SCM adapter +""" + + +def _get_unique_index_values(idf, index_col, assert_all_same=True): + """ + Get unique values in index column from a dataframe + + Parameters + ---------- + idf : :obj:`pd.DataFrame` + Dataframe to get index values from + + index_col : str + Column in index to get the values for + + assert_all_same : bool + Should we assert that all the values are the same before + returning? If True, only a single value is returned. If + False, a list is returned. + + Returns + ------- + str, list + Values found, either a string or a list depending on + ``assert_all_same``. + + Raises + ------ + AssertionError + ``assert_all_same`` is True and there's more than one + unique value. + """ + out = idf.index.get_level_values(index_col).unique().tolist() + if assert_all_same: + if len(out) > 1: + raise AssertionError(out) + + return out[0] + + return out diff --git a/src/openscm_runner/adapters/utils/cicero_utils/cicero_forcing_postprocessing_common.py b/src/openscm_runner/adapters/utils/cicero_utils/cicero_forcing_postprocessing_common.py new file mode 100644 index 00000000..fb537361 --- /dev/null +++ b/src/openscm_runner/adapters/utils/cicero_utils/cicero_forcing_postprocessing_common.py @@ -0,0 +1,110 @@ +""" +Module with common values and methods +for postprocessing output +from both CICERO-SCM implementations +particularly making forcing sums +to avoid code duplication +""" +import numpy as np + +openscm_to_cscm_dict = { + "Surface Air Temperature Change": "dT_glob_air", + # GMST + "Surface Air Ocean Blended Temperature Change": "dT_glob", + # ERFs + "Effective Radiative Forcing": "Total_forcing+sunvolc", + "Effective Radiative Forcing|Anthropogenic": "Total_forcing", + "Effective Radiative Forcing|Aerosols": "Aerosols", + "Effective Radiative Forcing|Aerosols|Direct Effect": "Aerosols|Direct Effect", + "Effective Radiative Forcing|Aerosols|Direct Effect|BC": "BC", + "Effective Radiative Forcing|Aerosols|Direct Effect|OC": "OC", + "Effective Radiative Forcing|Aerosols|Direct Effect|SOx": "SO2", + "Effective Radiative Forcing|Aerosols|Indirect Effect": "SO4_IND", + "Effective Radiative Forcing|Greenhouse Gases": "GHG", + "Effective Radiative Forcing|F-Gases": "Fgas", + "Effective Radiative Forcing|HFC125": "HFC125", + "Effective Radiative Forcing|HFC134a": "HFC134a", + "Effective Radiative Forcing|HFC143a": "HFC143a", + "Effective Radiative Forcing|HFC227ea": "HFC227ea", + "Effective Radiative Forcing|HFC23": "HFC23", + "Effective Radiative Forcing|HFC245fa": "HFC245fa", + "Effective Radiative Forcing|HFC32": "HFC32", + "Effective Radiative Forcing|HFC4310mee": "HFC4310mee", + "Effective Radiative Forcing|CF4": "CF4", + "Effective Radiative Forcing|C6F14": "C6F14", + "Effective Radiative Forcing|C2F6": "C2F6", + "Effective Radiative Forcing|SF6": "SF6", + "Effective Radiative Forcing|CO2": "CO2", + "Effective Radiative Forcing|CH4": "CH4", + "Effective Radiative Forcing|N2O": "N2O", + "Emissions|CO2": "CO2", + "Emissions|CH4": "CH4", + "Emissions|N2O": "N2O", + # Heat uptake + "Heat Uptake": "RIB_glob", + "Heat Content|Ocean": "OHCTOT", + # concentrations + "Atmospheric Concentrations|CO2": "CO2", + "Atmospheric Concentrations|CH4": "CH4", + "Atmospheric Concentrations|N2O": "N2O", +} +forc_sums = ["Aerosols", "Aerosols|Direct Effect"] +fgas_list = [ + "CFC-11", + "CFC-12", + "CFC-113", + "CFC-114", + "CFC-115", + "CH3Br", + "CCl4", + "CH3CCl3", + "HCFC-22", + "HCFC-141b", + "HCFC-123", + "HCFC-142b", + "H-1211", + "H-1301", + "H-2402", + "HFC125", + "HFC134a", + "HFC143a", + "HFC227ea", + "HFC23", + "HFC245fa", + "HFC32", + "HFC4310mee", + "C2F6", + "C6F14", + "CF4", + "SF6", +] +ghg_not_fgas = ["CO2", "CH4", "N2O", "TROP_O3", "STRAT_O3", "STRAT_H2O"] + + +def get_data_from_forc_common(df_temp, variable, v_dict, volc=0, sun=0): + """ + Get or calculate forcing when dataframe with forcers + variable and variable dictionary + If calculating with volcanic and solar forcing + methods to obtain these need to be supplied + """ + years = df_temp.Year[:] + if variable in forc_sums: + timeseries = np.zeros(len(years)) + for comp, value in v_dict.items(): + if variable in comp and value not in forc_sums: + timeseries = timeseries + df_temp[value].to_numpy() + elif variable in ("Fgas", "GHG"): + timeseries = np.zeros(len(years)) + for comp in fgas_list: + timeseries = timeseries + df_temp[comp].to_numpy() + if variable == "GHG": + for comp in ghg_not_fgas: + timeseries = timeseries + df_temp[comp].to_numpy() + elif variable == "Total_forcing+sunvolc": + timeseries = df_temp["Total_forcing"].to_numpy() + timeseries = timeseries + volc + timeseries = timeseries + sun + else: + timeseries = df_temp[variable].to_numpy() + return years, timeseries diff --git a/src/openscm_runner/adapters/utils/cicero_utils/make_scenario_common.py b/src/openscm_runner/adapters/utils/cicero_utils/make_scenario_common.py new file mode 100644 index 00000000..d89e25a8 --- /dev/null +++ b/src/openscm_runner/adapters/utils/cicero_utils/make_scenario_common.py @@ -0,0 +1,244 @@ +""" +Common handler and converter of scenariodat for cicero +Class will be inherited by subversions to get specific +handling +""" + +import csv +import logging +import os + +import numpy as np +import openscm_units +import pandas as pd + +from ._utils import _get_unique_index_values + +LOGGER = logging.getLogger(__name__) + + +def _unit_conv_factor(unit, cicero_unit): + """ + Convert cicero units that can't be automatically dealt with + in openscm_units + """ + with openscm_units.unit_registry.context("NOx_conversions"): + + if cicero_unit.startswith("GgH1"): + conv_factor = ( + openscm_units.unit_registry(unit) + .to(cicero_unit.replace("GgH1", "GgHalon1")) + .magnitude + ) + elif cicero_unit.startswith("GgH2"): + conv_factor = ( + openscm_units.unit_registry(unit) + .to(cicero_unit.replace("GgH2", "GgHalon2")) + .magnitude + ) + else: + conv_factor = openscm_units.unit_registry(unit).to(cicero_unit).magnitude + + return conv_factor + + +cicero_comp_dict = { + "CO2_lu": ["CO2|MAGICC AFOLU", 1], + "CFC-113": ["CFC113", 1], + "CFC-114": ["CFC114", 1], + "SO2": ["Sulfur", 1], + "NMVOC": ["VOC", 1], + "CFC-11": ["CFC11", 1], + "CFC-115": ["CFC115", 1], + "CFC-12": ["CFC12", 1], + "HCFC-141b": ["HCFC141b", 1], + "HCFC-142b": ["HCFC142b", 1], + "HCFC-22": ["HCFC22", 1], + "H-1211": ["Halon1211", 1], + "H-1301": ["Halon1301", 1], + "H-2402": ["Halon2402", 1], + "CO2": ["CO2|MAGICC Fossil and Industrial", 1], + "CH4": ["CH4", 1], + "N2O": ["N2O", 1], + "CH3Br": ["CH3Br", 1], + "CCl4": ["CCl4", 1], + "CH3CCl3": ["CH3CCl3", 1], + "HCFC-123": ["HCFC-123", 1], + "HFC125": ["HFC125", 1], + "HFC134a": ["HFC134a", 1], + "HFC143a": ["HFC143a", 1], + "HFC227ea": ["HFC227ea", 1], + "HFC23": ["HFC23", 1], + "HFC245fa": ["HFC245fa", 1], + "HFC32": ["HFC32", 1], + "HFC4310mee": ["HFC4310mee", 1], + "C2F6": ["C2F6", 1], + "C6F14": ["C6F14", 1], + "CF4": ["CF4", 1], + "SF6": ["SF6", 1], + "NOx": ["NOx", 1], + "CO": ["CO", 1], + "NH3": ["NH3", 1], + "BMB_AEROS_BC": ["BMB_AEROS_BC", 1], + "BMB_AEROS_OC": ["BMB_AEROS_OC", 1], + "BC": ["BC", 1], + "OC": ["OC", 1], +} +# Halon1212, CH3Cl + + +class COMMONSFILEWRITER: + """ + Class to write scenariofiles: + """ + + def __init__(self, udir, syear=2015, eyear=2100): + self.components = [] + self.units = [] + self.concunits = [] + + self.initialize_units_comps(os.path.join(udir, "gases_v1RCMIP.txt")) + self.years = np.arange( + syear, eyear + ) # Temporary default values, is updated later + self.udir = udir + + def initialize_units_comps(self, gasfile): + """ + Get the list of gas components and units + from the gases file: + """ + with open(gasfile, "r", encoding="ascii") as txt_rcpfile: + gasreader = csv.reader(txt_rcpfile, delimiter="\t") + next(gasreader) + for row in gasreader: + if row[1] == "X": + continue + + component = row[0] + unit = row[1] + + if component == "N2O" and unit == "Tg_N": + # in openscm-units, to get the mass of nitrogen, have + # to use the unit "Tg N2ON" (converting to "Tg N" just + # converts using the mass fraction of a single nitrogen + # atom, admittedly this isn't immediately obvious and + # arguably is a bug in openscm-units) + unit = "TgN2ON" + elif "_" in unit: + unit = unit.replace("_", "") + else: + comp_str = component.replace("-", "").replace("BMB_AEROS_", "") + unit = f"{unit}{comp_str}" + + unit = f"{unit} / yr" + + self.components.append(component) + self.units.append(unit) + self.concunits.append(row[2]) + + self.components.insert(1, "CO2_lu") + self.units.insert(1, "PgC / yr") + self.concunits.insert(1, "ppm") + + def get_unit_convfactor(self, comp, scenarioframe): + """ + Get unit and conversion factor for component + """ + # Find the unit and the original unit + cicero_unit = self.units[self.components.index(comp)] + unit = _get_unique_index_values( + scenarioframe[ + scenarioframe.index.get_level_values("variable") + == f"Emissions|{cicero_comp_dict[comp][0]}" + ], + "unit", + ) + + return _unit_conv_factor(unit, cicero_unit) + + def transform_scenarioframe(self, scenarioframe): + """ + Get rid of multiindex and interpolate scenarioframe + """ + if ( + _get_unique_index_values(scenarioframe, "region") != "World" + ): # pragma: no cover + raise NotImplementedError() # emergency valve + + scenarioframe = scenarioframe.reset_index( + ("model", "region", "scenario", "unit"), drop=True + ) + years = scenarioframe.columns + + if not isinstance(years[0], np.int64): + yearsint = [np.int64(d.year) for d in years] + scenarioframe.rename( + lambda d: np.int64(d.year), axis="columns", inplace=True + ) + else: + yearsint = years + + self.years = np.arange(yearsint[0], yearsint[-1] + 1) + for year in self.years: + if year not in scenarioframe.columns: + scenarioframe[year] = np.nan + + scenarioframe = scenarioframe.reindex(sorted(scenarioframe.columns), axis=1) + interpol = scenarioframe.interpolate(axis=1) + + return interpol + + def make_printoutframe(self, scenarioframe, ssp245data): + """ + Take scenarioframe and convert to cicero format + emissions data to write to file or pass as dataframe + """ + logging.getLogger("pyam").setLevel(logging.ERROR) + avail_comps = [ + c.replace("Emissions|", "") + for c in _get_unique_index_values( + scenarioframe, "variable", assert_all_same=False + ) + ] + ciceroscm_comps = [v[0] for v in cicero_comp_dict.values()] + not_used_comps = set(avail_comps) - set(ciceroscm_comps) + if not_used_comps: + LOGGER.warning("%s not used by CICERO-SCM", not_used_comps) + + interpol = self.transform_scenarioframe(scenarioframe) + printout_frame = pd.DataFrame(columns=self.components, index=self.years) + + # Setting conversion factors for components with data from scenarioframe + for comp in self.components: + if cicero_comp_dict[comp][0] in avail_comps: + convfactor = self.get_unit_convfactor(comp, scenarioframe) + if ( + cicero_comp_dict[comp][0] in ("BC", "OC") + and f"BMB_AEROS_{cicero_comp_dict[comp][0]}" not in avail_comps + ): + printout_frame[comp] = ( + interpol.T[f"Emissions|{cicero_comp_dict[comp][0]}"] + * convfactor + ).to_numpy() - ssp245data[ + f"BMB_AEROS_{cicero_comp_dict[comp][0]}" + ].loc[ + str(self.years[0]) : str(self.years[-1]) + ].to_numpy().astype( + np.float + ) + else: + printout_frame[comp] = ( + interpol.T[f"Emissions|{cicero_comp_dict[comp][0]}"] + * convfactor + ) + else: + LOGGER.warning("No %s data available, using ssp245", comp) + printout_frame[comp] = ( + ssp245data[comp] + .loc[str(self.years[0]) : str(self.years[-1])] + .to_numpy() + ) + + printout_frame = printout_frame.astype(float) + return printout_frame diff --git a/tests/integration/test_ciceroSCM.py b/tests/integration/test_ciceroSCM.py index be21770d..5af70d60 100644 --- a/tests/integration/test_ciceroSCM.py +++ b/tests/integration/test_ciceroSCM.py @@ -7,10 +7,7 @@ from openscm_runner import run from openscm_runner.adapters import CICEROSCM -from openscm_runner.adapters.ciceroscm_adapter import ( - make_scenario_files, - write_parameter_files, -) +from openscm_runner.adapters.ciceroscm_adapter import write_parameter_files from openscm_runner.testing import _AdapterTester from openscm_runner.utils import calculate_quantiles @@ -223,6 +220,12 @@ def test_run( scenario="ssp245", run_id=1, ) + test_length = res.filter( + variable="Effective Radiative Forcing|Greenhouse Gases", + scenario="ssp245", + run_id=1, + ) + assert len(test_length.values[0]) == 351 # check that jump in GHG ERF isn't there assert ( ssp245_ghg_erf_2015.values.squeeze() - ssp245_ghg_erf_2014.values.squeeze() @@ -283,6 +286,7 @@ def test_w_out_config(self, test_scenarios): "CiceroSCM": [ { "model_end": 2100, + "scenario_end": 2100, "Index": 30040, "lambda": 0.540, "akapa": 0.341, @@ -302,32 +306,6 @@ def test_w_out_config(self, test_scenarios): out_config={"CiceroSCM": ("With ECS",)}, ) - def test_make_scenario_files(self, test_scenarios): - npt.assert_allclose( - 3.0 / 11.0 * 1000.0, - make_scenario_files._unit_conv_factor("Gg CO2/yr", "Mg C/ yr"), - ) - npt.assert_allclose( - 28 / 44 / 1.0e12, - make_scenario_files._unit_conv_factor("kg N2O / yr", "Pg N2ON / yr"), - ) - npt.assert_allclose( - 14 / 46 / 1.0e12, - make_scenario_files._unit_conv_factor("kt NOx / yr", "Pt N / yr"), - ) - npt.assert_allclose( - 0.5, - make_scenario_files._unit_conv_factor("Tg SO2 / yr", "Tg S / yr"), - ) - npt.assert_allclose( - 1.0, - make_scenario_files._unit_conv_factor("Gg Halon1211 / yr", "GgH1211 / yr"), - ) - npt.assert_allclose( - 1.0, - make_scenario_files._unit_conv_factor("Gg Halon2402 / yr", "GgH2402 / yr"), - ) - @pytest.mark.parametrize( "input,exp", ( diff --git a/tests/integration/test_cscmpy.py b/tests/integration/test_cscmpy.py new file mode 100644 index 00000000..4ec08b20 --- /dev/null +++ b/tests/integration/test_cscmpy.py @@ -0,0 +1,320 @@ +import os + +import numpy as np +import numpy.testing as npt +import pytest +from scmdata import ScmRun + +from openscm_runner import run +from openscm_runner.adapters import CICEROSCMPY +from openscm_runner.testing import _AdapterTester +from openscm_runner.utils import calculate_quantiles + +RTOL = 1e-5 + + +class TestCICEROSCMAdapter(_AdapterTester): + @pytest.mark.ciceroscm + @pytest.mark.parametrize("shuffle_column_order", (True, False)) + def test_run( + self, + test_scenarios, + test_data_dir, + update_expected_values, + shuffle_column_order, + ): + expected_output_file = os.path.join( + test_data_dir, + "expected-integration-output", + "expected_ciceroscmpy_test_run_output.json", + ) + + if shuffle_column_order: + tmp = test_scenarios.data + cols = tmp.columns.tolist() + tmp = tmp[cols[1:] + cols[:1]] + test_scenarios = ScmRun(test_scenarios) + + res = run( + scenarios=test_scenarios.filter(scenario=["ssp126", "ssp245", "ssp370"]), + climate_models_cfgs={ + "CICEROSCMPY": [ + { + "model_end": 2100, + "Index": 30040, + "pamset_udm": { + "lambda": 0.540, + "akapa": 0.341, + "cpi": 0.556, + "W": 1.897, + "rlamdo": 16.618, + "beto": 3.225, + "mixed": 107.277, + }, + "pamset_emiconc": { + "qdirso2": -0.457, + "qindso2": -0.514, + "qbc": 0.200, + "qoc": -0.103, + }, + }, + { + "model_end": 2100, + "Index": 1, + "pamset_udm": { + "lambda": 0.3925, + "akapa": 0.2421, + "cpi": 0.3745, + "W": 0.8172, + "rlamdo": 16.4599, + "beto": 4.4369, + "mixed": 35.4192, + }, + "pamset_emiconc": { + "qdirso2": -0.3428, + "qindso2": -0.3856, + "qbc": 0.1507, + "qoc": -0.0776, + }, + }, + ] + }, + output_variables=( + "Surface Air Temperature Change", + "Surface Air Ocean Blended Temperature Change", + "Heat Content|Ocean", + "Effective Radiative Forcing", + "Effective Radiative Forcing|Anthropogenic", + "Effective Radiative Forcing|Aerosols", + "Effective Radiative Forcing|Greenhouse Gases", + "Heat Uptake", + "Atmospheric Concentrations|CO2", + "Atmospheric Concentrations|CH4", + "Atmospheric Concentrations|N2O", + "Emissions|CO2", + "Emissions|CH4", + "Emissions|N2O", + ), + out_config=None, + ) + assert isinstance(res, ScmRun) + assert res["run_id"].min() == 1 + assert res["run_id"].max() == 30040 + assert ( + res.get_unique_meta("climate_model", no_duplicates=True) == "CICERO-SCM-PY" + ) + + assert set(res.get_unique_meta("variable")) == set( + [ + "Surface Air Temperature Change", + "Surface Air Ocean Blended Temperature Change", + "Heat Content|Ocean", + "Effective Radiative Forcing", + "Effective Radiative Forcing|Anthropogenic", + "Effective Radiative Forcing|Aerosols", + "Effective Radiative Forcing|Greenhouse Gases", + "Heat Uptake", + "Atmospheric Concentrations|CO2", + "Atmospheric Concentrations|CH4", + "Atmospheric Concentrations|N2O", + "Emissions|CO2", + "Emissions|N2O", + "Emissions|CH4", + ] + ) + + # check we can also calcluate quantiles + assert "run_id" in res.meta + quantiles = calculate_quantiles(res, [0, 0.05, 0.17, 0.5, 0.83, 0.95, 1]) + assert "run_id" not in quantiles.meta + + assert ( + res.filter(variable="Atmospheric Concentrations|CO2").get_unique_meta( + "unit", True + ) + == "ppm" + ) + assert ( + res.filter(variable="Atmospheric Concentrations|CH4").get_unique_meta( + "unit", True + ) + == "ppb" + ) + assert ( + res.filter(variable="Atmospheric Concentrations|N2O").get_unique_meta( + "unit", True + ) + == "ppb" + ) + assert ( + res.filter(variable="Emissions|CO2").get_unique_meta("unit", True) + == "PgC / yr" + ) + assert ( + res.filter(variable="Emissions|CH4").get_unique_meta("unit", True) + == "TgCH4 / yr" + ) + assert ( + res.filter(variable="Emissions|N2O").get_unique_meta("unit", True) + == "TgN2ON / yr" + ) + + # check that emissions were passed through correctly + for (scen, variable, unit, exp_val) in ( + ("ssp126", "Emissions|CO2", "PgC/yr", -2.3503), + ("ssp370", "Emissions|CO2", "PgC/yr", 22.562), + ("ssp126", "Emissions|CH4", "TgCH4/yr", 122.195), + ("ssp370", "Emissions|CH4", "TgCH4/yr", 777.732), + ("ssp126", "Emissions|N2O", "TgN2ON/yr", 5.318), + ("ssp370", "Emissions|N2O", "TgN2ON/yr", 13.144), + ): + res_scen_2100_emms = res.filter( + variable=variable, year=2100, scenario=scen + ).convert_unit(unit) + if res_scen_2100_emms.empty: + raise AssertionError("No {} data for {}".format(variable, scen)) + + npt.assert_allclose( + res_scen_2100_emms.values, + exp_val, + rtol=1e-4, + ) + for (scen, variable, unit, exp_val14, exp_val16) in ( + ("ssp126", "Emissions|CH4", "TgCH4/yr", 387.874, 379.956), + ("ssp370", "Emissions|CH4", "TgCH4/yr", 387.874, 394.149), + ("ssp126", "Emissions|N2O", "TgN2ON/yr", 6.911, 6.858), + ("ssp370", "Emissions|N2O", "TgN2ON/yr", 6.911, 7.0477), + ): + res_scen_2014_emms = res.filter( + variable=variable, year=2014, scenario=scen + ).convert_unit(unit) + if res_scen_2014_emms.empty: + raise AssertionError("No {} data for {}".format(variable, scen)) + + res_scen_2016_emms = res.filter( + variable=variable, year=2016, scenario=scen + ).convert_unit(unit) + if res_scen_2016_emms.empty: + raise AssertionError("No {} data for {}".format(variable, scen)) + + npt.assert_allclose( + res_scen_2014_emms.values, + exp_val14, + rtol=1e-4, + ) + npt.assert_allclose( + res_scen_2016_emms.values, + exp_val16, + rtol=1e-4, + ) + for (scen, variable) in ( + ("ssp126", "Effective Radiative Forcing|Aerosols"), + ("ssp370", "Effective Radiative Forcing|Aerosols"), + ): + res_scen_2015_emms = res.filter(variable=variable, year=2015, scenario=scen) + if res_scen_2015_emms.empty: + raise AssertionError("No CO2 emissions data for {}".format(scen)) + + assert not np.equal(res_scen_2015_emms.values, 0).all() + + ssp245_ghg_erf_2015 = res.filter( + variable="Effective Radiative Forcing|Greenhouse Gases", + year=2015, + scenario="ssp245", + run_id=1, + ) + ssp245_ghg_erf_2014 = res.filter( + variable="Effective Radiative Forcing|Greenhouse Gases", + year=2014, + scenario="ssp245", + run_id=1, + ) + # check that jump in GHG ERF isn't there + assert ( + ssp245_ghg_erf_2015.values.squeeze() - ssp245_ghg_erf_2014.values.squeeze() + ) < 0.1 + ssp245_ch4_conc_2015 = res.filter( + variable="Atmospheric Concentrations|CH4", + year=2015, + scenario="ssp245", + run_id=1, + ) + ssp245_ch4_conc_2014 = res.filter( + variable="Atmospheric Concentrations|CH4", + year=2014, + scenario="ssp245", + run_id=1, + ) + # ch + # check that jump in GHG ERF isn't there + assert ( + ssp245_ch4_conc_2014.values.squeeze() + - ssp245_ch4_conc_2015.values.squeeze() + ) < 0.1 + + self._check_output(res, expected_output_file, update_expected_values) + + @pytest.mark.ciceroscm + def test_variable_naming(self, test_scenarios): + missing_from_ciceroscm = ( + "Effective Radiative Forcing|Aerosols|Direct Effect|BC|MAGICC AFOLU", + "Effective Radiative Forcing|Aerosols|Direct Effect|BC|MAGICC Fossil and Industrial", + "Effective Radiative Forcing|Aerosols|Direct Effect|OC|MAGICC AFOLU", + "Effective Radiative Forcing|Aerosols|Direct Effect|OC|MAGICC Fossil and Industrial", + "Effective Radiative Forcing|Aerosols|Direct Effect|SOx|MAGICC AFOLU", + "Effective Radiative Forcing|Aerosols|Direct Effect|SOx|MAGICC Fossil and Industrial", + "Heat Uptake|Ocean", + "Net Atmosphere to Land Flux|CO2", + "Net Atmosphere to Ocean Flux|CO2", + ) + common_variables = [ + c for c in self._common_variables if c not in missing_from_ciceroscm + ] + res = run( + climate_models_cfgs={ + "CICEROSCMPY": [{"pamset_udm": {"lambda": 0.540}, "pamset_emiconc": {}}] + }, + scenarios=test_scenarios.filter(scenario="ssp126"), + output_variables=common_variables, + ) + + missing_vars = set(common_variables) - set(res["variable"]) + if missing_vars: + raise AssertionError(missing_vars) + + @pytest.mark.ciceroscm + def test_w_out_config(self, test_scenarios): + with pytest.raises(NotImplementedError): + run( + scenarios=test_scenarios.filter(scenario=["ssp126"]), + climate_models_cfgs={ + "CiceroSCMPY": [ + { + "model_end": 2100, + "Index": 30040, + "pamset_udm": { + "lambda": 0.540, + "akapa": 0.341, + "cpi": 0.556, + "W": 1.897, + "rlamdo": 16.618, + "beto": 3.225, + "mixed": 107.277, + }, + "pamset_emiconc": { + "qdirso2": -0.457, + "qindso2": -0.514, + "qbc": 0.200, + "qoc": -0.103, + }, + }, + ] + }, + output_variables=("Surface Air Temperature Change",), + out_config={"CiceroSCMPY": ("With ECS",)}, + ) + + +@pytest.mark.ciceroscm +def test_get_version(): + assert CICEROSCMPY.get_version() == "1.0.0" diff --git a/tests/test-data/expected-integration-output/expected_ciceroscmpy_test_run_output.json b/tests/test-data/expected-integration-output/expected_ciceroscmpy_test_run_output.json new file mode 100644 index 00000000..74d99234 --- /dev/null +++ b/tests/test-data/expected-integration-output/expected_ciceroscmpy_test_run_output.json @@ -0,0 +1,178 @@ +{ + "CICERO-SCM-PY": [ + [ + { + "variable": "Heat Content|Ocean", + "unit": "ZJ", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 1 + }, + 346.1578264751314 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 1 + }, + -0.1740737306234469 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 0.05 + }, + -0.2097507440981213 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 0.95 + }, + -0.17595146817474555 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp370", + "quantile": 0.05 + }, + 3.321170271098667 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp370", + "quantile": 0.95 + }, + 3.9964019497746186 + ], + [ + { + "variable": "Surface Air Ocean Blended Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 1 + }, + -0.14281200459971824 + ], + [ + { + "variable": "Heat Uptake", + "unit": "W/m^2", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 1 + }, + -0.3400230652020227 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 0 + }, + -0.21162848164941997 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp370", + "quantile": 1 + }, + 4.033914820812171 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp370", + "quantile": 0 + }, + 3.2836574000611143 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 0.05 + }, + -0.2097507440981213 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp126", + "quantile": 0.95 + }, + -0.17595146817474555 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp370", + "quantile": 0.05 + }, + 3.321170271098667 + ], + [ + { + "variable": "Surface Air Temperature Change", + "region": "World", + "year": 2100, + "scenario": "ssp370", + "quantile": 0.95 + }, + 3.9964019497746186 + ], + [ + { + "variable": "Atmospheric Concentrations|CO2", + "region": "World", + "year": 2100, + "scenario": "ssp370", + "unit": "ppm", + "quantile": 1 + }, + 779.4291548818361 + ], + [ + { + "variable": "Emissions|CO2", + "region": "World", + "year": 2100, + "scenario": "ssp370", + "unit": "PgC / yr", + "quantile": 1 + }, + 22.5616 + ] + ] +} \ No newline at end of file diff --git a/tests/unit/test_cicero_utils.py b/tests/unit/test_cicero_utils.py new file mode 100644 index 00000000..597636f8 --- /dev/null +++ b/tests/unit/test_cicero_utils.py @@ -0,0 +1,30 @@ +import numpy.testing as npt + +from openscm_runner.adapters.utils.cicero_utils import make_scenario_common + + +def test_make_scenario_common(): + npt.assert_allclose( + 3.0 / 11.0 * 1000.0, + make_scenario_common._unit_conv_factor("Gg CO2/yr", "Mg C/ yr"), + ) + npt.assert_allclose( + 28 / 44 / 1.0e12, + make_scenario_common._unit_conv_factor("kg N2O / yr", "Pg N2ON / yr"), + ) + npt.assert_allclose( + 14 / 46 / 1.0e12, + make_scenario_common._unit_conv_factor("kt NOx / yr", "Pt N / yr"), + ) + npt.assert_allclose( + 0.5, + make_scenario_common._unit_conv_factor("Tg SO2 / yr", "Tg S / yr"), + ) + npt.assert_allclose( + 1.0, + make_scenario_common._unit_conv_factor("Gg Halon1211 / yr", "GgH1211 / yr"), + ) + npt.assert_allclose( + 1.0, + make_scenario_common._unit_conv_factor("Gg Halon2402 / yr", "GgH2402 / yr"), + )