├── .github
├── dependabot.yml
└── workflows
│ ├── nightly-build.yaml
│ ├── publish-book.yaml
│ ├── trigger-book-build.yaml
│ ├── trigger-delete-preview.yaml
│ ├── trigger-link-check.yaml
│ ├── trigger-preview.yaml
│ └── trigger-replace-links.yaml
├── .gitignore
├── .isort.cfg
├── .pre-commit-config.yaml
├── CITATION.cff
├── LICENSE
├── README.md
├── _config.yml
├── _gallery_info.yml
├── _static
├── custom.css
└── footer-logo-nsf.png
├── _templates
└── footer-extra.html
├── _toc.yml
├── environment.yml
├── notebooks
├── how-to-cite.md
├── images
│ ├── ProjectPythia_Logo_Final-01-Blue.svg
│ ├── icons
│ │ └── favicon.ico
│ └── logos
│ │ ├── NSF-NCAR_Lockup-UCAR-Dark_102523.svg
│ │ ├── UAlbany-A2-logo-purple-gold.svg
│ │ ├── Unidata_logo_horizontal_1200x300.svg
│ │ ├── pythia_logo-white-notext.svg
│ │ └── pythia_logo-white-rtext.svg
└── notebook-template.ipynb
├── thumbnail.png
└── thumbnail.svg
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | # - package-ecosystem: pip
4 | # directory: "/"
5 | # schedule:
6 | # interval: daily
7 | - package-ecosystem: "github-actions"
8 | directory: "/"
9 | schedule:
10 | # Check for updates once a week
11 | interval: "weekly"
12 |
--------------------------------------------------------------------------------
/.github/workflows/nightly-build.yaml:
--------------------------------------------------------------------------------
1 | name: nightly-build
2 |
3 | on:
4 | workflow_dispatch:
5 | schedule:
6 | - cron: "0 0 * * *" # Daily “At 00:00”
7 |
8 | jobs:
9 | build:
10 | if: ${{ github.repository_owner == 'ProjectPythia' }}
11 | uses: ProjectPythia/cookbook-actions/.github/workflows/build-book.yaml@main
12 | with:
13 | environment_name: cookbook-dev
14 |
15 | link-check:
16 | if: ${{ github.repository_owner == 'ProjectPythia' }}
17 | uses: ProjectPythia/cookbook-actions/.github/workflows/link-checker.yaml@main
18 |
--------------------------------------------------------------------------------
/.github/workflows/publish-book.yaml:
--------------------------------------------------------------------------------
1 | name: publish-book
2 |
3 | on:
4 | # Trigger the workflow on push to main branch
5 | push:
6 | branches:
7 | - main
8 | workflow_dispatch:
9 |
10 | jobs:
11 | build:
12 | uses: ProjectPythia/cookbook-actions/.github/workflows/build-book.yaml@main
13 | with:
14 | environment_name: cookbook-dev
15 |
16 | deploy:
17 | needs: build
18 | uses: ProjectPythia/cookbook-actions/.github/workflows/deploy-book.yaml@main
19 |
--------------------------------------------------------------------------------
/.github/workflows/trigger-book-build.yaml:
--------------------------------------------------------------------------------
1 | name: trigger-book-build
2 | on:
3 | pull_request:
4 |
5 | jobs:
6 | build:
7 | uses: ProjectPythia/cookbook-actions/.github/workflows/build-book.yaml@main
8 | with:
9 | environment_name: cookbook-dev
10 | artifact_name: book-zip-${{ github.event.number }}
11 | # Other input options are possible, see ProjectPythia/cookbook-actions/.github/workflows/build-book.yaml
12 |
--------------------------------------------------------------------------------
/.github/workflows/trigger-delete-preview.yaml:
--------------------------------------------------------------------------------
1 | name: trigger-delete-preview
2 |
3 | on:
4 | pull_request_target:
5 | types: closed
6 |
7 | jobs:
8 | delete:
9 | uses: ProjectPythia/cookbook-actions/.github/workflows/delete-preview.yaml@main
10 |
--------------------------------------------------------------------------------
/.github/workflows/trigger-link-check.yaml:
--------------------------------------------------------------------------------
1 | name: trigger-link-check
2 | on:
3 | pull_request:
4 |
5 | jobs:
6 | link-check:
7 | uses: ProjectPythia/cookbook-actions/.github/workflows/link-checker.yaml@main
8 |
--------------------------------------------------------------------------------
/.github/workflows/trigger-preview.yaml:
--------------------------------------------------------------------------------
1 | name: trigger-preview
2 | on:
3 | workflow_run:
4 | workflows:
5 | - trigger-book-build
6 | types:
7 | - requested
8 | - completed
9 |
10 | jobs:
11 | find-pull-request:
12 | uses: ProjectPythia/cookbook-actions/.github/workflows/find-pull-request.yaml@main
13 | deploy-preview:
14 | needs: find-pull-request
15 | if: github.event.workflow_run.conclusion == 'success'
16 | uses: ProjectPythia/cookbook-actions/.github/workflows/deploy-book.yaml@main
17 | with:
18 | artifact_name: book-zip-${{ needs.find-pull-request.outputs.number }}
19 | destination_dir: _preview/${{ needs.find-pull-request.outputs.number }} # deploy to subdirectory labeled with PR number
20 | is_preview: "true"
21 |
22 | preview-comment:
23 | needs: find-pull-request
24 | uses: ProjectPythia/cookbook-actions/.github/workflows/preview-comment.yaml@main
25 | with:
26 | pull_request_number: ${{ needs.find-pull-request.outputs.number }}
27 | sha: ${{ needs.find-pull-request.outputs.sha }}
28 |
--------------------------------------------------------------------------------
/.github/workflows/trigger-replace-links.yaml:
--------------------------------------------------------------------------------
1 | name: trigger-replace-links
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | build:
8 | runs-on: ubuntu-latest
9 | permissions:
10 | contents: write
11 |
12 | steps:
13 | - uses: actions/checkout@v4
14 | - name: Find and Replace Repository Name
15 | uses: jacobtomlinson/gha-find-replace@v3
16 | with:
17 | find: "ProjectPythia/cookbook-template"
18 | replace: "${{ github.repository_owner }}/${{ github.event.repository.name }}"
19 | regex: false
20 | exclude: ".github/workflows/trigger-replace-links.yaml"
21 |
22 | - name: Find and Replace Repository ID
23 | uses: jacobtomlinson/gha-find-replace@v3
24 | with:
25 | find: "475509405"
26 | replace: "${{ github.repository_id}}"
27 | regex: false
28 | exclude: ".github/workflows/trigger-replace-links.yaml"
29 |
30 | - name: Push changes
31 | uses: stefanzweifel/git-auto-commit-action@v5
32 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Default JupyterBook build output dir
2 | _build/
3 |
4 | # Byte-compiled / optimized / DLL files
5 | __pycache__/
6 | *.py[cod]
7 | *$py.class
8 |
9 | # C extensions
10 | *.so
11 |
12 | # Distribution / packaging
13 | .Python
14 | build/
15 | notebooks/_build/
16 | develop-eggs/
17 | dist/
18 | downloads/
19 | eggs/
20 | .eggs/
21 | lib/
22 | lib64/
23 | parts/
24 | sdist/
25 | var/
26 | wheels/
27 | pip-wheel-metadata/
28 | share/python-wheels/
29 | *.egg-info/
30 | .installed.cfg
31 | *.egg
32 | MANIFEST
33 |
34 | # PyInstaller
35 | # Usually these files are written by a python script from a template
36 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
37 | *.manifest
38 | *.spec
39 |
40 | # Installer logs
41 | pip-log.txt
42 | pip-delete-this-directory.txt
43 |
44 | # Unit test / coverage reports
45 | htmlcov/
46 | .tox/
47 | .nox/
48 | .coverage
49 | .coverage.*
50 | .cache
51 | nosetests.xml
52 | coverage.xml
53 | *.cover
54 | *.py,cover
55 | .hypothesis/
56 | .pytest_cache/
57 |
58 | # Translations
59 | *.mo
60 | *.pot
61 |
62 | # Django stuff:
63 | *.log
64 | local_settings.py
65 | db.sqlite3
66 | db.sqlite3-journal
67 |
68 | # Flask stuff:
69 | instance/
70 | .webassets-cache
71 |
72 | # Scrapy stuff:
73 | .scrapy
74 |
75 | # Sphinx documentation
76 | docs/_build/
77 |
78 | # PyBuilder
79 | target/
80 |
81 | # Jupyter Notebook
82 | .ipynb_checkpoints
83 |
84 | # IPython
85 | profile_default/
86 | ipython_config.py
87 |
88 | # pyenv
89 | .python-version
90 |
91 | # pipenv
92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
95 | # install all needed dependencies.
96 | #Pipfile.lock
97 |
98 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
99 | __pypackages__/
100 |
101 | # Celery stuff
102 | celerybeat-schedule
103 | celerybeat.pid
104 |
105 | # SageMath parsed files
106 | *.sage.py
107 |
108 | # Environments
109 | .env
110 | .venv
111 | env/
112 | venv/
113 | ENV/
114 | env.bak/
115 | venv.bak/
116 |
117 | # Spyder project settings
118 | .spyderproject
119 | .spyproject
120 |
121 | # Rope project settings
122 | .ropeproject
123 |
124 | # mkdocs documentation
125 | /site
126 |
127 | # mypy
128 | .mypy_cache/
129 | .dmypy.json
130 | dmypy.json
131 |
132 | # Pyre type checker
133 | .pyre/
134 |
135 | # Ephemeral .nfs files
136 | .nfs*
137 |
--------------------------------------------------------------------------------
/.isort.cfg:
--------------------------------------------------------------------------------
1 | [settings]
2 | known_third_party =
3 |
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | repos:
2 | - repo: https://github.com/pre-commit/pre-commit-hooks
3 | rev: v5.0.0
4 | hooks:
5 | - id: trailing-whitespace
6 | - id: end-of-file-fixer
7 | - id: check-docstring-first
8 | - id: check-json
9 | - id: check-yaml
10 | - id: double-quote-string-fixer
11 |
12 | - repo: https://github.com/psf/black
13 | rev: 25.1.0
14 | hooks:
15 | - id: black
16 |
17 | - repo: https://github.com/keewis/blackdoc
18 | rev: v0.3.9
19 | hooks:
20 | - id: blackdoc
21 |
22 | - repo: https://github.com/PyCQA/flake8
23 | rev: 7.2.0
24 | hooks:
25 | - id: flake8
26 |
27 | - repo: https://github.com/asottile/seed-isort-config
28 | rev: v2.2.0
29 | hooks:
30 | - id: seed-isort-config
31 |
32 | - repo: https://github.com/PyCQA/isort
33 | rev: 6.0.1
34 | hooks:
35 | - id: isort
36 |
37 | - repo: https://github.com/nbQA-dev/nbQA
38 | rev: 1.9.1
39 | hooks:
40 | - id: nbqa-black
41 | additional_dependencies: [black]
42 | - id: nbqa-pyupgrade
43 | additional_dependencies: [pyupgrade]
44 | exclude: foundations/quickstart.ipynb
45 | - id: nbqa-isort
46 | additional_dependencies: [isort]
47 |
--------------------------------------------------------------------------------
/CITATION.cff:
--------------------------------------------------------------------------------
1 | cff-version: 1.2.0
2 | message: "If you use this cookbook, please cite it as below."
3 | authors:
4 | # add additional entries for each author -- see https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md
5 | - family-names: Rose
6 | given-names: Brian E. J.
7 | orcid: https://orcid.org/0000-0002-9961-3821 # optional
8 | website: https://github.com/brian-rose # optional
9 | affiliation: University at Albany (State University of New York) # optional
10 | - family-names: Kent
11 | given-names: Julia
12 | orcid: https://orcid.org/0000-0002-5611-8986
13 | website: https://github.com/jukent
14 | affiliation: UCAR/NCAR
15 | - family-names: Tyle
16 | given-names: Kevin
17 | orcid: https://orcid.org/0000-0001-5249-9665
18 | website: https://github.com/ktyle
19 | affiliation: University at Albany (State University of New York)
20 | - family-names: Clyne
21 | given-names: John
22 | orcid: https://orcid.org/0000-0003-2788-9017
23 | website: https://github.com/clyne
24 | affiliation: UCAR/NCAR
25 | - family-names: Camron
26 | given-names: Drew
27 | orcid: https://orcid.org/0000-0001-7246-6502
28 | website: https://github.com/dcamron
29 | affiliation: UCAR/Unidata
30 | - family-names: Grover
31 | given-names: Maxwell
32 | orcid: https://orcid.org/0000-0002-0370-8974
33 | website: https://github.com/mgrover1
34 | affiliation: Argonne National Laboratory
35 | - family-names: Ford
36 | given-names: Robert R.
37 | orcid: https://orcid.org/0000-0001-5483-4965
38 | website: https://github.com/r-ford
39 | affiliation: University at Albany (State University of New York)
40 | - family-names: Paul
41 | given-names: Kevin
42 | orcid: https://orcid.org/0000-0001-8155-8038
43 | website: https://github.com/kmpaul
44 | affiliation: NVIDIA
45 | - name: "Cookbook Template contributors" # use the 'name' field to acknowledge organizations
46 | website: "https://github.com/ProjectPythia/cookbook-template/graphs/contributors"
47 | title: "Cookbook Template"
48 | abstract: "A sample cookbook description."
49 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # (Replace_with_your_title) Cookbook
4 |
5 | [](https://github.com/ProjectPythia/cookbook-template/actions/workflows/nightly-build.yaml)
6 | [](https://binder.projectpythia.org/v2/gh/ProjectPythia/cookbook-template/main?labpath=notebooks)
7 | [](https://zenodo.org/badge/latestdoi/475509405)
8 |
9 | This Project Pythia Cookbook covers ... (replace `...` with the main subject of your cookbook ... e.g., _working with radar data in Python_)
10 |
11 | ## Motivation
12 |
13 | (Add a few sentences stating why this cookbook will be useful. What skills will you, "the chef", gain once you have reached the end of the cookbook?)
14 |
15 | ## Authors
16 |
17 | [First Author](@first-author), [Second Author](@second-author), etc. _Acknowledge primary content authors here_
18 |
19 | ### Contributors
20 |
21 |
22 |
23 |
24 |
25 | ## Structure
26 |
27 | (State one or more sections that will comprise the notebook. E.g., _This cookbook is broken up into two main sections - "Foundations" and "Example Workflows."_ Then, describe each section below.)
28 |
29 | ### Section 1 ( Replace with the title of this section, e.g. "Foundations" )
30 |
31 | (Add content for this section, e.g., "The foundational content includes ... ")
32 |
33 | ### Section 2 ( Replace with the title of this section, e.g. "Example workflows" )
34 |
35 | (Add content for this section, e.g., "Example workflows include ... ")
36 |
37 | ## Running the Notebooks
38 |
39 | You can either run the notebook using [Binder](https://binder.projectpythia.org/) or on your local machine.
40 |
41 | ### Running on Binder
42 |
43 | The simplest way to interact with a Jupyter Notebook is through
44 | [Binder](https://binder.projectpythia.org/), which enables the execution of a
45 | [Jupyter Book](https://jupyterbook.org) in the cloud. The details of how this works are not
46 | important for now. All you need to know is how to launch a Pythia
47 | Cookbooks chapter via Binder. Simply navigate your mouse to
48 | the top right corner of the book chapter you are viewing and click
49 | on the rocket ship icon, (see figure below), and be sure to select
50 | “launch Binder”. After a moment you should be presented with a
51 | notebook that you can interact with. I.e. you’ll be able to execute
52 | and even change the example programs. You’ll see that the code cells
53 | have no output at first, until you execute them by pressing
54 | {kbd}`Shift`\+{kbd}`Enter`. Complete details on how to interact with
55 | a live Jupyter notebook are described in [Getting Started with
56 | Jupyter](https://foundations.projectpythia.org/foundations/getting-started-jupyter.html).
57 |
58 | Note, not all Cookbook chapters are executable. If you do not see
59 | the rocket ship icon, such as on this page, you are not viewing an
60 | executable book chapter.
61 |
62 |
63 | ### Running on Your Own Machine
64 |
65 | If you are interested in running this material locally on your computer, you will need to follow this workflow:
66 |
67 | (Replace "cookbook-example" with the title of your cookbooks)
68 |
69 | 1. Clone the `https://github.com/ProjectPythia/cookbook-example` repository:
70 |
71 | ```bash
72 | git clone https://github.com/ProjectPythia/cookbook-example.git
73 | ```
74 |
75 | 1. Move into the `cookbook-example` directory
76 | ```bash
77 | cd cookbook-example
78 | ```
79 | 1. Create and activate your conda environment from the `environment.yml` file
80 | ```bash
81 | conda env create -f environment.yml
82 | conda activate cookbook-example
83 | ```
84 | 1. Move into the `notebooks` directory and start up Jupyterlab
85 | ```bash
86 | cd notebooks/
87 | jupyter lab
88 | ```
89 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | # Book settings
2 | # Learn more at https://jupyterbook.org/customize/config.html
3 |
4 | title: Project Pythia Cookbook Template
5 | author: the Project Pythia Community
6 | logo: notebooks/images/logos/pythia_logo-white-rtext.svg
7 | copyright: "2024"
8 |
9 | execute:
10 | # To execute notebooks via a Binder instead, replace 'cache' with 'binder'
11 | execute_notebooks: cache
12 | timeout: 600
13 | allow_errors: False # cells with expected failures must set the `raises-exception` cell tag
14 |
15 | # Add a few extensions to help with parsing content
16 | parse:
17 | myst_enable_extensions: # default extensions to enable in the myst parser. See https://myst-parser.readthedocs.io/en/latest/using/syntax-optional.html
18 | - amsmath
19 | - colon_fence
20 | - deflist
21 | - dollarmath
22 | - html_admonition
23 | - html_image
24 | - replacements
25 | - smartquotes
26 | - substitution
27 |
28 | sphinx:
29 | config:
30 | linkcheck_ignore: ["https://doi.org/*", "https://zenodo.org/badge/*"] # don't run link checker on DOI links since they are immutable
31 | nb_execution_raise_on_error: true # raise exception in build if there are notebook errors (this flag is ignored if building on binder)
32 | html_favicon: notebooks/images/icons/favicon.ico
33 | html_last_updated_fmt: "%-d %B %Y"
34 | html_theme: sphinx_pythia_theme
35 | html_permalinks_icon: ''
36 | html_theme_options:
37 | home_page_in_toc: true
38 | repository_url: https://github.com/ProjectPythia/cookbook-template/ # Online location of your book
39 | repository_branch: main # Which branch of the repository should be used when creating links (optional)
40 | use_issues_button: true
41 | use_repository_button: true
42 | use_edit_page_button: true
43 | use_fullscreen_button: true
44 | analytics:
45 | google_analytics_id: G-T52X8HNYE8
46 | github_url: https://github.com/ProjectPythia
47 | twitter_url: https://twitter.com/project_pythia
48 | icon_links:
49 | - name: YouTube
50 | url: https://www.youtube.com/channel/UCoZPBqJal5uKpO8ZiwzavCw
51 | icon: fab fa-youtube-square
52 | type: fontawesome
53 | launch_buttons:
54 | binderhub_url: https://binder.projectpythia.org
55 | notebook_interface: jupyterlab
56 | logo:
57 | link: https://projectpythia.org
58 | navbar_start:
59 | - navbar-logo
60 | navbar_end:
61 | - navbar-icon-links
62 | navbar_links:
63 | - name: Home
64 | url: https://projectpythia.org
65 | - name: Foundations
66 | url: https://foundations.projectpythia.org
67 | - name: Cookbooks
68 | url: https://cookbooks.projectpythia.org
69 | - name: Resources
70 | url: https://projectpythia.org/resource-gallery.html
71 | - name: Community
72 | url: https://projectpythia.org/index.html#join-us
73 | footer_logos:
74 | NCAR: notebooks/images/logos/NSF-NCAR_Lockup-UCAR-Dark_102523.svg
75 | Unidata: notebooks/images/logos/Unidata_logo_horizontal_1200x300.svg
76 | UAlbany: notebooks/images/logos/UAlbany-A2-logo-purple-gold.svg
77 | footer_start:
78 | - footer-logos
79 | - footer-info
80 | - footer-extra
81 |
--------------------------------------------------------------------------------
/_gallery_info.yml:
--------------------------------------------------------------------------------
1 | thumbnail: thumbnail.png
2 | tags:
3 | domains:
4 | - sampledomain
5 | packages:
6 | - samplepackage
7 |
--------------------------------------------------------------------------------
/_static/custom.css:
--------------------------------------------------------------------------------
1 | .bd-main .bd-content .bd-article-container {
2 | max-width: 100%; /* default is 60em */
3 | }
4 | .bd-page-width {
5 | max-width: 100%; /* default is 88rem */
6 | }
7 |
--------------------------------------------------------------------------------
/_static/footer-logo-nsf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ProjectPythia/cookbook-template/2b970f2b52e463b6c3608211ce3bea26ea674a0f/_static/footer-logo-nsf.png
--------------------------------------------------------------------------------
/_templates/footer-extra.html:
--------------------------------------------------------------------------------
1 |
Info
\n", 200 | " Your relevant information here!\n", 201 | "Success
\n", 217 | " We got this done after all!\n", 218 | "Warning
\n", 227 | " Be careful!\n", 228 | "Danger
\n", 237 | " Scary stuff be here.\n", 238 | "