Computes the inversion of the cyclogeostrophic balance based on a variational formulation approach, using JAX
Project description
jaxparrow
jaxparrow implements a novel approach based on a minimization-based formulation to compute the inversion of the cyclogeostrophic balance.
It leverages the power of JAX, to efficiently solve the inversion as a minimization problem.
Given the Sea Surface Height (SSH) field of an ocean system, jaxparrow estimates the velocity field that best satisfies the cyclogeostrophic balance.
A comprehensive documenation is available: https://jaxparrow.readthedocs.io/en/latest/!
Installation
jaxparrow is Pip-installable:
pip install jaxparrow
However, users with access to GPUs or TPUs should first install JAX separately in order to fully benefit from its high-performance computing capacities.
See JAX instructions.
By default, jaxparrow will install a CPU-only version of JAX if no other version is already present in the Python environment.
Usage
Estimating the cyclogeostrophic currents from a given Sea Surface Height field can be achieved using any of the following methods:
Taking as inputs:
- a SSH field (a
2d jax.Array), - the latitude and longitude grids at the T points (two
2d jax.Array).
They return a result objects holding the cyclogeostrophic velocity $u$ and $v$ components.
In a Python script estimating the cyclogeostrophic currents for a single timestamp would resort to:
from jaxparrow import minimization_based # or gradient_wind or fixed_point
mb_result = minimization_based(lat_t=lat_2d, lon_t=lon_2d, ssh_t=ssh_2d)
ucg_2d = mb_result.ucg # 2d jax.Array
vcg_2d = mb_result.vcg # 2d jax.Array
Note that it is also possible to directly pass as inputs the geostrophic velocity $u$ and $v$ components, rather than the SSH:
mb_result = minimization_based(lat_t=lat_2d, lon_t=lon_2d, ug_t=ug_2d, vg_t=vg_2d)
To vectorise the estimation of the cyclogeostrophy along a first time dimension, one aims to use jax.vmap.
import jax
vmap_cyclogeostrophy = jax.vmap(lambda _ssh_2d: cyclogeostrophy(lat_t=lat_2d, lon_t=lon_2d, ssh_t=_ssh_2d))
mb_result = vmap_cyclogeostrophy(ssh_3d)
ucg_3d = mb_result.ucg # 3d jax.Array
vcg_3d = mb_result.vcg # 3d jax.Array
jaxparrow also notably allows to:
- add arbitrary regularization term when employing the
minimization-basedmethod, see the regularization with SWOT data example notebook, - reconstruct geostrophic currents, see the
geostrophyfunction, - compute some classical kinematics, see the
kinematicsmodule, - perform standard operations on the grid, see the
operatorsmodule.
Explore jaxparrow documentation for more details, including the API description and step-by-step examples in the form of notebooks.
Contributing
Contributions are welcomed! See CONTRIBUTING.md and CONDUCT.md to get started.
How to cite
If you use this software, please cite it: CITATION.cff. Thank you!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jaxparrow-1.1.1.tar.gz.
File metadata
- Download URL: jaxparrow-1.1.1.tar.gz
- Upload date:
- Size: 30.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff884cf60b678a81e66dde0336ccb31cfbc3de915b4de4890cc644660a88ff43
|
|
| MD5 |
23eee6fd832569ac96dcab1371292d19
|
|
| BLAKE2b-256 |
a90f27a1d40c11836381815c3a9ab152c316d4e921841445fb38b80b49e80d38
|
File details
Details for the file jaxparrow-1.1.1-py3-none-any.whl.
File metadata
- Download URL: jaxparrow-1.1.1-py3-none-any.whl
- Upload date:
- Size: 39.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac16ea3124f9433aa55cc2b35ba4443ee04ee655bd2995f5e36e67f117c506f5
|
|
| MD5 |
f19b8059ae900dcb7ccb2fccf83928e6
|
|
| BLAKE2b-256 |
c85b4303bb78bd002b0998074be8324bed58870994c261d796ac6f746010d309
|