#!/usr/bin/env python3
import sys

def main(file_, zero, one, mscf_num=10):
	#TODO dict with classes names
	results = [[0,0],[0,0]]
	classes = {zero : 0, one : 1}
	misclassified = []	

	with open(file_) as f:
		for i, line in enumerate(f):
			if i ==0:
				pass
			else:
				splitted = line.split()
				true_class = classes[splitted[1]]
				predicted = classes[splitted[2].split(":")[0]]
				if (true_class != predicted):
					p_predicted = float(splitted[2].split(":")[1])
					p_true = float(splitted[3].split(":")[1])
					misclassified.append([p_predicted/p_true,splitted[0]])
				results[true_class][predicted] += 1

	sorted_mscf = sorted(misclassified, key=lambda x : x[0],reverse=True)

	total = results[0][0]+results[0][1]+results[1][0]+results[1][1]
	accuracy = (results[0][0]+results[1][1])/float(total)
	print("accuracy:",round(accuracy,2))
	print("confusion matrix")
	for row in results:
		print(row)

	print("first "+str(mscf_num)+" incorrectly classified:")
	for sm in sorted_mscf[:int(mscf_num)]:
		print(sm)

if __name__ == "__main__":
	if len(sys.argv) > 3:
		main(*sys.argv[1:])
	else:
		print("usage: file_name pos_class neg_class")
