http://xkcd.com/353/ by Randall Munroe. Please don't sample anything in the cabinets.
Before you begin, make sure that you have done the following things:
skip registration
option. Jupyter Notebook
environment by making sure you can open and run files.Jupyter Notebook
(or alternately open Anaconda Navigator
and within that program, launch Jupyter Notebook
). A new tab on your internet browser should open up displaying a directory of your computer.Desktop
directoryThese Python tutorials assume that you have some background knowledge of common programming terminology (e.g. variables, strings, for loops) and at least novice coding experience in some programming language.
If you haven't done any programming previously, you will probably need some additional support in getting started. Thus, we've curated a list of resources for learning the basics of programming in Python.
Online Python Resources
Introduction to Python for Data Scientists Online course with a series of video tutorials, designed to introduce you to Python in about 4 hours.
How to Think Like a Computer Scientist / Interactive Version
This online book assumes no previous programming knowledge; working through to chapter 12 should be plenty sufficient to do anything asked of you in the course. The interactive version embeds the programming tasks in your web browser, if you'd prefer to work that way.
A Crash Course in Python for Scientists
Written by Rick Muller at Sandia National Laboratories, this tutorial has a heavy focus on using Python for physics. Heavily based on using examples.
Lectures on scientific computing with Python Basically an online textbook, written by Robert Johansson at the iTHES Research Group. Also written primarily for physicists.
Interactive Online Course from the University of Waterloo
Tools to learn & practice Python online, with a computer science emphasis. Their focus will be different from other tutorials, but the change in perspective might be useful.
Introduction to Python Programming for Number Theoretic Applications
While this introduction quickly veers into math-specific topics, the first 3 exercises serve as a good introduction to working in Jupyter notebooks.
Automate the Boring Stuff with Python
Another book that assumes no programming experience. Focuses on accomplishing tasks like sorting / filtering information or automating file organization.
Cracking Codes with Python Invent Your Own Computer Games with Python Making Games with Python & Pygame
These three books are by the previous author, for anyone who would rather work with some more tangential topics. The end result is still transferable skills, so learn whatever way works best for you.
To complete this tutorial, set up a folder on your computer where you will download the files and save all your output. As you work through each example you will do the following:
These tutorial scripts are meant to give you familiarity with all the features of Python that you will use this year in lab. If you have any trouble completing the tutorial or understanding features of the code, please ask for help and have patience.
Programing well takes practice, but we are using coding here as a tool, not as the goal in itself. If at any point in the year you find yourself struggling with the programming more than the physics, stop and ask a TA for help; we do not want Python to be a major (or even big) part of your time commitment for this class.
For some of the most common issues we've seen in this course, we've set up a Python FAQs and Common Problems page.
Files needed for Example 1:
In Example 1, we introduce ways to generate and plot data by making two different figures.
Work your way through the notebook, and ask for help if you need it!
After completing the notebook, be sure to save the final plot from Task 5. This will be the key plot you turn in for Example 1.
If you'd like a broader introduction to what Matplotlib can do, visit J.R.Johansson's tutorial: https://nbviewer.jupyter.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb
When making subplots like this, python sometimes allows axes labels, titles or other text to overlap in ugly ways. To avoid this, you can use the matplotlib function tight_layout()
which will adjust the spacing so that features don't overlap. Insert this function just before saving your file and using the function show()
.
It sometimes is necessary to also specify an extra amount of space to be added by using the pad
option – for example, tight_layout(pad = 2)
– where the amount of extra padding is in units of the font size. For example, in your code, the last few lines might read as follows:
plt.tight_layout(pad = 2) plt.savefig('wicked_awesome_plot.png') plt.show()
Files needed for Example 2:
In example 2, we import data from an external file (example2_data.tsv
) instead of generating it inside the program. We then fit that data to simple functions and plot both the data and fit on a single plot. See the page on
least-squares fitting to understand the notation used in the program.
Open the data file to see how the data is stored, then look through the script file to understand each step. We introduce many new features here; in particular, note how we do fits as this will be a big part of your python work this quarter.
After completing the whole notebook, be sure to save the final plot from Task 5.
Files needed for Example 3:
In Example 3, we again perform a fit, but this time to a decaying exponential.
In almost every experiment this year, you will have to do some version of the following exercise:
This notebook will step you through not only how to do this, but also how to format your output to look nicer.
After completing the whole notebook, be sure to save the final plot from Task 6. This will be the key plot you turn in for Example 3.
Files needed for Example 4:
In Example 4, we again import data from an external file (Example4_Data.tsv
), but this time it is more a more elaborate PHA spectrum. The new element here is that we will plot all the data, but only fit a portion of it. In addition, we will use a more elaborate fit function this time with several parameters and more complex background.
Look through the file. Notice how we treat this data and how we write the fit function for a Gaussian. In particular, note the code used to apply our fit only to a portion of the data. Run the file and understand the output.
After completing the whole notebook, be sure to save the final plot from Task 3. This will be the key plot you turn in for Example 4.
Once you complete all four exercises, please put the four final plots together into a single document, save it as a PDF, and upload it to Canvas. (Make sure your name appears in the text of the document somewhere.) We do not need to see (nor do we want to see) your raw python code.
If you'd like to do this using LaTeX, we have a barebones template here: Python Plots Template
To use this file with Overleaf, click on the New Project
button and select Upload Project
. Upload the zip file, and then use the upload file button (just below the menu in the top left) to upload your plots. Be sure to change the name to your name! Finally, navigate to each {figure}
section, find the \includegraphics
command, and change the filename in curly brackets to one of your figures.