跳转到主要内容

为简单气候模型进行校准

项目描述

scmcallib 是一个工具,用于简化简单气候模型(SCMs)参数集的推导。目前,两个主要用例是

  • “模拟”其他模型,通常是更复杂且计算成本更高的模型

  • “校准”到观测数据,即推导出参数集,使得SCM的响应能够涵盖历史观测的不确定性范围

这个包符合更广泛的工具生态系统,旨在为多种SCMs、观测数据和气候模型输出创建透明且可重复的参数集生成方式。scmcallib 使用 scmdatanetcdf-scm,以便轻松地与各种SCMs和气候模型输出进行接口,隐藏运行这些“简单”气候模型和处理复杂模型输出的复杂性。

入门指南

在《scmcallib》中使用的许多库需要编译后的库和其他系统依赖。为了更方便地开始此项目,建议设置一个新的Conda环境来隔离这些库。由于该软件包目前无法通过pypi安装,您必须从源代码安装它。

$ git clone git://gitlab.com/magicc/scmcallib
$ cd scmcallib
$ conda env create --name scmcallib --file environment.yml
$ conda activate scmcallib
$ pip install -e .

安装完成后,scmcallib软件包即可生成参数集。

仿真

仿真是指找到一组参数,这些参数最能拟合另一个模型的结果。一旦找到了参数空间中这个最佳拟合点,SCM提供了一种计算成本低的探索方法,以了解这些较大的模型在各种场景下的响应。

TODO:添加有关提取的文档

在开始仿真模型之前,我们必须定义约束参数的参数分布的初始猜测(即先验),对于正在约束的参数。

[TODO:决定是否将此示例放入笔记本中,以便在CI下运行]

from scmcallib import ParameterSet

best_guess_c1 = 0.631
best_guess_c2 = 0.429
best_guess_a1 = 0.2240

param_set = ParameterSet()
param_set.set_tune('c1', Bound(Normal(mu=best_guess_c1, sd=1.), lower=0.1))
param_set.set_tune('c2', Bound(Normal(mu=best_guess_c2, sd=0.1), lower=0.1))
param_set.set_tune('a1', Bound(Normal(mu=best_guess_a1, sd=0.1), lower=0.0, upper=0.4))

一旦我们有了描述模型如何被约束的数据和参数,我们就可以实例化PointEstimateFinder。在此示例中,我们使用A5IR SCM [TODO:填写AR5IR SCM以使其真正完整],这是一个基本但非常快的模型,用于加速仿真过程。仿真的第一步是找到优化的初始起点。然后,这个起点被优化器用来找到参数空间中使SCM输出与目标时间序列(通常来自更复杂的模型)之间的差异最小化的点。

from scmcallib import PointEstimateFinder
from scmcallib.scm import AR5IR_SCM
emulator = PointEstimateFinder(param_set, reference_period=(2000, 2010))
emulator.set_target(observed=observed_gmt)

with AR5IR_SCM() as scm:
    results = emulator.find_best_fit(scm, optimiser_name='bayesopt')

results.plot_summary()
results.plot_fit()

scmcallib提供了一种读取tuningcore文件的方法,这些文件由simcap使用来描述如何调整magicc。

校准

运行简单的校准示例

  • 编辑calibration.pyrun_calibration.py以适应您的个人设置

  • 然后运行python run_calibration.py

  • 使用notebooks/show_calibration.ipynb可视化

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

scmcallib-0.5.1.tar.gz (72.0 kB 查看哈希值)

上传时间 源代码

构建分发

scmcallib-0.5.1-py2.py3-none-any.whl (56.8 kB 查看哈希值)

上传时间: Python 2 Python 3

支持