#!/usr/bin/perl

@sexes = ("XX","XY");
@ages = ("E12","E14","E16","E18");
@reps = ("1","2");

$dkPink = "255,0,127";    # female
$dkBlue = "0,0,204";	  # male
%useColor = ("XX" => $dkPink, "XY" => $dkBlue);

$verydkGray = "64,64,64"; # for unified peaks


open(OUT, ">trackDb.ATAC.txt");

##### supertrack1: normalized depth #####
# write header supertrack header
$prio = 100;
print OUT "track\tdataATACNorm\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tATACseqNorm\n";
print OUT "longLabel\tATAC-seq depth\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tview View NRM=normDepth\n";
print OUT "subGroup2\tSex Sex"; foreach $sex (@sexes) { print OUT " $sex=$sex"; } print OUT "\n";
print OUT "subGroup3\tAge Age"; foreach $age (@ages) { print OUT " $age=$age"; } print OUT "\n";
print OUT "subGroup4\tRep Rep"; foreach $rep (@reps) { print OUT " $rep=$rep"; } print OUT "\n";
print OUT "dimensions\tdimX=Sex dimY=Age dimA=Rep\n";
print OUT "sortOrder\tSex=+ Age=+ 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:30:11\n";
print OUT "   viewLimits\t0:20\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# write normalized depth tracks
foreach $sex (@sexes) { foreach $age (@ages) { foreach $r (@reps) {
  $id = "$sex"."_$age"."-rep$r";
  $bwfile = "data/$id.bwt.mm10.footprint.norm30M.bigWig";
  unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; exit; }
  $prio++;
  $thiscolor = $useColor{$sex};
  print OUT "      track\t$id.DN\n";
  print OUT "      parent\tdataATACNorm_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$thiscolor\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tSex=$sex Age=$age Rep=$r 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\tdense\n";
print OUT "type\tbed 3\n\n";
foreach $sex (@sexes) { foreach $age (@ages) { foreach $r (@reps) {
  $id = "$sex"."_$age"."-rep$r";
  $bbfile = "data/peaks/$id.MACS2_m200_peaks.bigBed";
  unless (-e $bbfile) { print "WARNING: Did not find $bbfile.\n"; exit; }
  $prio++;
  $thiscolor = $useColor{$sex};
  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 peak options #####
# write header supertrack header
$prio = 230;
print OUT "track\tdataATACPeaksU\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tATAC peaks, unified\n";
print OUT "longLabel\tATAC-seq peaks, unified options\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tType Type UniOption=UniOption\n";
print OUT "dimensions\tdimY=Type\n";
print OUT "sortOrder\tType=+\n";
print OUT "visibility\tdense\n";
print OUT "type\tbed 3\n\n";
for ($n=1; $n<17; $n++) {
  $bbfile = "data/peaks/MACS2_unified.ov$n.bigBed";
  unless (-e $bbfile) { print "WARNING: Did not find $bbfile.\n"; exit; }
  $prio++;
  $thiscolor = $verydkGray;
  print OUT "    track\tuni$n.P\n";
  print OUT "    parent\tdataATACPeaksU\n";
  print OUT "    bigDataUrl\t$bbfile\n";
  print OUT "    shortLabel\tunified ov$n\n";
  print OUT "    longLabel\tunified, overlap $n+ samples\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=UniOption\n\n";
}


##### supertrack4: differential peaks #####
# write header supertrack header
$prio = 250;
print OUT "track\tdataATACDiffPeaks\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tATAC peaks Diff\n";
print OUT "longLabel\tdifferential peaks\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tType Type DiffBySex=DiffBySex DiffByAge=DiffByAge\n";
print OUT "dimensions\tdimY=Type\n";
print OUT "sortOrder\tType=+\n";
print OUT "visibility\tdense\n";
print OUT "type\tbigBed 9+\n\n";

# write peak tracks
foreach $age (@ages) {
  print OUT "    track\tdiffMF.$age\n";
  print OUT "    parent\tdataATACDiffPeaks\n";
  print OUT "    bigDataUrl\tdata/peaks/unified_peaks.$age\_MvsF.FDR0.01_RPKM3.bigBed\n";
  print OUT "    shortLabel\tM-vs-F at $age\n";
  print OUT "    longLabel\tEdgeR test: $age\-XY vs $age\-XX\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=DiffBySex\n\n";
}

print OUT "    track\tdiffAge.F\n";
print OUT "    parent\tdataATACDiffPeaks\n";
print OUT "    bigDataUrl\tdata/peaks/unified_peaks.F_E14vsE12.FDR0.01_RPKM3.bigBed\n";
print OUT "    shortLabel\tE14-vs-E12 XX\n";
print OUT "    longLabel\tEdgeR test: E14-XX vs E12-XX\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=DiffByAge\n\n";

print OUT "    track\tdiffAge.M\n";
print OUT "    parent\tdataATACDiffPeaks\n";
print OUT "    bigDataUrl\tdata/peaks/unified_peaks.M_E14vsE12.FDR0.01_RPKM3.bigBed\n";
print OUT "    shortLabel\tE14-vs-E12 XY\n";
print OUT "    longLabel\tEdgeR test: E14-XY vs E12-XY\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=DiffByAge\n\n";

close(OUT);
