简单气候模型magicc的python包装器

pymagicc的Python项目详细描述


PyMagicc

Build StatusAppVeyor
CodecovLaunch Binder
PyPIPyPI
statusZenodo

PyMaGICC是一个围绕复杂气候模型的Python包装器 MAGICC6。它包装了CC-BY-NC-SA许可证 MAGICC6 binary。pymagicc本身就是agpl许可的。

温室气体引起的气候变化评估模型 广泛应用于气候政策分析中未来排放途径的评估, 例如,在 政府间气候变化专门委员会或在综合评估模型中模拟气候变化的物理方面。

pymagicc使magicc模型易于从python安装和使用,并允许直接从python轻松修改所有magicc模型参数和排放场景。 例如,在气候研究中,它可用于缓解情景分析、综合评估模型、复杂气候模型仿真、不确定性分析以及气候科学教育和传播。

有关详细信息,请参见www.magicc.orgMeinshausen et al. 2011

基本用法

importpymagiccfrompymagiccimportscenariosimportmatplotlib.pyplotaspltforname,sceninscenarios.items():results,params=pymagicc.run(scen,return_config=True)temp=(results["SURFACE_TEMP"].GLOBAL.loc[1850:]-results["SURFACE_TEMP"].GLOBAL.loc[1850:1900].mean())temp.plot(label=name)plt.legend()plt.title("Global Mean Temperature Projection")plt.ylabel(u"°C over pre-industrial (1850-1900 mean)")# Run `plt.show()` to display the plot when running this example# interactively or add `%matplotlib inline` on top when in a Jupyter Notebook.

有关更多示例用法,请参见Jupyter Notebook。 由于有了Binder projectNotebook可以运行和修改,而无需在本地安装任何东西。使用jupyter笔记本的小型交互式demo app 也可以使用。

安装

pip install pymagicc

在Linux和OS X上,可在 http://www.magicc.org/并包含在pymagicc中 可以使用Wine运行。

在现代64位系统中,需要使用32位版本的Wine

sudo dpkg --add-architecture i386
sudo apt-get install wine32

在32位系统上,基于debian/ubuntu的系统wine可以用

sudo apt-get install wine

在OS X上,wine可在自制包管理器中找到:

brew install wine

它也应该可以在其他包管理器中使用,也可以直接从Wine project获得。

注意,在第一次安装之后,pymagicc的第一次运行可能会很慢,因为 设置wine配置并伴随弹出窗口或 调试输出。

要使用jupyter notebook和python 3运行示例会话,可以运行 以下命令创建虚拟环境并安装 本地开发的可编辑版本:

git clone https://github.com/openclimatedata/pymagicc.git

cd pymagicc
make venv
./venv/bin/pip install --editable .
./venv/bin/jupyter-notebook notebooks/Example.ipynb

开发

对于本地开发,请从pymagicc存储库的克隆或下载中安装依赖项和pymagicc的可编辑版本,方法是

make venv
./venv/bin/pip install --editable .

要运行测试,请运行

./venv/bin/pytest tests --verbose

要跳过运行magicc并花费更长时间的测试,请使用

./venv/bin/pytest tests --skip-slow

要获取测试覆盖率报告,请运行

./venv/bin/pytest --cov

为了统一编码风格,使用了black

要格式化pymagicctests以及setup.py中的文件,请运行

make black

更多用法示例

使用包含的场景

frompymagiccimportrcp26rcp26["WORLD"].head()

阅读magicc场景文件

frompymagiccimportread_scen_filescenario=read_scen_file("PATHWAY.SCEN")

创建新方案

pymagicc使用pandas数据帧来表示场景。字典是 用于具有多个区域的方案。

importpandasaspdscenario=pd.DataFrame({"FossilCO2":[8,10,9],"OtherCO2":[1.2,1.1,1.2],"CH4":[300,250,200]},index=[2010,2020,2030])

为场景运行magicc

output=pymagicc.run(scenario)# Projected temperature adjusted to pre-industrial meantemp=(output["SURFACE_TEMP"].GLOBAL-output["SURFACE_TEMP"].loc[1850:2100].GLOBAL.mean())

使用不同的magicc版本

magicc的自定义版本可以与使用 MAGICC_EXECUTABLE_6MAGICC_EXECUTABLE_7magicc6的环境变量 和magicc7。这些环境变量应设置为 magicc可执行文件的位置(对于linux/mac,可以是magicc),或者 magicc.exe对于windows)。 例如,位于/tmp/magicc的自定义magicc7文件夹可以用于 在Linux下,通过将MAGICC_EXECUTABLE_7设置为/tmp/magicc/run/magicc

bash中的示例用法:

MAGICC_EXECUTABLE_7=/tmp/magicc/run/magicc.exe python run_tests.py

或者在脚本中:

#!/bin/bashexportMAGICC_EXECUTABLE_7=tmp/magicc/run/magicc.exe
python run_tests.py
python generate_plots.py

贡献

请报告问题或讨论PyMagicc的功能请求 issue tracker

您也可以通过电子邮件联系pymagicc作者 robert.gieseke@pik-potsdam.de

许可证

汤姆·维格利的compiled MAGICC binary, Sarah Raper和Malte Meinshausen包含在这个包中,是根据Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License授权的。

包装器是GNU Affero General Public下的免费软件 许可证v3,请参见LICENSE

如果你做的话使用magicc,请引用:

M. Meinshausen, S. C. B. Raper and T. M. L. Wigley (2011). "Emulating coupled atmosphere-ocean and carbon cycle models with a simpler model, MAGICC6: Part I "Model Description and Calibration." Atmospheric Chemistry and Physics 11: 1417-1456. doi:10.5194/acp-11-1417-2011

另请参见MAGICC websiteWiki 了解更多信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在二进制数中添加1的结果无效   java运行时异常:“存根!”没有任何其他信息   java关于新对象   java中两个日期(yyyymmdd格式)的天数差异   java Scala:检查列表是否为空   java不是一个语句   java为什么相同宽度和高度的图像没有相同的大小?   java:OutOfMemoryError:在Idea中运行JUnits时内存不足   java使用多个api请求和一个适配器   java为什么Tomcat在我放置。jsp但是有一个。html不起作用?   java使用JavaFX应用程序。Shutdownhook上的stop()方法   java如何检查电子邮件是否确实存在   通过从java程序调用的bash文件运行python文件   sql在Java上连接的Oracle数据库中执行存储过程   servlets使用Scribe OAuth Java库进行Google API授权   java如何在Ant项目中使用ThreeTen?   java需要将数据库中的列表类型数据写入不同的excel表中   Java程序输出奇怪的结果   java CDI:在“注入链”中生成正确EntityManager的好方法