Skip to content

Commit eaed84d

Browse files
committed
update README
1 parent 5555d3e commit eaed84d

File tree

2 files changed

+130
-25
lines changed

2 files changed

+130
-25
lines changed

.github/workflows/CI.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,12 @@ jobs:
5656
DDE_BACKEND: ${{matrix.backend}}
5757
run: |
5858
pytest --cov --junitxml=junit.xml -o junit_family=legacy
59-
- name: Upload coverage reports to Codecov
59+
- name: Upload coverage test results to Codecov
6060
if: ${{ !cancelled() }}
6161
uses: codecov/test-results-action@v1
6262
with:
6363
token: ${{ secrets.CODECOV_TOKEN }}
64+
- name: Upload coverage reports to Codecov
65+
uses: codecov/codecov-action@v3
66+
env:
67+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

README.md

Lines changed: 125 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,149 @@
1+
# PINNICLE: Physics-Informed Neural Networks for Ice and CLimatE
12

2-
# PINNICLE
3-
Physics Informed Neural Networks for Ice and CLimatE
4-
3+
![Python](https://img.shields.io/badge/python-3.9+-blue.svg)
54
[![CI](https://github.com/ISSMteam/PINNICLE/actions/workflows/CI.yml/badge.svg)](https://github.com/ISSMteam/PINNICLE/actions/workflows/CI.yml)
65
[![codecov](https://codecov.io/gh/ISSMteam/PINNICLE/graph/badge.svg?token=S7REK0IKJH)](https://codecov.io/gh/ISSMteam/PINNICLE)
76
[![Documentation Status](https://readthedocs.org/projects/pinnicle/badge/?version=latest)](https://pinnicle.readthedocs.io/en/latest/?badge=latest)
87
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15178900.svg)](https://doi.org/10.5281/zenodo.15178900)
8+
![License](https://img.shields.io/github/license/ISSMteam/PINNICLE)
9+
![PyPI](https://img.shields.io/pypi/v/pinnicle)
10+
11+
**PINNICLE** (Physics-Informed Neural Networks for Ice and CLimatE) is an open-source Python library for modeling ice sheets using physics-informed neural networks.
12+
It is designed to integrate physical laws with observational data to solve both forward and inverse problems in glaciology.
13+
The library currently supports stress balance approximations, mass conservation, and time-dependent simulations, etc. Built on top of [DeepXDE](https://github.com/lululxvi/deepxde), it supports TensorFlow, PyTorch, and JAX backends.
914

10-
A Python library for solving ice sheet modeling problems using a unified framework with Physics Informed Neural Networks
15+
Developed at the Department of Earth Sciences, Dartmouth College, USA.
1116

17+
![](docs/images/pinn.png)
1218

1319
---
14-
**NOTE**
1520

16-
This project is under active development.
21+
## 🚀 Features
1722

18-
---
23+
- Solve forward and inverse glaciological problems
24+
- Built-in support for:
25+
- Shelfy-Stream Approximation (SSA)
26+
- Mono-Layer Higher-Order (MOLHO) stress balance
27+
- Time-dependent mass conservation
28+
- Support for multiple backends: TensorFlow, PyTorch, JAX
29+
- Integration with observational data: [ISSM](https://issm.jpl.nasa.gov) data format, MATLAB general `.mat`, HDF5, NetCDF.
30+
- Fourier Feature Transform for input and output
31+
- Fully modular and customizable architecture
1932

20-
**Documentation**: [pinnicle.readthedocs.io](https://pinnicle.readthedocs.io)
2133

22-
![](docs/images/pinn.png)
34+
## 📦 Installation
35+
36+
### Install from PyPI (recommended)
37+
38+
```bash
39+
pip install pinnicle
40+
```
41+
42+
### Install from source
43+
44+
```bash
45+
git clone https://github.com/ISSMteam/PINNICLE.git
46+
cd PINNICLE
47+
pip install -e .
48+
```
49+
### Dependencies
50+
51+
PINNICLE requires:
52+
53+
* Python ≥ 3.9
54+
* [DeepXDE](https://github.com/lululxvi/deepxde)
55+
* NumPy, SciPy, pandas, matplotlib, scikit-learn
56+
* mat73 (for MATLAB v7.3 files)
57+
58+
## ⚙️ Backend Selection
59+
60+
PINNICLE supports TensorFlow, PyTorch, and JAX backends via DeepXDE.
61+
62+
Choose your backend:
63+
64+
```bash
65+
DDE_BACKEND=tensorflow python your_script.py
66+
```
67+
68+
You can also export the backend globally (Linux/macOS):
69+
70+
```bash
71+
export DDE_BACKEND=pytorch
72+
```
73+
74+
Alternatively, edit `~/.deepxde/config.json`:
75+
76+
```json
77+
{
78+
"backend": "tensorflow"
79+
}
80+
```
2381

24-
## Physics
82+
## 🧪 Examples
2583

26-
- Momentum Conservation (stress balance):
27-
- Shelfy Stream Approximation (SSA)
28-
- MOno-Layer Higher-Order (MOLHO) ice flow model
84+
Example scripts and input files are located in the [`examples/`](https://github.com/ISSMteam/PINNICLE/tree/main/examples) directory.
2985

30-
- Mass Conservation (mass balance):
31-
- Thickness evolution
86+
* [**Example 1**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example1_helheim_ssa_inverse.py):
87+
Inverse problem on Helheim Glacier using SSA to infer basal friction
3288

33-
- Coupuling:
34-
- stress balance + mass balance
89+
* [**Example 2**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example2_pig_ssa_rheology.py):
90+
Joint inversion of basal friction and ice rheology for Pine Island Glacier
3591

36-
- Time dependent problems
92+
* [**Example 3**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example3_helheim_forward_transient.py):
93+
Time-dependent forward modeling of Helheim Glacier (2008–2009)
3794

38-
## Data format
95+
Each example includes a complete Python script and configuration dictionary.
3996

40-
- [ISSM](https://issm.jpl.nasa.gov) `model()` type, directly saved from ISSM by `saveasstruct(md, filename)`
41-
- Scattered data
4297

98+
## 📖 Documentation
99+
100+
Full documentation is available in the `docs/` folder or at:
101+
102+
📘 [pinnicle.readthedocs.io](https://pinnicle.readthedocs.io)
103+
104+
105+
## 📚 Citation
106+
107+
If you use PINNICLE in your research, please cite:
108+
109+
> Cheng, G., Krishna, M., and Morlighem, M.: A Python library for solving ice sheet modeling problems using Physics Informed Neural Networks, PINNICLE v1.0, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2025-1188, 2025.
110+
111+
**BibTeX**:
112+
113+
```bibtex
114+
@Article{egusphere-2025-1188,
115+
AUTHOR = {Cheng, G. and Krishna, M. and Morlighem, M.},
116+
TITLE = {A Python library for solving ice sheet modeling problems using Physics Informed Neural Networks, PINNICLE v1.0},
117+
JOURNAL = {EGUsphere},
118+
VOLUME = {2025},
119+
YEAR = {2025},
120+
PAGES = {1--26},
121+
URL = {https://egusphere.copernicus.org/preprints/2025/egusphere-2025-1188/},
122+
DOI = {10.5194/egusphere-2025-1188}
123+
}
124+
```
125+
126+
---
127+
128+
## 📂 License
129+
130+
This project is licensed under the [GNU Lesser General Public License v2.1](LICENSE).
131+
132+
---
133+
134+
## 🤝 Acknowledgements
135+
136+
Supported by:
137+
138+
* National Science Foundation \[#2118285, #2147601]
139+
* Novo Nordisk Foundation \[NNF23OC00807040]
140+
* Heising-Simons Foundation \[2019-1161, 2021-3059]
141+
142+
---
43143

44-
## More
144+
## 🔗 Links
45145

46-
- [Install and Setup](https://pinnicle.readthedocs.io/en/latest/installation.html#installation)
47-
- [An example of stress balance](https://pinnicle.readthedocs.io/en/latest/examples/ssa.html)
146+
* 📦 PyPI: [pinnicle](https://pypi.org/project/pinnicle/)
147+
* 📖 Documentation: [pinnicle.readthedocs.io](https://pinnicle.readthedocs.io)
148+
* 📄 Zenodo Archive: [doi.org/10.5281/zenodo.15178900](https://doi.org/10.5281/zenodo.15178900)
48149

0 commit comments

Comments
 (0)