#!/usr/bin/perl

$tracktxt = "trackDb.diffreg.txt";

@marks = ("H3K27ac", "H3K4me1");
@genders = ("male", "female");
@params = ("FC_2.pval_0.01", "FDR_0.05", "FDR_0.10");
%paramV = ("FDR_0.05" => "v1", "FDR_0.10" => "v2", "FC_2.pval_0.01" => "v3");

$prio = 200;

# Step 1)  Write track view header.
open(OUT, ">$tracktxt");
print OUT "track\tyqDiffBind\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tDifferential Regions\n";
print OUT "longLabel\tDifferential Regions\n";
print OUT "priority\t$prio\n";
print OUT "visibility\tdense\n";
print OUT "subGroup1\tview Views REG=regions PK=placeholder\n";
print OUT "subGroup2\tmark Mark H3K27ac=H3K27ac H3K4me1=H3K4me1\n";
print OUT "subGroup3\tgender Gender male=male female=female\n";
print OUT "subGroup4\tparameters Parameters v1=v1 v2=v2 v3=v3\n";
print OUT "dimensions\tdimX=mark dimY=parameters dimA=gender\n";
print OUT "sortOrder\tmark=+ gender=+ parameters=+\n";
print OUT "configurable\ton\n";
print OUT "type\tbed 9\n\n";


# Step 2)  Write header for diffregion track grouping.
print OUT "   track\tyqDiffBindRegions\n";
print OUT "   parent\tyqDiffBind\n";
print OUT "   shortLabel\tDifferential Regions\n";
print OUT "   longLabel\tDifferential Regions via DiffBind\n";
print OUT "   view\tREG\n";
print OUT "   visibility\tdense\n";
print OUT "   type\tbigBed 9\n";
print OUT "   allButtonPair\ton\n";
print OUT "   centerLabelsDense\ton\n";
print OUT "   dragAndDrop\ton\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";


# Step 3)  Write tracks.
foreach $mark (@marks) { foreach $gender (@genders) { foreach $param (@params) {
  $sampleID = "$gender-$mark";
  $datafile = "DATA/$sampleID.HF-vs-LF.diffBind-$param.bigBed";
  $paramKey = $paramV{$param};
  $paramN = substr($paramKey, -1);
  $prio++;
  print OUT "      track\t$sampleID.DR.$paramN\n";
  print OUT "	   parent\tyqDiffBindRegions on\n";
  print OUT "	   bigDataUrl\t$datafile\n";
  print OUT "	   shortLabel\t$sampleID DB$paramN\n";
  print OUT "	   longLabel\t$sampleID DiffBind $paramKey\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\tmark=$mark gender=$gender parameters=$paramKey view=REG\n\n";
} } }
print OUT "\n\n";

close(OUT);
