diff --git a/appendix/template.ipynb b/appendix/template.ipynb
index 45376254b4..8948fc7787 100644
--- a/appendix/template.ipynb
+++ b/appendix/template.ipynb
@@ -245,7 +245,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "We also suggest checking out Jupyter Book's [brief demonstration](https://jupyterbook.org/content/metadata.html#jupyter-cell-tags) on adding cell tags to your cells in Jupyter Notebook, Lab, or manually. Using these cell tags can allow you to [customize](https://jupyterbook.org/interactive/hiding.html) how your code content is displayed and even [demonstrate errors](https://jupyterbook.org/content/execute.html#dealing-with-code-that-raises-errors) without altogether crashing our loyal army of machines!"
+ "We also suggest checking out Jupyter Book's [brief demonstration](https://jupyterbook.org/v1/content/metadata.html#add-metadata-to-notebooks) on adding cell tags to your cells in Jupyter Notebook, Lab, or manually. Using these cell tags can allow you to [customize](https://jupyterbook.org/v1/interactive/hiding.html) how your code content is displayed and even [demonstrate errors](https://jupyterbook.org/v1/content/execute.html#dealing-with-code-that-raises-errors) without altogether crashing our loyal army of machines!"
]
},
{
diff --git a/core/cartopy.md b/core/cartopy.md
index 6abf7da964..93faafbae7 100644
--- a/core/cartopy.md
+++ b/core/cartopy.md
@@ -1,10 +1,10 @@
# Cartopy
-This section contains tutorials on plotting maps with [Cartopy](https://scitools.org.uk/cartopy/docs/latest/) {cite:p}`Cartopy`; it is cross-referenced with tutorials on [Xarray](xarray) and [Matplotlib](matplotlib).
+This section contains tutorials on plotting maps with [Cartopy](https://cartopy.readthedocs.io) {cite:p}`Cartopy`; it is cross-referenced with tutorials on [Xarray](xarray.md) and [Matplotlib](matplotlib.md).
---
-From the [Cartopy website](https://scitools.org.uk/cartopy/docs/latest):
+From the [Cartopy website](https://cartopy.readthedocs.io):
> Cartopy is a Python package designed for geospatial data processing in order to
> produce maps and other geospatial data analyses.
@@ -12,9 +12,9 @@ From the [Cartopy website](https://scitools.org.uk/cartopy/docs/latest):
> Cartopy makes use of the powerful PROJ.4, NumPy and Shapely libraries and includes a programmatic interface
> built on top of Matplotlib for the creation of publication quality maps.
>
-> Key features of Cartopy are its object-oriented [projection definitions](https://scitools.org.uk/cartopy/docs/latest/reference/crs.html#list-of-projections),
+> Key features of Cartopy are its object-oriented [projection definitions](https://cartopy.readthedocs.io/stable/reference/crs.html#list-of-projections),
> and its ability to transform points, lines, vectors, polygons and images between those projections.
-Before working through the Cartopy notebooks in this section of Pythia Foundations, you should first have a basic knowledge of [Matplotlib](matplotlib).
+Before working through the Cartopy notebooks in this section of Pythia Foundations, you should first have a basic knowledge of [Matplotlib](matplotlib.md).
In addition, please note that the geographic-features library used by Cartopy makes use of shapefiles directly served by [Natural Earth](https://www.naturalearthdata.com/).
diff --git a/core/cartopy/cartopy.ipynb b/core/cartopy/cartopy.ipynb
index 3f65b71b3d..ef08d27ada 100644
--- a/core/cartopy/cartopy.ipynb
+++ b/core/cartopy/cartopy.ipynb
@@ -41,9 +41,9 @@
"source": [
"## Prerequisites\n",
"\n",
- "| Concepts | Importance | Notes |\n",
- "| --- | --- | --- |\n",
- "| [Matplotlib](../matplotlib) | Necessary | {cite:t}`Hunter:2007` |\n",
+ "| Concepts | Importance | Notes |\n",
+ "| ------------------------------ | ---------- | --------------------- |\n",
+ "| [Matplotlib](../matplotlib.md) | Necessary | {cite:t}`Hunter:2007` |\n",
"\n",
"- **Time to learn**: 30 minutes"
]
@@ -183,7 +183,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "We can add these features to our subplot via the `add_feature` method; this method allows the definition of attributes using arguments, similar to Matplotlib's `plot` method. A list of the various Natural Earth shapefiles can be found at https://scitools.org.uk/cartopy/docs/latest/matplotlib/feature_interface.html. In this example, we add borders and U. S. state lines to our subplot:"
+ "We can add these features to our subplot via the `add_feature` method; this method allows the definition of attributes using arguments, similar to Matplotlib's `plot` method. A list of the various Natural Earth shapefiles can be found at https://cartopy.readthedocs.io/stable/matplotlib/feature_interface.html. In this example, we add borders and U. S. state lines to our subplot:"
]
},
{
@@ -225,7 +225,7 @@
"source": [
"
"
]
},
@@ -720,8 +720,8 @@
"source": [
"## Additional Resources\n",
"\n",
- "1. [Cartopy Documentation](https://scitools.org.uk/cartopy/docs/latest/)\n",
- "2. [Full list of projections in Cartopy](https://scitools.org.uk/cartopy/docs/latest/reference/crs.html) \n",
+ "1. [Cartopy Documentation](https://cartopy.readthedocs.io/)\n",
+ "2. [Full list of projections in Cartopy](https://cartopy.readthedocs.io/stable/reference/crs.html) \n",
"3. [Maps with Cartopy (Ryan Abernathey)](https://rabernat.github.io/research_computing_2018/maps-with-cartopy.html)\n",
"4. [Map Projections (GeoCAT)](https://geocat-examples.readthedocs.io/en/latest/gallery/index.html#map-projections)\n",
"5. [NCAR xdev Cartopy Tutorial Video](https://www.youtube.com/watch?v=ivmd3RluMiw)\n"
diff --git a/core/data-formats/netcdf-cf.ipynb b/core/data-formats/netcdf-cf.ipynb
index 2593722ebf..a79cbfd61c 100644
--- a/core/data-formats/netcdf-cf.ipynb
+++ b/core/data-formats/netcdf-cf.ipynb
@@ -6,7 +6,7 @@
"source": [
"# NetCDF and CF: The Basics\n",
"\n",
- "\n",
+ "\n",
"\n",
"---"
]
@@ -33,7 +33,7 @@
"| Concepts | Importance | Notes |\n",
"| --- | --- | --- |\n",
"| [Numpy Basics](../numpy/numpy-basics) | Necessary | |\n",
- "| [Datetime](../datetime) | Necessary | |\n",
+ "| [Datetime](../datetime.md) | Necessary | |\n",
"\n",
"- **Time to learn**: 50 minutes"
]
@@ -72,7 +72,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n",
"## Gridded Data"
]
},
@@ -744,7 +743,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n",
"## Observational Data\n",
"\n",
"Thus far, we have only worked with data arranged on grids. One common type of data, called \"in-situ\" or \"observational\" data, is usually arranged in other ways. The CF conventions for this type of data are called *Conventions for DSG (Discrete Sampling Geometries)*.\n",
@@ -974,7 +972,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n",
"## Resources and References\n",
"\n",
"- [CF Conventions doc (1.7)](http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html)\n",
diff --git a/core/datetime.md b/core/datetime.md
index 185df93ec4..19f12c78d4 100644
--- a/core/datetime.md
+++ b/core/datetime.md
@@ -11,4 +11,4 @@ When this chapter is fully built out, it will include a comprehensive guide to d
- [Numpy `datetime64`](https://numpy.org/doc/stable/reference/arrays.datetime.html) (for efficient vectorized date and time operations)
- [cftime library](https://unidata.github.io/cftime/) (for dealing with dates and times in non-standard calendars)
-These tutorials will be cross-referenced with other tutorials on time-related topics, such as dealing with timeseries data in [Pandas](pandas) and [Xarray](xarray).
+These tutorials will be cross-referenced with other tutorials on time-related topics, such as dealing with timeseries data in [Pandas](pandas.md) and [Xarray](xarray.md).
diff --git a/core/datetime/datetime.ipynb b/core/datetime/datetime.ipynb
index 400f4d1536..061bc8a6a8 100644
--- a/core/datetime/datetime.ipynb
+++ b/core/datetime/datetime.ipynb
@@ -96,7 +96,7 @@
"- `datetime` **module** has a `datetime` **class**\n",
"- `datetime` **module** has a `time` **class**\n",
"- `datetime` **module** has a `date` **class**\n",
- "- `time` **module** has a `time` function, which returns (almost always) [Unix time](#What-is-Unix-Time?)\n",
+ "- `time` **module** has a `time` function, which returns (almost always) [Unix time](#what-is-unix-time)\n",
"- `datetime` **class** has a `date` method, which returns a `date` object\n",
"- `datetime` **class** has a `time` method, which returns a `time` object\n",
"\n",
@@ -141,7 +141,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "The variable `now` holds the current time in seconds since January 1, 1970 00:00 UTC. For more information on this important, but seemingly esoteric time format, see the section on this page called \"[What is Unix Time](#What-is-Unix-Time?)\". In addition, if you are not familiar with UTC, there is a section on this page called \"[What is UTC](#What-is-UTC?)\"."
+ "The variable `now` holds the current time in seconds since January 1, 1970 00:00 UTC. For more information on this important, but seemingly esoteric time format, see the section on this page called \"[What is Unix Time?](#what-is-unix-time)\". In addition, if you are not familiar with UTC, there is a section on this page called \"[What is UTC?](#what-is-utc)\"."
]
},
{
@@ -150,7 +150,7 @@
"source": [
"### `time` module\n",
"\n",
- "The `time` module is well-suited for measuring [Unix time](#What-is-Unix-Time?). For example, when you are calculating how long it takes a Python function to run, you can employ the `time()` function, which can be found in the `time` module, to obtain Unix time before and after the function completes. You can then take the difference of those two times to determine how long the function was running. (Measuring the runtime of a block of code this way is known as \"benchmarking\".)"
+ "The `time` module is well-suited for measuring [Unix time](#what-is-unix-time). For example, when you are calculating how long it takes a Python function to run, you can employ the `time()` function, which can be found in the `time` module, to obtain Unix time before and after the function completes. You can then take the difference of those two times to determine how long the function was running. (Measuring the runtime of a block of code this way is known as \"benchmarking\".)"
]
},
{
@@ -180,9 +180,10 @@
"cell_type": "markdown",
"metadata": {},
"source": [
+ "(what-is-unix-time)=\n",
"### What is Unix Time?\n",
"\n",
- "Unix time is an example of system time, which is how a computer tracks the passage of time. Computers do not inherently know human representations of time; as such, they store time as a large binary number, indicating a number of time units after a set date and time. This is much easier for a computer to keep track of. In the case of Unix time, the time unit is seconds, and the set date and time is the epoch. Therefore, Unix time is the number of seconds since the epoch. The epoch is defined as January 1, 1970 00:00 [UTC](#What-is-UTC?). This is quite confusing for humans, but again, computers store time in a way that makes sense for them. It is represented \"under the hood\" as a [floating point number](https://en.wikipedia.org/wiki/Floating_point) which is how computers represent real (ℝ) numbers."
+ "Unix time is an example of system time, which is how a computer tracks the passage of time. Computers do not inherently know human representations of time; as such, they store time as a large binary number, indicating a number of time units after a set date and time. This is much easier for a computer to keep track of. In the case of Unix time, the time unit is seconds, and the set date and time is the epoch. Therefore, Unix time is the number of seconds since the epoch. The epoch is defined as January 1, 1970 00:00 [UTC](#what-is-utc). This is quite confusing for humans, but again, computers store time in a way that makes sense for them. It is represented \"under the hood\" as a [floating point number](https://en.wikipedia.org/wiki/Floating_point) which is how computers represent real (ℝ) numbers."
]
},
{
@@ -191,7 +192,7 @@
"source": [
"### `datetime` module\n",
"\n",
- "The `datetime` module handles time with the Gregorian calendar (the calendar we, as humans, are familiar with); it is independent of Unix time. The `datetime` module uses an [object-oriented](#Thirty-second-introduction-to-Object-Oriented-programming) approach; it contains the `date`, `time`, `datetime`, `timedelta`, and `tzinfo` classes.\n",
+ "The `datetime` module handles time with the Gregorian calendar (the calendar we, as humans, are familiar with); it is independent of Unix time. The `datetime` module uses an object-oriented approach; it contains the `date`, `time`, `datetime`, `timedelta`, and `tzinfo` classes.\n",
"\n",
"- `date` class represents the day, month, and year\n",
"- `time` class represents the time of day\n",
@@ -322,6 +323,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
+ "(days-since-strike)=\n",
"#### See how many days have elapsed since the strike:\n",
"\n",
"This example shows how to find the number of days since an event; in this case, the lightning strike described earlier:"
@@ -357,7 +359,7 @@
"\n",
"This convenient language feature is known as [operator overloading](https://en.wikipedia.org/wiki/Operator_overloading), and is another example of Python offering built-in functionality to make programming easier. (In some other languages, such as Java, you would have to call a method to perform such operations, which significantly obfuscates the code.) \n",
"\n",
- "In addition, you can use these arithmetic operators with two datetime objects, as shown above with [lightning-strike data](#See-how-many-days-have-elapsed-since-the-strike:), to create `timedelta` objects. Let's examine all these features in the following code block."
+ "In addition, you can use these arithmetic operators with two datetime objects, as shown above with [lightning-strike data](#days-since-strike), to create `timedelta` objects. Let's examine all these features in the following code block."
]
},
{
@@ -397,6 +399,7 @@
"\n",
"Time zones can be a source of confusion and frustration in geoscientific data and in computer programming in general. Core date and time libraries in various programming languages, including Python, inevitably have design flaws, relating to time zones, date and time formatting, and other inherently complex issues. Third-party libraries are often created to fix the limitations of the core libraries, but this approach is frequently unsuccessful. To avoid time-zone-related issues, it is best to handle data in UTC; if data cannot be handled in UTC, efforts should be made to consistently use the same time zone for all data. However, this is not always possible; events such as severe weather are expected to be reported in a local time zone, which is not always consistent.\n",
"\n",
+ "(what-is-utc)=\n",
"### What is UTC?\n",
"\n",
"\"[UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time)\" is a combination of the French and English abbreviations for Coordinated Universal Time. It is, in practice, equivalent to Greenwich Mean Time (GMT), the time zone at 0 degrees longitude. (The prime meridian, 0 degrees longitude, runs through Greenwich, a district of London, England.) In geoscientific data, times are often in UTC, although you should always verify that this is actually true to avoid time zone issues.\n",
@@ -501,7 +504,7 @@
"source": [
"## Summary\n",
"\n",
- "The Python Standard Library contains several modules for dealing with date and time data. We saw how we can avoid some name ambiguities by aliasing the module names; this can be done with import statements like `import datetime as dt` and `import time as tm`. The `tm.time()` method just returns the current [Unix time](#What-is-Unix-Time?) in seconds -- which can be useful for measuring elapsed time, but not all that useful for working with geophysical data.\n",
+ "The Python Standard Library contains several modules for dealing with date and time data. We saw how we can avoid some name ambiguities by aliasing the module names; this can be done with import statements like `import datetime as dt` and `import time as tm`. The `tm.time()` method just returns the current [Unix time](#what-is-unix-time) in seconds -- which can be useful for measuring elapsed time, but not all that useful for working with geophysical data.\n",
"\n",
"The `datetime` module contains various classes for storing, converting, comparing, and formatting date and time data on the Gregorian calendar. We saw how we can parse data files with date and time strings into `dt.datetime` objects using the `dt.datetime.strptime()` method. We also saw how to perform arithmetic using date and time data; this uses the `dt.timedelta` class to represent intervals of time.\n",
"\n",
diff --git a/core/numpy/intermediate-numpy.ipynb b/core/numpy/intermediate-numpy.ipynb
index 1ef29dd86f..a02a2eab89 100644
--- a/core/numpy/intermediate-numpy.ipynb
+++ b/core/numpy/intermediate-numpy.ipynb
@@ -27,9 +27,9 @@
"source": [
"## Prerequisites\n",
"\n",
- "| Concepts | Importance | Notes |\n",
- "| --- | --- | --- |\n",
- "| [NumPy Basics](numpy-basics) | Necessary | {cite:t}`harris2020array` |\n",
+ "| Concepts | Importance | Notes |\n",
+ "| ------------------------------- | ---------- | ------------------------- |\n",
+ "| [NumPy Basics](numpy-basics) | Necessary | {cite:t}`harris2020array` |\n",
"\n",
"* **Time to learn**: 20 minutes\n",
"---"
@@ -40,7 +40,7 @@
"metadata": {},
"source": [
"## Imports\n",
- "We will be including [Matplotlib](../matplotlib) to illustrate some of our examples, but you don't need knowledge of it to complete this notebook."
+ "We will be including [Matplotlib](../matplotlib.md) to illustrate some of our examples, but you don't need knowledge of it to complete this notebook."
]
},
{
diff --git a/core/numpy/numpy-broadcasting.ipynb b/core/numpy/numpy-broadcasting.ipynb
index 5604b6f9bd..593ca886f4 100644
--- a/core/numpy/numpy-broadcasting.ipynb
+++ b/core/numpy/numpy-broadcasting.ipynb
@@ -15,7 +15,7 @@
"metadata": {},
"source": [
"## Overview\n",
- "Before we begin, it is important to know that broadcasting is a valuable part of the power that NumPy provides. However, there's no looking past the fact that broadcasting can be conceptually difficult to digest. This information can be helpful and very powerful, but it may be more prudent to first start learning the other label-based elements of the Python ecosystem, [Pandas](../pandas) and [Xarray](../xarray). This can make understanding NumPy broadcasting easier or simpler when using real-world data. When you are ready to learn about NumPy broadcasting, this section is organized as follows:\n",
+ "Before we begin, it is important to know that broadcasting is a valuable part of the power that NumPy provides. However, there's no looking past the fact that broadcasting can be conceptually difficult to digest. This information can be helpful and very powerful, but it may be more prudent to first start learning the other label-based elements of the Python ecosystem, [Pandas](../pandas.md) and [Xarray](../xarray.md). This can make understanding NumPy broadcasting easier or simpler when using real-world data. When you are ready to learn about NumPy broadcasting, this section is organized as follows:\n",
"\n",
"1. An introduction to broadcasting\n",
"1. Avoiding loops with vectorization"
@@ -904,7 +904,7 @@
"We've previewed some advanced NumPy capabilities, with a focus on _vectorization_; in other words, using clever broadcasting and data windowing techniques to enhance the speed and readability of our calculation code. By making use of vectorization, you can reduce explicit construction of loops in your code, and improve speed of calculation throughout the execution of such code.\n",
"\n",
"### What's next\n",
- "This is an advanced NumPy topic; however, it is important to learn this topic in order to design calculation code that maximizes scalability and speed. If you would like to explore this topic further, please review the links below. We also suggest diving into label-based indexing and subsetting with [Pandas](../pandas) and [Xarray](../xarray), where some of this broadcasting can be simplified, or have added context."
+ "This is an advanced NumPy topic; however, it is important to learn this topic in order to design calculation code that maximizes scalability and speed. If you would like to explore this topic further, please review the links below. We also suggest diving into label-based indexing and subsetting with [Pandas](../pandas.md) and [Xarray](../xarray.md), where some of this broadcasting can be simplified, or have added context."
]
},
{
diff --git a/core/overview.md b/core/overview.md
index 92f6205604..e12eef8eba 100644
--- a/core/overview.md
+++ b/core/overview.md
@@ -115,10 +115,10 @@ attempt to keep track of the domain-specific libraries in these subfiels.
## Tutorials
-- [NumPy](numpy): Core package for array computing, the workhorse of the Scientific Python stack
-- [Matplotlib](matplotlib): Basic plotting
-- [Cartopy](cartopy): Plotting on map projections
-- [Datetime](datetime): Dealing with time and calendar data
-- [Pandas](pandas): Working with labeled tabular data
-- [Data formats](data-formats): Working with common geoscience data formats
-- [Xarray](xarray): Working with gridded and labeled N-dimensional data
+- [NumPy](numpy.md): Core package for array computing, the workhorse of the Scientific Python stack
+- [Matplotlib](matplotlib.md): Basic plotting
+- [Cartopy](cartopy.md): Plotting on map projections
+- [Datetime](datetime.md): Dealing with time and calendar data
+- [Pandas](pandas.md): Working with labeled tabular data
+- [Data formats](data-formats.md): Working with common geoscience data formats
+- [Xarray](xarray.md): Working with gridded and labeled N-dimensional data
diff --git a/core/pandas/pandas.ipynb b/core/pandas/pandas.ipynb
index 9005ad47f4..af46dd3e79 100644
--- a/core/pandas/pandas.ipynb
+++ b/core/pandas/pandas.ipynb
@@ -405,7 +405,7 @@
"id": "cebfac9a-9e8f-449a-a88d-b1196a49d87d",
"metadata": {},
"source": [
- "If you already have some knowledge of xarray, you will quite likely know how to create `slice` objects by hand. This can also be used in pandas, as shown below. If you are completely unfamiliar with xarray, it will be covered on a [later Pythia tutorial page](../xarray)."
+ "If you already have some knowledge of xarray, you will quite likely know how to create `slice` objects by hand. This can also be used in pandas, as shown below. If you are completely unfamiliar with xarray, it will be covered on a [later Pythia tutorial page](../xarray.md)."
]
},
{
diff --git a/core/xarray.md b/core/xarray.md
index 90cab47bf3..aa3ecd1cc1 100644
--- a/core/xarray.md
+++ b/core/xarray.md
@@ -14,6 +14,6 @@ From the [Xarray website][xarray home]:
>
> Xarray is inspired by and borrows heavily from pandas, the popular data analysis package focused on labelled tabular data. It is particularly tailored to working with netCDF files, which were the source of xarray’s data model, and integrates tightly with dask for parallel computing.
-You should have a basic familiarity with [Numpy arrays](numpy) prior to working through the Xarray notebooks presented here.
+You should have a basic familiarity with [Numpy arrays](numpy.md) prior to working through the Xarray notebooks presented here.
[xarray home]: http://xarray.pydata.org/en/stable/
diff --git a/core/xarray/xarray-intro.ipynb b/core/xarray/xarray-intro.ipynb
index dca1d5e803..2ed95e4af2 100644
--- a/core/xarray/xarray-intro.ipynb
+++ b/core/xarray/xarray-intro.ipynb
@@ -48,7 +48,7 @@
"| [NumPy Broadcasting](../numpy/numpy-broadcasting) | Helpful | Familiarity with array arithmetic and broadcasting |\n",
"| [Introduction to Pandas](../pandas/pandas) | Helpful | Familiarity with labeled data |\n",
"| [Datetime](../datetime/datetime) | Helpful | Familiarity with time formats and the `timedelta` object |\n",
- "| [Understanding of NetCDF](some-link-to-external-resource) | Helpful | Familiarity with metadata structure |\n",
+ "| [Understanding of NetCDF](../data-formats/netcdf-cf) | Helpful | Familiarity with metadata structure |\n",
"\n",
"- **Time to learn**: 40 minutes"
]
@@ -193,7 +193,7 @@
"\n",
"#### Make time and space coordinates\n",
"\n",
- "In this example, we use [Pandas](../pandas) to create an array of [datetime data](../datetime). This array will be used in a later example to add a named coordinate, called `time`, to a `DataArray`."
+ "In this example, we use [Pandas](../pandas.md) to create an array of [datetime data](../datetime.md). This array will be used in a later example to add a named coordinate, called `time`, to a `DataArray`."
]
},
{
@@ -799,7 +799,7 @@
"\n",
"### Simple visualization with `.plot()`\n",
"\n",
- "Similarly to [Pandas](../pandas/pandas), Xarray includes a built-in plotting interface, which makes use of [Matplotlib](../matplotlib) behind the scenes. In order to use this interface, you can call the `.plot()` method, which is included in every `DataArray`.\n",
+ "Similarly to [Pandas](../pandas/pandas), Xarray includes a built-in plotting interface, which makes use of [Matplotlib](../matplotlib.md) behind the scenes. In order to use this interface, you can call the `.plot()` method, which is included in every `DataArray`.\n",
"\n",
"In this example, we show how to create a basic plot from a `DataArray`. In this case, we are using the `prof` `DataArray` defined above, which contains a Colorado mean temperature profile."
]
@@ -870,7 +870,7 @@
"source": [
"The figure above is generated by Matplotlib's `pcolormesh` method, which was automatically called by Xarray's `plot` method. This occurred because Xarray recognized that the `DataArray` object calling the `plot` method contained two distinct coordinate variables.\n",
"\n",
- "The plot generated by the above example is a map of air temperatures over North America, on the 1000 hPa isobaric surface. If a different map projection or added geographic features are needed on this plot, the plot can easily be modified using [Cartopy](../cartopy)."
+ "The plot generated by the above example is a map of air temperatures over North America, on the 1000 hPa isobaric surface. If a different map projection or added geographic features are needed on this plot, the plot can easily be modified using [Cartopy](../cartopy.md)."
]
},
{
diff --git a/foundations/conda.md b/foundations/conda.md
index 910613da18..ffe5d992d4 100644
--- a/foundations/conda.md
+++ b/foundations/conda.md
@@ -17,7 +17,7 @@ Here we will cover:
| Concepts | Importance | Notes |
| --------------------------------------------------------------------------------------------------------- | ---------- | ----- |
-| [Installing and Running Python](https://foundations.projectpythia.org/foundations/how-to-run-python) | Helpful | |
+| [Installing and Running Python](how-to-run-python.md) | Helpful | |
- **Time to learn**: 20 minutes
@@ -115,7 +115,7 @@ Some other {term}`Conda` commands that you will find useful include:
conda env remove --name sample_environment
```
-You can find lots more information in the [Conda documentation](https://docs.conda.io/en/latest/) or this handy [Conda cheat sheet](https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf).
+You can find lots more information in the [Conda documentation](https://docs.conda.io/en/latest/) or this handy [Conda cheat sheet](https://docs.conda.io/projects/conda/en/stable/user-guide/cheatsheet.html#cheatsheet).
If you're not a command line user, the Anaconda navigator offers GUI functionality for selecting environments and installing packages.
@@ -134,19 +134,19 @@ Conda is a package and environment management system that allows you to quickly
- [Linux commands](https://cheatography.com/davechild/cheat-sheets/linux-command-line/)
- [Conda documentation](https://docs.conda.io/en/latest/)
-- [Conda cheat sheet](https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf)
+- [Conda cheat sheet](https://docs.conda.io/projects/conda/en/stable/user-guide/cheatsheet.html#cheatsheet)
- [Anaconda](https://docs.anaconda.com/anaconda/install/)
-- [Miniconda](https://docs.conda.io/en/latest/miniconda.html)
+- [Miniconda](https://www.anaconda.com/docs/getting-started/miniconda/main)
## Glossary
:::{glossary}
Conda
: Conda is an open-source, cross-platform, language-agnostic package manager and environment management system that allows you to quickly install, run, and update packages within your work environment(s). To install `conda`, we recommend {term}`miniconda`.
-: See [Conda documentation](https://docs.conda.io/en/latest/) and the [Conda cheat sheet](https://docs.conda.io/projects/conda/en/4.6.0/_downloads/) and @conda-commands in the context of ProjectPythia.
+: See [Conda documentation](https://docs.conda.io/en/latest/) and the [Conda cheat sheet](https://docs.conda.io/projects/conda/en/stable/user-guide/cheatsheet.html#cheatsheet) and @conda-commands in the context of ProjectPythia.
Miniconda
-: [Miniconda](https://docs.conda.io/en/latest/miniconda.html) is a free minimal installer for {term}`conda`. Miniconda only comes with the {term}`conda` package management system; it is a pared-down version of the full Anaconda Python distribution.
+: [Miniconda](https://www.anaconda.com/docs/getting-started/miniconda/main) is a free minimal installer for {term}`conda`. Miniconda only comes with the {term}`conda` package management system; it is a pared-down version of the full Anaconda Python distribution.
: See @installing-conda.
Python Package
diff --git a/foundations/github/basic-git.md b/foundations/github/basic-git.md
index fa2e218fa5..6a54bd2b22 100644
--- a/foundations/github/basic-git.md
+++ b/foundations/github/basic-git.md
@@ -14,13 +14,13 @@
## Prerequisites
-| Concepts | Importance | Notes |
-| ---------------------------------------------------------- | ----------- | ---------------------------- |
-| [What is GitHub?](what-is-github) | Necessary | GitHub user account required |
-| [GitHub Repositories](github-repos) | Necessary | |
-| [Issues and Discussions](github-issues) | Recommended | |
-| [Cloning and Forking a Repository](github-cloning-forking) | Recommended | |
-| [Configuring your GitHub Account](github-setup-advanced) | Recommended | |
+| Concepts | Importance | Notes |
+| ------------------------------------------------------------- | ----------- | ---------------------------- |
+| [What is GitHub?](what-is-github.md) | Necessary | GitHub user account required |
+| [GitHub Repositories](github-repos.md) | Necessary | |
+| [Issues and Discussions](github-issues.md) | Recommended | |
+| [Cloning and Forking a Repository](github-cloning-forking.md) | Recommended | |
+| [Configuring your GitHub Account](github-setup-advanced.md) | Recommended | |
- **Time to learn**: 45 minutes
diff --git a/foundations/github/contribute-to-pythia.md b/foundations/github/contribute-to-pythia.md
index f014f80b0c..b63edbd5cf 100644
--- a/foundations/github/contribute-to-pythia.md
+++ b/foundations/github/contribute-to-pythia.md
@@ -13,17 +13,17 @@
## Prerequisites
-| Concepts | Importance | Notes |
-| --------------------------------------------- | ----------- | ----- |
-| [What is GitHub](what-is-github) | Necessary | |
-| [GitHub Repositories](github-repos) | Necessary | |
-| [Cloning and Forking](github-cloning-forking) | Necessary | |
-| [Basic Version Control with _git_](basic-git) | Necessary | |
-| [Issues and Discussions](github-issues) | Recommended | |
-| [Branches](git-branches) | Necessary | |
-| [Pull Requests](github-pull-request) | Necessary | |
-| [Reviewing Pull Requests](review-pr) | Recommended | |
-| [GitHub Workflows](git-workflow) | Necessary | |
+| Concepts | Importance | Notes |
+| ------------------------------------------------ | ----------- | ----- |
+| [What is GitHub](what-is-github.md) | Necessary | |
+| [GitHub Repositories](github-repos.md) | Necessary | |
+| [Cloning and Forking](github-cloning-forking.md) | Necessary | |
+| [Basic Version Control with _git_](basic-git.md) | Necessary | |
+| [Issues and Discussions](github-issues.md) | Recommended | |
+| [Branches](git-branches.md) | Necessary | |
+| [Pull Requests](github-pull-request.md) | Necessary | |
+| [Reviewing Pull Requests](review-pr.md) | Recommended | |
+| [GitHub Workflows](github-workflows.md) | Necessary | |
- **Time to learn**: 30 minutes
diff --git a/foundations/github/git-branches.md b/foundations/github/git-branches.md
index 3ce79edb8d..33d2e9f7b6 100644
--- a/foundations/github/git-branches.md
+++ b/foundations/github/git-branches.md
@@ -20,14 +20,14 @@ Git "branches" are an important component of many Git and GitHub workflows. If y
## Prerequisites
-| Concepts | Importance | Notes |
-| ---------------------------------------------------------- | ----------- | ---------------------------- |
-| [What is GitHub?](what-is-github) | Necessary | GitHub user account required |
-| [GitHub Repositories](github-repos) | Necessary | |
-| [Issues and Discussions](github-issues) | Recommended | |
-| [Cloning and Forking a Repository](github-cloning-forking) | Necessary | |
-| [Configuring your GitHub Account](github-setup-advanced) | Recommended | |
-| [Basic Version Control with _git_](basic-git) | Necessary | |
+| Concepts | Importance | Notes |
+| ------------------------------------------------------------- | ----------- | ---------------------------- |
+| [What is GitHub?](what-is-github.md) | Necessary | GitHub user account required |
+| [GitHub Repositories](github-repos.md) | Necessary | |
+| [Issues and Discussions](github-issues.md) | Recommended | |
+| [Cloning and Forking a Repository](github-cloning-forking.md) | Necessary | |
+| [Configuring your GitHub Account](github-setup-advanced.md) | Recommended | |
+| [Basic Version Control with _git_](basic-git.md) | Necessary | |
- **Time to learn**: 30 minutes
@@ -43,7 +43,7 @@ These branches can live on your computer (local) or on GitHub (remote). They are
```{admonition} Pull Requests
:class: info
-We will cover [Pull Requests]((github-pull-request)) more in-depthly in the next section.
+We will cover [Pull Requests](github-pull-request.md) more in-depthly in the next section.
```
One rule of thumb is for each development feature to have its own development branch until that feature is ready to be added to the upstream (remote) codebase. This allows you to compartmentalize your Pull Requests so that smaller working changes can be merged upstream independently of one another. For example, you might have a complete or near-complete feature on its own branch with an open Pull Request awaiting review. While you wait for feedback from the team before merging it, you can still work on a second feature on a second branch without affecting your first feature's Pull Request. **We encourage you to always do your work in a designated branch.**
@@ -301,7 +301,7 @@ All in all your Git Branching workflow should resemble this flow:
### What's Next?
-[Opening a Pull Request on GitHub](github-pull-request)
+[Opening a Pull Request on GitHub](github-pull-request.md)
## Resources and references
diff --git a/foundations/github/github-cloning-forking.md b/foundations/github/github-cloning-forking.md
index 2faef96720..38018d684f 100644
--- a/foundations/github/github-cloning-forking.md
+++ b/foundations/github/github-cloning-forking.md
@@ -13,12 +13,12 @@
## Prerequisites
-| Concepts | Importance | Notes |
-| --------------------------------------- | ----------- | ---------------------------- |
-| [What is GitHub?](what-is-github) | Necessary | GitHub user account required |
-| [GitHub Repositories](github-repos) | Necessary | |
-| [Issues and Discussions](github-issues) | Recommended | |
-| Command-line shell | Helpful | |
+| Concepts | Importance | Notes |
+| ------------------------------------------ | ----------- | ---------------------------- |
+| [What is GitHub?](what-is-github.md) | Necessary | GitHub user account required |
+| [GitHub Repositories](github-repos.md) | Necessary | |
+| [Issues and Discussions](github-issues.md) | Recommended | |
+| Command-line shell | Helpful | |
- **Time to learn**: 30 minutes
diff --git a/foundations/github/github-issues.md b/foundations/github/github-issues.md
index 6efa8dc24f..d863e1f3d3 100644
--- a/foundations/github/github-issues.md
+++ b/foundations/github/github-issues.md
@@ -13,10 +13,10 @@
## Prerequisites
-| Concepts | Importance | Notes |
-| ----------------------------------- | ---------- | ----- |
-| [What is GitHub?](what-is-github) | Necessary | |
-| [GitHub Repositories](github-repos) | Necessary | |
+| Concepts | Importance | Notes |
+| -------------------------------------- | ---------- | ----- |
+| [What is GitHub?](what-is-github.md) | Necessary | |
+| [GitHub Repositories](github-repos.md) | Necessary | |
- **Time to learn**: 5 minutes
diff --git a/foundations/github/github-pull-request.md b/foundations/github/github-pull-request.md
index fd938a018a..5e7c15052a 100644
--- a/foundations/github/github-pull-request.md
+++ b/foundations/github/github-pull-request.md
@@ -16,14 +16,14 @@ A Pull Request, aka a "merge request," is an event that occurs when a project co
## Prerequisites
-| Concepts | Importance | Notes |
-| --------------------------------------------- | ----------- | ----- |
-| [What is GitHub](what-is-github) | Necessary | |
-| [GitHub Repositories](github-repos) | Necessary | |
-| [Cloning and Forking](github-cloning-forking) | Necessary | |
-| [Basic Version Control with _git_](basic-git) | Necessary | |
-| [Issues and Discussions](github-issues) | Recommended | |
-| [Branches](git-branches) | Necessary | |
+| Concepts | Importance | Notes |
+| ------------------------------------------------ | ----------- | ----- |
+| [What is GitHub](what-is-github.md) | Necessary | |
+| [GitHub Repositories](github-repos.md) | Necessary | |
+| [Cloning and Forking](github-cloning-forking.md) | Necessary | |
+| [Basic Version Control with _git_](basic-git.md) | Necessary | |
+| [Issues and Discussions](github-issues.md) | Recommended | |
+| [Branches](git-branches.md) | Necessary | |
- **Time to learn**: 60 minutes
@@ -70,7 +70,7 @@ closes the PR.
## Opening a Pull Request
-The demonstration is a continuation from the [GitHub Branches chapter](github-branches). Here, we will move from your local terminal to GitHub.
+The demonstration is a continuation from the [Git Branches chapter](git-branches.md). Here, we will move from your local terminal to GitHub.
### Navigate to Your Fork
@@ -148,7 +148,7 @@ The steps leading up to creating your PR depend on your workflow. The main diffe
the contributor now, for the Feature Workflow, navigates to the upstream, remote
repository, not a personal remote fork, and initiates the PR there.
-We will cover [GitHub Workflows](github-workflows) in greater detail in the next chapter.
+We will cover [GitHub Workflows](github-workflows.md) in greater detail in the next chapter.
---
@@ -162,7 +162,7 @@ We will cover [GitHub Workflows](github-workflows) in greater detail in the next
### What's Next?
-In the next lesson we will learn more about [Reviewing Pull Requests](review-pr).
+In the next lesson we will learn more about [Reviewing Pull Requests](review-pr.md).
## References
diff --git a/foundations/github/github-setup-advanced.md b/foundations/github/github-setup-advanced.md
index bf66189f60..e93e8e7eb6 100644
--- a/foundations/github/github-setup-advanced.md
+++ b/foundations/github/github-setup-advanced.md
@@ -12,12 +12,12 @@
## Prerequisites
-| Concepts | Importance | Notes |
-| ---------------------------------------------------------- | ----------- | ---------------------------- |
-| [What is GitHub?](what-is-github) | Necessary | GitHub user account required |
-| [GitHub Repositories](github-repos) | Necessary | |
-| [Issues and Discussions](github-issues) | Recommended | |
-| [Cloning and Forking a Repository](github-cloning-forking) | Recommended | |
+| Concepts | Importance | Notes |
+| ------------------------------------------------------------- | ----------- | ---------------------------- |
+| [What is GitHub?](what-is-github.md) | Necessary | GitHub user account required |
+| [GitHub Repositories](github-repos.md) | Necessary | |
+| [Issues and Discussions](github-issues.md) | Recommended | |
+| [Cloning and Forking a Repository](github-cloning-forking.md) | Recommended | |
- **Time to learn**: 35 minutes
@@ -124,7 +124,7 @@ You will then receive email at the address you used when you signed up for GitHu
---
-You can stop watching that repo by just clicking on the now-labeled _Unwatch_ link again, and choosing _Participating and @mentions_ to toggle it back to _Unwatch_.
+You can stop watching that repo by just clicking on the now-labeled _Unwatch_ link again, and choosing _Participating and \@mentions_ to toggle it back to _Unwatch_.
## Stop spamming me, GitHub!
diff --git a/foundations/github/github-workflows.md b/foundations/github/github-workflows.md
index 1cabd5470f..93e3e9d5b7 100644
--- a/foundations/github/github-workflows.md
+++ b/foundations/github/github-workflows.md
@@ -15,16 +15,16 @@ A workflow is a series of activities or tasks that must be completed sequentiall
## Prerequisites
-| Concepts | Importance | Notes |
-| --------------------------------------------- | ----------- | ----- |
-| [What is GitHub](what-is-github) | Necessary | |
-| [GitHub Repositories](github-repos) | Necessary | |
-| [Cloning and Forking](github-cloning-forking) | Necessary | |
-| [Basic Version Control with _git_](basic-git) | Necessary | |
-| [Issues and Discussions](github-issues) | Recommended | |
-| [Branches](git-branches) | Necessary | |
-| [Pull Requests](github-pull-request) | Necessary | |
-| [Reviewing Pull Requests](review-pr) | Recommended | |
+| Concepts | Importance | Notes |
+| ------------------------------------------------ | ----------- | ----- |
+| [What is GitHub](what-is-github.md) | Necessary | |
+| [GitHub Repositories](github-repos.md) | Necessary | |
+| [Cloning and Forking](github-cloning-forking.md) | Necessary | |
+| [Basic Version Control with _git_](basic-git.md) | Necessary | |
+| [Issues and Discussions](github-issues.md) | Recommended | |
+| [Branches](git-branches.md) | Necessary | |
+| [Pull Requests](github-pull-request.md) | Necessary | |
+| [Reviewing Pull Requests](review-pr.md) | Recommended | |
- **Time to learn**: 60 minutes
@@ -118,7 +118,7 @@ then pushed to the remote using the same processes they used with
the initial push. Once reviewers are satisfied with the changes, a
project maintainer can merge the feature branch with `main`.
-##### Cloning the remote repository
+#### Cloning the remote repository
If you don’t have a local copy of the remote repository, you’ll want
to create one by [cloning the
@@ -148,7 +148,7 @@ Note, we did not specify a `local-directory_name` here, so git will
use the `base name` of the `repository_url`, "github-sandbox" as
the local directory.
-##### Start with the main branch
+#### Start with the main branch
Continuing with our example above, make sure you are on the main
branch and that it is up to date with the remote repository main:
@@ -166,9 +166,9 @@ Already on 'main'
Already up to date.
```
-Remember you can read more about [GitHub branches](github-branches) in our previous chapter.
+Remember you can read more about [Git branches](git-branches.md) in our previous chapter.
-##### Create a new branch
+#### Create a new branch
Create a separate branch for every new capability you work on:
@@ -185,7 +185,7 @@ not in `main`. The output should look something like:
Switched to a new branch 'my-new-feature'
```
-##### Make changes and commit
+#### Make changes and commit
Next, we'll make changes and commit them to the `my-new-feature branch` in
the local git repository.
@@ -245,7 +245,7 @@ After a successful commit you should see a message like:
1 file changed, 1 insertion(+)
```
-##### Push the feature branch to the remote repository
+#### Push the feature branch to the remote repository
After running `git commit` your changes have been captured in your
local repository. But most likely only you can see them, and if
@@ -287,7 +287,7 @@ is a simple solution: create a GitHub repository owned by you. The
GitHub Quickstart guide provides an excellent [tutorial](https://docs.github.com/en/get-started/quickstart/create-a-repo) on how to
do this.
-##### Making a Pull Request
+#### Making a Pull Request
Finally, after cloning a remote repository, creating a feature
branch, making your changes, committing them to your local repository,
@@ -309,7 +309,7 @@ That’s it! You’re done! Sit back and wait for comments from reviewers.
If changes are requested, simply repeat the steps above. Once your
PR is merged you’ll receive notification from GitHub.
-##### Safety tip on synchronization
+#### Safety tip on synchronization
Over time your local repository will diverge from the remote. Before
starting on a new feature, or if the `main` branch on remote may have
@@ -416,8 +416,8 @@ git remote -v
This should produce an output that looks similar to the following:
-origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
-origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
+`origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)`
+`origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)`
Next, specify a new remote upstream repository that will be synced with the fork.
diff --git a/foundations/github/review-pr.md b/foundations/github/review-pr.md
index 25416210be..80e54526b1 100644
--- a/foundations/github/review-pr.md
+++ b/foundations/github/review-pr.md
@@ -19,15 +19,15 @@ This tutorial covers the following topics:
## Prerequisites
-| Concepts | Importance | Notes |
-| --------------------------------------------- | ----------- | ----- |
-| [What is GitHub](what-is-github) | Necessary | |
-| [GitHub Repositories](github-repos) | Necessary | |
-| [Cloning and Forking](github-cloning-forking) | Necessary | |
-| [Basic Version Control with _git_](basic-git) | Necessary | |
-| [Issues and Discussions](github-issues) | Recommended | |
-| [Branches](git-branches) | Necessary | |
-| [Pull Requests](github-pull-request) | Necessary | |
+| Concepts | Importance | Notes |
+| ------------------------------------------------ | ----------- | ----- |
+| [What is GitHub](what-is-github.md) | Necessary | |
+| [GitHub Repositories](github-repos.md) | Necessary | |
+| [Cloning and Forking](github-cloning-forking.md) | Necessary | |
+| [Basic Version Control with _git_](basic-git.md) | Necessary | |
+| [Issues and Discussions](github-issues.md) | Recommended | |
+| [Branches](git-branches.md) | Necessary | |
+| [Pull Requests](github-pull-request.md) | Necessary | |
- **Time to learn**: 30 minutes
@@ -118,7 +118,7 @@ There are specific elements of PRs that are more commonly prioritized during a r
### What's Next?
-The next tutorial will cover standards and other details about [GitHub Workflows](github-workflows).
+The next tutorial will cover standards and other details about [GitHub Workflows](github-workflows.md).
## Resources and References
diff --git a/foundations/jupyterlab.ipynb b/foundations/jupyterlab.ipynb
index c201802cc3..6d26e6187d 100644
--- a/foundations/jupyterlab.ipynb
+++ b/foundations/jupyterlab.ipynb
@@ -345,7 +345,7 @@
"Now, with the next cell selected (i.e., the blue bar appears to the left of the cell), whether in edit or command mode, go up to the “cell type” dropdown menu above and select “Markdown”.\n",
"Notice that the `[ ]` label goes away.\n",
"\n",
- "Markdown is a markup language that allows you to format text in a plain-text editor. Here we will demonstrate some common Markdown syntax. You can learn more at [the Markdown Guide site](https://www.markdownguide.org/) or in our [Getting Started with Jupyter: Markdown](https://foundations.projectpythia.org/foundations/markdown.html) content.\n",
+ "Markdown is a markup language that allows you to format text in a plain-text editor. Here we will demonstrate some common Markdown syntax. You can learn more at [the Markdown Guide site](https://www.markdownguide.org/) or in our [Getting Started with Jupyter: Markdown](markdown.md) content.\n",
"Click on the cell and enter edit mode; we can now type in some markdown text like so:\n",
"\n",
"```markdown\n",
diff --git a/foundations/quickstart.ipynb b/foundations/quickstart.ipynb
index c50c29106e..d2468ff2dc 100644
--- a/foundations/quickstart.ipynb
+++ b/foundations/quickstart.ipynb
@@ -29,7 +29,7 @@
"\n",
"- Find the **\"Rocket Ship\"** icon, **located near the top-right of this page**. Click on it to open a text box.\n",
"- Enter the Pythia Binder link `https://binder.projectpythia.org/`, and click **Launch**.\n",
- "- This page will open up as a [Jupyter notebook](jupyter.html) in a working Python environment in the cloud.\n",
+ "- This page will open up as a [Jupyter notebook](jupyter.md) in a working Python environment in the cloud.\n",
"- Press Shift+Enter to execute each code cell\n",
"- Feel free to make changes and play around!"
]
diff --git a/myst.yml b/myst.yml
index 523792929f..d1d6406782 100644
--- a/myst.yml
+++ b/myst.yml
@@ -5,7 +5,7 @@ extends:
project:
title: Pythia Foundations
github: https://github.com/projectpythia/pythia-foundations
- bibtex_bibfiles:
+ bibliography:
- references.bib
author:
- Project Pythia Community
@@ -14,6 +14,8 @@ project:
binder:
url: https://binder.projectpythia.org
repo: projectpythia/pythia-foundations
+ settings:
+ output_matplotlib_strings: remove
abbreviations:
FOSS: Free and open-source software
VCS: Version control system
diff --git a/preamble/how-to-use.md b/preamble/how-to-use.md
index e58749834b..ac7163446e 100644
--- a/preamble/how-to-use.md
+++ b/preamble/how-to-use.md
@@ -46,7 +46,7 @@ of the Scientific Python Ecosystem.
All of the content in Pythia Foundations is authored in Markdown
and presented in the form of [Jupyter
-Notebook](https://jupyterbook.org/intro.html) “chapters”. The power
+Notebook](https://jupyter.org) “chapters”. The power
of Jupyter Notebooks is that they can contain both static text and
executable code that you can interact with. When you navigate to a
book chapter such as [Matplotlib