Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions appendix/glossary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: Glossary
description: Glossary of terms used in Pythia Foundations.
---

:::{glossary}

[Binder](https://jupyter.org/binder)
: An open-source service that allows users to create sharable, interactive computing environments from {term}`Jupyter Notebooks` and other repositories. Binder can reproduce a computational environment directly from a GitHub repository, providing a seamless way to share and interact with code and data.

: The public service to run Binder is on <https://mybinder.org>, which is running {term}`BinderHub`. ProjectPythia

BinderHub
: The underlying technology and infrastructure that powers {term}`Binder`. BinderHub deploys and manages the interactive computing environments for {term}`Jupyter Notebooks`, ensuring that users can access and share reproducible computational work.

Conda
: Conda is an open-source, cross-platform, language-agnostic package manager and environment management system that allows you to quickly install, run, and update packages within your work environment(s). To install `conda`, we recommend {term}`miniconda`.
: See [Conda documentation](https://docs.conda.io/en/latest/) and the [Conda cheat sheet](https://docs.conda.io/projects/conda/en/4.6.0/_downloads/) and @conda-commands in the context of ProjectPythia.

Jupyter Notebooks
: The Jupyter Notebook software is an open-source web application that allows you to create and share Jupyter Notebooks (*.ipynb files). Jupyter Notebooks contain executable code, LaTeX equations, visualizations (e.g., plots, pictures), and narrative text. The code does not have to just be Python, other languages such as Julia or R are supported as well. Jupyter Notebooks are celebrated for their interactive output that allows movement between code, code output, explanations, and more code - similar to how scientists think and solve problems. Jupyter Notebooks can be thought of as a living, runnable publication and make for a great presentation platform. See also {term}`Jupyter Kernels`, {term}`Jupyter Lab`, {term}`Jupyter Hub`, {term}`Binder`, and {term}`BinderHub`.

Jupyter Kernels
: Software engines and their environments (e.g., conda environments) that execute the code contained in {term}`Jupyter Notebooks`.

Jupyter Lab
: A popular web application on which users can create and write their {term}`Jupyter Notebooks`, as well as explore data, install software, etc. You can find more information on running Jupyter Lab [here](https://jupyter.org/install).

: See @installing-python-in-jupyter for more.

Jupyter Hub
: A web-based platform that authenticates users and launches {term}`Jupyter Lab` applications for users on remote systems.

Miniconda
: [Miniconda](https://docs.conda.io/en/latest/miniconda.html) is a free minimal installer for {term}`Conda`. Miniconda only comes with the {term}`Conda` package management system; it is a pared-down version of the full Anaconda Python distribution.
: See @installing-conda.

Miniforge
: Miniforge is the community driven and more permissively licensed minimal installer.

[NCL](https://www.ncl.ucar.edu/)
: The NCAR Command Language (NCL) is an interpreted language designed specifically for scientific data analysis and visualization.

Python package
: A Python package is a collection of modules, which, in turn, are essentially Python scripts that contain published functionality. There are Python packages for data input, data analysis, data visualization, etc. Each package offers a unique toolset and may have its own unique syntax rules. You can install Python packages with {term}`conda`.
:::
15 changes: 0 additions & 15 deletions foundations/conda.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,18 +137,3 @@ Conda is a package and environment management system that allows you to quickly
- [Conda cheat sheet](https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf)
- [Anaconda](https://docs.anaconda.com/anaconda/install/)
- [Miniconda](https://docs.conda.io/en/latest/miniconda.html)

## Glossary

:::{glossary}
Conda
: Conda is an open-source, cross-platform, language-agnostic package manager and environment management system that allows you to quickly install, run, and update packages within your work environment(s). To install `conda`, we recommend {term}`miniconda`.
: See [Conda documentation](https://docs.conda.io/en/latest/) and the [Conda cheat sheet](https://docs.conda.io/projects/conda/en/4.6.0/_downloads/) and @conda-commands in the context of ProjectPythia.

Miniconda
: [Miniconda](https://docs.conda.io/en/latest/miniconda.html) is a free minimal installer for {term}`conda`. Miniconda only comes with the {term}`conda` package management system; it is a pared-down version of the full Anaconda Python distribution.
: See @installing-conda.

Python Package
: A Python package is a collection of modules, which, in turn, are essentially Python scripts that contain published functionality. There are Python packages for data input, data analysis, data visualization, etc. Each package offers a unique toolset and may have its own unique syntax rules. You can install Python packages with {term}`conda`.
:::
31 changes: 1 addition & 30 deletions foundations/getting-started-jupyter.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -187,35 +187,6 @@
"- [Jupyter Documentation](https://jupyter.org/)\n",
"- [Xdev Python Tutorial Seminar Series - Jupyter Notebooks](https://youtu.be/xSzXvwzFsDU)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Glossary\n",
"\n",
":::{glossary}\n",
"Jupyter Notebooks\n",
": The Jupyter Notebook software is an open-source web application that allows you to create and share Jupyter Notebooks (*.ipynb files). Jupyter Notebooks contain executable code, LaTeX equations, visualizations (e.g., plots, pictures), and narrative text. The code does not have to just be Python, other languages such as Julia or R are supported as well. Jupyter Notebooks are celebrated for their interactive output that allows movement between code, code output, explanations, and more code - similar to how scientists think and solve problems. Jupyter Notebooks can be thought of as a living, runnable publication and make for a great presentation platform. See also {term}`Jupyter Kernels`, {term}`Jupyter Lab`, {term}`Jupyter Hub`, {term}`Binder`, and {term}`BinderHub`.\n",
"\n",
"Jupyter Kernels\n",
": Software engines and their environments (e.g., conda environments) that execute the code contained in {term}`Jupyter Notebooks`.\n",
"\n",
"Jupyter Lab\n",
": A popular web application on which users can create and write their {term}`Jupyter Notebooks`, as well as explore data, install software, etc. You can find more information on running Jupyter Lab [here](https://jupyter.org/install).\n",
": See @installing-python-in-jupyter for more.\n",
"\n",
"Jupyter Hub\n",
": A web-based platform that authenticates users and launches {term}`Jupyter Lab` applications for users on remote systems.\n",
"\n",
"Binder\n",
": An open-source service that allows users to create sharable, interactive computing environments from {term}`Jupyter Notebooks` and other repositories. Binder can reproduce a computational environment directly from a GitHub repository, providing a seamless way to share and interact with code and data. \n",
": The public service to run Binder is on <https://mybinder.org>, which is running {term}`BinderHub`. ProjectPythia \n",
"\n",
"BinderHub\n",
": The underlying technology and infrastructure that powers {term}`Binder`. BinderHub deploys and manages the interactive computing environments for {term}`Jupyter Notebooks`, ensuring that users can access and share reproducible computational work.\n",
":::"
]
}
],
"metadata": {
Expand All @@ -239,7 +210,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.8"
"version": "3.14.0"
},
"nbdime-conflicts": {
"local_diff": [
Expand Down
14 changes: 7 additions & 7 deletions foundations/why-python.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,26 @@

You're already here because you want to learn to use Python for your data analysis and visualizations.

**Perhaps the #1 reason to use Python is because it is so widely used in the scientific community!**
**Perhaps the #1 reason to use Python is that it is so widely used in the scientific community!**

Python can be compared to other high-level, interpreted, object-oriented languages, but is especially great because it is free and open source!

Want to know what these terms mean for you and your work? Read on!

## High level languages
## High-level languages

Other high level languages include MatLab, IDL, and NCL. The advantage of high level languages is that they provide built-in functions, data structures, and other utilities that are commonly used, which means it takes less code to get real work done. The disadvantage of high level languages is that they tend to obscure the low level aspects of the machine such as memory use, how many floating point operations are happening, and other information related to performance. C, C++, and Fortran are all examples of lower level languages. The "higher" the level of language, the more computing fundamentals are abstracted.
Other high-level languages include [MATLAB](wiki:MATLAB), [IDL](wiki:IDL_(programming_language)), and {term}`NCL`. The advantage of high-level languages is that they provide built-in functions, data structures, and other utilities that are commonly used, which means it takes less code to get real work done. The disadvantage of high-level languages is that they tend to obscure the low-level considerations such as memory use, how many floating-point operations are happening, and other information related to performance. [C](wiki:C_(programming_language)), [C++](wiki:C%2B%2B), and [Fortran](wiki:Fortran) are all examples of lower-level languages. The "higher" the level of language, the more computing fundamentals are abstracted.

## Interpreted languages

Most of your work is probably already in interpreted languages if you've ever used IDL, NCL, or MatLab (interpreted languages are typically also high level). So you are already familiar with the advantages of this: you don't have to worry about compiling or machine compatibility (it is portable). And you are probably familiar with their deficiencies: sometimes they can be slower than compiled languages and potentially more memory intensive.
Most of your work is probably already in interpreted languages if you've ever used [IDL](wiki:IDL_(programming_language)), {term}`NCL`, or [MATLAB](wiki:MATLAB) (interpreted languages are typically also high-level). So you are already familiar with the advantages of this: you don't have to worry about compiling or machine compatibility (it is portable). And you are probably familiar with their deficiencies: sometimes they can be slower than compiled languages and potentially more memory-intensive.

## Object Oriented languages
## Object-oriented languages

Objects are custom datatypes. For every custom datatype, you usually have a set of operations you might want to conduct. For example, if you have an object that is a list of numbers, you might want to apply a mathematical operation, such as sum, onto this list object in bulk. Not every function can be applied to every datatype; it wouldn't make sense to apply a logarithm to a string of letters or to capitalize a list of numbers. Data and the operations applied to them are grouped together into one object.
Objects are custom datatypes. For every custom datatype, you usually have a set of operations you might want to conduct. For example, if you have an object that is a list of numbers, you might want to apply a mathematical operation, such as sum, to this list object in bulk. Not every function can be applied to every datatype; it wouldn't make sense to apply a logarithm to a string of letters or to capitalize a list of numbers. Data and the operations applied to them are grouped together into one object.

## Open source

Python as a language is open source, which means that there is a community of developers behind its codebase. Anyone can join the developer community and contribute to deciding the future of the language. When someone identifies gaps in Python's abilities, they can write up the code to fill these gaps. The open source nature of Python means that Python as a language is very adaptable to the shifting needs of the user community. This harkens back to the idea that the widespread use of Python within the scientific community is a benefit to you! The large Python user base within your field has established high level community Python packages that are available to you in your workflow.
Python, as a language, is open source, which means that there is a community of developers behind its codebase. Anyone can join the developer community and contribute to deciding the future of the language. When someone identifies gaps in Python's abilities, they can write up the code to fill these gaps. The open source nature of Python means that Python as a language is very adaptable to the shifting needs of the user community. This harkens back to the idea that the widespread use of Python within the scientific community is a benefit to you! The large Python user base within your field has established high-level community Python packages that are available to you in your workflow.

Python is a language designed for rapid prototyping and efficient programming. It is easy to write new code quickly with less typing.
20 changes: 15 additions & 5 deletions myst.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,26 @@ project:
url: https://binder.projectpythia.org
repo: projectpythia/pythia-foundations
abbreviations:
FOSS: Free and open-source software
VCS: Version control system
FTP: File transfer protocol
API: application programming interface
FOSS: free and open-source software
FTP: File Transfer Protocol
HTTP: Hypertext Transfer Protocol
ID: identifier
IDL: Interactive Data Language
NCAR: NSF National Center for Atmospheric Research
NCL: NCAR Command Language
NSF: U.S. National Science Foundation
PR: pull request
SSH: Secure Shell Protocol
TCP: Transmission Control Protocol
VCS: version control system
toc:
- file: landing-page.md
- title: Preamble
children:
- file: preamble/how-to-use.md
- file: preamble/how-to-cite.md
- title: Foundational skills
- title: Foundational Skills
children:
- file: foundations/overview.md
- file: foundations/why-python.md
Expand Down Expand Up @@ -54,7 +63,7 @@ project:
- file: foundations/github/review-pr.md
- file: foundations/github/github-workflows.md
- file: foundations/github/contribute-to-pythia.md
- title: Core Scientific Python packages
- title: Core Scientific Python Packages
children:
- file: core/overview.md
- file: core/numpy.md
Expand Down Expand Up @@ -87,6 +96,7 @@ project:
- file: core/xarray/dask-arrays-xarray.ipynb
- title: Appendix
children:
- file: appendix/glossary.md
- file: appendix/how-to-contribute.md
children:
- file: appendix/template.ipynb
Expand Down