#!/usr/bin/perl

@conditions = ("Flp_Eth", "Flp_P4", "CR3_Eth", "CR3_P4");
@reps = (1, 2);

$colorInput = "102,102,102";
$colorIP = "0,0,204";
$colorHMD = "0,204,0";


# Step 1)  Write track view header.
$prio = 100;
open(OUT, ">trackDb.txt");
print OUT "track\tICe_tracks\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tICeChIP Tracks\n";
print OUT "longLabel\tRLi ICeChIP\n";
print OUT "priority\t$prio\n";
print OUT "visibility\tfull\n";
print OUT "subGroup1\tview Views COVH=depthHMD COVR=depthRaw\n";
print OUT "subGroup2\tcondition Condition";
foreach $cnd (@conditions) { print OUT " $cnd=$cnd"; } print OUT "\n";
print OUT "subGroup3\treplicate Replicate";
foreach $rep (@reps) { print OUT " $rep=$rep"; } print OUT "\n";
print OUT "subGroup4\ttype Type Input=Input IP=IP\n";
print OUT "dimensions\tdimX=condition dimY=replicate dimA=type\n";
print OUT "sortOrder\tcondition=+ replicate=+ type=+ view=+\n";
print OUT "configurable\ton\n";
print OUT "type\tbed 3\n\n";


# Step 2a)  Write header HMD track grouping.
print OUT "   track\tICe_tracksViewDepthHMD\n";
print OUT "   parent\tICe_tracks\n";
print OUT "   shortLabel\tHMD\n";
print OUT "   longLabel\tHMD\n";
print OUT "   view\tCOVH\n";
print OUT "   visibility\tfull\n";
print OUT "   type\tbigWig\n";
print OUT "   allButtonPair\ton\n";
#print OUT "   centerLabelsDense\ton\n";
print OUT "   dragAndDrop\ton\n";
print OUT "   alwaysZero\ton\n";
print OUT "   graphTypeDefault\tbar\n";
print OUT "   maxHeightPixels\t150:40:11\n";
print OUT "   viewLimits\t0:150\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# Step 2b)  Write HMD tracks.
foreach $cnd (@conditions) { foreach $rep (@reps) {
  $id = "$cnd-$rep";
  $bwfile = "DATA/$id.HMD.bigWig";
  unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; exit; }
  $prio++;
  $thiscolor = $colorHMD;
  print OUT "      track\t$id.HMD\n";
  print OUT "      parent\tICe_tracksViewDepthHMD on\n";
  print OUT "      bigDataUrl\t$bwfile\n";
  print OUT "      shortLabel\t$id HMD\n";
  print OUT "      longLabel\tHMD: $id\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t$thiscolor\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\tshow\n";
  print OUT "      subGroups\tcondition=$cnd replicate=$rep type=IP view=COVH\n\n";
} }


# Step 3a)  Write header for raw depth track grouping.
print OUT "   track\tICe_tracksViewDepthR\n";
print OUT "   parent\tICe_tracks\n";
print OUT "   shortLabel\tRawDepth\n";
print OUT "   longLabel\tRaw Depth\n";
print OUT "   view\tCOVR\n";
print OUT "   visibility\tfull\n";
print OUT "   type\tbigWig\n";
print OUT "   allButtonPair\ton\n";
#print OUT "   centerLabelsDense\ton\n";
print OUT "   dragAndDrop\ton\n";
print OUT "   alwaysZero\ton\n";
print OUT "   graphTypeDefault\tbar\n";
print OUT "   maxHeightPixels\t150:40:11\n";
print OUT "   viewLimits\t0:100\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# Step 3b)  Write raw depth tracks.
foreach $cnd (@conditions) { foreach $rep (@reps) {
  $id = "$cnd-$rep";
  $bwfileIP = "DATA/IP_$id.hg19.fragmax220.singlefrag.bigWig";
  $bwfileInput = "DATA/Input_$id.hg19.fragmax220.singlefrag.bigWig";
  unless (-e $bwfileIP) { print "WARNING: Did not find $bwfileIP.\n"; exit; }
  unless (-e $bwfileInput) { print "WARNING: Did not find $bwfileInput.\n"; exit; }
  $prio++;
  $thiscolor = $colorIP;
  print OUT "      track\t$id.RDI\n";
  print OUT "      parent\tICe_tracksViewDepthR on\n";
  print OUT "      bigDataUrl\t$bwfileIP\n";
  print OUT "      shortLabel\t$id IP\n";
  print OUT "      longLabel\traw read depth: IP_$id\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t$thiscolor\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tcondition=$cnd replicate=$rep type=IP view=COVR\n\n";
  $prio++;
  $thiscolor = $colorInput;
  print OUT "      track\t$id.RDC\n";
  print OUT "      parent\tICe_tracksViewDepthR on\n";
  print OUT "      bigDataUrl\t$bwfileInput\n";
  print OUT "      shortLabel\t$id Input\n"; 
  print OUT "      longLabel\traw read depth: Input_$id\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t$thiscolor\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tcondition=$cnd replicate=$rep type=Input view=COVR\n\n";
} }

close(OUT);

