##################################
#                                #
# Last modified 2019/08/23       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string

def run():

    if len(sys.argv) < 3:
        print 'usage: python %s fimo.tsv motifName outputfilename' % sys.argv[0]
        sys.exit(1)

    fimo = sys.argv[1]
    motif = sys.argv[2]
    outfilename = sys.argv[3]

    MotifDict = {}

    linelist = open(fimo)
    for line in linelist:
        if line.startswith('motif_id\t'):
            continue
        if line.startswith('#'):
            continue
        if line.strip() == '':
            continue
        fields = line.strip().split('\t')
        if fields[1] == motif:
            pass
        else:
            continue
        chr = fields[2]
        left = int(fields[3])
        right = int(fields[4])
        if MotifDict.has_key(chr):
            pass
        else:
            MotifDict[chr] = {}
        MotifDict[chr][(left,right)] = 1

    MotifDistDict = {}

    for chr in MotifDict.keys():
        if len(MotifDict[chr].keys()) <= 1:
            continue
        motifs = MotifDict[chr].keys()
        motifs.sort()
        for i in range(len(motifs) - 1):
            (l1,r1) = motifs[i]
            (l2,r2) = motifs[i+1]
            m1 = int((l1 + r1)/2.0)
            m2 = int((l2 + r2)/2.0)
            D = m2 - m1
            if MotifDistDict.has_key(D):
                pass
            else:
                MotifDistDict[D] = 0
            MotifDistDict[D] += 1
            
    outfile = open(outfilename, 'w')

    outline = '#Dist\tnumber_motif_pairs'

    Ds = MotifDistDict.keys()
    Ds.sort()

    for D in Ds:
        outline = str(D) + '\t' + str(MotifDistDict[D])
        outfile.write(outline + '\n')

    outfile.close()
   
run()
