#!/usr/bin/perl

@trts = ("NoTx", "Iso", "1A8");
@reps = ("1", "2", "3", "4");
@repsM = ("1", "2", "3", "4", "M");

$myColorATAC = "0,0,204";  # consider color-coding by cell type, treatment, or age if requested by priya/seddon
$myColorRNA = "0,128,255"; 

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

##### supertrack1: raw depth #####
# write header supertrack header
print OUT "track\tdataRaw\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tATACseqRaw\n";
print OUT "longLabel\tATAC-seq data (raw depth)\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tView View RAW=rawDepth\n";
print OUT "subGroup2\tTreatment Treatment"; foreach $t (@trts) { print OUT " $t=$t"; } print OUT "\n";
print OUT "subGroup3\tRep Rep"; foreach $r (@reps) { print OUT " $r=$r"; } print OUT "\n";
print OUT "dimensions\tdimX=Treatment dimY=Rep\n";
print OUT "sortOrder\tTreatment=+ Rep=+\n";
print OUT "type\tbigWig\n\n";

# write header for raw depth tracks (by sample only)
print OUT "   track\tdataRaw_ViewDepth\n";
print OUT "   parent\tdataRaw\n";
print OUT "   shortLabel\tFootprintsRaw\n";
print OUT "   longLabel\tATAC-seq footprints (raw)\n";
print OUT "   view\tRAW\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:30:11\n";
print OUT "   viewLimits\t0:30\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# write raw depth tracks (by sample only)
foreach $trt (@trts) { foreach $r (@reps) {
  $id = "$trt"."-$r";
  $bwfile = "DATA/$id.mm9.footprint.raw.bigWig";
  unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; next; }
  $prio++;
  print OUT "      track\t$id.DR\n";
  print OUT "      parent\tdataRaw_ViewDepth\n";
  print OUT "      bigDataUrl\t$bwfile\n";
  print OUT "      shortLabel\t$id raw\n";
  print OUT "      longLabel\traw footprints depth: $id\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t$myColorATAC\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tTreatment=$trt Rep=$r View=RAW\n\n";
} }
print OUT "\n\n";


##### supertrack2: normalized depth  #####
# write header supertrack header
$prio = 200;
print OUT "track\tdataNorm\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\tTreatment Treatment"; foreach $t (@trts) { print OUT " $t=$t"; } print OUT "\n";
print OUT "subGroup3\tRep Rep"; foreach $r (@repsM) { print OUT " $r=$r"; } print OUT "\n";
print OUT "dimensions\tdimX=Treatment dimY=Rep\n";
print OUT "sortOrder\tTreatment=+ Rep=+\n";
print OUT "type\tbigWig\n\n";

# write header for normalized depth tracks
print OUT "   track\tdataNorm_ViewDepth\n";
print OUT "   parent\tdataNorm\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:30:11\n";
print OUT "   viewLimits\t0:30\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# write normalized depth tracks
foreach $trt (@trts) { foreach $r (@reps) {
  $id = "$trt"."-$r";
  $bwfile = "DATA/$id.mm9.footprint.norm50M.bigWig";
  unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; next; }
  $prio++;
  print OUT "      track\t$id.DN\n";
  print OUT "      parent\tdataNorm_ViewDepth\n";
  print OUT "      bigDataUrl\t$bwfile\n";
  print OUT "      shortLabel\t$id\n";
  print OUT "      longLabel\tfootprints depth: $id\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t$myColorATAC\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tTreatment=$trt Rep=$r View=NRM\n\n";
} }
foreach $trt (@trts) {
  $id = $trt;
  $bwfile = "DATA/$id.mm9.footprint.norm50M.bigWig";
  unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; next; }
  $prio++;
  print OUT "      track\t$id.DN\n";
  print OUT "      parent\tdataNorm_ViewDepth\n";
  print OUT "      bigDataUrl\t$bwfile\n";
  print OUT "      shortLabel\t$id\n";
  print OUT "      longLabel\tfootprints depth: $id\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t$myColorATAC\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tTreatment=$trt Rep=M View=NRM\n\n";
}
print OUT "\n\n";


##### supertrack3: peaks per sample #####
# write header supertrack header
$prio = 300;
print OUT "track\tdataPeaks\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tATACseqPeaks\n";
print OUT "longLabel\tATAC-seq peaks\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tType Type Sample=Sample Unified=Unified\n";
print OUT "dimensions\tdimX=Type\n";
print OUT "sortOrder\tType=+\n";
print OUT "type\tbed 3\n\n";
# write peak tracks by sample
foreach $trt (@trts) { foreach $r (@reps) {
  $id = "$trt"."-$r";
  $bbfile = "DATA/$id.MACS2.bigBed";
  unless (-e $bbfile) { print "WARNING: Did not find $bbfile.\n"; next; }
  $prio++;
  print OUT "    track\t$id.P\n";
  print OUT "    parent\tdataPeaks\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$myColorATAC\n";
  print OUT "    priority\t$prio\n";
  print OUT "    visibility\thide\n";
  print OUT "    subGroups\tType=Sample\n\n";
} }
# write unified peak tracks
  print OUT "    track\tuniMin2.P\n";
  print OUT "    parent\tdataPeaks\n";
  print OUT "    bigDataUrl\tDATA/MACS2_unified.min2.bigBed\n";
  print OUT "    shortLabel\tunified peaks (min2)\n";
  print OUT "    longLabel\tMACS2 peaks: unified, minimum overlap 2\n";
  print OUT "    type\tbigBed\n";
  print OUT "    color\t$myColorATAC\n";
  print OUT "    priority\t$prio\n";
  print OUT "    visibility\thide\n";
  print OUT "    subGroups\tType=Unified\n\n";
  print OUT "    track\tuniMin3.P\n";
  print OUT "    parent\tdataPeaks\n";
  print OUT "    bigDataUrl\tDATA/MACS2_unified.min3.bigBed\n";
  print OUT "    shortLabel\tunified peaks (min3)\n";
  print OUT "    longLabel\tMACS2 peaks: unified, minimum overlap 3\n";
  print OUT "    type\tbigBed\n";
  print OUT "    color\t$myColorATAC\n";
  print OUT "    priority\t$prio\n";
  print OUT "    visibility\thide\n";
  print OUT "    subGroups\tType=Unified\n\n";
  print OUT "    track\tuniMin2G.P\n";
  print OUT "    parent\tdataPeaks\n";
  print OUT "    bigDataUrl\tDATA/MACS2_unified.min2-rmNoisy.bigBed\n";
  print OUT "    shortLabel\tunified peaks (min2,v2)\n";
  print OUT "    longLabel\tMACS2 peaks: unified, minimum overlap 2 non-noisy\n";
  print OUT "    type\tbigBed\n";
  print OUT "    color\t$myColorATAC\n";
  print OUT "    priority\t$prio\n";
  print OUT "    visibility\thide\n";
  print OUT "    subGroups\tType=Unified\n\n";
close(OUT);
