通用框架和xarray扩展,用于计算机模型模拟
项目描述
xarray-simlab 是一个Python库,它提供了一个通用框架来以模块化方式构建计算模型,并扩展了 xarray 以使用xarray的 Dataset 结构设置和运行模拟。它旨在实现快速、交互式和探索性的建模。
xarray-simlab 与PyData生态系统的其他库,如 dask 和 zarr,有很好的集成。
简而言之
下面的康威生命游戏示例改编自 Jake VanderPlas 的这篇 博客文章。
通过编写紧凑的Python类来创建新的模型组件,即非常类似于 dataclasses。
import numpy as np
import xsimlab as xs
@xs.process
class GameOfLife:
world = xs.variable(
dims=('x', 'y'), intent='inout', encoding={'fill_value': None}
)
def run_step(self):
nbrs_count = sum(
np.roll(np.roll(self.world, i, 0), j, 1)
for i in (-1, 0, 1) for j in (-1, 0, 1)
if (i != 0 or j != 0)
)
self._world_next = (nbrs_count == 3) | (self.world & (nbrs_count == 2))
def finalize_step(self):
self.world[:] = self._world_next
@xs.process
class Glider:
pos = xs.variable(dims='point_xy', description='glider position')
world = xs.foreign(GameOfLife, 'world', intent='out')
def initialize(self):
x, y = self.pos
kernel = [[1, 0, 0],
[0, 1, 1],
[1, 1, 0]]
self.world = np.zeros((10, 10), dtype=bool)
self.world[x:x+3, y:y+3] = kernel
只需提供一个模型组件的字典即可创建新的模型。
model = xs.Model({'gol': GameOfLife,
'init': Glider})
创建一个输入 xarray.Dataset,运行模型并获取一个输出 xarray.Dataset。
input_dataset = xs.create_setup(
model=model,
clocks={'step': np.arange(9)},
input_vars={'init__pos': ('point_xy', [4, 5])},
output_vars={'gol__world': 'step'}
)
output_dataset = input_dataset.xsimlab.run(model=model)
>>> output_dataset
<xarray.Dataset>
Dimensions: (point_xy: 2, step: 9, x: 10, y: 10)
Coordinates:
* step (step) int64 0 1 2 3 4 5 6 7 8
Dimensions without coordinates: point_xy, x, y
Data variables:
init__pos (point_xy) int64 4 5
gol__world (step, x, y) bool False False False False ... False False False
使用方法链以函数式风格进行模型设置、预处理、运行、后处理和可视化。
import matplotlib.pyplot as plt
with model:
(input_dataset
.xsimlab.update_vars(
input_vars={'init__pos': ('point_xy', [2, 2])}
)
.xsimlab.run()
.gol__world.plot.imshow(
col='step', col_wrap=3, figsize=(5, 5),
xticks=[], yticks=[],
add_colorbar=False, cmap=plt.cm.binary)
)
文档
文档托管在 ReadTheDocs 上: http://xarray-simlab.readthedocs.io
许可证
3-clause(“修改”或“新”)BSD许可证,请参阅 许可证文件。
xarray-simlab使用了xarray、pandas和dask库的代码片段。xarray、pandas和dask的许可证在“licenses”目录中复现。
致谢
本项目的支持来自于GFZ赫尔姆霍兹研究中心地球表面过程建模小组。地球表面过程建模
引用
如果您在科学出版物中使用xarray-simlab,我们将非常感谢您的引用。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
xarray-simlab-0.5.0.tar.gz (146.8 kB 查看哈希)
构建分发
xarray_simlab-0.5.0-py3-none-any.whl (85.3 kB 查看哈希)
关闭
xarray-simlab-0.5.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 92de9fbd55e045b0d0eacbc7334a86108ecd5376973b1ed20b600bbc6521c2d6 |
|
MD5 | 40b205ad84feb0b86386e3169ebe61d1 |
|
BLAKE2b-256 | 5bc3ea7ae075a27ee1bd6bb7995de77c7ac7132e34ca6e611a038ef28d8c78e2 |
关闭
xarray_simlab-0.5.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 708e988baf393299b74720f28af364f50cb29449196c3bbd85812decb58d5bd9 |
|
MD5 | 72d4da3baaa85dbc2c101be90b9f94c1 |
|
BLAKE2b-256 | c52372de6ab41634968a54af3a6dc2b9d6318425a07872c09e8c12a020685b1e |