Changeset 409 for trunk/UTIL
- Timestamp:
- Nov 22, 2011, 3:14:32 PM (14 years ago)
- Location:
- trunk/UTIL/PYTHON
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/UTIL/PYTHON/make_netcdf.py
r395 r409 28 28 zznames=[[]]*nvar 29 29 for zvar in zvariables: 30 zznames[i]="var"+ np.string(i+1)30 zznames[i]="var"+str(i+1) 31 31 i=i+1 32 32 -
trunk/UTIL/PYTHON/mcs.py
r403 r409 20 20 import numpy as np 21 21 from mymath import find_nearest 22 from myplot import getfield 22 from myplot import getfield,separatenames 23 23 from make_netcdf import make_gcm_netcdf 24 from zrecast_wrapper import call_zrecast 24 25 parser = OptionParser() 25 26 … … 28 29 parser.add_option('-f', '--file', action='store',dest='file', type="string", default=None, help='[NEEDED] filename.') 29 30 parser.add_option('-m', '--mfile', action='store',dest='mcsfile', type="string", default=None, help='[NEEDED] filename for MCS comparison.') 31 parser.add_option('-v', '--var', action='append',dest='var', type="string", default=None, help='[NEEDED] Variables to process. (coma-separated list. aps and bps are always included.)') 30 32 31 33 ############################# … … 75 77 ntimemax.set_fill_value([np.NaN]) 76 78 77 # Variables 78 79 temp=getfield(nc,"temp") 80 dimensions = np.array(temp).shape 81 print "temp" 82 print dimensions 83 #aps=nc.variables["aps"][:] 84 #bps=nc.variables["bps"][:] 85 79 # Variables to treat 80 81 varz=[] 82 varznames=separatenames(opt.var[0]) 83 n=0 84 for zn in varznames: 85 varz.append(getfield(nc,zn)) 86 print "Found: "+zn+" with dimensions: " 87 print np.array(varz[n]).shape 88 n=n+1 89 90 nzvar=len(varz) 91 dimensions={} 92 vv=0 93 for var in varz: 94 a=len(np.array(var).shape) 95 if a == 3: dimensions[vv]=a 96 elif a == 4: dimensions[vv]=a 97 else: 98 print "Warning, only 3d and 4d variables are supported for time-recasting" 99 exit() 100 vv=vv+1 101 102 # Variables to save but not treated (only along z, or phisinit-like files) 103 104 aps=nc.variables["aps"][:] 105 bps=nc.variables["bps"][:] 106 fullnames=["aps","bps"] 107 for name in varznames: 108 fullnames.append("d"+name) 109 fullnames.append("n"+name) 110 print "Will output: " 111 print fullnames 86 112 ############################# 87 113 ### Building … … 92 118 varday=np.zeros([len(timemcs),nz,ny,nx]) 93 119 varnight=np.zeros([len(timemcs),nz,ny,nx]) 94 vardayout=np.ma.masked_invalid(varday) 95 varnightout=np.ma.masked_invalid(varnight) 120 vardayout=np.zeros([nzvar,len(timemcs),nz,ny,nx]) 121 varnightout=np.zeros([nzvar,len(timemcs),nz,ny,nx]) 122 vardayout=np.ma.masked_invalid(vardayout) 123 varnightout=np.ma.masked_invalid(varnightout) 96 124 i=0 97 125 for ls in timemcs: … … 100 128 istart=find_nearest(lstime,lsstart,strict=True) 101 129 istop=find_nearest(lstime,lsstop,strict=True) 130 varchk=0 102 131 if ((istart is np.NaN) or (istop is np.NaN)): 103 vardayout[ i,:,:,:]=np.NaN104 varnightout[ i,:,:,:]=np.NaN132 vardayout[:,i,:,:,:]=np.NaN 133 varnightout[:,i,:,:,:]=np.NaN 105 134 print "Time interval skipped. Ls MCS: (",lsstart,';',lsstop,')',"// Ls diagfi: (",lstime.min(),';',lstime.max(),')' 106 135 i=i+1 107 136 continue 108 137 print "--->> Processing Data. Ls MCS: (",lsstart,';',lsstop,')',"// Ls diagfi: (",lstime.min(),';',lstime.max(),')' 109 110 varchk=temp[istart:istop,:,:,:] 111 varchktime=time[istart:istop] 138 # warning, python's convention is that the second index of array[a:b] is the array index of element after the one being picked last. 139 # for that reason, array[0:0] is nan and array[0:1] is only one value. Hence, len(array[a:b+1]) is b-a+1 and not b-a+2 140 print " .initialisation." 141 142 143 varchk=np.zeros([nzvar,istop-istart+1,nz,ny,nx]) 144 vv=0 145 for variable in varz: 146 if dimensions[vv] is 3: 147 varchk[vv,:,0,:,:]=variable[istart:istop+1,:,:] 148 else: 149 varchk[vv,:,:,:,:]=variable[istart:istop+1,:,:,:] 150 vv=vv+1 151 varchktime=time[istart:istop+1] 112 152 ndays=np.floor(varchktime[len(varchktime)-1])-np.floor(varchktime[0]) 113 153 dtmichk=dtimemin[i,:,:] … … 129 169 ### (yea it's complicated) 130 170 131 vartmpnight=np.zeros([n days,nz,ny,nx])132 vartmpday=np.zeros([n days,nz,ny,nx])171 vartmpnight=np.zeros([nzvar,ndays,nz,ny,nx]) 172 vartmpday=np.zeros([nzvar,ndays,nz,ny,nx]) 133 173 nd=0 134 135 174 print " .time indices MCS grid -> diagfi grid." 136 175 while nd < ndays: 137 176 … … 152 191 nitntmichk=find_nearest(varchktime_lon,ntmichk[niy,nix]) 153 192 nitntmachk=find_nearest(varchktime_lon,ntmachk[niy,nix]) 154 if ((nitdtmichk is np.NaN) or (nitdtmachk is np.NaN)):155 vartmpday[nd,:,iy,ix]=np.NaN156 elif nitdtmichk > nitdtmachk:157 vartmpday[nd,:,iy,ix]=(np.mean(varchk[daystart+nitdtmichk:daystop+1,:,iy,ix],axis=0)+np.mean(varchk[daystart:daystart+nitdtmachk+1,:,iy,ix],axis=0))/2.158 else:159 vartmpday[nd,:,iy,ix]=np.mean(varchk[daystart+nitdtmichk:daystart+nitdtmachk+1,:,iy,ix],axis=0)160 if ((nitntmichk is np.NaN) or (nitntmachk is np.NaN)):161 vartmpnight[nd,:,iy,ix]=np.NaN162 elif nitntmichk > nitntmachk:163 vartmpnight[nd,:,iy,ix]=(np.mean(varchk[daystart+nitntmichk:daystop+1,:,iy,ix],axis=0)+np.mean(varchk[daystart:daystart+nitntmachk+1,:,iy,ix],axis=0))/2.164 else:165 vartmpnight[nd,:,iy,ix]=np.mean(varchk[daystart+nitntmichk:daystart+nitntmachk+1,:,iy,ix],axis=0)166 193 for vv in np.arange(nzvar): 194 if ((nitdtmichk is np.NaN) or (nitdtmachk is np.NaN)): 195 vartmpday[vv,nd,:,iy,ix]=np.NaN 196 elif nitdtmichk > nitdtmachk: 197 vartmpday[vv,nd,:,iy,ix]=(np.mean(varchk[vv,daystart+nitdtmichk:daystop+1,:,iy,ix],axis=0)+np.mean(varchk[vv,daystart:daystart+nitdtmachk+1,:,iy,ix],axis=0))/2. 198 else: 199 vartmpday[vv,nd,:,iy,ix]=np.mean(varchk[vv,daystart+nitdtmichk:daystart+nitdtmachk+1,:,iy,ix],axis=0) 200 if ((nitntmichk is np.NaN) or (nitntmachk is np.NaN)): 201 vartmpnight[vv,nd,:,iy,ix]=np.NaN 202 elif nitntmichk > nitntmachk: 203 vartmpnight[vv,nd,:,iy,ix]=(np.mean(varchk[vv,daystart+nitntmichk:daystop+1,:,iy,ix],axis=0)+np.mean(varchk[vv,daystart:daystart+nitntmachk+1,:,iy,ix],axis=0))/2. 204 else: 205 vartmpnight[vv,nd,:,iy,ix]=np.mean(varchk[vv,daystart+nitntmichk:daystart+nitntmachk+1,:,iy,ix],axis=0) 167 206 iy=iy+1 168 207 ix=ix+1 169 208 nd=nd+1 170 209 210 print " .creating bins." 211 171 212 vartmpdaymasked=np.ma.masked_invalid(vartmpday) 172 213 vartmpnightmasked=np.ma.masked_invalid(vartmpnight) 173 174 vardayout[i,:,:,:]=np.ma.mean(vartmpdaymasked[:,:,:,:],axis=0) 175 varnightout[i,:,:,:]=np.ma.mean(vartmpnightmasked[:,:,:,:],axis=0) 214 for vv in np.arange(nzvar): 215 vardayout[vv,i,:,:,:]=np.ma.mean(vartmpdaymasked[vv,:,:,:,:],axis=0) 216 varnightout[vv,i,:,:,:]=np.ma.mean(vartmpnightmasked[vv,:,:,:,:],axis=0) 217 print " ."+varznames[vv]+".done" 176 218 i=i+1 219 220 print "--->> Preparing Data for ncdf. Missing value is NaN." 177 221 178 222 vardayout=np.ma.masked_invalid(vardayout) … … 181 225 varnightout.set_fill_value([np.NaN]) 182 226 183 vardayncdf=vardayout.filled() 184 varnightncdf=varnightout.filled() 227 all=[aps,bps] 228 for vv in np.arange(nzvar): 229 if dimensions[vv] == 3: 230 all.append(vardayout[vv,:,0,:,:].filled()) 231 all.append(varnightout[vv,:,0,:,:].filled()) 232 elif dimensions[vv] == 4: 233 all.append(vardayout[vv,:,:,:,:].filled()) 234 all.append(varnightout[vv,:,:,:,:].filled()) 185 235 186 236 make_gcm_netcdf (zfilename="diagfi_MCS.nc", \ … … 190 240 zalt=alt, \ 191 241 ztime=timemcs, \ 192 zvariables= [vardayncdf,varnightncdf], \193 znames= ["dtemp","ntemp"])242 zvariables=all, \ 243 znames=fullnames) -
trunk/UTIL/PYTHON/myplot.py
r405 r409 664 664 fmtvar = { \ 665 665 "TK": "%.0f",\ 666 # Variables from TES ncdf format 666 667 "T_NADIR_DAY": "%.0f",\ 667 668 "T_NADIR_NIT": "%.0f",\ 669 # Variables from tes.py ncdf format 668 670 "TEMP_DAY": "%.0f",\ 669 671 "TEMP_NIGHT": "%.0f",\ 672 # Variables from MCS and mcs.py ncdf format 673 "DTEMP": "%.0f",\ 674 "NTEMP": "%.0f",\ 670 675 "TPOT": "%.0f",\ 671 676 "TSURF": "%.0f",\ -
trunk/UTIL/PYTHON/myscript.py
r402 r409 20 20 parser.add_option('-l', '--level', action='store',dest='lvl', type="string", default="0", help='level / start,stop,step (-i 2: p,mb)(-i 3,4: z,km) [0]') 21 21 parser.add_option('-i', '--interp', action='store',dest='itp', type="int", default=None, help='interpolation (2: p, 3: z-amr, 4:z-als)') 22 parser.add_option('--intas', action='store',dest='intas', type="string", default=None, help='specify "mcs" or "tes" for specific gcm pressure interpolation grid') 22 23 parser.add_option('-N', '--no-api', action='store_true',dest='nocall', default=False, help='do not recreate api file') 23 24 -
trunk/UTIL/PYTHON/pp.py
r392 r409 105 105 interpolated_files=call_zrecast(interp_mode=opt.itp,\ 106 106 input_name=zefiles,\ 107 fields=zevars) 107 fields=zevars,\ 108 predifined=opt.intas) 108 109 109 110 zefiles=interpolated_files … … 112 113 interpolated_ref=call_zrecast(interp_mode=opt.itp,\ 113 114 input_name=[opt.fref],\ 114 fields=zevars) 115 fields=zevars,\ 116 predifined=opt.intas) 115 117 116 118 reffile=interpolated_ref[0] -
trunk/UTIL/PYTHON/zrecast_wrapper.py
r396 r409 4 4 def call_zrecast ( interp_mode = '4', \ 5 5 input_name = None, \ 6 fields = 'all'): 6 fields = 'all', \ 7 predifined = None): 7 8 8 9 import numpy as np 9 10 from myplot import separatenames 10 11 from os import system 11 12 pressure_axis_tes=[1658.152,1291.37,1005.72,783.2555,610.,475.0685,369.9837,288.1436,224.4065,174.7679,136.1094,106.0021,82.55452,64.29353,50.07185,38.99599,30.37011,23.65227,18.4204,14.34583,11.17254] 13 pressure_axis_mcs=[1878.9, 1658.2, 1463.3, 1291.4, 1139.6, 1005.7, 887.54, 783.26,691.22, 610, 538.32, 475.07, 419.25, 369.98, 326.51, 288.14, 254.29,224.41, 198.04, 174.77, 154.23, 136.11, 120.12, 106, 93.547, 82.555,72.854, 64.294, 56.739, 50.072, 44.188, 38.996, 34.414, 30.37, 26.802,23.652, 20.873, 18.42, 16.256, 14.346, 12.66, 11.173, 9.8597, 8.7012,7.6788, 6.7765, 5.9802, 5.2775, 4.6574, 4.1101, 3.6272, 3.201, 2.8249,2.4929, 2.2, 1.9415, 1.7134, 1.512, 1.3344, 1.1776, 1.0392, 0.9171,0.80934, 0.71424, 0.63031, 0.55625, 0.49089, 0.43321, 0.3823, 0.33738,0.29774, 0.26275, 0.23188, 0.20463, 0.18059, 0.15937, 0.14064, 0.12412,0.10953, 0.096661, 0.085303, 0.07528, 0.066434, 0.058628, 0.051739,0.04566, 0.040294, 0.03556, 0.031381, 0.027694, 0.02444, 0.021568,0.019034, 0.016797, 0.014824, 0.013082, 0.011545, 0.010188, 0.0089909,0.0079345, 0.0070021, 0.0061794, 0.0054533, 0.0048125, 0.004247] 12 14 system("rm -f zrecast.auto.def") 13 15 system("touch zrecast.auto.def") … … 26 28 elif interp_mode == 2: 27 29 append="_P" 28 system("echo 1 >> zrecast.auto.def") 29 system("echo yes >> zrecast.auto.def") 30 system("echo 370 0.1 >> zrecast.auto.def") #I put that randomly! (a.c.) 31 system("echo 20 >> zrecast.auto.def") 30 if predifined is "TES": 31 system("echo 1 >> zrecast.auto.def") 32 system("echo no >> zrecast.auto.def") 33 system("echo "+len(pressure_axis_tes)+" >> zrecast.auto.def") 34 for zp in pressure_axis_tes: 35 system("echo "+zp+" >> zrecast.auto.def") 36 elif predifined is "MCS": 37 system("echo no >> zrecast.auto.def") 38 system("echo "+len(pressure_axis_mcs)+" >> zrecast.auto.def") 39 for zp in pressure_axis_mcs: 40 system("echo "+zp+" >> zrecast.auto.def") 41 else: 42 system("echo 1 >> zrecast.auto.def") 43 system("echo yes >> zrecast.auto.def") 44 system("echo 370 0.1 >> zrecast.auto.def") #I put that randomly! (a.c.) 45 system("echo 20 >> zrecast.auto.def") 32 46 else: 33 47 print "zrecast interp option unsupported for now. Exiting."
Note: See TracChangeset
for help on using the changeset viewer.