TEOS-10海洋学吉布斯海水包
项目描述
GSW-Python
这是基于TEOS-10热力学海水方程(TEOS-10)的Python实现,主要基于GSW-C实现的numpy ufunc包装。这个库取代了原始的python-gsw纯Python实现。进行这种改变的主要原因是通过基于C实现,我们减少了代码冗余,并立即获得了75项方程的更新。
额外的优势包括速度的重大提升、内存使用的减少以及更多功能的加入。代价是需要使用C(或Windows的MSVC C++)编译器从源代码构建包。
警告:仅适用于Python >=3.8。
文档可在以下链接获取:https://teos-10.github.io/GSW-Python/。
对于核心功能,我们使用自动生成的C扩展模块将C函数封装为numpy ufuncs,然后使用自动生成的Python模块添加文档字符串并处理掩码数组。165个仅具有双精度参数和返回值的标量C函数被封装为ufuncs,其中158个在gsw
命名空间中暴露,并使用Python中的额外包装器。
一个C函数使用手写的包装器,其他函数则直接在Python中重新实现,而不是进行包装。GSW-Matlab中有但GSW-C中没有的额外函数可能将在Python中重新实现,但并不期望提供所有此类函数。
安装
Pip用户可以使用以下命令安装预构建的wheels:
pip install gsw
conda用户可以在conda-forge中找到二进制文件。
conda install gsw --channel conda-forge
可以使用从repo克隆的方式安装包的开发版本:
pip install .
引用
如果您使用GSW-Python,请引用:McDougall, T.J.和P.M. Barker, 2011:入门TEOS-10和Gibbs海水(GSW)海洋工具箱,28页,SCOR/IAPSO WG127,ISBN 978-0-646-55621-5
@book{mcdougall2011getting,
author = {McDougall, T. J. and Barker, P. M.},
title = {Getting started with TEOS-10 and the Gibbs Seawater (GSW) Oceanographic Toolbox},
year = {2011},
pages = {28},
publisher = {SCOR/IAPSO WG127},
isbn = {978-0-646-55621-5}
}
针对xarray用户的说明
存在一个名为gsw-xarray的gsw包装器,用于xarray。它会在可能的情况下添加CF兼容的属性、单位和名称。
关于生成文档字符串的说明
自动生成的文档字符串在CI中使用codespell进行检查。在自动生成它们时,我们需要运行pre-commit run --all-files
并修复发现的文档问题。
开发说明
您需要一个合适的编译器:类Unix系统的gcc或clang,或者在Windows上用于Python本身的MSVC编译器集。对于Windows,已经修改了一些源代码为C++,因为MSVC C编译器不支持原始GSW-C中使用的C99复杂数据类型。
子目录('tools')包含用于维护从上游GSW-Matlab和GSW-C repo自动生成的代码的模块和脚本。脚本应从该目录运行;它们对它们所在的位置以及上游repo的位置做出了假设。具体来说,假设GSW-Matlab、GSW-C和GSW-Python git repo都位于同一个基本目录中。
脚本
copy_from_GSW-C.py
:如果后者较新,则从同级的GSW-C repo复制相关的.c和.h文件。mat2npz.py
:在gsw/tests中生成npz文件,包含来自同级GSW-Matlab repo中gsw_data_v3_0.mat文件的测试数据和检查值。make_ufuncs.py
:生成src/_ufuncs.c文件,将标量C函数转换为numpy ufuncs。它将在当前目录中写入ufuncs.list,作为ufunc名称的记录。函数根据其签名被识别为ufunc候选者,该签名是从src/c_gsw/gswteos-10.h解析出来的。make_wrapped_ufuncs.py
:根据make_ufuncs.py的输出生成gsw/_wrapped_ufuncs.py。它添加由Matlab帮助文本构建的文档字符串。fix_wrapped_ufunc_typos.py
:修复在GSW-Matlab repo中已识别但尚未修复的文档字符串中的错误。codegen
:运行最后三个Python脚本。
模块
c_header_parser.py
:用于分解gswteos-10.h中函数声明的函数。matlab_parser.py
:专门用于读取GSW-Matlab函数签名并将帮助文本拆分的函数。docstring_parts.py
:用于组装文档字符串的文本块。docstring_utils.py
:用于以numpydoc格式组装文档字符串的函数。categories.py
:按类别列出gsw函数名称的函数。此函数不用于任何其他函数或脚本,但在最初将函数分类并包含到子模块中时使用。
注意事项
- 除了生成的src/_ufuncs.c之外,还有两个手动编写的C文件:src/method_bodies.c和src/method_def_entries.c。这些文件被src/_ufuncs.c导入。它们处理一些不适合ufuncs的C函数。
- 在gsw/tests/check_functions.py中也进行了专门的Matlab解析,该文件由gsw/tests/test_check_functions.py使用;有关更多信息,请参阅前者的文档字符串。
测试
为了测试,在安装后运行“pytest --pyargs gsw”。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪一个,请了解有关安装包的更多信息。
源分发
构建分发
gsw-3.6.19.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3595b686458d852444ae6f1946d260a7c8f16ba457e9061aa953cf417927423f |
|
MD5 | 4683e9bb66b8ab79121db5d069d7584e |
|
BLAKE2b-256 | 3a23ffb0b0622ad5f5898f1dc07786f95787704ce9e9540017b756722dc66919 |
gsw-3.6.19-cp312-cp312-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bcf0eb380f22eb22e44c9521db78be760a1126fbffd1af21b317726968eca90c |
|
MD5 | cc6eb6b7a8bf6891e7b3f83ba5189bbf |
|
BLAKE2b-256 | e079325e670fe4a91125e5aa5f7c0a3d4b8d74388012e635a97c4bf6613ac719 |
gsw-3.6.19-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5a570e4439725e8d2667e1037a053a7911128e76aee15882a058a459cf806cac |
|
MD5 | 1ff0c9cd55c32a344285023db33f55cb |
|
BLAKE2b-256 | c8a3c5efa3fd211c05632a8b90c6a3d380ffc698920a9fb3e9025dc43cd025bc |
gsw-3.6.19-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 320b93696d54659d7c0ded7a46911074a5000b65189d6f2d74e9d1f203476d64 |
|
MD5 | c39e43cd14487b946274c521cfb2bee9 |
|
BLAKE2b-256 | c6634d044aa5a6085bfac92bf823f1fe152408c7e3189a1114b2c03abe2fcf1d |
gsw-3.6.19-cp312-cp312-macosx_11_0_arm64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6ae0000fe6a4802c2767ccb4cc77fc21c1e80d39fd5102f9ecae66ad9607a92d |
|
MD5 | 7756c6c5fbdaada0e9fc238ca24e703b |
|
BLAKE2b-256 | c4f1cf4c83d52dd1ba78cc3db5de29f3b518ce561583e542a919ebf52127c817 |
gsw-3.6.19-cp312-cp312-macosx_10_9_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5dff941ad55d2342b037ae3afdf74fd08ddb4f6db76a66fc543c9110e738606b |
|
MD5 | 247490f8045e968989594bdb537eb9dd |
|
BLAKE2b-256 | 9fa223d3f0e35bdd11f9342f843e638c3e2a8e93fb302a7c51984797a6b66446 |
gsw-3.6.19-cp311-cp311-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e660b0218806e1651a776b311eb63c17d8175259cf31f226894dd0c024d56942 |
|
MD5 | 7cc9165a2be8378bb1d736c31c4a3910 |
|
BLAKE2b-256 | 30b91fb74bc79a503215488c5fbecd0c7561e8e9e2c1fcb00c1d0c643d147e3e |
gsw-3.6.19-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fdedb58ab2f0a33cc5c00e1de672cb37621ec975232b9df1dbae5c1e89f1c57e |
|
MD5 | a5dea885e53b3c71cec29e4b455fff9d |
|
BLAKE2b-256 | 3fb9f5adac68ac3d62d9069ef3b2c7086d2aff65d098702e5db2e42583e05c8d |
哈希值 for gsw-3.6.19-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b27fe8cd46bb76a501809e2b12ac7bc6cd343512fc9a15f3e4b20115d11397f8 |
|
MD5 | da8fc3c5ae5c09ef24c0bf9f6969a401 |
|
BLAKE2b-256 | 632edba931fd87071cf63066994515647fc5387f17f506d75ddcf12a89b87c47 |
哈希值 for gsw-3.6.19-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 818a2cbe610b9ab34fc05144ea02d836fc85e646f784e992821a5be36474f0dd |
|
MD5 | 0f2557e840b4d3dc6f0780c81b1054ac |
|
BLAKE2b-256 | 18909528bdd11984557baee48fe9f63008c4fc02210786b0b5cfc23d79545885 |
哈希值 for gsw-3.6.19-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab63ddf958edf293471a362e1d61b6b15e6977c5a67f2c58313d5c1d301e8d7f |
|
MD5 | fc548f0fcb3d6cda15c52a933ff8e83c |
|
BLAKE2b-256 | e82bf1ac10b974fb537cccacde51405b9b02a8b46c239c918df5b435c4d411ab |
哈希值 for gsw-3.6.19-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 21a1e64233f178954a3be86d47dd7ea65bb0143a1d1f933445da554693cfc3c8 |
|
MD5 | 2f11aa95bff99db22fe62598c9ea0b36 |
|
BLAKE2b-256 | c686fcde64a64d9a8f4371594b5e7e2774847e336b9cdbc05e89ec4d0707f4be |
哈希值 for gsw-3.6.19-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5ed8b28fc4371197f3d680bd0706098ca82de3caed83fcde0f7ea181d06fd859 |
|
MD5 | 36d0165f76fe7bb8874373a427d8f1c1 |
|
BLAKE2b-256 | eb817c20f283ad734f153cb0c233963dd2f876e0d29e04962e35a50ba6a7aaa5 |
哈希值 for gsw-3.6.19-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 779f81ecd4d68c036446d1951a899f55a707aa1333a687abdd13468360ba8da5 |
|
MD5 | 355242ffc9ed1fa1aa1bb18242665b0d |
|
BLAKE2b-256 | 3a4c6866104fd6cd41485575d97f95fc92cf0d4d395ec4775eda62b5f523ebe6 |
哈希值 for gsw-3.6.19-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 623899a96d1c0063ee020bd2ee6553f997b801a59f5271930ddd05e28305255a |
|
MD5 | c4d378c3993eeb91fe0c96d6d25caee7 |
|
BLAKE2b-256 | 37b282a535ac1e765773eb0cee7f6777b82644683176c0bf9f479791b7333c4b |