obi stats: various fixes and improvements

This commit is contained in:
mercierc
2021-05-31 16:51:06 +12:00
parent cb53381863
commit c884615522

View File

@ -154,7 +154,7 @@ def run(config):
else : else :
taxo = None taxo = None
statistics = set(config['stats']['minimum']) | set(config['stats']['maximum']) | set(config['stats']['mean']) statistics = set(config['stats']['minimum']) | set(config['stats']['maximum']) | set(config['stats']['mean']) | set(config['stats']['var']) | set(config['stats']['sd'])
total = 0 total = 0
catcount={} catcount={}
totcount={} totcount={}
@ -195,7 +195,7 @@ def run(config):
except KeyError: except KeyError:
totcount[category]=totcount.get(category,0)+1 totcount[category]=totcount.get(category,0)+1
for var in statistics: for var in statistics:
if var in line: if var in line and line[var] is not None:
v = line[var] v = line[var]
if var not in values: if var not in values:
values[var]={} values[var]={}
@ -238,14 +238,34 @@ def run(config):
else: else:
sdvar= "%s" sdvar= "%s"
hcat = "\t".join([pcat % x for x in config['stats']['categories']]) + \ hcat = ""
"\t".join([minvar % x for x in config['stats']['minimum']]) + \
"\t".join([maxvar % x for x in config['stats']['maximum']]) + \ for x in config['stats']['categories']:
"\t".join([meanvar % x for x in config['stats']['mean']]) + \ hcat += pcat % x
"\t".join([varvar % x for x in config['stats']['var']]) + \ hcat += "\t"
"\t".join([sdvar % x for x in config['stats']['sd']]) + \
"count\t" + \ for x in config['stats']['minimum']:
"total" hcat += minvar % x
hcat += "\t"
for x in config['stats']['maximum']:
hcat += maxvar % x
hcat += "\t"
for x in config['stats']['mean']:
hcat += meanvar % x
hcat += "\t"
for x in config['stats']['var']:
hcat += varvar % x
hcat += "\t"
for x in config['stats']['sd']:
hcat += sdvar % x
hcat += "\t"
hcat += "count\ttotal"
print(hcat) print(hcat)
sorted_stats = sorted(catcount.items(), key = lambda kv:(totcount[kv[0]]), reverse=True) sorted_stats = sorted(catcount.items(), key = lambda kv:(totcount[kv[0]]), reverse=True)
for i in range(len(sorted_stats)): for i in range(len(sorted_stats)):