• Facebook
  • Twitter
  • Reddit
  • StumbleUpon
  • Digg
  • email

####!/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)