def __repr__(self): from PseudoNetCDF.pncdump import pncdump from io import StringIO out = StringIO() pncdump(self, header=True, outfile=out) out.seek(0, 0) return out.read()
def __repr__(self): from PseudoNetCDF.pncdump import pncdump import sys if sys.version_info.major == 3: from io import StringIO else: from StringIO import StringIO out = StringIO() pncdump(self, header = True, outfile = out) out.seek(0, 0) return out.read()
""" Parameters ---------- ioapifile : file with IOAPI metadata """ nsteps = len(ioapifile.dimensions['TSTEP']) try: nrows = len(ioapifile.dimensions['ROW']) ncols = len(ioapifile.dimensions['COL']) except Exception: nrows = ioapifile.NROWS ncols = ioapifile.NCOLS # interp to ioapi vglvls out = self.interpSigma(vglvls=ioapifile.VGLVLS, vgtop=ioapifile.VGTOP) # repeat to grid out = out.toPerim(ncols, nrows, nsteps) for pk in ioapifile.ncattrs(): if pk in ('VAR-LIST', 'FILEDESC', 'HISTORY'): continue setattr(out, pk, getattr(ioapifile, pk)) out.updatemeta() return out if __name__ == '__main__': po = bcon_profile('testdata/profile.dat') from PseudoNetCDF.pncdump import pncdump pncdump(po) print(po.variables['ATOL1J'].shape) print(po.variables['ATOL1J'].dimensions)
def __init__(self, ncffile, options): master = self.root = Tk() self.ncffile = ncffile self.options = options self.plotted_variables = set() frame = Frame(master) frame.grid(row = 0) codeframe = Frame(master) codeframe.grid(row = 1) metaframe = Frame(master) metaframe.grid(row = 2) goframe = Frame(frame) goframe.grid(column = 3, row = 1) var_label = Label(frame, text = 'Select Variable') var_label.grid(column = 0, row = 0) var_scrollbar = Scrollbar(frame, orient = VERTICAL) var_scrollbar.grid(column = 1, row = 1, sticky = N + S) self.var = Listbox(frame, selectmode = EXTENDED, exportselection = 0, yscrollcommand = var_scrollbar.set) self.var.grid(column = 0, row = 1) var_scrollbar.config(command = self.var.yview) what_to_do = Label(frame, text = 'Execute') what_to_do.grid(column = 2, row = 0) self.method_list = Listbox(frame, selectmode = SINGLE, exportselection = 0) self.method_list.grid(column = 2, row = 1) self.pre_txt = StringVar() pre_label = Label(codeframe, text = 'Before any figures, execute code') self.pre_txt.set(_pre_code) pre_label.grid(row = 2, sticky = 'W') self.pre = Entry(codeframe, width = 120, textvariable = self.pre_txt) self.pre.grid(row =3, sticky = 'E') self.before_txt = StringVar() self.before_txt.set(_before_code) before_label = Label(codeframe, text = 'Before each figure, execute code') before_label.grid(row = 4, sticky = 'W') self.before = Entry(codeframe, width = 120, textvariable = self.before_txt) self.before.grid(row =5, sticky = 'E') self.after_txt = StringVar() self.after_txt.set(_after_code) after_label = Label(codeframe, text = 'After each figure, execute code') after_label.grid(row = 6, sticky = 'W') self.after = Entry(codeframe, width = 120, textvariable = self.after_txt) self.after.grid(row =7, sticky = 'E') self.post_txt = StringVar() self.post_txt.set(_post_code) post_label = Label(codeframe, text = 'After all figures, execute code') post_label.grid(row = 8, sticky = 'W') self.post = Entry(codeframe, width = 120, textvariable = self.post_txt) self.post.grid(row = 9, sticky = 'E') options_label = Label(goframe, text = 'Options:') options_label.grid(column = 0, row = 1, sticky = 'W') self.logscale = IntVar() self.logscale.set(0) c = Checkbutton(goframe, text = "log-scale?", variable = self.logscale) c.grid(column = 0, row = 2, sticky = 'W') self.coastlines = IntVar() self.coastlines.set(_coastlines_opt) coastlines = Checkbutton(goframe, text = "coastlines?", variable = self.coastlines, justify = LEFT) coastlines.grid(column = 0, row = 3, sticky = 'W') self.countries = IntVar() self.countries.set(_countries_opt) countries = Checkbutton(goframe, text = "countries?", variable = self.countries, justify = LEFT) countries.grid(column = 0, row = 4, sticky = 'W') self.states = IntVar() self.states.set(_states_opt) states = Checkbutton(goframe, text = "states?", variable = self.states, justify = LEFT) states.grid(column = 0, row = 5, sticky = 'W') self.counties = IntVar() self.counties.set(_counties_opt) counties = Checkbutton(goframe, text = "counties?", variable = self.counties, justify = LEFT) counties.grid(column = 0, row = 6, sticky = 'W') self.execute_button = Button(goframe, text = "Make Figure", command = self.execute) self.execute_button.grid(row = 0, column = 0, sticky = 'W') self.methods = ['mapplot', 'presslat', 'presslon', 'time-lat', 'profile', 'timeseries', 'pressx', 'tileplot', 'plot'] method_labels= ['lat-lon', 'press-lat', 'press-lon', 'time-lat', 'Vertical Profile', 'Time Series', 'press-? (2-D)', 'Tile Plot (2-D)', 'Plot (1-D)'] for method in method_labels: self.method_list.insert(END, method) var_keys = [k for k, v in self.ncffile.variables.items() if k not in ('time', 'latitude', 'longitude', 'latitude_bounds', 'longitude_bounds', 'time_bounds', 'tau0', 'tau1', 'TFLAG')] var_keys.sort() self.vars = [] for spc in var_keys: self.var.insert(END, spc) self.vars.append(spc) meta_label = Label(metaframe, text = 'Common Data Language Header:') meta_label.grid(column = 0, row = 0, sticky = 'W') meta_scrollbar = Scrollbar(metaframe, orient = VERTICAL) meta_scrollbar.grid(column = 1, row = 1, sticky = N + S) self.meta = Text(metaframe, height=10, width=118, bg='white', relief='flat', yscrollcommand = meta_scrollbar.set) self.meta.grid(column = 0, row = 1, sticky = 'W') from PseudoNetCDF.pncdump import pncdump try: from StringIO import StringIO except ImportError: from io import StringIO pdump = StringIO("") try: name = ', '.join(options.ifile) except: name = 'ifile' pncdump(self.ncffile, header = True, outfile = pdump, ) pdump.seek(0, 0) self.meta.insert(END, pdump.read()) self.meta.config(state=DISABLED) help = Button(goframe, text = 'Help', command = self.help) help.grid(column = 0, row = 7) quit = Button(goframe, text = 'Quit', command = self.quit) quit.grid(column = 0, row = 8) master.mainloop()
shape = outf.createVariable("SHAPE", "i", ("TSTEP", "LAY", "ROW", "COL")) shape.__dict__.update(dict(units = "ON/OFF", var_desc = "SHAPE".ljust(16), long_name = "SHAPE".ljust(16))) shape[:] = 1 irr = outf.createVariable("IRR", "f", ("TSTEP", "RXN")) irr.__dict__.update(dict(units = pr_tmp.units, var_desc = "IRR".ljust(16), long_name = "IRR".ljust(16))) ipr = outf.createVariable("IPR", "f", ("TSTEP", "SPECIES", "PROCESS")) irr.__dict__.update(dict(units = pr_tmp.units, var_desc = "IPR".ljust(16), long_name = "IPR".ljust(16))) for rr, var in zip(rr_keys,irr.swapaxes(0,1)): var[:] = irrf.variables[rr][:][idx] for prc, prcvar in zip(prcs,ipr.swapaxes(0,2)): for spc, spcvar in zip(spcs,prcvar): try: spcvar[:] = iprf.variables['_'.join([prc,spc])][:][idx] except KeyError as es: warn(str(es)) return outf if __name__ == '__main__': from PseudoNetCDF.pncdump import pncdump from PseudoNetCDF.cmaqfiles.pa import mrgidx import sys x = ', '.join(sys.argv[1:]) try: pncdump(eval('mrgidx(%s)' % (x,)), name = mrgidx) except: print("\nUsage: python -m PseudoNetCDF.cmaqfiles.pa \"ipr_paths, irr_paths, idx\"\n ipr_paths - a single string or list of strings\n irr_paths - a single string or list of strings\n idx - 4D numpy slice indexes a time series\n\n\nExample:\n $ python -m PseudoNetCDF.cmaqfiles.pa \"['CMAQ_IPR1.nc','CMAQ_IPR2.nc'], 'CMAQ_IRR.nc', (slice(None),0,1,1)\"", file = sys.stderr)
def __init__(self, ncffile, options): try: from Tkinter import Checkbutton, Frame, Label, Scrollbar from Tkinter import Listbox, Button, IntVar, Tk, VERTICAL from Tkinter import EXTENDED, END, N, S, SINGLE, Entry from Tkinter import StringVar, Text, DISABLED, LEFT except Exception: try: from tkinter import Checkbutton, Frame, Label, Scrollbar from tkinter import Listbox, Button, IntVar, Tk, VERTICAL from tkinter import EXTENDED, END, N, S, SINGLE, Entry from tkinter import StringVar, Text, DISABLED, LEFT except Exception: warn('tkinter unavailable') master = self.root = Tk() self.ncffile = ncffile self.options = options self.plotted_variables = set() frame = Frame(master) frame.grid(row=0) codeframe = Frame(master) codeframe.grid(row=1) metaframe = Frame(master) metaframe.grid(row=2) goframe = Frame(frame) goframe.grid(column=3, row=1) var_label = Label(frame, text='Select Variable') var_label.grid(column=0, row=0) var_scrollbar = Scrollbar(frame, orient=VERTICAL) var_scrollbar.grid(column=1, row=1, sticky=N + S) self.var = Listbox(frame, selectmode=EXTENDED, exportselection=0, yscrollcommand=var_scrollbar.set) self.var.grid(column=0, row=1) var_scrollbar.config(command=self.var.yview) what_to_do = Label(frame, text='Execute') what_to_do.grid(column=2, row=0) self.method_list = Listbox(frame, selectmode=SINGLE, exportselection=0) self.method_list.grid(column=2, row=1) self.pre_txt = StringVar() pre_label = Label(codeframe, text='Before any figures, execute code') self.pre_txt.set(_pre_code) pre_label.grid(row=2, sticky='W') self.pre = Entry(codeframe, width=120, textvariable=self.pre_txt) self.pre.grid(row=3, sticky='E') self.before_txt = StringVar() self.before_txt.set(_before_code) before_label = Label( codeframe, text='Before each figure, execute code') before_label.grid(row=4, sticky='W') self.before = Entry(codeframe, width=120, textvariable=self.before_txt) self.before.grid(row=5, sticky='E') self.after_txt = StringVar() self.after_txt.set(_after_code) after_label = Label(codeframe, text='After each figure, execute code') after_label.grid(row=6, sticky='W') self.after = Entry(codeframe, width=120, textvariable=self.after_txt) self.after.grid(row=7, sticky='E') self.post_txt = StringVar() self.post_txt.set(_post_code) post_label = Label(codeframe, text='After all figures, execute code') post_label.grid(row=8, sticky='W') self.post = Entry(codeframe, width=120, textvariable=self.post_txt) self.post.grid(row=9, sticky='E') options_label = Label(goframe, text='Options:') options_label.grid(column=0, row=1, sticky='W') self.logscale = IntVar() self.logscale.set(0) c = Checkbutton(goframe, text="log-scale?", variable=self.logscale) c.grid(column=0, row=2, sticky='W') self.coastlines = IntVar() self.coastlines.set(_coastlines_opt) coastlines = Checkbutton( goframe, text="coastlines?", variable=self.coastlines, justify=LEFT) coastlines.grid(column=0, row=3, sticky='W') self.countries = IntVar() self.countries.set(_countries_opt) countries = Checkbutton( goframe, text="countries?", variable=self.countries, justify=LEFT) countries.grid(column=0, row=4, sticky='W') self.states = IntVar() self.states.set(_states_opt) states = Checkbutton(goframe, text="states?", variable=self.states, justify=LEFT) states.grid(column=0, row=5, sticky='W') self.counties = IntVar() self.counties.set(_counties_opt) counties = Checkbutton(goframe, text="counties?", variable=self.counties, justify=LEFT) counties.grid(column=0, row=6, sticky='W') self.execute_button = Button( goframe, text="Make Figure", command=self.execute) self.execute_button.grid(row=0, column=0, sticky='W') self.methods = ['mapplot', 'presslat', 'presslon', 'time-lat', 'profile', 'timeseries', 'pressx', 'tileplot', 'plot'] method_labels = ['lat-lon', 'press-lat', 'press-lon', 'time-lat', 'Vertical Profile', 'Time Series', 'press-? (2-D)', 'Tile Plot (2-D)', 'Plot (1-D)'] for method in method_labels: self.method_list.insert(END, method) var_keys = [k for k, v in self.ncffile.variables.items() if k not in _coordkeys] var_keys.sort() self.vars = [] for spc in var_keys: self.var.insert(END, spc) self.vars.append(spc) meta_label = Label(metaframe, text='Common Data Language Header:') meta_label.grid(column=0, row=0, sticky='W') meta_scrollbar = Scrollbar(metaframe, orient=VERTICAL) meta_scrollbar.grid(column=1, row=1, sticky=N + S) self.meta = Text(metaframe, height=10, width=118, bg='white', relief='flat', yscrollcommand=meta_scrollbar.set) self.meta.grid(column=0, row=1, sticky='W') from PseudoNetCDF.pncdump import pncdump try: from StringIO import StringIO except ImportError: from io import StringIO pdump = StringIO("") pncdump(self.ncffile, header=True, outfile=pdump, ) pdump.seek(0, 0) self.meta.insert(END, pdump.read()) self.meta.config(state=DISABLED) help = Button(goframe, text='Help', command=self.help) help.grid(column=0, row=7) quit = Button(goframe, text='Quit', command=self.quit) quit.grid(column=0, row=8) master.mainloop()
ks = keys[1:] self.VGLVLS = self.variables["sigma"] self.VGTOP = 5000 for k in ks: try: assert (np.char.strip(data[k]["name"]) == profile_spcs).all() assert data[k].dtype == data_type assert data[k].dtype == data_type except AssertionError: raise IOError("File is corrupt or inconsistent") for w, s, e, n in zip(data["west"], data["south"], data["east"], data["north"]): assert w[0] == s[0] and e[0] == n[0] and n[0] == s[0] self.createVariable( w[0].strip(), "f", ("sigma-mid", "south_east_north_west"), units="None", values=np.array(map(lambda x: tuple(x)[1:], [s, e, n, w])).T, long_name=w[0].ljust(16), var_desc=w[0].ljust(16), ) if __name__ == "__main__": po = profile("testdata/profile.dat") from PseudoNetCDF.pncdump import pncdump pncdump(po) print(po.variables["ATOL1J"].shape) print(po.variables["ATOL1J"].dimensions)
irr.__dict__.update( dict(units=pr_tmp.units, var_desc="IPR".ljust(16), long_name="IPR".ljust(16))) for rr, var in zip(rr_keys, irr.swapaxes(0, 1)): var[:] = irrf.variables[rr][:][idx] for prc, prcvar in zip(prcs, ipr.swapaxes(0, 2)): for spc, spcvar in zip(spcs, prcvar): try: spcvar[:] = iprf.variables['_'.join([prc, spc])][:][idx] except KeyError as es: warn(str(es)) return outf if __name__ == '__main__': from PseudoNetCDF.pncdump import pncdump from PseudoNetCDF.cmaqfiles.pa import mrgidx import sys x = ', '.join(sys.argv[1:]) try: pncdump(eval('mrgidx(%s)' % (x, )), name=mrgidx) except: print( "\nUsage: python -m PseudoNetCDF.cmaqfiles.pa \"ipr_paths, irr_paths, idx\"\n ipr_paths - a single string or list of strings\n irr_paths - a single string or list of strings\n idx - 4D numpy slice indexes a time series\n\n\nExample:\n $ python -m PseudoNetCDF.cmaqfiles.pa \"['CMAQ_IPR1.nc','CMAQ_IPR2.nc'], 'CMAQ_IRR.nc', (slice(None),0,1,1)\"", file=sys.stderr)
var.units = 'degrees E' lon = var[:] = np.arange(blon, elon + lonstep, lonstep) var = outfile.createVariable('longitude_bounds', 'f', ('longitude', 'nv')) var.units = 'degrees E' var[:, 0] = lon - lonstep / 2. var[:, 1] = lon + lonstep / 2. var = outfile.createVariable('ozone', 'f', ('latitude', 'longitude'), missing_value=999) var.units = 'matm-cm' var.long_name = var.var_desc = 'ozone'.ljust(16) var[:] = np.ma.masked_values( np.array([i for i in datablock], dtype='S1').view('S3').astype('i'), var.missing_value).reshape(nlats, nlons) return outfile class tomsl3(PseudoNetCDFFile): def __init__(self, path): cdtoms(path, self) if __name__ == '__main__': from PseudoNetCDF.pncdump import pncdump pfile = cdtoms('test.txt') pncdump(pfile) print(pfile.variables['ozone'][2, 3])
datalines[i] = line[1:-1] else: data, lat = line.split('lat =') datalines[i] = data[1:-1].rstrip() + '\n' lats.append(lat.strip()) n = 3 datalines = ''.join(datalines).split('\n') var = outfile.createVariable('ozone', 'f', ('LAT', 'LON')) var.units = 'matm-cm' var.long_name = var.var_desc = 'ozone'.ljust(16) var[:] = array([[eval(s[n*i:n*i+n]) for i in range(len(s)/n)] for s in datalines if s.strip() != ''], 'f') var = outfile.createVariable('lat', 'f', ('LAT',)) var.units = 'degrees N' var[:] = arange(blat, elat+outfile.latbinsize, outfile.latbinsize) var = outfile.createVariable('lon', 'f', ('LON',)) var.units = 'degrees E' var[:] = arange(blon, elon+outfile.lonbinsize, outfile.lonbinsize) return outfile if __name__ == '__main__': from PseudoNetCDF.pncdump import pncdump pfile = cdtoms('test.txt') pncdump(pfile) print(pfile.variables['ozone'][2,3])