##################################
#                                #
# Last modified 08/06/2016       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
import os
from sets import Set

def run():

    if len(sys.argv) < 2:
        print 'usage: python %s config outfilename' % sys.argv[0]
        print '\tconfig files format: filename <tab> columnID (0-based) <tab> <label>'
        sys.exit(1)

    ConfigFile = sys.argv[1]
    outfilename = sys.argv[2]

    EntriesDict = {}

    linelist = open(ConfigFile)
    for line in linelist:
        fields = line.strip().split('\t')
        file = fields[0]
        ID = int(fields[1])
        label = fields[2]
        lines = open(file)
        EntriesDict[label] = {}
        for l in lines:
            if l.startswith('#'):
                continue
            f = l.strip().split('\t')
            EntriesDict[label][f[ID]] = 1

    EntriesListDict = {}
    for label in EntriesDict.keys():
        for entry in EntriesDict[label].keys():
            EntriesListDict[entry] = 1

    outfile = open(outfilename, 'w')

    EntriesList = EntriesListDict.keys()
    EntriesList.sort()
    labels = EntriesDict.keys()
    labels.sort()

    print labels

    outline = ''
    for L in labels:
        outline = outline + '\t' + L
    outfile.write(outline.strip() + '\n')

    for E in EntriesList:
        outline = ''
        for L in labels:
            if EntriesDict[L].has_key(E):
                outline = outline + '\t' + E
            else:
                outline = outline + '\t' + '-'
        outfile.write(outline.strip() + '\n')

    outfile.close()

run()
