IODA Bundle
prestage.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 import sys, os, re
4 import urllib2
5 
6 if all(os.path.exists(fn) for fn in sys.argv[1:]):
7  print sys.argv[0] +': all files', sys.argv[1:], 'exist'
8  os._exit(0)
9 
10 """
11  els /emos_backup/an/0001/2012061900/*
12  ECMA.airs.tar
13  ECMA.amsua.tar
14  ECMA.amsub.tar
15  ECMA.audit
16  ECMA.conv.tar
17  ECMA.geos.tar
18  ECMA.gpsro.tar
19  ECMA.hirs.tar
20  ECMA.iasi.tar
21  ECMA.mhs.tar
22  ECMA.mwhs.tar
23  ECMA.mwts.tar
24  ECMA.nexrad.tar
25  ECMA.resat.tar
26  ECMA.satob.tar
27  ECMA.scatt.tar
28  ECMA.ssmi.tar
29  ECMA.ssmis.tar
30  ECMA.surf_conv.tar
31  ECMA.tmi.tar
32  ECMA.windsat.tar
33 """
34 emosBackup = "/emos_backup/an/{expver}/{date}{time}/ECMA.{marsname}.tar" # marsname is group's short name
35 
36 #print 'Hello from ', sys.argv[0], ". I'm not going to do anything with file(s) ", sys.argv[1:]
37 
38 def dhshome():
39  return os.getenv('DHSHOME') or os.getenv('TEST_DHSHOME')
40 
42  "$DHSHOME/etc/config/local"
43  home = dhshome()
44  return home and os.sep.join( (home, 'etc', 'config', 'local') ) or None
45 
47  # default from odbsvr/ODBRetriever.cc
48  schema = ":{class}:{stream}:{expver}:{date}/:{time}:{type}:{groupid}/{reportype}.odb"
49  cfg = localConfig()
50  if cfg:
51  lines = [l for l in open(cfg).readlines() if l.find('odbPathNameSchema') <> -1]
52  schema = lines[0].split(':')[1].strip().strip('"')
53  return schema
54 
55 def decodeFileName(fileName, pathNameSchema = odbPathNameSchema()):
56  r = pathNameSchema
57  r = re.sub('[{]', '(?P<', r)
58  r = re.sub('[}]', '>.*)', r)
59  r = '.*/' + r
60  print 'fileName:', fileName
61  print 'RE:', r
62  d = {'class': 'od', 'type' : 'ofb', 'stream' : 'oper', 'expver' : '0001'}
63  d.update(re.search(r, fileName).groupdict())
64  return d
65 
66 def encodeFileName (d, template):
67  s = template
68  for k,v in d.iteritems():
69  s = re.sub('{%s}' % k, str(v), s)
70  return s
71 
72 # http://data-portal.ecmwf.int/odbgov/csv/ReportType/
73 """ code&uarr; ; group ; description ;
74  1 ; HIRS ; TIROS-N HIRS Radiances ;
75  2 ; HIRS ; NOAA 6 HIRS Radiances ;
76 """
77 def reportType2group(rt, fn = '/usr/local/apps/odb_api/codes/report_type.txt'):
78  for line in open(fn).readlines():
79  r = [v.strip() for v in line.split(';')]
80  if r[0] == str(rt):
81  print 'reportType2group("'+ rt + '") => ', r[1]
82  return r[1] # group
83 
84 # http://data-portal.ecmwf.int/odbgov/csv/Group/
85 """ id&uarr; ; name ; kind_id ; marsname ; description ;
86  1 ; HIRS ; 2 ; HIRS ; ;
87  2 ; AMSUA ; 2 ; AMSUA ; ;
88 """
89 def group2marsname(group, fn = '/usr/local/apps/odb_api/codes/group.txt'):
90  for line in open(fn).readlines():
91  r = [v.strip() for v in line.split(';')]
92  if r[1] == str(group):
93  print 'group2marsname("'+ group + '") => ', r[0]
94  return r[3] # marsname
95 
96 for fn in sys.argv[1:]:
98  d['marsname'] = group2marsname(reportType2group(d['reportype'])).lower()
99  ecfs = encodeFileName(d, emosBackup)
100  print fn, '=> (', d, ')', ecfs
def encodeFileName(d, template)
Definition: prestage.py:66
def group2marsname(group, fn='/usr/local/apps/odb_api/codes/group.txt')
Definition: prestage.py:89
def odbPathNameSchema()
Definition: prestage.py:46
def dhshome()
Definition: prestage.py:38
def reportType2group(rt, fn='/usr/local/apps/odb_api/codes/report_type.txt')
Definition: prestage.py:77
def localConfig()
Definition: prestage.py:41
def decodeFileName(fileName, pathNameSchema=odbPathNameSchema())
Definition: prestage.py:55