Lecturer: Sudhanshu Barway
Jupyter Notebook Author: Kishalay De & Cameron Hummels
This is a Jupyter notebook lesson taken from the GROWTH Winter School 2018. For other lessons and their accompanying lectures, please see: http://growth.caltech.edu/growth-astro-school-2018-resources.html
Measure photometric fluxes from astronomical ultraviolet, optical, infrared image data.
See GROWTH school webpage for detailed instructions on how to install these modules and packages. Nominally, you should be able to install the python modules with
pip install <module>. The external astromatic packages are easiest installed using package managers (e.g.,
Let's start by importing a few necessary modules first.
import numpy as np import numpy.ma as ma import os import astropy.units as u from astropy.io import ascii from astropy.coordinates import SkyCoord from astropy.wcs import WCS from astropy.stats import sigma_clipped_stats, sigma_clip import subprocess
In order for this jupyter notebook to function correctly, we must have some external software installed, as described above. The following step assures that these are installed properly before getting to the rest of the content of this lesson.
dependencies = ['sextractor', 'psfex'] def test_dependency(dep): try: subprocess.Popen(dep, stderr=subprocess.PIPE).stderr.read() print("%s is installed properly. OK" % dep) return 1 except ImportError: print("===%s IS NOT YET INSTALLED PROPERLY===" % dep) return 0 i = 0 for dep in dependencies: i += test_dependency(dep) print("\n%i out of %i dependencies installed properly." % (i, len(dependencies))) if i != len(dependencies): print("Please correctly install these programs before continuing.") else: print("You are ready to continue.")
sextractor is installed properly. OK psfex is installed properly. OK 2 out of 2 dependencies installed properly. You are ready to continue.
Let's plot a reduced image from the previous module.
from astropy.io import fits import matplotlib.pyplot as plt %matplotlib inline import os # Move to the data directory for our analysis os.chdir('data') imageName = 'aC0_20181013-174714-557.wcs.fits.proc.cr.fits' f = fits.open(imageName) data = f.data #This is the image array header = f.header #Compute some image statistics for scaling the image plot mean, median, sigma = sigma_clipped_stats(data) #plot the image with some reasonable scale plt.figure(figsize=(10,10)) plt.imshow(data, vmin=median-3*sigma, vmax=median+3*sigma) plt.show()