Top Banner
Disclaimer Though I’ve extensively programmed in Python, I have ~0 formal programming training. So some terminology I use may be total gibberish to those better taught than I. My mantra is: “If it works it works, who cares about the fancy terminology”.
17

Python your new best friend

Apr 14, 2017

Download

Technology

James Wong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Python your new best friend

Disclaimer

Though I’ve extensively programmed in Python, I have ~0 formal programming training.

So some terminology I use may be total gibberish to those better taught than I.

My mantra is: “If it works it works, who cares about the fancy

terminology”.

Page 2: Python your new best friend

Python version

• Here I will talk about functions within Python 2.6.x / 2.7.x (the JBCA system default)

• The separate development stream of Python 3.x ... Most of what I say won’t work, or will work very differently.

Page 3: Python your new best friend

Why Python?

• The current astronomers favourite...• CASA (interferometric data reduction package

is written in it).• Its free! (unlike IDL...*)

• *I’m yet to find something IDL can do that Python can’t...

Page 4: Python your new best friend

Why Python?

Page 5: Python your new best friend

• First we need to set up which version of python your linux box will default to.

• In your home area type:>emacs –nw .cshrc• This will open an in terminal text editor.• Press the down key until you see the line:

#USER MODIFICATIONS• After this type alias python2.7 ‘/usr/local/lib/python2.7/bin/python2.7’• The type ctrl-x ctrl-s. Close your terminal and open another

and we’re good to go.

BEFORE GETTING STARTED

Page 6: Python your new best friend

Getting started

• From the command line ‘python’ will get you into the python environment. Within which you can start some basic work. e.g.

>>> a=3.141*0.005>>> b=7.0**2.0>>> c=a+b>>> print c49.015705

Page 7: Python your new best friend

Scripting

• Adding those lines into a file named e.g. ‘test.py’ will then be executable by the command

>python test.py

Will result in ...49.015705

Page 8: Python your new best friend

Dynamic whitespace

• In python whitespace is important, unlike e.g. Perl. Your left hand indentation matters.

So this will work:

for x in range(len(array)):print xy=x**2.7print y

print y # will print the last #value of y

This won’t:

for x in range(len(array)): print x

y=x**2.7 print y

print y # we’ll have crashed #before we reach here

• Remember for later your ‘if’s, ‘elif’s and ‘else’s need to line up!

Page 9: Python your new best friend

Importing modules• A lot of functionality can be imported into your scripts with import commands e.g.

import numpy

• As python is object orientated you call a ‘numpy’ task as follows:

numpy.sqrt(2.0) #will give us square-root of 2

• But because we’re lazy we don’t want to type numpy over and over so we can instead use:

import numpy as np

• So the above becomesnp.sqrt(2.0) #will still give us square-root of 2

Page 10: Python your new best friend

Importing modules 2.• Some times we only want a couple of functions from a

module for this we can use a ‘from’:

from numpy import sqrt , other_function• Now:

sqrt(2.0) #will give us what we’re after

Page 11: Python your new best friend

Why isn’t there a function for this?• If the function you’re after doesn’t exist... Write your own!• In your code you can create your own functions, here is an

example:def my_function(arg1, arg2):

z=np.sqrt(arg1)*np.exp(arg2)return z

• Which can then be called later in your code simply as:something=my_function(arg1, arg2)#something will then == z

• With the same number of arguments.

Page 12: Python your new best friend

Example functions• Example functions I’ve created:

1. Calculating colour-colour plots from incomplete data lists.2. Find the peak flux in a spectrum.3. Finding Zeeman split line pairs and calculating the local magnetic

field strength in ex-OH masers.4. Calculating the rms noise in an ALMA map... Etc etc

• Functions are good because they mean you don’t have to re-type code umpteen times throughout a script.

Page 13: Python your new best friend

Useful python modules for Astronomy

• numpy – array and matrix mathematics, nice load from txt options...

• scipy – Scientific functions, e.g. correlation, signal processing, ffts...

• matplotlib – plotting... Makes beautiful plots.• pyfits – FITS file manipulation.• astropy - many useful astronomy modules and

packages all in one... • APLpy for making nice FITS images.

Page 14: Python your new best friend

Examples

resFOV.py

Page 15: Python your new best friend

Basic syntax stuff and quick plot Page 1 of 2

import numpy as npimport matplotlib.pyplot as plt

x=np.arange(1.0,10.0,1.0) #creates an array from 1 to 9

for value in x:if value ==4.0:

print “wow a 4!”elif value == 5.0:

print “and now a 5!”else:

print value

y=np.sqrt(np.exp(x)) #just for something to plot against x!

Page 16: Python your new best friend

fig1 = plt.figure(1)ax1 = fig1.add_subplot(111) #sets up a plot environment to

# plot onax1.plot(x,y,’bo-’) #plots x v. y , ‘bo-’ sets it to

#plot blue circles with a solid #line joining them

ax1.set_xlabel(‘x’)ax1.set_ylabel(‘y’) #take a guess!

plt.show() #shows our plot

Basic syntax stuff and quick plot Page 2 of 2

Page 17: Python your new best friend

Challenge

• Using the basics demonstrated in this tutorial write a script which calculates the Schwarzschild radius for black holes of mass = to each of the solar system planets.

• Extra credit, plot mass vs. radii and label each planet.