import sys
print 'usage: python Super_matrix_from_contact.py input_file binsize(bp) ref(hg19/mm9)'
fn=sys.argv[1]
bin_size=int(sys.argv[2])
reference=sys.argv[3]
dfh=open(fn,'r')
rfh=open(sys.argv[2]+'.super_matrix.txt','w')
ref=open(reference+'_chrNameLength.txt','r')
chros=[]
data=[]
Total_bin_num=0
index=[]
for i in ref:
	line=i.split()
	chro_size=int(line[1])
	chros.append(line[0])
	Total_bin_num+=((chro_size/bin_size)+1)
	for b in range(0,(chro_size/bin_size)+1):
		index.append(line[0]+':'+str(b))

for i in range(0,Total_bin_num):
	data.append([])
	for a in range(0,Total_bin_num):
		data[-1].append(0)
for i in dfh:
	line=i.split()
	if line[0]==line[3]:
		if int(line[1])<=int(line[4]):
			data[index.index(line[0]+':'+str(int(line[1])/bin_size))][index.index(line[3]+':'+str(int(line[4])/bin_size))]+=1
		if int(line[1])>int(line[4]):
			data[index.index(line[3]+':'+str(int(line[4])/bin_size))][index.index(line[0]+':'+str(int(line[1])/bin_size))]+=1
	if line[0]!=line[3]:
		if chros.index(line[0])<chros.index(line[3]):
			data[index.index(line[0]+':'+str(int(line[1])/bin_size))][index.index(line[3]+':'+str(int(line[4])/bin_size))]+=1
		if chros.index(line[0])>chros.index(line[3]):
			data[index.index(line[3]+':'+str(int(line[4])/bin_size))][index.index(line[0]+':'+str(int(line[1])/bin_size))]+=1
count=0
for i in range(0,Total_bin_num):
	for a in range(0,Total_bin_num):
#		if data[i][a]>0 and index[i].split(':')[0]+':'+str(int(index[i].split(':')[1])*bin_size)+'-'+str(bin_size+int(index[i].split(':')[1])*bin_size)!=index[a].split(':')[0]+':'+str(int(index[a].split(':')[1])*bin_size)+'-'+str(bin_size+int(index[a].split(':')[1])*bin_size):
		if data[i][a]>0:
			rfh.write(index[i].split(':')[0]+':'+str(int(index[i].split(':')[1])*bin_size)+'-'+str(bin_size+int(index[i].split(':')[1])*bin_size)+'\t'+index[a].split(':')[0]+':'+str(int(index[a].split(':')[1])*bin_size)+'-'+str(bin_size+int(index[a].split(':')[1])*bin_size)+'\t'+str(data[i][a])+'\n')
