Skip to main content

Computes the inversion of the cyclogeostrophic balance based on a variational formulation approach, using JAX

Project description

jaxparrow

Python PyPi Tests codecov Docs DOI

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:

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jaxparrow-1.1.1.tar.gz (30.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jaxparrow-1.1.1-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

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

Hashes for jaxparrow-1.1.1.tar.gz
Algorithm Hash digest
SHA256 ff884cf60b678a81e66dde0336ccb31cfbc3de915b4de4890cc644660a88ff43
MD5 23eee6fd832569ac96dcab1371292d19
BLAKE2b-256 a90f27a1d40c11836381815c3a9ab152c316d4e921841445fb38b80b49e80d38

See more details on using hashes here.

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

Hashes for jaxparrow-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ac16ea3124f9433aa55cc2b35ba4443ee04ee655bd2995f5e36e67f117c506f5
MD5 f19b8059ae900dcb7ccb2fccf83928e6
BLAKE2b-256 c85b4303bb78bd002b0998074be8324bed58870994c261d796ac6f746010d309

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page