#!/usr/bin/perl

@grps = ("MBD","WT");
@reps = ("1","2","3");

$dkBlue = "0,0,204";   # WT
$dkRed = "204,0,0";    # MBD
$black = "0,0,0";      # unified peaks
%useColor = ("MBD" => $dkRed, "WT" => $dkBlue);

open(OUT, ">trackDb.ATAC.txt");
$prio = 100;

##### supertrack1: normalized depth  #####
# write header supertrack header
print OUT "track\tdataATACNorm\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tATACseqNorm\n";
print OUT "longLabel\tATAC-seq data (normalized depth)\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tview View NRM=normDepth\n";
print OUT "subGroup2\tGroup Group "; foreach $grp (@grps) { print OUT " $grp=$grp"; } print OUT "\n";
print OUT "subGroup4\tRep Rep "; foreach $rep (@reps) { print OUT " $rep=$rep"; } print OUT "\n";
print OUT "dimensions\tdimX=Group dimY=Rep\n";
print OUT "sortOrder\tGroup=+ Rep=+\n";
print OUT "type\tbigWig\n\n";

# write header for normalized depth tracks
print OUT "   track\tdataATACNorm_ViewDepth\n";
print OUT "   parent\tdataATACNorm\n";
print OUT "   shortLabel\tFootprints\n";
print OUT "   longLabel\tATAC-seq footprints (normalized)\n";
print OUT "   view\tNRM\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:80\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# write normalized depth tracks
foreach $grp (@grps) { foreach $rep (@reps) {
  $id = "$grp$rep";
  $bwfile = "data/$id.bwt.mm9.footprint.norm60M.bigWig";
  unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; exit; }
  $prio++;
  $thiscolor = $useColor{$grp};
  print OUT "      track\t$id.DN\n";
  print OUT "      parent\tdataATACNorm_ViewDepth\n";
  print OUT "      bigDataUrl\t$bwfile\n";
  print OUT "      shortLabel\t$id ATAC 9mers\n";
  print OUT "      longLabel\tfootprints depth: $id\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t$thiscolor\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\tfull\n";
  print OUT "      subGroups\tGroup=$grp Rep=$rep view=NRM\n\n";
} }
print OUT "\n\n";


##### supertrack2: peaks per sample #####
# write header supertrack header
$prio = 200;
print OUT "track\tdataATACPeaks\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tATAC peaks BySample\n";
print OUT "longLabel\tATAC-seq peaks\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tType Type Sample=Sample\n";
print OUT "dimensions\tdimY=Type\n";
print OUT "sortOrder\tType=+\n";
print OUT "visibility\thide\n";
print OUT "type\tbed 3\n\n";
foreach $grp (@grps) { foreach $rep (@reps) {
  $id = "$grp$rep";
  $bbfile = "data/$id.MACS2.bigBed";
  unless (-e $bbfile) { print "WARNING: Did not find $bbfile.\n"; exit; }
  $prio++;
  $thiscolor = $useColor{$grp};
  print OUT "    track\t$id.P\n";
  print OUT "    parent\tdataATACPeaks\n";
  print OUT "    bigDataUrl\t$bbfile\n";
  print OUT "    shortLabel\t$id peaks\n";
  print OUT "    longLabel\tMACS2 peaks: $id\n";
  print OUT "    type\tbigBed\n";
  print OUT "    color\t$thiscolor\n";
  print OUT "    priority\t$prio\n";
  print OUT "    visibility\thide\n";
  print OUT "    subGroups\tType=Sample\n\n";
} }


##### supertrack3: unified peaks #####
# write header supertrack header
$prio = 300;
print OUT "track\tdataATACPeaksU\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tATAC unified peaks\n";
print OUT "longLabel\tunified peaks\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tType Type All=All Filt=Filt ColorByDiff=ColorByDiff\n";
print OUT "dimensions\tdimY=Type\n";
print OUT "sortOrder\tType=+\n";
#itemRgb\tOn\n";
print OUT "visibility\tdense\n";
print OUT "type\tbigBed 9+\n\n";

# write peak tracks
print OUT "    track\tuniAll.P\n";
print OUT "    parent\tdataATACPeaksU\n";
print OUT "    bigDataUrl\tdata/unified_MACS2-all.min2of6.minSize50bp.bigBed\n";
print OUT "    shortLabel\tunified peaks\n";
print OUT "    longLabel\tMACS2 peaks: unified\n";
print OUT "    type\tbigBed\n";
print OUT "    color\t$black\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\tdense\n";
print OUT "    subGroups\tType=All\n\n";

#$prio++;
#print OUT "    track\tuniAllDiff.P\n";
#print OUT "    parent\tdataATACPeaksU\n";
#print OUT "    bigDataUrl\tdata/MBDvsWT.edgeR.bigBed\n";
#print OUT "    shortLabel\tMBD-vs-WT unified peaks\n";
#print OUT "    longLabel\tMACS2 peaks: MBD vs WT\n";
#print OUT "    type\tbigBed 9+\n";
#print OUT "    itemRgb\tOn\n";
#print OUT "    priority\t$prio\n";
#print OUT "    visibility\tdense\n";
#print OUT "    subGroups\tType=ColorByDiff\n\n";


@ff = (1, 1.2, 1.5, 2);
foreach $f (@ff) {
$prio++;
print OUT "    track\tuniMin10DiffF$f.P\n";
print OUT "    parent\tdataATACPeaksU\n";
print OUT "    bigDataUrl\tdata/MBDvsWT.edgeR.9KPM_min10.FC_$f.bigBed\n";
print OUT "    shortLabel\tMBD-vs-WT, FDR 0.01, FC $f\n";
print OUT "    longLabel\tMACS2 peaks: MBD vs WT, FDR 0.01, FC $f\n";
print OUT "    type\tbigBed 9+\n";
print OUT "    itemRgb\tOn\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\tdense\n";
print OUT "    subGroups\tType=ColorByDiff\n\n";
}


@ff = ("min2", "min3", "min5", "min10", "min15", "min20");
foreach $f (@ff) {
$prio++;
$M = $f; $M =~ s/min//;
print OUT "    track\tuniFilt.$f.P\n";
print OUT "    parent\tdataATACPeaksU\n";
print OUT "    bigDataUrl\tdata/unified_MACS2-all.min2of6.minSize50bp.9KPM_$f.bigBed\n";
print OUT "    shortLabel\tunified 9KPM >= $M\n";
print OUT "    longLabel\tMACS2 peaks: 9KPM >= $M\n";
print OUT "    type\tbigBed 3\n";
print OUT "    itemRgb\tOn\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\tdense\n";
print OUT "    subGroups\tType=Filt\n\n";
}


close(OUT);
