In [1]:
%load_ext autoreload
%autoreload 2

In [2]:
import pandas as pd
from iuvs import meta, io

In [3]:
l1b_metadata = meta.l1b_summary()

In [4]:
!head -n 28 {meta.stagel1bsummary}


filenum - file number
filename - 
OBS_ID - observation setup identifier
XUV - channel (FUV or MUV)
INT_TIME - integration time (seconds)
NX - number of pixels in the x (spectral) dimension
NY - number of pixels in the y (spatial) dimension
NZ - number of readouts
X1 - first spectral pixel
X2 - last spectral pixel
Y1 - first spatial pixel
Y2 - last spatial pixel
BINX - bin width in x (spectral) dimension
BINY - bin width in y (spatial) dimension
MCP_HV - voltage across the microchannel plate
SHUT_STATE - either open or closed, derived from commanding
PHASE - name of the observation phase
MODE - numerical id of the mode, which defines the instrument setup
CYCLE - repetition number of the mode
DET_TEMP - Detector temperature (degC)
CASE_TEMP - Case temperature (degC)
FOV_DEG - Look angle relative to -k axis (center of nadir FOR would be 90deg)
STIM_STATE - if the stim lamp is on
FILL_BINS - number of fill bins in the observation
TARGET - target of observation
PURPOSE - description of observation
 filenum                                                                        filename  OBS_ID  XUV  INT_TIME    NX    NY    NZ    X1    X2    Y1    Y2  BINX  BINY    MCP_HV  SHUT_STATE       PHASE    MODE   CYCLE    DET_TEMP   CASE_TEMP        FOV_DEG  STIM_STATE   FILL_BINS    TARGET             PURPOSE
       0            mvn_iuv_l1b_ISON1-cycle01-mode01-fuv_20131211T210322_v01_r01.fits.gz       1  FUV     60000   225   255    36     2   451     2  1021     2     4       846        open                   1       1      3.0833      20.215           7.49                  387720Siding Spr            Spectral

In [5]:
cruisecals = l1b_metadata[l1b_metadata.filename.str.contains('cruisecal')]

In [6]:
cruisecals.columns


Out[6]:
Index(['filename', 'OBS_ID', 'XUV', 'INT_TIME', 'NX', 'NY', 'NZ', 'X1', 'X2', 'Y1', 'Y2', 'BINX', 'BINY', 'MCP_HV', 'SHUT_STATE', 'PHASE', 'MODE', 'CYCLE', 'DET_TEMP', 'CASE_TEMP', 'FOV_DEG', 'STIM_STATE', 'FILL_BINS', 'TARGET', 'PURPOSE'], dtype='object')

In [8]:
%matplotlib inline
import matplotlib.pylab as plt
plt.rcParams['figure.figsize'] = (10,10)

In [9]:
from iuvs import plotting

In [10]:
import pickle
with open('two_or_more.pck', 'rb') as f:
    two_or_more = pickle.load(f)

In [11]:
df = cruisecals[cruisecals.filename.isin(two_or_more)].copy()
df.head()


Out[11]:
filename OBS_ID XUV INT_TIME NX NY NZ X1 X2 Y1 ... PHASE MODE CYCLE DET_TEMP CASE_TEMP FOV_DEG STIM_STATE FILL_BINS TARGET PURPOSE
filenum
651 mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T16... 11 MUV 4000 29 93 218 1 1015 1 ... 11 -1 -12.870 -10.8130 0.01 31610Siding Spr Spectral NaN NaN
653 mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T17... 11 MUV 4000 29 93 219 1 1015 1 ... 11 -1 -13.020 -7.7153 11.98 31755Siding Spr Spectral NaN NaN
654 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T17... 12 FUV 4000 29 93 218 1 1015 0 ... 12 -1 -11.072 -5.4229 60.01 108346Siding Spr Spectral NaN NaN
655 mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T17... 12 MUV 4000 29 93 218 1 1015 1 ... 12 -1 -12.870 -5.4229 60.01 31610Siding Spr Spectral NaN NaN
656 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T17... 12 FUV 4000 29 93 218 1 1015 0 ... 12 -1 -10.848 -3.4085 71.98 108346Siding Spr Spectral NaN NaN

5 rows × 25 columns


In [12]:
from IPython.parallel import Client
c = Client()

In [13]:
lbview = c.load_balanced_view()

In [27]:
def do_dark_fit(dark_tuple):
    from iuvs import scaling, io
    fname1, fname2 = dark_tuple
    darkin = io.L1AReader(str(io.stagelevel1apath / fname1)).img
    darkout = io.L1AReader(str(io.stagelevel1apath / fname2)).img
    scaler = scaling.PolyScaler(darkin, darkout)
    scaler.do_fit()
    return (fname1, scaler.p)

In [28]:
res = lbview.map_async(do_dark_fit, set(muv_dark_fnames))

In [26]:
for item in res:
    print(item)


('mvn_iuv_l1a_cruisecal1-mode340-muvdark_20140402T205440_v01_r01.fits.gz', array([  2.16070561e-04,   6.39579028e-01,   5.84963556e+01]))
('mvn_iuv_l1a_cruisecal1-mode240-muvdark_20140402T201124_v01_r01.fits.gz', array([  2.41192126e-04,   6.69182573e-01,   5.00660948e+01]))
('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T080035_v01_r01.fits.gz', array([  4.90962205e-04,   7.29294939e-01,   1.17277251e+01]))
('mvn_iuv_l1a_cruisecal1-mode220-muvdark_20140402T200609_v01_r01.fits.gz', array([  5.27495232e-05,   8.98236794e-01,   3.61506957e+01]))
('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T081027_v01_r01.fits.gz', array([  4.68297685e-04,   7.31943922e-01,   1.02094559e+01]))
('mvn_iuv_l1a_cruisecal1-mode011-muvdark_20140402T165408_v01_r01.fits.gz', array([  1.08658786e-04,   2.92508222e-01,   2.88277513e+02]))
('mvn_iuv_l1a_cruisecal1-mode420-muvdark_20140402T210018_v01_r01.fits.gz', array([  4.11868768e-05,   8.88673390e-01,   1.71506593e+01]))
('mvn_iuv_l1a_cruisecal1-mode520-muvdark_20140402T220345_v01_r01.fits.gz', array([  4.16688839e-05,   8.99976669e-01,   7.27839566e+01]))
('mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T173107_v01_r01.fits.gz', array([  8.99629318e-05,   7.50773517e-01,   3.24376253e+02]))
('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T080531_v01_r01.fits.gz', array([  4.80551089e-04,   7.19091012e-01,   8.07477155e+00]))
('mvn_iuv_l1a_cruisecal1-mode320-muvdark_20140402T204925_v01_r01.fits.gz', array([  9.17853835e-05,   7.70313825e-01,   4.16890972e+01]))
('mvn_iuv_l1a_cruisecal1-mode120-muvdark_20140402T190245_v01_r01.fits.gz', array([  5.31703226e-05,   8.93119653e-01,   5.80253335e+01]))
('mvn_iuv_l1a_cruisecal1-mode540-muvdark_20140402T220900_v01_r01.fits.gz', array([  1.06351978e-04,   7.96669333e-01,   5.92538912e+01]))

In [33]:
resultdf = pd.DataFrame()
for item in res:
    p = item[1]
    print(p[0])
    resultdf.loc[item[0], 'n2coeffs'] = p[0]
    resultdf.loc[item[0], 'n1coeffs'] = p[1]
    resultdf.loc[item[0], 'n0coeffs'] = p[2]


0.000216070560767
0.000241192125656
0.000490962204555
5.27495232201e-05
0.000468297685136
0.000108658786055
4.11868768478e-05
4.16688839067e-05
8.99629317874e-05
0.000480551088803
9.1785383487e-05
5.31703225706e-05
0.00010635197762

In [35]:
resultdf = resultdf.reset_index()

In [41]:
resultdf.index = resultdf['index'].map(lambda x: io.Filename(x).time)

In [44]:
resultdf


Out[44]:
index n2coeffs n1coeffs n0coeffs
index
2014-04-02 20:54:40 mvn_iuv_l1a_cruisecal1-mode340-muvdark_2014040... 0.000216 0.639579 58.496356
2014-04-02 20:11:24 mvn_iuv_l1a_cruisecal1-mode240-muvdark_2014040... 0.000241 0.669183 50.066095
2014-05-21 08:00:35 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000491 0.729295 11.727725
2014-04-02 20:06:09 mvn_iuv_l1a_cruisecal1-mode220-muvdark_2014040... 0.000053 0.898237 36.150696
2014-05-21 08:10:27 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000468 0.731944 10.209456
2014-04-02 16:54:08 mvn_iuv_l1a_cruisecal1-mode011-muvdark_2014040... 0.000109 0.292508 288.277513
2014-04-02 21:00:18 mvn_iuv_l1a_cruisecal1-mode420-muvdark_2014040... 0.000041 0.888673 17.150659
2014-04-02 22:03:45 mvn_iuv_l1a_cruisecal1-mode520-muvdark_2014040... 0.000042 0.899977 72.783957
2014-04-02 17:31:07 mvn_iuv_l1a_cruisecal1-mode012-muvdark_2014040... 0.000090 0.750774 324.376253
2014-05-21 08:05:31 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000481 0.719091 8.074772
2014-04-02 20:49:25 mvn_iuv_l1a_cruisecal1-mode320-muvdark_2014040... 0.000092 0.770314 41.689097
2014-04-02 19:02:45 mvn_iuv_l1a_cruisecal1-mode120-muvdark_2014040... 0.000053 0.893120 58.025333
2014-04-02 22:09:00 mvn_iuv_l1a_cruisecal1-mode540-muvdark_2014040... 0.000106 0.796669 59.253891

In [45]:
resultdf.sort_index(inplace=True)

In [46]:
resultdf


Out[46]:
index n2coeffs n1coeffs n0coeffs
index
2014-04-02 16:54:08 mvn_iuv_l1a_cruisecal1-mode011-muvdark_2014040... 0.000109 0.292508 288.277513
2014-04-02 17:31:07 mvn_iuv_l1a_cruisecal1-mode012-muvdark_2014040... 0.000090 0.750774 324.376253
2014-04-02 19:02:45 mvn_iuv_l1a_cruisecal1-mode120-muvdark_2014040... 0.000053 0.893120 58.025333
2014-04-02 20:06:09 mvn_iuv_l1a_cruisecal1-mode220-muvdark_2014040... 0.000053 0.898237 36.150696
2014-04-02 20:11:24 mvn_iuv_l1a_cruisecal1-mode240-muvdark_2014040... 0.000241 0.669183 50.066095
2014-04-02 20:49:25 mvn_iuv_l1a_cruisecal1-mode320-muvdark_2014040... 0.000092 0.770314 41.689097
2014-04-02 20:54:40 mvn_iuv_l1a_cruisecal1-mode340-muvdark_2014040... 0.000216 0.639579 58.496356
2014-04-02 21:00:18 mvn_iuv_l1a_cruisecal1-mode420-muvdark_2014040... 0.000041 0.888673 17.150659
2014-04-02 22:03:45 mvn_iuv_l1a_cruisecal1-mode520-muvdark_2014040... 0.000042 0.899977 72.783957
2014-04-02 22:09:00 mvn_iuv_l1a_cruisecal1-mode540-muvdark_2014040... 0.000106 0.796669 59.253891
2014-05-21 08:00:35 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000491 0.729295 11.727725
2014-05-21 08:05:31 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000481 0.719091 8.074772
2014-05-21 08:10:27 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000468 0.731944 10.209456

In [89]:
fig, axes = plt.subplots(nrows=4)
for ax, coeff in zip(axes, resultdf.columns[1:]):
    resultdf['20140402'][coeff].plot(ax=ax, legend=True)
resultdf['20140402'][['det_temp','case_temp']].plot(ax=axes[3], secondary_y=['case_temp'])
fig.suptitle("Unique MUV darks fitting parameters, temperature effect")
plt.savefig('temp_effect.png',dpi=150)



In [86]:
pwd


Out[86]:
'/home/klay6683/src/iuvs/notebooks'

In [82]:
resultdf


Out[82]:
index n2coeffs n1coeffs n0coeffs det_temp case_temp
index
2014-04-02 16:54:08 mvn_iuv_l1a_cruisecal1-mode011-muvdark_2014040... 0.000109 0.292508 288.277513 15886 2420
2014-04-02 17:31:07 mvn_iuv_l1a_cruisecal1-mode012-muvdark_2014040... 0.000090 0.750774 324.376253 15899 2438
2014-04-02 19:02:45 mvn_iuv_l1a_cruisecal1-mode120-muvdark_2014040... 0.000053 0.893120 58.025333 16038 2468
2014-04-02 20:06:09 mvn_iuv_l1a_cruisecal1-mode220-muvdark_2014040... 0.000053 0.898237 36.150696 15903 2436
2014-04-02 20:11:24 mvn_iuv_l1a_cruisecal1-mode240-muvdark_2014040... 0.000241 0.669183 50.066095 15978 2460
2014-04-02 20:49:25 mvn_iuv_l1a_cruisecal1-mode320-muvdark_2014040... 0.000092 0.770314 41.689097 2053 2490
2014-04-02 20:54:40 mvn_iuv_l1a_cruisecal1-mode340-muvdark_2014040... 0.000216 0.639579 58.496356 15885 2420
2014-04-02 21:00:18 mvn_iuv_l1a_cruisecal1-mode420-muvdark_2014040... 0.000041 0.888673 17.150659 15874 2404
2014-04-02 22:03:45 mvn_iuv_l1a_cruisecal1-mode520-muvdark_2014040... 0.000042 0.899977 72.783957 1185 2496
2014-04-02 22:09:00 mvn_iuv_l1a_cruisecal1-mode540-muvdark_2014040... 0.000106 0.796669 59.253891 16008 2464
2014-05-21 08:00:35 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000491 0.729295 11.727725 15888 2420
2014-05-21 08:05:31 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000481 0.719091 8.074772 16151 2468
2014-05-21 08:10:27 mvn_iuv_l1a_cruisecal2-mode070-muvdark_2014052... 0.000468 0.731944 10.209456 15873 2404

In [73]:
def grep_temp(s):
    return s[0]

In [76]:
resultdf.case_temp = resultdf.case_temp.map(grep_temp)

In [77]:
resultdf.det_temp = resultdf.det_temp.map(grep_temp)

In [60]:
det_temp = []
case_temp = []
for dark in set(muv_dark_fnames):
    l1a = io.L1AReader(dark[0])
    det_t0 = l1a.Engineering.loc['CASE_TEMP']
    case_t0 = l1a.Engineering.loc['DET_TEMP']
#     l1a = io.L1AReader(dark[1])
#     det_t1 = l1a.Engineering.loc['CASE_TEMP']
#     case_t1 = l1a.Engineering.loc['DET_TEMP']
    det_temp.append(det_t0)
    case_temp.append(case_t0)

In [61]:
resultdf['det_temp'] = det_temp

In [62]:
resultdf['case_temp'] = case_temp

In [ ]:


In [58]:
l1a.Engineering.loc['CASE_TEMP']


Out[58]:
0    15886
Name: CASE_TEMP, dtype: object

In [14]:
df.drop('TARGET PURPOSE SHUT_STATE MODE'.split(), axis=1, inplace=True)

In [15]:
muv = df[df.XUV == 'MUV']
fuv = df[df.XUV == 'FUV']

In [17]:
muv_dark_fnames = []
for fname in muv.filename:
    print(fname)
    l1b = io.L1BReader(fname)
    dark_tuple = []
    for line in l1b.DarkIntegration_header['COMMENT']:
        if not line.startswith('mvn_iuv'):
            continue
        dark_tuple.append(line)
    muv_dark_fnames.append(tuple(dark_tuple))
#     muv.loc[muv.filename == fname, 'darktime'] = io.Filename(muv_dark_fnames[-1]).time


mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T165419_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T171232_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T173118_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T174929_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T180740_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T182551_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T184405_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode120-muv_20140402T190257_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode220-muv_20140402T200620_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode240-muv_20140402T201135_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode320-muv_20140402T204936_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode340-muv_20140402T205451_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode420-muv_20140402T210029_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode520-muv_20140402T220356_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal1-mode540-muv_20140402T220911_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal2-mode070-muv_20140521T080049_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal2-mode070-muv_20140521T080545_v01_r01.fits.gz
mvn_iuv_l1b_cruisecal2-mode070-muv_20140521T081041_v01_r01.fits.gz

In [23]:
set(muv_dark_fnames)


Out[23]:
{('mvn_iuv_l1a_cruisecal1-mode011-muvdark_20140402T165408_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode011-muvdark_20140402T173053_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T173107_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T190225_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode120-muvdark_20140402T190245_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode120-muvdark_20140402T190743_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode220-muvdark_20140402T200609_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode220-muvdark_20140402T201106_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode240-muvdark_20140402T201124_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode240-muvdark_20140402T201621_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode320-muvdark_20140402T204925_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode320-muvdark_20140402T205422_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode340-muvdark_20140402T205440_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode340-muvdark_20140402T205937_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode420-muvdark_20140402T210018_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode420-muvdark_20140402T210515_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode520-muvdark_20140402T220345_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode520-muvdark_20140402T220842_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode540-muvdark_20140402T220900_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode540-muvdark_20140402T221357_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T080035_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T080531_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T080531_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T081027_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T081027_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T081523_v01_r01.fits.gz')}

In [22]:
muv_dark_fnames


Out[22]:
[('mvn_iuv_l1a_cruisecal1-mode011-muvdark_20140402T165408_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode011-muvdark_20140402T173053_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode011-muvdark_20140402T165408_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode011-muvdark_20140402T173053_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T173107_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T190225_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T173107_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T190225_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T173107_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T190225_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T173107_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T190225_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T173107_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode012-muvdark_20140402T190225_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode120-muvdark_20140402T190245_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode120-muvdark_20140402T190743_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode220-muvdark_20140402T200609_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode220-muvdark_20140402T201106_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode240-muvdark_20140402T201124_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode240-muvdark_20140402T201621_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode320-muvdark_20140402T204925_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode320-muvdark_20140402T205422_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode340-muvdark_20140402T205440_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode340-muvdark_20140402T205937_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode420-muvdark_20140402T210018_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode420-muvdark_20140402T210515_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode520-muvdark_20140402T220345_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode520-muvdark_20140402T220842_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal1-mode540-muvdark_20140402T220900_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal1-mode540-muvdark_20140402T221357_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T080035_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T080531_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T080531_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T081027_v01_r01.fits.gz'),
 ('mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T081027_v01_r01.fits.gz',
  'mvn_iuv_l1a_cruisecal2-mode070-muvdark_20140521T081523_v01_r01.fits.gz')]

In [ ]:


In [ ]:


In [24]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib
WARNING: pylab import has clobbered these variables: ['recarray']
`%matplotlib` prevents importing * from pylab and numpy

In [27]:
plot n2coeffs


-> plot(n2coeffs)
Out[27]:
[<matplotlib.lines.Line2D at 0x7f196b0a8390>]

In [28]:
plot n1coeffs


-> plot(n1coeffs)
Out[28]:
[<matplotlib.lines.Line2D at 0x7f196afbe780>]

In [29]:
plot n0coeffs


-> plot(n0coeffs)
Out[29]:
[<matplotlib.lines.Line2D at 0x7f196afac320>]

In [108]:
df = pd.DataFrame.from_items(res).T

In [109]:
df = df.reset_index()

In [110]:
df.head()


Out[110]:
index 0 1 2
0 mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T16... 0.000109 0.292508 288.277513
1 mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T17... 0.000109 0.292508 288.277513
2 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T17... 0.000015 0.995765 143.575499
3 mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T17... 0.000090 0.750774 324.376253
4 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T17... 0.000015 0.995765 143.575499

In [111]:
df.columns = ['filename', 'coeff_2','coeff_1','coeff_0']

In [112]:
df.head()


Out[112]:
filename coeff_2 coeff_1 coeff_0
0 mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T16... 0.000109 0.292508 288.277513
1 mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T17... 0.000109 0.292508 288.277513
2 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T17... 0.000015 0.995765 143.575499
3 mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T17... 0.000090 0.750774 324.376253
4 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T17... 0.000015 0.995765 143.575499

In [113]:
def get_time(fname):
    return io.Filename(fname).time

In [114]:
df['time'] = df.filename.map(get_time)

In [115]:
df.set_index('time', inplace=True)

In [116]:
df.iloc[:10]


Out[116]:
filename coeff_2 coeff_1 coeff_0
time
2014-04-02 16:54:19 mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T16... 0.000109 0.292508 288.277513
2014-04-02 17:12:32 mvn_iuv_l1b_cruisecal1-mode011-muv_20140402T17... 0.000109 0.292508 288.277513
2014-04-02 17:31:18 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T17... 0.000015 0.995765 143.575499
2014-04-02 17:31:18 mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T17... 0.000090 0.750774 324.376253
2014-04-02 17:49:29 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T17... 0.000015 0.995765 143.575499
2014-04-02 17:49:29 mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T17... 0.000090 0.750774 324.376253
2014-04-02 18:07:40 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T18... 0.000015 0.995765 143.575499
2014-04-02 18:07:40 mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T18... 0.000090 0.750774 324.376253
2014-04-02 18:25:51 mvn_iuv_l1b_cruisecal1-mode012-fuv_20140402T18... 0.000015 0.995765 143.575499
2014-04-02 18:25:51 mvn_iuv_l1b_cruisecal1-mode012-muv_20140402T18... 0.000090 0.750774 324.376253

In [120]:
same_p_fnames = df.filename.iloc[:2].values

In [121]:
import os

In [122]:
os.path.isabs(same_p_fnames[0])


Out[122]:
False

In [ ]:
f1 = io.L1BReader(same_p_fnames[0]

In [106]:
t = '20140402 19'
muv[t1].plot('coeff_1', 'coeff_2', kind='scatter')


Out[106]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f1969730b70>

In [87]:
muv = df[df.filename.str.contains('-muv_')]
fuv = df[df.filename.str.contains('-fuv_')]

In [93]:
rcParams['figure.figsize'] = (11,8)

In [104]:
t1 = '20140402'
fig, axes = subplots(nrows=3)
fig.suptitle('2014-04-02, MUV')
for ax,i in zip(axes, range(3)):
    muv[t1]['coeff_'+str(i)].plot(ax=ax,style='*')
    muv[t1]['coeff_'+str(i)].plot(ax=ax)
savefig('t1_muv.png', dpi=150)



In [101]:
t1 = '20140402'
fig, axes = subplots(nrows=3)
for ax,i in zip(axes, range(3)):
    fuv[t1]['coeff_'+str(i)].plot(ax=ax)
    fuv[t1]['coeff_'+str(i)].plot(ax=ax,style='*')



In [102]:
t2 = '20140521'
fig, axes = subplots(nrows=3)
fig
for ax,i in zip(axes, range(3)):
    muv[t1]['coeff_'+str(i)].plot(ax=ax, style='*')
    muv[t1]['coeff_'+str(i)].plot(ax=ax,)



In [97]:
t2 = '20140521'
fig, axes = subplots(nrows=3)
for ax,i in zip(axes, range(3)):
    fuv[t1]['coeff_'+str(i)].plot(ax=ax, style='*')



In [ ]: