Changeset 516 in lmdz_wrf for trunk/tools


Ignore:
Timestamp:
Jun 19, 2015, 12:27:51 PM (10 years ago)
Author:
lfita
Message:

Looking for the position of the right interval

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/validation_sim.py

    r515 r516  
    11201120    return
    11211121
    1122 def getting_ValidationValues(okind, dimt0, ds, trjpos, ovs, ovo, tvalues, oFill, Ng, kvals):
     1122def getting_ValidationValues(okind, dimt, ds, trjpos, ovs, ovo, tvalues, oFill, Ng, kvals):
    11231123    """ Function to get the values to validate accroding to the type of observation
    11241124      okind= observational kind
    1125       dimt0= initial number of values to retrieve
     1125      dimt= initial number of values to retrieve
    11261126      ds= dictionary with the names of the dimensions (sim, obs)
    11271127      trjpos= positions of the multi-stations (t, Y, X) or trajectory ([Z], Y, X)
     
    11471147
    11481148    if kvals == 'instantaneous':
    1149         dimt = dimt0
     1149        dimtf = dimt
    11501150    elif kvals == 'tbackwardSmean':
    11511151        print '  ' + fname + ':',kvals,'!!'
    11521152        uniqt = np.unique(tvalues[:,3])
    1153         dimt = len(uniqt)
    1154         print '    initially we got',dimt0,'values which will become',dimt
     1153        dimtf = len(uniqt)
     1154        print '    initially we got',dimt,'values which will become',dimtf
     1155        postf = {}
     1156        for it in range(dimtf):
     1157            if it == 0:
     1158                postf[uniqt[it]] = [0,0]
     1159            else:
     1160                posprev = postf[uniqt[it-1]][1]
     1161                posit = tvalues[:,3].index(uniqt[it])
     1162                postf[uniqt[it]] = [posprev, posit]
     1163        print postf
    11551164        quit()
    11561165    elif kvals == 'tbackwardOmean':
    11571166        print '  ' + fname + ':',kvals,'!!'
    11581167        uniqt = np.unique(tvalues[:,2])
    1159         dimt = len(uniqt)
    1160         print '     initially we got',dimt0,'values which will become',dimt
     1168        dimtf = len(uniqt)
     1169        print '     initially we got',dimt,'values which will become',dimtf
    11611170    else:
    11621171        print errormsg
     
    11661175# Simulated values spatially around
    11671176    if ds.has_key('Z'):
    1168         soSvalues = np.zeros((dimt, Ng*2+1, Ng*2+1, Ng*2+1),            \
    1169           dtype = np.float)
     1177        soSvalues = np.zeros((dimt, Ng*2+1, Ng*2+1, Ng*2+1), dtype = np.float)
    11701178        if okind == 'trajectory':
    11711179            trjs = np.zeros((4,dimt), dtype=int)
     
    11871195    if okind == 'multi-points':
    11881196        for it in range(dimt):
    1189             slicev = ds['X'][0] + ':' + str(trjpos[2,it]) + '|' +                 \
    1190               ds['Y'][0]+ ':' + str(trjpos[1,it]) + '|' +                         \
    1191               ds['T'][0]+ ':' + str(tvalues[it][0])
     1197            slicev = ds['X'][0] + ':' + str(trjpos[2,it]) + '|' +  ds['Y'][0] +      \
     1198              ':' + str(trjpos[1,it]) + '|' + ds['T'][0]+ ':' + str(tvalues[it][0])
    11921199            slicevar, dimslice = slice_variable(ovs, slicev)
    11931200            sovalues.append([ slicevar, ovo[tvalues[it][1]]])
    1194             slicev = ds['X'][0] + ':' + str(trjpos[2,it]-Ng) + '@' +           \
    1195               str(trjpos[2,it]+Ng) + '|' + ds['Y'][0] + ':' +                  \
    1196               str(trjpos[1,it]-Ng) + '@' + str(trjpos[1,it]+Ng) + '|' +      \
     1201            slicev = ds['X'][0] + ':' + str(trjpos[2,it]-Ng) + '@' +                 \
     1202              str(trjpos[2,it]+Ng) + '|' + ds['Y'][0] + ':' +                        \
     1203              str(trjpos[1,it]-Ng) + '@' + str(trjpos[1,it]+Ng) + '|' +              \
    11971204              ds['T'][0]+':'+str(tvalues[it][0])
    11981205            slicevar, dimslice = slice_variable(ovs, slicev)
     
    12031210            ito = int(tvalues[it,1])
    12041211            if valdimsim.has_key('X') and valdimsim.has_key('Y'):
    1205                 slicev = ds['X'][0] + ':' + str(stationpos[1]) + '|' +             \
    1206                   ds['Y'][0] + ':' + str(stationpos[0]) + '|' +                    \
     1212                slicev = ds['X'][0] + ':' + str(stationpos[1]) + '|' +               \
     1213                  ds['Y'][0] + ':' + str(stationpos[0]) + '|' +                      \
    12071214                  ds['T'][0] + ':' + str(int(tvalues[it][0]))
    12081215            else:
     
    12161223                sovalues.append([ slicevar, ovo[int(ito)]])
    12171224            if valdimsim.has_key('X') and valdimsim.has_key('Y'):
    1218                 slicev = ds['X'][0] + ':' + str(stationpos[1]-Ng) + '@' +       \
    1219                   str(stationpos[1]+Ng+1) + '|' + ds['Y'][0] + ':' +            \
    1220                   str(stationpos[0]-Ng) + '@' + str(stationpos[0]+Ng+1) + '|' +\
     1225                slicev = ds['X'][0] + ':' + str(stationpos[1]-Ng) + '@' +            \
     1226                  str(stationpos[1]+Ng+1) + '|' + ds['Y'][0] + ':' +                 \
     1227                  str(stationpos[0]-Ng) + '@' + str(stationpos[0]+Ng+1) + '|' +      \
    12211228                  ds['T'][0] + ':' + str(int(tvalues[it,0]))
    12221229            else:
     
    12501257                ito = int(tvalues[it,1])
    12511258                if notfound[ito] == 0:
    1252                     trjpos[2,ito] = index_mat(valdimsim['Z'][tvalues[it,0],:,  \
     1259                    trjpos[2,ito] = index_mat(valdimsim['Z'][tvalues[it,0],:,        \
    12531260                      trjpos[1,ito],trjpos[0,ito]], valdimobs['Z'][ito])
    1254                     slicev = ds['X'][0]+':'+str(trjpos[0,ito]) + '|' +            \
    1255                       ds['Y'][0]+':'+str(trjpos[1,ito]) + '|' +                   \
    1256                       ds['Z'][0]+':'+str(trjpos[2,ito]) + '|' +                   \
     1261                    slicev = ds['X'][0]+':'+str(trjpos[0,ito]) + '|' +               \
     1262                      ds['Y'][0]+':'+str(trjpos[1,ito]) + '|' +                      \
     1263                      ds['Z'][0]+':'+str(trjpos[2,ito]) + '|' +                      \
    12571264                      ds['T'][0]+':'+str(int(tvalues[it,0]))
    12581265                    slicevar, dimslice = slice_variable(ovs, slicev)
     
    12651272                    maxz = np.min([trjpos[2,ito]+Ng+1,ovs.shape[1]])
    12661273
    1267                     slicev = ds['X'][0] + ':' + str(minx) + '@' + str(maxx) + '|' +\
    1268                       ds['Y'][0] + ':' + str(miny) + '@' + str(maxy) + '|' +       \
    1269                       ds['Z'][0] + ':' + str(minz) + '@' + str(maxz) + '|' +       \
     1274                    slicev = ds['X'][0] + ':' + str(minx) + '@' + str(maxx) + '|' +  \
     1275                      ds['Y'][0] + ':' + str(miny) + '@' + str(maxy) + '|' +         \
     1276                      ds['Z'][0] + ':' + str(minz) + '@' + str(maxz) + '|' +         \
    12701277                      ds['T'][0] + ':' + str(int(tvalues[it,0]))
    12711278                    slicevar, dimslice = slice_variable(ovs, slicev)
     
    12851292                else:
    12861293                    sovalues.append([fillValueF, fillValueF])
    1287                     soSvalues[it,:,:,:]= np.ones((Ng*2+1,Ng*2+1,Ng*2+1),         \
     1294                    soSvalues[it,:,:,:]= np.ones((Ng*2+1,Ng*2+1,Ng*2+1),             \
    12881295                      dtype = np.float)*fillValueF
    12891296# 2D trajectory
     
    12921299                if notfound[it] == 0:
    12931300                    ito = tvalues[it,1]
    1294                     slicev = ds['X'][0]+':'+str(trjpos[2,ito]) + '|' +            \
    1295                       ds['Y'][0]+':'+str(trjpos[1,ito]) + '|' +                   \
     1301                    slicev = ds['X'][0]+':'+str(trjpos[2,ito]) + '|' +               \
     1302                      ds['Y'][0]+':'+str(trjpos[1,ito]) + '|' +                      \
    12961303                      ds['T'][0]+':'+str(tvalues[ito,0])
    12971304                    slicevar, dimslice = slice_variable(ovs, slicev)
    12981305                    sovalues.append([ slicevar, ovo[tvalues[it,1]]])
    1299                     slicev = ds['X'][0] + ':' + str(trjpos[0,it]-Ng) + '@' +   \
    1300                       str(trjpos[0,it]+Ng) + '|' + ds['Y'][0] + ':' +          \
    1301                       str(trjpos[1,it]-Ng) + '@' + str(trjpos[1,it]+Ng) +    \
     1306                    slicev = ds['X'][0] + ':' + str(trjpos[0,it]-Ng) + '@' +         \
     1307                      str(trjpos[0,it]+Ng) + '|' + ds['Y'][0] + ':' +                \
     1308                      str(trjpos[1,it]-Ng) + '@' + str(trjpos[1,it]+Ng) +            \
    13021309                      '|' + ds['T'][0] + ':' + str(tvalues[it,0])
    13031310                    slicevar, dimslice = slice_variable(ovs, slicev)
     
    13051312                else:
    13061313                    sovalues.append([fillValue, fillValue])
    1307                     soSvalues[it,:,:] = np.ones((Ng*2+1,Ng*2+1),           \
     1314                    soSvalues[it,:,:] = np.ones((Ng*2+1,Ng*2+1),                     \
    13081315                      dtype = np.float)*fillValueF
    13091316                print sovalues[varsimobs][:][it]
     
    13121319        print '  ' + fname + ": observatino kind '" + okind + "' not ready!!"
    13131320        quit(-1)
     1321
     1322# Re-arranging final values
     1323##
     1324    if kvals == 'instantaneous':
     1325        return sovalues, soSvalues, soTvalues, soTtvalues, trjs
     1326
     1327    elif kvals == 'tbackwardSmean':
     1328        fsovalues = []
     1329        if ds.has_key('Z'):
     1330            fsoSvalues = np.zeros((dimtf, Ng*2+1, Ng*2+1, Ng*2+1), dtype = np.float)
     1331            if okind == 'trajectory':
     1332                ftrjs = np.zeros((4,dimtf), dtype=int)
     1333            else:
     1334                ftrjs = None
     1335        else:
     1336            fsoSvalues = np.zeros((dimtf, Ng*2+1, Ng*2+1), dtype = np.float)
     1337            if okind == 'trajectory':
     1338                ftrjs = np.zeros((3,dimtf), dtype=int)
     1339            else:
     1340                ftrjs = None
     1341
     1342        if okind == 'single-station':
     1343            fsoTvalues = {}
     1344            fsoTtvalues = np.zeros((dimtf,2), dtype=np.float)
     1345        else:
     1346            None
     1347
     1348        for it in range(dimtf):
     1349            tv = uniqt(it)
     1350           
     1351
     1352    elif kvals == 'tbackwardOmean':
     1353        print '  ' + fname + ':',kvals,'!!'
     1354        uniqt = np.unique(tvalues[:,2])
     1355        dimtf = len(uniqt)
     1356        print '     initially we got',dimt,'values which will become',dimtf
    13141357
    13151358
Note: See TracChangeset for help on using the changeset viewer.