PINNICLE


NamePINNICLE JSON
Version 1.0.1 PyPI version JSON
download
home_pageNone
SummaryA Python library for solving ice sheet modeling problems using Physics Informed Neural Networks
upload_time2025-07-08 18:23:59
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords ice sheet modeling numerical method deep learning physics-informed neural networks
VCS
bugtrack_url
requirements deepxde mat73 matplotlib netCDF4 h5py numpy pandas scikit-learn scipy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PINNICLE: Physics-Informed Neural Networks for Ice and CLimatE

[![Python](https://img.shields.io/badge/python-3.9+-blue.svg)](https://pypi.org/project/PINNICLE/)
[![CI](https://github.com/ISSMteam/PINNICLE/actions/workflows/CI.yml/badge.svg)](https://github.com/ISSMteam/PINNICLE/actions/workflows/CI.yml)
[![codecov](https://codecov.io/gh/ISSMteam/PINNICLE/graph/badge.svg?token=S7REK0IKJH)](https://codecov.io/gh/ISSMteam/PINNICLE)
[![Documentation Status](https://readthedocs.org/projects/pinnicle/badge/?version=latest)](https://pinnicle.readthedocs.io/en/latest/?badge=latest)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15643042.svg)](https://doi.org/10.5281/zenodo.15643042)
[![License](https://img.shields.io/github/license/ISSMteam/PINNICLE)](https://pypi.org/project/PINNICLE/)
[![PyPI](https://img.shields.io/pypi/v/pinnicle)](https://pypi.org/project/PINNICLE/)

**PINNICLE** (Physics-Informed Neural Networks for Ice and CLimatE) is an open-source Python library for modeling ice sheets using physics-informed neural networks.
It is designed to integrate physical laws with observational data to solve both forward and inverse problems in glaciology.
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.

Developed at the Department of Earth Sciences, Dartmouth College, USA.

![](docs/images/pinn.png)

---

## ๐Ÿš€ Features

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


## ๐Ÿ“ฆ Installation

### Install from PyPI (recommended)

```bash
pip install pinnicle
```

### Install from source

```bash
git clone https://github.com/ISSMteam/PINNICLE.git
cd PINNICLE
pip install -e .
```
### Dependencies

PINNICLE requires:

* Python โ‰ฅ 3.9
* [DeepXDE](https://github.com/lululxvi/deepxde)
* NumPy, SciPy, pandas, matplotlib, scikit-learn
* mat73 (for MATLAB v7.3 files)

## โš™๏ธ Backend Selection

PINNICLE supports TensorFlow, PyTorch, and JAX backends via DeepXDE.

Choose your backend:

```bash
DDE_BACKEND=tensorflow python your_script.py
```

You can also export the backend globally (Linux/macOS):

```bash
export DDE_BACKEND=pytorch
```

Alternatively, edit `~/.deepxde/config.json`:

```json
{
  "backend": "tensorflow"
}
```

## ๐Ÿงช Examples

Example scripts and input files are located in the [`examples/`](https://github.com/ISSMteam/PINNICLE/tree/main/examples) directory.

* [**Example 1**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example1_helheim_ssa_inverse.py):
  Inverse problem on Helheim Glacier using SSA to infer basal friction

* [**Example 2**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example2_pig_ssa_rheology.py):
  Joint inversion of basal friction and ice rheology for Pine Island Glacier

* [**Example 3**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example3_helheim_forward_transient.py):
  Time-dependent forward modeling of Helheim Glacier (2008โ€“2009)

Each example includes a complete Python script and configuration dictionary.


## ๐Ÿ“– Documentation

Full documentation is available in the `docs/` folder or at:

๐Ÿ“˜ [pinnicle.readthedocs.io](https://pinnicle.readthedocs.io)


## ๐Ÿ“š Citation

If you use PINNICLE in your research, please cite:

> 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.

**BibTeX**:

```bibtex
@Article{egusphere-2025-1188,
   AUTHOR = {Cheng, G. and Krishna, M. and Morlighem, M.},
   TITLE = {A Python library for solving ice sheet modeling problems using Physics Informed Neural Networks, PINNICLE v1.0},
   JOURNAL = {EGUsphere},
   VOLUME = {2025},
   YEAR = {2025},
   PAGES = {1--26},
   URL = {https://egusphere.copernicus.org/preprints/2025/egusphere-2025-1188/},
   DOI = {10.5194/egusphere-2025-1188}
}
```

---

## ๐Ÿ“‚ License

This project is licensed under the [GNU Lesser General Public License v2.1](LICENSE).

---

## ๐Ÿค Acknowledgements

Supported by:

* National Science Foundation \[#2118285, #2147601]
* Novo Nordisk Foundation \[NNF23OC00807040]
* Heising-Simons Foundation \[2019-1161, 2021-3059]

---

## ๐Ÿ”— Links

* ๐Ÿ“ฆ PyPI: [pinnicle](https://pypi.org/project/pinnicle/)
* ๐Ÿ“– Documentation: [pinnicle.readthedocs.io](https://pinnicle.readthedocs.io)
* ๐Ÿ“„ Zenodo Archive: [doi.org/10.5281/zenodo.15643042](https://doi.org/10.5281/zenodo.15643042)


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "PINNICLE",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "Ice sheet modeling, Numerical method, Deep learning, Physics-informed neural networks",
    "author": null,
    "author_email": "Cheng Gong <gong.cheng@dartmouth.edu>, Mansa Krishna <mansa.krishna.gr@dartmouth.edu>, Mathieu Morlighem <Mathieu.Morlighem@dartmouth.edu>",
    "download_url": "https://files.pythonhosted.org/packages/af/e9/e019e5beea321ce0d2fee7dd9c1a69342afc1b37a0aaff89bffdb77b098a/pinnicle-1.0.1.tar.gz",
    "platform": null,
    "description": "# PINNICLE: Physics-Informed Neural Networks for Ice and CLimatE\n\n[![Python](https://img.shields.io/badge/python-3.9+-blue.svg)](https://pypi.org/project/PINNICLE/)\n[![CI](https://github.com/ISSMteam/PINNICLE/actions/workflows/CI.yml/badge.svg)](https://github.com/ISSMteam/PINNICLE/actions/workflows/CI.yml)\n[![codecov](https://codecov.io/gh/ISSMteam/PINNICLE/graph/badge.svg?token=S7REK0IKJH)](https://codecov.io/gh/ISSMteam/PINNICLE)\n[![Documentation Status](https://readthedocs.org/projects/pinnicle/badge/?version=latest)](https://pinnicle.readthedocs.io/en/latest/?badge=latest)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.15643042.svg)](https://doi.org/10.5281/zenodo.15643042)\n[![License](https://img.shields.io/github/license/ISSMteam/PINNICLE)](https://pypi.org/project/PINNICLE/)\n[![PyPI](https://img.shields.io/pypi/v/pinnicle)](https://pypi.org/project/PINNICLE/)\n\n**PINNICLE** (Physics-Informed Neural Networks for Ice and CLimatE) is an open-source Python library for modeling ice sheets using physics-informed neural networks.\nIt is designed to integrate physical laws with observational data to solve both forward and inverse problems in glaciology.\nThe 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.\n\nDeveloped at the Department of Earth Sciences, Dartmouth College, USA.\n\n![](docs/images/pinn.png)\n\n---\n\n## \ud83d\ude80 Features\n\n- Solve forward and inverse glaciological problems\n- Built-in support for:\n  - Shelfy-Stream Approximation (SSA)\n  - Mono-Layer Higher-Order (MOLHO) stress balance\n  - Time-dependent mass conservation\n- Support for multiple backends: TensorFlow, PyTorch, JAX\n- Integration with observational data: [ISSM](https://issm.jpl.nasa.gov) data format, MATLAB general `.mat`, HDF5, NetCDF.\n- Fourier Feature Transform for input and output\n- Fully modular and customizable architecture\n\n\n## \ud83d\udce6 Installation\n\n### Install from PyPI (recommended)\n\n```bash\npip install pinnicle\n```\n\n### Install from source\n\n```bash\ngit clone https://github.com/ISSMteam/PINNICLE.git\ncd PINNICLE\npip install -e .\n```\n### Dependencies\n\nPINNICLE requires:\n\n* Python \u2265 3.9\n* [DeepXDE](https://github.com/lululxvi/deepxde)\n* NumPy, SciPy, pandas, matplotlib, scikit-learn\n* mat73 (for MATLAB v7.3 files)\n\n## \u2699\ufe0f Backend Selection\n\nPINNICLE supports TensorFlow, PyTorch, and JAX backends via DeepXDE.\n\nChoose your backend:\n\n```bash\nDDE_BACKEND=tensorflow python your_script.py\n```\n\nYou can also export the backend globally (Linux/macOS):\n\n```bash\nexport DDE_BACKEND=pytorch\n```\n\nAlternatively, edit `~/.deepxde/config.json`:\n\n```json\n{\n  \"backend\": \"tensorflow\"\n}\n```\n\n## \ud83e\uddea Examples\n\nExample scripts and input files are located in the [`examples/`](https://github.com/ISSMteam/PINNICLE/tree/main/examples) directory.\n\n* [**Example 1**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example1_helheim_ssa_inverse.py):\n  Inverse problem on Helheim Glacier using SSA to infer basal friction\n\n* [**Example 2**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example2_pig_ssa_rheology.py):\n  Joint inversion of basal friction and ice rheology for Pine Island Glacier\n\n* [**Example 3**](https://github.com/ISSMteam/PINNICLE/blob/main/examples/example3_helheim_forward_transient.py):\n  Time-dependent forward modeling of Helheim Glacier (2008\u20132009)\n\nEach example includes a complete Python script and configuration dictionary.\n\n\n## \ud83d\udcd6 Documentation\n\nFull documentation is available in the `docs/` folder or at:\n\n\ud83d\udcd8 [pinnicle.readthedocs.io](https://pinnicle.readthedocs.io)\n\n\n## \ud83d\udcda Citation\n\nIf you use PINNICLE in your research, please cite:\n\n> 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.\n\n**BibTeX**:\n\n```bibtex\n@Article{egusphere-2025-1188,\n   AUTHOR = {Cheng, G. and Krishna, M. and Morlighem, M.},\n   TITLE = {A Python library for solving ice sheet modeling problems using Physics Informed Neural Networks, PINNICLE v1.0},\n   JOURNAL = {EGUsphere},\n   VOLUME = {2025},\n   YEAR = {2025},\n   PAGES = {1--26},\n   URL = {https://egusphere.copernicus.org/preprints/2025/egusphere-2025-1188/},\n   DOI = {10.5194/egusphere-2025-1188}\n}\n```\n\n---\n\n## \ud83d\udcc2 License\n\nThis project is licensed under the [GNU Lesser General Public License v2.1](LICENSE).\n\n---\n\n## \ud83e\udd1d Acknowledgements\n\nSupported by:\n\n* National Science Foundation \\[#2118285, #2147601]\n* Novo Nordisk Foundation \\[NNF23OC00807040]\n* Heising-Simons Foundation \\[2019-1161, 2021-3059]\n\n---\n\n## \ud83d\udd17 Links\n\n* \ud83d\udce6 PyPI: [pinnicle](https://pypi.org/project/pinnicle/)\n* \ud83d\udcd6 Documentation: [pinnicle.readthedocs.io](https://pinnicle.readthedocs.io)\n* \ud83d\udcc4 Zenodo Archive: [doi.org/10.5281/zenodo.15643042](https://doi.org/10.5281/zenodo.15643042)\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Python library for solving ice sheet modeling problems using Physics Informed Neural Networks",
    "version": "1.0.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/ISSMteam/PINNICLE/issues",
        "Documentation": "https://pinnicle.readthedocs.io",
        "Homepage": "https://github.com/ISSMteam/PINNICLE"
    },
    "split_keywords": [
        "ice sheet modeling",
        " numerical method",
        " deep learning",
        " physics-informed neural networks"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "269224fd3dfe6cb7e5694fa6fbf1cc1b979b414848d678a0e9201858c1c6399b",
                "md5": "3b071aaa514c4565cf4a307c8552ce12",
                "sha256": "e6ca0139fc57596c163da5081eb5ffe3301690d423c4576d24c2d2971be14fcd"
            },
            "downloads": -1,
            "filename": "pinnicle-1.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3b071aaa514c4565cf4a307c8552ce12",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 73598,
            "upload_time": "2025-07-08T18:23:57",
            "upload_time_iso_8601": "2025-07-08T18:23:57.867869Z",
            "url": "https://files.pythonhosted.org/packages/26/92/24fd3dfe6cb7e5694fa6fbf1cc1b979b414848d678a0e9201858c1c6399b/pinnicle-1.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "afe9e019e5beea321ce0d2fee7dd9c1a69342afc1b37a0aaff89bffdb77b098a",
                "md5": "93c69bbfc66d4fd4a89a2bbb3124b2fa",
                "sha256": "95bf4900178430b9921ec3aa51b62d5d037eeeef9efd7b2d5d907f72737ca289"
            },
            "downloads": -1,
            "filename": "pinnicle-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "93c69bbfc66d4fd4a89a2bbb3124b2fa",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 74294668,
            "upload_time": "2025-07-08T18:23:59",
            "upload_time_iso_8601": "2025-07-08T18:23:59.959393Z",
            "url": "https://files.pythonhosted.org/packages/af/e9/e019e5beea321ce0d2fee7dd9c1a69342afc1b37a0aaff89bffdb77b098a/pinnicle-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-08 18:23:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ISSMteam",
    "github_project": "PINNICLE",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "deepxde",
            "specs": []
        },
        {
            "name": "mat73",
            "specs": []
        },
        {
            "name": "matplotlib",
            "specs": []
        },
        {
            "name": "netCDF4",
            "specs": []
        },
        {
            "name": "h5py",
            "specs": []
        },
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "pandas",
            "specs": []
        },
        {
            "name": "scikit-learn",
            "specs": [
                [
                    "==",
                    "1.4.2"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": []
        }
    ],
    "lcname": "pinnicle"
}
        
Elapsed time: 1.14532s