ISE Documentation
ISE (Ice Sheet Emulator) is a Python package for training and analyzing ice sheet emulators, including ISEFlow, a flow-based neural network emulator designed for improved sea level projections and uncertainty quantification.
This repository supports emulation for both the Antarctic and Greenland ice sheets, enabling efficient predictions of ice volume above flotation (IVAF) changes using machine learning models.
About
ISEFlow and other emulators in this package process climate forcings and IVAF projections from the ISMIP6 simulations.
This codebase has been used in peer-reviewed research, including:
“A Variational LSTM Emulator of Sea Level Contribution From the Antarctic Ice Sheet”
“ISEFlow: A Flow-Based Neural Network Emulator for Improved Sea Level Projections and Uncertainty Quantification”
🔎 For details on replication, refer to the Releases section.
📚 Documentation: ISE ReadTheDocs
Quickstart
To get started, you must first have access to the Globus Archive containing the ISMIP6 climate forcings and ISMIP6 model outputs. For information on gaining access to these datasets, see the ISMIP wiki page.
Installation
ISE uses uv for dependency management. To set up the environment:
uv venv
uv pip install -r requirements.txt
or using pip directly:
pip install -r requirements.txt
To install in editable mode (for development):
pip install -e .
Cloning the Repository
To use it as a package, clone the repository by running:
git clone https://github.com/Brown-SciML/ise.git
Then navigate to the cloned directory:
cd ise
Usage
Loading a Pretrained ISEFlow-AIS Model
from ise.models.ISEFlow import ISEFlow_AIS
# Load v1.0.0 of ISEFlow-AIS
iseflowais = ISEFlow_AIS.load(version="v1.0.0")
Running Predictions
import numpy as np
# Define Climate Forcings
year = np.arange(2015, 2101)
pr_anomaly = np.array([...])
evspsbl_anomaly = np.array([...])
smb_anomaly = np.array([...])
ts_anomaly = np.array([...])
ocean_thermal_forcing = np.array([...])
ocean_salinity = np.array([...])
ocean_temp = np.array([...])
# Ice Sheet Model Characteristics
initial_year = 1980
numerics = 'fd'
stress_balance = 'ho'
resolution = 16
init_method = "da"
prediction, uq = iseflowais.predict(
year, pr_anomaly, evspsbl_anomaly, smb_anomaly, ts_anomaly, ocean_thermal_forcing, ocean_salinity, ocean_temp,
initial_year, numerics, stress_balance, resolution, init_method
)
print(prediction)
print(uq['aleatoric'])
print(uq['epistemic'])
Contributing
We welcome contributions! To get started:
Fork the repository on GitHub.
Create a new branch for your feature or bugfix.
Submit a pull request (PR) for review.
Run tests before submitting:
pytest tests/
Known Issues & Future Work
Creating more unit tests. I know, maybe one day I’ll get around it.
Expanding support for additional climate scenarios and additional ISM runs (ISMIP7).
Better documentation and improvements to the readthedocs page.
Contact & Support
This repository is actively maintained by Peter Van Katwyk, Ph.D. student at Brown University.
📩 Email: peter_van_katwyk@brown.edu 🐙 GitHub Issues: Report a bug
🚀 ISE is a work in progress! If you use this in research, please consider citing our work. See CITATION.md for details.
Contents: