#!/usr/bin/perl

@ids = ("id20","id40","id49","id79","idH9");

$dkBlue = "0,0,204";  # dark blue
$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\tSample Sample"; foreach $id (@ids) { print OUT " $id=$id"; } print OUT "\n";
print OUT "dimensions\tdimX=Sample\n";
print OUT "sortOrder\tSample=+\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:20\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# write normalized depth tracks
foreach $id (@ids) {
  $bwfile = "data/$id.bwt.hg38.footprint.norm40M.bigWig";
  unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; exit; }
  $prio++;
  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$dkBlue\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tSample=$id\n\n";
}
print OUT "\n\n";


##### supertrack2: peaks per sample #####
# write header supertrack header
$prio = 110;
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	$id (@ids) {
  $bbfile = "data/$id.MACS2_m200_peaks.bigBed";
  unless (-e $bbfile) { print "WARNING: Did not find $bbfile.\n"; exit; }
  $prio++;
  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$dkBlue\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 = 120;
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<6; $n++) {
  $bbfile = "data/MACS2_unified.ov$n.bigBed";
  unless (-e $bbfile) { print "WARNING: Did not find $bbfile.\n"; exit; }
  $prio++;
  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$verydkGray\n";
  print OUT "    priority\t$prio\n";
  print OUT "    visibility\thide\n";
  print OUT "    subGroups\tType=UniOption\n\n";
}
for ($n=1; $n<6; $n++) {
  $bbfile = "data/MACS2_unified-minLen50.ov$n.bigBed";
  unless (-e $bbfile) { print "WARNING: Did not find $bbfile.\n"; exit; }
  $prio++;
  print OUT "    track\tuni$n.PF\n";
  print OUT "    parent\tdataATACPeaksU\n";
  print OUT "    bigDataUrl\t$bbfile\n";
  print OUT "    shortLabel\tunified ov$n, min50\n";
  print OUT "    longLabel\tunified, overlap $n+ samples, 50+ bp\n";
  print OUT "    type\tbigBed\n";
  print OUT "    color\t$verydkGray\n";
  print OUT "    priority\t$prio\n";
  print OUT "    visibility\thide\n";
  print OUT "    subGroups\tType=UniOption\n\n";
}
close(OUT);
exit;


# not fixed past here...

##### supertrack4: differential peaks #####
# write header supertrack header
$prio = 400;
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 Diff=Diff Specific=Specific All=All\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\tdataATACDiffPeaks\n";
print OUT "    bigDataUrl\tdata/ATACseq/MACS2_unified.bigBed\n";
print OUT "    shortLabel\tunified peaks\n";
print OUT "    longLabel\tMACS2 peaks: unified\n";
print OUT "    type\tbigBed\n";
print OUT "    color\t$verydkGray\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\thide\n";
print OUT "    subGroups\tType=All\n\n";

print OUT "    track\tdiffE14.P\n";
print OUT "    parent\tdataATACDiffPeaks\n";
print OUT "    bigDataUrl\tdata/ATACseq/E14.CmpSex.edgeR.bigBed\n";
print OUT "    shortLabel\tE14.5 M-vs-F peaks\n";
print OUT "    longLabel\tMACS2 peaks: E14.5M vs E14.5F\n";
print OUT "    type\tbigBed 9+\n";
print OUT "    itemRgb\tOn\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\thide\n";
print OUT "    subGroups\tType=Diff\n\n";

print OUT "    track\tdiffE16.P\n";
print OUT "    parent\tdataATACDiffPeaks\n";
print OUT "    bigDataUrl\tdata/ATACseq/E16.CmpSex.edgeR.bigBed\n";
print OUT "    shortLabel\tE16.5 M-vs-F peaks\n";
print OUT "    longLabel\tMACS2 peaks: E16.5M vs E16.5F\n";
print OUT "    type\tbigBed 9+\n";
print OUT "    itemRgb\tOn\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\thide\n";
print OUT "    subGroups\tType=Diff\n\n";

print OUT "    track\tdiffM.P\n";
print OUT "    parent\tdataATACDiffPeaks\n";
print OUT "    bigDataUrl\tdata/ATACseq/Male.CmpAge.edgeR.bigBed\n";
print OUT "    shortLabel\tMale E16.5-vs-E14.5 peaks\n";
print OUT "    longLabel\tMACS2 peaks: E16.5M vs E14.5M\n";
print OUT "    type\tbigBed 9+\n";
print OUT "    itemRgb\tOn\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\thide\n";
print OUT "    subGroups\tType=Diff\n\n";

print OUT "    track\tdiffF.P\n";
print OUT "    parent\tdataATACDiffPeaks\n";
print OUT "    bigDataUrl\tdata/ATACseq/Female.CmpAge.edgeR.bigBed\n";
print OUT "    shortLabel\tFemale E16.5-vs-E14.5 peaks\n";
print OUT "    longLabel\tMACS2 peaks: E16.5F vs E14.5F\n";
print OUT "    type\tbigBed 9+\n";
print OUT "    itemRgb\tOn\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\thide\n";
print OUT "    subGroups\tType=Diff\n\n";

print OUT "    track\tspecSE1.P\n";
print OUT "    parent\tdataATACDiffPeaks\n";
print OUT "    bigDataUrl\tdata/ATACseq/ATACseq_seH1.bigBed\n";
print OUT "    shortLabel\tShannon Entropy < 1\n";
print OUT "    longLabel\tMACS2 peaks: specific by Shannon Entropy (H<1)\n";
print OUT "    type\tbigBed 9+\n";
print OUT "    itemRgb\tOn\n";
print OUT "    priority\t$prio\n";
print OUT "    visibility\thide\n";
print OUT "    subGroups\tType=Specific\n\n";

close(OUT);
