####!/usr/bin/env python
"""%s
purpose:
generate new VD.pyp
usages:
%s
examples:
"""
import os,sys,glob
import mf
import w2
import ADtest as AD
import BD
import cPickle as pickle
#iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
# command line
#
test=1
verb=0
override=1
curdtg=mf.dtg()
curtime=mf.dtg('curtime')
curphr=mf.dtg('phr')
curdir=os.getcwd()
pypath=sys.argv[0]
(pydir,pyfile)=os.path.split(pypath)
if(pydir==''):pydir='.'
narg=len(sys.argv)-1
nargmin=1
i=1
if(narg >= 1 and not(test)):
vtype=sys.argv[1]
try:
(opts, args) = getopt.getopt(sys.argv[2:], "OVN")
except getopt.GetoptError:
mf.usage(__doc__,pypath,curdtg,curtime)
print "EEE invalid getopt opt"
sys.exit(2)
for o, a in opts:
if o in ("-O",""): override=1
if o in ("-N",""): ropt='norun'
if o in ("-V",""): verb=1
else:
if(not(test)):
mf.usage(__doc__,pypath,curdtg,curtime)
sys.exit()
def GetModelAdecks(dtg,stmid,model,verb=1):
year=dtg[0:4]
detmask=''
stm3id=stmid.split('.')[0]
if(mf.find(model,'ecm')):
sbdir=w2.TcAdecksEcmwfDir
sbdirdet=w2.TcAdecksEcmwfDir
mask="a*.%s.%s.ecmwf_tigge.txt"%(dtg,stmid)
detmask="wxmap/*%s.%s"%(dtg,stm3id)
elif(model == 'ukmo'):
sbdir=w2.TcAdecksuKmoDir
mask="a*.%s.%s.ukmo_tigge.txt"%(dtg,stmid)
detmask=None
elif(model == 'ncep'):
if(not(mf.find(ncepSource,'adeck'))):
sbdir=w2.TcAdecksNcepDir
mask="a*.%s.%s.ncep_tigge.txt"%(dtg,stmid)
elif(ncepSource == 'adeckonly'):
sbdir=w2.TcAdecksNhcDir
stm2id=stm1to2id(stmid).split('.')[0]
mask="a%s%s.dat"%(stm2id,year)
else:
sbdir=w2.TcAdecksNhcDir
stm2id=stm1to2id(stmid).split('.')[0]
mask="a%s%s.dat"%(stm2id,year)
sbdir=w2.TcAdecksNcepDir
mask="%s/a???.*.cyclone.*atcfunix"%(dtg)
#
# always go to the jt/nhc adecks for ncep deterministic
#
b1id=stmid[2]
if(TC.IsJtwcBasin(b1id)):
sbdirdet=w2.TcAdecksJtwcDir
stm2id=stm1to2id(stmid).split('.')[0]
else:
sbdirdet=w2.TcAdecksNhcDir
stm2id=stm1to2id(stmid).split('.')[0]
detmask="a%s%s.dat"%(stm2id,year)
elif(model == 'cmc'):
if(ncepSource != 'adeck'):
sbdir=w2.TcAdecksCmcDir
sbdirdet=w2.TcAdecksCmcDir
mask="a*.%s.%s.cmc_tigge.txt"%(dtg,stmid)
detmask="wxmap/*%s.%s"%(dtg,stm3id)
else:
sbdir=w2.TcAdecksCmcDir
sbdirdet=w2.TcAdecksCmcDir
mask="%s/c???.*.cyclone.*atcfunix"%(dtg)
detmask="%s/cmc.*.cyclone.*atcfunix"%(dtg)
elif(model == 'esrl'):
sbdir=w2.TcAdecksEsrlDir
sbdirdet=w2.TcAdecksEsrlDir
mask="tacc/*%s*"%(dtg)
detmask="tacc/*%s*.F9EM"%(dtg)
else:
print 'EEE invalid model: ',model
sys.exit()
adeckpathmask=("%s/%s/%s"%(sbdir,year,mask))
if(detmask != None):
adeckpathdetmask=("%s/%s/%s"%(sbdirdet,year,detmask))
adeckpathmasks=[adeckpathdetmask]
adeckpathmasks.append(adeckpathmask)
else:
adeckpathmasks=[adeckpathmask]
if(verb): print 'AAA GetModelAdecks: ',adeckpathmasks
ad=AD.Adeck(adeckpathmasks)
return(ad)
def GetEaids(ad,model,verb=0):
iaids=ad.aids
eaids=[]
if(model == 'esrl'):
for iaid in iaids:
if(verb): print 'iaid ',iaid
if( (iaid[0:2].upper() == 'F8' and iaid[2:4].isdigit()) or iaid[0:4].upper() == 'F8EM' ):
eaids.append(iaid)
elif(model == 'ncep' and mf.find(ncepSource,'adeck') ):
for iaid in iaids:
if(verb): print 'iaid ',iaid
if( (iaid[0:2].upper() == 'AP' and iaid[2:4].isdigit()) or iaid.upper() == 'AC00'):
eaids.append(iaid)
elif(model == 'cmc' and ncepSource == 'adeck'):
for iaid in iaids:
if(verb): print 'iaid ',iaid
if( (iaid[0:2].upper() == 'CP' and iaid[2:4].isdigit()) or iaid.upper() == 'CC00'):
eaids.append(iaid)
else:
for iaid in iaids:
if(verb): print 'iaid ',iaid
if(iaid != 'ecmt' and iaid != 'ecfx' and iaid != 'edet' and iaid != 'eanl' ):
eaids.append(iaid)
eaids.sort()
return(eaids)
#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
#
# main
#
model='esrl'
dtg='2009082900'
stmid='94E.2009'
ad=GetModelAdecks(dtg,stmid,model)
eaids=GetEaids(ad,model)
(ATs,dtgs,at)=ad.ConsensusAidTrk(eaids,stmid)