Esempio n. 1
0
    def readTiltFile(self, fl, verb=True):
        """
        Tilt files only available at Summit
        given a list of files, reads the MMCR tilt files
        and returns an array of times/tilts for each file.
        returned array has size [4,N].
        the 4 values are: pitch mean, pitch std, roll mean, roll_std
        pitch is E-W, roll is N/S. pos pitch is W leaning down, pos roll is S leaning down
        """

        fl = au.aggregate(fl)
        d = []
        utTime = []
        for filename in fl:
            tstr = '%sT%s' % (filename.split('_')[0], filename.split('_')[1])
            utTime.append(datetime.strptime(tstr, '%Y%m%dT%H%M%S'))
            if not (os.path.isfile(self.dataDir + filename)):
                print "WARNING: Skipping %s: File missing" % filename
                d.append((nan, nan, nan, nan))
                continue
            elif os.path.getsize(self.dataDir + filename) == 0:
                print "WARNING: Skipping %s: File size 0" % filename
                d.append((nan, nan, nan, nan))
                continue
            else:
                if verb: print "Reading %s" % filename
                e = genfromtxt(self.dataDir + filename,
                               delimiter='',
                               skip_header=2,
                               dtype=None,
                               invalid_raise=False)
                d.append((e[0][1], e[0][2], e[1][1], e[1][2]))

        return (array(utTime), array(d))
Esempio n. 2
0
    def readSlowFile(self, fileList, verb=True):

        fileList = au.aggregate(fileList)
        fl = []
        for f in fileList:
            fl.append(f.replace('.tar.gz', '_slow.txt'))

        d = []
        for filename in fl:
            if not (os.path.isfile(self.dataDir + filename)):
                print "WARNING: Skipping %s: File missing" % filename
                continue
            elif os.path.getsize(self.dataDir + filename) == 0:
                print "WARNING: Skipping %s: File size 0" % filename
                continue
            else:
                if verb: print "Reading %s" % filename
                e = genfromtxt(self.dataDir + filename,
                               delimiter='',
                               skip_header=3,
                               skip_footer=1,
                               names=True,
                               dtype=None,
                               invalid_raise=False)
                d.append(e)
        if size(d) == 0: return 0, 0, 0, 0, 0, 0
        d = concatenate(d, axis=0)

        keys = d.dtype.fields.keys()
        utTime = []
        for tstr in d['TIME']:
            # try/except to deal with early season change of format
            try:
                utTime.append(datetime.strptime(tstr, '%Y-%m-%dT%H:%M:%S.%f'))
            except:
                utTime.append(datetime.strptime(tstr, '%Y-%m-%d:%H:%M:%S.%f'))

        tslow = d['TIMEWVR']
        if 'AZ' in keys:
            el = d['EL']
            az = d['AZ']
        else:
            az = zeros(size(utTime))
            el = zeros(size(utTime))
        tsrc0 = d['TSRC0']
        tsrc1 = d['TSRC1']
        tsrc2 = d['TSRC2']
        tsrc3 = d['TSRC3']
        tsrc = np.vstack([tsrc0, tsrc1, tsrc2,
                          tsrc3]).T  # array of N rows by 4 columns
        return (utTime, tslow, d, az, el, tsrc)
Esempio n. 3
0
    def readFastFile(self, fileList, verb=True):

        fileList = au.aggregate(fileList)
        nfiles = size(fileList)
        fl = []
        for f in fileList:
            fl.append(f.replace('.tar.gz', '_fast.txt'))

        d = []
        for k, filename in enumerate(fl):
            if not (os.path.isfile(self.dataDir + filename)):
                print "WARNING: Skipping %s: File missing" % filename
                continue
            elif os.path.getsize(self.dataDir + filename) == 0:
                print "WARNING: Skipping %s: File size 0" % filename
                continue
            else:
                if verb:
                    print "Reading %s (%d of %d)" % (filename, k + 1, nfiles)
                e = genfromtxt(
                    self.dataDir + filename,
                    delimiter='',
                    skip_header=3,
                    names=True,
                    dtype="S26,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f",
                    invalid_raise=False)

                d.append(e)
        d = concatenate(d, axis=0)

        tfast = d['TIMEWVR']
        elfast = d['EL']
        azfast = d['AZ']
        utfast = []
        for tstr in d['TIME']:
            utfast.append(datetime.strptime(tstr, '%Y-%m-%dT%H:%M:%S.%f'))
        utfast = array(utfast)
        return utfast, tfast, azfast, elfast, d
Esempio n. 4
0
    def readStatFile(self, fileList, verb=True):

        fileList = au.aggregate(fileList)
        fl = []
        for f in fileList:
            fl.append(f.replace('.tar.gz', '_stat.txt'))

        d = []
        for filename in fl:
            if not (os.path.isfile(self.dataDir + filename)):
                if verb: print "Skipping %s: File missing" % filename
                continue
            elif os.path.getsize(self.dataDir + filename) == 0:
                if verb: print "Skipping %s: File size 0" % filename
                continue
            if verb: print "Reading %s" % filename
            e = genfromtxt(self.dataDir + filename,
                           delimiter='',
                           skip_header=3,
                           names=True,
                           dtype=None,
                           invalid_raise=False)
            #e = genfromtxt(self.dataDir+filename, delimiter='',skip_header=3, names=True,dtype="S26,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f",invalid_raise = False)
            d.append(e)
        if size(d) == 0: return 0, 0
        d = hstack(d)

        keys = d.dtype.fields.keys()
        utTime = []
        for tstr in d['TIME']:
            # try/except to deal with early season change of format
            try:
                utTime.append(datetime.strptime(tstr, '%Y-%m-%dT%H:%M:%S.%f'))
            except:
                utTime.append(datetime.strptime(tstr, '%Y-%m-%d:%H:%M:%S.%f'))

        return (utTime, d)
Esempio n. 5
0
    def readWxFile(self, fileList, type='NOAA', verb=True):
        """
        Given a list of files, this will read all of them, 
        and produce a concatenated output ready to be plotted.
        """

        fileList = au.aggregate(fileList)
        if size(fileList) == 0:
            print "No Wx data during that time range"
            return (None, None)

        fl = []
        for f in fileList:
            ymd = f.split('_')[0]
            day = datetime.strptime(ymd, '%Y%m%d')
            fmtchg1 = datetime.strptime('20171205', '%Y%m%d')
            hms = f.split('_')[1]
            if self.unit == 'wvr1':
                ext = 'Spo'
            elif self.unit == 'wvr2':
                ext = 'Summit'
            filename = '%s_%s0000_Wx_%s_NOAA.txt' % (ymd, hms[0:2], ext)
            fl.append(filename)
        fl = unique(fl)

        wx = []
        for filename in fl:
            fn = self.dataDir + filename
            if (verb): print "Reading %s" % fn
            if (type == 'NOAA'):
                if os.path.isfile(fn):
                    if self.unit == 'wvr2':
                        e = genfromtxt(fn,
                                       dtype="S26,f,f,f,f,f,f",
                                       names=[
                                           'ut', 'wsms', 'wddeg', 'wsmsGust',
                                           'presMb', 'tempC', 'dewC'
                                       ],
                                       delimiter=',',
                                       invalid_raise=False)
                    elif self.unit == 'wvr1':
                        if day < fmtchg1:
                            e = genfromtxt(
                                fn,
                                dtype=
                                "S26,i,S26,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f",
                                names=[
                                    'ut', 'samp', 'station', 'wsms', 'wddeg',
                                    'wsmsGust', 'wsms10', 'wddeg10',
                                    'wsmsGust10', 'wsms27', 'wddeg27',
                                    'wsmsGust27', 'presMb', 'dewC', 'tempC',
                                    'tempC10', 'tempC27', 'logT', 'batV'
                                ],
                                delimiter=',',
                                invalid_raise=False)
                            e = au.rmfield(e, 'station')
                        else:
                            e = genfromtxt(fn,
                                           dtype="S26,i,S26,f,f,f,f,f,f,f,f",
                                           names=[
                                               'ut', 'samp', 'station', 'wsms',
                                               'wddeg', 'wsmsGust', 'presMb',
                                               'dewC', 'tempC', 'logT', 'batV'
                                           ],
                                           delimiter=',',
                                           invalid_raise=False)
                            e = au.rmfield(e, 'station')
                else:
                    print "WARNING: %s file missing. skipping... " % fn
                    continue
            else:
                e = genfromtxt(self.wxDir + filename,
                               delimiter='',
                               names=True,
                               invalid_raise=False)
            wx.append(e)

        if size(wx) == 0: return (None, None)
        wx = concatenate(wx, axis=0)

        # convert MJD into UT date
        utTime = []
        if (type == 'NOAA'):
            for ut in wx['ut']:
                utTime.append(datetime.strptime(ut, '"%Y-%m-%d %H:%M:%S"'))
        else:
            for mjd in wx['mjd']:
                ut = au.mjdToUT(mjd)
                utTime.append(datetime.strptime(ut, '%Y-%m-%d %H:%M:%S UT'))

        #### add Rh to wx array if not present
        if 'dewC' in wx.dtype.fields:
            wx_tmp = empty(wx.shape, dtype=wx.dtype.descr + [('rh', float)])
            for name in wx.dtype.names:
                wx_tmp[name] = wx[name]
            wx_tmp['rh'] = au.calcRh(wx['tempC'], wx['dewC'])
            wx = wx_tmp

        return (utTime, wx)
Esempio n. 6
0
    def readPIDTempsFile(self, fileList, verb=True):

        conv = {0: lambda s: datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%f')}
        fileList = au.aggregate(fileList)
        fl = []
        for f in fileList:
            fl.append(f.replace('.tar.gz', '_PIDTemps.txt'))

        d = []
        for filename in fl:
            date = filename[0:8]
            if not (os.path.isfile(self.dataDir + filename)):
                if verb: print "WARNING: Skipping %s: File missing" % filename
                continue
            elif os.path.getsize(self.dataDir + filename) == 0:
                if verb: print "WARNING: Skipping %s: File size 0" % filename
                continue
            else:
                if verb: print "Reading %s" % filename
                if self.unit == 'wvr1':
                    if datestr2num(date) < datestr2num('20161215'):
                        data = genfromtxt(
                            self.dataDir + filename,
                            delimiter='',
                            dtype=
                            'S26,i8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8',
                            invalid_raise=False,
                            converters=conv)
                    else:
                        data = genfromtxt(self.dataDir + filename,
                                          delimiter='',
                                          dtype=None,
                                          invalid_raise=False,
                                          skip_header=1,
                                          converters=conv)
                elif self.unit == 'wvr2':
                    data = genfromtxt(
                        self.dataDir + filename,
                        delimiter='',
                        dtype=
                        'S26,i8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,f8,i8,i8,i8,f8',
                        invalid_raise=False,
                        converters=conv)
                d.append(data)

        nfields = size(data.dtype.fields.keys())
        if size(d) == 0: return 0, 0, 0, 0, 0, 0
        d = concatenate(d, axis=0)

        utTime = d['f0']
        #for tstr in d['f0']:
        #    #try:
        #      utTime.append(datetime.strptime(tstr,'%Y-%m-%dT%H:%M:%S.%f'))
        #    #except:
        #    #    utTime.append(datetime.strptime(tstr,'%Y-%m-%dT%H:%M:%S.%f'))
        sample = arange(size(d))  # was 'f1'
        t0 = d['f2']
        input = d['f3']
        t1 = d['f4']
        t2 = d['f5']
        t3 = d['f6']
        t4 = d['f7']
        t5 = d['f8']
        t6 = d['f9']
        t7 = d['f10']
        t8 = d['f11']
        t9 = d['f12']
        t10 = d['f13']
        t11 = d['f14']

        if nfields > 16:  # added for WVR#2 in June 2016.
            outputDC = d['f15']
            stateRelayIn = d['f16']
            stateRelayOut = d['f17']
            stateRelayAz = d['f18']
            outputAz = d['f19']
            output = vstack([
                outputDC, stateRelayIn, stateRelayOut, stateRelayAz, outputAz
            ]).T
        else:
            output = vstack([d['f15']]).T
        temps = vstack([t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11]).T

        if nfields > 20:  # added Dec 2017 for WVR1 accelerometer
            tilt = vstack([d['f20'], d['f21'], d['f22'],
                           d['f23']]).T  #x,y,z,temp tilt
        else:
            tilt = None
        utwx, wx = self.readWxFile(fileList, verb=verb)
        if utwx == None:
            wxnew = None
        else:
            wxnew = au.interpDatetime(utTime, utwx, wx)

        return utTime, sample, wxnew, temps, input, output, tilt