import codecs
import sys

def printSentence(f,tokens,id):
    f.write('subgraph cluster_'+id+'{\n')
    #print 'color=blue;'
    i = 0
    for w in tokens:
        f.write(id+str(i)+ ' [label="'+w+'"];\n') 
        i+=1
    for i in range(1,len(tokens)):
        f.write(id+str(i-1)+' -- '+id+str(i)+';\n')
    f.write('\n}\n')

def printAlignments(f,alignments):
    colors = ['blue','red','orange','magenta','cyan','green']    
    for (ei,fi,v) in alignments:
        f.write('e'+str(ei)+' -- f' + str(fi)+' [label="'+str(v)+'",color='+colors[ei%len(colors)]+'];\n')

def printAlignedBlocks(filename,etokens,ftokens,alignments,name):
    f = codecs.open(filename,'w','utf-8')
    f.write('graph '+name+'{\n')
    printSentence(f,etokens,'e')
    printSentence(f,ftokens,'f')
    printAlignments(f,alignments)
    f.write('}')  
    f.close()


def printAlignedFiles(filename,outdir):
    cnt=0
    f = codecs.open(filename,'r','utf-8')
    for text in f:
        text=text[:-1]
        list = text.split('\t')
        if cnt%3 == 0:
            etokens=list
        elif cnt%3 == 1:
            ftokens=list
        else:
            alignments = []
            for c in list:
                pair = c.split(',')
                alignments.append((int(pair[0]),int(pair[1]),float(pair[2])))
                printAlignedBlocks(outdir+'/sentence'+str(cnt/3)+'.dot',etokens,ftokens,alignments,'sentence'+str(cnt/3))
        cnt+=1
    f.close()
