##################################
#                                #
# Last modified 03/05/2010       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
from sets import Set


def run():

    if len(sys.argv) < 2:
        print 'usage: python %s <list of files filename> <N1,N2,N3...> outputfilename ' % sys.argv[0]
        print 'one file name per line in input file' 
        print 'include a veyr big number as a last value' 
        sys.exit(1)
    
    input = sys.argv[1]
    BoundaryValues = sys.argv[2]
    outfilename = sys.argv[3]

    boundaries=[]
    fields=BoundaryValues.split(',')
    for field in fields:
        boundaries.append(int(field))

    StatDict={}        
    boundaries.sort()
    for b in boundaries:
        StatDict[b]=0

    outfile = open(outfilename, 'w')
    outline='#'
    for b in boundaries:
        outline=outline+'\t'+str(b)
    for b in boundaries:
        outline=outline+'\t'+str(b)
    outfile.write(outline+'\n')

    lines = open(input)
    for filename in lines:
        file=filename.strip()
        print file
        lineslist=open(file)
        valueList=[]
        NumberLines=1.0
        for line in lineslist:
            fields=line.strip().split('\t')
            value=float(fields[0])
            valueList.append(value)
            NumberLines+=1
        valueList=valueList+boundaries
        valueList.sort()
        outline=file.split('/')[-1]
        lastPos=0
        for b in boundaries:
            outline=outline+'\t'+str(valueList.index(b)-lastPos-1)
            lastPos=valueList.index(b)
        lastPos=0
        for b in boundaries:
            outline=outline+'\t'+str((valueList.index(b)-lastPos-1)/NumberLines)
            lastPos=valueList.index(b)
        outfile.write(outline+'\n')
    
    outfile.close()
            
run()
