#!/usr/bin/perl

$datadir = "data/NOV0408_atac";
$trackname = "trackDb.MB231.NOV0408-Apr2025.txt";
$stroot = "ATAC01";
$shortLab = "MDA-MB231-wtG3-FOXA1";


%grps2samples = ("MDAMB231" => "MDAMB231-A,MDAMB231-B",
                 "FOXA1" => "MDAMB231-FOXA1-Clone12-A,MDAMB231-FOXA1-Clone12-B,MDAMB231-FOXA1-Clone12-C,MDAMB231-FOXA1-Clone9-A,MDAMB231-FOXA1-Clone9-B,MDAMB231-FOXA1-Clone9-C",
                 "wtGATA3" => "MDAMB231-WTGATA3-A,MDAMB231-WTGATA3-B,MDAMB231-WTGATA3-C",
                 "wtGATA3-FOXA1" => "MDAMB231-WTGATA3-FOXA1-Clone23-A,MDAMB231-WTGATA3-FOXA1-Clone23-B,MDAMB231-WTGATA3-FOXA1-Clone4-A,MDAMB231-WTGATA3-FOXA1-Clone4-B");
@grps = ("MDAMB231","FOXA1","wtGATA3","wtGATA3-FOXA1");
@cmpList = ("FvsM","GvsM","GFvsM","FvsG","GFvsG","FvsGF");  # pairwise comparisons for differential peaks

$prio = 220;

$useColor = "0,0,0";
#$useColor = "0,0,204";


open(OUT, ">$trackname");

# write header supertrack header
print OUT "track\tdata$stroot\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\t$shortLab (ATAC)\n";
print OUT "longLabel\t$shortLab (ATAC normalized depth)\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tview View FRAG=fragment 9MER=9mer PEAK=peaks\n";
print OUT "subGroup2\tGroup Group"; foreach $grp (@grps) { print OUT " $grp=$grp"; } print OUT " NA=NA\n";
print OUT "dimensions\tdimX=Group dimY=view\n";
print OUT "sortOrder\tview=+ Group=+\n";
print OUT "type\tbigWig\n\n";

# write header for depth tracks view -- fragment
print OUT "   track\tdata$stroot\_ViewDepthFrag\n";
print OUT "   parent\tdata$stroot\n";
print OUT "   shortLabel\t$shortLab (ATAC fragment)\n";
print OUT "   longLabel\t$shortLab (normalized depth -- fragment)\n";
print OUT "   view\tFRAG\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 "   autoScale\tgroup\n";
#print OUT "   viewLimits\t0:4\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# write depth tracks -- fragment
foreach $grp (@grps) {
  foreach $id (split/\,/, $grps2samples{$grp}) {
    $bwfile = "$datadir/$id.hg38.bwt2.MAPQ5-PP.rmChrM.rmdup.fragment.norm50M.bigWig";
#    $bwfile = "$datadir/$id.hg38.bwt2.MAPQ5-PP.rmChrM.rmdup.9merFootprint.norm50M.bigWig";
    unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; next; }
    $prio++;
    print OUT "      track\t$id.frag.$stroot\n";
    print OUT "      parent\tdata$stroot\_ViewDepthFrag\n";
    print OUT "      bigDataUrl\t$bwfile\n";
    print OUT "      shortLabel\t$id (ATAC fragment)\n";
    print OUT "      longLabel\tnormalized ATAC-seq fragment depth: $id\n";
    print OUT "      type\tbigWig\n";
    print OUT "      color\t$useColor\n";
    print OUT "      priority\t$prio\n";
    print OUT "      visibility\thide\n";
    print OUT "      subGroups\tGroup=$grp view=FRAG\n\n";
  }
}
print OUT "\n\n";

# write header for depth tracks view -- 9mer
print OUT "   track\tdata$stroot\_ViewDepth9mer\n";
print OUT "   parent\tdata$stroot\n";
print OUT "   shortLabel\t$shortLab (ATAC 9mer)\n";
print OUT "   longLabel\t$shortLab (normalized depth -- 9mer)\n";
print OUT "   view\tFRAG\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 "   autoScale\tgroup\n";
#print OUT "   viewLimits\t0:4\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# write depth tracks -- 9mer
foreach $grp (@grps) {
  foreach $id (split/\,/, $grps2samples{$grp}) {
#    $bwfile = "$datadir/$id.hg38.bwt2.MAPQ5-PP.rmChrM.rmdup.fragment.norm50M.bigWig";
    $bwfile = "$datadir/$id.hg38.bwt2.MAPQ5-PP.rmChrM.rmdup.9merFootprint.norm50M.bigWig";
    unless (-e $bwfile) { print "WARNING: Did not find $bwfile.\n"; next; }
    $prio++;
    print OUT "      track\t$id.9mer.$stroot\n";
    print OUT "      parent\tdata$stroot\_ViewDepth9mer\n";
    print OUT "      bigDataUrl\t$bwfile\n";
    print OUT "      shortLabel\t$id (ATAC 9mer)\n";
    print OUT "      longLabel\tnormalized ATAC-seq 9mer depth: $id\n";
    print OUT "      type\tbigWig\n";
    print OUT "      color\t$useColor\n";
    print OUT "      priority\t$prio\n";
    print OUT "      visibility\thide\n";
    print OUT "      subGroups\tGroup=$grp view=9MER\n\n";
  }
}
print OUT "\n\n";

# write header for peak tracks view
print OUT "   track\tdata$stroot\_ViewPeaks\n";
print OUT "   parent\tdata$stroot\n";
print OUT "   shortLabel\t$shortLab (ATAC peaks)\n";
print OUT "   longLabel\t$shortLab (ATAC peaks)\n";
print OUT "   view\tPEAK\n";
print OUT "   visibility\tdense\n";
print OUT "   type\tbigBed\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 "   autoScale\tgroup\n";
#print OUT "   viewLimits\t0:4\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# write peak tracks
$prio++;
print OUT "      track\tpkUni.$stroot\n";
print OUT "      parent\tdata$stroot\_ViewPeaks\n";
print OUT "      bigDataUrl\t$datadir/ATAC_unified_2sameGrp.fragment.bigBed\n";
print OUT "      shortLabel\tunified peaks\n";
print OUT "      longLabel\tunified peaks\n";
print OUT "      type\tbigBed 3\n";
print OUT "      color\t$useColor\n";
print OUT "      priority\t$prio\n";
print OUT "      visibility\tdense\n";
print OUT "      subGroups\tGroup=NA view=PEAK\n\n";
foreach $cmp (@cmpList) {
  $prio++;
  print OUT "      track\tpk.$cmp.$stroot\n";
  print OUT "      parent\tdata$stroot\_ViewPeaks\n";
  print OUT "      bigDataUrl\t$datadir/diffPeaks-normPk-EdgeR.FDR1e-5.$cmp\-ATAC-fragment.bigBed\n";
  print OUT "      shortLabel\tdiffPeaks $cmp\n";
  print OUT "      longLabel\tdiffPeaks $cmp\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\tGroup=NA view=PEAK\n\n";
}

close(OUT);

