In [37]:
def run_idl_script(script_file_name):
    import subprocess

    cmdstr = "{idlcmd} -quiet -e '.run {script}'".format(idlcmd=idlcmd, 
                                                         script=script_file_name)
    subp = subprocess.Popen(cmdstr, stderr=subprocess.PIPE, stdout=subprocess.PIPE,
                            shell = True)

    (idl_stdout, _) = subp.communicate()

    return idl_stdout

In [5]:
from subprocess import check_output

In [47]:
def idl_extract_analog(fname):
    idlcmdpath = '/tools/itt/idl83/idl83/bin/idl'
    lev0base = '/maven_iuvs/production/products/level0/'
    idlscriptcmd = 'iuvs_extract_analog, file="{base}{fname}"'.format(base=lev0base,
                                                                fname=fname)
    cmdlist = [idlcmdpath, '-quiet', '-e', idlscriptcmd]
    output = check_output(cmdlist)
    return output.decode()

In [59]:
path = io.get_data_path('l0')


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-59-f285d9bd4bfa> in <module>()
----> 1 path = io.get_data_path('l0')

/home/klay6683/src/iuvs/iuvs/io.py in get_data_path(level, stage)
     38     levelstring = dict(l0='level0', l1a='level1a', l1b='level1b')
     39     if stage:
---> 40         return stage / levelstring[level]
     41     else:
     42         return production / levelstring[level]

TypeError: unsupported operand type(s) for /: 'bool' and 'str'

In [58]:
io.l0_filenames('201412', iterator=False, stage=False)


/maven_iuvs/production/products/level0
Out[58]:
[]

In [48]:
print(idl_extract_analog('mvn_iuv_all_l0_20141201_v002.dat'))


generic: 
/home/klay6683/IUVS-ITF-SW_subversion/anc/spice/generic_kernels/
generic.tm: 
/home/klay6683/IUVS-ITF-SW_subversion/anc/spice/generic_kernels//generic.tm
mvn
/home/klay6683/IUVS-ITF-SW_subversion/anc/spice//mvn/
mvn.tm/home/klay6683/IUVS-ITF-SW_subversion/anc/spice//mvn//mvn.tm
pkt rate       873.41211pkts/sec
2015-06-26T22:39:16.000,IUVS_EXTRACT_ANALOG:139,1000 packets processed so far, of which 41 were analog, 11 hardware, 21 software, for a total of 73 housekeeping packets. 907 were image packets, leaving 20 unrecognized (4).
pkt rate       838.96240pkts/sec
2015-06-26T22:39:17.000,IUVS_EXTRACT_ANALOG:139,2000 packets processed so far, of which 108 were analog, 27 hardware, 54 software, for a total of 189 housekeeping packets. 1727 were image packets, leaving 84 unrecognized (4).
pkt rate       886.50782pkts/sec
2015-06-26T22:39:18.000,IUVS_EXTRACT_ANALOG:139,3000 packets processed so far, of which 120 were analog, 30 hardware, 60 software, for a total of 210 housekeeping packets. 2706 were image packets, leaving 84 unrecognized (4).
pkt rate       833.84597pkts/sec
2015-06-26T22:39:19.000,IUVS_EXTRACT_ANALOG:139,4000 packets processed so far, of which 231 were analog, 58 hardware, 116 software, for a total of 405 housekeeping packets. 3511 were image packets, leaving 84 unrecognized (4).
pkt rate       867.11587pkts/sec
2015-06-26T22:39:20.000,IUVS_EXTRACT_ANALOG:139,5000 packets processed so far, of which 250 were analog, 63 hardware, 125 software, for a total of 438 housekeeping packets. 4449 were image packets, leaving 113 unrecognized (4).
pkt rate       824.42066pkts/sec
2015-06-26T22:39:22.000,IUVS_EXTRACT_ANALOG:139,6000 packets processed so far, of which 442 were analog, 111 hardware, 221 software, for a total of 774 housekeeping packets. 4807 were image packets, leaving 419 unrecognized (4).
pkt rate       842.86402pkts/sec
2015-06-26T22:39:23.000,IUVS_EXTRACT_ANALOG:139,7000 packets processed so far, of which 454 were analog, 114 hardware, 227 software, for a total of 795 housekeeping packets. 5786 were image packets, leaving 419 unrecognized (4).
pkt rate       755.39563pkts/sec
2015-06-26T22:39:25.000,IUVS_EXTRACT_ANALOG:139,8000 packets processed so far, of which 806 were analog, 202 hardware, 403 software, for a total of 1411 housekeeping packets. 6169 were image packets, leaving 420 unrecognized (4).
pkt rate       678.68226pkts/sec
2015-06-26T22:39:28.000,IUVS_EXTRACT_ANALOG:139,9000 packets processed so far, of which 1078 were analog, 270 hardware, 540 software, for a total of 1888 housekeeping packets. 6692 were image packets, leaving 420 unrecognized (4).
pkt rate       698.05572pkts/sec
2015-06-26T22:39:29.000,IUVS_EXTRACT_ANALOG:139,10000 packets processed so far, of which 1089 were analog, 273 hardware, 545 software, for a total of 1907 housekeeping packets. 7673 were image packets, leaving 420 unrecognized (4).
pkt rate       685.58397pkts/sec
2015-06-26T22:39:31.000,IUVS_EXTRACT_ANALOG:139,11000 packets processed so far, of which 1218 were analog, 305 hardware, 610 software, for a total of 2133 housekeeping packets. 8445 were image packets, leaving 422 unrecognized (4).
pkt rate       654.97628pkts/sec
2015-06-26T22:39:33.000,IUVS_EXTRACT_ANALOG:139,12000 packets processed so far, of which 1414 were analog, 354 hardware, 708 software, for a total of 2476 housekeeping packets. 9101 were image packets, leaving 423 unrecognized (4).
pkt rate       669.84337pkts/sec
2015-06-26T22:39:34.000,IUVS_EXTRACT_ANALOG:139,13000 packets processed so far, of which 1425 were analog, 357 hardware, 713 software, for a total of 2495 housekeeping packets. 10070 were image packets, leaving 435 unrecognized (4).
pkt rate       649.74900pkts/sec
2015-06-26T22:39:36.000,IUVS_EXTRACT_ANALOG:139,14000 packets processed so far, of which 1625 were analog, 407 hardware, 813 software, for a total of 2845 housekeeping packets. 10397 were image packets, leaving 758 unrecognized (4).
pkt rate       664.05599pkts/sec
2015-06-26T22:39:37.000,IUVS_EXTRACT_ANALOG:139,15000 packets processed so far, of which 1637 were analog, 410 hardware, 819 software, for a total of 2866 housekeeping packets. 11376 were image packets, leaving 758 unrecognized (4).
pkt rate       650.83600pkts/sec
2015-06-26T22:39:39.000,IUVS_EXTRACT_ANALOG:139,16000 packets processed so far, of which 1763 were analog, 441 hardware, 882 software, for a total of 3086 housekeeping packets. 12154 were image packets, leaving 760 unrecognized (4).
pkt rate       649.09297pkts/sec
2015-06-26T22:39:41.000,IUVS_EXTRACT_ANALOG:139,17000 packets processed so far, of which 1837 were analog, 460 hardware, 919 software, for a total of 3216 housekeeping packets. 12942 were image packets, leaving 842 unrecognized (4).
pkt rate       658.32799pkts/sec
2015-06-26T22:39:42.000,IUVS_EXTRACT_ANALOG:139,18000 packets processed so far, of which 1850 were analog, 463 hardware, 926 software, for a total of 3239 housekeeping packets. 13919 were image packets, leaving 842 unrecognized (4).
pkt rate       640.28176pkts/sec
2015-06-26T22:39:44.000,IUVS_EXTRACT_ANALOG:139,19000 packets processed so far, of which 2023 were analog, 507 hardware, 1013 software, for a total of 3543 housekeeping packets. 14614 were image packets, leaving 843 unrecognized (4).
2015-06-26T22:39:48.000,IUVS_EXTRACT_ANALOG:144,Total of 19569 packets processed, of which 2349 were analog, 588 hardware, 1175 software, for a total of 4112 housekeeping packets. 14614 were image packets, leaving 843 unrecognized.


In [1]:
cd /maven_iuvs/production/products/housekeeping/level1a/


/iuvs/production/products/housekeeping/level1a

In [2]:
import glob
fnames = glob.glob('*.fits.gz')

In [3]:
from astropy.io import fits

In [4]:
hdulist = fits.open(fnames[0])

In [5]:
hdu = hdulist[0]

In [6]:
class HKReader(object):
    def __init__(self, fname):
        self.hdulist = fits.open(fname)
        for hdu in self.hdulist[1:]:
            name = hdu.header['EXTNAME']
            setattr(self, name+'_header', hdu.header)
            setattr(self, name, hdu.data)

In [7]:
hk = HKReader(fnames[0])

In [88]:
vals = hk.AnalogConv.dtype.fields.values()

In [94]:
dt = list(vals)[0]

In [99]:
str(dt[0])


Out[99]:
'>i2'

In [113]:
for i,item in enumerate(hk.AnalogConv.dtype.descr):
    if item[1][1] == 'i':
        print(i+1, item)


4 ('APID', '>i2')
6 ('SSC', '>i2')
7 ('DATA_LEN', '>i2')
8 ('SC_CLK_COARSE', '>i4')
9 ('SC_CLK_FINE', '>i2')
10 ('DFB_TERTIARY', '>i2')

In [ ]:
('TSCAL4', 1, '')
('TSCAL6', 1, '')
('TSCAL7', 1, '')
('TSCAL8', 1, '')
('TSCAL9', 1, '')
('TSCAL10', 1, '')
('TZERO4', 32768, '')
('TZERO6', 32768, '')
('TZERO7', 32768, '')
('TZERO8', 2147483648, '')
('TZERO9', 32768, '')
('TZERO10', 32768, '')

In [76]:
hk.AnalogConv_header.cards


Out[76]:
('XTENSION', 'BINTABLE', 'Binary table written by MWRFITS v1.11')
('BITPIX', 8, 'Required value')
('NAXIS', 2, 'Required value')
('NAXIS1', 387, 'Number of bytes per row')
('NAXIS2', 2880, 'Number of rows')
('PCOUNT', 0, 'Normally 0 (no varying arrays)')
('GCOUNT', 1, 'Required value')
('TFIELDS', 76, 'Number of columns in table')
('COMMENT', '', '')
('COMMENT', ' *** End of mandatory fields ***', '')
('COMMENT', '', '')
('EXTNAME', 'AnalogConv', '')
('COMMENT', '', '')
('COMMENT', ' *** Column names ***', '')
('COMMENT', '', '')
('TTYPE1', 'VER', '')
('TTYPE2', 'TYPE', '')
('TTYPE3', 'SCND_HDR', '')
('TTYPE4', 'APID', '')
('TTYPE5', 'GRP_FLG', '')
('TTYPE6', 'SSC', '')
('TTYPE7', 'DATA_LEN', '')
('TTYPE8', 'SC_CLK_COARSE', '')
('TTYPE9', 'SC_CLK_FINE', '')
('TTYPE10', 'DFB_TERTIARY', '')
('TTYPE11', 'ANA_CHECKSUM', '')
('TTYPE12', 'FUV_CHIP_TEMP_C', '')
('TTYPE13', 'FUV_P3_3_V_ADC_V', '')
('TTYPE14', 'FUV_P3_3_V_PIX_V', '')
('TTYPE15', 'P5_V_DET_MON_V', '')
('TTYPE16', 'P3_3_V_DET_MON_V', '')
('TTYPE17', 'MUV_CHIP_TEMP_C', '')
('TTYPE18', 'MUV_P3_3_V_ADC_V', '')
('TTYPE19', 'MUV_P3_3_V_PIX_V', '')
('TTYPE20', 'P1_5_V_FPGA_V', '')
('TTYPE21', 'P2_V_MON_V', '')
('TTYPE22', 'POWER_BD1_TEMP_C', '')
('TTYPE23', 'POWER_BD2_TEMP_C', '')
('TTYPE24', 'PROC_BD_TEMP_C', '')
('TTYPE25', 'FUV_DET_TEMP_C', '')
('TTYPE26', 'FUV_INT_TEMP_C', '')
('TTYPE27', 'MUV_DET_TEMP_C', '')
('TTYPE28', 'MUV_INT_TEMP_C', '')
('TTYPE29', 'ZONE_1_HTR_TEMP_C', '')
('TTYPE30', 'ZONE_2_HTR_TEMP_C', '')
('TTYPE31', 'OP_1_HTR_TEMP_C', '')
('TTYPE32', 'OP_2_HTR_TEMP_C', '')
('TTYPE33', 'IUVS_1_TEMP_C', '')
('TTYPE34', 'IUVS_2_TEMP_C', '')
('TTYPE35', 'IUVS_3_TEMP_C', '')
('TTYPE36', 'IUVS_4_TEMP_C', '')
('TTYPE37', 'IUVS_5_TEMP_C', '')
('TTYPE38', 'GRAT_MOT_TEMP_C', '')
('TTYPE39', 'SCAN_MOT_TEMP_C', '')
('TTYPE40', 'HV_POWR_TEMP_C', '')
('TTYPE41', 'ANA_M37_REF_A_C', '')
('TTYPE42', 'ANA_ZERO_REF_A_C', '')
('TTYPE43', 'ANA_P40_REG_A_C', '')
('TTYPE44', 'ANA_M37_REF_B_C', '')
('TTYPE45', 'ANA_ZERO_REF_B_C', '')
('TTYPE46', 'ANA_P40_REG_B_C', '')
('TTYPE47', 'P16_5_V_MON_V', '')
('TTYPE48', 'M16_5_V_MON_V', '')
('TTYPE49', 'P5_6_V_MON_V', '')
('TTYPE50', 'M5_6_V_MON_V', '')
('TTYPE51', 'P3_9_V_MON_V', '')
('TTYPE52', 'P2_2_V_MON_V', '')
('TTYPE53', 'P15_V_MON_V', '')
('TTYPE54', 'M15_V_MON_V', '')
('TTYPE55', 'P5_V_MON_V', '')
('TTYPE56', 'M5_V_MON_V', '')
('TTYPE57', 'P3_3_V_MON_V', '')
('TTYPE58', 'P1_5_V_MON_V', '')
('TTYPE59', 'NAD_BOS_MON_V', '')
('TTYPE60', 'LIM_BOS_MON_V', '')
('TTYPE61', 'FUV_MCP_V_MON_V', '')
('TTYPE62', 'FUV_PHOS_V_MON_V', '')
('TTYPE63', 'MUV_MCP_V_MON_V', '')
('TTYPE64', 'MUV_PHOS_V_MON_V', '')
('TTYPE65', 'P15_I_MON_MA', '')
('TTYPE66', 'M15_I_MON_MA', '')
('TTYPE67', 'P5_I_MON_MA', '')
('TTYPE68', 'M5_I_MON_MA', '')
('TTYPE69', 'P3_9_I_MON_MA', '')
('TTYPE70', 'P2_2_I_MON_MA', '')
('TTYPE71', 'FFLHV_I_MON_MA', '')
('TTYPE72', 'ENC_IND_MON_DN', '')
('TTYPE73', 'ENC_A_MON_DN', '')
('TTYPE74', 'ENC_B_MON_DN', '')
('TTYPE75', 'ANA_TEST_A_V', '')
('TTYPE76', 'ANA_TEST_B_V', '')
('COMMENT', '', '')
('COMMENT', ' *** Column formats ***', '')
('COMMENT', '', '')
('TFORM1', 'B', '')
('TFORM2', 'B', '')
('TFORM3', 'B', '')
('TFORM4', 'I', '')
('TFORM5', 'B', '')
('TFORM6', 'I', '')
('TFORM7', 'I', '')
('TFORM8', 'J', '')
('TFORM9', 'I', '')
('TFORM10', 'I', '')
('TFORM11', 'B', '')
('TFORM12', 'D', '')
('TFORM13', 'E', '')
('TFORM14', 'E', '')
('TFORM15', 'E', '')
('TFORM16', 'E', '')
('TFORM17', 'D', '')
('TFORM18', 'E', '')
('TFORM19', 'E', '')
('TFORM20', 'E', '')
('TFORM21', 'E', '')
('TFORM22', 'D', '')
('TFORM23', 'D', '')
('TFORM24', 'D', '')
('TFORM25', 'D', '')
('TFORM26', 'D', '')
('TFORM27', 'D', '')
('TFORM28', 'D', '')
('TFORM29', 'D', '')
('TFORM30', 'D', '')
('TFORM31', 'D', '')
('TFORM32', 'D', '')
('TFORM33', 'D', '')
('TFORM34', 'D', '')
('TFORM35', 'D', '')
('TFORM36', 'D', '')
('TFORM37', 'D', '')
('TFORM38', 'D', '')
('TFORM39', 'D', '')
('TFORM40', 'D', '')
('TFORM41', 'D', '')
('TFORM42', 'D', '')
('TFORM43', 'D', '')
('TFORM44', 'D', '')
('TFORM45', 'D', '')
('TFORM46', 'D', '')
('TFORM47', 'E', '')
('TFORM48', 'E', '')
('TFORM49', 'E', '')
('TFORM50', 'E', '')
('TFORM51', 'E', '')
('TFORM52', 'E', '')
('TFORM53', 'E', '')
('TFORM54', 'E', '')
('TFORM55', 'E', '')
('TFORM56', 'E', '')
('TFORM57', 'E', '')
('TFORM58', 'E', '')
('TFORM59', 'E', '')
('TFORM60', 'E', '')
('TFORM61', 'E', '')
('TFORM62', 'E', '')
('TFORM63', 'E', '')
('TFORM64', 'E', '')
('TFORM65', 'E', '')
('TFORM66', 'E', '')
('TFORM67', 'E', '')
('TFORM68', 'E', '')
('TFORM69', 'E', '')
('TFORM70', 'E', '')
('TFORM71', 'E', '')
('TFORM72', 'E', '')
('TFORM73', 'E', '')
('TFORM74', 'E', '')
('TFORM75', 'E', '')
('TFORM76', 'E', '')
('COMMENT', '', '')
('COMMENT', ' *** Unsigned integer column scalings *', '')
('COMMENT', '', '')
('TSCAL4', 1, '')
('TSCAL6', 1, '')
('TSCAL7', 1, '')
('TSCAL8', 1, '')
('TSCAL9', 1, '')
('TSCAL10', 1, '')
('TZERO4', 32768, '')
('TZERO6', 32768, '')
('TZERO7', 32768, '')
('TZERO8', 2147483648, '')
('TZERO9', 32768, '')
('TZERO10', 32768, '')

In [64]:
temp_cols = [value for value in hk.AnalogConv_header.values() if 'temp' in str(value).lower()]
temp_cols.extend('sc_clk_coarse sc_clk_fine'.upper().split())
time_cols = 'sc_clk_coarse sc_clk_fine'.upper().split()

In [5]:
d = {}
for col in temp_cols:
    d[col] = hk.AnalogConv[col]


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-5-f9643ada8a59> in <module>()
      1 d = {}
----> 2 for col in temp_cols:
      3     data = hk.AnalogConv[col]
      4     sys_byteorder = ('>', '<')[sys.byteorder == 'little']
      5     if data.dtype.byteorder not in ('=', sys_byteorder):

NameError: name 'temp_cols' is not defined

In [62]:
df = pd.DataFrame(d)

In [63]:
df.info()


<class 'pandas.core.frame.DataFrame'>
Int64Index: 2880 entries, 0 to 2879
Data columns (total 23 columns):
FUV_CHIP_TEMP_C      2880 non-null float64
FUV_DET_TEMP_C       2880 non-null float64
FUV_INT_TEMP_C       2880 non-null float64
GRAT_MOT_TEMP_C      2880 non-null float64
HV_POWR_TEMP_C       2880 non-null float64
IUVS_1_TEMP_C        2880 non-null float64
IUVS_2_TEMP_C        2880 non-null float64
IUVS_3_TEMP_C        2880 non-null float64
IUVS_4_TEMP_C        2880 non-null float64
IUVS_5_TEMP_C        2880 non-null float64
MUV_CHIP_TEMP_C      2880 non-null float64
MUV_DET_TEMP_C       2880 non-null float64
MUV_INT_TEMP_C       2880 non-null float64
OP_1_HTR_TEMP_C      2880 non-null float64
OP_2_HTR_TEMP_C      2880 non-null float64
POWER_BD1_TEMP_C     2880 non-null float64
POWER_BD2_TEMP_C     2880 non-null float64
PROC_BD_TEMP_C       2880 non-null float64
SCAN_MOT_TEMP_C      2880 non-null float64
SC_CLK_COARSE        2880 non-null float64
SC_CLK_FINE          2880 non-null float64
ZONE_1_HTR_TEMP_C    2880 non-null float64
ZONE_2_HTR_TEMP_C    2880 non-null float64
dtypes: float64(23)
memory usage: 540.0 KB

In [69]:
%matplotlib nbagg

In [73]:
import seaborn as sns

In [74]:
sns.set_context('talk')

In [75]:
df.filter(regex='IUVS').plot()


Out[75]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f0290387b00>

In [ ]: