In [1]:
from iuvs import io

In [2]:
iuvs_fnames = []
for fname in io.l1a_filenames():
    iuvs_fnames.append(io.Filename(fname))


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-579f7e4cd999> in <module>()
      1 iuvs_fnames = []
----> 2 for fname in io.l1a_filenames():
      3     iuvs_fnames.append(io.Filename(fname))

TypeError: l1a_filenames() missing 1 required positional argument: 'pattern'

In [3]:
import pandas as pd

In [4]:
s = pd.Series(iuvs_fnames)

In [5]:
df = pd.DataFrame()

In [6]:
for item in ['basename','phase', 'cycle_orbit', 'mode', 'channel', 'time', 'level', 'version', 'revision']:
    df[item] = s.map(lambda x: getattr(x, item))

In [7]:
df['channel']=df.channel.astype('category')

In [8]:
df.dtypes


Out[8]:
basename         object
phase            object
cycle_orbit      object
mode             object
channel        category
time             object
level            object
version          object
revision         object
dtype: object

In [9]:
df.head()


Out[9]:
basename phase cycle_orbit mode channel time level version revision

In [14]:
df.channel.value_counts()


Out[14]:
fuv        12928
muv        12362
fuvdark     4966
muvdark     4551
echdark     1730
ech         1087
dtype: int64

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

In [12]:
df.head()


Out[12]:
basename phase cycle_orbit mode channel level version revision
time
2013-12-04 19:02:17 mvn_iuv_l1a_checkout-muvdark_20131204T190217_v... checkout N/A N/A muvdark l1a v00 r00
2013-12-04 19:02:17 mvn_iuv_l1a_checkout-fuvdark_20131204T190217_v... checkout N/A N/A fuvdark l1a v00 r00
2013-12-04 19:03:04 mvn_iuv_l1a_checkout-muvdark_20131204T190304_v... checkout N/A N/A muvdark l1a v00 r00
2013-12-04 19:03:04 mvn_iuv_l1a_checkout-fuvdark_20131204T190304_v... checkout N/A N/A fuvdark l1a v00 r00
2013-12-04 19:03:42 mvn_iuv_l1a_checkout-muv_20131204T190342_v00_r... checkout N/A N/A muv l1a v00 r00

In [13]:
df.tail()


Out[13]:
basename phase cycle_orbit mode channel level version revision
time
2015-01-09 14:27:01 mvn_iuv_l1a_apoapse-orbit00542-fuv_20150109T14... apoapse orbit00542 N/A fuv l1a v00 r00
2015-01-09 14:32:21 mvn_iuv_l1a_apoapse-orbit00542-fuv_20150109T14... apoapse orbit00542 N/A fuv l1a v00 r00
2015-01-09 14:37:43 mvn_iuv_l1a_apoapse-orbit00542-fuv_20150109T14... apoapse orbit00542 N/A fuv l1a v00 r00
2015-01-09 14:43:03 mvn_iuv_l1a_apoapse-orbit00542-fuv_20150109T14... apoapse orbit00542 N/A fuv l1a v00 r00
2015-01-09 14:48:23 mvn_iuv_l1a_apoapse-orbit00542-fuv_20150109T14... apoapse orbit00542 N/A fuv l1a v00 r00

In [18]:
ds  =io.L1AReader(str(io.level1apath) + '/' + df.basename[df.index[-1]])

In [33]:
ds.integration.data


Out[33]:
0 1 2 3 4 5 6 7 8 9 ... 11 12 13 14 15 16 17 18 19 20
TIMESTAMP 4.740869e+08 4.740869e+08 4.740869e+08 4.740869e+08 4.740869e+08 4.74087e+08 4.74087e+08 4.74087e+08 4.74087e+08 4.74087e+08 ... 4.74087e+08 4.740871e+08 4.740871e+08 4.740871e+08 4.740871e+08 4.740871e+08 4.740871e+08 4.740872e+08 4.740872e+08 4.740872e+08
ET 4.74087e+08 4.74087e+08 4.74087e+08 4.74087e+08 4.74087e+08 4.74087e+08 4.740871e+08 4.740871e+08 4.740871e+08 4.740871e+08 ... 4.740871e+08 4.740872e+08 4.740872e+08 4.740872e+08 4.740872e+08 4.740872e+08 4.740872e+08 4.740872e+08 4.740873e+08 4.740873e+08
UTC 2015/009 Jan 09 14:48:23.76188UTC 2015/009 Jan 09 14:48:38.76189UTC 2015/009 Jan 09 14:48:53.76190UTC 2015/009 Jan 09 14:49:08.76190UTC 2015/009 Jan 09 14:49:23.76191UTC 2015/009 Jan 09 14:49:38.76192UTC 2015/009 Jan 09 14:49:53.76193UTC 2015/009 Jan 09 14:50:08.76194UTC 2015/009 Jan 09 14:50:23.76194UTC 2015/009 Jan 09 14:50:38.76195UTC ... 2015/009 Jan 09 14:51:08.76197UTC 2015/009 Jan 09 14:51:23.76197UTC 2015/009 Jan 09 14:51:38.76198UTC 2015/009 Jan 09 14:51:53.76199UTC 2015/009 Jan 09 14:52:08.76200UTC 2015/009 Jan 09 14:52:23.76201UTC 2015/009 Jan 09 14:52:38.76201UTC 2015/009 Jan 09 14:52:53.76202UTC 2015/009 Jan 09 14:53:08.76203UTC 2015/009 Jan 09 14:53:23.76204UTC
MIRROR_DN 29342 29552 29762 29972 30182 30392 30602 30812 31022 31232 ... 31652 31862 32072 32282 32492 32702 32912 33122 33332 33542
MIRROR_DEG 45.05219 45.62897 46.20575 46.78253 47.35931 47.9361 48.51288 49.08966 49.66644 50.24323 ... 51.39679 51.97357 52.55035 53.12714 53.70392 54.2807 54.85748 55.43427 56.01105 56.58783
FOV_DEG 90.10437 91.25793 92.4115 93.56506 94.71863 95.87219 97.02576 98.17932 99.33289 100.4865 ... 102.7936 103.9471 105.1007 106.2543 107.4078 108.5614 109.715 110.8685 112.0221 113.1757
LYA_CENTROID 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1

7 rows × 21 columns


In [36]:
ds.binning.header


Out[36]:
XTENSION= 'BINTABLE'           /Binary table written by MWRFITS v1.11           
BITPIX  =                    8 /Required value                                  
NAXIS   =                    2 /Required value                                  
NAXIS1  =                 2147 /Number of bytes per row                         
NAXIS2  =                    1 /Number of rows                                  
PCOUNT  =                    0 /Normally 0 (no varying arrays)                  
GCOUNT  =                    1 /Required value                                  
TFIELDS =                    9 /Number of columns in table                      
COMMENT                                                                         
COMMENT  *** End of mandatory fields ***                                        
COMMENT                                                                         
EXTNAME = 'Binning'                                                             
COMMENT                                                                         
COMMENT  *** Column names ***                                                   
COMMENT                                                                         
TTYPE1  = 'SPABINWIDTH'        /                                                
TTYPE2  = 'SPABINTRANSMIT'     /                                                
TTYPE3  = 'SPEBINWIDTH'        /                                                
TTYPE4  = 'SPEBINTRANSMIT'     /                                                
TTYPE5  = 'SPAPIXLO'           /                                                
TTYPE6  = 'SPAPIXHI'           /                                                
TTYPE7  = 'SPEPIXLO'           /                                                
TTYPE8  = 'SPEPIXHI'           /                                                
TTYPE9  = 'BINTABLENAME'       /                                                
COMMENT                                                                         
COMMENT  *** Column formats ***                                                 
COMMENT                                                                         
TFORM1  = '12I     '           /                                                
TFORM2  = '12I     '           /                                                
TFORM3  = '256I    '           /                                                
TFORM4  = '256I    '           /                                                
TFORM5  = '10I     '           /                                                
TFORM6  = '10I     '           /                                                
TFORM7  = '256I    '           /                                                
TFORM8  = '256I    '           /                                                
TFORM9  = '11A     '           /                                                
COMMENT SPABINWIDTH: "Width of each spatial bin in pixels, one entry for each   
COMMENT   bin, transmitted or not"                                              
COMMENT SPABINTRANSMIT: "1 if bin is transmitted, 0 if not. Total number of 1   
COMMENT   entries set equals the number of spatial bins in the file"            
COMMENT SPEBINWIDTH: "Width of each spectral bin in pixels, one entry for each  
COMMENT   bin, transmitted or not"                                              
COMMENT SPEBINTRANSMIT: "1 if bin is transmitted, 0 if not. Total number of 1   
COMMENT   entries set equals the number of spatial bins in the file"            
COMMENT SPAPIXLO: Lowest numbered pixel in each transmitted spatial bin         
COMMENT SPAPIXHI: Highest numbered pixel in each transmitted spatial bin        
COMMENT SPEPIXLO: Lowest numbered pixel in each transmitted spectral bin        
COMMENT SPEPIXHI: Highest numbered pixel in each transmitted spectral bin       

In [126]:
import glob
fnames = glob.glob(root+'/*.fits.gz')

In [132]:
from IPython import parallel
rc = parallel.Client()

In [133]:
dview = rc.direct_view()

In [134]:
lview = rc.load_balanced_view()

In [140]:
%%px 
key_errors=[]
results = []

In [188]:
def find_big_deltas(fname):
    fitsdata = IUVSReader(fname)
    mir_deg1 = fitsdata.img_header['MIR_DEG']
    mir_deg2 = fitsdata.integration.data.get_value('MIRROR_DEG', 0)
    return mir_deg1/mir_deg2

In [189]:
ratios = []
n = 100
for i,fname in enumerate(fnames[:n]):
    print(i/n)
    ratio = find_big_deltas(fname)
    if abs(ratio) > 2:
        print(fname)
    ratios.append(ratio)


0.0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.1
0.11
0.12
0.13
0.14
0.15
0.16
0.17
0.18
0.19
0.2
0.21
0.22
0.23
0.24
0.25
0.26
0.27
0.28
0.29
0.3
0.31
0.32
0.33
0.34
0.35
0.36
0.37
0.38
0.39
0.4
0.41
0.42
0.43
0.44
0.45
0.46
0.47
0.48
0.49
0.5
0.51
0.52
0.53
0.54
0.55
0.56
0.57
0.58
0.59
0.6
0.61
/maven_iuvs/stage/products/level1a/mvn_iuv_l1a_IPH1-cycle00023-mode060-fuv_20140410T141518_v00_r00.fits.gz
0.62
/maven_iuvs/stage/products/level1a/mvn_iuv_l1a_IPH2-cycle00203-mode060-muv_20140630T035343_v00_r00.fits.gz
0.63
0.64
0.65
0.66
0.67
0.68
0.69
0.7
0.71
0.72
0.73
0.74
0.75
0.76
0.77
0.78
0.79
0.8
0.81
0.82
0.83
0.84
0.85
0.86
0.87
0.88
0.89
0.9
0.91
0.92
0.93
0.94
0.95
0.96
0.97
0.98
0.99

In [184]:



Out[184]:
count    100.000000
mean       0.798660
std        1.421604
min       -9.102222
25%        1.000058
50%        1.000071
75%        1.002890
max        1.011358
dtype: float64

In [190]:
ds = IUVSReader('/maven_iuvs/stage/products/level1a/mvn_iuv_l1a_IPH1-cycle00023-mode060-fuv_20140410T141518_v00_r00.fits.gz')

In [196]:
ds.img_header['MIR_DEG']


Out[196]:
-0.025

In [193]:
df = ds.integration.data

In [194]:
df.get_value('MIRROR_DEG', 0)


Out[194]:
0.00274658203125

In [195]:
ratios


Out[195]:
[1.011358024691358,
 1.0000610388817677,
 0.9954787585092881,
 1.0000741804419213,
 1.0000610388817677,
 1.011358024691358,
 1.0000610388817677,
 1.011358024691358,
 1.011358024691358,
 1.0000956122562226,
 1.0000610388817677,
 0.9102222222222223,
 1.0004109076109076,
 1.011358024691358,
 1.0000426922721817,
 1.0000426922721817,
 1.0000610388817677,
 1.0057704112952732,
 1.0000610388817677,
 1.0000610388817677,
 1.0000737973674572,
 0.9102222222222223,
 1.011358024691358,
 1.011358024691358,
 1.000043535246735,
 1.0000426922721817,
 1.0000610388817677,
 0.9996287972144013,
 1.0000592110319881,
 1.011358024691358,
 1.0000610388817677,
 1.0002442002442002,
 1.0002442002442002,
 1.000454473374049,
 1.0000610388817677,
 1.0000610388817677,
 1.0000610388817677,
 1.0000411445128576,
 1.0008275487701441,
 1.011358024691358,
 0.99544339497682,
 0.9996287972144013,
 0.9996287972144013,
 1.0000610388817677,
 1.0000610388817677,
 1.000092264416315,
 1.000454473374049,
 1.011358024691358,
 1.000043535246735,
 1.011358024691358,
 1.000092264416315,
 1.011358024691358,
 1.0000610388817677,
 1.011358024691358,
 1.011358024691358,
 1.0005406643757158,
 1.0000610388817677,
 1.011358024691358,
 0.99544339497682,
 0.9991679126788259,
 1.011358024691358,
 -9.102222222222222,
 -9.102222222222222,
 1.0000516802366892,
 1.0000737973674572,
 1.0000956122562226,
 1.011358024691358,
 1.0024463223787168,
 1.000593928287826,
 1.0000737973674572,
 1.0000610388817677,
 1.000052647159285,
 1.0057704112952732,
 1.0000741804419213,
 1.0039033214324353,
 1.0000741804419213,
 1.0000674622750414,
 1.0000737973674572,
 1.011358024691358,
 1.0000426922721817,
 1.0000610388817677,
 1.000043535246735,
 1.0000610388817677,
 1.0057704112952732,
 0.9989009268795056,
 1.0000610388817677,
 1.0000674622750414,
 1.0000741804419213,
 1.0000610388817677,
 1.0057704112952732,
 1.000043535246735,
 1.0000610388817677,
 1.000052647159285,
 1.0000956122562226,
 1.011358024691358,
 1.011358024691358,
 1.0000426922721817,
 1.0000741804419213,
 1.002552419840335,
 1.000454473374049]

In [202]:
pd.Series(ratios).describe()


Out[202]:
count    100.000000
mean       0.798660
std        1.421604
min       -9.102222
25%        1.000058
50%        1.000071
75%        1.002890
max        1.011358
dtype: float64

In [203]:
pd.Series(ratios).median()


Out[203]:
1.0000706298212494