#!/usr/bin/perl

### Only shows downsampled data! ###

@conditions = ("wt-baseline", "Ch25h-baseline", "wt-LPS15h", "Ch25h-LPS15h", "pmac-wt", "pmac-Ch25h");
@reps = (1,2,3,"M");

%conditionKey = ("Ch25h-baseline" => "Cb", "Ch25h-LPS15h" => "CL", "pmac-Ch25h" => "pC", "pmac-wt" => "pw", "wt-baseline" => "wb", "wt-LPS15h" => "wL");
%conditionColor = ("Ch25h-baseline" => "0,128,255", "wt-baseline" => "0,0,255", 
		   "Ch25h-LPS15h" => "0,204,0", "wt-LPS15h" => "0,153,0",
		   "pmac-Ch25h" => "255,128,0", "pmac-wt" => "204,0,0");


# Step 1)  Write track view header.
$prio = 100;
open(OUT, ">trackDb.txt");
print OUT "track\tJL_ATAC_tracks\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tJL ATAC-seq\n";
print OUT "longLabel\tJulie Lowe's ATAC-seq Depth & Peaks\n";
print OUT "priority\t$prio\n";
print OUT "visibility\tfull\n";
print OUT "subGroup1\tview Views COV=depth PK=peaks\n";
print OUT "subGroup2\tcondition Condition";
foreach $cnd (@conditions) { print OUT " $conditionKey{$cnd}=$cnd"; } print OUT "\n";
print OUT "subGroup3\trepmerge RepOrMerge";
foreach $rep (@reps) { if ($rep eq "M") { print OUT " r$rep=merged"; } else { print OUT " r$rep=rep$rep"; } } print OUT "\n";
print OUT "subGroup4\tpeaksig PeakSig e3=e-3 e4=e-4\n";
print OUT "dimensions\tdimX=condition dimY=repmerge dimA=peaksig\n";
print OUT "sortOrder\tcondition=+ repmerge=+ view=-\n";
print OUT "configurable\ton\n";
print OUT "type\tbed 3\n\n";


# Step 2a)  Write header for depth track grouping.
print OUT "   track\tJL_ATAC_tracksViewDepth\n";
print OUT "   parent\tJL_ATAC_tracks\n";
print OUT "   shortLabel\tDepth, ATAC-seq\n";
print OUT "   longLabel\tDownsampled Depth, Footprints, ATAC-seq\n";
print OUT "   view\tCOV\n";
print OUT "   visibility\thide\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:50\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# Step 2b)  Write depth tracks.
foreach $cnd (@conditions) { foreach $r (@reps) {
  if ($r eq "M") { $id = $cnd; } else { $id = "$cnd".".rep$r"; } 
  $bwfile = "DATA/$id.bwt.mm9.footprint.ds.bigWig";
  $prio++;
  print OUT "      track\t$id.D\n";
  print OUT "      parent\tJL_ATAC_tracksViewDepth on\n";
  print OUT "      bigDataUrl\t$bwfile\n";
  print OUT "      shortLabel\t$id depth\n";
  print OUT "      longLabel\tread depth, downsampled footprints: $id\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t$conditionColor{$cnd}\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tcondition=$conditionKey{$cnd} repmerge=r$r view=COV\n\n";
} }


# Step 3a)  Write header for peaks track grouping.
print OUT "   track\tJL_ATAC_tracksViewPeaks\n";
print OUT "   parent\tJL_ATAC_tracks\n";
print OUT "   shortLabel\tPeaks, ATAC-seq\n";
print OUT "   longLabel\tPeaks, ATAC-seq\n";
print OUT "   view\tPK\n";
print OUT "   visibility\tdense\n";
print OUT "   type\tbigBed 3\n";
print OUT "   allButtonPair\ton\n";
#print OUT "   centerLabelsDense\ton\n";
print OUT "   dragAndDrop\ton\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# Step 3b)  Write peaks tracks.
foreach $cnd (@conditions) {
  $pkfile = "DATA/$cnd.ds.PeaKDEck_list.e-3.bigBed";
  $prio++;
  print OUT "      track\t$cnd.Pe3\n";
  print OUT "      parent\tJL_ATAC_tracksViewPeaks on\n";
  print OUT "      bigDataUrl\t$pkfile\n";
  print OUT "      shortLabel\t$cnd peaks e-3\n";
  print OUT "      longLabel\tPeaKDEck calls e-3, downsampled, merged: $cnd\n";
  print OUT "      type\tbigBed 3\n";
  print OUT "      color\t$conditionColor{$cnd}\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\tdense\n";
  print OUT "      subGroups\tcondition=$conditionKey{$cnd} repmerge=rM peaksig=e3 view=PK\n\n";
  $pkfile = "DATA/$cnd.ds.PeaKDEck_list.e-4.bigBed";
  $prio++;
  print OUT "      track\t$cnd.Pe4\n";
  print OUT "      parent\tJL_ATAC_tracksViewPeaks on\n";
  print OUT "      bigDataUrl\t$pkfile\n";
  print OUT "      shortLabel\t$cnd peaks e-4\n";
  print OUT "      longLabel\tPeaKDEck calls e-4, downsampled, merged: $cnd\n";
  print OUT "      type\tbigBed 3\n";
  print OUT "      color\t$conditionColor{$cnd}\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\tdense\n";
  print OUT "      subGroups\tcondition=$conditionKey{$cnd} repmerge=rM peaksig=e4 view=PK\n\n";
}
print OUT "\n\n";

close(OUT);
