In [32]:
from astropy.io import fits
import numpy as np
import matplotlib.pyplot as plt
import glob
from PIL import Image
%matplotlib inline

In [3]:
drzs = sorted(glob.glob('*v2_drz.fits'))
print drzs


['F127M_v2_drz.fits', 'F139M_v2_drz.fits', 'F153M_v2_drz.fits']

In [5]:
rim, gim, bim = drzs[2], drzs[1], drzs[0]

In [90]:
r = fits.getdata(rim)
g = fits.getdata(gim)
b = fits.getdata(bim)

In [88]:
def scl(data,lo=None,hi=None):
    if lo: print lo
    else: print 'No params provided, percent scaling'

In [95]:
def pctscale(data,lo=0.1,hi=99.5):
    lv, hv = np.nanpercentile(data, [lo,hi])
    print 'Getting nanmask'
    nanmask = np.isnan(data)
    print 'fraction of pixels as nan:', np.mean(nanmask.astype('float'))
#     plt.imshow(nanmask.astype('float'))
#     plt.show()
    print 'Low val at {}%% level is {}'.format(lo,lv)
    print 'High val at {}%% level is {}'.format(hi,hv)
    data[nanmask] = lv
    data[data<lv] = lv
    data[data>hv] = hv
    return data

In [82]:
def bitrange(data):
    lo = np.amin(data)
    hi = np.amax(data)
    data = (((data-lo)/(hi-lo))*254.999).astype('uint8')
    return data

In [97]:
def asinh(data):
    lo = np.amin(data)
    hi = np.amax(data)
    data = ((data-lo)/(hi-lo))
    data = np.arcsinh(10.0*data)/3.0
    return data

In [105]:
r = fits.getdata(rim)
g = fits.getdata(gim)
b = fits.getdata(bim)

lo = 0.03
hi = 98.0

rscl = asinh(pctscale(r,lo,hi))
# plt.imshow(rscl,cmap='Blues')
# plt.show()
r8bit = bitrange(rscl)
# plt.imshow(r8bit, cmap='Blues')
# plt.show()
print 'Done'
gscl = asinh(pctscale(g,lo,hi))
g8bit = bitrange(gscl)
print 'Done'
bscl = asinh(pctscale(b,lo,hi))
b8bit = bitrange(bscl)
print 'Done'
img = Image.fromarray(np.dstack((r8bit,g8bit,b8bit)))
print 'Making image'
img.save('final_asinh_{}_{}.jpg'.format(lo,hi))
print 'Image made'


Getting nanmask
fraction of pixels as nan: 0.0848985025031
Low val at 0.03%% level is -0.261610935673
High val at 98.0%% level is 10.5249651146
Done
Getting nanmask
fraction of pixels as nan: 0.166483808853
Low val at 0.03%% level is -0.119007031083
High val at 98.0%% level is 4.2407847023
Done
Getting nanmask
fraction of pixels as nan: 0.148084188877
Low val at 0.03%% level is -0.0740485523194
High val at 98.0%% level is 2.14361681938
Done
Making image
Image made

In [85]:


In [50]:
# pctscale(g)
print g[4685,7011]


nan

In [ ]: