Seminar 3

Numpy Array Types

In [1]:
import numpy as np
from matplotlib import pylab as plt

Float Arrays

In [2]:
A = np.zeros((4,5,3)).astype(float)
In [3]:
A-1
Out[3]:
array([[[-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.]],

       [[-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.]],

       [[-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.]],

       [[-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.],
        [-1., -1., -1.]]])

8bit integer arrays

In [4]:
B = np.zeros((4,5,3)).astype("uint8")
In [5]:
(B-6).astype("uint8")
Out[5]:
array([[[250, 250, 250],
        [250, 250, 250],
        [250, 250, 250],
        [250, 250, 250],
        [250, 250, 250]],

       [[250, 250, 250],
        [250, 250, 250],
        [250, 250, 250],
        [250, 250, 250],
        [250, 250, 250]],

       [[250, 250, 250],
        [250, 250, 250],
        [250, 250, 250],
        [250, 250, 250],
        [250, 250, 250]],

       [[250, 250, 250],
        [250, 250, 250],
        [250, 250, 250],
        [250, 250, 250],
        [250, 250, 250]]], dtype=uint8)

Loading JPEG images

In [6]:
path = "/data1/sbaar/PICTURES/" 
In [7]:
ls ../PICTURES/JPEG/
1.jpg*  2.jpg*
In [8]:
image1 = plt.imread(path+"JPEG/1.jpg")
In [9]:
image1.shape
Out[9]:
(1536, 2759, 3)
In [10]:
plt.figure(figsize = (12,8))
plt.imshow(image1)
plt.show()

Loading RAW Files

Raw files can have a higher color and brightness range than png and jpeg files. In this case the depth of the raw file is 16bit.

In [11]:
ls ../PICTURES/RAWS/
DSC00459.ARW*  DSC00460.JPG*  DSC00462.ARW*  DSC00463.JPG*
DSC00459.JPG*  DSC00461.ARW*  DSC00462.JPG*  DSC00464.ARW*
DSC00460.ARW*  DSC00461.JPG*  DSC00463.ARW*  DSC00464.JPG*
In [12]:
import rawpy
In [13]:
image2 = rawpy.imread(path+"RAWS/DSC00462.ARW").raw_image_visible
In [14]:
image2.shape
Out[14]:
(2848, 4256)

Further, unlike jpeg files, RAW files are in general not pre-processed by the camera. Therefore, noise reduction, whitebalancing and demosaicing have not been performed.

In [15]:
plt.figure(figsize = (12,8))
plt.imshow(image2[920:1230,2000:2420], cmap = "Greys_r")
plt.show()

We can obtain the individual color frames (1 Red, 2 Green, 1 Blue) by debayering.

In [16]:
R  = image2[1::2,1::2]
G1 = image2[1::2,0::2]
G2 = image2[0::2,1::2]
B  = image2[0::2,0::2]

G = (G1+G2)/2

RGB = np.dstack([R,G,B])
In [17]:
print image2.shape
print RGB.shape
(2848, 4256)
(1424, 2128, 3)
In [18]:
plt.imshow(R, cmap = "Reds_r")
plt.show()
plt.imshow(G, cmap = "Greens_r")
plt.show()
plt.imshow(B, cmap = "Blues_r" )
plt.show()
In [19]:
RGB.dtype
Out[19]:
dtype('uint16')

Loading Fits files

In [20]:
from astropy.io import fits
In [21]:
ls /data1/sbaar/60cm/150827raw/20150827.00000001.FIT
/data1/sbaar/60cm/150827raw/20150827.00000001.FIT*
In [22]:
path = "/data1/sbaar/60cm/150827raw/20150827.00000001.FIT"
FITSimage = fits.open(path);
WARNING: Header block contains null bytes instead of spaces for padding, and is not FITS-compliant. Nulls may be replaced with spaces upon writing. [astropy.io.fits.header]

Access and Evaluate Fits Headers

In [23]:
if FITSimage[0].header["IMAGETYP"] == 'Light Frame':
    print "is Light Frame"
else:
    print "not Light Frame"
is Light Frame
In [24]:
gpath = "/data1/sbaar/60cm/150827raw/"

We can use glob to get a list of files within a directory.

In [25]:
from glob import glob
In [26]:
FILElist = np.array(glob(gpath+"*.FIT"))

It is useful to sort the files by name as follows:

In [27]:
FILElist = sorted(FILElist)
FILElist
Out[27]:
['/data1/sbaar/60cm/150827raw/20150827.00000001.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000002.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000003.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000004.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000005.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000006.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000007.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000008.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000009.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000010.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000011.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000012.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000013.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000014.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000015.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000016.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000017.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000018.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000019.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000020.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000021.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000022.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000023.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000024.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000025.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000026.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000027.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000028.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000029.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000030.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000031.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000032.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000033.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000034.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000035.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000036.DARK.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000037.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000038.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000039.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000040.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000041.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000042.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000043.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000046.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000047.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000048.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000049.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000050.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000051.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000052.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000053.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000054.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000055.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000056.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000057.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000058.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000059.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000060.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000061.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000062.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000063.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000064.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000065.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000066.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000067.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000068.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000069.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000070.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000071.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000072.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000073.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000074.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000075.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000076.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000077.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000078.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000079.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000080.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000081.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000082.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000083.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000084.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000085.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000086.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000087.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000088.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000089.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000090.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000091.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000092.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000093.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000094.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000095.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000096.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000097.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000098.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000099.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000100.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000101.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000102.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000103.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000104.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000105.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000106.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000107.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000108.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000109.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000110.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000111.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000112.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000113.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000114.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000115.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000116.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000117.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000118.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000120.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000121.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000122.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000123.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000124.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000125.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000126.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000127.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000128.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000129.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000130.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000131.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000132.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000133.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000134.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000135.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000136.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000137.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000138.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000139.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000140.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000141.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000142.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000143.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000144.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000145.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000146.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000147.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000148.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000149.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000150.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000151.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000152.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000153.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000154.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000155.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000156.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000157.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000158.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000159.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000160.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000161.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000162.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000163.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000164.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000165.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000166.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000167.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000168.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000169.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000170.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000171.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000172.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000173.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000174.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000175.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000176.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000177.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000178.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000179.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000180.FIT',
 '/data1/sbaar/60cm/150827raw/20150827.00000181.FIT']

Let's inspect all fits headers to create a list of Dark files within the directory.

In [28]:
ITYPE = []
for i in FILElist[:50]:
    filetype =  fits.open(i)[0].header["IMAGETYP"]
    ITYPE.append(filetype)
ITYPE = np.asarray(ITYPE)    
In [29]:
DARKindex = np.where(ITYPE == 'Dark Frame')
In [30]:
DARKindex
Out[30]:
(array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
        28, 29, 30, 31, 32, 33, 34, 35]),)
In [31]:
np.array(FILElist)[DARKindex]
Out[31]:
array(['/data1/sbaar/60cm/150827raw/20150827.00000012.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000013.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000014.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000015.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000016.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000017.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000018.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000019.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000020.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000021.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000022.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000023.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000024.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000025.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000026.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000027.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000028.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000029.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000030.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000031.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000032.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000033.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000034.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000035.DARK.FIT',
       '/data1/sbaar/60cm/150827raw/20150827.00000036.DARK.FIT'],
      dtype='|S54')
In [ ]: