PythonBasics: Difference between revisions
Line 5: | Line 5: | ||
=== Environment === | === Environment === | ||
We could write a lot on setting up python, a nice shell, installing key packages, etc. Because this is a CASA guide, we can short circuit some of this. CASA installs with it's own nice iPython shell and a core set of third-party packages (numpy, scipy, pylab, matplotlib) installed. We will assume that you have downloaded and installed CASA from [http://casa.nrao.edu/ | We could write a lot on setting up python, a nice shell, installing key packages, etc. Because this is a CASA guide, we can short circuit some of this. CASA installs with it's own nice iPython shell and a core set of third-party packages (numpy, scipy, pylab, matplotlib) installed. We will assume that you have downloaded and installed CASA from [http://casa.nrao.edu/ here] and return to the issue of additional third-party software down the road. | ||
Once you have CASA installed you can start a new session from your shell prompt by just typing | Once you have CASA installed you can start a new session from your shell prompt by just typing | ||
Line 15: | Line 15: | ||
</source> | </source> | ||
Depending on your computing environment you likely also have some version of python and perhaps iPython installed, but the versions of these (e.g., the pre-installed version on the Mac) can vary widely. If you are interested in a non-CASA distribution that folds in a similar (in fact more extensive) suite of packages you might look at the free academic version [http://www.enthought.com | Depending on your computing environment you likely also have some version of python and perhaps iPython installed, but the versions of these (e.g., the pre-installed version on the Mac) can vary widely. If you are interested in a non-CASA distribution that folds in a similar (in fact more extensive) suite of packages you might look at the free academic version [http://www.enthought.com here (no promises)]. | ||
In the interests of version control, we focus our discussion on the version of python that comes | In the interests of version control, we focus our discussion on the version of python that comes |
Revision as of 14:28, 10 October 2011
We are porting, updating, and editing this [1]
Tips and Tricks
Environment
We could write a lot on setting up python, a nice shell, installing key packages, etc. Because this is a CASA guide, we can short circuit some of this. CASA installs with it's own nice iPython shell and a core set of third-party packages (numpy, scipy, pylab, matplotlib) installed. We will assume that you have downloaded and installed CASA from here and return to the issue of additional third-party software down the road.
Once you have CASA installed you can start a new session from your shell prompt by just typing
casapy
Depending on your computing environment you likely also have some version of python and perhaps iPython installed, but the versions of these (e.g., the pre-installed version on the Mac) can vary widely. If you are interested in a non-CASA distribution that folds in a similar (in fact more extensive) suite of packages you might look at the free academic version here (no promises).
In the interests of version control, we focus our discussion on the version of python that comes
Pasting Code
Getting Help, Exploring Objects
Things That Work Only in the Shell
Simple Variables
Basic Math
Ints and Floats
Booleans
Deleting Variables
Checking Whether a Variable Exists
Data Collections: Lists
Lists are one of the fundamental data collections in python (we will also discuss dictionaries and you may want to read about tuples and sets).
Data Collections: Dictionaries
Dictionaries are another basic python data collection. Dictionaries store data in pairs, with a set of unique keys each mapped to some value (the values do not have to be unique). Dictionaries are extremely useful in scripting. For example, imagine that we are reducing a complex set of observations and want to be able to look up a the calibrator associated with a given source.
Control Flow
If
While
For
Break/Continue
More Complex Programs
Executing Scripts
The most basic way to execute a set of python commands (aside from just copying and pasting to the shell) is to use the execfile command. Calling execfile('myscript.py') from inside a python shell will execute 'myscript.py' one line at a time. You can use this to run a series of reduction commands or other simple scripts. In fact, calling execfile on one or more scripts will almost certainly be sufficient to script most basic CASA data reductions.
A simple example
You can combine the control flow that we learned above with execfile to refine your scripts. For example, you might have a sophisticated reduction path that requires a few user inputs, which could be collected at the top of the script as variables. The reduction might have several discrete parts, which you could turn on or off using booleans and if statements. As an example, try creating a file that holds the following:
An example with a bit of control flow.
As you edit the variables and booleans, various parts of the script will run tuned by the variables you set. This simple but powerful approach can (if you desire) form the infrastructure for a lot of your CASA reduction scripting.
Functions
Python allows you to define functions either from the command line (or an execfile call) or as part of modules.