#!/usr/bin/python

import sys
import random

def random_color():

    r = random.randint(0,255)
    g = random.randint(0,255)
    b = random.randint(0,255)
    rgb = [r,g,b]
    
    return f"{r},{g},{b}"

def parse_track(line):
    t = line.split(" ")

    name=t[3].split("=")[1][1:-1]
    gnumbers=t[2].split("=")[1][1:-1].split(".")[0]
    name=f"{name}.{gnumbers}"
    
    forward=t[-1].split("=")[1]
    reverse=forward.replace("Forward","Reverse")
    return [name, forward, reverse]

def header():
    s ="""
hub MaleFemale76K hub
shortLabel MaleFemale76K
longLabel MaleFemale76K
useOneFile on
email mpyatkov@bu.edu

genome mm9
    """
    return s.strip()

def make_track(tracks_params, limits, visibility, color, autoscale):
    name,forward,reverse=tracks_params

    shortname=f"{limits}_{name}"
    return f"""
track {shortname}
type bigWig
container multiWig
shortLabel {limits}_{name}.combined
longLabel {limits}_{name}.combined
visibility {visibility}
aggregate solidOverlay
autoScale {autoscale}
showSubtrackColorOnUi on
maxHeightPixels 500:128:8
viewLimits -{limits}:{limits}
priority 1

            track {limits}.{name}.Forward
            bigDataUrl {forward}
            shortLabel {name}.Forward
            longLabel {name}.Forward
            parent {shortname}
            graphTypeDefault bar
            type bigWig
            color {color}

            track {limits}.{name}.Reverse
            bigDataUrl {reverse}
            shortLabel {name}.Reverse
            longLabel {name}.Reverse
            parent {shortname}
            graphTypeDefault bar
            type bigWig
            color {color}"""

with open(sys.argv[1], "r") as input:
    tracks = list(map(lambda x: x.strip(),input.readlines()))
    # print(tracks)
    print(header())

    # for limits in [4,12,60,112,240]:
    for limits in [4,12,60]:
        visibility="hide"
        autoscale="off"

        if limits == 12:
            visibility="full"
        if limits == 240:
            autoscale="on"

        for track in tracks:
            track_params = parse_track(track)
            print(make_track(track_params, limits, visibility, random_color(), autoscale))
        


