DIFFICE-jax

DIFFICE-jax: Differentiable neural-network solver for data assimilation of ice shelves in JAX - Published in JOSS (2025)

https://github.com/yaogroup/diffice_jax

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
    Links to: sciencedirect.com
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Earth and Environmental Sciences Physical Sciences - 40% confidence
Artificial Intelligence and Machine Learning Computer Science - 40% confidence
Last synced: 4 months ago · JSON representation

Repository

Differentiable neural-network solver for data assimilation of ice shelves written in JAX

Basic Info
  • Host: GitHub
  • Owner: YaoGroup
  • License: mit
  • Language: Jupyter Notebook
  • Default Branch: main
  • Homepage:
  • Size: 197 MB
Statistics
  • Stars: 33
  • Watchers: 3
  • Forks: 4
  • Open Issues: 0
  • Releases: 19
Created over 1 year ago · Last pushed 8 months ago
Metadata Files
Readme License

README.md

DIFFICE_jax

A DIFFerentiable neural-network solver for data assimilation of ICE shelves written in JAX.

Introduction

DIFFICE_jax is a Python package that solves the depth-integrated Stokes equation for ice shelves, and can be adopted for ice sheets by modifying the partial differential equations (PDE) in the neural network loss function. It uses PDEs to interpolate descretized remote-sensing data into meshless and differentible functions, and infer ice shelves' viscosity structure via back-propagation and automatic differentiation (AD). The algorithm is based on physics-informed neural networks (PINNs) and implemented in JAX. The DIFFICE_jax package involves several advanced features in addition to vanilla PINNs algorithms, including collocation points resampling, non-dimensionalization of the data adnd equations, extended-PINNs (XPINNs) (see figure below), viscosity exponential scaling function, which are essential for accurate inversion. The package is designed to be user-friendly and accessible for beginners. The Github respository also provides Colab Notebooks for both the synthetic and real ice-shelf examples in the tutorial and examples folders, respectively.


xpinns.


Statement of Needs

This package provides a neural network-based approach for solving inverse problems in glaciology, specifically for estimating effective ice viscosity from high-resolution remote sensing data. Ice viscosity is a key parameter for predicting ice-shelf dynamics, but direct in-situ measurements of viscosity across Antarctica are impractical. Traditional adjoint methods require deriving additional equations and applying regularization techniques to handle noisy data. In contrast, neural networks can inherently de-noise while solving the inverse problem without explicit regularization. Finally, this solver is fully differentiable using automatic differentiation (AD), eliminating the need for manual adjoint derivations and enabling efficient exploration of complex PDEs, including anisotropic ice flow models. This neural network-based method offers a flexible framework for solving inverse problems in glaciology.

Installation

The build of the code is tesed on Python version (3.9, 3.10 and 3.11) and JAX version (0.4.20, 0.4.23, 0.4.26)

You can install the package using pip as follows: python python -m pip install DIFFICE_jax

Documentation

Find the full documentation here. We provided the documentation for both the algorithms (e.g., cost functions) and the mathematical formulation (e.g., PDEs and boundary conditions) for the data assimilation of ice shelves.

Getting Started with a Tutorial using Synthetic Data Open In Colab

We highly recommend new users to get familar with the software by reading the document and playing with the synthetic example prepared in the tutorial folder. The synthetic example allow users to generate the synthetic data of velocity and thickness of an ice-shelf flow in an idealized rectangular domain with a prescribed viscosity profile. Users can use the Colab Notebook to infer the viscosity from the synthetic velocity and thickness, and compare with the given synthetic viscosity to validate the PINN result.

Real-data Examples

The inversion codes with the real velocity and thickness data for four different ice shelves surrounding the Antarctica are provided in the examples folders. For each example code, the corresponding implemented features and the ice-shelf dataset it can analyze are listed in the table below. The original source and the required format for the datasets are described here. In the paper, we summarized six algorithm features of the DIFFICE_jax package, (1)-(6), beyond the vanilla PINNs code.

| Example codes | Algorithm feature # | Ice shelf | | ------------- | ------------- | ------------- | | trainpinnsiso | (1), (2), (3), (4) | Amery, Larsen C, synthetic | | trainpinnsaniso | (1), (2), (3), (4), (6) | Amery, Larsen C| | trainxpinnsiso | (1), (2), (3), (4), (5) | Ross, Ronne-Filchner| | trainxpinnsaniso | (1), (2), (3), (4), (5), (6) | Ross, Ronne-Filchner|


Google Colab

Apart from the Python scripts to run locally, we also provide Colab Notebooks for both the synthetic and real ice-shelf examples, provided in the tutorial and examples folders, respectively.


Diagram of Algorithm and Results.

setups

Contributors

This package is written by Yongji Wang and maintained by Yongji Wang (yongjiw@stanford.edu) and Ching-Yao Lai (cyaolai@stanford.edu). If you have questions about this code and documentation, or are interested in contributing the development of the DIFFICE_jax package, please see the contributing guidelines for information on submitting issues and pull requests.

License

DIFFICE_jax is an open-source software. All code within the project is licensed under the MIT License. For more details, please refer to the LICENSE file.

Citation

Wang, Y. and Lai, C.Y., 2025. DIFFICE-jax: Differentiable neural-network solver for data assimilation of ice shelves in JAX. Journal of Open Source Software, 10(109), p.7254. @article{wang2025diffice, title={DIFFICE-jax: Differentiable neural-network solver for data assimilation of ice shelves in JAX}, author={Wang, Yongji and Lai, Ching-Yao}, journal={Journal of Open Source Software}, volume={10}, number={109}, pages={7254}, year={2025} }

Wang, Y., Lai, C.Y., Prior, D.J. and Cowen-Breen, C., 2025. Deep learning the flow law of Antarctic ice shelves. Science, 387(6739), pp.1219-1224. @article{wang2025deep, title={Deep learning the flow law of Antarctic ice shelves}, author={Wang, Yongji and Lai, Ching-Yao and Prior, David J and Cowen-Breen, Charlie}, journal={Science}, volume={387}, number={6739}, pages={1219--1224}, year={2025}, publisher={American Association for the Advancement of Science} }

Owner

  • Name: Lai Research Group
  • Login: YaoGroup
  • Kind: organization

A guide of our computing infrastructure is available via the link below

JOSS Publication

DIFFICE-jax: Differentiable neural-network solver for data assimilation of ice shelves in JAX
Published
May 01, 2025
Volume 10, Issue 109, Page 7254
Authors
Yongji Wang ORCID
Department of Geophysics, Stanford University, USA, Department of Mathematics, New York University, USA
Ching-Yao Lai ORCID
Department of Geophysics, Stanford University, USA
Editor
Anjali Sandip ORCID
Tags
physics-informed deep learning differentiable solver JAX geophysics data assimilation ice-shelf dynamics

GitHub Events

Total
  • Release event: 5
  • Watch event: 26
  • Push event: 159
  • Fork event: 3
  • Create event: 4
Last Year
  • Release event: 5
  • Watch event: 26
  • Push event: 159
  • Fork event: 3
  • Create event: 4

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 22 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 13
  • Total maintainers: 1
pypi.org: diffice-jax

A differentiable neural-network solver for data assimilation of ice shelves written in JAX

  • Versions: 13
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 22 Last month
Rankings
Dependent packages count: 10.6%
Average: 35.1%
Dependent repos count: 59.6%
Maintainers (1)
Last synced: 4 months ago