1*9c5db199SXin Li#!/usr/bin/python3 2*9c5db199SXin Lifrom __future__ import absolute_import 3*9c5db199SXin Lifrom __future__ import division 4*9c5db199SXin Lifrom __future__ import print_function 5*9c5db199SXin Li 6*9c5db199SXin Liimport re 7*9c5db199SXin Liimport sys 8*9c5db199SXin Li 9*9c5db199SXin Lidef parse_file(filename): 10*9c5db199SXin Li data = {} 11*9c5db199SXin Li for line in open(filename): 12*9c5db199SXin Li if re.match('\d', line): 13*9c5db199SXin Li (samples, percent, symbol) = line.split() 14*9c5db199SXin Li data[symbol] = float(percent) 15*9c5db199SXin Li return data 16*9c5db199SXin Li 17*9c5db199SXin Li 18*9c5db199SXin Lidata1 = parse_file(sys.argv[1]) 19*9c5db199SXin Lidata2 = parse_file(sys.argv[2]) 20*9c5db199SXin Li 21*9c5db199SXin Lidelta = {} 22*9c5db199SXin Lifor symbol in list(data1.keys()) + list(data2.keys()): 23*9c5db199SXin Li delta[symbol] = data1.get(symbol, 0) - data2.get(symbol, 0) 24*9c5db199SXin Li 25*9c5db199SXin Lidef lookup_delta(symbol): 26*9c5db199SXin Li return delta[symbol] 27*9c5db199SXin Li 28*9c5db199SXin Lisorted_deltas = sorted(list(delta.keys()), key=lookup_delta, reverse=True) 29*9c5db199SXin Li 30*9c5db199SXin Liif len(sorted_deltas) > 40: 31*9c5db199SXin Li sorted_deltas = sorted_deltas[0:20] + sorted_deltas[-20:] 32*9c5db199SXin Li 33*9c5db199SXin Lifor symbol in sorted_deltas: 34*9c5db199SXin Li print('%2.3f %s' % (delta[symbol], symbol)) 35