Changeset 807 in lmdz_wrf for trunk/tools


Ignore:
Timestamp:
Jun 7, 2016, 11:27:28 AM (9 years ago)
Author:
lfita
Message:

Adding more functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/generic.py

    r806 r807  
    1818cV = '@'
    1919# List of available operations
    20 operations=['grid_combinations', 'PolyArea', 'rmNOnum',                              \
     20operations=['coincident_CFtimes', 'count_cond', 'grid_combinations', 'PolyArea',     \
     21  'radial_points',                                                                   \
     22  'rmNOnum', 'running_mean',                                                         \
    2123  'significant_decomposition', 'squared_radial',                                     \
    22   'unitsDate']
    23 
     24  'unitsDate', 'wdismean']
     25
     26hundredvals = '0'
     27for i in range(1,100): hundredvals = hundredvals + '@' + str(i)
     28
     29vs100 = '0@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'
     30vs100 = vs100 + '@28@29@30@31@32@33@34@35@36@37@38@39@40@41@42@43@44@45@46@47@48@49'
     31vs100 = vs100 + '@50@51@52@53@54@55@56@57@58@59@60@61@62@63@64@65@66@67@68@69@70@71'
     32va100 = vs100 + '@72@73@74@75@76@77@78@79@80@81@82@83@84@85@86@87@88@89@90@91@92@93'
     33va100 = vs100 + '@94@95@96@97@98@99'
     34
     35## e.g. # generic.py -o 'coincident_CFtimes' -S '0@1@2@3@4@5@6@7@8@9,seconds since 1949-12-01 00:00:00,hours since 1949-12-01 00:00:00'
     36## e.g. # generic.py -o count_cond -S 0@1@2@3@4@5@6@7@8@9,4,le
    2437## e.g. # generic.py -o grid_combinations -S 1,2
    2538## e.g. # generic.py -o PolyArea -S -0.5@0.5@0.5@-0.5,0.5@0.5@-0.5@-0.5
     39## e.g. # generic.py -o radial_points -S 0.785398163397,5
    2640## e.g. # generic.py -o rmNOnum -S LMD123IPSL
    2741## e.g. # generic.py -o significant_decomposition -S 3.576,-2
    2842## e.g. # generic.py -o unitsDate -S '19490101000000,19760217082932,second'
     43## e.g. # generic.py -o running_mean -S 0@1@2@3@4@5@6@7@8@9,10
    2944## e.g. # generic.py -o squared_radial -S 3
     45## e.g. # generic.py -o wdismean -S 0.005@0.005,0.@1.@2.@3.
    3046
    3147operationnames = "'" + gen.numVector_String(operations, "', '") + "'"
     
    5369            print getattr(object, opern).__doc__
    5470
     71elif oper == 'coincident_CFtimes':
     72    Nvals = 3
     73    vals = opts.values.split(cS)
     74    if vals[0] == 'h':
     75        print gen.coincident_CFtimes.__doc__
     76        quit(-1)
     77    else:
     78        if len(vals) != Nvals:
     79            print errormsg
     80            print '  ' + main + ": operation '" + oper + "' requires", Nvals, 'and', \
     81              len(vals), ' has passed!!'
     82            print gen.coincident_CFtimes.__doc__
     83            quit(-1)
     84        vals0 = np.array(vals[0].split('@'), dtype=np.float)
     85        print gen.coincident_CFtimes(vals0, vals[1], vals[2])
     86
     87elif oper == 'count_cond':
     88    Nvals = 3
     89    vals = opts.values.split(cS)
     90    if vals[0] == 'h':
     91        print gen.count_cond.__doc__
     92        quit(-1)
     93    else:
     94        if len(vals) != Nvals:
     95            print errormsg
     96            print '  ' + main + ": operation '" + oper + "' requires", Nvals, 'and', \
     97              len(vals), ' has passed!!'
     98            print gen.count_cond.__doc__
     99            quit(-1)
     100        vals0 = np.array(vals[0].split('@'), dtype=np.float)
     101        print gen.count_cond(np.array(vals[0].split('@'), dtype=np.float),           \
     102          np.float(vals[1]), vals[2])
     103
    55104elif oper == 'grid_combinations':
    56105    Nvals = 2
     
    87136        print gen.PolyArea(xvals, yvals)
    88137
     138elif oper == 'radial_points':
     139    Nvals = 2
     140    vals = opts.values.split(cS)
     141    if vals[0] == 'h':
     142        print gen.radial_points.__doc__
     143        quit(-1)
     144    else:
     145        if len(vals) != Nvals:
     146            print errormsg
     147            print '  ' + main + ": operation '" + oper + "' requires", Nvals, 'and', \
     148              len(vals), ' has passed!!'
     149            print gen.radial_points.__doc__
     150            quit(-1)
     151        print gen.radial_points(np.float(vals[0]), int(vals[1]))
     152
    89153elif oper == 'rmNOnum':
    90154    Nvals = 1
     
    102166        print gen.rmNOnum(vals[0])
    103167
     168elif oper == 'running_mean':
     169    Nvals = 2
     170    vals = opts.values.split(cS)
     171    if vals[0] == 'h':
     172        print gen.running_mean.__doc__
     173        quit(-1)
     174    else:
     175        if len(vals) != Nvals:
     176            print errormsg
     177            print '  ' + main + ": operation '" + oper + "' requires", Nvals, 'and', \
     178              len(vals), ' has passed!!'
     179            print gen.running_mean.__doc__
     180            quit(-1)
     181        print gen.running_mean(np.array(vals[0].split('@'), dtype=np.float), int(vals[1]))
     182
    104183elif oper == 'significant_decomposition':
    105184    Nvals = 2
     
    147226        print gen.unitsDate(vals[0], vals[1], vals[2])
    148227
     228elif oper == 'wdismean':
     229    Nvals = 2
     230    vals = opts.values.split(cS)
     231    if vals[0] == 'h':
     232        print gen.wdismean.__doc__
     233        quit(-1)
     234    else:
     235        if len(vals) != Nvals:
     236            print errormsg
     237            print '  ' + main + ": operation '" + oper + "' requires", Nvals, 'and', \
     238              len(vals), ' has passed!!'
     239            print gen.wdismean.__doc__
     240            quit(-1)
     241        vals0 = np.array(vals[0].split('@'), dtype=np.float)
     242        vals1 = np.array(vals[1].split('@'), dtype=np.float).reshape(2,2)
     243
     244        print gen.wdismean(vals0, vals1)
     245
Note: See TracChangeset for help on using the changeset viewer.