#!/usr/bin/python

def Seqs_Count(in_name, out_name, min_val, max_val, column_n):

	print "INPUT FILE:  " + in_name
	print "OUTPUT FILE: " + out_name
	print "MIN VALUE:   " + `min_val`
	print "MAX VALUE:   " + `max_val`
	print "COLUMN No:   " + `column_n`

	column_n = column_n - 1

	in_file  = open(in_name,  "rb")
	out_file = open(out_name, "wb")

	prm_count = 0
	id_list = []
	tot_value = {}

	k = min_val
	while k <= max_val:
		tot_value[k] = 0
		k = k + 1

	print tot_value[1]
	print tot_value[100]

	while 1:
		t = in_file.readline()
		if t == '':
			break
		if '\n' in t:
			t = t[:-1]
		if '\r' in t:
			t = t[:-1]
		t = t.split('\t')
		####
		comment_contr = "".join(t)
		if comment_contr[0:1] != "#":
			cur_value = t[column_n]
			cur_value = float(cur_value)
			cur_value = int(cur_value)
			prm_count = prm_count + 1
			# print comment_contr[0:1]
			print `prm_count` + '\t' + `cur_value`
			if cur_value >= max_val:
				cur_value = max_val
			tot_value[cur_value] = tot_value[cur_value] + 1

	k = min_val
	dummy = "="
	while k <= max_val:
		# val_pcnt = int(round(tot_value[k]*100.00/prm_count))
		val_pcnt = round((tot_value[k]*100.00/prm_count),4)
		val_pcnt_int = int(round(val_pcnt*10.00))
		dummy_length = dummy*val_pcnt_int
		val_pcnt = str(val_pcnt)
		print `k` + '\t' + `tot_value[k]` + '\t' + val_pcnt + '\t' + dummy_length
		out_file.write(`k` + '\t' + `tot_value[k]` + '\t' + val_pcnt + '\t' + dummy_length + '\n')
		k = k + 1

	in_file.close()
	out_file.close()


import math
import re
import sys
import string
if __name__ == "__main__":
	if len(sys.argv) <= 5 or len(sys.argv) > 6:
		print "Program usage: "
		print "input_file output_file min_val max_val column_n"
		exit
	if len(sys.argv) == 6:
		in_name   = sys.argv[1]
		out_name  = sys.argv[2]
		min_val   = sys.argv[3]
		max_val   = sys.argv[4]
		column_n  = sys.argv[5]
		min_val   = int(min_val)
		max_val   = int(max_val)
		column_n  = int(column_n)
		Seqs_Count(in_name, out_name, min_val, max_val, column_n)

