In [2]:
import numpy as np
import astropy
import functions as f
import matplotlib.pyplot as plt
from numpy import genfromtxt
from astropy.time import Time
%matplotlib inline
In [3]:
#Loading data from file
acq_data = np.load('data/acq_table.npy')
#Adding fields required for analysis
acq_data = f.add_column(acq_data, 'tstart_jyear' , np.zeros(len(acq_data)))
acq_data = f.add_column(acq_data, 'tstart_quarter' , np.zeros(len(acq_data)))
acq_data = f.add_column(acq_data, 'mag_floor' , np.zeros(len(acq_data)))
acq_data = f.add_column(acq_data, 'year' , np.zeros(len(acq_data)))
acq_data['tstart_jyear'] = Time(acq_data['tstart'], format='cxcsec').jyear
acq_data['year'] = np.floor(acq_data.tstart_jyear)
acq_data['mag_floor'] = np.floor(acq_data['mag'])
# acq_data['tstart_quarter'] = f.quarter_bin(acq['tstart_jyear'])
for acq in acq_data:
acq.tstart_quarter = f.quarter_bin(acq.tstart_jyear)
In [4]:
#Subsetting the data by the floor of star magnitude
mag8 = f.smlset(acq_data, 'mag_floor', 8.0)
mag9 = f.smlset(acq_data, 'mag_floor', 9.0)
mag10 = f.smlset(acq_data, 'mag_floor', 10.0)
#Subsetting the data by acquisition type, NOID is failed
obs_failed = f.smlset(acq_data, 'obc_id', "NOID")
obs_acq = f.smlset(acq_data, 'obc_id', "ID")
#Subsetting the data by acquisition type & floor of star magnitude
failed9s = f.smlset(mag9, 'obc_id', "NOID")
acqrd9s = f.smlset(mag9, 'obc_id', "ID")
failed10s = f.smlset(mag10, 'obc_id', "NOID")
acqrd10s = f.smlset(mag10, 'obc_id', "ID")
#Creating dark current vals from custom function... Not useful
darkvals = genfromtxt('data/N100.csv', dtype=None, delimiter='\t', names=True)
t = Time(darkvals['Date_YearDOY'])
In [18]:
def fails_by_quarter(arr):
quarters = np.unique(arr['tstart_quarter'])
obs_counts = []
failure_counts = []
warm_pix_avgs = []
for q in quarters:
obs_inquarter = f.smlset(arr, 'tstart_quarter', q)
failures = len(f.smlset(obs_inquarter, 'obc_id', 'NOID'))
warm_pix = np.mean(obs_inquarter['warm_pix'])
counts = len(obs_inquarter)
failure_counts.append(float(failures))
warm_pix_avgs.append(float(warm_pix))
obs_counts.append(float(counts))
failure_rate = np.array(failure_counts) / np.array(obs_counts)
return [quarters, failure_rate, warm_pix_avgs]
In [19]:
mag8_byquarter = fails_by_quarter(mag8)
mag9_byquarter = fails_by_quarter(mag9)
mag10_byquarter = fails_by_quarter(mag10)
In [42]:
def plot_failures(out, title_name, fname):
F, ax1 = plt.subplots()
ax1.plot(out[0],out[1], marker='o', linestyle="")
ax1.set_xlabel('Quarter')
ax1.set_ylabel('Acq Fail Rate (%)')
ax1.set_title(title_name)
ax2 = ax1.twinx()
ax2.plot(out[0],out[2], marker='', linestyle="-",color="r")
ax2.set_ylabel('N100 Warm Pixel CCD Fraction', color="r")
F.set_size_inches(8,4)
F.savefig(fname, type='pdf')
plt.show()
In [39]:
plot_failures(mag8_byquarter, 'Magnitude 8 Stars', 'plots/mag8_byquarter.pdf')
In [43]:
plot_failures(mag9_byquarter, '9th Magnitude Stars', 'plots/mag9_byquarter.pdf')
In [44]:
plot_failures(mag10_byquarter, '10th Magnitude Stars', 'plots/mag10_byquarter.pdf')
In [10]:
def plot_warmpix_fromfile(subset, fname):
F = plt.figure()
plt.plot(subset.tstart_jyear,subset.warm_pix, marker='o', linestyle="")
plt.xlabel('Time')
plt.ylabel('Warm Pixel Fraction (%)')
F.set_size_inches(10,5)
plt.show()
In [11]:
plot_warmpix_fromfile(subset_mag9, 'plots/subsetmag9.pdf')
In [12]:
plot_warmpix_fromfile(subset_mag10, 'plots/subsetmag10.pdf')
In [13]:
def plot_failedheat(subset, fname):
F = plt.figure()
heatmap, xedges, yedges = np.histogram2d(subset.yang,subset.zang, bins=100)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
plt.imshow(heatmap, extent=extent)
plt.colorbar()
plt.show()
print "Plot: {0}... complete".format(fname)
In [14]:
plot_failedheat(obs_failed, 'plots/failedheat.pdf')
In [15]:
plot_failedheat(obs_acq, 'plots/acqheat.pdf')
In [4]:
f.smlset(acq_data, 'mag_floor', 10.0)
Out[4]: