-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPPODD
executable file
·97 lines (88 loc) · 3.82 KB
/
PPODD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python
import os
import ppodd
from ppodd.core import decades_dataset
from optparse import OptionParser
import matplotlib
# checking if X-server is available or not
# and set renderer backend according to result
if not os.environ.has_key('DISPLAY'):
matplotlib.use('agg')
else:
matplotlib.use('Tkagg')
def split_up(option, opt, value, parser):
""" Splits up comma separated input and sets to upper case """
setattr(parser.values, option.dest, value.upper().split(','))
def split_(option, opt, value, parser):
""" Splits up comma separated input """
setattr(parser.values, option.dest, value.split(','))
def split_types(option, opt, value, parser):
""" Splits up comma separated input """
writetypes=['1hz','full']
ans=set()
for v in value.split(','):
if(v.lower() in writetypes):
ans.update([v.lower()])
setattr(parser.values, option.dest, ans)
if __name__=="__main__":
usage="usage: %prog [options] [input_file1[:type1] input_file2[:type2] .. input_filen[:typen]]"
parser=OptionParser(usage=usage)
parser.add_option("-w","--write",dest="write",action='callback',callback=split_types,
help="Output file types - if not writing open GUI",metavar="full, and or 1hz",default=None,type='string')
parser.add_option("-o","--output",dest="output",
help="Output file or folder - if not writing open GUI",metavar="output",default=None)
parser.add_option("-p","--parameters",dest="paras",
help="Parameters to output ",metavar="p1,p2...pn or all",default=None,
action='callback',callback=split_,type='string')
parser.add_option("-m","--modules",dest="calmods",
help="Only run these modules ",metavar="mod1,mod2..modn",default=[],
action='callback',callback=split_up,type='string')
parser.add_option("-n","--not_modules",dest="nocals",
help="Don't run these modules ",
metavar="mod1,mod2..modn",default=[],
action='callback',callback=split_up,type='string')
parser.add_option("-l","--logfile",dest="logfile",
help="Log file",metavar="filename",default=None,type='string')
parser.add_option("--nctype",dest="nctype",
help="NetCDF type of output",metavar="NCTYPE",default="NETCDF3",type='string')
(options,args)=parser.parse_args()
d=decades_dataset()
if(options.logfile):
ppodd.logfile(options.logfile)
print "log to ",options.logfile
if(args):
for fi in args:
d.add_file(fi)
print "add_file",fi
if(options.output):
if(not options.write):
options.write=set(['full'])
if(options.write and args):
if(not(options.logfile)):
ppodd.logfile()
print "log to default"
if(options.calmods):
print "Use these mods ",options.calmods
d.cals=options.calmods
if(options.nocals):
print "Dont use these mods ",options.nocals
d.nocals=options.nocals
if(options.paras!=['all']):
print "Outparas",options.paras
d.outparas=options.paras
d.process()
print "process"
if 'full' in options.write:
d.write_nc.process(options.output,options.nctype,paras=options.paras)
print "write full ",options.output,options.nctype
if '1hz' in options.write:
if(options.output):
if ('full' in options.write) and ('.' in options.output):
options.output=options.output[:options.output.index('.')]+'_1hz.nc'
d.write_nc.process(options.output,options.nctype,paras=options.paras,onehz=True)
print "write 1 Hz",options.output,options.nctype
else:
from ppodd.gui.main import main
print "GUI"
colour='honeydew'
m=main(data=d,bg=colour)