##################################
#                                #
# Last modified 2025/08/28       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
import math
from sets import Set

def run():

    if len(sys.argv) < 10:
        print 'usage: python %s BED chrFieldID leftFieldID strandFieldID geneIDFieldID transcriptionIDFieldID geneNameFieldID transcriptNameFieldID outfile' % sys.argv[0]
        sys.exit(1)

    BED = sys.argv[1]
    chrFieldID = int(sys.argv[2])
    leftFieldID = int(sys.argv[3])
    rightFieldID = int(sys.argv[4])
    strandFieldID = int(sys.argv[5])
    geneIDFieldID = int(sys.argv[6])
    transcriptIDFieldID = int(sys.argv[7])
    geneNameFieldID = int(sys.argv[8])
    transcriptNameFieldID = int(sys.argv[9])
    outfilename = sys.argv[10]

    outfile = open(outfilename, 'w')

    lineslist  = open(BED)
    for line in lineslist:
        if line[0]=='#':
            continue
        fields=line.strip().split('\t')
        chr = fields[chrFieldID]
        left = fields[leftFieldID]
        right = fields[rightFieldID]
        strand = fields[strandFieldID]
        transcriptID = fields[transcriptIDFieldID]
        geneID = fields[geneIDFieldID]
        transcriptName = fields[transcriptNameFieldID]
        geneName = fields[geneNameFieldID]
        outline = chr + '\t.\texon\t' + left + '\t' + right + '\t.\t' + strand + '\t.\tgene_id "' + geneID + '"; transcript_id "' + transcriptID + '"; gene_name "' + geneName + '"; transcript_name "' + transcriptName + '";'
        outfile.write(outline + '\n')

    outfile.close()
        
run()

