Source code for PseudoNetCDF.textfiles.esrl_sonde

"""
NOAA/GMD sounding data file produced on 2015/02/02 22:04:08 GMT ...
               Header lines = 45
               Data columns = 21
              Flight number = BL049
                 Date [GMT] = 03-01-1992
                 Time [GMT] = 18:35:21
                   Location = Boulder, CO
                  Longitude = -105.25000
                   Latitude = 40.00000
       Launch altitude (km) = 1.743
      Surface pressure (mb) = 826.790
  Surface temperature (deg) = 6.870
       Surface humidity (%) = 18.900
         Turn altitude (km) = 30.699
         Turn pressure (mb) = 10.20
          Radiosonde number = 8815949
     Vaisala humicap sensor = A
       Radiation correction = Yes
     Pressure sensor offset = 0.000
                 A/D System = 12 bit Tmax
Radiosonde Total Col. Water = 2.322
            Instrument Type = Ozone Sonde
       Original File Source = unknown
         Ozone sonde number = 5A8087
                   Solution = 1%
Oltmans solution correction = Yes
             Oltmans term A = 1.0000
             Oltmans term B = 0.4000
   Total ozone column (CMR) = 283 (41)
  Total ozone column (SBUV) = 289 (47)
  Total ozone stop pressure = 10.28
  Time (sec) to pump 100 ml = 28.230
    Dry flowrate correction = 2.60
    Background current (uA) = 0.071
               Coefficients =
       Pump coefficient pc0 = 0.5955
                        pc1 = 0.5125
                        pc2 = -0.2353
                        pc3 = 0.0824
       Pressure data source = Radiosonde Pressure
       Altitude data source = Radiosonde Geopot Altitude
   Geo alt anchoring method = First/Launch Row Set to Launch Altitude

      Time,     Press,      Praw,       Alt,     Tcorr,      Temp,..."""

# Time, Press, Praw, Alt, Tcorr, Temp, Traw, Theta, RH, RHraw, TFp V,
# IPW V, TVaisI, O3 Cell I, O3 P, O3 Mr, T Pump, O3Bat, I Pump,
# Total Column O3, Total w/ Extrap O3


from PseudoNetCDF import PseudoNetCDFFile
import re
import numpy as np
spaces = re.compile(r',\s{0,1000}')


[docs] def skysonde1sec(inpath): datafile = open(inpath, 'r') datalines = datafile.read().split('\n') nmeta = int(datalines[1].split(' = ')[1]) meta = dict([[w.strip() for w in line.split(' = ')] for line in datalines[1:nmeta - 2] if line != '']) varline, unitline = datalines[nmeta - 2:nmeta] varnames = [vn.strip() for vn in spaces.split(varline)] units = [u.strip()[1:-1].strip() for u in spaces.split(unitline)] print(units) data = np.fromstring( ', '.join(datalines[nmeta:]), sep=',').reshape(-1, len(varnames)) outf = PseudoNetCDFFile() for pk, pv in meta.items(): setattr(outf, pk, pv) outf.createDimension('time', data.shape[0]) for varname, unit, vals in zip(varnames, units, data.T): var = outf.createVariable(varname.replace(' ', '_'), 'f', ('time',)) var.units = unit var.standard_name = varname var[:] = np.ma.masked_values(vals[:], 99999) return outf
if __name__ == '__main__': f = skysonde1sec('/Users/barronh/Downloads/skysonde1sec.txt')