source: CCCC/tags/0.1/summary.py @ 151

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CCCC/tags/0.1/summary.py@1241
Revision 151, 1.5 KB checked in by astephen, 6 years ago (diff)

Updates to run smoothly on CMIP5: taking type from mip tables; cleaned up error messages

Line 
1
2import string, sys, glob
3
4args = sys.argv[1:-1]
5idir = sys.argv[-1]
6ndisp = 2
7while len(args) > 0:
8  x = args.pop(0)
9  if x == '-n':
10    ndisp = int( args.pop(0) )
11
12fl = glob.glob( '%s/*__qclog_*.txt' % idir )
13
14ee = {}
15print 'Summarising error reports from %s log file' % len(fl)
16nne = 0
17for f in fl:
18  nef = 0
19  for l in open(f).readlines():
20    fn = string.split(f,'/')[-1]
21    if string.find(l, 'FAILED') != -1 or string.find(l,'CDMSError:') != -1:
22      nef += 1
23      if string.find(l, 'FAILED') != -1:
24         kb1 = 3
25      else:
26         kb1 = 1
27      bits = string.split(l, ':' )
28      if len(bits) > kb1:
29        code = bits[0]
30        msg = string.strip( string.join(bits[kb1:], ':' ) )
31        if code not in ee.keys():
32          ee[code] = [0,{msg:[0,[]]}]
33        elif msg not in ee[code][1].keys():
34          ee[code][1][msg] = [0,[]]
35        ee[code][0] += 1
36        ee[code][1][msg][0] += 1
37        if ee[code][1][msg][0] < 10:
38          ee[code][1][msg][1].append(fn)
39      else:
40        print bits
41  if nef == 0:
42    nne += 1
43
44keys = ee.keys()
45keys.sort()
46def cmin(x,y):
47  if x < 0:
48    return y
49  else:
50    return min(x,y)
51
52for k in keys:
53  ks = ee[k][1].keys()
54  if len(ks) == 1:
55    print k,ee[k][0],ks[0]
56    for i in range(cmin(ndisp,ee[k][0])):
57      print '               ',ee[k][1][ks[0]][1][i]
58  else:
59    print k,ee[k][0]
60    ks.sort()
61    for k2 in ks:
62      print '  --- ',k2,ee[k][1][k2][0]
63      for i in range(cmin(ndisp,ee[k][1][k2][0])):
64        print '               ',ee[k][1][k2][1][i]
65
66
67print 'Number of files with no errors: %s' % nne
68
69
70
Note: See TracBrowser for help on using the repository browser.