#
#  listGeneFeatures.py
#  ENRAGE
#

import sys
from cistematic.genomes import Genome
from commoncode import getMergedRegions, getFeaturesByChromDict

print "listGeneFeatures: version 1.2"


def main(argv=None):
    if not argv:
        argv = sys.argv

    if len(argv) < 4:
        print "usage: python %s genome [acceptFile] gid outfile\n" % argv[0]
        sys.exit(1)

    genome = argv[1]

    if len(argv) == 4:
        gid = argv[2]
        outfile = argv[3]
    else:
        acceptFileName = argv[2]
        gid = argv[3]
        outfile = argv[4]

    listGeneFeatures(genome, gid, outfile, acceptFileName)


def listGeneFeatures(genome, gid, outFileName, acceptFileName=""):
    hg = Genome(genome)
    outfile = open(outFileName, "w")
    if acceptFileName:
        additionalDict = getMergedRegions(acceptFileName, maxDist = 0, keepLabel = True, verbose = True)
    else:
        additionalDict = {}

    featuresDict = getFeaturesByChromDict(hg, additionalDict, restrictList=[gid])
    outfile.write('track name="LOC%s"\n' % gid)

    senseDict = {"F": "+",
                 "R": "-",
                 "+": "+",
                 "-": "-"
    }

    for chrom in featuresDict:
        for (start, stop, fgid, sense, ftype) in featuresDict[chrom]:
            outfile.write("chr%s\t%d\t%d\t%s\t0\t%s\n" % (chrom, start, stop, ftype, senseDict[sense]))

    outfile.close()


if __name__ == "__main__":
    main(sys.argv)