source: trunk/UTIL/PYTHON/planetoplot_v2/exapi.py @ 931

Last change on this file since 931 was 930, checked in by aslmd, 12 years ago

UTIL PYTHON planetoplot_v2. Added attribute allfield so that the user can easily access values. See examples/easy_get_field.py. Added attribute includedate to select option for naming files. Corrected index bug in meanarea mode. Added an example intercompare.py which shows how to easily compare results in two quite different netCDF files.

  • Property svn:executable set to *
File size: 3.7 KB
Line 
1#! /usr/bin/env python
2from api_wrapper import api_onelevel
3from ppclass import separatenames,inspect
4from optparse import OptionParser ### TBR by argparse
5import numpy as np
6# -----------------------------------------------------------------------
7# A simple script to call the API program to interpolate mesoscale files
8# ... NB: API_WRAPPER necessary with api compiled with f2py
9# Author: A. Spiga 04/2013
10# -----------------------------------------------------------------------
11
12# default settings
13# ----------------
14defitp = 4
15deflvl = "0.1"
16
17# define parser with version and usage
18# ------------------------------------
19parser = OptionParser()
20parser.version = \
21'''***********************************************
22******** EXAPI (for help: exapi.py -h) ********
23***********************************************'''
24parser.usage = \
25'''exapi.py [options] netCDF file(s)'''
26parser.print_version()
27
28# define options and get options+arguments
29# ----------------------------------------
30parser.add_option('-v','--var',action='store',dest='var',type="string",default=None,help='Variables processed. Not used means all variables.')
31parser.add_option('-i','--interp',action='store',dest='itp',type="int",default=defitp,help='Mode: 2=press /  3=z-amr / 4=z-als (default)')
32parser.add_option('-l','--level',action='store',dest='lvl',type="string",default=deflvl,help='Levels: start[,stop,step] (-i 2: Pa)(-i 3,4: km)')
33parser.add_option('-o','--output',action='store',dest='output',type="string",default=None,help="name of output files")
34parser.add_option('-d','--directory',action='store',dest='folder',type="string",default=None,help="directory of output files")
35(opt,args) = parser.parse_args()
36
37# get variables
38# if None, take all!
39# ------------------
40if opt.var is None: 
41  ze_process = "all"
42  zevars = None
43else: 
44  ze_process = "list"
45  # (we start by unravelling user input in an array)
46  zevars = separatenames(opt.var)
47  # (we help a little the user about naming certain variables)
48  for i in range(len(zevars)):
49    if zevars[i] in ['t','temp','temperature']: zevars[i] = 'tk'
50    elif zevars[i] in ['T','temppot','theta']: zevars[i] = 'tpot'
51    elif zevars[i] in ['u','v','U','V','Um','Vm','uv','UV','wind']: zevars[i] = 'uvmet'
52  # (we recombine them all for call to api)
53  list = ""
54  for el in zevars: list = list + el + ","
55  zevars = list
56
57# get the kind of interpolation
58# -----------------------------
59inputnvert = separatenames(opt.lvl)
60
61# prepare levels: one-level only
62# ------------------------------
63if len(inputnvert) == 1:
64    zelevel = float(inputnvert[0])
65    ze_interp_levels = [-9999.]
66
67# prepare levels: several levels
68# ------------------------------
69elif len(inputnvert) > 1:
70    # initialize. make number of interp levels to 20 if not given.
71    zelevel = -99.
72    start = float(inputnvert[0])
73    stop = float(inputnvert[1])
74    if len(inputnvert) == 2:  numsample = 20
75    else:                     numsample = float(inputnvert[2])
76    # make the interval. either normal -- or log if pressure.
77    if stop > start:
78        # altitude coordinates
79        ze_interp_levels = np.linspace(start,stop,numsample)
80    else:
81        # pressure coordinates
82        ze_interp_levels = np.logspace(np.log10(start),np.log10(stop),numsample)
83
84# main api call
85# -------------
86for file in args:
87    print "EXAPI: working on file",file 
88    newname = api_onelevel ( \
89        path_to_input = '', \
90        path_to_output = None, \
91        input_name = file, \
92        output_name = opt.output, \
93        fields = zevars, \
94        interp_method = opt.itp, \
95        interp_level = ze_interp_levels, \
96        onelevel = zelevel, \
97        process = ze_process )
98    print "EXAPI: inspect the new file."
99    inspect(newname)
100    print "EXAPI: OK. done with this file."
101   
102
103
Note: See TracBrowser for help on using the repository browser.