##################################
#                                #
# Last modified 2024/01/23       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string

def run():

    if len(sys.argv) < 7:
        print 'usage: python %s file1 fielID1 labelID1 file2 fielID2 labelID2 Soutfilename' % sys.argv[0]
        sys.exit(1)

    file1 = sys.argv[1]
    file2 = sys.argv[4]
    fieldID1 = int(sys.argv[2])
    fieldID2 = int(sys.argv[5])
    labelID1 = int(sys.argv[3])
    labelID2 = int(sys.argv[6])
    outfilename = sys.argv[7]

    GroupsDict = {}

    linelist = open(file1)
    for line in linelist:
        if line.startswith('#') or line.strip() == '':
            continue
        fields = line.strip().split('\t')
        label = fields[labelID1]
        if GroupsDict.has_key(label):
            pass
        else:
            GroupsDict[label] = {}
            GroupsDict[label][1] = []
            GroupsDict[label][2] = []
        GroupsDict[label][1].append(fields[fieldID1])

    linelist = open(file2)
    for line in linelist:
        if line.startswith('#') or line.strip() == '':
            continue
        fields = line.strip().split('\t')
        label = fields[labelID2]
        if GroupsDict.has_key(label):
            pass
        else:
            continue
        GroupsDict[label][2].append(fields[fieldID1])

    outfile = open(outfilename,'w')

    labels = GroupsDict.keys()

    for label in labels:
        for item1 in GroupsDict[label][1]:
            for item2 in GroupsDict[label][2]:
                outline = label + '\t' + item1 + '\t' + item2
                outfile.write(outline + '\n')

    outfile.close()

run()

