GSW-Python
This Python implementation of the Thermodynamic Equation of Seawater 2010.
https://github.com/teos-10/gsw-python
Category: Hydrosphere
Sub Category: Ocean Carbon and Temperature
Keywords from Contributors
archiving measur transforms projections climate-model argo-floats oceanography reports optimize compose
Last synced: about 24 hours ago
JSON representation
Repository metadata
Python implementation of TEOS-10 GSW based on ufunc wrappers of GSW-C
- Host: GitHub
- URL: https://github.com/teos-10/gsw-python
- Owner: TEOS-10
- License: other
- Created: 2017-03-28T20:14:20.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2025-03-25T16:33:20.000Z (about 1 month ago)
- Last Synced: 2025-04-10T06:39:05.240Z (17 days ago)
- Language: C
- Homepage: https://teos-10.github.io/GSW-Python
- Size: 13 MB
- Stars: 152
- Watchers: 18
- Forks: 33
- Open Issues: 8
- Releases: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
README.md
GSW-Python
This Python implementation of the Thermodynamic Equation of Seawater 2010 (TEOS-10) is based primarily on numpy ufunc wrappers of the GSW-C implementation.
This library replaces the original python-gsw pure-python implementation.
The primary reasons for this change are that by building on the C implementation we reduce code duplication and we gain an immediate update to the 75-term equation.
Additional benefits include a major increase in speed,
a reduction in memory usage,
and the inclusion of more functions.
The penalty is that a C (or MSVC C++ for Windows) compiler is required to build the package from source.
Warning: this is for Python >=3.8 only.
Documentation is provided at https://teos-10.github.io/GSW-Python/.
For the core functionality, we use an auto-generated C extension
module to wrap the C functions as numpy ufuncs,
and then use an autogenerated Python module to add docstrings and handle masked arrays.
165 scalar C functions with only double-precision arguments and return values are wrapped as ufuncs,
and 158 of these are exposed in the gsw
namespace with an additional wrapper in Python.
A hand-written wrapper is used for one C function, and others are re-implemented directly in Python instead of being wrapped.
Additional functions present in GSW-Matlab but not in GSW-C may be re-implemented in Python,
but there is no expectation that all such functions will be provided.
Installation
Pip users can install the pre-built wheels with:
pip install gsw
conda users will find binaries on conda-forge,
conda install gsw --channel conda-forge
The development version of the package can be installed from a clone of the repo using
pip install .
Citation
If you use GSW-Python, please cite: McDougall, T.J. and P.M. Barker, 2011: Getting started with TEOS-10 and the Gibbs Seawater (GSW) Oceanographic Toolbox, 28pp., 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}
}
Note for xarray users
A wrapper around gsw called gsw-xarray exists for xarray.
It adds CF compliant attributes when possible, units, and name.
Note on generating the docstrings
The autogenerated docstrings are checked with codespell in the CIs.
When autogenerating them we need to run pre-commit run --all-files
and fix the documentation issues found.
Development notes
You will need a suitable compiler:
gcc or clang for unix-like systems,
or the MSVC compiler set used for Python itself on Windows.
For Windows, some of the source code has been modified to C++ because the MSVC C compiler does not support the
C99 complex data type used in original GSW-C.
The subdirectory ('tools') contains modules and scripts for
maintaining the code that is autogenerated from the upstream
GSW-Matlab and GSW-C repos. The scripts are to be run from
this directory; they make assumptions about where they
are, and about where upstream repos are. Specifically, it
is assumed that GSW-Matlab, GSW-C, and GSW-Python git repos
are all in the same base directory.
Scripts
copy_from_GSW-C.py
: copies the relevant .c and .h files from a
sibling GSW-C repo, if the latter are newer.mat2npz.py
: generates an npz file in gsw/tests containing the
test data and check values from the gsw_data_v3_0.mat file
in the sibling GSW-Matlab repo.make_ufuncs.py
: Generates the src/_ufuncs.c file to turn the
scalar C functions into numpy ufuncs. It writes ufuncs.list
in the current directory as a record of the ufunc names.
Functions are identified as ufunc candidates based on their
signatures, parsed from src/c_gsw/gswteos-10.h.make_wrapped_ufuncs.py
: Generates gsw/_wrapped_ufuncs.py based on
the output of make_ufuncs.py. It adds docstrings constructed
from the Matlab help text.fix_wrapped_ufunc_typos.py
: Fixes docstring typos that have been
identified, but not yet fixed, in the GSW-Matlab repo.codegen
: Runs the last three python scripts.
Modules
c_header_parser.py
: Functions for taking apart the function
declarations in gswteos-10.h.matlab_parser.py
: Functions specifically for reading the GSW-Matlab
function signatures and for splitting out the help text.docstring_parts.py
: Blocks of text for assembling docstrings.docstring_utils.py
: Functions for assembling docstrings in numpydoc
format.categories.py
: Functions for listing gsw function names by category.
This is not used by any of the other functions or scripts, but
was used when initially categorizing the functions for inclusion
in submodules.
Notes
- In addition to the generated src/_ufuncs.c, there are two C files
that are hand-written: src/method_bodies.c and src/method_def_entries.c.
These are imported by src/_ufuncs.c. They handle some C functions
that are not suitable for ufuncs. - Specialized Matlab parsing is also done in gsw/tests/check_functions.py,
which is used by gsw/tests/test_check_functions.py; see the docstring
of the former for more info.
Testing
To test, after installation, run "pytest --pyargs gsw".
Owner metadata
- Name: Thermodynamic Equation Of Seawater - 2010 (TEOS-10)
- Login: TEOS-10
- Email: [email protected]
- Kind: organization
- Description:
- Website: http://www.TEOS-10.org
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/9031633?v=4
- Repositories: 17
- Last ynced at: 2024-03-27T10:14:11.770Z
- Profile URL: https://github.com/TEOS-10
GitHub Events
Total
- Watch event: 8
- Delete event: 4
- Issue comment event: 11
- Push event: 6
- Pull request event: 13
- Pull request review event: 3
- Fork event: 3
- Create event: 3
Last Year
- Watch event: 8
- Delete event: 4
- Issue comment event: 11
- Push event: 6
- Pull request event: 13
- Pull request review event: 3
- Fork event: 3
- Create event: 3
Committers metadata
Last synced: 7 days ago
Total Commits: 364
Total Committers: 9
Avg Commits per committer: 40.444
Development Distribution Score (DDS): 0.503
Commits in past year: 72
Committers in past year: 4
Avg Commits per committer in past year: 18.0
Development Distribution Score (DDS) in past year: 0.514
Name | Commits | |
---|---|---|
Filipe Fernandes | o****f@g****m | 181 |
Eric Firing | e****g@h****u | 114 |
dependabot[bot] | 4****] | 35 |
mauzey1 | m****1@l****v | 17 |
Romain Caneill | r****l@e****g | 9 |
Andrew Barna | a****a@g****m | 5 |
Ryan Abernathey | r****y@g****m | 1 |
Hood Chatham | r****m@g****m | 1 |
Guilherme Castelão | g****e@c****t | 1 |
Committer domains:
- castelao.net: 1
- ens-lyon.org: 1
- llnl.gov: 1
- hawaii.edu: 1
Issue and Pull Request metadata
Last synced: 2 days ago
Total issues: 38
Total pull requests: 125
Average time to close issues: 7 months
Average time to close pull requests: 19 days
Total issue authors: 26
Total pull request authors: 11
Average comments per issue: 5.34
Average comments per pull request: 1.44
Merged pull request: 109
Bot issues: 0
Bot pull requests: 45
Past year issues: 2
Past year pull requests: 29
Past year average time to close issues: about 23 hours
Past year average time to close pull requests: 3 days
Past year issue authors: 2
Past year pull request authors: 4
Past year average comments per issue: 2.0
Past year average comments per pull request: 0.79
Past year merged pull request: 24
Past year bot issues: 0
Past year bot pull requests: 17
Top Issue Authors
- rcaneill (5)
- ocefpaf (5)
- mcepl (2)
- efiring (2)
- FudgeMunkey (2)
- pvthinker (2)
- eldobbins (1)
- ratnaksha (1)
- breichl (1)
- jbusecke (1)
- ggardet (1)
- davjfish (1)
- hoodmane (1)
- emmaworthington (1)
- chpelletier (1)
Top Pull Request Authors
- ocefpaf (51)
- dependabot[bot] (45)
- efiring (17)
- rcaneill (4)
- DocOtak (2)
- castelao (1)
- hoodmane (1)
- janjaapmeijer (1)
- FudgeMunkey (1)
- mauzey1 (1)
- pvthinker (1)
Top Issue Labels
Top Pull Request Labels
- Bot (43)
Package metadata
- Total packages: 2
-
Total downloads:
- pypi: 12,183 last-month
- Total docker downloads: 325
- Total dependent packages: 40 (may contain duplicates)
- Total dependent repositories: 159 (may contain duplicates)
- Total versions: 29
- Total maintainers: 3
pypi.org: gsw
Gibbs Seawater Oceanographic Package of TEOS-10
- Homepage:
- Documentation: https://gsw.readthedocs.io/
- Licenses: BSD-3-Clause
- Latest release: 3.6.19 (published 9 months ago)
- Last Synced: 2025-04-25T14:03:05.469Z (2 days ago)
- Versions: 19
- Dependent Packages: 24
- Dependent Repositories: 93
- Downloads: 12,183 Last month
- Docker Downloads: 325
-
Rankings:
- Dependent packages count: 0.591%
- Dependent repos count: 1.545%
- Average: 2.241%
- Docker downloads count: 2.504%
- Downloads: 4.325%
- Maintainers (3)
conda-forge.org: gsw
- Homepage: https://github.com/TEOS-10/GSW-Python/
- Licenses: BSD-3-Clause
- Latest release: 3.6.16 (published over 2 years ago)
- Last Synced: 2025-04-25T14:03:12.668Z (2 days ago)
- Versions: 10
- Dependent Packages: 16
- Dependent Repositories: 66
-
Rankings:
- Dependent packages count: 3.957%
- Dependent repos count: 4.312%
- Average: 18.228%
- Stargazers count: 32.172%
- Forks count: 32.472%
Dependencies
- check-manifest * development
- dask * development
- doctr * development
- numpydoc * development
- pytest * development
- setuptools_scm * development
- sphinx * development
- sphinx_rtd_theme * development
- twine * development
- xarray * development
- actions/checkout v3 composite
- actions/download-artifact v3 composite
- actions/upload-artifact v3 composite
- pypa/cibuildwheel v2.12.0 composite
- pypa/gh-action-pypi-publish release/v1 composite
- actions/checkout v3 composite
- mamba-org/provision-with-micromamba v15 composite
- peaceiris/actions-gh-pages v3 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- pre-commit/action v3.0.0 composite
- actions/checkout v3 composite
- mamba-org/provision-with-micromamba v15 composite
- actions/checkout v3 composite
- mamba-org/provision-with-micromamba v15 composite
Score: 16.72309335259079