Source code for PseudoNetCDF.textfiles.shadoz_sonde

"""
Written to read files from http://croc.gsfc.nasa.gov/shadoz/
"""
from PseudoNetCDF import PseudoNetCDFFile
import re
import numpy as np
spaces = re.compile(r'\s{2,1000}')


[docs] def shadoz(inpath): datafile = open(inpath, 'r') datalines = datafile.read().split('\n') nmeta = int(datalines[0]) meta = dict([ [w.strip() for w in _l.split(': ')] for _l in datalines[1:nmeta - 2] ]) varline, unitline = datalines[nmeta - 2:nmeta] varnames = spaces.split(varline) units = spaces.split(unitline) data = np.fromstring( '\n'.join(datalines[nmeta:]), sep=' ').reshape(-1, len(varnames)) outf = PseudoNetCDFFile() outf.createDimension('time', data.shape[0]) missing = -9999 for k, v in meta.items(): setattr(outf, k, v) if k == 'Missing or bad values': missing = eval(v) 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[:], missing) return outf
if __name__ == '__main__': f = shadoz('/Users/barronh/Downloads/costarica_20160108_V05.1_R.dat')