source: CMIP6dreqbuild/trunk/src/framework/titles.py @ 1289

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CMIP6dreqbuild/trunk/src/framework/titles.py@1289
Revision 1289, 3.3 KB checked in by mjuckes, 14 months ago (diff)

miac

Line 
1
2from dreqPy import dreq
3dq = dreq.loadDreq()
4
5
6
7
8#>> for i in dq.coll['var'].items:
9#>>    for w in i.title.split():
10#>>      words[w].add( i.title )
11#>> k3 = [w for w in words if len(w) == 3]
12#>> khy = [k for k in words if k.find('-') != -1]
13#>> khy = [k for k in words if k.find('-') != -1]
14#>> khy = [k for k in words if k.find('-') != -1]
15
16
17
18special = dict()
19##Articles: a, an, the
20## Coordinating Conjunctions: and, but, or, for, nor, etc.
21## Prepositions (fewer than five letters): on, at, to, from, by, etc` ... per
22
23## that: possibly a conjunction, but not likely in this context
24
25lower = dict()
26
27lower[1] = ['a']
28lower[2] = ['as', 'at', 'by', 'in', 'nm', 'of', 'on', 'or', 'to']
29
30lower[3] = [ 'and', 'any', 'but', 'for',  'non', 'nor', 'not', 'out', 'per', 'the']
31
32
33lower[4] = ['into', 'onto', 'over', 'than', 'with']
34
35special[1] = ['X', 'Y', 'T']
36special[2] = ['10', '1H', '1m', '2H', '2m', '3D', '50', 'C3', 'C4', 'CO', 'D:', 'H2', 'N2', 'NO', 'Ox', 'O2', 'O3', 'OD', 'OH', 'XY', 'pH']
37special[3] = ['100', '10m', '13C', '14C', '17O', '18O', '20C', '440', '443', '500', '550', '850', '865', '870', 'CH4', 'CO2', 'CWD', 'DMS', 'HCl', 'HO2', 'N2O', 'NH3', 'NH4', 'NHx', 'NO2', 'NO3', 'NOx', 'NOy', 'NPP', 'O1d',  'PAN', 'PBL', 'PO2', 'SF6', 'SO2', 'SO4', 'SWE', 'TEM', 'TOA', 'hPa']
38special[4] = ['1000', '100m', '300m', '700m', 'C2H2', 'C2H6', 'C3H6', 'C3H8', 'CFAD', 'MISR', 'PCO2', 'PM10' ]
39special[5] = ['10hPa', '13CO2', '14CO2', '2000m', '4XCO2', '550nm', 'CFC11', 'CFC12', 'DI14C', 'ISCCP', 'MODIS', 'NMVOC', 'PM1.0', 'PM2.5', 'UGRID']
40special[6] = ['CFC113', 'HCFC22'] 
41special[7] = ['CALIPSO', 'PARASOL']
42special[8] = ['(=dp/dt)', '13Carbon', '14Carbon', '2D-field', 'CH3COCH3']
43
44class Frag(object):
45  def __init__(self,s):
46    self.prf = ''
47    self.sfx = ''
48    if s[0] in ['(',',','.']:
49      self.prf = s[0]
50    if s[-1] in [')',',']:
51      self.sfx = s[-1]
52    self.word = s[len(self.prf):len(s)-len(self.sfx)]
53 
54  def cap(self):
55    return ''.join( [self.prf,self.word.capitalize(),self.sfx] )
56  def low(self):
57    return ''.join( [self.prf,self.word.lower(),self.sfx] )
58  def full(self):
59    return ''.join( [self.prf,self.word,self.sfx] )
60
61class TitleCase(object):
62  def __init__(self):
63    specials = set()
64    lowers = set()
65    for k in special:
66      for x in special[k]:
67        specials.add(x)
68    for k in lower:
69      for x in lower[k]:
70        lowers.add(x)
71
72    ee = dict()
73    for i in dq.coll['var'].items:
74      parts = [Frag(x) for x in i.title.split() ]
75      pold = [x.full() for x in parts]
76      pnew = []
77      if parts[0].word in specials:
78        pnew.append( parts[0].full() )
79      else:
80        pnew.append( parts[0].cap() )
81
82      for p in parts[1:]:
83        if p.word in specials:
84          pnew.append( p.full() )
85        elif p.word.lower() in lowers:
86          pnew.append( p.low() )
87        else:
88          pnew.append( p.cap() )
89      if pold != pnew:
90         ee[tuple(pnew)] = pold
91
92
93   
94    for l in sorted( ee.keys()[:25] ):
95         print '----------------'
96         print ' '.join(ee[l])
97         print ' '.join(l)
98    print 'NUMBER OF CHANGES: ', len(ee)
99
100  def list(self):
101    for k in sorted(special.keys()):
102      print k, ':: ',' '.join( sorted( special[k] ) )
103    for k in sorted(lower.keys()):
104      print k, ':: ',' '.join( sorted( lower[k] ) )
105     
106
107tc = TitleCase()
108tc.list()
Note: See TracBrowser for help on using the repository browser.