NSIDC-Data-Tutorials
Tutorials and code resources provided by the NASA National Snow and Ice Data Center Distributed Active Archive Center.
https://github.com/nsidc/NSIDC-Data-Tutorials
Category: Sustainable Development
Sub Category: Education
Keywords from Contributors
access climate-data cloud-computing cmr nasa-api open-science openscience pangeo icesat-2 cryosphere
Last synced: about 4 hours ago
JSON representation
Repository metadata
Jupyter notebook-based tutorials to learn how to access and work with select NSIDC DAAC data.
- Host: GitHub
- URL: https://github.com/nsidc/NSIDC-Data-Tutorials
- Owner: nsidc
- License: mit
- Created: 2019-12-16T18:44:21.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2025-12-17T20:18:14.000Z (9 days ago)
- Last Synced: 2025-12-21T07:53:14.869Z (5 days ago)
- Language: Jupyter Notebook
- Homepage:
- Size: 51.5 MB
- Stars: 97
- Watchers: 7
- Forks: 43
- Open Issues: 23
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
README.md
NSIDC-Data-Tutorials
Summary
This combined repository includes tutorials and code resources provided by the NASA National Snow and Ice Data Center Distributed Active Archive Center (NSIDC DAAC). Most were developed to support a workshop or other live event. In some cases the content represents a snapshot in time, and might not demonstrate current best practice. Some tutorials present data access patterns for retired on premises archives that will no longer work now that data have migrated to the NASA Earthdata Cloud environment. We've posted warnings in those cases. Up to date information on data access patterns can be found in the NSIDC Data Cookbook.
These tutorials are provided as Python-based Jupyter notebooks that provide guidance on working with various data products, including how to access, subset, transform, and visualize data. Each tutorial can be accessed by navigating to the /notebooks folder of this repository. Please see the README files associated with each individual tutorial folder for more information on each tutorial and their learning objectives. Please note that all branches outside of Main should be considered in development and are not supported.
Tutorials
ICESat-2_Cloud_Access Notebooks
These notebooks demonstrate how to search and access ICESat-2 from the NASA Earthdata Cloud:
Accessing and working with ICESat-2 Data in the Cloud
Originally presented to the UWG (User Working Group) in May 2022, this tutorial demonstrates how to search for ICESat-2 data hosted in the Earthdata Cloud and how to directly access it from an Amazon Web Services (AWS) Elastic Compute Cloud (EC2) instance using the earthaccess package.
Plotting ICESat-2 and CryoSat-2 Freeboards
Originally presented at the Cryo2Ice Symposium in September 2024, this notebook demonstrates plotting ICESat-2 and CryoSat-2 data in the same map from within an AWS ec2 instance. ICESat-2 data are accessed via "direct S3 access" using earthaccess. CryoSat-2 data are downloaded to our cloud instance from their ftp storage lcoation and accessed locally.
Processing Large-scale Time Series of ICESat-2 Sea Ice Height in the Cloud
This notebook utilizes several libraries to performantly search, access, read, and grid ATL10 data over the Ross Sea, Antarctica including earthaccess, h5coro, and geopandas. The notebook provides further guidance on how to scale this analysis to the entire continent, running the same workflow from a script that can be run from your laptop using Coiled.
MEaSUREs
Download, crop, resample, and plot multiple GeoTIFFs
This tutorial guides you through programmatically accessing and downloading GeoTIFF files from the NSIDC DAAC to your local computer. We then crop and resample one GeoTIFF based on the extent and pixel size of another GeoTIFF, then plot one on top of the other.
We will use two data sets from the NASA MEaSUREs (Making Earth System data records for Use in Research Environments) program as an example:
- MEaSUREs Greenland Ice Mapping Project (GrIMP) Digital Elevation Model from GeoEye and WorldView Imagery, Version 2 (NSIDC-0715)
- MEaSUREs Greenland Ice Velocity: Selected Glacier Site Velocity Maps from InSAR, Version 4 (NSIDC-0481)
SnowEx_ASO_MODIS_Snow
Snow Depth and Snow Cover Data Exploration
Originally demonstrated through the NASA Earthdata Webinar "Let It Snow! Accessing and Analyzing Snow Data at the NSIDC DAAC" on May 6, 2020, this tutorial provides guidance on how to discover, access, and couple snow data across varying geospatial scales from NASA's SnowEx, Airborne Snow Observatory, and Moderate Resolution Imaging Spectroradiometer (MODIS) missions. The tutorial highlights the ability to search and access data by a defined region, and combine and compare snow data across different data formats and scales using a Python-based Jupyter Notebook. These notebooks have been updated to access data in the NASA Earthdata Cloud environment.
ICESat-2_MODIS_Arctic_Sea_Ice
Getting the most out of NSIDC DAAC data: Discovering, Accessing, and Harmonizing Arctic Remote Sensing Data
Warning: This notebook has not been updated to access data from NASA Earthdata Cloud. Originally presented during the 2019 AGU Fall Meeting, this tutorial demonstrates the NSIDC DAAC's data discovery, access, and subsetting services, along with basic open source resources used to harmonize and analyze data across multiple products. The tutorial is provided as a series of Python-based Jupyter Notebooks, focusing on sea ice height and ice surface temperature data from NASA’s ICESat-2 and MODIS missions, respectively, to characterize Arctic sea ice.
SMAP
Accessing, reading, and plotting SMAP data
This tutorial is based on the notebooks originally provided to NSIDC by Adam Purdy. Updates were made by Jennifer Roebuck and Andy Barrett of NSIDC to include the latest version of SMAP data and use earthaccess for authentication, searching for and downloading the data. These notebooks also demonstrate reading and plotting SMAP data, and contain useful supporting information.
icesat-2_webinar_demo
Working with ICESat-2 Sea Ice Products using earthaccess and xarray.DataTree
Originally presented during the August 2025 NASA Earthdata Webinar Laser Altimetry Applications for a Changing World: Working with ICESat-2 Sea Ice Data, this tutorial demonstrates accessing, reading and plotting ICESat-2 Sea Ice data (ATL07) using earthaccess and xarray.DataTree.
ITS_LIVE
Global land ice velocities.
The Inter-mission Time Series of Land Ice Velocity and Elevation (ITS_LIVE) project facilitates ice sheet, ice shelf and glacier research by providing a globally comprehensive and temporally dense multi-sensor record of land ice velocity and elevation with low latency. Scene-pair velocities were generated from satellite optical and radar imagery.
The notebooks on this project demonstrate how to search and access ITS_LIVE velocity pairs and provide a simple example on how to build a data cube.
IceFlow
[!WARNING]
The IceFlow tutorials have been removed. The Jupyter notebooks and associated
code have been moved to a standalone
iceflow Python library. See the iceflow
documentation for the latest
information on how to access and work with airborne altimetry and related data
sets from NASA’s
IceBridge mission,
and satellite altimetry data from
ICESat/GLAS and
ICESat-2.
Usage with Binder
The Binder button above allows you to explore and run the notebook in a shared cloud computing environment without the need to install dependencies on your local machine. Note that this option will not directly download data to your computer; instead the data will be downloaded to the cloud environment.
Usage with Docker
On Mac OSX or Linux
-
Install Docker. Use the left-hand navigation to select the appropriate install depending on operating system.
-
Download the NSIDC-Data-Tutorials repository from Github.
-
Unzip the file, and open a terminal window in the
NSIDC-Data-Tutorialsfolder's location. -
From the terminal window, launch the docker container using the following command, replacing [path/notebook_folder] with your path and notebook folder name:
docker run --name tutorials -p 8888:8888 -v [path/notebook_folder]:/home/jovyan/work nsidc/tutorials
Example:
docker run --name tutorials -p 8888:8888 -v /Users/name/Desktop/NSIDC-Data-Tutorials:/home/jovyan/work nsidc/tutorials
Or, with docker-compose:
docker-compose up
If you want to mount a directory with write permissions, you need to grant the container the same permissions as the one on the directory to be mounted and tell it that has "root" access (within the container). This is important if you want to persist your work or download data to a local directory and not just the docker container. Run the example command below for this option:
docker run --name tutorials -e NB_UID=$(id -u) --user root -p 8888:8888 -v /Users/name/Desktop/NSIDC-Data-Tutorials:/home/jovyan/work nsidc/tutorials
The initialization will take some time and will require 2.6 GB of space. Once the startup is complete you will see a line of output similar to this:
To access the notebook, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
Or copy and paste one of these URLs:
http://4dc97ddd7a0d:8888/?token=f002a50e25b6f623aa775312737ba8a23ffccfd4458faa6f
or http://127.0.0.1:8888/?token=f002a50e25b6f623aa775312737ba8a23ffccfd4458faa6f
If you started your container with the -d/--detach option, check docker logs tutorials for this output.
-
Open up a web browser and copy one of the URLs as instructed above.
-
You will be brought to a Jupyter Notebook interface running through the Docker container. The left side of the interface displays your local directory structure. Navigate to the
workfolder of theNSIDC-Data-Tutorialsrepository folder. You can now interact with the notebooks to explore and access data.
On Windows
-
Install Docker.
-
Download the NSIDC-Data-Tutorials repository from Github.
-
Unzip the file, and open a terminal window (use Command Prompt or PowerShell, not PowerShell ISE) in the
NSIDC-Data-Tutorialsfolder's location. -
From the terminal window, launch the docker container using the following command, replacing [path\notebook_folder] with your path and notebook folder name:
docker run --name tutorials -p 8888:8888 -v [path\notebook_folder]:/home/jovyan/work nsidc/tutorials
Example:
docker run --name tutorials -p 8888:8888 -v C:\notebook_folder:/home/jovyan/work nsidc/tutorials
Or, with docker-compose:
docker-compose up
If you want to mount a directory with write permissions you need to grant the container the same permissions as the one on the directory to be mounted and tell it that has "root" access (within the container)
docker run --name tutorials --user root -p 8888:8888 -v C:\notebook_folder:/home/jovyan/work nsidc/tutorials
The initialization will take some time and will require 2.6 GB of space. Once the startup is complete you will see a line of output similar to this:
To access the notebook, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
Or copy and paste one of these URLs:
http://(6a8bfa6a8518 or 127.0.0.1):8888/?token=2d72e03269b59636d9e31937fcb324f5bdfd0c645a6eba3f
If you started your container with the -d/--detach option, check docker logs tutorials for this output.
- Follow the instructions and copy one of the URLs into a web browser and hit return. The address should look something like this:
http://127.0.0.1:8888/?token=2d72e03269b59636d9e31937fcb324f5bdfd0c645a6eba3f
-
You will now see the NSIDC-Data-Tutorials repository within the Jupyter Notebook interface. Navigate to /work to open the notebooks.
-
You can now interact with the notebooks to explore and access data.
Usage with Mamba/Conda
Note: If we already have conda or mamba installed we can skip the first step.
-
Install mambaforge (Python 3.9+) for your platform from mamba documentation
-
Download the NSIDC-Data-Tutorials repository from Github by clicking the green 'Code' button located at the top right of the repository page and clicking 'Download Zip'. Unzip the file, and open a command line or terminal window in the NSIDC-Data-Tutorials folder's location.
-
From a command line or terminal window, install the required environment with the following commands:
mamba create -n nsidc-tutorials --file binder/conda-lock.yml
You should now see that the dependencies were installed and our environment is ready to be used.
Activate the environment with
conda activate nsidc-tutorials
Launch the notebook locally with the following command:
jupyter lab
This should open a browser window with the JupyterLab IDE, showing your current working directory on the left-hand navigation. Navigate to the tutorial folder of choice and click on their associated *.ipynb files to get started.
Tutorial Environments
Although the nsidc-tutorial environment should run all the notebooks in this repository, we also include tutorial-specific environments that will only contain the dependencies for them. If we don't want to "pollute" our conda environments and we are only going to work with one of the tutorials we recommend to use them instead of the nsidc-tutorial environment. The steps to install them are exactly the same but the environment files are inside the environment folders in each of the tutorials. e.g. for ITS_LIVE
cd notebooks/itslive
mamba create -n nsidc-itslive --file environment/conda-lock.yml
conda activate nsidc-itslive
jupyter lab
This should create a pinned environment that should be fully reproducible across platforms.
NOTE: Sometimes Conda environments change (break) even with pinned down dependencies. If you run into an issue with dependencies for the tutorials please open an issue and we'll try to fix it as soon as possible.
Credit
This software is developed by the National Snow and Ice Data Center with funding from multiple sources.
License
Owner metadata
- Name: National Snow and Ice Data Center
- Login: nsidc
- Email: nsidc@nsidc.org
- Kind: organization
- Description: University of Colorado Boulder
- Website: http://www.nsidc.org/
- Location: Boulder, Colorado
- Twitter: NSIDC
- Company:
- Icon url: https://avatars.githubusercontent.com/u/1874284?v=4
- Repositories: 119
- Last ynced at: 2024-04-16T01:06:28.908Z
- Profile URL: https://github.com/nsidc
GitHub Events
Total
- Create event: 5
- Issues event: 6
- Watch event: 15
- Delete event: 2
- Member event: 1
- Issue comment event: 72
- Push event: 42
- Pull request review comment event: 17
- Pull request review event: 13
- Pull request event: 16
- Fork event: 3
Last Year
- Create event: 4
- Issues event: 4
- Watch event: 15
- Delete event: 2
- Member event: 1
- Issue comment event: 71
- Push event: 42
- Pull request review comment event: 17
- Pull request review event: 13
- Pull request event: 16
- Fork event: 3
Committers metadata
Last synced: 2 months ago
Total Commits: 532
Total Committers: 14
Avg Commits per committer: 38.0
Development Distribution Score (DDS): 0.825
Commits in past year: 81
Committers in past year: 7
Avg Commits per committer in past year: 11.571
Development Distribution Score (DDS) in past year: 0.494
| Name | Commits | |
|---|---|---|
| betolink | b****n@g****m | 93 |
| Andy Barrett | a****t@n****g | 92 |
| betolink:w | l****z@n****g | 85 |
| jennifer | j****k@c****u | 84 |
| Amy Steiker | 4****r | 55 |
| mikala-nsidc | m****g@c****u | 35 |
| asteiker | a****r@g****m | 23 |
| Trey Stafford | t****d@c****u | 19 |
| Andy Barrett | a****t@g****m | 15 |
| Lisa Kaser | k****a@g****m | 12 |
| Jessica Scheick | j****k@g****m | 10 |
| nicholas-kotlinski | n****l@g****m | 6 |
| Matt Fisher | m****r@n****g | 2 |
| saberbrasher | s****r@g****m | 1 |
Committer domains:
- colorado.edu: 3
- nsidc.org: 3
Issue and Pull Request metadata
Last synced: 2 months ago
Total issues: 32
Total pull requests: 88
Average time to close issues: 7 months
Average time to close pull requests: about 1 month
Total issue authors: 9
Total pull request authors: 13
Average comments per issue: 1.13
Average comments per pull request: 2.59
Merged pull request: 66
Bot issues: 0
Bot pull requests: 0
Past year issues: 5
Past year pull requests: 18
Past year average time to close issues: N/A
Past year average time to close pull requests: 6 days
Past year issue authors: 4
Past year pull request authors: 6
Past year average comments per issue: 0.0
Past year average comments per pull request: 5.61
Past year merged pull request: 10
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- andypbarrett (12)
- asteiker (6)
- trey-stafford (5)
- mikala-nsidc (2)
- betolink (2)
- eeholmes (2)
- JessicaS11 (1)
- victoriaeh (1)
- zygym (1)
Top Pull Request Authors
- asteiker (14)
- jroebuck932 (13)
- betolink (13)
- andypbarrett (12)
- mikala-nsidc (9)
- lisakaser (6)
- JessicaS11 (6)
- trey-stafford (6)
- nicholas-kotlinski (3)
- saberbrasher (2)
- MattF-NSIDC (2)
- mliukis (1)
- rmarow (1)
Top Issue Labels
- enhancement (2)
Top Pull Request Labels
Dependencies
- manics/action-binderbadge main composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite
- nsidc/tutorials latest
- pangeo/base-image 2023.01.13 build
- atlassian/gajira-create v3 composite
- atlassian/gajira-login v3 composite
- actions/checkout v4 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- awscliv2 *
Score: 7.426549072397304