From 2746180a1944375702ee90ab88cc27e8afa3c782 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 29 Oct 2025 09:41:06 +0000 Subject: [PATCH] Replace Python tutorial with Tetris game implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Removed all tutorial content, episodes, and data files - Added complete Tetris game implementation using pygame - Updated README.md with game instructions and controls - Added requirements.txt for pygame dependency - Updated index.md to reflect new project purpose The Tetris game includes all 7 classic tetromino shapes, score tracking, rotation, collision detection, and game over mechanics. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- README.md | 98 ++- _episodes/01-intro.md | 313 ------- _episodes/02-numpy.md | 801 ------------------ _episodes/03-matplotlib.md | 288 ------- _episodes/04-lists.md | 531 ------------ _episodes/05-code-migration-01.md | 532 ------------ _episodes_rmd/.gitkeep | 0 _episodes_rmd/data/.gitkeep | 0 _extras/about.md | 5 - _extras/discuss.md | 6 - _extras/figures.md | 79 -- _extras/guide.md | 6 - code/.gitkeep | 0 code/python-novice-inflammation-code.zip | Bin 7268 -> 0 bytes data/.gitkeep | 0 data/python-novice-inflammation-data.zip | Bin 22554 -> 0 bytes fig/.gitkeep | 0 fig/MobaXterm-01-arrows.png | Bin 130237 -> 0 bytes fig/anaconda-navigator-first-launch.png | Bin 76952 -> 0 bytes fig/anaconda-navigator-notebook-launch.png | Bin 273573 -> 0 bytes fig/indexing_lists_python.png | Bin 313084 -> 0 bytes fig/inflammation-01-average.svg | 55 -- fig/inflammation-01-group-plot.svg | 110 --- fig/inflammation-01-imshow.svg | 45 - fig/inflammation-01-line-styles.svg | 110 --- fig/inflammation-01-maximum.svg | 59 -- fig/inflammation-01-minimum.svg | 53 -- fig/jupyter-lab-download-as-python-script.png | Bin 269464 -> 0 bytes fig/jupyter-lab-home.png | Bin 325692 -> 0 bytes fig/jupyter-notebook-data-directory.png | Bin 88459 -> 0 bytes ...ter-notebook-download-as-python-script.png | Bin 227050 -> 0 bytes fig/jupyter-notebook-launch-notebook.png | Bin 93208 -> 0 bytes fig/jupyter-notebook-launch-notebook2.png | Bin 87538 -> 0 bytes fig/lesson-overview.svg | 219 ----- fig/mobaxterm-scp-copy-directory.png | Bin 1447916 -> 0 bytes fig/mobaxterm-scp-setup.png | Bin 310730 -> 0 bytes ...upyter-notebook-change-kernel-manually.png | Bin 141021 -> 0 bytes ...d-jupyter-notebook-confirm-environment.png | Bin 218221 -> 0 bytes fig/ondemand-jupyter-notebook-main.png | Bin 195807 -> 0 bytes ...ondemand-jupyter-notebook-new-notebook.png | Bin 116666 -> 0 bytes fig/ondemand-jupyter-notebook-queued.png | Bin 104299 -> 0 bytes ...ondemand-jupyter-notebook-requirements.png | Bin 166776 -> 0 bytes fig/ondemand-jupyter-notebook-running.png | Bin 115518 -> 0 bytes ...ndemand-jupyter-notebook-select-kernel.png | Bin 321518 -> 0 bytes fig/ondemand-landing-page.png | Bin 228534 -> 0 bytes fig/ondemand-login.png | Bin 155199 -> 0 bytes fig/ondemand-select-jupyter-notebook-lab.png | Bin 299891 -> 0 bytes fig/ondemand-upload-files-click-upload.png | Bin 280750 -> 0 bytes ...nd-upload-files-locate-local-directory.png | Bin 298818 -> 0 bytes ...ondemand-upload-files-select-directory.png | Bin 264882 -> 0 bytes fig/ondemand-upload-files-uploaded.png | Bin 232744 -> 0 bytes fig/python-operations-across-axes.png | Bin 48383 -> 0 bytes fig/python-sticky-note-variables-01.svg | 29 - fig/python-sticky-note-variables-02.svg | 52 -- fig/python-sticky-note-variables-03.svg | 52 -- fig/python-zero-index.svg | 141 --- files/.gitkeep | 0 index.md | 90 +- requirements.txt | 1 + tetris.py | 239 ++++++ 60 files changed, 332 insertions(+), 3582 deletions(-) delete mode 100644 _episodes/01-intro.md delete mode 100644 _episodes/02-numpy.md delete mode 100644 _episodes/03-matplotlib.md delete mode 100644 _episodes/04-lists.md delete mode 100644 _episodes/05-code-migration-01.md delete mode 100644 _episodes_rmd/.gitkeep delete mode 100644 _episodes_rmd/data/.gitkeep delete mode 100644 _extras/about.md delete mode 100644 _extras/discuss.md delete mode 100644 _extras/figures.md delete mode 100644 _extras/guide.md delete mode 100644 code/.gitkeep delete mode 100644 code/python-novice-inflammation-code.zip delete mode 100644 data/.gitkeep delete mode 100644 data/python-novice-inflammation-data.zip delete mode 100644 fig/.gitkeep delete mode 100644 fig/MobaXterm-01-arrows.png delete mode 100644 fig/anaconda-navigator-first-launch.png delete mode 100644 fig/anaconda-navigator-notebook-launch.png delete mode 100644 fig/indexing_lists_python.png delete mode 100644 fig/inflammation-01-average.svg delete mode 100644 fig/inflammation-01-group-plot.svg delete mode 100644 fig/inflammation-01-imshow.svg delete mode 100644 fig/inflammation-01-line-styles.svg delete mode 100644 fig/inflammation-01-maximum.svg delete mode 100644 fig/inflammation-01-minimum.svg delete mode 100644 fig/jupyter-lab-download-as-python-script.png delete mode 100644 fig/jupyter-lab-home.png delete mode 100644 fig/jupyter-notebook-data-directory.png delete mode 100644 fig/jupyter-notebook-download-as-python-script.png delete mode 100644 fig/jupyter-notebook-launch-notebook.png delete mode 100644 fig/jupyter-notebook-launch-notebook2.png delete mode 100644 fig/lesson-overview.svg delete mode 100644 fig/mobaxterm-scp-copy-directory.png delete mode 100644 fig/mobaxterm-scp-setup.png delete mode 100644 fig/ondemand-jupyter-notebook-change-kernel-manually.png delete mode 100644 fig/ondemand-jupyter-notebook-confirm-environment.png delete mode 100644 fig/ondemand-jupyter-notebook-main.png delete mode 100644 fig/ondemand-jupyter-notebook-new-notebook.png delete mode 100644 fig/ondemand-jupyter-notebook-queued.png delete mode 100644 fig/ondemand-jupyter-notebook-requirements.png delete mode 100644 fig/ondemand-jupyter-notebook-running.png delete mode 100644 fig/ondemand-jupyter-notebook-select-kernel.png delete mode 100644 fig/ondemand-landing-page.png delete mode 100644 fig/ondemand-login.png delete mode 100644 fig/ondemand-select-jupyter-notebook-lab.png delete mode 100644 fig/ondemand-upload-files-click-upload.png delete mode 100644 fig/ondemand-upload-files-locate-local-directory.png delete mode 100644 fig/ondemand-upload-files-select-directory.png delete mode 100644 fig/ondemand-upload-files-uploaded.png delete mode 100644 fig/python-operations-across-axes.png delete mode 100644 fig/python-sticky-note-variables-01.svg delete mode 100644 fig/python-sticky-note-variables-02.svg delete mode 100644 fig/python-sticky-note-variables-03.svg delete mode 100644 fig/python-zero-index.svg delete mode 100644 files/.gitkeep create mode 100644 requirements.txt create mode 100644 tetris.py diff --git a/README.md b/README.md index 060994a..c11d4d5 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,90 @@ -# FIXME Lesson title +# Tetris Game (俄罗斯方块) -[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) +A simple, classic Tetris game implementation in Python using pygame. -This repository generates the corresponding lesson website from [The Carpentries](https://carpentries.org/) repertoire of lessons. +## Description -## Contributing +This is a fully functional Tetris game featuring: +- Classic Tetris gameplay with all 7 tetromino shapes +- Score tracking +- Smooth piece movement and rotation +- Line clearing mechanics +- Game over detection -We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any -questions, concerns, or experience any difficulties along the way. +## Requirements -We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at -the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even -how to write new episodes. +- Python 3.6 or higher +- pygame 2.0.0 or higher -Please see the current list of [issues][FIXME] for ideas for contributing to this -repository. For making your contribution, we use the GitHub flow, which is -nicely explained in the chapter [Contributing to a Project](http://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project) in Pro Git -by Scott Chacon. -Look for the tag ![good_first_issue](https://img.shields.io/badge/-good%20first%20issue-gold.svg). This indicates that the maintainers will welcome a pull request fixing this issue. +## Installation +1. Clone this repository: +```bash +git clone +cd introduction-to-python +``` -## Maintainer(s) +2. Install dependencies: +```bash +pip install -r requirements.txt +``` -Current maintainers of this lesson are +Or install pygame directly: +```bash +pip install pygame +``` -* FIXME -* FIXME -* FIXME +## How to Play +Run the game with: +```bash +python tetris.py +``` -## Authors +### Controls + +- **LEFT/RIGHT Arrow Keys**: Move piece horizontally +- **DOWN Arrow Key**: Soft drop (move piece down faster) +- **UP Arrow Key**: Rotate piece clockwise +- **SPACE**: Hard drop (instantly drop piece to the bottom) + +### Objective + +- Arrange falling tetromino pieces to create complete horizontal lines +- Completed lines are cleared and you earn points +- The game ends when pieces stack up to the top of the screen +- Try to achieve the highest score possible! + +## Scoring + +- Each cleared line awards 100 points +- Clear multiple lines at once for maximum efficiency -A list of contributors to the lesson can be found in [AUTHORS](AUTHORS) +## Game Features -## Citation +- 7 unique tetromino shapes with different colors: + - I-piece (Cyan): 4 blocks in a line + - O-piece (Yellow): 2x2 square + - T-piece (Magenta): T-shaped + - L-piece (Orange): L-shaped + - J-piece (Blue): Reverse L-shaped + - S-piece (Green): S-shaped + - Z-piece (Red): Z-shaped -To cite this lesson, please consult with [CITATION](CITATION) +- Automatic piece falling +- Collision detection +- Piece rotation +- Score display +- Game over screen + +## License + +This project maintains the original LICENSE.md from the repository. + +## Contributing + +Contributions are welcome! Feel free to submit issues or pull requests. + +## Authors -[lesson-example]: https://carpentries.github.io/lesson-example +See [AUTHORS](AUTHORS) file for contributors. diff --git a/_episodes/01-intro.md b/_episodes/01-intro.md deleted file mode 100644 index d50a7a3..0000000 --- a/_episodes/01-intro.md +++ /dev/null @@ -1,313 +0,0 @@ ---- -title: Python Fundamentals -teaching: 20 -exercises: 10 -questions: -- "What basic data types can I work with in Python?" -- "How can I create a new variable in Python?" -- "How do I use a function?" -- "Can I change the value associated with a variable after I create it?" -objectives: -- "Assign values to variables." -keypoints: -- "Basic data types in Python include integers, strings, and floating-point numbers." -- "Use `variable = value` to assign a value to a variable in order to record it in memory." -- "Variables are created on demand whenever a value is assigned to them." -- "Use `print(something)` to display the value of `something`." -- "Built-in functions are always available to use." ---- - -## Variables - -Any Python interpreter can be used as a calculator: -~~~ -3 + 5 * 4 -~~~ -{: .language-python} -~~~ -23 -~~~ -{: .output} - -This is great but not very interesting. -To do anything useful with data, we need to assign its value to a _variable_. -In Python, we can [assign]({{ page.root }}/reference.html#assign) a value to a -[variable]({{ page.root }}/reference.html#variable), using the equals sign `=`. -For example, we can track the weight of a patient who weighs 60 kilograms by -assigning the value `60` to a variable `weight_kg`: - -~~~ -weight_kg = 60 -~~~ -{: .language-python} - -From now on, whenever we use `weight_kg`, Python will substitute the value we assigned to -it. In layman's terms, **a variable is a name for a value**. - -In Python, variable names: - - - can include letters, digits, and underscores - - cannot start with a digit - - are [case sensitive]({{ page.root }}/reference.html#case-sensitive). - -This means that, for example: - - `weight0` is a valid variable name, whereas `0weight` is not - - `weight` and `Weight` are different variables - -## Types of data -Python knows various types of data. Three common ones are: - -* integer numbers -* floating point numbers, and -* strings. - -In the example above, variable `weight_kg` has an integer value of `60`. -If we want to more precisely track the weight of our patient, -we can use a floating point value by executing: - -~~~ -weight_kg = 60.3 -~~~ -{: .language-python} - -To create a string, we add single or double quotes around some text. -To identify and track a patient throughout our study, -we can assign each person a unique identifier by storing it in a string: - -~~~ -patient_id = '001' -~~~ -{: .language-python} - -## Using Variables in Python - -Once we have data stored with variable names, we can make use of it in calculations. -We may want to store our patient's weight in pounds as well as kilograms: - -~~~ -weight_lb = 2.2 * weight_kg -~~~ -{: .language-python} - -We might decide to add a prefix to our patient identifier: - -~~~ -patient_id = 'inflam_' + patient_id -~~~ -{: .language-python} - -## Built-in Python functions - -To carry out common tasks with data and variables in Python, -the language provides us with several built-in [functions]({{ page.root }}/reference.html#function). -To display information to the screen, we use the `print` function: - -~~~ -print(weight_lb) -print(patient_id) -~~~ -{: .language-python} - -~~~ -132.66 -inflam_001 -~~~ -{: .output} - -When we want to make use of a function, referred to as calling the function, -we follow its name by parentheses. The parentheses are important: -if you leave them off, the function doesn't actually run! -Sometimes you will include values or variables inside the parentheses for the function to use. -In the case of `print`, -we use the parentheses to tell the function what value we want to display. -We will learn more about how functions work and how to create our own in later episodes. - -We can display multiple things at once using only one `print` call: - -~~~ -print(patient_id, 'weight in kilograms:', weight_kg) -~~~ -{: .language-python} -~~~ -inflam_001 weight in kilograms: 60.3 -~~~ -{: .output} - -We can also call a function inside of another -[function call]({{ page.root }}/reference.html#function-call). -For example, Python has a built-in function called `type` that tells you a value's data type: - -~~~ -print(type(60.3)) -print(type(patient_id)) -~~~ -{: .language-python} - -~~~ - - -~~~ -{: .output} - -Moreover, we can do arithmetic with variables right inside the `print` function: - -~~~ -print('weight in pounds:', 2.2 * weight_kg) -~~~ -{: .language-python} - -~~~ -weight in pounds: 132.66 -~~~ -{: .output} - -The above command, however, did not change the value of `weight_kg`: -~~~ -print(weight_kg) -~~~ -{: .language-python} - -~~~ -60.3 -~~~ -{: .output} - -To change the value of the `weight_kg` variable, we have to -**assign** `weight_kg` a new value using the equals `=` sign: - -~~~ -weight_kg = 65.0 -print('weight in kilograms is now:', weight_kg) -~~~ -{: .language-python} - -~~~ -weight in kilograms is now: 65.0 -~~~ -{: .output} - -> ## Variables as Sticky Notes -> -> A variable in Python is analogous to a sticky note with a name written on it: -> assigning a value to a variable is like putting that sticky note on a particular value. -> -> ![Value of 65.0 with weight_kg label stuck on it](../fig/python-sticky-note-variables-01.svg) -> -> Using this analogy, we can investigate how assigning a value to one variable -> does **not** change values of other, seemingly related, variables. For -> example, let's store the subject's weight in pounds in its own variable: -> -> ~~~ -> # There are 2.2 pounds per kilogram -> weight_lb = 2.2 * weight_kg -> print('weight in kilograms:', weight_kg, 'and in pounds:', weight_lb) -> ~~~ -> {: .language-python} -> -> ~~~ -> weight in kilograms: 65.0 and in pounds: 143.0 -> ~~~ -> {: .output} -> -> ![Value of 65.0 with weight_kg label stuck on it, and value of 143.0 with weight_lb label -stuck on it](../fig/python-sticky-note-variables-02.svg) -> -> Similar to above, the expression `2.2 * weight_kg` is evaluated to `143.0`, -> and then this value is assigned to the variable `weight_lb` (i.e. the sticky -> note `weight_lb` is placed on `143.0`). At this point, each variable is -> "stuck" to completely distinct and unrelated values. -> -> Let's now change `weight_kg`: -> -> ~~~ -> weight_kg = 100.0 -> print('weight in kilograms is now:', weight_kg, 'and weight in pounds is still:', weight_lb) -> ~~~ -> {: .language-python} -> -> ~~~ -> weight in kilograms is now: 100.0 and weight in pounds is still: 143.0 -> ~~~ -> {: .output} -> -> ![Value of 100.0 with label weight_kg stuck on it, and value of 143.0 with label weight_lb -stuck on it](../fig/python-sticky-note-variables-03.svg) -> -> Since `weight_lb` doesn't "remember" where its value comes from, -> it is not updated when we change `weight_kg`. -{: .callout} - - -> ## Check Your Understanding -> -> What values do the variables `mass` and `age` have after each of the following statements? -> Test your answer by executing the lines. -> -> ~~~ -> mass = 47.5 -> age = 122 -> mass = mass * 2.0 -> age = age - 20 -> ~~~ -> {: .language-python} -> -> > ## Solution -> > ~~~ -> > `mass` holds a value of 47.5, `age` does not exist -> > `mass` still holds a value of 47.5, `age` holds a value of 122 -> > `mass` now has a value of 95.0, `age`'s value is still 122 -> > `mass` still has a value of 95.0, `age` now holds 102 -> > ~~~ -> > {: .output} -> {: .solution} -{: .challenge} - -> ## Sorting Out References -> -> Python allows you to assign multiple values to multiple variables in one line by separating -> the variables and values with commas. What does the following program print out? -> -> ~~~ -> first, second = 'Grace', 'Hopper' -> third, fourth = second, first -> print(third, fourth) -> ~~~ -> {: .language-python} -> -> > ## Solution -> > ~~~ -> > Hopper Grace -> > ~~~ -> > {: .output} -> {: .solution} -{: .challenge} - -> ## Seeing Data Types -> -> What are the data types of the following variables? -> -> ~~~ -> planet = 'Earth' -> apples = 5 -> distance = 10.5 -> ~~~ -> {: .language-python} -> -> > ## Solution -> > ~~~ -> > print(type(planet)) -> > print(type(apples)) -> > print(type(distance)) -> > ~~~ -> > {: .language-python} -> > -> > ~~~ -> > -> > -> > -> > ~~~ -> > {: .output} -> {: .solution} -{: .challenge} - -{% include links.md %} diff --git a/_episodes/02-numpy.md b/_episodes/02-numpy.md deleted file mode 100644 index bb3b819..0000000 --- a/_episodes/02-numpy.md +++ /dev/null @@ -1,801 +0,0 @@ ---- -title: Analyzing Patient Data -teaching: 45 -exercises: 20 -questions: -- "How can I process tabular data files in Python?" -objectives: -- "Explain what a library is and what libraries are used for." -- "Import a Python library and use the functions it contains." -- "Read tabular data from a file into a program." -- "Select individual values and subsections from data." -- "Perform operations on arrays of data." -keypoints: -- "Import a library into a program using `import libraryname`." -- "Use the `numpy` library to work with arrays in Python." -- "The expression `array.shape` gives the shape of an array." -- "Use `array[x, y]` to select a single element from a 2D array." -- "Array indices start at 0, not 1." -- "Use `low:high` to specify a `slice` that includes the indices from `low` to `high-1`." -- "Use `# some kind of explanation` to add comments to programs." -- "Use `numpy.mean(array)`, `numpy.max(array)`, and `numpy.min(array)` to calculate simple statistics." -- "Use `numpy.mean(array, axis=0)` or `numpy.mean(array, axis=1)` to calculate statistics across the specified axis." ---- - -Words are useful, but what's more useful are the sentences and stories we build with them. -Similarly, while a lot of powerful, general tools are built into Python, -specialized tools built up from these basic units live in -[libraries]({{ page.root }}/reference.html#library) -that can be called upon when needed. - -## Loading data into Python - -To begin processing inflammation data, we need to load it into Python. -We can do that using a library called -[NumPy](http://docs.scipy.org/doc/numpy/ "NumPy Documentation"), which stands for Numerical Python. -In general, you should use this library when you want to do fancy things with lots of numbers, -especially if you have matrices or arrays. To tell Python that we'd like to start using NumPy, -we need to [import]({{ page.root }}/reference.html#import) it: - -~~~ -import numpy -~~~ -{: .language-python} - -Importing a library is like getting a piece of lab equipment out of a storage locker and setting it -up on the bench. Libraries provide additional functionality to the basic Python package, much like -a new piece of equipment adds functionality to a lab space. Just like in the lab, importing too -many libraries can sometimes complicate and slow down your programs - so we only import what we -need for each program. - -Once we've imported the library, we can ask the library to read our data file for us: - -~~~ -numpy.loadtxt(fname='inflammation-01.csv', delimiter=',') -~~~ -{: .language-python} - -~~~ -array([[ 0., 0., 1., ..., 3., 0., 0.], - [ 0., 1., 2., ..., 1., 0., 1.], - [ 0., 1., 1., ..., 2., 1., 1.], - ..., - [ 0., 1., 1., ..., 1., 1., 1.], - [ 0., 0., 0., ..., 0., 2., 0.], - [ 0., 0., 1., ..., 1., 1., 0.]]) -~~~ -{: .output} - -The expression `numpy.loadtxt(...)` is a -[function call]({{ page.root }}/reference.html#function-call) -that asks Python to run the [function]({{ page.root }}/reference.html#function) `loadtxt` which -belongs to the `numpy` library. -This [dotted notation]({{ page.root }}/reference.html#dotted-notation) -is used everywhere in Python: the thing that appears before the dot contains the thing that -appears after. - -As an example, John Smith is the John that belongs to the Smith family. -We could use the dot notation to write his name `smith.john`, -just as `loadtxt` is a function that belongs to the `numpy` library. - -`numpy.loadtxt` has two [parameters]({{ page.root }}/reference.html#parameter): the name of the file -we want to read and the [delimiter]({{ page.root }}/reference.html#delimiter) that separates values -on a line. These both need to be character strings -(or [strings]({{ page.root }}/reference.html#string) for short), so we put them in quotes. - -Since we haven't told it to do anything else with the function's output, -the [notebook]({{ page.root }}/reference.html#notebook) displays it. -In this case, -that output is the data we just loaded. -By default, -only a few rows and columns are shown -(with `...` to omit elements when displaying big arrays). -Note that, to save space when displaying NumPy arrays, Python does not show us trailing zeros, -so `1.0` becomes `1.`. - -Our call to `numpy.loadtxt` read our file -but didn't save the data in memory. -To do that, -we need to assign the array to a variable. In a similar manner to how we assign a single -value to a variable, we can also assign an array of values to a variable using the same syntax. -Let's re-run `numpy.loadtxt` and save the returned data: - -~~~ -data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',') -~~~ -{: .language-python} - -This statement doesn't produce any output because we've assigned the output to the variable `data`. -If we want to check that the data have been loaded, -we can print the variable's value: - -~~~ -print(data) -~~~ -{: .language-python} - -~~~ -[[ 0. 0. 1. ..., 3. 0. 0.] - [ 0. 1. 2. ..., 1. 0. 1.] - [ 0. 1. 1. ..., 2. 1. 1.] - ..., - [ 0. 1. 1. ..., 1. 1. 1.] - [ 0. 0. 0. ..., 0. 2. 0.] - [ 0. 0. 1. ..., 1. 1. 0.]] -~~~ -{: .output} - -Now that the data are in memory, -we can manipulate them. -First, -let's ask what [type]({{ page.root }}/reference.html#type) of thing `data` refers to: - -~~~ -print(type(data)) -~~~ -{: .language-python} - -~~~ - -~~~ -{: .output} - -The output tells us that `data` currently refers to -an N-dimensional array, the functionality for which is provided by the NumPy library. -These data correspond to arthritis patients' inflammation. -The rows are the individual patients, and the columns -are their daily inflammation measurements. - -> ## Data Type -> -> A Numpy array contains one or more elements -> of the same type. The `type` function will only tell you that -> a variable is a NumPy array but won't tell you the type of -> thing inside the array. -> We can find out the type -> of the data contained in the NumPy array. -> -> ~~~ -> print(data.dtype) -> ~~~ -> {: .language-python} -> -> ~~~ -> float64 -> ~~~ -> {: .output} -> -> This tells us that the NumPy array's elements are -> [floating-point numbers]({{ page.root }}/reference.html#floating-point number). -{: .callout} - -With the following command, we can see the array's [shape]({{ page.root }}/reference.html#shape): - -~~~ -print(data.shape) -~~~ -{: .language-python} - -~~~ -(60, 40) -~~~ -{: .output} - -The output tells us that the `data` array variable contains 60 rows and 40 columns. When we -created the variable `data` to store our arthritis data, we did not only create the array; we also -created information about the array, called [members]({{ page.root }}/reference.html#member) or -attributes. This extra information describes `data` in the same way an adjective describes a noun. -`data.shape` is an attribute of `data` which describes the dimensions of `data`. We use the same -dotted notation for the attributes of variables that we use for the functions in libraries because -they have the same part-and-whole relationship. - -If we want to get a single number from the array, we must provide an -[index]({{ page.root }}/reference.html#index) in square brackets after the variable name, just as we -do in math when referring to an element of a matrix. Our inflammation data has two dimensions, so -we will need to use two indices to refer to one specific value: - -~~~ -print('first value in data:', data[0, 0]) -~~~ -{: .language-python} - -~~~ -first value in data: 0.0 -~~~ -{: .output} - -~~~ -print('middle value in data:', data[30, 20]) -~~~ -{: .language-python} - -~~~ -middle value in data: 13.0 -~~~ -{: .output} - -The expression `data[30, 20]` accesses the element at row 30, column 20. While this expression may -not surprise you, - `data[0, 0]` might. -Programming languages like Fortran, MATLAB and R start counting at 1 -because that's what human beings have done for thousands of years. -Languages in the C family (including C++, Java, Perl, and Python) count from 0 -because it represents an offset from the first value in the array (the second -value is offset by one index from the first value). This is closer to the way -that computers represent arrays (if you are interested in the historical -reasons behind counting indices from zero, you can read -[Mike Hoye's blog post](http://exple.tive.org/blarg/2013/10/22/citation-needed/)). -As a result, -if we have an M×N array in Python, -its indices go from 0 to M-1 on the first axis -and 0 to N-1 on the second. -It takes a bit of getting used to, -but one way to remember the rule is that -the index is how many steps we have to take from the start to get the item we want. - -!["data" is a 3 by 3 numpy array containing row 0: ['A', 'B', 'C'], row 1: ['D', 'E', 'F'], and -row 2: ['G', 'H', 'I']. Starting in the upper left hand corner, data[0, 0] = 'A', data[0, 1] = 'B', -data[0, 2] = 'C', data[1, 0] = 'D', data[1, 1] = 'E', data[1, 2] = 'F', data[2, 0] = 'G', -data[2, 1] = 'H', and data[2, 2] = 'I', -in the bottom right hand corner.](../fig/python-zero-index.svg) - -> ## In the Corner -> -> What may also surprise you is that when Python displays an array, -> it shows the element with index `[0, 0]` in the upper left corner -> rather than the lower left. -> This is consistent with the way mathematicians draw matrices -> but different from the Cartesian coordinates. -> The indices are (row, column) instead of (column, row) for the same reason, -> which can be confusing when plotting data. -{: .callout} - -## Slicing data -An index like `[30, 20]` selects a single element of an array, -but we can select whole sections as well. -For example, -we can select the first ten days (columns) of values -for the first four patients (rows) like this: - -~~~ -print(data[0:4, 0:10]) -~~~ -{: .language-python} - -~~~ -[[ 0. 0. 1. 3. 1. 2. 4. 7. 8. 3.] - [ 0. 1. 2. 1. 2. 1. 3. 2. 2. 6.] - [ 0. 1. 1. 3. 3. 2. 6. 2. 5. 9.] - [ 0. 0. 2. 0. 4. 2. 2. 1. 6. 7.]] -~~~ -{: .output} - -The [slice]({{ page.root }}/reference.html#slice) `0:4` means, "Start at index 0 and go up to, -but not including, index 4". Again, the up-to-but-not-including takes a bit of getting used to, -but the rule is that the difference between the upper and lower bounds is the number of values in -the slice. - -We don't have to start slices at 0: - -~~~ -print(data[5:10, 0:10]) -~~~ -{: .language-python} - -~~~ -[[ 0. 0. 1. 2. 2. 4. 2. 1. 6. 4.] - [ 0. 0. 2. 2. 4. 2. 2. 5. 5. 8.] - [ 0. 0. 1. 2. 3. 1. 2. 3. 5. 3.] - [ 0. 0. 0. 3. 1. 5. 6. 5. 5. 8.] - [ 0. 1. 1. 2. 1. 3. 5. 3. 5. 8.]] -~~~ -{: .output} - -We also don't have to include the upper and lower bound on the slice. If we don't include the lower -bound, Python uses 0 by default; if we don't include the upper, the slice runs to the end of the -axis, and if we don't include either (i.e., if we use ':' on its own), the slice includes -everything: - -~~~ -small = data[:3, 36:] -print('small is:') -print(small) -~~~ -{: .language-python} -The above example selects rows 0 through 2 and columns 36 through to the end of the array. - -~~~ -small is: -[[ 2. 3. 0. 0.] - [ 1. 1. 0. 1.] - [ 2. 2. 1. 1.]] -~~~ -{: .output} - -## Analyzing data - -NumPy has several useful functions that take an array as input to perform operations on its values. -If we want to find the average inflammation for all patients on -all days, for example, we can ask NumPy to compute `data`'s mean value: - -~~~ -print(numpy.mean(data)) -~~~ -{: .language-python} - -~~~ -6.14875 -~~~ -{: .output} - -`mean` is a [function]({{ page.root }}/reference.html#function) that takes -an array as an [argument]({{ page.root }}/reference.html#argument). - -> ## Not All Functions Have Input -> -> Generally, a function uses inputs to produce outputs. -> However, some functions produce outputs without -> needing any input. For example, checking the current time -> doesn't require any input. -> -> ~~~ -> import time -> print(time.ctime()) -> ~~~ -> {: .language-python} -> -> ~~~ -> Sat Mar 26 13:07:33 2016 -> ~~~ -> {: .output} -> -> For functions that don't take in any arguments, -> we still need parentheses (`()`) -> to tell Python to go and do something for us. -{: .callout} - -Let's use three other NumPy functions to get some descriptive values about the dataset. -We'll also use multiple assignment, -a convenient Python feature that will enable us to do this all in one line. - -~~~ -maxval, minval, stdval = numpy.max(data), numpy.min(data), numpy.std(data) - -print('maximum inflammation:', maxval) -print('minimum inflammation:', minval) -print('standard deviation:', stdval) -~~~ -{: .language-python} - -Here we've assigned the return value from `numpy.max(data)` to the variable `maxval`, the value -from `numpy.min(data)` to `minval`, and so on. - -~~~ -maximum inflammation: 20.0 -minimum inflammation: 0.0 -standard deviation: 4.61383319712 -~~~ -{: .output} - -> ## Mystery Functions in IPython -> -> How did we know what functions NumPy has and how to use them? -> If you are working in IPython or in a Jupyter Notebook, there is an easy way to find out. -> If you type the name of something followed by a dot, then you can use -> [tab completion]({{ page.root }}/reference.html#tab-completion) -> (e.g. type `numpy.` and then press Tab) -> to see a list of all functions and attributes that you can use. After selecting one, you -> can also add a question mark (e.g. `numpy.cumprod?`), and IPython will return an -> explanation of the method! This is the same as doing `help(numpy.cumprod)`. -> Similarly, if you are using the "plain vanilla" Python interpreter, you can type `numpy.` -> and press the Tab key twice for a listing of what is available. You can then use the -> `help()` function to see an explanation of the function you're interested in, -> for example: `help(numpy.cumprod)`. -{: .callout} - -When analyzing data, though, -we often want to look at variations in statistical values, -such as the maximum inflammation per patient -or the average inflammation per day. -One way to do this is to create a new temporary array of the data we want, -then ask it to do the calculation: - -~~~ -patient_0 = data[0, :] # 0 on the first axis (rows), everything on the second (columns) -print('maximum inflammation for patient 0:', numpy.max(patient_0)) -~~~ -{: .language-python} - -~~~ -maximum inflammation for patient 0: 18.0 -~~~ -{: .output} - -Everything in a line of code following the '#' symbol is a -[comment]({{ page.root }}/reference.html#comment) that is ignored by Python. -Comments allow programmers to leave explanatory notes for other -programmers or their future selves. - -We don't actually need to store the row in a variable of its own. -Instead, we can combine the selection and the function call: - -~~~ -print('maximum inflammation for patient 2:', numpy.max(data[2, :])) -~~~ -{: .language-python} - -~~~ -maximum inflammation for patient 2: 19.0 -~~~ -{: .output} - -What if we need the maximum inflammation for each patient over all days (as in the -next diagram on the left) or the average for each day (as in the -diagram on the right)? As the diagram below shows, we want to perform the -operation across an axis: - -![Per-patient maximum inflammation is computed row-wise across all columns using -numpy.max(data, axis=1). Per-day average inflammation is computed column-wise across all rows using -numpy.mean(data, axis=0).](../fig/python-operations-across-axes.png) - -To support this functionality, -most array functions allow us to specify the axis we want to work on. -If we ask for the average across axis 0 (rows in our 2D example), -we get: - -~~~ -print(numpy.mean(data, axis=0)) -~~~ -{: .language-python} - -~~~ -[ 0. 0.45 1.11666667 1.75 2.43333333 3.15 - 3.8 3.88333333 5.23333333 5.51666667 5.95 5.9 - 8.35 7.73333333 8.36666667 9.5 9.58333333 - 10.63333333 11.56666667 12.35 13.25 11.96666667 - 11.03333333 10.16666667 10. 8.66666667 9.15 7.25 - 7.33333333 6.58333333 6.06666667 5.95 5.11666667 3.6 - 3.3 3.56666667 2.48333333 1.5 1.13333333 - 0.56666667] -~~~ -{: .output} - -As a quick check, -we can ask this array what its shape is: - -~~~ -print(numpy.mean(data, axis=0).shape) -~~~ -{: .language-python} - -~~~ -(40,) -~~~ -{: .output} - -The expression `(40,)` tells us we have an N×1 vector, -so this is the average inflammation per day for all patients. -If we average across axis 1 (columns in our 2D example), we get: - -~~~ -print(numpy.mean(data, axis=1)) -~~~ -{: .language-python} - -~~~ -[ 5.45 5.425 6.1 5.9 5.55 6.225 5.975 6.65 6.625 6.525 - 6.775 5.8 6.225 5.75 5.225 6.3 6.55 5.7 5.85 6.55 - 5.775 5.825 6.175 6.1 5.8 6.425 6.05 6.025 6.175 6.55 - 6.175 6.35 6.725 6.125 7.075 5.725 5.925 6.15 6.075 5.75 - 5.975 5.725 6.3 5.9 6.75 5.925 7.225 6.15 5.95 6.275 5.7 - 6.1 6.825 5.975 6.725 5.7 6.25 6.4 7.05 5.9 ] -~~~ -{: .output} - -which is the average inflammation per patient across all days. - - -> ## Slicing Strings -> -> A section of an array is called a [slice]({{ page.root }}/reference.html#slice). -> We can take slices of character strings as well: -> -> ~~~ -> element = 'oxygen' -> print('first three characters:', element[0:3]) -> print('last three characters:', element[3:6]) -> ~~~ -> {: .language-python} -> -> ~~~ -> first three characters: oxy -> last three characters: gen -> ~~~ -> {: .output} -> -> What is the value of `element[:4]`? -> What about `element[4:]`? -> Or `element[:]`? -> -> > ## Solution -> > ~~~ -> > oxyg -> > en -> > oxygen -> > ~~~ -> > {: .output} -> {: .solution} -> -> What is `element[-1]`? -> What is `element[-2]`? -> -> > ## Solution -> > ~~~ -> > n -> > e -> > ~~~ -> > {: .output} -> {: .solution} -> -> Given those answers, -> explain what `element[1:-1]` does. -> -> > ## Solution -> > Creates a substring from index 1 up to (not including) the final index, -> > effectively removing the first and last letters from 'oxygen' -> {: .solution} -> -> How can we rewrite the slice for getting the last three characters of `element`, -> so that it works even if we assign a different string to `element`? -> Test your solution with the following strings: `carpentry`, `clone`, `hi`. -> -> > ## Solution -> > ~~~ -> > element = 'oxygen' -> > print('last three characters:', element[-3:]) -> > element = 'carpentry' -> > print('last three characters:', element[-3:]) -> > element = 'clone' -> > print('last three characters:', element[-3:]) -> > element = 'hi' -> > print('last three characters:', element[-3:]) -> > ~~~ -> > {: .language-python} -> > ~~~ -> > last three characters: gen -> > last three characters: try -> > last three characters: one -> > last three characters: hi -> > ~~~ -> > {: .output} -> {: .solution} -{: .challenge} - -> ## Thin Slices -> -> The expression `element[3:3]` produces an -> [empty string]({{ page.root }}/reference.html#empty-string), -> i.e., a string that contains no characters. -> If `data` holds our array of patient data, -> what does `data[3:3, 4:4]` produce? -> What about `data[3:3, :]`? -> -> > ## Solution -> > ~~~ -> > array([], shape=(0, 0), dtype=float64) -> > array([], shape=(0, 40), dtype=float64) -> > ~~~ -> > {: .output} -> {: .solution} -{: .challenge} - -> ## Stacking Arrays -> -> Arrays can be concatenated and stacked on top of one another, -> using NumPy's `vstack` and `hstack` functions for vertical and horizontal stacking, respectively. -> -> ~~~ -> import numpy -> -> A = numpy.array([[1,2,3], [4,5,6], [7, 8, 9]]) -> print('A = ') -> print(A) -> -> B = numpy.hstack([A, A]) -> print('B = ') -> print(B) -> -> C = numpy.vstack([A, A]) -> print('C = ') -> print(C) -> ~~~ -> {: .language-python} -> -> ~~~ -> A = -> [[1 2 3] -> [4 5 6] -> [7 8 9]] -> B = -> [[1 2 3 1 2 3] -> [4 5 6 4 5 6] -> [7 8 9 7 8 9]] -> C = -> [[1 2 3] -> [4 5 6] -> [7 8 9] -> [1 2 3] -> [4 5 6] -> [7 8 9]] -> ~~~ -> {: .output} -> -> Write some additional code that slices the first and last columns of `A`, -> and stacks them into a 3x2 array. -> Make sure to `print` the results to verify your solution. -> -> > ## Solution -> > -> > A 'gotcha' with array indexing is that singleton dimensions -> > are dropped by default. That means `A[:, 0]` is a one dimensional -> > array, which won't stack as desired. To preserve singleton dimensions, -> > the index itself can be a slice or array. For example, `A[:, :1]` returns -> > a two dimensional array with one singleton dimension (i.e. a column -> > vector). -> > -> > ~~~ -> > D = numpy.hstack((A[:, :1], A[:, -1:])) -> > print('D = ') -> > print(D) -> > ~~~ -> > {: .language-python} -> > -> > ~~~ -> > D = -> > [[1 3] -> > [4 6] -> > [7 9]] -> > ~~~ -> > {: .output} -> {: .solution} -> -> > ## Solution -> > -> > An alternative way to achieve the same result is to use Numpy's -> > delete function to remove the second column of A. -> > -> > ~~~ -> > D = numpy.delete(A, 1, 1) -> > print('D = ') -> > print(D) -> > ~~~ -> > {: .language-python} -> > -> > ~~~ -> > D = -> > [[1 3] -> > [4 6] -> > [7 9]] -> > ~~~ -> > {: .output} -> {: .solution} -{: .challenge} - -> ## Change In Inflammation -> -> The patient data is _longitudinal_ in the sense that each row represents a -> series of observations relating to one individual. This means that -> the change in inflammation over time is a meaningful concept. -> Let's find out how to calculate changes in the data contained in an array -> with NumPy. -> -> The `numpy.diff()` function takes an array and returns the differences -> between two successive values. Let's use it to examine the changes -> each day across the first week of patient 3 from our inflammation dataset. -> -> ~~~ -> patient3_week1 = data[3, :7] -> print(patient3_week1) -> ~~~ -> {: .language-python} -> -> ~~~ -> [0. 0. 2. 0. 4. 2. 2.] -> ~~~ -> {: .output} -> -> Calling `numpy.diff(patient3_week1)` would do the following calculations -> -> ~~~ -> [ 0 - 0, 2 - 0, 0 - 2, 4 - 0, 2 - 4, 2 - 2 ] -> ~~~ -> {: .language-python} -> -> and return the 6 difference values in a new array. -> -> ~~~ -> numpy.diff(patient3_week1) -> ~~~ -> {: .language-python} -> -> ~~~ -> array([ 0., 2., -2., 4., -2., 0.]) -> ~~~ -> {: .output} -> -> Note that the array of differences is shorter by one element (length 6). -> -> When calling `numpy.diff` with a multi-dimensional array, an `axis` argument may -> be passed to the function to specify which axis to process. When applying -> `numpy.diff` to our 2D inflammation array `data`, which axis would we specify? -> -> > ## Solution -> > Since the row axis (0) is patients, it does not make sense to get the -> > difference between two arbitrary patients. The column axis (1) is in -> > days, so the difference is the change in inflammation -- a meaningful -> > concept. -> > -> > ~~~ -> > numpy.diff(data, axis=1) -> > ~~~ -> > {: .language-python} -> {: .solution} -> -> If the shape of an individual data file is `(60, 40)` (60 rows and 40 -> columns), what would the shape of the array be after you run the `diff()` -> function and why? -> -> > ## Solution -> > The shape will be `(60, 39)` because there is one fewer difference between -> > columns than there are columns in the data. -> {: .solution} -> -> How would you find the largest change in inflammation for each patient? Does -> it matter if the change in inflammation is an increase or a decrease? -> -> > ## Solution -> > By using the `numpy.max()` function after you apply the `numpy.diff()` -> > function, you will get the largest difference between days. -> > -> > ~~~ -> > numpy.max(numpy.diff(data, axis=1), axis=1) -> > ~~~ -> > {: .language-python} -> > -> > ~~~ -> > array([ 7., 12., 11., 10., 11., 13., 10., 8., 10., 10., 7., -> > 7., 13., 7., 10., 10., 8., 10., 9., 10., 13., 7., -> > 12., 9., 12., 11., 10., 10., 7., 10., 11., 10., 8., -> > 11., 12., 10., 9., 10., 13., 10., 7., 7., 10., 13., -> > 12., 8., 8., 10., 10., 9., 8., 13., 10., 7., 10., -> > 8., 12., 10., 7., 12.]) -> > ~~~ -> > {: .language-python} -> > -> > If inflammation values *decrease* along an axis, then the difference from -> > one element to the next will be negative. If -> > you are interested in the **magnitude** of the change and not the -> > direction, the `numpy.absolute()` function will provide that. -> > -> > Notice the difference if you get the largest _absolute_ difference -> > between readings. -> > -> > ~~~ -> > numpy.max(numpy.absolute(numpy.diff(data, axis=1)), axis=1) -> > ~~~ -> > {: .language-python} -> > -> > ~~~ -> > array([ 12., 14., 11., 13., 11., 13., 10., 12., 10., 10., 10., -> > 12., 13., 10., 11., 10., 12., 13., 9., 10., 13., 9., -> > 12., 9., 12., 11., 10., 13., 9., 13., 11., 11., 8., -> > 11., 12., 13., 9., 10., 13., 11., 11., 13., 11., 13., -> > 13., 10., 9., 10., 10., 9., 9., 13., 10., 9., 10., -> > 11., 13., 10., 10., 12.]) -> > ~~~ -> > {: .language-python} -> > -> {: .solution} -{: .challenge} - -{% include links.md %} diff --git a/_episodes/03-matplotlib.md b/_episodes/03-matplotlib.md deleted file mode 100644 index 55c56c1..0000000 --- a/_episodes/03-matplotlib.md +++ /dev/null @@ -1,288 +0,0 @@ ---- -title: Visualizing Tabular Data -teaching: 35 -exercises: 20 -questions: -- "How can I visualize tabular data in Python?" -- "How can I group several plots together?" -objectives: -- "Plot simple graphs from data." -- "Plot multiple graphs in a single figure." -keypoints: -- "Use the `pyplot` module from the `matplotlib` library for creating simple visualizations." ---- - -## Visualizing data -The mathematician Richard Hamming once said, "The purpose of computing is insight, not numbers," and -the best way to develop insight is often to visualize data. Visualization deserves an entire -lecture of its own, but we can explore a few features of Python's `matplotlib` library here. While -there is no official plotting library, `matplotlib` is the _de facto_ standard. First, we will -import the `pyplot` module from `matplotlib` and use two of its functions to create and display a -[heat map]({{ page.root }}/reference.html#heat-map) of our data: - -~~~ -import matplotlib.pyplot -image = matplotlib.pyplot.imshow(data) -matplotlib.pyplot.show() -~~~ -{: .language-python} - -![Heat map representing the `data` variable. Each cell is colored by value along a color gradient -from blue to yellow.](../fig/inflammation-01-imshow.svg) - -Blue pixels in this heat map represent low values, while yellow pixels represent high values. As we -can see, inflammation rises and falls over a 40-day period. Let's take a look at the average -inflammation over time: - -~~~ -ave_inflammation = numpy.mean(data, axis=0) -ave_plot = matplotlib.pyplot.plot(ave_inflammation) -matplotlib.pyplot.show() -~~~ -{: .language-python} - -![A line graph showing the average inflammation across all patients over a 40-day period.](../fig/inflammation-01-average.svg) - -Here, we have put the average inflammation per day across all patients in the variable -`ave_inflammation`, then asked `matplotlib.pyplot` to create and display a line graph of those -values. The result is a roughly linear rise and fall, which is suspicious: we might instead expect -a sharper rise and slower fall. Let's have a look at two other statistics: - -~~~ -max_plot = matplotlib.pyplot.plot(numpy.max(data, axis=0)) -matplotlib.pyplot.show() -~~~ -{: .language-python} - -![A line graph showing the maximum inflammation across all patients over a 40-day period.](../fig/inflammation-01-maximum.svg) - -~~~ -min_plot = matplotlib.pyplot.plot(numpy.min(data, axis=0)) -matplotlib.pyplot.show() -~~~ -{: .language-python} - -![A line graph showing the minimum inflammation across all patients over a 40-day period.](../fig/inflammation-01-minimum.svg) - -The maximum value rises and falls smoothly, while the minimum seems to be a step function. Neither -trend seems particularly likely, so either there's a mistake in our calculations or something is -wrong with our data. This insight would have been difficult to reach by examining the numbers -themselves without visualization tools. - -### Grouping plots -You can group similar plots in a single figure using subplots. -This script below uses a number of new commands. The function `matplotlib.pyplot.figure()` -creates a space into which we will place all of our plots. The parameter `figsize` -tells Python how big to make this space. Each subplot is placed into the figure using -its `add_subplot` [method]({{ page.root }}/reference.html#method). The `add_subplot` method takes 3 -parameters. The first denotes how many total rows of subplots there are, the second parameter -refers to the total number of subplot columns, and the final parameter denotes which subplot -your variable is referencing (left-to-right, top-to-bottom). Each subplot is stored in a -different variable (`axes1`, `axes2`, `axes3`). Once a subplot is created, the axes can -be titled using the `set_xlabel()` command (or `set_ylabel()`). -Here are our three plots side by side: - -~~~ -import numpy -import matplotlib.pyplot - -data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',') - -fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0)) - -axes1 = fig.add_subplot(1, 3, 1) -axes2 = fig.add_subplot(1, 3, 2) -axes3 = fig.add_subplot(1, 3, 3) - -axes1.set_ylabel('average') -axes1.plot(numpy.mean(data, axis=0)) - -axes2.set_ylabel('max') -axes2.plot(numpy.max(data, axis=0)) - -axes3.set_ylabel('min') -axes3.plot(numpy.min(data, axis=0)) - -fig.tight_layout() - -matplotlib.pyplot.savefig('inflammation.png') -matplotlib.pyplot.show() -~~~ -{: .language-python} - -![Three line graphs showing the daily average, maximum and minimum inflammation over a 40-day period.](../fig/inflammation-01-group-plot.svg) - -The [call]({{ page.root }}/reference.html#function-call) to `loadtxt` reads our data, -and the rest of the program tells the plotting library -how large we want the figure to be, -that we're creating three subplots, -what to draw for each one, -and that we want a tight layout. -(If we leave out that call to `fig.tight_layout()`, -the graphs will actually be squeezed together more closely.) - -The call to `savefig` stores the plot as a graphics file. This can be -a convenient way to store your plots for use in other documents, web -pages etc. The graphics format is automatically determined by -Matplotlib from the file name ending we specify; here PNG from -'inflammation.png'. Matplotlib supports many different graphics -formats, including SVG, PDF, and JPEG. - -> ## Importing libraries with shortcuts -> -> In this lesson we use the `import matplotlib.pyplot` -> [syntax]({{ page.root }}/reference.html#syntax) -> to import the `pyplot` module of `matplotlib`. However, shortcuts such as -> `import matplotlib.pyplot as plt` are frequently used. -> Importing `pyplot` this way means that after the initial import, rather than writing -> `matplotlib.pyplot.plot(...)`, you can now write `plt.plot(...)`. -> Another common convention is to use the shortcut `import numpy as np` when importing the -> NumPy library. We then can write `np.loadtxt(...)` instead of `numpy.loadtxt(...)`, -> for example. -> -> Some people prefer these shortcuts as it is quicker to type and results in shorter -> lines of code - especially for libraries with long names! You will frequently see -> Python code online using a `pyplot` function with `plt`, or a NumPy function with -> `np`, and it's because they've used this shortcut. It makes no difference which -> approach you choose to take, but you must be consistent as if you use -> `import matplotlib.pyplot as plt` then `matplotlib.pyplot.plot(...)` will not work, and -> you must use `plt.plot(...)` instead. Because of this, when working with other people it -> is important you agree on how libraries are imported. -{: .callout} - -> ## Plot Scaling -> -> Why do all of our plots stop just short of the upper end of our graph? -> -> > ## Solution -> > Because matplotlib normally sets x and y axes limits to the min and max of our data -> > (depending on data range) -> {: .solution} -> -> If we want to change this, we can use the `set_ylim(min, max)` method of each 'axes', -> for example: -> -> ~~~ -> axes3.set_ylim(0,6) -> ~~~ -> {: .language-python} -> -> Update your plotting code to automatically set a more appropriate scale. -> (Hint: you can make use of the `max` and `min` methods to help.) -> -> > ## Solution -> > ~~~ -> > # One method -> > axes3.set_ylabel('min') -> > axes3.plot(numpy.min(data, axis=0)) -> > axes3.set_ylim(0,6) -> > ~~~ -> > {: .language-python} -> {: .solution} -> -> > ## Solution -> > ~~~ -> > # A more automated approach -> > min_data = numpy.min(data, axis=0) -> > axes3.set_ylabel('min') -> > axes3.plot(min_data) -> > axes3.set_ylim(numpy.min(min_data), numpy.max(min_data) * 1.1) -> > ~~~ -> > {: .language-python} -> {: .solution} -{: .challenge} - -> ## Drawing Straight Lines -> -> In the center and right subplots above, we expect all lines to look like step functions because -> non-integer value are not realistic for the minimum and maximum values. However, you can see -> that the lines are not always vertical or horizontal, and in particular the step function -> in the subplot on the right looks slanted. Why is this? -> -> > ## Solution -> > Because matplotlib interpolates (draws a straight line) between the points. -> > One way to do avoid this is to use the Matplotlib `drawstyle` option: -> > -> > ~~~ -> > import numpy -> > import matplotlib.pyplot -> > -> > data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',') -> > -> > fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0)) -> > -> > axes1 = fig.add_subplot(1, 3, 1) -> > axes2 = fig.add_subplot(1, 3, 2) -> > axes3 = fig.add_subplot(1, 3, 3) -> > -> > axes1.set_ylabel('average') -> > axes1.plot(numpy.mean(data, axis=0), drawstyle='steps-mid') -> > -> > axes2.set_ylabel('max') -> > axes2.plot(numpy.max(data, axis=0), drawstyle='steps-mid') -> > -> > axes3.set_ylabel('min') -> > axes3.plot(numpy.min(data, axis=0), drawstyle='steps-mid') -> > -> > fig.tight_layout() -> > -> > matplotlib.pyplot.show() -> > ~~~ -> > {: .language-python} -> ![Three line graphs, with step lines connecting the points, showing the daily average, maximum - and minimum inflammation over a 40-day period.](../fig/inflammation-01-line-styles.svg) -> {: .solution} -{: .challenge} - -> ## Make Your Own Plot -> -> Create a plot showing the standard deviation (`numpy.std`) -> of the inflammation data for each day across all patients. -> -> > ## Solution -> > ~~~ -> > std_plot = matplotlib.pyplot.plot(numpy.std(data, axis=0)) -> > matplotlib.pyplot.show() -> > ~~~ -> > {: .language-python} -> {: .solution} -{: .challenge} - -> ## Moving Plots Around -> -> Modify the program to display the three plots on top of one another -> instead of side by side. -> -> > ## Solution -> > ~~~ -> > import numpy -> > import matplotlib.pyplot -> > -> > data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',') -> > -> > # change figsize (swap width and height) -> > fig = matplotlib.pyplot.figure(figsize=(3.0, 10.0)) -> > -> > # change add_subplot (swap first two parameters) -> > axes1 = fig.add_subplot(3, 1, 1) -> > axes2 = fig.add_subplot(3, 1, 2) -> > axes3 = fig.add_subplot(3, 1, 3) -> > -> > axes1.set_ylabel('average') -> > axes1.plot(numpy.mean(data, axis=0)) -> > -> > axes2.set_ylabel('max') -> > axes2.plot(numpy.max(data, axis=0)) -> > -> > axes3.set_ylabel('min') -> > axes3.plot(numpy.min(data, axis=0)) -> > -> > fig.tight_layout() -> > -> > matplotlib.pyplot.show() -> > ~~~ -> > {: .language-python} -> {: .solution} -{: .challenge} - -{% include links.md %} diff --git a/_episodes/04-lists.md b/_episodes/04-lists.md deleted file mode 100644 index 6df7fbe..0000000 --- a/_episodes/04-lists.md +++ /dev/null @@ -1,531 +0,0 @@ ---- -title: Storing Multiple Values in Lists -teaching: 35 -exercises: 15 -questions: -- "How can I store many values together?" -objectives: -- "Explain what a list is." -- "Create and index lists of simple values." -- "Change the values of individual elements" -- "Append values to an existing list" -- "Reorder and slice list elements" -- "Create and manipulate nested lists" -keypoints: -- "`[value1, value2, value3, ...]` creates a list." -- "Lists can contain any Python object, including lists (i.e., list of lists)." -- "Lists are indexed and sliced with square brackets (e.g., list[0] and -list[2:9]), in the same way as strings and arrays." -- "Lists are mutable (i.e., their values can be changed in place)." -- "Strings are immutable (i.e., the characters in them cannot be changed)." ---- - -In the previous episode, we analyzed a single file with inflammation data. Our goal, however, is to -process all the inflammation data we have, which means that we still have eleven more files to go! - -The natural first step is to collect the names of all the files that we have to process. In Python, -a list is a way to store multiple values together. In this episode, we will learn how to store -multiple values in a list as well as how to work with lists. - -## Python lists - -Unlike NumPy arrays, lists are built into the language so we do not have to load a library -to use them. -We create a list by putting values inside square brackets and separating the values with commas: - -~~~ -odds = [1, 3, 5, 7] -print('odds are:', odds) -~~~ -{: .language-python} - -~~~ -odds are: [1, 3, 5, 7] -~~~ -{: .output} - -We can access elements of a list using indices -- numbered positions of elements in the list. -These positions are numbered starting at 0, so the first element has an index of 0. - -~~~ -print('first element:', odds[0]) -print('last element:', odds[3]) -print('"-1" element:', odds[-1]) -~~~ -{: .language-python} - -~~~ -first element: 1 -last element: 7 -"-1" element: 7 -~~~ -{: .output} - -Yes, we can use negative numbers as indices in Python. When we do so, the index `-1` gives us the -last element in the list, `-2` the second to last, and so on. -Because of this, `odds[3]` and `odds[-1]` point to the same element here. - -There is one important difference between lists and strings: -we can change the values in a list, -but we cannot change individual characters in a string. -For example: - -~~~ -names = ['Curie', 'Darwing', 'Turing'] # typo in Darwin's name -print('names is originally:', names) -names[1] = 'Darwin' # correct the name -print('final value of names:', names) -~~~ -{: .language-python} - -~~~ -names is originally: ['Curie', 'Darwing', 'Turing'] -final value of names: ['Curie', 'Darwin', 'Turing'] -~~~ -{: .output} - -works, but: - -~~~ -name = 'Darwin' -name[0] = 'd' -~~~ -{: .language-python} - -~~~ ---------------------------------------------------------------------------- -TypeError Traceback (most recent call last) - in () - 1 name = 'Darwin' -----> 2 name[0] = 'd' - -TypeError: 'str' object does not support item assignment -~~~ -{: .error} - -does not. - -> ## Ch-Ch-Ch-Ch-Changes -> -> Data which can be modified in place is called [mutable]({{ page.root }}/reference.html#mutable), -> while data which cannot be modified is called -> [immutable]({{ page.root }}/reference.html#immutable). -> Strings and numbers are immutable. This does not mean that variables with string or number values -> are constants, but when we want to change the value of a string or number variable, we can only -> replace the old value with a completely new value. -> -> Lists and arrays, on the other hand, are mutable: we can modify them after they have been -> created. We can change individual elements, append new elements, or reorder the whole list. For -> some operations, like sorting, we can choose whether to use a function that modifies the data -> in-place or a function that returns a modified copy and leaves the original unchanged. -> -> Be careful when modifying data in-place. If two variables refer to the same list, and you modify -> the list value, it will change for both variables! -> -> ~~~ -> salsa = ['peppers', 'onions', 'cilantro', 'tomatoes'] -> my_salsa = salsa # <-- my_salsa and salsa point to the *same* list data in memory -> salsa[0] = 'hot peppers' -> print('Ingredients in my salsa:', my_salsa) -> ~~~ -> {: .language-python} -> -> ~~~ -> Ingredients in my salsa: ['hot peppers', 'onions', 'cilantro', 'tomatoes'] -> ~~~ -> {: .output} -> -> If you want variables with mutable values to be independent, you -> must make a copy of the value when you assign it. -> -> ~~~ -> salsa = ['peppers', 'onions', 'cilantro', 'tomatoes'] -> my_salsa = list(salsa) # <-- makes a *copy* of the list -> salsa[0] = 'hot peppers' -> print('Ingredients in my salsa:', my_salsa) -> ~~~ -> {: .language-python} -> -> ~~~ -> Ingredients in my salsa: ['peppers', 'onions', 'cilantro', 'tomatoes'] -> ~~~ -> {: .output} -> -> Because of pitfalls like this, code which modifies data in place can be more difficult to -> understand. However, it is often far more efficient to modify a large data structure in place -> than to create a modified copy for every small change. You should consider both of these aspects -> when writing your code. -{: .callout} - -> ## Nested Lists -> Since a list can contain any Python variables, it can even contain other lists. -> -> For example, we could represent the products in the shelves of a small grocery shop: -> -> ~~~ -> x = [['pepper', 'zucchini', 'onion'], -> ['cabbage', 'lettuce', 'garlic'], -> ['apple', 'pear', 'banana']] -> ~~~ -> {: .language-python} -> -> Here is a visual example of how indexing a list of lists `x` works: -> -> [![x is represented as a pepper shaker containing several packets of pepper. [x[0]] is represented -> as a pepper shaker containing a single packet of pepper. x[0] is represented as a single packet of -> pepper. x[0][0] is represented as single grain of pepper. Adapted -> from @hadleywickham.](../fig/indexing_lists_python.png)][hadleywickham-tweet] -> -> Using the previously declared list `x`, these would be the results of the -> index operations shown in the image: -> -> ~~~ -> print([x[0]]) -> ~~~ -> {: .language-python} -> -> ~~~ -> [['pepper', 'zucchini', 'onion']] -> ~~~ -> {: .output} -> -> ~~~ -> print(x[0]) -> ~~~ -> {: .language-python} -> -> ~~~ -> ['pepper', 'zucchini', 'onion'] -> ~~~ -> {: .output} -> -> ~~~ -> print(x[0][0]) -> ~~~ -> {: .language-python} -> -> ~~~ -> 'pepper' -> ~~~ -> {: .output} -> -> Thanks to [Hadley Wickham][hadleywickham-tweet] -> for the image above. -{: .callout} - -> ## Heterogeneous Lists -> Lists in Python can contain elements of different types. Example: -> ~~~ -> sample_ages = [10, 12.5, 'Unknown'] -> ~~~ -> {: .language-python} -{: .callout} - -There are many ways to change the contents of lists besides assigning new values to -individual elements: - -~~~ -odds.append(11) -print('odds after adding a value:', odds) -~~~ -{: .language-python} - -~~~ -odds after adding a value: [1, 3, 5, 7, 11] -~~~ -{: .output} - -~~~ -removed_element = odds.pop(0) -print('odds after removing the first element:', odds) -print('removed_element:', removed_element) -~~~ -{: .language-python} - -~~~ -odds after removing the first element: [3, 5, 7, 11] -removed_element: 1 -~~~ -{: .output} - -~~~ -odds.reverse() -print('odds after reversing:', odds) -~~~ -{: .language-python} - -~~~ -odds after reversing: [11, 7, 5, 3] -~~~ -{: .output} - -While modifying in place, it is useful to remember that Python treats lists in a slightly -counter-intuitive way. - -As we saw earlier, when we modified the `salsa` list item in-place, if we make a list, (attempt to) -copy it and then modify this list, we can cause all sorts of trouble. This also applies to modifying -the list using the above functions: - -~~~ -odds = [1, 3, 5, 7] -primes = odds -primes.append(2) -print('primes:', primes) -print('odds:', odds) -~~~ -{: .language-python} - -~~~ -primes: [1, 3, 5, 7, 2] -odds: [1, 3, 5, 7, 2] -~~~ -{: .output} - -This is because Python stores a list in memory, and then can use multiple names to refer to the -same list. If all we want to do is copy a (simple) list, we can again use the `list` function, so we -do not modify a list we did not mean to: - -~~~ -odds = [1, 3, 5, 7] -primes = list(odds) -primes.append(2) -print('primes:', primes) -print('odds:', odds) -~~~ -{: .language-python} - -~~~ -primes: [1, 3, 5, 7, 2] -odds: [1, 3, 5, 7] -~~~ -{: .output} - -Subsets of lists and strings can be accessed by specifying ranges of values in brackets, -similar to how we accessed ranges of positions in a NumPy array. -This is commonly referred to as "slicing" the list/string. - -~~~ -binomial_name = 'Drosophila melanogaster' -group = binomial_name[0:10] -print('group:', group) - -species = binomial_name[11:23] -print('species:', species) - -chromosomes = ['X', 'Y', '2', '3', '4'] -autosomes = chromosomes[2:5] -print('autosomes:', autosomes) - -last = chromosomes[-1] -print('last:', last) -~~~ -{: .language-python} - -~~~ -group: Drosophila -species: melanogaster -autosomes: ['2', '3', '4'] -last: 4 -~~~ -{: .output} - -> ## Slicing From the End -> -> Use slicing to access only the last four characters of a string or entries of a list. -> -> ~~~ -> string_for_slicing = 'Observation date: 02-Feb-2013' -> list_for_slicing = [['fluorine', 'F'], -> ['chlorine', 'Cl'], -> ['bromine', 'Br'], -> ['iodine', 'I'], -> ['astatine', 'At']] -> ~~~ -> {: .language-python} -> -> ~~~ -> '2013' -> [['chlorine', 'Cl'], ['bromine', 'Br'], ['iodine', 'I'], ['astatine', 'At']] -> ~~~ -> {: .output} -> -> Would your solution work regardless of whether you knew beforehand -> the length of the string or list -> (e.g. if you wanted to apply the solution to a set of lists of different lengths)? -> If not, try to change your approach to make it more robust. -> -> Hint: Remember that indices can be negative as well as positive -> -> > ## Solution -> > Use negative indices to count elements from the end of a container (such as list or string): -> > -> > ~~~ -> > string_for_slicing[-4:] -> > list_for_slicing[-4:] -> > ~~~ -> > {: .language-python} -> {: .solution} -{: .challenge} - -> ## Non-Continuous Slices -> -> So far we've seen how to use slicing to take single blocks -> of successive entries from a sequence. -> But what if we want to take a subset of entries -> that aren't next to each other in the sequence? -> -> You can achieve this by providing a third argument -> to the range within the brackets, called the _step size_. -> The example below shows how you can take every third entry in a list: -> -> ~~~ -> primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37] -> subset = primes[0:12:3] -> print('subset', subset) -> ~~~ -> {: .language-python} -> -> ~~~ -> subset [2, 7, 17, 29] -> ~~~ -> {: .output} -> -> Notice that the slice taken begins with the first entry in the range, -> followed by entries taken at equally-spaced intervals (the steps) thereafter. -> If you wanted to begin the subset with the third entry, -> you would need to specify that as the starting point of the sliced range: -> -> ~~~ -> primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37] -> subset = primes[2:12:3] -> print('subset', subset) -> ~~~ -> {: .language-python} -> -> ~~~ -> subset [5, 13, 23, 37] -> ~~~ -> {: .output} -> -> Use the step size argument to create a new string -> that contains only every other character in the string -> "In an octopus's garden in the shade". Start with -> creating a variable to hold the string: -> -> ~~~ -> beatles = "In an octopus's garden in the shade" -> ~~~ -> {: .language-python} -> -> What slice of `beatles` will produce the -> following output (i.e., the first character, third -> character, and every other character through the end -> of the string)? -> ~~~ -> I notpssgre ntesae -> ~~~ -> {: .output} -> -> > ## Solution -> > To obtain every other character you need to provide a slice with the step -> > size of 2: -> > -> > ~~~ -> > beatles[0:35:2] -> > ~~~ -> > {: .language-python} -> > -> > You can also leave out the beginning and end of the slice to take the whole string -> > and provide only the step argument to go every second -> > element: -> > -> > ~~~ -> > beatles[::2] -> > ~~~ -> > {: .language-python} -> {: .solution} -{: .challenge} - -If you want to take a slice from the beginning of a sequence, you can omit the first index in the -range: - -~~~ -date = 'Monday 4 January 2016' -day = date[0:6] -print('Using 0 to begin range:', day) -day = date[:6] -print('Omitting beginning index:', day) -~~~ -{: .language-python} - -~~~ -Using 0 to begin range: Monday -Omitting beginning index: Monday -~~~ -{: .output} - -And similarly, you can omit the ending index in the range to take a slice to the very end of the -sequence: - -~~~ -months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'] -sond = months[8:12] -print('With known last position:', sond) -sond = months[8:len(months)] -print('Using len() to get last entry:', sond) -sond = months[8:] -print('Omitting ending index:', sond) -~~~ -{: .language-python} - -~~~ -With known last position: ['sep', 'oct', 'nov', 'dec'] -Using len() to get last entry: ['sep', 'oct', 'nov', 'dec'] -Omitting ending index: ['sep', 'oct', 'nov', 'dec'] -~~~ -{: .output} - -> ## Overloading -> -> `+` usually means addition, but when used on strings or lists, it means "concatenate". -> Given that, what do you think the multiplication operator `*` does on lists? -> In particular, what will be the output of the following code? -> -> ~~~ -> counts = [2, 4, 6, 8, 10] -> repeats = counts * 2 -> print(repeats) -> ~~~ -> {: .language-python} -> -> 1. `[2, 4, 6, 8, 10, 2, 4, 6, 8, 10]` -> 2. `[4, 8, 12, 16, 20]` -> 3. `[[2, 4, 6, 8, 10],[2, 4, 6, 8, 10]]` -> 4. `[2, 4, 6, 8, 10, 4, 8, 12, 16, 20]` -> -> The technical term for this is *operator overloading*: -> a single operator, like `+` or `*`, -> can do different things depending on what it's applied to. -> -> > ## Solution -> > -> > The multiplication operator `*` used on a list replicates elements of the list and concatenates -> > them together: -> > -> > ~~~ -> > [2, 4, 6, 8, 10, 2, 4, 6, 8, 10] -> > ~~~ -> > {: .output} -> > -> > It's equivalent to: -> > -> > ~~~ -> > counts + counts -> > ~~~ -> > {: .language-python} -> {: .solution} -{: .challenge} - -[hadleywickham-tweet]: https://twitter.com/hadleywickham/status/643381054758363136 - -{% include links.md %} diff --git a/_episodes/05-code-migration-01.md b/_episodes/05-code-migration-01.md deleted file mode 100644 index 974127f..0000000 --- a/_episodes/05-code-migration-01.md +++ /dev/null @@ -1,532 +0,0 @@ ---- -title: Code migration to HPC systems -teaching: 40 -exercises: 0 -questions: -- "I would like to try Hawk, can I keep working with Jupyter Notebooks? - (yes, but ...)" -- "How to access Jupyter Notebooks on Hawk?" -- "How to transition from interactive Jupyter Notebooks to automated Python scripts?" -objectives: -- "Learn how to set up your work environment (transfer files, install libraries)." -- "Understand the differences and trade-offs between Jupyter Notebooks and - Python scripts." -keypoints: -- "It is possible to use Jupyter Notebooks on Hawk via OnDemand and ssh tunnels." -- "The recommended method to setup your work environment (installing libraries) - is using Anaconda virtual environments." -- "Include the library ipykernel to make the environment reachable from Jupyter - Notebooks" -- "Use Jupyter Notebooks in the early (development) stages of your project when - lots of debugging are necessary. Move towards automated Python scripts in later - stages and submit them via SLURM job scripts." - ---- - -## Running Jupyter Notebooks on a remote HPC systems - -Although the most traditional way to interact with remote HPC and cloud systems -is through the command line (via the `ssh` and `scp` commands) some systems also -offer graphical user interfaces for some services. Specifically, on Hawk you can -deploy -Jupyter Notebooks via [OnDemand](https://openondemand.org/) (a web portal that -allow you to work with HPC systems interactively). The notes below provide -instructions for both methods of access: through OnDemand and through a `ssh` -*tunnel*. - -{::options parse_block_html="true" /} -
- - -
-
- - To access a Jupyter Notebook server via an `ssh` tunnel you need first to - login to Hawk: - - ``` - $ ssh hawk-username@hawklogin.cf.ac.uk - ``` - - Once logged in, confirm that Python 3 is accessible: - - ``` - $ module load compiler/gnu/9 - $ module load python/3.7.0 - $ python3 --version - ``` - ~~~ - Python 3.7.0 - ~~~ - {: .output} - - We need to install Jupyter Notebooks on our user account on the remote server - (we will discuss more about installing Python packages later on): - - ``` - $ python3 -m venv create my_venv - $ . my_venv/bin/activate - $ python3 -m pip install jupyterlab - ``` - - The installation process will try to download several dependencies from the - internet. Be patient, it shouldn't take more than a couple of minutes. - - Now, this is important, the Jupyter Notebook server must be run on a *compute - node*, please take a look at our best practices guidelines in the - [SCW portal](https://portal.supercomputing.wales/index.php/best-practice/). - If the concept of login and compute nodes is still not clear at this point - don't worry too much (but you can find out more in out - [Supercomputing for Beginners training course](https://arcca.github.io/hpc-intro/). - For now, run the following command to instruct the Hawk job scheduler to run - a Jupyter Notebook server on a compute node: - - ``` - $ srun -n 1 -p htc --account=scwXXXX -t 1:00:00 jupyter-lab --ip=0.0.0.0 - ``` - - ~~~ - http://ccs1015:8888/?token=77777add13ab93a0c408c287a630249c2dba93efdd3fae06 - or http://127.0.0.1:8888/?token=77777add13ab93a0c408c287a630249c2dba93efdd3fae06 - ~~~ - {: .output} - - Next, open a new terminal and create a ssh tunnel using the node and port - obtained in the previous step (e.g. ccs1015:8888): - - ``` - $ ssh -L8888:ccs1015:8888 hawk-username@hawklogin.cf.ac.uk - ``` - - You should be able to navigate to http://localhost:8888 in your web browser - (use the token provided in the output if needed). If everything went well, you - should see something like: - - Jupyter Lab Home - - Where you should be able to access the files stored your Hawk user account. - - -
- -
- 1. Go to [ARCCA OnDemand](https://arcondemand.cardiff.ac.uk) portal (this - requires access to [Cardiff University VPN](https://intranet.cardiff.ac.uk/staff/supporting-your-work/it-support/wireless-and-remote-access/off-campus-access/virtual-private-network-vpn) ). - 2. Enter your details: Hawk username and password. Once logged in you should - land on a page with useful information including the usual Message of the - Day (MOD) commonly seen when logging in to Hawk via the terminal. - - | | | - |:--------:|:--------:| - | ARCCA OnDemand login page | ARCCA landing page | - | | | - - 3. Go to "Interactive Apps" in the top menu and select "Jupyter Notebook/Lab". - This will bring you to a form where you can specify for how much time the - desktop is required, number of CPUs, partition, etc. You can also choose - to receive an email once the desktop is ready for you. Click the *Launch* - button to submit the request. - - | | | - |:--------:|:--------:| - | ARCCA OnDemand login page | OnDemand JN requirements | - | | | - - 4. After submission you request will be placed on the queue and will wait - for resources, hopefully for a short period, but this *depends on the - number of cores as well as time requested*, so please be patient. At this - point you can close the OnDemand website and come back at a later point - to check progress or wait for the email notification if the option was - selected. - - Once your request is granted you should be able to see a *Running* message, - the amount of resources granted and the time remaining. - - Click *Connect to Jupyter* to launch the Jupyter in a new web browser tab. - - | | | - |:--------:|:--------:| - | OnDemand JN queued | OnDemand JN running | - | | | - - 5. You should now have the familiar interface of Jupyter Notebooks in front of - you. It will show the documents and directories in your user account on - Hawk. To create a new Notebook, go to the dropdown menu *New* on the right - side and click on *Python 3 (ipykernel)*. A new tab will open with a new - notebook ready for you to start working. - - | | | - |:--------:|:--------:| - | OnDemand JN main | OnDemand JN new notebook | - | | | - -
-
-
- -{% include links.md %} - - -## Copying data - -To keep working on Hawk with the Notebooks we have written locally in our -Desktop computer we need to transfer them over. Depending on our platform we -can do this in a couple of ways: - -{::options parse_block_html="true" /} -
- - -
-
- On Windows you can use [MobaXterm](https://mobaxterm.mobatek.net/) to - transfer files to Hawk from your local computer. - - | | | - |:----------------:|:----------------:| - |
Open SCP session on MobaXterm

Click on **Session** to open the different connection methods available in MobaXterm | Enter details to start SPC session on MobaXterm
Select **SFTP** and enter the Remote Host (*hawklogin.cf.ac.uk*) and your **Hawk username** | - | | | - |
Open SCP session on MobaXterm

Locate the directory in your local computer and drag and drop to the remote server on the right pane. || - -
- -
- MacOS and Linux provide the command scp -r that can be used to recursively - copy your work directory over to your home directory in Hawk: - - ``` - $ scp -r arcca-python hawk-username@hawklogin.cf.ac.uk:/home/hawk-username - python-novice-inflammation-code.zip 100% 7216 193.0KB/s 00:00 - Untitled.ipynb 100% 67KB 880.2KB/s 00:00 - inflammation.png 100% 13KB 315.6KB/s 00:00 - argv_list.py 100% 42 0.4KB/s 00:00 - readings_08.py 100% 1097 10.6KB/s 00:00 - readings_09.py 100% 851 24.8KB/s 00:00 - ``` - -
- -
- With OnDemand you can also download and upload files to Hawk. In this - example we will upload the directory with the Jupyter Notebooks we have - created so far. Go to `Files` and select the directory where you wish to - upload the files (our home directory in this case), then select `Upload` - and locate the directory in your local computer. Once uploaded, the files - should be available on Hawk: - - | | | - |:----------------:|:----------------:| - | Go to Files and select directory where to upload. | Click Upload | - | Locate files in your local computer. | Locate files in your local computer. | - -
- -
-
- -## Setup your Jupyter Notebook work environment - -Depending on how you started your Jupyter Notebook you should have access to -some default packages. But these are not guaranteed to be the same (this also -applies for the version of Python) between the OnDemand and the `ssh` tunnel -methods. Moreover, it is unlikely that the remote HPC system would provide -every package you need by default. - -### Installing Python libraries - -The **recommended approach** is to create a conda virtual environment with a -`environemnt.yml` file which includes a list of all packages (and versions) -needed for your work. This file can be created and used in your local computer -and then copied to Hawk to reproduce the same environment. An example file is: - -~~~ -name: my-conda-env -dependencies: - - python=3.9.2 - - numpy - - pandas - - ipykernel -~~~ -{: .language-yaml} - -The package `ipykernel` is required here to make the environment reachable from -Jupyter Notebooks. You can find more about creating an `environment.yml` file -in the [Anaconda documentation](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#create-env-file-manually). - -On Hawk you need to first load Anaconda: - -``` -$ module load anaconda/2020.02 -$ source activate -$ which conda -``` - -~~~ -/apps/languages/anaconda/2020.02/bin/conda -~~~ -{: .output} - -And then proceed to install the virtual environment: - -``` -$ conda env create -f environment.yml -``` - -~~~ -... -libffi-3.3 | 50 KB | ##################################### | 100% -numpy-1.21.2 | 23 KB | ##################################### | 100% -pandas-1.3.4 | 9.6 MB | ##################################### | 100% -mkl-2021.4.0 | 142.6 MB | ##################################### | 100% -six-1.16.0 | 18 KB | ##################################### | 100% -Preparing transaction: done -Verifying transaction: done -Executing transaction: done -# -# To activate this environment, use -# -# $ conda activate my-conda-env -# -# To deactivate an active environment, use -# -# $ conda deactivate -~~~ -{: .output} - -We can then follow the instructions printed at the end of the installation -process to activate our environment: - -``` -$ conda activate my-conda-env -$ which python -``` - -~~~ -~/.conda/envs/my-conda-env/bin/python -~~~ -{: .output} - -We can further confirm the version of Python used by the environment: - -``` -$ python --version -``` - -~~~ -Python 3.9.2 -~~~ -{: .output} - -To deactivate the environment and return to the default Python provided by the -system (or the loaded module): - -``` -$ conda deactivate -$ python --version -``` - -~~~ -Python 3.7.6 -~~~ -{: .output} - -### Using an Anaconda virtual environment from Jupyter Notebooks - -We can access our newly installed Anaconda environment from Jupyter Notebooks -on OnDemand. For this, create a new session and when the resources are granted -click on `Connect to Jupyter`. On Jupyter Lab you might be asked to choose -which kernel to start, if so, select the name given to your virtual environment -(*my-conda-env*) in this example: - - - -If another kernel is loaded by default, you can still change it by clicking on -the top right corner of your Notebook, a similar menu should appear: - - | | | - |:----------------:|:----------------:| - | Change JN kernel manually. | Select JN kernel from menu | - -If all goes well you should be able to confirm the Python versions and path, as -well as the location of the installed libraries: - - - -At this point you should have all the packages required to continue working on -Hawk as if you were working on your local computer. - - -### A more efficient approach - -During these examples we have been requesting only 1 CPU when we launch our -Jupyter Notebook and that, hopefully, has caused our request to be fulfilled -fairly quickly. However, there will be a point where 1 CPU is no longer enough -(maybe the application has become more complex or there is more data to analyse, -and memory requirements have increased). At that point you can modify the -requirements and increase the number of CPUS, memory, time or devices (GPUs). -One point to keep in mind when increasing requirements is that this will impact -the time it takes for the system scheduler to deliver your request and allocate -you the resources, the higher the requirements, the longer it will take. - -When the time spent waiting in queue becomes excessive it is worth considering -moving away from the Jupyter Notebook workflow towards a more traditional -Python script approach (**recommended for HPC systems**). The main difference -between them is that while Jupyter Notebooks is ideal for the development -stages of a project (since you can test things out in real time and debug if -needed), the Python script approach is better suited for the production stages -where the needed for supervision and debugging is reduced. Python scripts also -have the advantage, on HPC systems, of being able to be queued for resources -and automatically executed when these are granted without you needing to be -logged in the system. - -So, how do we actually transfer our Jupyter Notebook to a Python script? -Fortunately, Jupyter Notebook developers thought of this requirement and added -a convenient export method to the Notebooks (the menus might be different -depending on if Jupyter Notebooks or Jupyter Lab was launched from OnDemand): - -| | | -|:----------------:|:----------------:| -| ![Download Notebook from JN as Py script](../fig/jupyter-notebook-download-as-python-script.png) | ![Download Notebook from JL as Py script](../fig/jupyter-lab-download-as-python-script.png) | -| Download from Jupyter Notebook | Download from Jupyter Lab | - -After choosing an appropriate name and saving the file, we should have a Python -script (a text file) with entries similar to: - -~~~ -#!/usr/bin/env python -# coding: utf-8 - -# In[1]: - - -3 + 5 * 8 - - -# In[2]: - - -weight_kg=60 - -~~~ -{: .language-python} - -Notice the `# In[X]:` that mark the position of corresponding cells in our -Jupyter Notebook and are kept for reference. We can keep them in place, they -won't cause any trouble as they are included as comments (due to the initial -`#`), but if we wanted to remove them we could do it by hand or more -efficiently by using the command line tool `sed` to find and delete lines that -start with the characters `# [` and to delete empty lines (`^` is used by `sed` -to indicate the beginning of a line and `$` to indicate the end): - -**(from this point onwards we move away from Jupyter Notebooks and start typing -commands on a terminal connected to Hawk)** - -``` -sed -e '/# In/d' -e '/^$/d' lesson1.py > lesson1_cleaned.py -``` - -This will produce the `lesson1_cleaned.py` file with entries similar to: - -~~~ -#!/usr/bin/env python -# coding: utf-8 -3+5+8 -weight_kg=60 -~~~ -{: .language-python} - -Now that we have our Python script, we need to create an additional file (job -script) to place it in the queue (submit the job). Make sure to remove any -commands from the Python script that might need additional confirmation or user -interaction as you won't be able to provide it with this method of execution. -The following is the content a job script that is equivalent to how we have -been requesting resources through OnDemand: - -~~~ -#!/bin/bash - -#SBATCH -J test # job name -#SBATCH -n 1 # number of tasks needed -#SBATCH -p htc # partition -#SBATCH --time=01:00:00 # time limit -#SBATCH -A scwXXXX # account number - -set -eu - -module purge -module load anaconda/2020.02 -module list - -# Load conda -source activate - -# Load our environment -conda activate my-conda-env - -which python -python --version - -python my-python-script.py - -~~~ -{: .language-bash} - -To submit (put it queue) the above script, on Hawk: - -``` -$ sbatch my-job-script.sh -``` - -~~~ -Submitted batch job 25859860 -~~~ -{: .output} - -You can query the current state of this job with: - -``` -$ squeue -u $USER -``` - -~~~ - JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) - 25860025 htc test c.xxxxxxx PD 0:00 1 ccs3004 -~~~ -{: .output} - -This particular job might not spend a long time in queue and the above output -might not show it, but on completion there should be a `slurm-.out` -created in the current directory with the output produced by our script. - -There is a lot more to know about working with HTC systems and job schedulers, -once you are ready to go this route, take a look at our documentation and -training courses on these topics: - -- [**Supercomputing for Beginners**](https://arcca.github.io/hpc-intro): Why - use HPC? Accessing systems, using SLURM, loading software, file transfer and - optimising resources. -- [**Slurm: Advanced Topics**](https://arcca.github.io/slurm_advanced_topics): - Additional material to interface with HPC more effectively. - -> ## Need help? -> -> If during the above steps you found any issues or have doubts regarding your -> specific work environment, get in touch with us at arcca-help@cardiff.ac.uk. -{: .callout} - - - -{% include links.md %} diff --git a/_episodes_rmd/.gitkeep b/_episodes_rmd/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/_episodes_rmd/data/.gitkeep b/_episodes_rmd/data/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/_extras/about.md b/_extras/about.md deleted file mode 100644 index 5f07f65..0000000 --- a/_extras/about.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: About ---- -{% include carpentries.html %} -{% include links.md %} diff --git a/_extras/discuss.md b/_extras/discuss.md deleted file mode 100644 index bfc33c5..0000000 --- a/_extras/discuss.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Discussion ---- -FIXME - -{% include links.md %} diff --git a/_extras/figures.md b/_extras/figures.md deleted file mode 100644 index 0012c88..0000000 --- a/_extras/figures.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Figures ---- - -{% include base_path.html %} -{% include manual_episode_order.html %} - - - -{% comment %} Create anchor for each one of the episodes. {% endcomment %} - -{% for lesson_episode in lesson_episodes %} - {% if site.episode_order %} - {% assign episode = site.episodes | where: "slug", lesson_episode | first %} - {% else %} - {% assign episode = lesson_episode %} - {% endif %} -
-{% endfor %} - -{% include links.md %} diff --git a/_extras/guide.md b/_extras/guide.md deleted file mode 100644 index 50f266f..0000000 --- a/_extras/guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Instructor Notes" ---- -FIXME - -{% include links.md %} diff --git a/code/.gitkeep b/code/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/code/python-novice-inflammation-code.zip b/code/python-novice-inflammation-code.zip deleted file mode 100644 index 2599dad9fdeeea0f64468fab302014ddd438a509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7268 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 V9~c$wdnF)3e0UJQsL8(n`yUJzB`*K~ diff --git a/data/.gitkeep b/data/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/data/python-novice-inflammation-data.zip b/data/python-novice-inflammation-data.zip deleted file mode 100644 index 335e8a1498d3e0b89da3c0287e0001d4fa9aa77a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22554 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 VSb-fe1_l8j+`-Dg;1dMm0RX2Q%J={P diff --git a/fig/.gitkeep b/fig/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/fig/MobaXterm-01-arrows.png b/fig/MobaXterm-01-arrows.png deleted file mode 100644 index c3004a421c86ea64af867bfbaccd76e8e038f4d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130237 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

E* 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�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 O&m$)VkgO6n3iuCc6@L!^ diff --git a/fig/anaconda-navigator-first-launch.png b/fig/anaconda-navigator-first-launch.png deleted file mode 100644 index 875fba4ba1bcbeb9fe25fa142e11e2ea155c8f3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76952 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