In [2]:
%matplotlib nbagg
In [3]:
import seaborn as sns
sns.set_context('talk')
sns.set_style('white')
In [4]:
cd ~/superdark/
In [5]:
from iuvs import io
In [8]:
def read_superdark():
from scipy.io import idl
d = idl.readsav('./xmas_aurora_superdark_v1.sav', python_dict=True)
superdark = d['xmas_aurora_superdark']
return superdark
In [9]:
def get_sensitivity_curve(l1b):
return l1b.detector_dark_subtracted[8,2,:]/l1b.img[8,2,:]
In [10]:
def fit_superdark_to_localdark(dark):
superdark = read_superdark()
x = superdark.ravel()
y = dark.ravel()
p = np.poly1d(np.polyfit(x, y, 1))
return p(superdark)
In [11]:
def recalibrate_primary_muv(l1b):
superdark = fit_superdark_to_localdark(l1b.detector_dark[1])
primary_muv = l1b.detector_raw - superdark
primary_muv_cal = primary_muv / get_sensitivity_curve(l1b)
return primary_muv_cal
In [12]:
def get_compressed_spectrogram(img):
return img[:, 2:5, :].mean(axis=1)
In [13]:
def do_my_subtract(l1b):
sensitivity_curve = get_sensitivity_curve(l1b)
mysubbed = []
for i in range(21):
darkfitter = scaling.DarkFitter(l1b, i, 1)
scaler = darkfitter.scalers[-1]
fitted_dark = scaler.apply_fit(darkfitter.fulldark)
mysubbed.append(darkfitter.fullraw - fitted_dark)
mysubbed = np.array(mysubbed)
mysubbed = mysubbed/ sensitivity_curve
return mysubbed
In [54]:
from iuvs import scaling
import os
def process_one_file(fname):
print(os.path.basename(fname))
l1b = io.L1BReader(fname, stage=False)
current = get_compressed_spectrogram(l1b.img)
recal = recalibrate_primary_muv(l1b)
recal_comp = get_compressed_spectrogram(recal)
mysubbed = do_my_subtract(l1b)
mycompressed = get_compressed_spectrogram(mysubbed)
return current, recal_comp, mycompressed
In [48]:
fnames = sorted(list(io.l1b_filenames('periapse-orbit00800-muv', env='production')))
print("Found", len(fnames))
fnames = fnames[:-1]
In [50]:
for fname in fnames:
for data, container in zip(process_one_file(fname), [current, recal, mysub]):
container.append(data)
In [51]:
current = np.array(current)
recal = np.array(recal)
mysub = np.array(mysub)
In [67]:
def get_periapse_fnames(orbit):
nfiles = 0
while nfiles == 0:
orbit += 1
s = 'periapse-orbit{}-muv'.format(str(orbit).zfill(5))
fnames = sorted(list(io.l1b_filenames(s, env='production')))
nfiles = len(fnames)
print("Found periapse data at orbit:", orbit)
return fnames[:-1], orbit
In [36]:
from iuvs.superdark import Quicklooker
In [41]:
ql = Quicklooker(400, offset=0)
In [43]:
ql.do_all()
In [11]:
%matplotlib inline
In [46]:
import seaborn as sns
sns.set_style('white')
In [53]:
ql.plot_profiles()
In [51]:
ql.plot_profile_ratios()
In [49]:
sns.color_palette()
Out[49]:
In [54]:
for orbit in [400, 437, 600, 700, 800]:
ql = Quicklooker(orbit, offset=0)
ql.do_all()
In [251]:
ql = superdark.Quicklooker(437)
In [254]:
ql.do_all
In [205]:
l1b = io.L1BReader(ql.fnames[0])
In [253]:
l1b.n_integrations
Out[253]:
In [206]:
fitted_dark = superdark.do_my_subtract(l1b)
In [207]:
fitted_dark.shape
Out[207]:
In [208]:
l1b.detector_raw.shape
Out[208]:
In [210]:
superdarkfit = superdark.fit_superdark_to_localdark(l1b.detector_dark[1])
In [211]:
mydarks = superdark.do_my_subtract(l1b)
In [212]:
superdarkfit.shape
Out[212]:
In [213]:
mydarks.shape
Out[213]:
In [225]:
repeated = np.repeat(superdarkfit[np.newaxis,:], repeats=21, axis=0)
In [226]:
repeated.shape
Out[226]:
In [247]:
np.median([mydarks, repeated], axis=0)
Out[247]:
In [248]:
mydarks.ravel()[0]
Out[248]:
In [249]:
repeated.ravel()[0]
Out[249]:
In [250]:
(_+__)/2
Out[250]:
In [164]:
from iuvs import superdark
In [178]:
mysubbed = superdark.do_my_subtract(l1b)
In [184]:
mysubbed.mean(axis=(1,2))
Out[184]:
In [183]:
l1b.img.mean(axis=(1,2))
Out[183]:
In [169]:
recal = superdark.recalibrate_primary_muv(l1b)
In [170]:
recal.mean()
Out[170]:
In [171]:
from iuvs import scaling
In [172]:
darkfitter = scaling.DarkFitter(l1b, 2, 1)
In [173]:
scaler = darkfitter.scalers[-1]
In [167]:
mysubbed.mean()
Out[167]:
In [ ]:
ql438.do_all()
In [13]:
l1b = io.L1BReader(fnames[3])
In [17]:
fitteddark = fit_superdark_to_localdark(l1b.detector_dark[1])
In [18]:
superdark = read_superdark()
In [22]:
fig, ax = plt.subplots(nrows=2)
ax[0].plot(superdark.ravel(), label='super', alpha=0.7)
ax[0].plot(l1b.detector_dark[1].ravel(), label='local', alpha=0.7)
ax[0].legend()
ax[1].plot(superdark.ravel(), label='super', alpha=0.7)
ax[1].plot(fitteddark.ravel(), label='fitted', alpha=0.7)
ax[1].legend()
Out[22]:
In [115]:
w = np.sqrt(np.abs(Y))
In [124]:
z = polyfit(X, Y, 1)
In [125]:
z
Out[125]:
In [99]:
def plot_stuff(i):
fig, axes = plt.subplots(nrows=2)
cmap = 'cubehelix'
vmax = primary_muv_cal[i].max()
im1 = axes[0].imshow(l1b.img[i], aspect='auto', interpolation='none', cmap=cmap,
vmax=vmax, vmin=0.001)
plt.colorbar(im1, ax=axes[0])
im2 = axes[1].imshow(primary_muv_cal[i], aspect='auto', interpolation='none', cmap=cmap,
vmax=vmax, vmin=0.001)
plt.colorbar(im2, ax=axes[1])
In [100]:
from ipywidgets import interact
In [101]:
interact(plot_stuff, i=(0, len(l1b.img) -1))
In [118]:
l1b = io.L1BReader(fnames[0])
In [117]:
plt.plot(l1b.img.mean(axis=(1,2)), label='l1b.img')
plt.plot(primary_muv_cal.mean(axis=(1,2)), label='superdark applied')
plt.legend()
In [106]:
a1 = l1b.img.mean(axis=(1,2))
a2 = primary_muv_cal.mean(axis=(1,2))
In [107]:
plt.plot(a1/a2)
Out[107]:
In [121]:
l1b.img[0:3].mean(axis=0).shape
Out[121]:
In [124]:
fig, axes = plt.subplots(nrows=7, figsize=(8, 30), sharex=True)
cmap=plt.cm.Reds
data = l1b.img
for i, ax in zip(range(0, 22, 3), axes.ravel()):
ax.imshow(data[i:i+3].mean(axis=0)[:,-50:], aspect='auto', interpolation='none',
cmap=cmap)
fig.suptitle('original', fontsize=24)
fig.savefig('original.pdf', dpi=120)
In [125]:
from iuvs import scaling
In [127]:
darkfitter = scaling.DarkFitter(l1b, 1, 1)
In [129]:
scaler = darkfitter.scalers[-1]
In [133]:
mysubbed = []
for i in range(21):
darkfitter = scaling.DarkFitter(l1b, i, 1)
scaler = darkfitter.scalers[-1]
fitted_dark = scaler.apply_fit(darkfitter.fulldark)
mysubbed.append(darkfitter.fullraw - fitted_dark)
In [134]:
mysub = np.array(mysubbed)
In [140]:
mysub = mysub/ sensitivity_curve
In [141]:
mysub.shape
Out[141]:
In [151]:
def calc_4_to_3(width):
height = width * 3 / 4
return (width, height)
In [153]:
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=calc_4_to_3(8), sharex=True)
cmap=plt.cm.Reds
data = mysub
for i, ax in zip(range(0, 12, 3), axes.ravel()):
ax.imshow(data[i:i+3].mean(axis=0)[:,-50:], aspect='auto', interpolation='none',
cmap=cmap)
axes.ravel()[0].set_title('mysub', fontsize=24)
fig.savefig('mysub.pdf', dpi=120)
In [179]:
cmap=plt.cm.Reds
profiles = []
for data, name in zip([l1b.img, primary_muv_cal, mysub], ['original', 'super_applied', 'mysub']):
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=calc_4_to_3(8), sharex=True)
if name=='mysub':
data = data * l1b.scaling_factor
for i, ax in zip(range(0, 12, 3), axes.ravel()):
toplot = data[i:i+3].mean(axis=0)[:,-50:]
profiles.append(toplot.mean(axis=0))
im = ax.imshow(toplot, aspect='auto', interpolation='none',
cmap=cmap, vmax=13, vmin=0)
plt.colorbar(im, ax=ax)
axes.ravel()[0].set_title(name, fontsize=24)
fig.savefig(name+'.pdf', dpi=120)
plt.close(fig)
In [182]:
profiles = np.array(profiles)
In [183]:
profiles.shape
Out[183]:
In [185]:
profiles[:4].shape
Out[185]:
In [191]:
profiles[::4].shape
Out[191]:
In [203]:
for prof,label in zip(profiles[::4], ['orig','super','mysub']):
plt.plot(prof, label=label)
plt.legend(loc='best')
plt.savefig('profiles.pdf', dpi=120)
In [167]:
Out[167]:
In [161]:
l1b.Dark_Integration['UTC']
Out[161]:
In [164]:
l1b.Dark_Integration['DET_TEMP_C']
Out[164]:
In [165]:
l1b.Dark_Integration['CASE_TEMP_C']
Out[165]:
In [ ]: