diff --git a/.github/workflows/python-request.yml b/.github/workflows/python-request.yml
index fd0c89d6..95bad2dc 100644
--- a/.github/workflows/python-request.yml
+++ b/.github/workflows/python-request.yml
@@ -1,7 +1,7 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
-name: Python on pull request
+name: pytest Build
on:
pull_request:
@@ -32,7 +32,7 @@ jobs:
with:
lfs: true
- name: Set up pixi environment
- uses: prefix-dev/setup-pixi@v0.9.1
+ uses: prefix-dev/setup-pixi@v0.9.6
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
diff --git a/.github/workflows/sphinx-build.yml b/.github/workflows/sphinx-build.yml
new file mode 100644
index 00000000..966a94a8
--- /dev/null
+++ b/.github/workflows/sphinx-build.yml
@@ -0,0 +1,39 @@
+name: "Sphinx Build"
+
+on:
+ pull_request:
+ paths:
+ - gravity_toolkit/**
+ - doc/**
+ - .github/workflows/sphinx-build.yml
+ types: [opened, synchronize, reopened, ready_for_review]
+
+# set permissions for the workflow
+permissions:
+ contents: read
+ pull-requests: write
+
+jobs:
+ docs:
+ if: github.event.pull_request.draft == false
+ runs-on: ubuntu-latest
+ env:
+ SPHINXOPTS: "--fail-on-warning --fresh-env --keep-going --warning-file=sphinx.log"
+ defaults:
+ run:
+ shell: bash -l {0}
+
+ steps:
+ - uses: actions/checkout@v6
+ - name: Set up pixi environment
+ uses: prefix-dev/setup-pixi@v0.9.6
+ - name: Compile Sphinx Documentation
+ run: |
+ # run a build of the documentation
+ pixi run --environment=dev docs
+ - name: Archive Sphinx Warnings
+ if: github.event.pull_request.head.repo.full_name == github.repository
+ uses: actions/upload-artifact@v6
+ with:
+ name: sphinx-log
+ path: doc/sphinx.log
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..925f89b6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,184 @@
+# gravity-toolkit
+
+Python tools for obtaining and working with Level-2 spherical harmonic coefficients from the NASA/DLR Gravity Recovery and Climate Experiment (GRACE) and the NASA/GFZ Gravity Recovery and Climate Experiment Follow-On (GRACE-FO) missions
+
+## About
+
+
+
+ | Version: |
+
+
+
+
+ |
+
+
+ | Citation: |
+
+
+ |
+
+
+ | Tests: |
+
+
+
+ |
+
+
+ | Data: |
+
+
+
+ |
+
+
+ | License: |
+
+
+ |
+
+
+
+For more information: see the documentation at [gravity-toolkit.readthedocs.io](https://gravity-toolkit.readthedocs.io/)
+
+## Installation
+
+From PyPI:
+
+```bash
+python3 -m pip install gravity-toolkit
+```
+
+To include all optional dependencies:
+
+```bash
+python3 -m pip install gravity-toolkit[all]
+```
+
+Using `conda` or `mamba` from conda-forge:
+
+```bash
+conda install -c conda-forge gravity-toolkit
+```
+
+```bash
+mamba install -c conda-forge gravity-toolkit
+```
+
+Development version from GitHub:
+
+```bash
+python3 -m pip install git+https://github.com/tsutterley/gravity-toolkit.git
+```
+
+### Running with Pixi
+
+Alternatively, you can use [Pixi](https://pixi.sh/) for a streamlined workspace environment:
+
+1. Install Pixi following the [installation instructions](https://pixi.sh/latest/#installation)
+2. Clone the project repository:
+
+```bash
+git clone https://github.com/tsutterley/gravity-toolkit.git
+```
+
+3. Move into the `gravity-toolkit` directory
+
+```bash
+cd gravity-toolkit
+```
+
+4. Install dependencies and start JupyterLab:
+
+```bash
+pixi run start
+```
+
+This will automatically create the environment, install all dependencies, and launch JupyterLab in the [notebooks](./doc/source/notebooks/) directory.
+
+## Resources
+
+- [NASA GRACE mission site](https://www.nasa.gov/mission_pages/Grace/index.html)
+- [NASA GRACE-FO mission site](https://www.nasa.gov/missions/grace-fo)
+- [JPL GRACE Tellus site](https://grace.jpl.nasa.gov/)
+- [JPL GRACE-FO site](https://gracefo.jpl.nasa.gov/)
+- [UTCSR GRACE site](http://www.csr.utexas.edu/grace/)
+- [GRACE at the NASA Physical Oceanography Distributed Active Archive Center (PO.DAAC)](https://podaac.jpl.nasa.gov/grace)
+- [GRACE at the GFZ Information System and Data Center](http://isdc.gfz-potsdam.de/grace-isdc/)
+
+## Dependencies
+
+- [boto3: Amazon Web Services (AWS) SDK for Python](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+- [future: Compatibility layer between Python 2 and Python 3](https://python-future.org/)
+- [lxml: processing XML and HTML in Python](https://pypi.python.org/pypi/lxml)
+- [matplotlib: Python 2D plotting library](https://matplotlib.org/)
+- [netCDF4: Python interface to the netCDF C library](https://unidata.github.io/netcdf4-python/)
+- [numpy: Scientific Computing Tools For Python](https://www.numpy.org)
+- [platformdirs: Python module for determining platform-specific directories](https://pypi.org/project/platformdirs/)
+- [python-dateutil: powerful extensions to datetime](https://dateutil.readthedocs.io/en/stable/)
+- [PyYAML: YAML parser and emitter for Python](https://github.com/yaml/pyyaml)
+- [scipy: Scientific Tools for Python](https://docs.scipy.org/doc/)
+
+## Download
+
+The program homepage is:
+
+
+A zip archive of the latest version is available directly at:
+
+
+## Disclaimer
+
+This package includes software developed at the University of California at Irvine (UCI), the NASA Jet Propulsion Laboratory (JPL), NASA Goddard Space Flight Center (GSFC) and the University of Washington Applied Physics Laboratory (UW-APL).
+This program is not sponsored or maintained by the Universities Space Research Association (USRA),
+the Center for Space Research at the University of Texas (UTCSR), the Jet Propulsion Laboratory (JPL),
+the German Research Centre for Geosciences (GeoForschungsZentrum, GFZ) or NASA.
+The software is provided here for your convenience but *with no guarantees whatsoever*.
+
+## Contributing
+
+This project contains work and contributions from the [scientific community](./CONTRIBUTORS.md).
+If you would like to contribute to the project, please have a look at the [contribution guidelines](./doc/source/getting_started/Contributing.rst), [open issues](https://github.com/tsutterley/gravity-toolkit/issues) and [discussions board](https://github.com/tsutterley/gravity-toolkit/discussions).
+
+## References
+
+> T. C. Sutterley, I. Velicogna, and C.-W. Hsu,
+> "Self-Consistent Ice Mass Balance and Regional Sea Level From Time-Variable Gravity",
+> *Earth and Space Science*, 7, (2020).
+> [doi: 10.1029/2019EA000860](https://doi.org/10.1029/2019EA000860)
+>
+> T. C. Sutterley and I. Velicogna,
+> "Improved estimates of geocenter variability from time-variable gravity and ocean model outputs",
+> *Remote Sensing*, 11(18), 2108, (2019).
+> [doi: 10.3390/rs11182108](https://doi.org/10.3390/rs11182108)
+>
+> J. Wahr, S. C. Swenson, and I. Velicogna,
+> "Accuracy of GRACE mass estimates",
+> *Geophysical Research Letters*, 33(6), L06401, (2006).
+> [doi: 10.1029/2005GL025305](https://doi.org/10.1029/2005GL025305)
+>
+> J. Wahr, M. Molenaar, and F. Bryan,
+> "Time variability of the Earth's gravity field: Hydrological and oceanic effects and their possible > detection using GRACE",
+> *Journal of Geophysical Research: Solid Earth*, 103(B12), (1998).
+> [doi: 10.1029/98JB02844](https://doi.org/10.1029/98JB02844)
+>
+> D. Han and J. Wahr,
+> "The viscoelastic relaxation of a realistically stratified earth, and a further analysis of postglacial rebound",
+> *Geophysical Journal International*, 120(2), (1995).
+> [doi: 10.1111/j.1365-246X.1995.tb01819.x](https://doi.org/10.1111/j.1365-246X.1995.tb01819.x)
+
+## Data Repositories
+
+> T. C. Sutterley, I. Velicogna, and C.-W. Hsu,
+> "Ice Mass and Regional Sea Level Estimates from Time-Variable Gravity", (2020).
+> [doi: 10.6084/m9.figshare.9702338](https://doi.org/10.6084/m9.figshare.9702338)
+>
+> T. C. Sutterley and I. Velicogna,
+> "Geocenter Estimates from Time-Variable Gravity and Ocean Model Outputs", (2019).
+> [doi: 10.6084/m9.figshare.7388540](https://doi.org/10.6084/m9.figshare.7388540)
+
+## License
+
+The content of this project is licensed under the [Creative Commons Attribution 4.0 Attribution license](https://creativecommons.org/licenses/by/4.0/) and the source code is licensed under the [MIT license](LICENSE).
diff --git a/README.rst b/README.rst
deleted file mode 100644
index 558ea905..00000000
--- a/README.rst
+++ /dev/null
@@ -1,114 +0,0 @@
-===============
-gravity-toolkit
-===============
-
-|License|
-|Documentation Status|
-|PyPI|
-|conda-forge|
-|commits-since|
-|zenodo|
-
-.. |License| image:: https://img.shields.io/github/license/tsutterley/gravity-toolkit
- :target: https://github.com/tsutterley/gravity-toolkit/blob/main/LICENSE
-
-.. |Documentation Status| image:: https://readthedocs.org/projects/gravity-toolkit/badge/?version=latest
- :target: https://gravity-toolkit.readthedocs.io/en/latest/?badge=latest
-
-.. |PyPI| image:: https://img.shields.io/pypi/v/gravity-toolkit.svg
- :target: https://pypi.python.org/pypi/gravity-toolkit/
-
-.. |conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/gravity-toolkit
- :target: https://anaconda.org/conda-forge/gravity-toolkit
-
-.. |commits-since| image:: https://img.shields.io/github/commits-since/tsutterley/gravity-toolkit/latest
- :target: https://github.com/tsutterley/gravity-toolkit/releases/latest
-
-.. |zenodo| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.5156864.svg
- :target: https://doi.org/10.5281/zenodo.5156864
-
-Python tools for obtaining and working with Level-2 spherical harmonic coefficients from the NASA/DLR Gravity Recovery and Climate Experiment (GRACE) and the NASA/GFZ Gravity Recovery and Climate Experiment Follow-On (GRACE-FO) missions
-
-Resources
-#########
-
-- `NASA GRACE mission site `_
-- `NASA GRACE-FO mission site `_
-- `JPL GRACE Tellus site `_
-- `JPL GRACE-FO site `_
-- `UTCSR GRACE site `_
-- `GRACE at the NASA Physical Oceanography Distributed Active Archive Center (PO.DAAC) `_
-- `GRACE at the GFZ Information System and Data Center `_
-
-Dependencies
-############
-
-- `numpy: Scientific Computing Tools For Python `_
-- `scipy: Scientific Tools for Python `_
-- `dateutil: powerful extensions to datetime `_
-- `PyYAML: YAML parser and emitter for Python `_
-- `lxml: processing XML and HTML in Python `_
-- `future: Compatibility layer between Python 2 and Python 3 `_
-- `matplotlib: Python 2D plotting library `_
-- `cartopy: Python package designed for geospatial data processing `_
-- `netCDF4: Python interface to the netCDF C library `_
-- `h5py: Python interface for Hierarchal Data Format 5 (HDF5) `_
-- `geoid-toolkit: Python utilities for calculating geoid heights from static gravity field coefficients `_
-
-References
-##########
-
- T. C. Sutterley, I. Velicogna, and C.-W. Hsu, "Self-Consistent Ice Mass Balance
- and Regional Sea Level From Time-Variable Gravity", *Earth and Space Science*, 7,
- (2020). `doi: 10.1029/2019EA000860 `_
-
- T. C. Sutterley and I. Velicogna, "Improved estimates of geocenter variability
- from time-variable gravity and ocean model outputs", *Remote Sensing*, 11(18),
- 2108, (2019). `doi: 10.3390/rs11182108 `_
-
- J. Wahr, S. C. Swenson, and I. Velicogna, "Accuracy of GRACE mass estimates",
- *Geophysical Research Letters*, 33(6), L06401, (2006).
- `doi: 10.1029/2005GL025305 `_
-
- J. Wahr, M. Molenaar, and F. Bryan, "Time variability of the Earth's gravity
- field: Hydrological and oceanic effects and their possible detection using
- GRACE", *Journal of Geophysical Research: Solid Earth*, 103(B12), (1998).
- `doi: 10.1029/98JB02844 `_
-
- D. Han and J. Wahr, "The viscoelastic relaxation of a realistically stratified
- earth, and a further analysis of postglacial rebound", *Geophysical Journal
- International*, 120(2), (1995).
- `doi: 10.1111/j.1365-246X.1995.tb01819.x `_
-
-Data Repositories
-#################
-
- T. C. Sutterley, I. Velicogna, and C.-W. Hsu, "Ice Mass and Regional Sea Level
- Estimates from Time-Variable Gravity", (2020).
- `doi: 10.6084/m9.figshare.9702338 `_
-
- T. C. Sutterley and I. Velicogna, "Geocenter Estimates from Time-Variable
- Gravity and Ocean Model Outputs", (2019).
- `doi: 10.6084/m9.figshare.7388540 `_
-
-Download
-########
-
-| The program homepage is:
-| https://github.com/tsutterley/gravity-toolkit
-| A zip archive of the latest version is available directly at:
-| https://github.com/tsutterley/gravity-toolkit/archive/main.zip
-
-Disclaimer
-##########
-
-This project contains work and contributions from the `scientific community <./CONTRIBUTORS.md>`_.
-This program is not sponsored or maintained by the Universities Space Research Association (USRA),
-the Center for Space Research at the University of Texas (UTCSR), the Jet Propulsion Laboratory (JPL),
-the German Research Centre for Geosciences (GeoForschungsZentrum, GFZ) or NASA.
-It is provided here for your convenience but *with no guarantees whatsoever*.
-
-License
-#######
-
-The content of this project is licensed under the `Creative Commons Attribution 4.0 Attribution license `_ and the source code is licensed under the `MIT license `_.
diff --git a/access/cnes_grace_sync.py b/access/cnes_grace_sync.py
index 00232e12..38dc654c 100755
--- a/access/cnes_grace_sync.py
+++ b/access/cnes_grace_sync.py
@@ -293,7 +293,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# GRACE/GRACE-FO data release
parser.add_argument('--release','-r',
diff --git a/access/esa_costg_swarm_sync.py b/access/esa_costg_swarm_sync.py
index 2f9a696e..07209153 100644
--- a/access/esa_costg_swarm_sync.py
+++ b/access/esa_costg_swarm_sync.py
@@ -221,7 +221,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# data release
parser.add_argument('--release','-r',
diff --git a/access/gfz_icgem_costg_ftp.py b/access/gfz_icgem_costg_ftp.py
index 9b7b0e89..15e75880 100644
--- a/access/gfz_icgem_costg_ftp.py
+++ b/access/gfz_icgem_costg_ftp.py
@@ -230,7 +230,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# mission (GRACE, GRACE Follow-On or Swarm)
choices = ['Grace','Grace-FO','Swarm']
diff --git a/access/gfz_isdc_dealiasing_sync.py b/access/gfz_isdc_dealiasing_sync.py
index f51f9b78..32f23424 100644
--- a/access/gfz_isdc_dealiasing_sync.py
+++ b/access/gfz_isdc_dealiasing_sync.py
@@ -280,7 +280,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# GRACE/GRACE-FO data release
parser.add_argument('--release','-r',
diff --git a/access/gfz_isdc_grace_sync.py b/access/gfz_isdc_grace_sync.py
index b641e5aa..f8f7e618 100644
--- a/access/gfz_isdc_grace_sync.py
+++ b/access/gfz_isdc_grace_sync.py
@@ -403,7 +403,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# GRACE/GRACE-FO processing center
parser.add_argument('--center','-c',
diff --git a/access/itsg_graz_grace_sync.py b/access/itsg_graz_grace_sync.py
index c765a4cd..66dfa277 100755
--- a/access/itsg_graz_grace_sync.py
+++ b/access/itsg_graz_grace_sync.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
u"""
itsg_graz_grace_sync.py
-Written by Tyler Sutterley (05/2023)
+Written by Tyler Sutterley (07/2026)
Syncs GRACE/GRACE-FO and auxiliary data from the ITSG GRAZ server
CALLING SEQUENCE:
@@ -39,6 +39,7 @@
utilities.py: download and management utilities for syncing files
UPDATE HISTORY:
+ Updated 07/2026: ITSG GRACE server moved from outgoing to pub
Updated 05/2023: use pathlib to define and operate on paths
Updated 12/2022: single implicit import of gravity toolkit
Updated 11/2022: use f-strings for formatting verbose or ascii output
@@ -82,7 +83,7 @@ def itsg_graz_grace_sync(DIRECTORY, RELEASE=None, LMAX=None, TIMEOUT=0,
logging.basicConfig(level=logging.INFO)
# ITSG GRAZ server
- HOST = ['http://ftp.tugraz.at','outgoing','ITSG','GRACE']
+ HOST = ['http://ftp.tugraz.at','pub','ITSG','GRACE']
# open connection with ITSG GRAZ server at remote directory
release_directory = f'ITSG-{RELEASE}'
# regular expression operators for ITSG data and models
@@ -223,7 +224,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# ITSG GRAZ releases
choices = ['Grace2014','Grace2016','Grace2018','Grace_operational']
diff --git a/access/podaac_cumulus.py b/access/podaac_cumulus.py
index dcae0784..d448850a 100644
--- a/access/podaac_cumulus.py
+++ b/access/podaac_cumulus.py
@@ -399,7 +399,8 @@ def arguments():
help='Path to .netrc file for authentication')
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# GRACE/GRACE-FO processing center
parser.add_argument('--center','-c',
diff --git a/dealiasing/aod1b_geocenter.py b/dealiasing/aod1b_geocenter.py
index f763322a..0d3e6399 100644
--- a/dealiasing/aod1b_geocenter.py
+++ b/dealiasing/aod1b_geocenter.py
@@ -259,7 +259,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# GRACE/GRACE-FO data release
parser.add_argument('--release','-r',
diff --git a/dealiasing/aod1b_oblateness.py b/dealiasing/aod1b_oblateness.py
index 047d2cac..9c9313db 100644
--- a/dealiasing/aod1b_oblateness.py
+++ b/dealiasing/aod1b_oblateness.py
@@ -251,7 +251,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# GRACE/GRACE-FO data release
parser.add_argument('--release','-r',
diff --git a/dealiasing/dealiasing_global_uplift.py b/dealiasing/dealiasing_global_uplift.py
index fd6fa239..3fc366fd 100644
--- a/dealiasing/dealiasing_global_uplift.py
+++ b/dealiasing/dealiasing_global_uplift.py
@@ -239,7 +239,7 @@ def dealiasing_global_uplift(base_dir,
attributes['time']['standard_name'] = 'time'
# Computing plms for converting to spatial domain
- theta = (90.0 - grid.lat)*np.pi/180.0
+ theta = np.radians(90.0 - grid.lat)
PLM, dPLM = gravtk.plm_holmes(LMAX, np.cos(theta))
# for each tar file
@@ -414,10 +414,12 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
parser.add_argument('--output-directory','-O',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Output directory for spatial files')
# GRACE/GRACE-FO data release
parser.add_argument('--release','-r',
diff --git a/dealiasing/dealiasing_monthly_mean.py b/dealiasing/dealiasing_monthly_mean.py
index d5976757..e07b6a17 100755
--- a/dealiasing/dealiasing_monthly_mean.py
+++ b/dealiasing/dealiasing_monthly_mean.py
@@ -707,7 +707,8 @@ def arguments():
# command line parameters
# working data directory
parser.add_argument('--directory','-D',
- type=pathlib.Path, default=pathlib.Path.cwd(),
+ type=pathlib.Path,
+ default=gravtk.utilities.get_cache_path(ensure_exists=False),
help='Working data directory')
# Data processing center or satellite mission
parser.add_argument('--center','-c',
diff --git a/doc/source/_assets/geoid_height.svg b/doc/source/_assets/geoid_height.svg
index d8cc9ee7..997e42da 100644
--- a/doc/source/_assets/geoid_height.svg
+++ b/doc/source/_assets/geoid_height.svg
@@ -60,7 +60,7 @@
Geoid
`_
- Creates an index file for each data product
diff --git a/doc/source/api_reference/access/esa_costg_swarm_sync.rst b/doc/source/api_reference/access/esa_costg_swarm_sync.rst
index eef1663b..f2ac4918 100644
--- a/doc/source/api_reference/access/esa_costg_swarm_sync.rst
+++ b/doc/source/api_reference/access/esa_costg_swarm_sync.rst
@@ -1,6 +1,6 @@
-=======================
-esa_costg_swarm_sync.py
-=======================
+===========================
+``esa_costg_swarm_sync.py``
+===========================
- Syncs Swarm gravity field products from the `ESA Swarm Science Server `_
- Creates an index file for each data product
diff --git a/doc/source/api_reference/access/gfz_icgem_costg_ftp.rst b/doc/source/api_reference/access/gfz_icgem_costg_ftp.rst
index 6dd2edaa..47bfb931 100644
--- a/doc/source/api_reference/access/gfz_icgem_costg_ftp.rst
+++ b/doc/source/api_reference/access/gfz_icgem_costg_ftp.rst
@@ -1,6 +1,6 @@
-======================
-gfz_icgem_costg_ftp.py
-======================
+==========================
+``gfz_icgem_costg_ftp.py``
+==========================
- Syncs GRACE/GRACE-FO/Swarm COST-G data from the `GFZ International Centre for Global Earth Models (ICGEM) `_
- Creates an index file for each data product
diff --git a/doc/source/api_reference/access/gfz_isdc_dealiasing_sync.rst b/doc/source/api_reference/access/gfz_isdc_dealiasing_sync.rst
index da1867d6..dbcbe802 100644
--- a/doc/source/api_reference/access/gfz_isdc_dealiasing_sync.rst
+++ b/doc/source/api_reference/access/gfz_isdc_dealiasing_sync.rst
@@ -1,6 +1,6 @@
-===========================
-gfz_isdc_dealiasing_sync.py
-===========================
+===============================
+``gfz_isdc_dealiasing_sync.py``
+===============================
- Syncs GRACE Level-1b dealiasing products from the `GFZ Information System and Data Center (ISDC) `_
- Optionally outputs as monthly tar files
diff --git a/doc/source/api_reference/access/gfz_isdc_grace_sync.rst b/doc/source/api_reference/access/gfz_isdc_grace_sync.rst
index 303391fa..ac1e543a 100644
--- a/doc/source/api_reference/access/gfz_isdc_grace_sync.rst
+++ b/doc/source/api_reference/access/gfz_isdc_grace_sync.rst
@@ -1,6 +1,6 @@
-======================
-gfz_isdc_grace_sync.py
-======================
+==========================
+``gfz_isdc_grace_sync.py``
+==========================
- Syncs GRACE/GRACE-FO and auxiliary data from the `GFZ Information System and Data Center (ISDC) `_
- Syncs CSR/GFZ/JPL Level-2 spherical harmonic files
diff --git a/doc/source/api_reference/access/itsg_graz_grace_sync.rst b/doc/source/api_reference/access/itsg_graz_grace_sync.rst
index 65fcfd9a..fac46cb5 100644
--- a/doc/source/api_reference/access/itsg_graz_grace_sync.rst
+++ b/doc/source/api_reference/access/itsg_graz_grace_sync.rst
@@ -1,6 +1,6 @@
-=======================
-itsg_graz_grace_sync.py
-=======================
+===========================
+``itsg_graz_grace_sync.py``
+===========================
- Syncs GRACE/GRACE-FO and auxiliary data from the `ITSG GRAZ server `_
- Creates an index file for each data product
diff --git a/doc/source/api_reference/access/podaac_cumulus.rst b/doc/source/api_reference/access/podaac_cumulus.rst
index 274b5f56..095abbb5 100644
--- a/doc/source/api_reference/access/podaac_cumulus.rst
+++ b/doc/source/api_reference/access/podaac_cumulus.rst
@@ -1,6 +1,6 @@
-=================
-podaac_cumulus.py
-=================
+=====================
+``podaac_cumulus.py``
+=====================
- Syncs GRACE/GRACE-FO data from `NASA JPL PO.DAAC Cumulus AWS S3 bucket `_
- S3 Cumulus syncs are only available in AWS instances in ``us-west-2``
diff --git a/doc/source/api_reference/associated_legendre.rst b/doc/source/api_reference/associated_legendre.rst
index d198e54e..d608c7ba 100644
--- a/doc/source/api_reference/associated_legendre.rst
+++ b/doc/source/api_reference/associated_legendre.rst
@@ -1,6 +1,6 @@
-===================
-associated_legendre
-===================
+=======================
+``associated_legendre``
+=======================
- Computes fully-normalized associated Legendre Polynomials and their first derivative for a vector of ``x`` values
diff --git a/doc/source/api_reference/clenshaw_summation.rst b/doc/source/api_reference/clenshaw_summation.rst
index e6ff5c99..7acb2bf4 100644
--- a/doc/source/api_reference/clenshaw_summation.rst
+++ b/doc/source/api_reference/clenshaw_summation.rst
@@ -1,6 +1,6 @@
-==================
-clenshaw_summation
-==================
+======================
+``clenshaw_summation``
+======================
- Returns the spatial field for a series of spherical harmonics at a sequence of ungridded points
- Uses a Clenshaw summation to calculate the spherical harmonic summation
diff --git a/doc/source/api_reference/dealiasing/aod1b_geocenter.rst b/doc/source/api_reference/dealiasing/aod1b_geocenter.rst
index 14ca6606..ad215f02 100644
--- a/doc/source/api_reference/dealiasing/aod1b_geocenter.rst
+++ b/doc/source/api_reference/dealiasing/aod1b_geocenter.rst
@@ -1,6 +1,6 @@
-==================
-aod1b_geocenter.py
-==================
+======================
+``aod1b_geocenter.py``
+======================
- Reads GRACE/GRACE-FO level-1b dealiasing data files for a specific product
diff --git a/doc/source/api_reference/dealiasing/aod1b_oblateness.rst b/doc/source/api_reference/dealiasing/aod1b_oblateness.rst
index 8fceda7d..69df766f 100644
--- a/doc/source/api_reference/dealiasing/aod1b_oblateness.rst
+++ b/doc/source/api_reference/dealiasing/aod1b_oblateness.rst
@@ -1,6 +1,6 @@
-===================
-aod1b_oblateness.py
-===================
+=======================
+``aod1b_oblateness.py``
+=======================
- Reads GRACE/GRACE-FO level-1b dealiasing data files for a specific product
diff --git a/doc/source/api_reference/dealiasing/dealiasing_global_uplift.rst b/doc/source/api_reference/dealiasing/dealiasing_global_uplift.rst
index 0705b115..154e0444 100644
--- a/doc/source/api_reference/dealiasing/dealiasing_global_uplift.rst
+++ b/doc/source/api_reference/dealiasing/dealiasing_global_uplift.rst
@@ -1,6 +1,6 @@
-===========================
-dealiasing_global_uplift.py
-===========================
+===============================
+``dealiasing_global_uplift.py``
+===============================
- Reads GRACE/GRACE-FO level-1b dealiasing data files for global atmospheric and oceanic loading and estimates anomalies in elastic crustal uplift :cite:p:`Davis:2004il,Wahr:1998hy`
diff --git a/doc/source/api_reference/dealiasing/dealiasing_monthly_mean.rst b/doc/source/api_reference/dealiasing/dealiasing_monthly_mean.rst
index ba27f356..0e68d36b 100644
--- a/doc/source/api_reference/dealiasing/dealiasing_monthly_mean.rst
+++ b/doc/source/api_reference/dealiasing/dealiasing_monthly_mean.rst
@@ -1,6 +1,6 @@
-==========================
-dealiasing_monthly_mean.py
-==========================
+==============================
+``dealiasing_monthly_mean.py``
+==============================
- Reads GRACE/GRACE-FO level-1b dealiasing data files for a specific product and outputs monthly the mean for a specific GRACE/GRACE-FO processing center and data release
diff --git a/doc/source/api_reference/degree_amplitude.rst b/doc/source/api_reference/degree_amplitude.rst
index b041e0d2..aad8df00 100644
--- a/doc/source/api_reference/degree_amplitude.rst
+++ b/doc/source/api_reference/degree_amplitude.rst
@@ -1,6 +1,6 @@
-================
-degree_amplitude
-================
+====================
+``degree_amplitude``
+====================
- Calculates the amplitude of each spherical harmonic degree
diff --git a/doc/source/api_reference/destripe_harmonics.rst b/doc/source/api_reference/destripe_harmonics.rst
index ce876194..ae5990d2 100644
--- a/doc/source/api_reference/destripe_harmonics.rst
+++ b/doc/source/api_reference/destripe_harmonics.rst
@@ -1,6 +1,6 @@
-==================
-destripe_harmonics
-==================
+======================
+``destripe_harmonics``
+======================
- Filters spherical harmonic coefficients for correlated "striping" errors following :cite:t:`Swenson:2006hu`
diff --git a/doc/source/api_reference/fourier_legendre.rst b/doc/source/api_reference/fourier_legendre.rst
index 196f9849..d11a1823 100644
--- a/doc/source/api_reference/fourier_legendre.rst
+++ b/doc/source/api_reference/fourier_legendre.rst
@@ -1,6 +1,6 @@
-================
-fourier_legendre
-================
+====================
+``fourier_legendre``
+====================
- Computes Fourier coefficients of the associated Legendre functions
diff --git a/doc/source/api_reference/gauss_weights.rst b/doc/source/api_reference/gauss_weights.rst
index e438a439..fab531a4 100644
--- a/doc/source/api_reference/gauss_weights.rst
+++ b/doc/source/api_reference/gauss_weights.rst
@@ -1,6 +1,6 @@
-=============
-gauss_weights
-=============
+=================
+``gauss_weights``
+=================
- Computes the Gaussian weights as a function of degree
- A normalized version of Christopher Jekeli's Gaussian averaging function
diff --git a/doc/source/api_reference/gen_averaging_kernel.rst b/doc/source/api_reference/gen_averaging_kernel.rst
index 13dde4e2..ccd33d06 100644
--- a/doc/source/api_reference/gen_averaging_kernel.rst
+++ b/doc/source/api_reference/gen_averaging_kernel.rst
@@ -1,6 +1,6 @@
-====================
-gen_averaging_kernel
-====================
+========================
+``gen_averaging_kernel``
+========================
- Generates averaging kernel coefficients which minimize the total error
diff --git a/doc/source/api_reference/gen_disc_load.rst b/doc/source/api_reference/gen_disc_load.rst
index c801d298..72ee294f 100644
--- a/doc/source/api_reference/gen_disc_load.rst
+++ b/doc/source/api_reference/gen_disc_load.rst
@@ -1,6 +1,6 @@
-=============
-gen_disc_load
-=============
+=================
+``gen_disc_load``
+=================
- Calculates gravitational spherical harmonic coefficients for a uniform disc load
diff --git a/doc/source/api_reference/gen_harmonics.rst b/doc/source/api_reference/gen_harmonics.rst
index 428def38..d0b619f3 100644
--- a/doc/source/api_reference/gen_harmonics.rst
+++ b/doc/source/api_reference/gen_harmonics.rst
@@ -1,6 +1,6 @@
-=============
-gen_harmonics
-=============
+=================
+``gen_harmonics``
+=================
- Converts data from the spatial domain to spherical harmonic coefficients
- Does not compute the solid Earth elastic response or convert units
diff --git a/doc/source/api_reference/gen_point_load.rst b/doc/source/api_reference/gen_point_load.rst
index b8679a50..74d0ce8c 100644
--- a/doc/source/api_reference/gen_point_load.rst
+++ b/doc/source/api_reference/gen_point_load.rst
@@ -1,6 +1,6 @@
-==============
-gen_point_load
-==============
+==================
+``gen_point_load``
+==================
- Calculates gravitational spherical harmonic coefficients for point masses
@@ -18,4 +18,4 @@ Calling Sequence
.. autofunction:: gravity_toolkit.gen_point_load
-.. autofunction:: gravity_toolkit.gen_point_load.spherical_harmonic_matrix
+.. autofunction:: gravity_toolkit.gen_point_load._complex_harmonics
diff --git a/doc/source/api_reference/gen_spherical_cap.rst b/doc/source/api_reference/gen_spherical_cap.rst
index 069c0f28..e404f608 100644
--- a/doc/source/api_reference/gen_spherical_cap.rst
+++ b/doc/source/api_reference/gen_spherical_cap.rst
@@ -1,6 +1,6 @@
-=================
-gen_spherical_cap
-=================
+=====================
+``gen_spherical_cap``
+=====================
- Calculates gravitational spherical harmonic coefficients for a spherical cap
diff --git a/doc/source/api_reference/gen_stokes.rst b/doc/source/api_reference/gen_stokes.rst
index 460b40fa..635eeab9 100644
--- a/doc/source/api_reference/gen_stokes.rst
+++ b/doc/source/api_reference/gen_stokes.rst
@@ -1,6 +1,6 @@
-==========
-gen_stokes
-==========
+==============
+``gen_stokes``
+==============
- Converts data from the spatial domain to spherical harmonic coefficients
diff --git a/doc/source/api_reference/geocenter.rst b/doc/source/api_reference/geocenter.rst
index 5a3e5cb2..001c6fda 100644
--- a/doc/source/api_reference/geocenter.rst
+++ b/doc/source/api_reference/geocenter.rst
@@ -1,9 +1,15 @@
-=========
-geocenter
-=========
+=============
+``geocenter``
+=============
Data class for reading and processing geocenter data
+ - Can read geocenter files from data providers
+ - Can merge a list of :py:class:`geocenter` objects into a single object
+ - Can subset to a list of GRACE/GRACE-FO months
+ - Can output :py:class:`geocenter` objects to ascii and netCDF4 files
+
+
`Source code`__
.. __: https://github.com/tsutterley/gravity-toolkit/blob/main/gravity_toolkit/geocenter.py
diff --git a/doc/source/api_reference/geocenter/calc_degree_one.rst b/doc/source/api_reference/geocenter/calc_degree_one.rst
index 0692a5d9..9d382047 100644
--- a/doc/source/api_reference/geocenter/calc_degree_one.rst
+++ b/doc/source/api_reference/geocenter/calc_degree_one.rst
@@ -1,6 +1,6 @@
-==================
-calc_degree_one.py
-==================
+======================
+``calc_degree_one.py``
+======================
- Calculates degree 1 variations using GRACE/GRACE-FO coefficients of degree 2 and greater, and modeled ocean bottom pressure variations :cite:p:`Swenson:2008cr,Sutterley:2019bx`.
diff --git a/doc/source/api_reference/geocenter/monte_carlo_degree_one.rst b/doc/source/api_reference/geocenter/monte_carlo_degree_one.rst
index 17810600..951eefac 100644
--- a/doc/source/api_reference/geocenter/monte_carlo_degree_one.rst
+++ b/doc/source/api_reference/geocenter/monte_carlo_degree_one.rst
@@ -1,6 +1,6 @@
-=========================
-monte_carlo_degree_one.py
-=========================
+=============================
+``monte_carlo_degree_one.py``
+=============================
- Estimates uncertainties in degree 1 using GRACE/GRACE-FO coefficients of degree 2 and greater, and modeled ocean bottom pressure variations in a Monte Carlo scheme :cite:p:`Swenson:2008cr,Sutterley:2019bx`.
- Calculates the estimated spherical harmonic errors following :cite:t:`Wahr:2006bx`
diff --git a/doc/source/api_reference/grace_date.rst b/doc/source/api_reference/grace_date.rst
index e4c846ca..3cb7f773 100644
--- a/doc/source/api_reference/grace_date.rst
+++ b/doc/source/api_reference/grace_date.rst
@@ -1,6 +1,6 @@
-==========
-grace_date
-==========
+==============
+``grace_date``
+==============
- Reads GRACE/GRACE-FO index file from `podaac_cumulus.py` or `gfz_isdc_grace_ftp.py`
- Parses dates of each GRACE/GRACE-FO file and assigns the month number
diff --git a/doc/source/api_reference/grace_find_months.rst b/doc/source/api_reference/grace_find_months.rst
index 28baf31c..8bbd568d 100644
--- a/doc/source/api_reference/grace_find_months.rst
+++ b/doc/source/api_reference/grace_find_months.rst
@@ -1,6 +1,6 @@
-=================
-grace_find_months
-=================
+=====================
+``grace_find_months``
+=====================
- Finds the months available for a GRACE/GRACE-FO/Swarm product
- Finds the all months missing from the product
diff --git a/doc/source/api_reference/grace_input_months.rst b/doc/source/api_reference/grace_input_months.rst
index e168253b..89206109 100644
--- a/doc/source/api_reference/grace_input_months.rst
+++ b/doc/source/api_reference/grace_input_months.rst
@@ -1,6 +1,6 @@
-==================
-grace_input_months
-==================
+======================
+``grace_input_months``
+======================
- Reads GRACE/GRACE-FO/Swarm files for a specified spherical harmonic degree and order and for a specified date range
diff --git a/doc/source/api_reference/grace_months_index.rst b/doc/source/api_reference/grace_months_index.rst
index f39478d8..3f2ca68d 100644
--- a/doc/source/api_reference/grace_months_index.rst
+++ b/doc/source/api_reference/grace_months_index.rst
@@ -1,6 +1,6 @@
-==================
-grace_months_index
-==================
+======================
+``grace_months_index``
+======================
- Creates an index of dates for all GRACE/GRACE-FO processing centers
diff --git a/doc/source/api_reference/harmonic_gradients.rst b/doc/source/api_reference/harmonic_gradients.rst
index 59bcf431..711ba520 100644
--- a/doc/source/api_reference/harmonic_gradients.rst
+++ b/doc/source/api_reference/harmonic_gradients.rst
@@ -1,6 +1,6 @@
-==================
-harmonic_gradients
-==================
+======================
+``harmonic_gradients``
+======================
- Calculates the zonal and meridional gradients of a scalar field from a series of spherical harmonics
diff --git a/doc/source/api_reference/harmonic_summation.rst b/doc/source/api_reference/harmonic_summation.rst
index 317483fc..7a70b1f4 100644
--- a/doc/source/api_reference/harmonic_summation.rst
+++ b/doc/source/api_reference/harmonic_summation.rst
@@ -1,6 +1,6 @@
-==================
-harmonic_summation
-==================
+======================
+``harmonic_summation``
+======================
- Returns the spatial field for a series of spherical harmonics
diff --git a/doc/source/api_reference/harmonics.rst b/doc/source/api_reference/harmonics.rst
index ed10f90c..ae152401 100644
--- a/doc/source/api_reference/harmonics.rst
+++ b/doc/source/api_reference/harmonics.rst
@@ -1,16 +1,16 @@
-=========
-harmonics
-=========
+=============
+``harmonics``
+=============
Spherical harmonic data class for processing GRACE/GRACE-FO Level-2 data
- Can read ascii, netCDF4, HDF5 files
- Can read from an index of the above file types
- - Can merge a list of ``harmonics`` objects into a single object
+ - Can merge a list of :py:class:`harmonics` objects into a single object
- Can subset to a list of GRACE/GRACE-FO months
- - Can calculate the mean field of a ``harmonics`` object
- - Can filter ``harmonics`` for correlated "striping" errors
- - Can output ``harmonics`` objects to ascii, netCDF4 or HDF5 files
+ - Can calculate the mean field of a :py:class:`harmonics` object
+ - Can filter :py:class:`harmonics` for correlated "striping" errors
+ - Can output :py:class:`harmonics` objects to ascii, netCDF4 or HDF5 files
Calling Sequence
================
diff --git a/doc/source/api_reference/legendre.rst b/doc/source/api_reference/legendre.rst
index 011fd089..4736c781 100644
--- a/doc/source/api_reference/legendre.rst
+++ b/doc/source/api_reference/legendre.rst
@@ -1,6 +1,6 @@
-========
-legendre
-========
+============
+``legendre``
+============
- Computes associated Legendre functions of degree ``l`` evaluated for elements ``x``
- ``l`` must be a scalar integer and ``x`` must contain real values ranging -1 <= ``x`` <= 1
diff --git a/doc/source/api_reference/legendre_polynomials.rst b/doc/source/api_reference/legendre_polynomials.rst
index 6fda4075..a62f495a 100644
--- a/doc/source/api_reference/legendre_polynomials.rst
+++ b/doc/source/api_reference/legendre_polynomials.rst
@@ -1,6 +1,6 @@
-====================
-legendre_polynomials
-====================
+========================
+``legendre_polynomials``
+========================
- Computes fully-normalized Legendre polynomials for an array of ``x`` values and their first derivative
- Calculates Legendre polynomials for zonal harmonics (order 0)
diff --git a/doc/source/api_reference/mapping/plot_AIS_GrIS_maps.rst b/doc/source/api_reference/mapping/plot_AIS_GrIS_maps.rst
index 7d8e0028..a51e0363 100644
--- a/doc/source/api_reference/mapping/plot_AIS_GrIS_maps.rst
+++ b/doc/source/api_reference/mapping/plot_AIS_GrIS_maps.rst
@@ -1,6 +1,6 @@
-=====================
-plot_AIS_GrIS_maps.py
-=====================
+=========================
+``plot_AIS_GrIS_maps.py``
+=========================
- Creates GMT-like plots for the Greenland and Antarctic ice sheets
diff --git a/doc/source/api_reference/mapping/plot_AIS_grid_3maps.rst b/doc/source/api_reference/mapping/plot_AIS_grid_3maps.rst
index 47968ade..6c1d4e22 100644
--- a/doc/source/api_reference/mapping/plot_AIS_grid_3maps.rst
+++ b/doc/source/api_reference/mapping/plot_AIS_grid_3maps.rst
@@ -1,6 +1,6 @@
-======================
-plot_AIS_grid_3maps.py
-======================
+==========================
+``plot_AIS_grid_3maps.py``
+==========================
- Creates 3 GMT-like plots for the Antarctic Ice Sheet on a polar stereographic south (3031) projection
diff --git a/doc/source/api_reference/mapping/plot_AIS_grid_4maps.rst b/doc/source/api_reference/mapping/plot_AIS_grid_4maps.rst
index 41b45f43..b6f6d3d6 100644
--- a/doc/source/api_reference/mapping/plot_AIS_grid_4maps.rst
+++ b/doc/source/api_reference/mapping/plot_AIS_grid_4maps.rst
@@ -1,6 +1,6 @@
-======================
-plot_AIS_grid_4maps.py
-======================
+==========================
+``plot_AIS_grid_4maps.py``
+==========================
- Creates 4 GMT-like plots for the Antarctic Ice Sheet on a polar stereographic south (3031) projection
diff --git a/doc/source/api_reference/mapping/plot_AIS_grid_maps.rst b/doc/source/api_reference/mapping/plot_AIS_grid_maps.rst
index 6eba7179..7773f2c9 100644
--- a/doc/source/api_reference/mapping/plot_AIS_grid_maps.rst
+++ b/doc/source/api_reference/mapping/plot_AIS_grid_maps.rst
@@ -1,6 +1,6 @@
-=====================
-plot_AIS_grid_maps.py
-=====================
+=========================
+``plot_AIS_grid_maps.py``
+=========================
- Creates GMT-like plots for the Antarctic Ice Sheet on a polar stereographic south (3031) projection
diff --git a/doc/source/api_reference/mapping/plot_AIS_grid_movie.rst b/doc/source/api_reference/mapping/plot_AIS_grid_movie.rst
index 83d41c15..e252b75d 100644
--- a/doc/source/api_reference/mapping/plot_AIS_grid_movie.rst
+++ b/doc/source/api_reference/mapping/plot_AIS_grid_movie.rst
@@ -1,6 +1,6 @@
-======================
-plot_AIS_grid_movie.py
-======================
+==========================
+``plot_AIS_grid_movie.py``
+==========================
- Creates GMT-like anomations for the Antarctic Ice Sheet on a polar stereographic south (3031) projection
diff --git a/doc/source/api_reference/mapping/plot_AIS_regional_maps.rst b/doc/source/api_reference/mapping/plot_AIS_regional_maps.rst
index 2ecbceef..ca754533 100644
--- a/doc/source/api_reference/mapping/plot_AIS_regional_maps.rst
+++ b/doc/source/api_reference/mapping/plot_AIS_regional_maps.rst
@@ -1,6 +1,6 @@
-=========================
-plot_AIS_regional_maps.py
-=========================
+=============================
+``plot_AIS_regional_maps.py``
+=============================
- Creates GMT-like plots for sub-regions of Antarctica on a polar stereographic south (3031) projection
diff --git a/doc/source/api_reference/mapping/plot_AIS_regional_movie.rst b/doc/source/api_reference/mapping/plot_AIS_regional_movie.rst
index 39ed1b42..bb6ca333 100644
--- a/doc/source/api_reference/mapping/plot_AIS_regional_movie.rst
+++ b/doc/source/api_reference/mapping/plot_AIS_regional_movie.rst
@@ -1,6 +1,6 @@
-==========================
-plot_AIS_regional_movie.py
-==========================
+==============================
+``plot_AIS_regional_movie.py``
+==============================
- Creates GMT-like animations for sub-regions of Antarctica on a polar stereographic south (3031) projection
diff --git a/doc/source/api_reference/mapping/plot_GrIS_grid_3maps.rst b/doc/source/api_reference/mapping/plot_GrIS_grid_3maps.rst
index 729bf1c5..072ea029 100644
--- a/doc/source/api_reference/mapping/plot_GrIS_grid_3maps.rst
+++ b/doc/source/api_reference/mapping/plot_GrIS_grid_3maps.rst
@@ -1,6 +1,6 @@
-=======================
-plot_GrIS_grid_3maps.py
-=======================
+===========================
+``plot_GrIS_grid_3maps.py``
+===========================
- Creates 3 GMT-like plots for the Greenland Ice Sheet on a NSIDC polar stereographic north (3413) projection
diff --git a/doc/source/api_reference/mapping/plot_GrIS_grid_5maps.rst b/doc/source/api_reference/mapping/plot_GrIS_grid_5maps.rst
index 6760dd29..44a09956 100644
--- a/doc/source/api_reference/mapping/plot_GrIS_grid_5maps.rst
+++ b/doc/source/api_reference/mapping/plot_GrIS_grid_5maps.rst
@@ -1,6 +1,6 @@
-=======================
-plot_GrIS_grid_5maps.py
-=======================
+===========================
+``plot_GrIS_grid_5maps.py``
+===========================
- Creates 5 GMT-like plots for the Greenland Ice Sheet on a NSIDC polar stereographic north (3413) projection
diff --git a/doc/source/api_reference/mapping/plot_GrIS_grid_maps.rst b/doc/source/api_reference/mapping/plot_GrIS_grid_maps.rst
index 7103e776..94630749 100644
--- a/doc/source/api_reference/mapping/plot_GrIS_grid_maps.rst
+++ b/doc/source/api_reference/mapping/plot_GrIS_grid_maps.rst
@@ -1,6 +1,6 @@
-======================
-plot_GrIS_grid_maps.py
-======================
+==========================
+``plot_GrIS_grid_maps.py``
+==========================
- Creates GMT-like plots for the Greenland Ice Sheet on a NSIDC polar stereographic north (3413) projection
diff --git a/doc/source/api_reference/mapping/plot_GrIS_grid_movie.rst b/doc/source/api_reference/mapping/plot_GrIS_grid_movie.rst
index c93ffb24..3294fe46 100644
--- a/doc/source/api_reference/mapping/plot_GrIS_grid_movie.rst
+++ b/doc/source/api_reference/mapping/plot_GrIS_grid_movie.rst
@@ -1,6 +1,6 @@
-=======================
-plot_GrIS_grid_movie.py
-=======================
+===========================
+``plot_GrIS_grid_movie.py``
+===========================
- Creates GMT-like animations for the Greenland Ice Sheet on a NSIDC polar stereographic north (3413) projection
diff --git a/doc/source/api_reference/mapping/plot_global_grid_3maps.rst b/doc/source/api_reference/mapping/plot_global_grid_3maps.rst
index 9f01781a..d88a092b 100644
--- a/doc/source/api_reference/mapping/plot_global_grid_3maps.rst
+++ b/doc/source/api_reference/mapping/plot_global_grid_3maps.rst
@@ -1,6 +1,6 @@
-=========================
-plot_global_grid_3maps.py
-=========================
+=============================
+``plot_global_grid_3maps.py``
+=============================
- Creates 3 GMT-like plots on a global Plate Carr\ |eacute|\e (Equirectangular) projection
diff --git a/doc/source/api_reference/mapping/plot_global_grid_4maps.rst b/doc/source/api_reference/mapping/plot_global_grid_4maps.rst
index 556d6f98..c93f94e3 100644
--- a/doc/source/api_reference/mapping/plot_global_grid_4maps.rst
+++ b/doc/source/api_reference/mapping/plot_global_grid_4maps.rst
@@ -1,6 +1,6 @@
-=========================
-plot_global_grid_4maps.py
-=========================
+=============================
+``plot_global_grid_4maps.py``
+=============================
- Creates 4 GMT-like plots on a global Plate Carr\ |eacute|\e (Equirectangular) projection
diff --git a/doc/source/api_reference/mapping/plot_global_grid_5maps.rst b/doc/source/api_reference/mapping/plot_global_grid_5maps.rst
index b0538d79..602d5d4b 100644
--- a/doc/source/api_reference/mapping/plot_global_grid_5maps.rst
+++ b/doc/source/api_reference/mapping/plot_global_grid_5maps.rst
@@ -1,6 +1,6 @@
-=========================
-plot_global_grid_5maps.py
-=========================
+=============================
+``plot_global_grid_5maps.py``
+=============================
- Creates 5 GMT-like plots on a global Plate Carr\ |eacute|\e (Equirectangular) projection
diff --git a/doc/source/api_reference/mapping/plot_global_grid_9maps.rst b/doc/source/api_reference/mapping/plot_global_grid_9maps.rst
index 1b8c55cb..36ebc1ed 100644
--- a/doc/source/api_reference/mapping/plot_global_grid_9maps.rst
+++ b/doc/source/api_reference/mapping/plot_global_grid_9maps.rst
@@ -1,6 +1,6 @@
-=========================
-plot_global_grid_9maps.py
-=========================
+=============================
+``plot_global_grid_9maps.py``
+=============================
- Creates 9 GMT-like plots on a global Plate Carr\ |eacute|\e (Equirectangular) projection
diff --git a/doc/source/api_reference/mapping/plot_global_grid_maps.rst b/doc/source/api_reference/mapping/plot_global_grid_maps.rst
index a2286b4b..97217872 100644
--- a/doc/source/api_reference/mapping/plot_global_grid_maps.rst
+++ b/doc/source/api_reference/mapping/plot_global_grid_maps.rst
@@ -1,6 +1,6 @@
-========================
-plot_global_grid_maps.py
-========================
+============================
+``plot_global_grid_maps.py``
+============================
- Creates GMT-like plots on a global Plate Carr\ |eacute|\e (Equirectangular) projection
diff --git a/doc/source/api_reference/mapping/plot_global_grid_movie.rst b/doc/source/api_reference/mapping/plot_global_grid_movie.rst
index a8818f5b..9d9af07f 100644
--- a/doc/source/api_reference/mapping/plot_global_grid_movie.rst
+++ b/doc/source/api_reference/mapping/plot_global_grid_movie.rst
@@ -1,6 +1,6 @@
-=========================
-plot_global_grid_movie.py
-=========================
+=============================
+``plot_global_grid_movie.py``
+=============================
- Creates GMT-like animations on a global Plate Carr\ |eacute|\e (Equirectangular) projection
diff --git a/doc/source/api_reference/mascons.rst b/doc/source/api_reference/mascons.rst
index 1b10d56b..fa08aa9a 100644
--- a/doc/source/api_reference/mascons.rst
+++ b/doc/source/api_reference/mascons.rst
@@ -1,6 +1,6 @@
-=======
-mascons
-=======
+===========
+``mascons``
+===========
Conversion routines for publicly available GRACE/GRACE-FO mascon solutions
diff --git a/doc/source/api_reference/ocean_stokes.rst b/doc/source/api_reference/ocean_stokes.rst
index 4c84ce82..14226181 100644
--- a/doc/source/api_reference/ocean_stokes.rst
+++ b/doc/source/api_reference/ocean_stokes.rst
@@ -1,6 +1,6 @@
-============
-ocean_stokes
-============
+================
+``ocean_stokes``
+================
- Reads a land-sea mask and converts to a series of spherical harmonics
- `netCDF4 land-sea mask files `_ from :cite:p:`Sutterley:2020js`
diff --git a/doc/source/api_reference/read_GIA_model.rst b/doc/source/api_reference/read_GIA_model.rst
index 31245941..d245141c 100755
--- a/doc/source/api_reference/read_GIA_model.rst
+++ b/doc/source/api_reference/read_GIA_model.rst
@@ -1,6 +1,6 @@
-==============
-read_GIA_model
-==============
+==================
+``read_GIA_model``
+==================
- Reads Glacial Isostatic Adjustment (GIA) files for given modeling group formats
- Outputs spherical harmonics for the GIA rates and the GIA model parameters
diff --git a/doc/source/api_reference/read_GRACE_harmonics.rst b/doc/source/api_reference/read_GRACE_harmonics.rst
index 4be343c8..1d4b026d 100644
--- a/doc/source/api_reference/read_GRACE_harmonics.rst
+++ b/doc/source/api_reference/read_GRACE_harmonics.rst
@@ -1,6 +1,6 @@
-====================
-read_GRACE_harmonics
-====================
+========================
+``read_GRACE_harmonics``
+========================
- Reads GRACE/GRACE-FO files and extracts spherical harmonic data and drift rates (RL04)
- Adds drift rates to clm and slm for Release-4 harmonics
diff --git a/doc/source/api_reference/read_SLR_harmonics.rst b/doc/source/api_reference/read_SLR_harmonics.rst
index d3802bad..d979f094 100644
--- a/doc/source/api_reference/read_SLR_harmonics.rst
+++ b/doc/source/api_reference/read_SLR_harmonics.rst
@@ -1,6 +1,6 @@
-==================
-read_SLR_harmonics
-==================
+======================
+``read_SLR_harmonics``
+======================
- Reads 5\ |times|\ 5 spherical harmonic coefficients with 1 coefficient from degree 6 all calculated from satellite laser ranging (SLR) measurements
- Calculated by the University of Texas Center for Space Research (CSR) and NASA Goddard Space Flight Center (GSFC)
diff --git a/doc/source/api_reference/read_gfc_harmonics.rst b/doc/source/api_reference/read_gfc_harmonics.rst
index 297bbc14..fef77560 100644
--- a/doc/source/api_reference/read_gfc_harmonics.rst
+++ b/doc/source/api_reference/read_gfc_harmonics.rst
@@ -1,6 +1,6 @@
-==================
-read_gfc_harmonics
-==================
+======================
+``read_gfc_harmonics``
+======================
- Reads gfc files and extracts spherical harmonics for Swarm and GRAZ GRACE/GRACE-FO data
- Parses date of GRACE/GRACE-FO data from filename
diff --git a/doc/source/api_reference/read_love_numbers.rst b/doc/source/api_reference/read_love_numbers.rst
index a087a6c9..712bdea0 100644
--- a/doc/source/api_reference/read_love_numbers.rst
+++ b/doc/source/api_reference/read_love_numbers.rst
@@ -1,6 +1,6 @@
-=================
-read_love_numbers
-=================
+=====================
+``read_love_numbers``
+=====================
- Reads sets of load Love/Shida numbers computed using outputs from the Preliminary Reference Earth Model (PREM) or other Earth models
- Linearly interpolates load Love/Shida numbers for missing degrees
diff --git a/doc/source/api_reference/scripts/calc_harmonic_resolution.rst b/doc/source/api_reference/scripts/calc_harmonic_resolution.rst
index 4926eb5d..c23fe1cc 100644
--- a/doc/source/api_reference/scripts/calc_harmonic_resolution.rst
+++ b/doc/source/api_reference/scripts/calc_harmonic_resolution.rst
@@ -1,6 +1,6 @@
-===========================
-calc_harmonic_resolution.py
-===========================
+===============================
+``calc_harmonic_resolution.py``
+===============================
- Calculates the spatial resolution that can be resolved by the spherical harmonics of a certain degree :cite:p:`Barthelmes:2013fy,HofmannWellenhof:2006hy`
- Default method uses the smallest half-wavelength that can be resolved
diff --git a/doc/source/api_reference/scripts/calc_mascon.rst b/doc/source/api_reference/scripts/calc_mascon.rst
index b41ef5b2..67ad6636 100644
--- a/doc/source/api_reference/scripts/calc_mascon.rst
+++ b/doc/source/api_reference/scripts/calc_mascon.rst
@@ -1,6 +1,6 @@
-==============
-calc_mascon.py
-==============
+==================
+``calc_mascon.py``
+==================
- Reads in GRACE/GRACE-FO spherical harmonic coefficients
- Correct spherical harmonics with the specified GIA model group
diff --git a/doc/source/api_reference/scripts/calc_sensitivity_kernel.rst b/doc/source/api_reference/scripts/calc_sensitivity_kernel.rst
index 72276dd7..0abfa608 100644
--- a/doc/source/api_reference/scripts/calc_sensitivity_kernel.rst
+++ b/doc/source/api_reference/scripts/calc_sensitivity_kernel.rst
@@ -1,6 +1,6 @@
-==========================
-calc_sensitivity_kernel.py
-==========================
+==============================
+``calc_sensitivity_kernel.py``
+==============================
- Calculates spatial sensitivity kernels through a least-squares mascon procedure following :cite:t:`Tiwari:2009bx,Jacob:2012gv`
diff --git a/doc/source/api_reference/scripts/combine_harmonics.rst b/doc/source/api_reference/scripts/combine_harmonics.rst
index d7a383e4..d2481c33 100644
--- a/doc/source/api_reference/scripts/combine_harmonics.rst
+++ b/doc/source/api_reference/scripts/combine_harmonics.rst
@@ -1,6 +1,6 @@
-====================
-combine_harmonics.py
-====================
+========================
+``combine_harmonics.py``
+========================
- Converts a file from the spherical harmonic domain into the spatial domain :cite:p:`Wahr:1998hy`
diff --git a/doc/source/api_reference/scripts/convert_harmonics.rst b/doc/source/api_reference/scripts/convert_harmonics.rst
index ca37c135..9e720050 100644
--- a/doc/source/api_reference/scripts/convert_harmonics.rst
+++ b/doc/source/api_reference/scripts/convert_harmonics.rst
@@ -1,6 +1,6 @@
-====================
-convert_harmonics.py
-====================
+========================
+``convert_harmonics.py``
+========================
- Converts a file from the spatial domain into the spherical harmonic domain :cite:p:`Wahr:1998hy`
diff --git a/doc/source/api_reference/scripts/grace_mean_harmonics.rst b/doc/source/api_reference/scripts/grace_mean_harmonics.rst
index 91ab32c3..198d4608 100644
--- a/doc/source/api_reference/scripts/grace_mean_harmonics.rst
+++ b/doc/source/api_reference/scripts/grace_mean_harmonics.rst
@@ -1,6 +1,6 @@
-=======================
-grace_mean_harmonics.py
-=======================
+===========================
+``grace_mean_harmonics.py``
+===========================
- Calculates the temporal mean of the GRACE/GRACE-FO spherical harmonics for a specified date range
- Used to estimate the static gravitational field over a given date rage
diff --git a/doc/source/api_reference/scripts/grace_raster_grids.rst b/doc/source/api_reference/scripts/grace_raster_grids.rst
index 1867fb45..9cacebdc 100644
--- a/doc/source/api_reference/scripts/grace_raster_grids.rst
+++ b/doc/source/api_reference/scripts/grace_raster_grids.rst
@@ -1,6 +1,6 @@
-=====================
-grace_raster_grids.py
-=====================
+=========================
+``grace_raster_grids.py``
+=========================
- Reads in GRACE/GRACE-FO spherical harmonic coefficients and exports projected spatial fields
- Correct spherical harmonics with the specified GIA model group
diff --git a/doc/source/api_reference/scripts/grace_spatial_error.rst b/doc/source/api_reference/scripts/grace_spatial_error.rst
index 07f62f76..ca012ef2 100644
--- a/doc/source/api_reference/scripts/grace_spatial_error.rst
+++ b/doc/source/api_reference/scripts/grace_spatial_error.rst
@@ -1,6 +1,6 @@
-======================
-grace_spatial_error.py
-======================
+==========================
+``grace_spatial_error.py``
+==========================
- Reads in GRACE/GRACE-FO spherical harmonic coefficients and exports spatial error field following :cite:t:`Wahr:2006bx`
- Filters and smooths data with specified processing algorithms :cite:p:`Jekeli:1981vj,Swenson:2006hu`
diff --git a/doc/source/api_reference/scripts/grace_spatial_maps.rst b/doc/source/api_reference/scripts/grace_spatial_maps.rst
index 09dc7b98..e2614a09 100644
--- a/doc/source/api_reference/scripts/grace_spatial_maps.rst
+++ b/doc/source/api_reference/scripts/grace_spatial_maps.rst
@@ -1,6 +1,6 @@
-=====================
-grace_spatial_maps.py
-=====================
+=========================
+``grace_spatial_maps.py``
+=========================
- Reads in GRACE/GRACE-FO spherical harmonic coefficients and exports monthly spatial fields
- Correct spherical harmonics with the specified GIA model group
diff --git a/doc/source/api_reference/scripts/mascon_reconstruct.rst b/doc/source/api_reference/scripts/mascon_reconstruct.rst
index 39f33fc5..d1857f95 100644
--- a/doc/source/api_reference/scripts/mascon_reconstruct.rst
+++ b/doc/source/api_reference/scripts/mascon_reconstruct.rst
@@ -1,6 +1,6 @@
-=====================
-mascon_reconstruct.py
-=====================
+=========================
+``mascon_reconstruct.py``
+=========================
- Calculates the equivalent spherical harmonics from a mascon time series
diff --git a/doc/source/api_reference/scripts/piecewise_grace_maps.rst b/doc/source/api_reference/scripts/piecewise_grace_maps.rst
index 611aef51..2fba64dd 100644
--- a/doc/source/api_reference/scripts/piecewise_grace_maps.rst
+++ b/doc/source/api_reference/scripts/piecewise_grace_maps.rst
@@ -1,6 +1,6 @@
-=======================
-piecewise_grace_maps.py
-=======================
+===========================
+``piecewise_grace_maps.py``
+===========================
- Reads in GRACE/GRACE-FO spatial files and fits a piecewise regression model at each grid point for breakpoint analysis
diff --git a/doc/source/api_reference/scripts/regress_grace_maps.rst b/doc/source/api_reference/scripts/regress_grace_maps.rst
index 309c3480..14ead595 100644
--- a/doc/source/api_reference/scripts/regress_grace_maps.rst
+++ b/doc/source/api_reference/scripts/regress_grace_maps.rst
@@ -1,6 +1,6 @@
-=====================
-regress_grace_maps.py
-=====================
+=========================
+``regress_grace_maps.py``
+=========================
- Reads in GRACE/GRACE-FO spatial files and fits a regression model at each grid point
diff --git a/doc/source/api_reference/scripts/run_sea_level_equation.rst b/doc/source/api_reference/scripts/run_sea_level_equation.rst
index 00b0dd04..2149087a 100644
--- a/doc/source/api_reference/scripts/run_sea_level_equation.rst
+++ b/doc/source/api_reference/scripts/run_sea_level_equation.rst
@@ -1,6 +1,6 @@
-=========================
-run_sea_level_equation.py
-=========================
+=============================
+``run_sea_level_equation.py``
+=============================
- Solves the sea level equation with the option of including polar motion feedback :cite:p:`Farrell:1976hm,Kendall:2005ds,Mitrovica:2003cq`
- Uses a Clenshaw summation to calculate the spherical harmonic summation :cite:p:`Holmes:2002ff,Tscherning:1982tu`
diff --git a/doc/source/api_reference/scripts/scale_grace_maps.rst b/doc/source/api_reference/scripts/scale_grace_maps.rst
index 8f1a19ea..1fb72a7b 100644
--- a/doc/source/api_reference/scripts/scale_grace_maps.rst
+++ b/doc/source/api_reference/scripts/scale_grace_maps.rst
@@ -1,6 +1,6 @@
-===================
-scale_grace_maps.py
-===================
+=======================
+``scale_grace_maps.py``
+=======================
- Reads in GRACE/GRACE-FO spherical harmonic coefficients and exports scaled spatial fields
- Correct spherical harmonics with the specified GIA model group
diff --git a/doc/source/api_reference/sea_level_equation.rst b/doc/source/api_reference/sea_level_equation.rst
index 0be5ac99..449dc782 100644
--- a/doc/source/api_reference/sea_level_equation.rst
+++ b/doc/source/api_reference/sea_level_equation.rst
@@ -1,6 +1,6 @@
-==================
-sea_level_equation
-==================
+======================
+``sea_level_equation``
+======================
- Solves the sea level equation with the option of including polar motion feedback
diff --git a/doc/source/api_reference/spatial.rst b/doc/source/api_reference/spatial.rst
index d4b5c441..9048aeeb 100644
--- a/doc/source/api_reference/spatial.rst
+++ b/doc/source/api_reference/spatial.rst
@@ -1,15 +1,15 @@
-=======
-spatial
-=======
+===========
+``spatial``
+===========
Spatial data class for reading, writing and processing spatial data
- Can read ascii, netCDF4, HDF5 files
- Can read from an index of the above file types
- - Can merge a list of ``spatial`` objects into a single object
+ - Can merge a list of :py:class:`spatial` objects into a single object
- Can subset to a list of GRACE/GRACE-FO months
- - Can calculate the mean field of a ``spatial`` object
- - Can output ``spatial`` objects to ascii, netCDF4 or HDF5 files
+ - Can calculate the mean field of a :py:class:`spatial` object
+ - Can output :py:class:`spatial` objects to ascii, netCDF4 or HDF5 files
Calling Sequence
================
diff --git a/doc/source/api_reference/time.rst b/doc/source/api_reference/time.rst
index 339666e9..26334198 100644
--- a/doc/source/api_reference/time.rst
+++ b/doc/source/api_reference/time.rst
@@ -1,6 +1,6 @@
-====
-time
-====
+========
+``time``
+========
Utilities for calculating time operations
diff --git a/doc/source/api_reference/time_series/amplitude.rst b/doc/source/api_reference/time_series/amplitude.rst
index 062c336b..b9b93518 100644
--- a/doc/source/api_reference/time_series/amplitude.rst
+++ b/doc/source/api_reference/time_series/amplitude.rst
@@ -1,6 +1,6 @@
-=====================
-time_series.amplitude
-=====================
+=========================
+``time_series.amplitude``
+=========================
- Calculate the amplitude and phase of a harmonic function from calculated sine and cosine of a series of measurements
diff --git a/doc/source/api_reference/time_series/fit.rst b/doc/source/api_reference/time_series/fit.rst
index e39c6328..359bb306 100644
--- a/doc/source/api_reference/time_series/fit.rst
+++ b/doc/source/api_reference/time_series/fit.rst
@@ -1,6 +1,6 @@
-===============
-time_series.fit
-===============
+===================
+``time_series.fit``
+===================
- Utilities for fitting time-series data with regression models
diff --git a/doc/source/api_reference/time_series/lomb_scargle.rst b/doc/source/api_reference/time_series/lomb_scargle.rst
index f88f5a39..0f1aafeb 100644
--- a/doc/source/api_reference/time_series/lomb_scargle.rst
+++ b/doc/source/api_reference/time_series/lomb_scargle.rst
@@ -1,6 +1,6 @@
-========================
-time_series.lomb_scargle
-========================
+============================
+``time_series.lomb_scargle``
+============================
- Wrapper function for computing Lomb-Scargle periodograms using ``scipy.signal.lombscargle``
diff --git a/doc/source/api_reference/time_series/piecewise.rst b/doc/source/api_reference/time_series/piecewise.rst
index 58b43416..fc4f5bb9 100644
--- a/doc/source/api_reference/time_series/piecewise.rst
+++ b/doc/source/api_reference/time_series/piecewise.rst
@@ -1,6 +1,6 @@
-=====================
-time_series.piecewise
-=====================
+=========================
+``time_series.piecewise``
+=========================
- Fits a synthetic signal to data over a time period by ordinary or weighted least-squares for breakpoint analysis
diff --git a/doc/source/api_reference/time_series/regress.rst b/doc/source/api_reference/time_series/regress.rst
index 75fc1612..67dee571 100644
--- a/doc/source/api_reference/time_series/regress.rst
+++ b/doc/source/api_reference/time_series/regress.rst
@@ -1,6 +1,6 @@
-===================
-time_series.regress
-===================
+=======================
+``time_series.regress``
+=======================
- Fits a synthetic signal to data over a time period by ordinary or weighted least-squares
diff --git a/doc/source/api_reference/time_series/savitzky_golay.rst b/doc/source/api_reference/time_series/savitzky_golay.rst
index d50df073..92b133b2 100644
--- a/doc/source/api_reference/time_series/savitzky_golay.rst
+++ b/doc/source/api_reference/time_series/savitzky_golay.rst
@@ -1,6 +1,6 @@
-==========================
-time_series.savitzky_golay
-==========================
+==============================
+``time_series.savitzky_golay``
+==============================
- Smooth and optionally differentiate data of non-uniform sampling with a Savitzky-Golay filter
- A type of low-pass filter, particularly suited for smoothing noisy data
diff --git a/doc/source/api_reference/time_series/smooth.rst b/doc/source/api_reference/time_series/smooth.rst
index 093db7ee..7bfbf86c 100644
--- a/doc/source/api_reference/time_series/smooth.rst
+++ b/doc/source/api_reference/time_series/smooth.rst
@@ -1,6 +1,6 @@
-==================
-time_series.smooth
-==================
+======================
+``time_series.smooth``
+======================
- Computes the moving average of a time-series
diff --git a/doc/source/api_reference/tools.rst b/doc/source/api_reference/tools.rst
index d3fdbf56..30100e10 100644
--- a/doc/source/api_reference/tools.rst
+++ b/doc/source/api_reference/tools.rst
@@ -1,6 +1,6 @@
-=====
-tools
-=====
+=========
+``tools``
+=========
`User interface `_ and plotting tools for use in `Jupyter notebooks `_
diff --git a/doc/source/api_reference/units.rst b/doc/source/api_reference/units.rst
index 851d5327..9f445f3a 100644
--- a/doc/source/api_reference/units.rst
+++ b/doc/source/api_reference/units.rst
@@ -1,6 +1,6 @@
-=====
-units
-=====
+=========
+``units``
+=========
Class for converting GRACE/GRACE-FO Level-2 data to specific units
diff --git a/doc/source/api_reference/utilities.rst b/doc/source/api_reference/utilities.rst
index 001ccb0d..3ce419e2 100644
--- a/doc/source/api_reference/utilities.rst
+++ b/doc/source/api_reference/utilities.rst
@@ -1,6 +1,6 @@
-=========
-utilities
-=========
+=============
+``utilities``
+=============
Download and management utilities for syncing time and auxiliary files
@@ -18,6 +18,14 @@ General Methods
.. autofunction:: gravity_toolkit.utilities.get_data_path
+.. autofunction:: gravity_toolkit.utilities.get_cache_path
+
+.. autofunction:: gravity_toolkit.utilities.import_dependency
+
+.. autofunction:: gravity_toolkit.utilities.dependency_available
+
+.. autofunction:: gravity_toolkit.utilities.is_valid_url
+
.. autoclass:: gravity_toolkit.utilities.reify
:members:
diff --git a/doc/source/api_reference/utilities/make_grace_index.rst b/doc/source/api_reference/utilities/make_grace_index.rst
index b0f732e6..ad052001 100644
--- a/doc/source/api_reference/utilities/make_grace_index.rst
+++ b/doc/source/api_reference/utilities/make_grace_index.rst
@@ -1,6 +1,6 @@
-===================
-make_grace_index.py
-===================
+=======================
+``make_grace_index.py``
+=======================
- Creates index files of GRACE/GRACE-FO Level-2 spherical harmonic data files
diff --git a/doc/source/api_reference/utilities/quick_mascon_plot.rst b/doc/source/api_reference/utilities/quick_mascon_plot.rst
index da0911b2..676042a5 100644
--- a/doc/source/api_reference/utilities/quick_mascon_plot.rst
+++ b/doc/source/api_reference/utilities/quick_mascon_plot.rst
@@ -1,6 +1,6 @@
-====================
-quick_mascon_plot.py
-====================
+========================
+``quick_mascon_plot.py``
+========================
- Plots a mascon time series file for a particular format
diff --git a/doc/source/api_reference/utilities/quick_mascon_regress.rst b/doc/source/api_reference/utilities/quick_mascon_regress.rst
index 5b951bcc..837412dd 100644
--- a/doc/source/api_reference/utilities/quick_mascon_regress.rst
+++ b/doc/source/api_reference/utilities/quick_mascon_regress.rst
@@ -1,6 +1,6 @@
-=======================
-quick_mascon_regress.py
-=======================
+===========================
+``quick_mascon_regress.py``
+===========================
- Creates a regression summary file for a mascon time series file
diff --git a/doc/source/api_reference/utilities/run_grace_date.rst b/doc/source/api_reference/utilities/run_grace_date.rst
index 4638677f..2745c635 100644
--- a/doc/source/api_reference/utilities/run_grace_date.rst
+++ b/doc/source/api_reference/utilities/run_grace_date.rst
@@ -1,6 +1,6 @@
-=================
-run_grace_date.py
-=================
+=====================
+``run_grace_date.py``
+=====================
- Wrapper program for running GRACE date and months programs
- Reads GRACE/GRACE-FO index files
diff --git a/doc/source/background/Background.rst b/doc/source/background/Background.rst
index 7a68dab1..29713bd9 100644
--- a/doc/source/background/Background.rst
+++ b/doc/source/background/Background.rst
@@ -1,104 +1,81 @@
+.. _background:
+
==========
Background
==========
-Measurement Principle
-#####################
+Background information on the theoretical concepts used in ``gravity-toolkit``.
+*It is not necessary to read through this information* in order to use this library, but it may be helpful for understanding the outputs and assumptions.
+The information is organized into separate sections, which can be read in any order.
+
+.. grid:: 2 2 4 4
+ :padding: 0
+
+ .. grid-item-card:: Measurement Principle
+ :text-align: center
+ :link: ./Measurement-Principle.html
+
+ :material-outlined:`scale;5em`
+
+ .. grid-item-card:: Spherical Harmonics
+ :text-align: center
+ :link: ./Spherical-Harmonics.html
+
+ :octicon:`globe;5em`
+
+ .. grid-item-card:: Love Numbers
+ :text-align: center
+ :link: ./Love-Numbers.html
+
+ :material-outlined:`favorite_border;5em`
+
+ .. grid-item-card:: GRACE Data Products
+ :text-align: center
+ :link: ./GRACE-Data-Products.html
+
+ :material-outlined:`data_object;5em`
-GRACE and the GRACE Follow-on (GRACE-FO) missions each consist of twin satellites in similar low Earth orbits :cite:p:`Tapley:2019cm`.
-The primary and secondary instrumentation onboard the GRACE/GRACE-FO satellites are the ranging instrument
-(GRACE has a microwave ranging instrument, GRACE-FO has both a microwave ranging instrument and a laser interferometer),
-the global positioning system (GPS), the accelerometers and the star cameras.
-Data from these instruments are combined to estimate the distance between the two satellites,
-the positions of the satellites in space, the pointing vector of the satellites and any non-gravitational
-accelerations the satellites experience.
+.. grid:: 2 2 4 4
+ :padding: 0
-.. admonition:: The Big Idea
+ .. grid-item-card:: Geocenter Variations
+ :text-align: center
+ :link: ./Geocenter-Variations.html
- GRACE/GRACE-FO senses changes in gravity by measuring the change in distance between the two twin satellites:
+ :material-outlined:`swap_vertical_circle;5em`
- 1) As the satellites approach a mass anomaly: leading satellite "feels" a greater gravitational attraction and accelerates |rarr| **distance increases**
- 2) As the trailing satellite approaches: greater gravitational attraction |rarr| accelerated by the mass anomaly |rarr| **distance decreases**
- 3) Leading satellite passes the anomaly: gravitational attraction pulls backwards |rarr| decelerated by the mass anomaly |rarr| **distance decreases**
- 4) When the trailing satellite passes the anomaly and leading satellite is far from the anomaly: trailing satellite decelerated by mass anomaly |rarr| **distance increases back to standard separation**
+ .. grid-item-card:: Spatial Maps
+ :text-align: center
+ :link: ./Spatial-Maps.html
-All the onboard measurements are combined with estimates of the background gravity field, atmospheric and oceanic variability,
-and tides to create the `Level-2 spherical harmonic product of GRACE and GRACE-FO`__.
+ :material-outlined:`travel_explore;5em`
-.. __: https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-docs/gracefo/open/docs/GRACE-FO_L2_UserHandbook.pdf
+ .. grid-item-card:: Time Series Analysis
+ :text-align: center
+ :link: ./Time-Series-Analysis.html
-Data Processing
-###############
+ :material-outlined:`line_axis;5em`
-There are three main processing centers that create the Level-2 spherical harmonic data as part of the GRACE/GRACE-FO Science Data System (SDS):
-the `University of Texas Center for Space Research (CSR) `_,
-the `German Research Centre for Geosciences (GeoForschungsZentrum, GFZ) `_ and
-the `Jet Propulsion Laboratory (JPL) `_.
+ .. grid-item-card:: Glossary
+ :text-align: center
+ :link: ./Glossary.html
-GRACE/GRACE-FO data is freely available in the US from
-the `NASA Physical Oceanography Distributed Active Archive Center (PO.DAAC) `_ and
-internationally from the `GFZ Information System and Data Center (ISDC) `_.
+ :material-outlined:`format_list_bulleted;5em`
.. tip::
- There are programs within this repository that can sync with both of these data archives:
- ``podaac_cumulus.py`` for `PO.DAAC AWS `_ and
- ``gfz_isdc_grace_ftp.py`` for the `GFZ ISDC `_.
-
-Geoid Height
-############
-
-The Level-2 spherical harmonic product of GRACE and GRACE-FO provides monthly
-estimates of the Earth's gravitational field [see :ref:`fig-sphharm`].
-The Earth's gravitational field varies in time as masses on and within the
-Earth move and are exchanged between components of the Earth system :cite:p:`Wahr:1998hy`.
-The instantaneous shape of the Earth's gravitational field can be described
-in terms of an equipotential surface, a surface of constant potential energy
-where the gravitational potential is constant :cite:p:`HofmannWellenhof:2006hy`.
-The Earth's geoid is the equipotential surface that coincides with global mean
-sea level if the oceans were at rest :cite:p:`HofmannWellenhof:2006hy,Wahr:1998hy`.
-The distance between the geoid and an Earth reference ellipsoid is the
-geoid height (:math:`N`), or the geoidal undulation :cite:p:`HofmannWellenhof:2006hy`.
-
-.. figure:: ../_assets/geoid_height.svg
- :width: 400
- :align: center
-
- Relationship between ellipsoid height, geoid height, and topographic height :cite:p:`NRC:1997ea`
-
-In spherical coordinates, the change in the height of the geoid,
-:math:`\Delta N(\theta,\phi)`, at colatitude :math:`\theta` and longitude :math:`\phi`,
-can be estimated from a series of spherical harmonics as:
-
-.. math::
- :label: 1
-
- \Delta N(\theta,\phi) = a\sum_{l=1}^{l_{max}}\sum_{m=0}^lP_{lm}(\cos\theta)\left[\Delta C_{lm}\cos{m\phi} + \Delta S_{lm}\sin{m\phi}\right]
-
-where :math:`a` is the average radius of the Earth,
-:math:`P_{lm}(\cos\theta)` are the fully-normalized Legendre polynomials of degree :math:`l` and order :math:`m` for the cosine of colatitude :math:`\theta`, and
-:math:`\Delta C_{lm}`, :math:`\Delta S_{lm}` are the changes in the cosine and sine spherical harmonics of degree :math:`l` and order :math:`m` :cite:p:`Chao:1987fq`.
-
-Surface Mass Density
-####################
-
-The radial component of a density change within the Earth cannot be uniquely
-determined using satellite gravity observations alone :cite:p:`Wahr:1998hy`.
-However, fluctuations in water storage and transport can be assumed to be largely
-concentrated within a thin layer near the Earth's surface :cite:p:`Wahr:1998hy`.
-With this assumption, the Earth's surface mass density
-(:math:`\Delta\sigma(\theta,\phi)`), the integral of the density change
-(:math:`\Delta\rho(r,\theta,\phi)`) through the thin surface layer,
-can be estimated as the following:
-
-.. math::
- :label: 2
-
- \Delta\sigma(\theta,\phi) = \frac{a\rho_{ave}}{3}\sum_{l=0}^{l_{max}}\sum_{m=0}^l\frac{2l+1}{1+k_l}P_{lm}(\cos\theta)\left[\Delta C_{lm}\cos{m\phi} + \Delta S_{lm}\sin{m\phi}\right]
-
-where :math:`\rho_{ave}` is the average density of the Earth, and
-:math:`k_l` is the gravitational potential load Love number of degree :math:`l`.
-Using this assumption, solid Earth variations occurring outside of this
-thin layer, such as Glacial Isostatic Adjustment (GIA) effects,
-must be independently estimated and removed.
-
-.. |rarr| unicode:: U+2192 .. RIGHTWARDS ARROW
+ For a more in-depth understanding of the underlying concepts: refer to the :ref:`original literature ` and the :ref:`project resources `.
+
+.. toctree::
+ :hidden:
+ :maxdepth: 1
+ :numbered:
+ :caption: Background
+
+ ./Measurement-Principle.rst
+ ./Spherical-Harmonics.rst
+ ./Love-Numbers.rst
+ ./GRACE-Data-Products.rst
+ ./Geocenter-Variations.rst
+ ./Spatial-Maps.rst
+ ./Time-Series-Analysis.rst
+ ./Glossary.rst
diff --git a/doc/source/getting_started/GRACE-Data-File-Formats.rst b/doc/source/background/GRACE-Data-Products.rst
similarity index 82%
rename from doc/source/getting_started/GRACE-Data-File-Formats.rst
rename to doc/source/background/GRACE-Data-Products.rst
index 66bd180d..b0266c5e 100644
--- a/doc/source/getting_started/GRACE-Data-File-Formats.rst
+++ b/doc/source/background/GRACE-Data-Products.rst
@@ -1,6 +1,23 @@
-=================
-Data File Formats
-=================
+=============
+Data Products
+=============
+
+Data Processing
+###############
+
+There are three main processing centers that create the Level-2 spherical harmonic data as part of the GRACE/GRACE-FO Science Data System (SDS):
+the `University of Texas Center for Space Research (CSR) `_,
+the `German Research Centre for Geosciences (GeoForschungsZentrum, GFZ) `_ and
+the `Jet Propulsion Laboratory (JPL) `_.
+
+GRACE/GRACE-FO data is freely available in the US from
+the `NASA Physical Oceanography Distributed Active Archive Center (PO.DAAC) `_ and
+internationally from the `GFZ Information System and Data Center (ISDC) `_.
+
+.. tip::
+ There are programs within this repository that can sync with both of these data archives:
+ :py:mod:`podaac_cumulus.py` for `PO.DAAC AWS `_ and
+ :py:mod:`gfz_isdc_grace_ftp.py` for the `GFZ ISDC `_.
Product Identifier
##################
diff --git a/doc/source/background/Geocenter-Variations.rst b/doc/source/background/Geocenter-Variations.rst
index b6f3d548..f9cd5127 100644
--- a/doc/source/background/Geocenter-Variations.rst
+++ b/doc/source/background/Geocenter-Variations.rst
@@ -2,17 +2,10 @@
Geocenter Variations
====================
-Variations in the Earth's geocenter reflect the largest scale
-variability of mass within the Earth system, and are essential
-inclusions for the complete recovery of surface mass change from
-time-variable gravity.
-The Earth's geocenter is the translation between the Earth's
-center of mass (CM) and center of figure (CF) reference frames.
-Measurements of time-variable gravity from GRACE and GRACE Follow-On
-(GRACE-FO) are set in an instantaneous center of mass (CM) reference frame.
-For most science applications of time-variable gravity, a coordinate
-system with an origin coinciding with the Earth's center of figure
-(CF) is required.
+Variations in the Earth's geocenter reflect the largest scale variability of mass within the Earth system, and are essential inclusions for the complete recovery of surface mass change from time-variable gravity.
+The Earth's geocenter is the translation between the Earth's center of mass (CM) and center of figure (CF) reference frames.
+Measurements of time-variable gravity from GRACE and GRACE Follow-On (GRACE-FO) are set in an instantaneous center of mass (CM) reference frame.
+For most science applications of time-variable gravity, a coordinate system with an origin coinciding with the Earth's center of figure (CF) is required.
Geocenter variations are represented by the degree one spherical harmonic terms.
.. important::
@@ -21,13 +14,8 @@ Geocenter variations are represented by the degree one spherical harmonic terms.
of ocean mass, ice sheet mass change, and terrestrial hydrology due to
far-field signals leaking into each regional estimate :cite:p:`Velicogna:2009ft`.
-``calc_degree_one.py`` calculates coefficients of degree one by combining
-GRACE/GRACE-FO spherical harmonic products with estimates of
-ocean bottom pressure (OBP) following :cite:t:`Swenson:2008cr,Sutterley:2019bx`.
-The method assumes that the change in global surface mass density,
-:math:`\Delta\sigma(\theta,\phi)`, can be separated into individual
-land and ocean components using a land-function
-:math:`\vartheta(\theta,\phi)` :cite:p:`Swenson:2008cr`.
+:py:mod:`calc_degree_one.py` calculates coefficients of degree one by combining GRACE/GRACE-FO spherical harmonic products with estimates of ocean bottom pressure (OBP) following :cite:t:`Swenson:2008cr,Sutterley:2019bx`.
+The method assumes that the change in global surface mass density, :math:`\Delta\sigma(\theta,\phi)`, can be separated into individual land and ocean components using a land-function :math:`\vartheta(\theta,\phi)` :cite:p:`Swenson:2008cr`.
.. math::
:label: 4
@@ -35,30 +23,16 @@ land and ocean components using a land-function
\Delta\sigma(\theta,\phi) &= \Delta\sigma_{land}(\theta,\phi) + \Delta\sigma_{ocean}(\theta,\phi)\\
\Delta\sigma_{ocean}(\theta,\phi) &= \vartheta(\theta,\phi)~\Delta\sigma(\theta,\phi)
-The oceanic components of the change in degree one spherical harmonics
-(:math:`\Delta C^{ocean}_{10}`, :math:`\Delta C^{ocean}_{11}`, and :math:`\Delta S^{ocean}_{11}`)
-can then be calculated from the changes in ocean mass,
-:math:`\Delta\sigma_{ocean}(\theta,\phi)` :cite:p:`Swenson:2008cr,Wahr:1998hy`.
-If the oceanic contributions to degree one variability
-(:math:`\Delta C^{ocean}_{10}`, :math:`\Delta C^{ocean}_{11}`, and :math:`\Delta S^{ocean}_{11}`)
-can be estimated from an ocean model, then the unknown complete degree one terms
-(:math:`\Delta C_{10}`, :math:`\Delta C_{11}`, and :math:`\Delta S_{11}`) can be
-calculated from the residual between the oceanic degree one terms and the
-measured mass change over the ocean calculated using all other degrees of
-the global spherical harmonics from GRACE/GRACE-FO :cite:p:`Swenson:2008cr,Sutterley:2019bx`.
-
-The ``calc_degree_one.py`` program will output geocenter files in ascii format
-for each GRACE/GRACE-FO month following :cite:t:`Sutterley:2019bx`.
-Uncertainties in geocenter due to a combination of error sources can be
-estimated using the ``monte_carlo_degree_one.py`` program.
+The oceanic components of the change in degree one spherical harmonics (:math:`\Delta C^{ocean}_{10}`, :math:`\Delta C^{ocean}_{11}`, and :math:`\Delta S^{ocean}_{11}`) can then be calculated from the changes in ocean mass, :math:`\Delta\sigma_{ocean}(\theta,\phi)` :cite:p:`Swenson:2008cr,Wahr:1998hy`.
+If the oceanic contributions to degree one variability (:math:`\Delta C^{ocean}_{10}`, :math:`\Delta C^{ocean}_{11}`, and :math:`\Delta S^{ocean}_{11}`) can be estimated from an ocean model, then the unknown complete degree one terms (:math:`\Delta C_{10}`, :math:`\Delta C_{11}`, and :math:`\Delta S_{11}`) can be calculated from the residual between the oceanic degree one terms and the measured mass change over the ocean calculated using all other degrees of the global spherical harmonics from GRACE/GRACE-FO :cite:p:`Swenson:2008cr,Sutterley:2019bx`.
+
+The :py:mod:`calc_degree_one.py` program will output geocenter files in ascii format for each GRACE/GRACE-FO month following :cite:t:`Sutterley:2019bx`.
+Uncertainties in geocenter due to a combination of error sources can be estimated using the :py:mod:`monte_carlo_degree_one.py` program.
Load Love Numbers
#################
-The degree one Love number of gravitational potential :math:`k_1` is defined so
-that the degree one terms describe the offset between the center of mass (CM)
-of the combined surface mass and deformed solid Earth, and the center of figure (CF)
-of the deformed solid Earth surface :cite:p:`Trupin:1992kp,Blewitt:2003bz`.
+The degree one Love number of gravitational potential :math:`k_1` is defined so that the degree one terms describe the offset between the center of mass (CM) of the combined surface mass and deformed solid Earth, and the center of figure (CF) of the deformed solid Earth surface :cite:p:`Trupin:1992kp,Blewitt:2003bz`.
For the CF coordinate system, this means
.. math::
@@ -66,14 +40,12 @@ For the CF coordinate system, this means
k_1 = -(h_1 + 2\ell_1)/3
-where :math:`h_1` and :math:`\ell_1` are the degree one vertical and
-horizontal displacement Love numbers.
+where :math:`h_1` and :math:`\ell_1` are the degree one vertical and horizontal displacement Love numbers.
Geocenter and Degree One
########################
-Fully-normalized degree one variations can be converted to
-cartesian geocenter variations using the following relation:
+Fully-normalized degree one variations can be converted to cartesian geocenter variations using the following relation:
.. math::
:label: 6
@@ -83,6 +55,4 @@ cartesian geocenter variations using the following relation:
\Delta Z &= a\sqrt{3}~\Delta C_{10}
-The ``geocenter`` class has utilities for converting between
-spherical harmonics and geocenter variation along with
-readers for different geocenter datasets.
+The :py:class:`geocenter` class has utilities for converting between spherical harmonics and geocenter variation along with readers for different geocenter datasets.
diff --git a/doc/source/background/Glossary.rst b/doc/source/background/Glossary.rst
new file mode 100644
index 00000000..1bb7bd1e
--- /dev/null
+++ b/doc/source/background/Glossary.rst
@@ -0,0 +1,51 @@
+.. _gravity-glossary:
+
+========
+Glossary
+========
+
+.. glossary::
+
+ Body Tide
+ see :term:`Solid Earth Tide`
+
+ Chandler Wobble
+ small, semi-periodic deviations in the motion of the pole of rotation
+
+ Epoch
+ fixed point in time used as a reference value
+
+ Flattening
+ ratio of the difference between the semi-major and semi-minor axes of an ellipsoid to the semi-major axis
+
+ Free Core Nutation
+ nearly diurnal deviations in the motion of the pole of rotation due to the resonant motion of the Earth's core relative to the mantle
+
+ see :term:`Nutation`
+
+ Geopotential
+ the Earth's gravitational potential
+
+ Geoid
+ equipotential surface coinciding with the ocean surface in the absence of astronomical or dynamical effects
+
+ Love and Shida Numbers
+ dimensionless parameters relating the vertical (`h`), horizontal (`l`) and gravitational (`k`) elastic responses to tidal loading
+
+ Nutation
+ short-period oscillations in the motion of the pole of rotation of a freely rotating body
+
+ Polar Motion
+ irregular motion of the Earth's pole of rotation relative to the Earth's crust
+
+ Pole Tide
+ apparent tide due to variations in the Earth's axis of rotation about its mean
+
+ Precession
+ regular conical motion of the pole of rotation of a freely rotating body
+
+ Solid Earth Tide
+ deformation of the solid Earth due to gravitational forces
+
+ Tilt Factor
+ Combination of :term:`Love/Shida numbers ` describing the displacement of the Earth's ocean surface with respect to the Earth's deformed crust
diff --git a/doc/source/background/Love-Numbers.rst b/doc/source/background/Love-Numbers.rst
new file mode 100644
index 00000000..9c1fb014
--- /dev/null
+++ b/doc/source/background/Love-Numbers.rst
@@ -0,0 +1,36 @@
+.. _love-and-shida-numbers:
+
+======================
+Love and Shida Numbers
+======================
+
+When the mass distribution on the surface of the Earth varies, the solid Earth deforms both elastically and inelastically.
+This deformation has three distinct components:
+
+1. a vertical (radial) displacement of the surface
+2. a horizontal (tangential) displacement of the surface
+3. a change in the gravitational potential
+
+The magnitude of each individual component can be characterised by a dimensionless scaling factor :cite:p:`Love:1909eh,Shida:1912dj`.
+These factors are collectively known as :term:`Love/Shida Numbers `, and are defined for each :ref:`spherical harmonic degree `.
+
+.. list-table::
+ :header-rows: 1
+ :align: center
+
+ * - Symbol
+ - Name
+ * - :math:`h_l`
+ - Love number (vertical)
+ * - :math:`k_l`
+ - Love number (potential)
+ * - :math:`l_l`
+ - Shida number (horizontal)
+
+.. _load-love-numbers:
+
+Load Love Numbers
+-----------------
+
+Load Love numbers describe the deformation of the solid Earth in response to a change in *surface mass load*.
+The loading change acts upon the *surface of the Earth* :cite:p:`Wahr:1998hy`.
diff --git a/doc/source/background/Measurement-Principle.rst b/doc/source/background/Measurement-Principle.rst
new file mode 100644
index 00000000..0b6a8925
--- /dev/null
+++ b/doc/source/background/Measurement-Principle.rst
@@ -0,0 +1,26 @@
+Measurement Principle
+#####################
+
+GRACE and the GRACE Follow-on (GRACE-FO) missions each consist of twin satellites in similar low Earth orbits :cite:p:`Tapley:2019cm`.
+The primary and secondary instrumentation onboard the GRACE/GRACE-FO satellites are the ranging instrument
+(GRACE has a microwave ranging instrument, GRACE-FO has both a microwave ranging instrument and a laser interferometer),
+the global positioning system (GPS), the accelerometers and the star cameras.
+Data from these instruments are combined to estimate the distance between the two satellites,
+the positions of the satellites in space, the pointing vector of the satellites and any non-gravitational
+accelerations the satellites experience.
+
+.. admonition:: The Big Idea
+
+ GRACE/GRACE-FO senses changes in gravity by measuring the change in distance between the two twin satellites:
+
+ 1) As the satellites approach a mass anomaly: leading satellite "feels" a greater gravitational attraction and accelerates |rarr| **distance increases**
+ 2) As the trailing satellite approaches: greater gravitational attraction |rarr| accelerated by the mass anomaly |rarr| **distance decreases**
+ 3) Leading satellite passes the anomaly: gravitational attraction pulls backwards |rarr| decelerated by the mass anomaly |rarr| **distance decreases**
+ 4) When the trailing satellite passes the anomaly and leading satellite is far from the anomaly: trailing satellite decelerated by mass anomaly |rarr| **distance increases back to standard separation**
+
+All the onboard measurements are combined with estimates of the background gravity field, atmospheric and oceanic variability,
+and tides to create the `Level-2 spherical harmonic product of GRACE and GRACE-FO`__.
+
+.. __: https://archive.podaac.earthdata.nasa.gov/podaac-ops-cumulus-docs/gracefo/open/docs/GRACE-FO_L2_UserHandbook.pdf
+
+.. |rarr| unicode:: U+2192 .. RIGHTWARDS ARROW
diff --git a/doc/source/background/Spatial-Maps.rst b/doc/source/background/Spatial-Maps.rst
index f6126a5b..ba64ead7 100644
--- a/doc/source/background/Spatial-Maps.rst
+++ b/doc/source/background/Spatial-Maps.rst
@@ -11,7 +11,7 @@ remove unwanted sources of gravitational variability, and convert to appropriate
.. tip::
- The ``grace_spatial_maps.py`` program will output spatial files in ascii, netCDF4 or HDF5 format
+ The :py:mod:`grace_spatial_maps.py` program will output spatial files in ascii, netCDF4 or HDF5 format
for each GRACE/GRACE-FO month.
Load Love Numbers
@@ -29,7 +29,7 @@ removed from the spherical harmonic coefficients :cite:p:`Wahr:1998hy`.
Here, we use load Love and Shida numbers with parameters calculated from
the Preliminary Reference Earth model (PREM) :cite:p:`Farrell:1972cm,Dziewonski:1981bz`.
In order to help estimate the uncertainty in elastic deformation,
-``grace_spatial_maps.py`` can use different sets of load Love numbers by adjusting the
+:py:mod:`grace_spatial_maps.py` can use different sets of load Love numbers by adjusting the
``--love`` command line option.
Reference Frames
@@ -44,13 +44,13 @@ Applications set in a center of figure (CF) reference frame,
such as the recovery of mass variations of the oceans, hydrosphere and cryosphere,
require the inclusion of degree one terms to be fully accurate :cite:p:`Swenson:2008cr`.
-``grace_spatial_maps.py`` has geocenter options to select the degree one product to
+:py:mod:`grace_spatial_maps.py` has geocenter options to select the degree one product to
include with the GRACE/GRACE-FO derived harmonics.
There are options for using measurements from satellite laser ranging :cite:p:`Cheng:2013tz` and
calculations from time-variable gravity and ocean model outputs :cite:p:`Swenson:2008cr,Sutterley:2019bx`.
If including degree one harmonics and changing the reference frame,
the reference frame for the load Love numbers needs to be updated accordingly :cite:p:`Blewitt:2003bz`.
-In ``grace_spatial_maps.py`` and other GRACE/GRACE-FO programs, the reference frame for the load Love numbers
+In :py:mod:`grace_spatial_maps.py` and other GRACE/GRACE-FO programs, the reference frame for the load Love numbers
is adjusted by setting the ``--reference`` command line option to ``'CF'``.
Low-Degree Harmonics
@@ -83,7 +83,7 @@ The figure axis harmonics (:math:`C_{21}` and :math:`S_{21}`) may also be contam
by noise during the single-accelerometer months in the GFZ products :cite:p:`Dahle:2019jf`.
Measurements from satellite laser ranging (SLR) can provide an independent assessment
for some low degree and order spherical harmonics.
-``grace_spatial_maps.py`` has options for replacing
+:py:mod:`grace_spatial_maps.py` has options for replacing
:math:`C_{20}`,
:math:`C_{21}`,
:math:`S_{21}`,
diff --git a/doc/source/background/Spherical-Harmonics.rst b/doc/source/background/Spherical-Harmonics.rst
index ad5d1617..d8a4ea06 100644
--- a/doc/source/background/Spherical-Harmonics.rst
+++ b/doc/source/background/Spherical-Harmonics.rst
@@ -1,9 +1,51 @@
-:orphan:
+.. _spherical-harmonics:
+
+Spherical Harmonics
+===================
+
+Geoid Height
+------------
+
+The Level-2 spherical harmonic product of GRACE and GRACE-FO provides monthly estimates of the Earth's gravitational field [see :ref:`fig-sphharm`].
+The Earth's gravitational field varies in time as masses on and within the Earth move and are exchanged between components of the Earth system :cite:p:`Wahr:1998hy`.
+The instantaneous shape of the Earth's gravitational field can be described in terms of an equipotential surface, a surface of constant potential energy where the gravitational potential is constant :cite:p:`HofmannWellenhof:2006hy`.
+The Earth's geoid is the equipotential surface that coincides with global mean sea level if the oceans were at rest :cite:p:`HofmannWellenhof:2006hy,Wahr:1998hy`.
+The distance between the geoid and an Earth reference ellipsoid is the geoid height (:math:`N`), or the geoidal undulation :cite:p:`HofmannWellenhof:2006hy`.
+
+.. figure:: ../_assets/geoid_height.svg
+ :width: 400
+ :align: center
+
+ Relationship between ellipsoid height, geoid height, and topographic height :cite:p:`NRC:1997ea`
+
+In spherical coordinates, the change in the height of the geoid, :math:`\Delta N(\theta,\phi)`, at colatitude :math:`\theta` and longitude :math:`\phi`, can be estimated from a series of spherical harmonics as:
+
+.. math::
+ :label: 1
+
+ \Delta N(\theta,\phi) = a\sum_{l=1}^{l_{max}}\sum_{m=0}^lP_{lm}(\cos\theta)\left[\Delta C_{lm}\cos{m\phi} + \Delta S_{lm}\sin{m\phi}\right]
+
+where :math:`a` is the average radius of the Earth, :math:`P_{lm}(\cos\theta)` are the fully-normalized Legendre polynomials of degree :math:`l` and order :math:`m` for the cosine of colatitude :math:`\theta`, and :math:`\Delta C_{lm}`, :math:`\Delta S_{lm}` are the changes in the cosine and sine spherical harmonics of degree :math:`l` and order :math:`m` :cite:p:`Chao:1987fq`.
+
+Surface Mass Density
+--------------------
+
+The radial component of a density change within the Earth cannot be uniquely determined using satellite gravity observations alone :cite:p:`Wahr:1998hy`.
+However, fluctuations in water storage and transport can be assumed to be largely concentrated within a thin layer near the Earth's surface :cite:p:`Wahr:1998hy`.
+With this assumption, the Earth's surface mass density (:math:`\Delta\sigma(\theta,\phi)`), the integral of the density change (:math:`\Delta\rho(r,\theta,\phi)`) through the thin surface layer, can be estimated as the following:
+
+.. math::
+ :label: 2
+
+ \Delta\sigma(\theta,\phi) = \frac{a\rho_{ave}}{3}\sum_{l=0}^{l_{max}}\sum_{m=0}^l\frac{2l+1}{1+k_l}P_{lm}(\cos\theta)\left[\Delta C_{lm}\cos{m\phi} + \Delta S_{lm}\sin{m\phi}\right]
+
+where :math:`\rho_{ave}` is the average density of the Earth, and :math:`k_l` is the gravitational potential load Love number of degree :math:`l`.
+Using this assumption, solid Earth variations occurring outside of this thin layer, such as Glacial Isostatic Adjustment (GIA) effects, must be independently estimated and removed.
.. _fig-sphharm:
-Spherical Harmonics
--------------------
+Low-Degree Harmonics
+--------------------
.. plot:: ./background/sphharm.py
:show-source-link: False
diff --git a/doc/source/background/Time-Series-Analysis.rst b/doc/source/background/Time-Series-Analysis.rst
index 86f5234e..d60fa7ac 100644
--- a/doc/source/background/Time-Series-Analysis.rst
+++ b/doc/source/background/Time-Series-Analysis.rst
@@ -58,10 +58,10 @@ Getting the kernels "just right" in order to isolate regions of interest takes s
The set of least-squares mascon programs have been used in :cite:p:`Velicogna:2014km`
and other publications for regional time series analysis.
-The ``calc_mascon.py`` program additionally calculates the GRACE/GRACE-FO error
+The :py:mod:`calc_mascon.py` program additionally calculates the GRACE/GRACE-FO error
harmonics following :cite:t:`Wahr:2006bx`.
-The ``calc_mascon.py`` program will output a text file of the time series for each mascon
+The :py:mod:`calc_mascon.py` program will output a text file of the time series for each mascon
with columns: GRACE/GRACE-FO month, mid-month date in decimal-year format,
estimated monthly mass anomaly [Gt], estimated monthly error [Gt], and
mascon area [km\ :sup:`2`].
diff --git a/doc/source/background/sphharm.py b/doc/source/background/sphharm.py
index c7cca1b6..85852172 100644
--- a/doc/source/background/sphharm.py
+++ b/doc/source/background/sphharm.py
@@ -28,8 +28,8 @@
projection = ccrs.Orthographic(central_longitude=0.0, central_latitude=0.0)
# plot spherical harmonics
-fig = plt.figure(num=1, figsize=(12,7))
-patch = mpatches.Rectangle((0, 0), 0.445, 1, color='0.975',
+fig = plt.figure(num=1, figsize=(12,7), facecolor="#fcfcfc")
+patch = mpatches.Rectangle((0, 0), 0.445, 1, color='0.95',
zorder=0, transform=fig.transFigure)
fig.add_artist(patch)
diff --git a/doc/source/conf.py b/doc/source/conf.py
index de2d6649..4e8c4de8 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -12,12 +12,17 @@
#
import os
# import sys
+import logging
import datetime
+import warnings
+
# sys.path.insert(0, os.path.abspath('.'))
import importlib.metadata
# -- Project information -----------------------------------------------------
+on_rtd = os.environ.get("READTHEDOCS") == "True"
+on_github = os.environ.get("GITHUB_ACTIONS") == "true"
# package metadata
metadata = importlib.metadata.metadata("gravity-toolkit")
@@ -31,6 +36,23 @@
# append "v" before the version
release = f"v{version}"
+# filter out numfig warnings when building documentation, see
+# https://github.com/sphinx-doc/sphinx/issues/10316
+# https://github.com/sphinx-doc/sphinx/pull/14446
+class numfig_filter(logging.Filter):
+ def filter(self, record):
+ warning_type = getattr(record, "type", "")
+ warning_subtype = getattr(record, "subtype", "")
+ suppress_warning = (
+ f"{warning_type}.{warning_subtype}" == "html.numfig_format"
+ or record.getMessage().startswith("numfig_format")
+ )
+ return not suppress_warning
+
+# suppress warnings in examples and documentation
+if on_rtd:
+ warnings.filterwarnings("ignore")
+
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
@@ -54,6 +76,21 @@
".ipynb": "myst-nb",
}
nb_execution_mode = "off"
+# execute notebooks on build
+if on_rtd:
+ nb_execution_mode = "auto"
+ nb_execution_excludepatterns = [
+ "notebooks/*.ipynb",
+ ]
+ nb_output_stderr = "remove-warn"
+elif on_github:
+ nb_execution_mode = "off"
+else:
+ nb_execution_mode = "auto"
+ nb_execution_excludepatterns = [
+ "notebooks/*.ipynb",
+ ]
+ nb_output_stderr = "remove-warn"
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -85,10 +122,16 @@
html_show_sphinx = True
html_show_copyright = True
+numfig_format = {
+ "code-block": None,
+ "figure": "Figure %s:",
+ "table": "Table %s:",
+}
+
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
-html_theme = 'sphinx_rtd_theme'
+html_theme = "sphinx_rtd_theme"
html_theme_options = {
"logo_only": True,
}
@@ -96,18 +139,35 @@
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_logo = "_assets/logo.png"
-html_static_path = ['_static']
-repository_url = f"https://github.com/tsutterley/gravity-toolkit"
+html_logo = "_assets/gravity_logo.png"
+html_static_path = ["_static"]
+# fetch the project urls
+project_urls = {}
+for project_url in metadata.get_all("Project-URL"):
+ name, _, url = project_url.partition(", ")
+ project_urls[name.lower()] = url
+# fetch the repository url
+github_url = project_urls.get("repository")
+*_, github_user, github_repo = github_url.split("/")
+# add html context
html_context = {
+ "display_github": True,
+ "github_user": github_user,
+ "github_repo": github_repo,
+ "github_version": "main",
+ "conf_py_path": "/doc/source/",
"menu_links": [
(
' Source Code',
- repository_url,
+ github_url,
),
(
' License',
- f"{repository_url}/blob/main/LICENSE",
+ f"{github_url}/blob/main/LICENSE",
+ ),
+ (
+ ' Discussions',
+ f"{github_url}/discussions",
),
],
}
diff --git a/doc/source/getting_started/Install.ipynb b/doc/source/getting_started/Install.ipynb
new file mode 100644
index 00000000..74fd99ed
--- /dev/null
+++ b/doc/source/getting_started/Install.ipynb
@@ -0,0 +1,181 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "2e01086c",
+ "metadata": {},
+ "source": [
+ "# Setup and Installation\n",
+ "\n",
+ "## Installation\n",
+ "\n",
+ "`gravity-toolkit` is available for download from the [GitHub repository](https://github.com/tsutterley/gravity-toolkit), the [Python Package Index (pypi)](https://pypi.org/project/gravity-toolkit/), and from [conda-forge](https://anaconda.org/conda-forge/gravity-toolkit).\n",
+ "\n",
+ "\n",
+ "The simplest installation for most users will likely be using `conda` or `mamba`:\n",
+ "\n",
+ "```bash\n",
+ "conda install -c conda-forge gravity-toolkit\n",
+ "```\n",
+ "\n",
+ "`conda` installed versions of `gravity-toolkit` can be upgraded to the latest stable release:\n",
+ "\n",
+ "```bash\n",
+ "conda update gravity-toolkit\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "af65ece3",
+ "metadata": {},
+ "source": [
+ "(development-install)=\n",
+ "\n",
+ "## Development Install\n",
+ "\n",
+ "To use the development repository, please fork `gravity-toolkit` into your own account and then clone onto your system:\n",
+ "\n",
+ "```bash\n",
+ "git clone https://github.com/tsutterley/gravity-toolkit.git\n",
+ "```\n",
+ "\n",
+ "`gravity-toolkit` can then be installed within the package directory using `pip`:\n",
+ "\n",
+ "```bash\n",
+ "python3 -m pip install --user .\n",
+ "```\n",
+ "\n",
+ "To include all optional dependencies:\n",
+ "\n",
+ "```bash\n",
+ "python3 -m pip install --user .[all]\n",
+ "```\n",
+ "\n",
+ "The development version of `gravity-toolkit` can also be installed directly from GitHub using `pip`:\n",
+ "\n",
+ "```bash\n",
+ "python3 -m pip install --user git+https://github.com/tsutterley/gravity-toolkit.git\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "14ae498c",
+ "metadata": {},
+ "source": [
+ "## Package Management with ``pixi``\n",
+ "\n",
+ "Alternatively `pixi` can be used to create a [streamlined environment](https://pixi.sh/) after cloning the repository:\n",
+ "\n",
+ "```bash\n",
+ "pixi install\n",
+ "```\n",
+ "\n",
+ "`pixi` maintains isolated environments for each project, allowing for different versions of `gravity-toolkit` and its dependencies to be used without conflict.\n",
+ "The `pixi.lock` file within the repository defines the required packages and versions for the environment.\n",
+ "\n",
+ "`pixi` can also create shells for running programs within the environment:\n",
+ "\n",
+ "```bash\n",
+ "pixi shell\n",
+ "```\n",
+ "\n",
+ "To see the available tasks within the `gravity-toolkit` workspace:\n",
+ "\n",
+ "```bash\n",
+ "pixi task list\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "15f4d37e",
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "! pixi task list"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "158990b9",
+ "metadata": {},
+ "source": [
+ "```{note}\n",
+ "`pixi` is under active development and may change in future releases\n",
+ "```\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "286e9898",
+ "metadata": {},
+ "source": [
+ "## Verifying Installation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "dbeee9a1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import gravity_toolkit as gravtk\n",
+ "\n",
+ "print(f\"gravity-toolkit version: {gravtk.__version__}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1c110ff4",
+ "metadata": {},
+ "source": [
+ "## Configuration\n",
+ "\n",
+ "The `gravity-toolkit` cache directory is the default location for downloaded GRACE/GRACE-FO and auxiliary data.\n",
+ "The default cache directory is platform-specific and set by the `platformdirs` package.\n",
+ "This parametrized path can be _persistently_ overridden on a machine by setting the `GRAVTK_CACHE_DIR` environment variable.\n",
+ "\n",
+ "The location of the cache directory used by `gravity-toolkit` can be checked by:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "ad800ca5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gravtk.utilities.get_cache_path()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "py13",
+ "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.13.0"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/doc/source/getting_started/Install.rst b/doc/source/getting_started/Install.rst
deleted file mode 100644
index 2390efb8..00000000
--- a/doc/source/getting_started/Install.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-============
-Installation
-============
-
-``gravity-toolkit`` is available for download from the `GitHub repository `_,
-the `Python Package Index (pypi) `_,
-and from `conda-forge `_.
-
-
-The simplest installation for most users will likely be using ``conda`` or ``mamba``:
-
-.. code-block:: bash
-
- conda install -c conda-forge gravity-toolkit
-
-``conda`` installed versions of ``gravity-toolkit`` can be upgraded to the latest stable release:
-
-.. code-block:: bash
-
- conda update gravity-toolkit
-
-Development Install
-###################
-
-To use the development repository, please fork ``gravity-toolkit`` into your own account and then clone onto your system:
-
-.. code-block:: bash
-
- git clone https://github.com/tsutterley/gravity-toolkit.git
-
-``gravity-toolkit`` can then be installed within the package directory using ``pip``:
-
-.. code-block:: bash
-
- python3 -m pip install --user .
-
-To include all optional dependencies:
-
-.. code-block:: bash
-
- python3 -m pip install --user .[all]
-
-The development version of ``gravity-toolkit`` can also be installed directly from GitHub using ``pip``:
-
-.. code-block:: bash
-
- python3 -m pip install --user git+https://github.com/tsutterley/gravity-toolkit.git
-
-Package Management with ``pixi``
-################################
-
-Alternatively ``pixi`` can be used to create a `streamlined environment `_ after cloning the repository:
-
-.. code-block:: bash
-
- pixi install
-
-``pixi`` maintains isolated environments for each project, allowing for different versions of
-``gravity-toolkit`` and its dependencies to be used without conflict. The ``pixi.lock`` file within the
-repository defines the required packages and versions for the environment.
-
-``pixi`` can also create shells for running programs within the environment:
-
-.. code-block:: bash
-
- pixi shell
-
-To see the available tasks within the ``gravity-toolkit`` workspace:
-
-.. code-block:: bash
-
- pixi task list
-
-.. note::
-
- ``pixi`` is under active development and may change in future releases
diff --git a/doc/source/getting_started/NASA-Earthdata.rst b/doc/source/getting_started/NASA-Earthdata.rst
deleted file mode 100644
index 441ec213..00000000
--- a/doc/source/getting_started/NASA-Earthdata.rst
+++ /dev/null
@@ -1,74 +0,0 @@
-==============
-NASA Earthdata
-==============
-
-NASA Data Distribution Centers
-##############################
-
-The NASA Earth Science Data Information Systems Project funds and operates
-`12 Distributed Active Archive Centers (DAACs) `_ throughout the United States.
-These centers have recently transitioned from ftp to https servers.
-The https updates are designed to increase performance and improve security during data retrieval.
-NASA Earthdata uses `OAuth2 `_, an approach to authentication that protects your personal information.
-
-- https://urs.earthdata.nasa.gov/documentation
-- https://wiki.earthdata.nasa.gov/display/EL/Knowledge+Base
-
-PO.DAAC
-#######
-The `Physical Oceanography Distributed Active Archive Center (PO.DAAC) `_
-provides data and related information pertaining to the physical processes and conditions of the global oceans,
-including measurements of ocean winds, temperature, topography, salinity, circulation and currents, and sea ice.
-PO.DAAC hosts
-
-PO.DAAC has `migrated its data archive to the Earthdata Cloud `_,
-which is hosted in Amazon Web Services (AWS).
-
-.. tip::
-
- If any problems contact JPL PO.DAAC support at `podaac@podaac.jpl.nasa.gov `_
- or the NASA EOSDIS support team `support@earthdata.nasa.gov `_.
-
-Steps to Sync from PO.DAAC
---------------------------
-
-1. `Register with NASA Earthdata Login system `_
-2. `Sync time-variable gravity data using your Earthdata credentials `_
-
-Can also create a ``.netrc`` file for permanently storing NASA Earthdata credentials:
-
-.. code-block:: bash
-
- echo "machine urs.earthdata.nasa.gov login password " >> ~/.netrc
- chmod 0600 ~/.netrc
-
-Or set environmental variables for your NASA Earthdata credentials:
-
-.. code-block:: bash
-
- export EARTHDATA_USERNAME=
- export EARTHDATA_PASSWORD=
-
-NASA Common Metadata Repository
-###############################
-
-The NASA Common Metadata Repository (CMR) is a catalog of all data
-and service metadata records contained as part of NASA's Earth
-Observing System Data and Information System (EOSDIS).
-Querying the CMR system is a way of quickly performing a search
-through the NASA Earthdata archive.
-Basic queries for the granule names, PO.DAAC URLs and modification times
-of GRACE/GRACE-FO data are available through the ``cmr`` routine in the
-``utilities`` module.
-For AWS instances in ``us-west-2``, CMR queries can access urls for S3 endpoints.
-
-.. code-block:: python
-
- ids,urls,mtimes = gravity_toolkit.utilities.cmr(mission='grace-fo',
- center='JPL', release='RL06', level='L2', product='GSM',
- solution='BA01', provider='POCLOUD', endpoint='s3', verbose=False)
-
-Other Data Access Examples
-##########################
-- `Curl and Wget `_
-- `Python `_
diff --git a/doc/source/getting_started/Resources.rst b/doc/source/getting_started/Resources.rst
index ff632027..6d1c64de 100644
--- a/doc/source/getting_started/Resources.rst
+++ b/doc/source/getting_started/Resources.rst
@@ -1,3 +1,5 @@
+.. _resources:
+
=========
Resources
=========
@@ -31,6 +33,7 @@ Product Information
Processing Standards
####################
+
- `GRACE-FO CSR Level-2 Processing Standards Document `_
- `GRACE-FO GFZ Level-2 Processing Standards Document `_
- `GRACE-FO JPL Level-2 Processing Standards Document `_
@@ -44,4 +47,4 @@ Software
- `frommle: python/C++ software suite for geodesy and Earth Sciences `_
- `geoid-toolkit: python utilities for calculating geoid heights from static gravity field coefficients `_
- `model-harmonics: python tools for working with model synthetic spherical harmonic coefficients `_
-- `dynamic_mascons: 3D global variable-size mascon development `_
\ No newline at end of file
+- `dynamic_mascons: 3D global variable-size mascon development `_
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 60440b96..526b3c3d 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -9,9 +9,9 @@ coefficients from the NASA/DLR Gravity Recovery and Climate Experiment (GRACE) a
the NASA/GFZ Gravity Recovery and Climate Experiment Follow-On (GRACE-FO) missions.
Introduction
-------------
+============
-.. grid:: 2 2 4 4
+.. grid:: 2 2 2 2
:padding: 0
.. grid-item-card:: Installation
@@ -26,12 +26,30 @@ Introduction
:material-outlined:`hiking;5em`
+User Guide
+==========
+
+.. grid:: 2 2 4 4
+ :padding: 0
+
+ .. grid-item-card:: API Reference
+ :text-align: center
+ :link: ./api_reference/API-Reference.html
+
+ :material-outlined:`list_alt;5em`
+
.. grid-item-card:: Background
:text-align: center
:link: ./background/Background.html
:material-outlined:`library_books;5em`
+ .. grid-item-card:: NASA Earthdata
+ :text-align: center
+ :link: ./user_guide/NASA-Earthdata.html
+
+ :material-outlined:`satellite_alt;5em`
+
.. grid-item-card:: Examples
:text-align: center
:link: ./user_guide/Examples.html
@@ -39,7 +57,7 @@ Introduction
:material-outlined:`apps;5em`
Contribute
-----------
+==========
.. grid:: 2 2 4 4
:padding: 0
@@ -62,6 +80,36 @@ Contribute
:material-outlined:`forum;5em`
+ .. grid-item-card:: Issues
+ :text-align: center
+ :link: https://github.com/tsutterley/gravity-toolkit/issues
+
+ :material-outlined:`bug_report;5em`
+
+Project Details
+===============
+
+.. grid:: 2 2 4 4
+ :padding: 0
+
+ .. grid-item-card:: Release Notes
+ :text-align: center
+ :link: ./release_notes/Release-Notes.html
+
+ :material-outlined:`edit_note;5em`
+
+ .. grid-item-card:: Contributors
+ :text-align: center
+ :link: ./project/Contributors.html
+
+ :material-outlined:`diversity_1;5em`
+
+ .. grid-item-card:: License
+ :text-align: center
+ :link: ./project/Licenses.html
+
+ :material-outlined:`balance;5em`
+
.. grid-item-card:: Citation Information
:text-align: center
:link: ./project/Citations.html
@@ -73,168 +121,22 @@ Contribute
:hidden:
:caption: Getting Started
- getting_started/Install.rst
+ getting_started/Install.ipynb
getting_started/Getting-Started.rst
- getting_started/NASA-Earthdata.rst
- getting_started/GRACE-Data-File-Formats.rst
getting_started/Contributing.rst
getting_started/Code-of-Conduct.rst
getting_started/Resources.rst
-.. toctree::
- :maxdepth: 2
- :hidden:
- :caption: Background
-
- background/Background.rst
- background/Spatial-Maps.rst
- background/Time-Series-Analysis.rst
- background/Geocenter-Variations.rst
-
.. toctree::
:maxdepth: 1
:hidden:
:caption: User Guide
+ api_reference/API-Reference.rst
+ background/Background.rst
+ user_guide/NASA-Earthdata.ipynb
user_guide/Examples.rst
-.. toctree::
- :maxdepth: 1
- :hidden:
- :caption: API Reference
-
- api_reference/associated_legendre.rst
- api_reference/clenshaw_summation.rst
- api_reference/degree_amplitude.rst
- api_reference/destripe_harmonics.rst
- api_reference/fourier_legendre.rst
- api_reference/gauss_weights.rst
- api_reference/gen_averaging_kernel.rst
- api_reference/gen_disc_load.rst
- api_reference/gen_harmonics.rst
- api_reference/gen_point_load.rst
- api_reference/gen_spherical_cap.rst
- api_reference/gen_stokes.rst
- api_reference/geocenter.rst
- api_reference/grace_date.rst
- api_reference/grace_find_months.rst
- api_reference/grace_input_months.rst
- api_reference/grace_months_index.rst
- api_reference/harmonic_gradients.rst
- api_reference/harmonic_summation.rst
- api_reference/harmonics.rst
- api_reference/legendre.rst
- api_reference/legendre_polynomials.rst
- api_reference/mascons.rst
- api_reference/ocean_stokes.rst
- api_reference/read_gfc_harmonics.rst
- api_reference/read_GIA_model.rst
- api_reference/read_GRACE_harmonics.rst
- api_reference/read_love_numbers.rst
- api_reference/read_SLR_harmonics.rst
- api_reference/sea_level_equation.rst
- api_reference/SLR/C20.rst
- api_reference/SLR/CS2.rst
- api_reference/SLR/C30.rst
- api_reference/SLR/C40.rst
- api_reference/SLR/C50.rst
- api_reference/spatial.rst
- api_reference/time.rst
- api_reference/time_series/amplitude.rst
- api_reference/time_series/fit.rst
- api_reference/time_series/lomb_scargle.rst
- api_reference/time_series/piecewise.rst
- api_reference/time_series/regress.rst
- api_reference/time_series/savitzky_golay.rst
- api_reference/time_series/smooth.rst
- api_reference/tools.rst
- api_reference/units.rst
- api_reference/utilities.rst
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :caption: Access
-
- api_reference/access/cnes_grace_sync.rst
- api_reference/access/esa_costg_swarm_sync.rst
- api_reference/access/gfz_icgem_costg_ftp.rst
- api_reference/access/gfz_isdc_dealiasing_sync.rst
- api_reference/access/gfz_isdc_grace_sync.rst
- api_reference/access/itsg_graz_grace_sync.rst
- api_reference/access/podaac_cumulus.rst
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :caption: Dealiasing
-
- api_reference/dealiasing/aod1b_geocenter.rst
- api_reference/dealiasing/aod1b_oblateness.rst
- api_reference/dealiasing/dealiasing_global_uplift.rst
- api_reference/dealiasing/dealiasing_monthly_mean.rst
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :caption: Geocenter
-
- api_reference/geocenter/calc_degree_one.rst
- api_reference/geocenter/monte_carlo_degree_one.rst
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :caption: Use Cases
-
- api_reference/scripts/calc_mascon.rst
- api_reference/scripts/calc_harmonic_resolution.rst
- api_reference/scripts/calc_sensitivity_kernel.rst
- api_reference/scripts/combine_harmonics.rst
- api_reference/scripts/convert_harmonics.rst
- api_reference/scripts/grace_mean_harmonics.rst
- api_reference/scripts/grace_raster_grids.rst
- api_reference/scripts/grace_spatial_error.rst
- api_reference/scripts/grace_spatial_maps.rst
- api_reference/scripts/mascon_reconstruct.rst
- api_reference/scripts/piecewise_grace_maps.rst
- api_reference/scripts/regress_grace_maps.rst
- api_reference/scripts/run_sea_level_equation.rst
- api_reference/scripts/scale_grace_maps.rst
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :caption: Mapping
-
- api_reference/mapping/plot_AIS_grid_maps.rst
- api_reference/mapping/plot_AIS_grid_3maps.rst
- api_reference/mapping/plot_AIS_grid_4maps.rst
- api_reference/mapping/plot_AIS_grid_movie.rst
- api_reference/mapping/plot_AIS_GrIS_maps.rst
- api_reference/mapping/plot_AIS_regional_maps.rst
- api_reference/mapping/plot_AIS_regional_movie.rst
- api_reference/mapping/plot_global_grid_maps.rst
- api_reference/mapping/plot_global_grid_3maps.rst
- api_reference/mapping/plot_global_grid_4maps.rst
- api_reference/mapping/plot_global_grid_5maps.rst
- api_reference/mapping/plot_global_grid_9maps.rst
- api_reference/mapping/plot_global_grid_movie.rst
- api_reference/mapping/plot_GrIS_grid_maps.rst
- api_reference/mapping/plot_GrIS_grid_3maps.rst
- api_reference/mapping/plot_GrIS_grid_5maps.rst
- api_reference/mapping/plot_GrIS_grid_movie.rst
-
-.. toctree::
- :maxdepth: 1
- :hidden:
- :caption: Utilities
-
- api_reference/utilities/make_grace_index.rst
- api_reference/utilities/quick_mascon_plot.rst
- api_reference/utilities/quick_mascon_regress.rst
- api_reference/utilities/run_grace_date.rst
-
.. toctree::
:maxdepth: 1
:hidden:
@@ -245,6 +147,13 @@ Contribute
project/Testing.rst
project/Citations.rst
+.. toctree::
+ :maxdepth: 1
+ :hidden:
+ :caption: Release Notes
+
+ release_notes/Release-Notes.rst
+
.. toctree::
:maxdepth: 1
:hidden:
diff --git a/doc/source/notebooks/GRACE-Geostrophic-Maps.ipynb b/doc/source/notebooks/GRACE-Geostrophic-Maps.ipynb
index a147a48d..ca4ce4c2 100644
--- a/doc/source/notebooks/GRACE-Geostrophic-Maps.ipynb
+++ b/doc/source/notebooks/GRACE-Geostrophic-Maps.ipynb
@@ -310,6 +310,7 @@
"widgets.select_corrections()\n",
"widgets.select_output()\n",
"# display widgets for setting GRACE/GRACE-FO corrections parameters\n",
+ "widgets.gaussian.value = 600.0\n",
"ipywidgets.VBox([\n",
" widgets.GIA_file,\n",
" widgets.GIA,\n",
@@ -339,7 +340,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -363,10 +364,12 @@
"# grid latitude and longitude\n",
"grid.lon = np.copy(landsea.lon)\n",
"grid.lat = np.copy(landsea.lat)\n",
+ "# mask equatorial regions due to hydrostrophic inaccuracies\n",
+ "valid, = np.nonzero((np.abs(grid.lat) > 10))\n",
"\n",
"# Computing plms for converting to spatial domain\n",
- "theta = (90.0 - grid.lat)*np.pi/180.0\n",
- "PLM, dPLM = gravtk.plm_holmes(LMAX, np.cos(theta))\n",
+ "theta = np.radians(90.0 - grid.lat)\n",
+ "PLM, dPLM = gravtk.plm_holmes(LMAX, np.cos(theta[valid]))\n",
"RAD = widgets.gaussian.value\n",
"\n",
"# read load love numbers file\n",
@@ -443,8 +446,6 @@
"# output geostrophic current grid\n",
"grid.data = np.zeros((nlat, nlon, 2,nt))\n",
"grid.mask = np.ones((nlat, nlon, 2,nt), dtype=bool)\n",
- "# mask equatorial regions due to hydrostrophic inaccuracies\n",
- "valid, = np.nonzero((np.abs(grid.lat) > 10))\n",
"grid.mask[valid,:,:,:] = False\n",
"# set land values from land-sea mask to invalid\n",
"indy,indx = np.nonzero(np.logical_not(landsea.mask))\n",
@@ -575,7 +576,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3.8.10 64-bit",
+ "display_name": "py13",
"language": "python",
"name": "python3"
},
@@ -589,12 +590,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.6"
- },
- "vscode": {
- "interpreter": {
- "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
- }
+ "version": "3.13.0"
}
},
"nbformat": 4,
diff --git a/doc/source/notebooks/GRACE-Spatial-Error.ipynb b/doc/source/notebooks/GRACE-Spatial-Error.ipynb
index 1b765a04..b2cf733e 100644
--- a/doc/source/notebooks/GRACE-Spatial-Error.ipynb
+++ b/doc/source/notebooks/GRACE-Spatial-Error.ipynb
@@ -288,13 +288,13 @@
" nlat = len(grid.lat)\n",
"\n",
"# Computing plms for converting to spatial domain\n",
- "theta = (90.0 - grid.lat)*np.pi/180.0\n",
+ "theta = np.radians(90.0 - grid.lat)\n",
"PLM, dPLM = gravtk.plm_holmes(LMAX, np.cos(theta))\n",
"# square of legendre polynomials truncated to order MMAX\n",
"mm = np.arange(0,MMAX+1)\n",
"PLM2 = PLM[:,mm,:]**2\n",
"# Calculating cos(m*phi)^2 and sin(m*phi)^2\n",
- "phi = grid.lon[np.newaxis,:]*np.pi/180.0\n",
+ "phi = np.radians(grid.lon[np.newaxis,:])\n",
"ccos = np.cos(np.dot(mm[:,np.newaxis],phi))**2\n",
"ssin = np.sin(np.dot(mm[:,np.newaxis],phi))**2\n",
" \n",
diff --git a/doc/source/notebooks/GRACE-Spatial-Maps.ipynb b/doc/source/notebooks/GRACE-Spatial-Maps.ipynb
index 2b1b908f..c8802c90 100644
--- a/doc/source/notebooks/GRACE-Spatial-Maps.ipynb
+++ b/doc/source/notebooks/GRACE-Spatial-Maps.ipynb
@@ -405,7 +405,7 @@
" nlat = len(grid.lat)\n",
"\n",
"# Computing plms for converting to spatial domain\n",
- "theta = (90.0-grid.lat)*np.pi/180.0\n",
+ "theta = np.radians(90.0-grid.lat)\n",
"PLM, dPLM = gravtk.plm_holmes(LMAX, np.cos(theta))\n",
"\n",
"# read load love numbers file\n",
diff --git a/doc/source/project/Bibliography.rst b/doc/source/project/Bibliography.rst
index 73b0782c..52774b51 100644
--- a/doc/source/project/Bibliography.rst
+++ b/doc/source/project/Bibliography.rst
@@ -1,3 +1,5 @@
+.. _bibliography:
+
============
Bibliography
============
diff --git a/doc/source/project/Citations.rst b/doc/source/project/Citations.rst
index 6fe33a86..22c21973 100644
--- a/doc/source/project/Citations.rst
+++ b/doc/source/project/Citations.rst
@@ -38,18 +38,33 @@ Dependencies
This software is also dependent on other commonly used Python packages:
-- `cartopy: Python package designed for geospatial data processing `_
+- `boto3: Amazon Web Services (AWS) SDK for Python `_
- `future: Compatibility layer between Python 2 and Python 3 `_
-- `h5py: Python interface for Hierarchal Data Format 5 (HDF5) `_
-- `ipywidgets: interactive HTML widgets for Jupyter notebooks and IPython `_
- `lxml: processing XML and HTML in Python `_
- `matplotlib: Python 2D plotting library `_
- `netCDF4: Python interface to the netCDF C library `_
- `numpy: Scientific Computing Tools For Python `_
+- `platformdirs: Python module for determining platform-specific directories `_
- `python-dateutil: powerful extensions to datetime `_
- `PyYAML: YAML parser and emitter for Python `_
- `scipy: Scientific Tools for Python `_
+
+Optional Dependencies
+---------------------
+
+- `cartopy: Python package designed for geospatial data processing `_
+- `dask: Parallel computing with task scheduling `_
+- `geoid-toolkit: Python utilities for calculating geoid heights from static gravity field coefficients `_
+- `gdal: Pythonic interface to the Geospatial Data Abstraction Library (GDAL) `_
+- `h5py: Python interface for Hierarchal Data Format 5 (HDF5) `_
+- `ipywidgets: interactive HTML widgets for Jupyter notebooks and IPython `_
+- `obstore: Simple, high-throughput Python interface for object storage `_
+- `pyarrow: Apache Arrow Python bindings `_
+- `pyshp: Python read/write support for ESRI Shapefile format `_
+- `s3fs: Pythonic file interface to S3 built on top of botocore `_
+- `shapely: PostGIS-ish operations outside a database context for Python `_
- `tkinter: Python interface to the Tcl/Tk GUI toolkit `_
+- `zarr: Chunked, compressed, N-dimensional arrays in Python `_
Disclaimer
##########
diff --git a/doc/source/release_notes/Release-Notes.rst b/doc/source/release_notes/Release-Notes.rst
new file mode 100644
index 00000000..ae4d55e3
--- /dev/null
+++ b/doc/source/release_notes/Release-Notes.rst
@@ -0,0 +1,10 @@
+=============
+Release Notes
+=============
+
+.. toctree::
+ :maxdepth: 1
+ :glob:
+ :reversed:
+
+ *
diff --git a/doc/source/release_notes/release-v1.0.2.0.rst b/doc/source/release_notes/release-v1.0.2.0.rst
new file mode 100644
index 00000000..3a53fe36
--- /dev/null
+++ b/doc/source/release_notes/release-v1.0.2.0.rst
@@ -0,0 +1,221 @@
+.. _release-v1.0.2.0:
+
+=====================
+`Release v1.0.2.0`__
+=====================
+
+* ``docs``: Update documentation to use sphinx and readthedocs
+* ``docs``: update ``readthedocs.yml`` to use conda
+* ``fix``: update ``environment.yml`` to include pip
+* ``docs``: different environment for docs
+* ``feat``: add AOD1B oblateness and isomorphic parameters
+* ``feat``: add netCDF4 and HDF5 options to read_GIA_model.py
+* ``feat``: add GIA step to getting started
+* ``feat``: added ``harmonics`` class for correcting GRACE/GRACE-FO data
+* ``feat``: add ``mean`` and ``from_dict`` to ``harmonics`` class
+* ``feat``: use ``harmonics`` class to ``index``, ``add``, ``subtract``, ``convolve`` and ``destripe``
+* ``refactor``: separate ``units`` into its own class
+* ``feat``: ``units`` factors for ``harmonics`` and ``spatial``
+* ``docs``: add header notes to notebook describing GRACE/GRACE-FO measurements
+* ``fix``: podaac program default release to RL06
+* ``fix``: enumeration in ``GRACE-Data-File-Formats.md``
+* ``feat``: add gravity model read from GFZ ICGEM
+* ``feat``: add more functionality and mathematical functions to ``harmonics`` class
+* ``feat``: check dimensions of ``harmonics`` objects if using mathematics functions
+* ``feat``: add viscoelastic crustal uplift to ``units`` class for converting GIA rates
+* ``docs``: include source code links to documents
+* ``fix``: include degree and order in read GIA program
+* ``docs``: include level-2 handbooks and processing standard documents
+* ``docs``: include notes about pole tide and atmospheric corrections
+* ``feat``: add ocean redistribution to ipynb, add spherical harmonic calculations
+* ``feat``: add ocean redistribution to ipynb, add spherical harmonic calculations
+* ``feat``: add date option to ncdf/hdf5 write programs
+* ``fix``: in ``harmonics`` ``from_list`` separate date and sort
+* ``feat``: get ``harmonics`` third dimension from shape
+* ``feat``: add options to ``flatten`` and ``expand`` ``harmonics`` matrices or arrays
+* ``docs``: updated ``README.md`` to have data repositories
+* ``docs``: add more notes about spatial units and conversion from harmonics
+* ``feat``: include file of load love numbers `(Han and Wahr, 1995) `_
+* ``docs``: update html link to `Martin Mohlenkamp's uguide `_
+* ``docs``: add link to love numbers to getting started doc
+* ``feat``: add more legendre and harmonics programs
+* ``docs``: updated readme and documentation
+* ``docs``: update html links to https
+* ``feat``: add webdav program for retrieving PO.DAAC credentials
+* ``feat``: add ``netrc`` option to PO.DAAC sync program
+* ``feat``: ``netrc`` file can be appended from webdav program
+* ``docs``: updated README, getting started and program documentation
+* ``feat``: add additional date and conversion programs
+* ``feat``: output list of filenames if using ``from_list()`` in ``harmonics``
+* ``fix``: subset and index can output the harmonics filename if set
+* ``fix``: increase timeout to 2 minutes in ``podaac_grace_sync.py``
+* ``docs``: Add install with pip from git to readme
+* ``docs``: update readme to note CC4 license for non-code content
+* ``feat``: Add ``spatial`` class for reading, writing and processing grids
+* ``feat``: additional capablities within ``spatial`` class
+* ``docs``: update ``spatial`` class documentation
+* ``refactor``: reorganize code structure
+* ``docs``: update documentation for new code structure
+* ``fix``: use dependencies from ``requirements.txt`` in ``setup.py``
+* ``fix``: include files within scripts directory in ``setup.py``
+* ``feat``: add CLI spatial and regression programs
+* ``feat``: add ``zeros_like`` to ``harmonics`` class
+* ``docs``: update documentation for added modules
+* ``docs``: update readme for added modules
+* ``feat``: add GRACE spatial error program
+* ``docs``: update documentation and readme for changes
+* ``feat``: update setup to mark new version
+* ``docs``: add note about John to citations
+* ``docs``: add function docstrings
+* ``feat``: add back level-1b dealiasing sync programs
+* ``docs``: update documentation and readme
+* ``feat``: add case insensitive file search
+* ``feat``: update mask if no ``fill_value`` in ``spatial``
+* ``feat``: update jupyter notebook to use ``spatial`` class in plot
+* ``ci``: add github actions for continuous integration
+* ``ci``: ``flake8`` linter updates for CI
+* ``fix``: add ``scipy`` to ``environment.yml`` and ``requirements.txt``
+* ``feat``: add github dependency for ``geocenter`` to requirements
+* ``fix``: remove dependency links in lieu of requirements
+* ``ci``: add github actions for continuous integration
+* ``test``: add spherical harmonic conversion test
+* ``fix``: update regular expressions for ``flake8`` compat
+* ``test``: add spherical harmonic conversion test
+* ``test``: add test for downloading and reading GRACE data
+* ``refactor``: move build opener to ``utilities`` routines
+* ``docs``: update readme and documentation for utilities
+* ``test``: add more tests for downloading and reading GRACE data
+* ``feat``: use ``podaac_list()`` within ``podaac_grace_sync`` program
+* ``feat``: ``read_GRACE_harmonics()`` can read ``bytesIO`` objects
+* ``feat``: added GFZ ftp download and read test
+* ``feat``: added compression options to ``harmonic`` and ``spatial`` file input
+* ``fix``: ``flake8`` updates for ``python3``
+* ``fix``: update legendre polynomial programs for divide by zero in differentials
+* ``fix``: add ``KeyError`` to ``from_dict``
+* ``fix``: ``flake8`` updates for python3
+* ``feat``: use ``utilities`` to define path to load love numbers file
+* ``feat``: include data in package
+* ``feat``: Update ``MANIFEST.in`` for included data
+* ``ci``: add ``macos-latest`` to testing strategy
+* ``ci``: will use homebrew package manager to install dependencies
+* ``feat``: add podaac sync within jupyter notebook with magics
+* ``refactor``: reorganize base directory: .binder and notebooks
+* ``test``: calculate test coverage
+* ``test``: upload coverage file in github actions
+* ``feat``: include GSFC GRACE mascons in dates
+* ``fix``: update python language support
+* ``fix``: use ``urllib`` from ``gravity_toolkit`` ``utilities``
+* ``feat``: generalize build opener for different earthdata instances
+* ``refactor``: switching to main branch as primary
+* ``chore``: update links to main branch in readme and docs
+* ``feat``: use ``argparse`` to set parameters
+* ``feat``: ``abspath`` and ``expanduser`` in ``argparse`` paths
+* ``feat``: add ``spatial`` ascii header option
+* ``fix``: update ``spatial`` ``mean`` to catch more exceptions
+* ``feat``: add more routines to ``spatial`` class `(#17) `_
+* ``refactor``: update podaac programs to simplify args `(#17) `_
+* ``feat``: add updated CNES sync program `(#18) `_
+* ``feat``: add GFZ ICGEM list for static models `(#18) `_
+* ``docs``: update documentation `(#18) `_
+* ``feat``: added more love number options and from gfc for mean files `(#19) `_
+* ``feat``: add `Sutterley and Velicogna geocenter `_ download `(#19) `_
+* ``feat``: updated SLR geocenter for new solutions from Minkang Cheng `(#19) `_
+* ``feat``: added download for satellite laser ranging (SLR) files from UTCSR `(#19) `_
+* ``feat``: add first public versions of mascon programs `(#20) `_
+* ``docs``: add documentation outlining programs `(#20) `_
+* ``docs``: add documentation outlining grace/grace-fo processing `(#20) `_
+* ``docs``: add blurbs to add Yara's comments `(#20) `_
+* ``docs``: use restructuredtext for background `(#20) `_
+* ``refactor``: generalize utilities for downloading from JPL drive (PO.DAAC/ECCO) `(#21) `_
+* ``feat``: can calculate means (``spatial`` and ``harmonic``) for a subset `(#21) `_
+* ``feat``: add pressure harmonics routines for OBP/surface pressure `(#21) `_
+* ``fix``: update requirements `(#21) `_
+* ``feat``: added ``time`` module to be able to convert delta times `(#22) `_
+* ``refactor``: merged ``convert_calendar_decimal`` and ``convert_julian`` with ``time`` module `(#22) `_
+* ``feat``: update netCDF4 and HDF5 programs for attributes and references `(#22) `_
+* ``docs``: update documentation `(#22) `_
+* ``test``: add test module for time programs `(#22) `_
+* ``feat``: update netCDF and HDF5 programs to read from memory `(#23) `_
+* ``feat``: update ``ftp_list`` and read for protected ftp `(#23) `_
+* ``test``: add ftp connection check `(#23) `_
+* ``refactor``: update ftp programs to use ``utilities`` `(#24) `_
+* ``feat``: add even rounding utility `(#24) `_
+* ``refactor``: moved pressure harmonics function to ``model_harmonics`` `(#24) `_
+* ``feat``: use ``harmonics`` class as output from SH generators `(#25) `_
+* ``feat``: add piecewise regression routine for breakpoint analysis `(#26) `_
+* ``docs``: add harmonic triangle plot notebook
+* ``docs``: add regression plots to spatial map notebook
+* ``docs``: use ``sphinx_rtd_theme`` for documentation
+* ``docs``: change some markdown docs to rst
+* ``feat``: add date parser for cases when only a date and no units
+* ``docs``: add badges to examples documentation
+* ``feat``: add kfactor calculation program to ``spatial`` class
+* ``feat``: add degree amplitude function to ``harmonics`` class
+* ``fix``: prevent warnings with python3 compatible regex strings in nc/hdf5 read
+* ``test``: add point mass test
+* ``fix``: modify legendre case with underflow
+* ``docs``: update references in point harmonics programs
+* ``feat``: added ``replace_masked`` to replace masked values in ``spatial`` data
+* ``fix``: in ``spatial`` broadcast mask over third dimension
+* ``refactor``: changed remove index to files with specified formats `(#27) `_
+* ``feat``: added generic reader, generic writer and write to list functions `(#27) `_
+* ``feat``: added ``adjust_months`` function to fix "special" months cases `(#27) `_
+* ``feat``: include geocenter read program for coefficents from Sean `(#27) `_
+* ``fix``: replaced ``numpy`` bool to prevent deprecation warning `(#27) `_
+* ``refactor``: generalize kwargs to ascii, netCDF4 and HDF5 readers and writers
+* ``refactor``: moved model mascon programs to ``model_harmonics``
+* ``refactor``: merged read ICGEM harmonics with ``geoid_toolkit`` reader
+* ``docs``: add contribution guidelines `(#28) `_
+* ``docs``: more documentation standardization `(#28) `_
+* ``ci``: remove python 3.5 from tests `(#28) `_
+* ``docs``: documentation standardization
+* ``docs``: update documentation `(#29) `_
+* ``feat``: set a default netrc file and check access `(#29) `_
+* ``feat``: default credentials from environmental variables `(#29) `_
+* ``docs``: add rst format citations to documentation `(#30) `_
+* ``fix``: update CSR SLR function (thanks @hulecom for pointing out the file format change) `(#30) `_
+* ``fix``: update setup file to check if ``readthedocs`` `(#30) `_
+* ``feat``: adding more SLR low-degree replacements `(#31) `_
+* ``docs``: update documentation for SLR harmonics `(#31) `_
+* ``feat``: add parser object for removing commented or empty lines `(#32) `_
+* ``feat``: add GFZ SLR solutions for C20/C21+S21/C30 `(#33) `_
+* ``feat``: add GFZ GravIS geocenter solutions `(#33) `_
+* ``docs``: update documentation for GFZ solutions `(#33) `_
+* ``fix``: update grace input months for GFZ SLR `(#33) `_
+* ``feat``: added option for connection timeout to sync programs `(#34) `_
+* ``fix``: define int/float precision to prevent deprecation warning `(#35) `_
+* ``feat``: use try/except for retrieving netrc credentials `(#35) `_
+* ``feat``: add figshare secure FTP uploader to utilities `(#35) `_
+* ``ci``: use cartopy no-binary in build `(#35) `_
+* ``fix``: use first value in requirements in setup `(#35) `_
+* ``ci``: brew install ``pkg-config`` `(#35) `_
+* ``ci``: use older proj7 in brew install for cartopy `(#35) `_
+* ``ci``: add LD and CPP flags for proj7 `(#35) `_
+* ``ci``: add cython to installations `(#35) `_
+* ``ci``: ``ACCEPT_USE_OF_DEPRECATED_PROJ_API_H`` `(#35) `_
+* ``ci``: set pkg-config path `(#35) `_
+* ``refactor``: switch from parameter files to argparse arguments `(#36) `_
+* ``fix``: degree spacing in spatial programs `(#36) `_
+* ``fix``: cycles in regression program `(#38) `_
+* ``fix``: documentation for spatial programs `(#38) `_
+* ``refactor``: simplified file exports using wrappers in harmonics `(#39) `_
+* ``fix``: gfc format in ``from_file`` wrapper in harmonics `(#39) `_
+* ``fix``: format for mean files `(#40) `_
+* ``docs``: clenshaw summation citations `(#40) `_
+* ``feat``: Add 3-hour AOD interval for RL06 `#37 `_ `(#41) `_
+* ``feat``: release monthly dealiasing (for CSR GAA etc) `(#41) `_
+* ``fix``: inputs to AOD-corrected SLR geocenter coefficients `(#41) `_
+* ``feat``: output index file for monthly dealiasing SHM files `(#42) `_
+* ``feat``: added check if needing to interpolate love numbers `(#42) `_
+* ``feat``: added path to default land-sea mask for mass redistribution `(#42) `_
+* ``feat``: added option to output mean harmonics in gfc format `(#43) `_
+* ``refactor``: rename monthly mean dealiasing program `(#43) `_
+* ``feat``: output uncalibrated spherical harmonic errors (eclm and eslm) `(#43) `_
+* ``fix``: remove choices for argparse processing centers `(#43) `_
+* ``fix``: remove defaults in monthly dealiasing `(#43) `_
+* ``refactor``: no default processing center `(#43) `_
+* ``fix``: require processing center argument `(#43) `_
+* ``feat``: add months option to gfz dealiasing sync `(#43) `_
+* ``feat``: add harmonic resolution calculator `(#44) `_
+
+.. __: https://github.com/tsutterley/gravity-toolkit/releases/tag/v1.0.2.0
diff --git a/doc/source/release_notes/release-v1.0.2.4.rst b/doc/source/release_notes/release-v1.0.2.4.rst
new file mode 100644
index 00000000..831cd9fc
--- /dev/null
+++ b/doc/source/release_notes/release-v1.0.2.4.rst
@@ -0,0 +1,62 @@
+.. _release-v1.0.2.4:
+
+=====================
+`Release v1.0.2.4`__
+=====================
+
+* ``fix``: uncertainties for SLR CS21 and CS22
+* ``feat``: add option for setting input format of the mascon files `(#46) `_
+* ``feat``: add averaging kernel program `(#46) `_
+* ``feat``: time-variable gravity data from COST-G, GRAZ, SWARM `#37 `_ `(#47) `_
+* ``feat``: time-variable gravity data from COST-G GRAZ, SWARM `#37 `_ `(#47) `_
+* ``feat``: need to add sync programs for all products `(#47) `_
+* ``refactor``: call read ICGEM from read gfc `(#47) `_
+* ``fix``: Swarm strings and titles `(#47) `_
+* ``docs``: update documentation to add additional information `(#47) `_
+* ``feat``: add sync programs for Swarm and GRACE COST-G `(#47) `_
+* ``feat``: add ITSG GRAZ GRACE sync `(#47) `_
+* ``fix``: accidental copy paste `(#47) `_
+* ``fix``: output index in separate loop for COST-G `(#47) `_
+* ``test``: add tests for COST-G, GRAZ and Swarm gfc files `(#47) `_
+* ``test``: use fixture to download geocenter files `(#47) `_
+* ``refactor``: merged integration and fourier harmonics programs ``fix``: use fill values for input ascii files in convert_harmonics ``fix``: update grid attributes after allocating for data in combine_harmonics ``ci``: install proj from source for cartopy dependency ``ci``: install devel cartopy from repo `(#48) `_
+* ``refactor``: adding new tools module to simplify notebooks `(#49) `_
+* ``feat``: adding new time functions for to/from grace months `(#49) `_
+* ``docs``: add documentation for tools `(#49) `_
+* ``fix``: adjust months if final in time series `(#49) `_
+* ``fix``: adjustable minimum in gaussian weights
+* ``refactor``: slim requirements `(#50) `_
+* ``refactor``: using python logging for handling verbose output `(#51) `_
+* ``feat``: add version program and add package __version__ attribute `(#51) `_
+* ``feat``: add more remove file options in GRACE maps `(#52) `_
+* ``fix``: remove file choices in calc mascon `(#52) `_
+* ``fix``: logging ``CRITICAL``
+* ``fix``: logging with filenames
+* ``feat``: grid conversion routines for publicly available mascon solutions `(#53) `_
+* ``test``: attempt to download cost-g from http `(#53) `_
+* ``refactor``: use logging to print multiprocessing exceptions
+* ``refactor``: netCDF4 and HDF5 input programs `(#54) `_
+* ``ci``: update for geoid-toolkit dependencies `(#54) `_
+* ``docs``: pin docutils to 0.18 `(#54) `_
+* ``fix``: modify legendre normalization to prevent high degree overflows `(#55) `_
+* ``test``: add legendre test `(#55) `_
+* ``test``: add associated legendre polynomial test `(#56) `_
+* ``fix``: HDF5 and netCDF4 io for single time case `(#56) `_
+* ``fix``: format for index in notebooks `(#56) `_
+* ``feat``: use new GSFC weekly 5x5s for CS2 and C50 `(#57) `_
+* ``refactor``: create geocenter program for reading and operating `(#58) `_
+* ``test``: include new geocenter class `(#58) `_
+* ``feat``: add load love numbers for unit conversion `(#58) `_
+* ``feat``: add mean function to geocenter `(#58) `_
+* ``refactor``: rename SLF geocenter reader `(#58) `_
+* ``feat``: add more geocenter operations `(#58) `_
+* ``feat``: add geocenter figure programs from Sutterley and Velicogna (2019)
+* ``feat``: update geocenter plot programs for AGU `(#60) `_
+* ``feat``: added netCDF4 reader for UCI iteration files `(#60) `_
+* ``feat``: added custom colormap function for some common scales `(#60) `_
+* ``feat``: added UNITS list option for converting from custom units `(#60) `_
+* ``feat``: option to specify a specific geocenter correction file `(#61) `_
+* ``feat``: can use variable loglevels for verbose output `(#61) `_
+* ``fix``: fix default file prefix to include center and release information `(#61) `_
+
+.. __: https://github.com/tsutterley/gravity-toolkit/releases/tag/v1.0.2.4
diff --git a/doc/source/release_notes/release-v1.0.2.5.rst b/doc/source/release_notes/release-v1.0.2.5.rst
new file mode 100644
index 00000000..c08a4496
--- /dev/null
+++ b/doc/source/release_notes/release-v1.0.2.5.rst
@@ -0,0 +1,38 @@
+.. _release-v1.0.2.5:
+
+=====================
+`Release v1.0.2.5`__
+=====================
+
+* ``fix``: add try/except for read_GRACE_geocenter import
+* ``feat``: S3 access using PO.DAAC cumulus to address `#59 `_ `(#63) `_
+* ``fix``: update readable granule for L1A/B grav
+* ``fix``: for now use podaac drive provider
+* ``docs``: updated docstrings to numpy documentation format `(#65) `_
+* ``docs``: use autodoc to build documentation `(#65) `_
+* ``feat``: new internal ncdf/hdf5 read/write within harmonics and spatial classes `(#65) `_
+* ``feat``: add citations and references to read_GIA_model `(#65) `_
+* ``docs``: update headers to remove deprecated ncdf/hdf5 read/write modules `(#65) `_
+* ``refactor``: moved Load love number wrapper function to within read `(#66) `_
+* ``feat``: change badge for pangeo to aws us-west-2 for podaac cloud access `(#66) `_
+* ``fix``: pin markupsafe to 2.0.1 to prevent soft_unicode error `(#66) `_
+* ``fix``: change function name back to load_love_numbers `(#67) `_
+* ``docs``: update history in headers `(#67) `_
+* ``test``: try docker build with windows to address `#64 `_ `(#68) `_
+* ``fix``: include utf-8 encoding in reads to be windows compliant `(#68) `_
+* ``fix``: only sync newsletters for mission of interest
+* ``fix``: spatial field mapping for output
+* ``fix``: mask in sea level equation
+* ``feat``: add from_GIA to harmonics class `(#69) `_
+* ``feat``: prepare CMR queries for version 1 of RL06 `(#69) `_
+* ``fix``: expansion and squeezing of mask variable if None `(#69) `_
+* ``feat``: add option for L2 version in sync programs `(#69) `_
+* ``fix``: improved passing of filename attribute in harmonic objects `(#70) `_
+* ``fix``: include filename when copying spatial objects `(#70) `_
+* ``refactor``: always try syncing from both grace and grace-fo missions `(#71) `_
+* ``feat``: added AW13 models using IJ05-R2 ice history `(#71) `_
+* ``feat``: allow input ascii harmonic files to have additional columns `(#71) `_
+* ``docs``: update environment file `(#71) `_
+* ``fix``: index using granules `(#71) `_
+
+.. __: https://github.com/tsutterley/gravity-toolkit/releases/tag/v1.0.2.5
diff --git a/doc/source/release_notes/release-v1.0.2.6.rst b/doc/source/release_notes/release-v1.0.2.6.rst
new file mode 100644
index 00000000..3609aeee
--- /dev/null
+++ b/doc/source/release_notes/release-v1.0.2.6.rst
@@ -0,0 +1,14 @@
+.. _release-v1.0.2.6:
+
+====================
+`Release v1.0.2.6`__
+====================
+
+* ``docs``: use argparse descriptions within sphinx documentation `(#72) `_
+* ``feat``: initial version of public geocenter programs `(#73) `_
+* ``feat``: output full citation for each GIA model group `(#73) `_
+* ``docs``: update background and add geocenter section `(#73) `_
+* ``feat``: added notebook for visualizing harmonic errors `(#74) `_
+* ``feat``: add changes for uploading to pypi `(#75) `_
+
+.. __: https://github.com/tsutterley/gravity-toolkit/releases/tag/1.0.2.6
diff --git a/doc/source/release_notes/release-v1.0.2.7.rst b/doc/source/release_notes/release-v1.0.2.7.rst
new file mode 100644
index 00000000..aaa4509f
--- /dev/null
+++ b/doc/source/release_notes/release-v1.0.2.7.rst
@@ -0,0 +1,27 @@
+.. _release-v1.0.2.7:
+
+====================
+`Release v1.0.2.7`__
+====================
+
+* ``fix``: expand mask variable within if statement `(#76) `_
+* ``fix``: place ipython and tkinter imports within try/except `(#77) `_
+* ``fix``: remove cartopy for slimmer build `(#78) `_
+* ``fix``: create mask for output gridded variables `(#79) `_
+* ``refactor``: set plot tick formatter to not use offsets `(#79) `_
+* ``docs``: updated structure of documentation `(#80) `_
+* ``feat``: add program for overwriting the GRACE/GRACE-FO index `(#81) `_
+* ``feat``: made creating the spatial sensitivity kernel optional to improve compute time `(#81) `_
+* ``refactor``: moved regular expression function to utilities `(#81) `_
+* ``feat``: Dynamically select newest version of granules for index `(#82) `_
+* ``feat``: include geocenter land sea in data `(#83) `_
+* ``feat``: add GSFC SLR 5x5 download function `(#85) `_
+* ``feat``: add logging for debugging level verbose output `(#85) `_
+* ``fix``: place index filename within try/except statement `(#85) `_
+* ``feat``: add option to replace degree 4 zonal harmonics with SLR `(#86)