Skip to content

Commit

Permalink
Merge branch 'main' into photon_classifier
Browse files Browse the repository at this point in the history
  • Loading branch information
weiji14 committed Aug 16, 2024
2 parents 2a0ae41 + 3958f02 commit c3cace6
Show file tree
Hide file tree
Showing 35 changed files with 3,868 additions and 14 deletions.
14 changes: 7 additions & 7 deletions .github/workflows/ensure_clean_notebooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@

results = []
for notebook in ipynbs:
#if not notebook in exclude_notebooks:
print(f'Checking {notebook}...')
nb = nbformat.read(notebook, as_version=nbformat.NO_CONVERT)
result = nbc.check_notebook(nb,
remove_empty_cells=False,
preserve_cell_metadata=True)
results.append(result)
if not notebook in exclude_notebooks:
print(f'Checking {notebook}...')
nb = nbformat.read(notebook, as_version=nbformat.NO_CONVERT)
result = nbc.check_notebook(nb,
remove_empty_cells=False,
preserve_cell_metadata=True)
results.append(result)

if False in results:
sys.exit(1)
2 changes: 2 additions & 0 deletions book/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ execute:
execute_notebooks: 'force'
exclude_patterns:
- "**/geospatial-advanced.ipynb"
- "cloud-computing/04-cloud-optimized-icesat2.ipynb"
- "cloud-computing/atl08_parquet_files/atl08_parquet.ipynb"
allow_errors: false
# Per-cell notebook execution limit (seconds)
timeout: 300
Expand Down
19 changes: 18 additions & 1 deletion book/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,28 @@ parts:
- file: preliminary/checklist
- file: preliminary/git
- caption: Tutorials
maxdepth: 1
chapters:
- file: tutorials/index
sections:
- file: tutorials/example/tutorial-notebook
- file: tutorials/nb-to-package/index.md
- file: tutorials/nb-to-package/index
sections:
- file: tutorials/nb-to-package/intro
sections:
- file: tutorials/nb-to-package/sample.ipynb
- file: tutorials/nb-to-package/package
- file: tutorials/nb-to-package/community
- file: tutorials/mission-overview/icesat-2-mission-overview
- file: tutorials/cloud-computing/00-goals-and-outline
sections:
- file: tutorials/cloud-computing/01-cloud-computing
- file: tutorials/cloud-computing/02-cloud-data-access
- file: tutorials/cloud-computing/03-cloud-optimized-data-access
- file: tutorials/cloud-computing/04-cloud-optimized-icesat2
- file: tutorials/cloud-computing/atl08_parquet_files/atl08_parquet
options:
- titlesonly: true
- file: tutorials/photon_classifier
- caption: Projects
chapters:
Expand Down
Binary file added book/img/code-to-package.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added book/img/simple-packaging.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
129 changes: 129 additions & 0 deletions book/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,132 @@ @article{huppenkothen_entrofy_2020
pages = {e0231939},
file = {Snapshot:C\:\\Users\\arend\\Zotero\\storage\\CYPGLSAA\\article.html:text/html},
}

%%% Mission Overview
@article{Bagnardi:2021ic,
author = {Bagnardi, M. and Kurtz, N. T. and Petty, A. A. and Kwok, R.},
title = {{Sea Surface Height Anomalies of the Arctic Ocean From ICESat-2: A First Examination and Comparisons With CryoSat-2}},
journal = {Geophysical Research Letters},
year = {2021},
month = jul,
volume = {48},
number = {14},
issn = {0094-8276},
url = {https://doi.org/10.1029/2021GL093155},
doi = {10.1029/2021GL093155},
pages = {2021--93155},
publisher = {John Wiley \& Sons, Ltd},
keywords = {altimetry, Arctic Ocean, CRYO2ICE, CryoSat-2, ICESat-2, sea surface height anomaly},
}

@article{Buzzanga:2021cj,
author = {Buzzanga, Brett and Heijkoop, Eduard and Hamlington, Benjamin D. and Nerem, R. Steven and Gardner, Alex},
title = {{An Assessment of Regional ICESat-2 Sea-Level Trends}},
journal = {Geophysical Research Letters},
year = {2021},
month = may,
volume = {48},
number = {9},
issn = {0094-8276},
url = {https://doi.org/10.1029/2020GL092327},
doi = {10.1029/2020GL092327},
pages = {2020--92327},
publisher = {John Wiley \& Sons, Ltd},
keywords = {Climate change, ICESat-2, remote sensing, satellite altimetry, sea level},
}

@article{Felikson:2021cq,
author = {Felikson, Denis and A. Catania, Ginny and Bartholomaus, Timothy C. and Morlighem, Mathieu and No{\"e}l, Brice P. Y.},
title = {{Steep Glacier Bed Knickpoints Mitigate Inland Thinning in Greenland}},
journal = {Geophysical Research Letters},
year = {2021},
month = jan,
volume = {48},
number = {2},
issn = {0094-8276},
url = {https://doi.org/10.1029/2020GL090112},
doi = {10.1029/2020GL090112},
pages = {2020--90112},
publisher = {John Wiley \& Sons, Ltd},
}

@article{Kwok:2019ee,
author = {Kwok, R. and Markus, T. and Kurtz, N. T. and Petty, A. A. and Neumann, T. A. and Farrell, S. L. and Cunningham, G. F. and Hancock, D. W. and Ivanoff, A. and Wimert, J. T.},
title = {{Surface Height and Sea Ice Freeboard of the Arctic Ocean From ICESat-2: Characteristics and Early Results}},
journal = {Journal of Geophysical Research: Oceans},
year = {2019},
month = oct,
volume = {124},
number = {10},
issn = {2169-9275},
url = {https://doi.org/10.1029/2019JC015486},
doi = {10.1029/2019JC015486},
pages = {6942--6959},
publisher = {John Wiley \& Sons, Ltd},
keywords = {altimetry, Arctic, Antarctic, sea ice thickness, freeboard, surface height},
}

@inproceedings{Morison:2022bg,
author = {Morison, James and Dickinson, Suzanne and Hancock, David and Robbins, John and Roberts, Leeanne},
title = {{ICESat-2 ATL12 Ocean Surface Height and ATL19 Gridded Dynamic Ocean Topography}},
year = {2022},
url = {https://doi.org/10.1109/OCEANS47191.2022.9977076},
doi = {10.1109/OCEANS47191.2022.9977076},
pages = {1--6},
booktitle = {OCEANS 2022, Hampton Roads},
keywords = {Meters; Sea surface; Surface waves; Sea measurements; US Department of Transportation; Sea state; Surface topography; photon heights; seas surface height; dynamic ocean topography},
}

@article{Neuenschwander:2019hi,
author = {Neuenschwander, Amy L and Magruder, Lori A},
title = {{Canopy and Terrain Height Retrievals with ICESat-2: A First Look}},
journal = {Remote Sensing},
year = {2019},
volume = {11},
number = {1721},
issn = {2072-4292},
url = {https://www.mdpi.com/2072-4292/11/14/1721},
doi = {10.3390/rs11141721},
}

@article{Palm:2021km,
author = {Palm, Stephen P and Yang, Yuekui and Herzfeld, Ute and Hancock, David and Hayes, Adam and Selmer, Patrick and Hart, William and Hlavka, Dennis},

Check failure on line 123 in book/references.bib

View workflow job for this annotation

GitHub Actions / quality-control

Hart ==> Heart, Harm
title = {{ICESat-2 Atmospheric Channel Description, Data Processing and First Results}},
journal = {Earth and Space Science},
year = {2021},
month = aug,
volume = {8},
number = {8},
issn = {2333-5084},
url = {http://dx.doi.org/10.1029/2020ea001470},
doi = {10.1029/2020EA001470},
publisher = {American Geophysical Union (AGU)},
}

@article{Petty:2020gt,
author = {Petty, Alek A. and Kurtz, Nathan T. and Kwok, Ron and Markus, Thorsten and Neumann, Thomas A.},
title = {{Winter Arctic Sea Ice Thickness From ICESat-2 Freeboards}},
journal = {Journal of Geophysical Research: Oceans},
year = {2020},
month = may,
volume = {125},
number = {5},
issn = {2169-9275},
url = {https://doi.org/10.1029/2019JC015764},
doi = {10.1029/2019JC015764},
pages = {2019--15764},
publisher = {John Wiley \& Sons, Ltd},
keywords = {Sea ice, Arctic, ICESat-2, altimetry},
}

@article{Smith:2019je,
author = {Smith, Benjamin and Fricker, Helen A. and Holschuh, Nicholas and Gardner, Alex S. and Adusumilli, Susheel and Brunt, Kelly M. and Csatho, Beata and Harbeck, Kaitlin and Huth, Alex and Neumann, Thomas and Nilsson, Johan and Siegfried, Matthew R.},
title = {{Land ice height-retrieval algorithm for NASA's ICESat-2 photon-counting laser altimeter}},
journal = {Remote Sensing of Environment},
year = {2019},
issn = {0034-4257},
url = {http://www.sciencedirect.com/science/article/pii/S0034425719303712},
doi = {10.1016/j.rse.2019.111352},
pages = {111352},
keywords = {ICESat-2, Laser altimeter, Ice sheets, Glaciers, Land ice, Cryosphere},
}
76 changes: 76 additions & 0 deletions book/tutorials/cloud-computing/00-goals-and-outline.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "a888b10c-1f9f-406e-8d14-9648be234d44",
"metadata": {},
"source": [
"# Cloud Computing Tutorial\n",
"\n",
"<br />\n",
"\n",
"```{image} ./images/cloud.gif\n",
":width: 200px\n",
":align: center\n",
"```\n",
"\n",
"**Welcome to the Cloud Computing Tutorial!**\n",
"\n",
"This tutorial is just the tip of the ice[SAT-2]berg (😬) of cloud computing. It focuses on accessing data stored in the cloud. An understanding of the difference between the \"download to local\" and \"direct from cloud\" methods of data access will explain how and why the cloud facilitates the scaling and reproducibility of your science.\n",
"\n",
":::{admonition} Learning Goals\n",
"\n",
"**At the conclusion of this tutorial, you should be able to answer:**\n",
"1. What is cloud computing?\n",
"2. What is cloud object storage and the difference between data stored in the cloud, data on a local file system and data stored in \"on-premise\" data centers.\n",
"3. How to optimize data for reading from cloud object storage.\n",
"\n",
":::\n",
"\n",
"## Outline\n",
"\n",
"1. [What is cloud computing?](./01-cloud-computing.ipynb)\n",
" 1. Definition of cloud computing\n",
" 2. Exercise: Difference between resources on your local machine and resources in the cloud\n",
" 3. Why you might use cloud computing\n",
"2. [Accessing data in the cloud](./02-cloud-data-access.ipynb)\n",
" 1. Definition of cloud object storage\n",
" 2. Exercise: How many NASA datasets (aka collections) are in the cloud? How many ICESat-2 datasets are in the cloud? Which DAAC manages ICESast-2 data?\n",
" 3. Difference between data stored in the cloud, data on a local file system and data stored in \"on-premise\" data centers\n",
" 4. Why you might use cloud object storage\n",
"3. [Cloud-Optimized Data](./03-cloud-optimized-data-access.ipynb)\n",
" 1. What are we optimizing for and why?\n",
" 2. Anatomy of a structured data file\n",
" 3. Thought Exercise: Garage analogy\n",
" 4. How do we optimize data for reading from cloud object storage?\n",
"4. [Cloud-Optimized ICESat-2 Demo](./04-cloud-optimized-icesat2.ipynb)\n",
" 1. Cloud-Optimized vs Cloud-Native \n",
" 1. Creating an ICESat-2 GeoParquet\n",
" 3. Plot the data with lonboard\n",
"\n",
"Or simply: Cloud -> Cloud data access -> Optimized cloud data access -> Demo with ICESat-2"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
81 changes: 81 additions & 0 deletions book/tutorials/cloud-computing/01-cloud-computing.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# What is cloud computing?\n",
"\n",
"<br />\n",
"\n",
"**Cloud computing is compute and storage as a service.** The term \"cloud computing\" is typically used to refer to commercial cloud service providers such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure (Azure). These cloud service providers all offer a wide range of computing services, only a few of which we will cover today, via a pay-as-you-go payment structure.\n",
"\n",
"```{image} ./images/AWS_OurDataCenters_Background.jpg\n",
":width: 600px\n",
":align: center\n",
"```\n",
"\n",
"<p style=\"font-size: 10px;\">image src: https://aws.amazon.com/compliance/data-center/data-centers/</p>\n",
"\n",
">Cloud computing is the on-demand delivery of IT resources over the Internet with pay-as-you-go pricing. Instead of buying, owning, and maintaining physical data centers and servers, you can access technology services, such as computing power, storage, and databases, on an as-needed basis from a cloud provider like Amazon Web Services (AWS). ([source](https://aws.amazon.com/what-is-cloud-computing/))\n",
"\n",
"This tutorial will focus on AWS services and terminology, but Google Cloud and Microsoft Azure offer the same services.\n",
"\n",
":::{dropdown} 🏋️ Exercise: How many CPUs and how much memory does your laptop have? And how does that compare with CryoCloud?</h3>\n",
":open:\n",
"If you have your laptop available, open the terminal app and use the appropriate commands to determine CPU and memory.\n",
"\n",
"<div style=\"width:60%; padding: 30px;\">\n",
"\n",
"| Operating System (OS) | CPU command | Memory Command |\n",
"|-----------------------|-----------------------------------------------------------------------------------|----------------------------|\n",
"| MacOS | `sysctl -a \\| grep hw.ncpu` | `top -l 1 \\| grep PhysMem` |\n",
"| Linux (cryocloud) | `lscpu \\| grep \"^CPU\\(s\\):\"` | `free -h` | \n",
"| Windows | https://www.top-password.com/blog/find-number-of-cores-in-your-cpu-on-windows-10/ | |\n",
"</div>\n",
"\n",
"Now do the same but on hub.cryointhecloud.com.\n",
"\n",
"Tip: When logged into cryocloud, you can click the ![kernel usage icon](./images/tachometer-alt_1.png) icon on the far-right toolbar.\n",
":::\n",
"\n",
"**What did you find?** It's possible you found that your machine has **more** CPU and/or memory than cryocloud!\n",
"\n",
":::{dropdown} So why would we want to use the cloud and not our personal computers?\n",
" 1. Because cryocloud has all the dependencies you need.\n",
" 2. Because cryocloud is \"close\" to the data (more on this later).\n",
" 3. Because you can use larger and bigger machines in the cloud (more on this later).\n",
" 4. **Having the dependencies, data, and runtime environment in the cloud can simplify reproducible science.**\n",
":::\n",
"\n",
":::{admonition} Takeaways\n",
"\n",
"* The cloud allows you to access many computing and storage services over the internet. Most cloud services are offered via a \"pay as you go\" model.\n",
"* Hubs like CryoCloud provide a virtual environment which simplifies reproducible science. You should use them whenever you can!\n",
":::"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Loading

0 comments on commit c3cace6

Please sign in to comment.