工具
该库提供了一些额外的工具。
标杆
用于测试和比较不同文件之间的输出的基准工具。其中一些功能也用于测试。
- pysd.tools.benchmarking.runner(model_file, canonical_file=None, transpose=False, data_files=None)[源代码]
转换和运行模型并返回其输出和规范输出。
- 参数:
- 返回:
output, canon -- pandas.模型输出和规范输出的DataFrame。
- 返回类型:
- pysd.tools.benchmarking.assert_frames_close(actual, expected, assertion='raise', verbose=False, precision=2, **kwargs)[源代码]
按列比较DataFrame项,如果任何列不相等,则引发AssertionError。
列的顺序并不重要,项目仅通过标签进行比较。支持NaN和无限值。
- 参数:
actual (pandas.DataFrame) -- 模型输出的实际值。
expected (pandas.DataFrame) -- 预期模型输出。
assertion (str (optional)) -- 如果无法断言两个帧接近时应引发错误,则为“raise”。如果“警告”,则会显示警告消息。如果“返回”,它将返回信息。默认为“raise”。
verbose (bool (optional)) -- 如果为True,则如果任何列未关闭,则将在错误/警告消息中打印实际值和预期值的差值。默认为假。
precision (int (optional)) -- 精确打印断言动词消息的数值。默认为2。
kwargs -- assert_allclose的可选rtol和atol值。
- 返回:
(cols, first_false_time, first_false_cols) or None --如果断言为“返回”,则返回所有不同列的集合。发现第一次差异的时间以及当时有何不同的变量。如果断言不是“返回”,则返回无。
- 返回类型:
示例
>>> assert_frames_close( ... pd.DataFrame(100, index=range(5), columns=range(3)), ... pd.DataFrame(100, index=range(5), columns=range(3)))
>>> assert_frames_close( ... pd.DataFrame(100, index=range(5), columns=range(3)), ... pd.DataFrame(110, index=range(5), columns=range(3)), ... rtol=.2)
>>> assert_frames_close( ... pd.DataFrame(100, index=range(5), columns=range(3)), ... pd.DataFrame(150, index=range(5), columns=range(3)), ... rtol=.2) Traceback (most recent call last): ... AssertionError: Following columns are not close: '0'
>>> assert_frames_close( ... pd.DataFrame(100, index=range(5), columns=range(3)), ... pd.DataFrame(150, index=range(5), columns=range(3)), ... verbose=True, rtol=.2) Traceback (most recent call last): ... AssertionError: Following columns are not close: '0' Column '0' is not close. Expected values: [150, 150, 150, 150, 150] Actual values: [100, 100, 100, 100, 100] Difference: [50, 50, 50, 50, 50]
>>> assert_frames_close( ... pd.DataFrame(100, index=range(5), columns=range(3)), ... pd.DataFrame(150, index=range(5), columns=range(3)), ... rtol=.2, assertion="warn") ... UserWarning: Following columns are not close: '0'
引用
将netCDF data_vars导出到csv或tab
模拟结果可以存储为netEDF( .nc )文件(请参阅 Storing simulation results on a file ).
的 pysd.tools.ncfiles.NCFile
允许将使用PySD生成的netEDF文件作为 xarray.Dataset
.当通过论点时 parallel=True to the constructor, xarray.DataArray
inside the Dataset will be loded as dask arrays , chunks=-1 .
加载数据集后,data_vars的子集(或全部)可以被输出到:
A *.csv or *.tab files, using the the
pysd.tools.ncfiles.NCFile.to_text_file()
method
或者,为了进一步控制分块,用户可以加载 xarray.Dataset
使用 xarray.open_dataset()
然后使用 pysd.tools.ncfiles.NCFile.ds_to_df()
或 pysd.tools.ncfiles.NCFile.df_to_text_file()
静态方法
用于导入和转换从模拟中生成的netEDF文件的工具使用PySD运行。
- class pysd.tools.ncfiles.NCFile(filename: str | Path, parallel: bool | None = False)[源代码]
Helper类从netEDF文件中提取数据。
- 参数:
ncfile (str or pathlib.Path) -- 要处理的netEDF文件的路径。
parallel (bool (optional)) -- 当为True时,使用chunks=-1打开数据集(详细信息请参阅xArray文档),并使用daskdelayed并行处理DataArrays。Dasks不作为pysd的要求,因此必须单独安装。当数据集包含大型多维数据数组时,强烈建议设置parallel=True。
- to_text_file(outfile: str | Path | None = 'result.tab', subset: list | None = None, time_in_row: bool | None = False) <Mock name='mock.DataFrame' id='139859939967120'> [源代码]
将netEDF文件内容转换为逗号分隔或制表符分隔的文件。
- 参数:
outfile (str or pathlib.Path (optional)) -- 输出文件的路径。
subset (list (optional)) -- 要从netEDF输出的变量列表。
time_in_row (bool (optional)) -- 时间是否随行增加。默认为假。
- 返回:
df --子集中指定了所有列的数据框架。
- 返回类型:
- to_df(subset: list | None = None) <Mock name='mock.DataFrame' id='139859939967120'> [源代码]
包裹到ds_to_DF静态方法。将xArray.Dataset转换为pandas DataFrame。
- 参数:
subset (list (optional)) -- 要从数据集中输出的变量列表。
- 返回:
df --子集中指定了所有列的数据框架。
- 返回类型:
- open_nc() <Mock name='mock.Dataset' id='139859978738256'> [源代码]
将netEDF文件加载到xArray数据集中。它基本上是xr.open_dataset的包装器,以简化pysd用例(加载模拟结果)的界面。
- 返回类型:
- static ds_to_df(ds: <Mock name='mock.Dataset' id='139859978738256'>, subset: list | None = None, parallel: bool | None = False, index_dim: str | None = 'time') <Mock name='mock.DataFrame' id='139859939967120'> [源代码]
将xArray.Dataset转换为pandas DataFrame。
- 参数:
ds (xarray.Dataset) -- 数据集对象。
subset (list (optional)) -- 要从数据集中输出的变量列表。
parallel (bool (optional)) -- 如果为True,则使用daskdelayed并行处理DataArrays。当数据数组较大且多维时,强烈建议设置parallel=True。
index_dim (str (optional)) -- 用作结果DataFrame索引的维度名称(通常为“时间”)。
- 返回:
df --子集中指定了所有列的数据框架。
- 返回类型:
- static df_to_text_file(df: <Mock name='mock.DataFrame' id='139859939967120'>, outfile: ~pathlib.Path, time_in_row: bool | None = False) None [源代码]
将pandas DataFrame存储到CSV或选项卡文件中。
- 参数:
df (pandas.DataFrame) -- DataFrame保存为CSV或Tab文件。
outfile (str or pathlib.Path) -- 输出文件的路径。
time_in_row (bool (optional)) -- 时间是沿着列还是沿着行增加。
- 返回类型:
None
- static da_to_dict(da: <Mock name='mock.DataArray' id='139859939967184'>, index_dim: str) dict [源代码]
将DataArray拆分为字典,其中键等于变量名称加上方括号内坐标的carriage积的所有组合,值等于与index_dim维度上的这些坐标对应的数据。
- 参数:
index_dim (str) -- 在DataArray的索引期间,此维度的坐标将不会固定(即,索引数据将是沿此维度的标量或数组)。