#!/usr/bin/perl

$tracktxt = "trackDb.indiv.txt";

@marks = ("H3K27ac", "H3K4me1");
@genders = ("male", "female");
@diets = ("LF", "HF");
@reps = (1,2,3);

$prio = 300;

# Step 1)  Write track view header.
open(OUT, ">$tracktxt");
print OUT "track\tyqIndivDepthPeaks\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tChIPseq, Replicates\n";
print OUT "longLabel\tChIP-seq Data, Replicates\n";
print OUT "priority\t$prio\n";
print OUT "visibility\tfull\n";
print OUT "subGroup1\tview Views COV=depth PK=peaks\n";
print OUT "subGroup2\tmark Mark H3K27ac=H3K27ac H3K4me1=H3K4me1 H3K27acInput=H3K27acInput-male H3K4me1Input=H3K4me1Input-male Input=Input-female\n";
print OUT "subGroup3\tgender Gender male=male female=female\n";
print OUT "subGroup4\tdiet Diet LF=LF HF=HF\n";
print OUT "subGroup5\treplicate Replicate 1=1 2=2 3=3\n";
print OUT "dimensions\tdimX=mark dimY=diet dimA=view dimB=gender dimC=replicate\n";
print OUT "sortOrder\tmark=+ gender=+ diet=+ replicate=+ view=-\n";
print OUT "configurable\ton\n";
print OUT "type\tbigWig\n\n";
#print OUT "type\tbed 3\n\n";


# Step 2)  Write header for depth track grouping.
print OUT "   track\tyqIndivViewDepth\n";
print OUT "   parent\tyqIndivDepthPeaks\n";
print OUT "   shortLabel\tChIP-seq Depth, Replicates\n";
print OUT "   longLabel\tChIP-seq Normalized Depth, By Replicate\n";
print OUT "   view\tCOV\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:40\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";


# Step 3)  Write depth tracks.
foreach $mark (@marks) { foreach $gender (@genders) { foreach $diet (@diets) { foreach $rep (@reps) {
  $sampleID = "$gender-$mark-$diet.$rep";
  $prio++;
  print OUT "      track\t$sampleID.D\n";
  print OUT "      parent\tyqIndivViewDepth on\n";
  print OUT "      bigDataUrl\tDATA/$sampleID.bwt.rmdup.singlefrag.norm15M.bigWig\n";
  print OUT "      shortLabel\t$sampleID depth\n";
  print OUT "      longLabel\t$sampleID ChIP-seq read depth, normalized to 15M fragments\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t0,0,0\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\tfull\n";
  print OUT "      subGroups\tdiet=$diet replicate=$rep mark=$mark gender=$gender view=COV\n\n";

  if ($gender eq "male") { $sampleIDI = "$gender-$mark-$diet-input.$rep"; $markname = "$mark"."Input"; }
  else {
    next if ($mark eq "H3K4me1"); # only need to include once...
    $sampleIDI = "$gender-$diet-input.$rep";
    $markname = "Input";
  }
  $prio++;
  print OUT "      track\t$sampleID.input.D\n";
  print OUT "      parent\tyqIndivViewDepth on\n";

  print OUT "      bigDataUrl\tDATA/$sampleIDI.bwt.rmdup.singlefrag.norm15M.bigWig\n";
  print OUT "      shortLabel\t$sampleIDI depth\n";
  print OUT "      longLabel\t$sampleID ChIP-seq read depth, normalized to 15M fragments\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t102,102,102\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\tfull\n";
  print OUT "      subGroups\tdiet=$diet replicate=$rep mark=$markname gender=$gender view=COV\n\n";

} } } }
print OUT "\n\n";


# Step 4)  Write header for peak track grouping.
print OUT "   track\tyqIndivViewPeaks\n";
print OUT "   parent\tyqIndivDepthPeaks\n";
print OUT "   shortLabel\tSICER Peaks, Replicates\n";
print OUT "   longLabel\tSICER Peaks, By Replicate\n";
print OUT "   view\tPK\n";
print OUT "   visibility\tdense\n";
print OUT "   type\tbigBed 3\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 5)  Write peaks tracks.
foreach $mark (@marks) { foreach $gender (@genders) { foreach $diet (@diets) { foreach $rep (@reps) {
  $sampleID = "$gender-$mark-$diet.$rep";
  $prio++;
  print OUT "      track\t$sampleID.P\n";
  print OUT "	   parent\tyqIndivViewPeaks on\n";
  print OUT "	   bigDataUrl\tDATA/$sampleID.sicer-W200-G600.bigBed\n";
  print OUT "	   shortLabel\t$sampleID peaks\n";
  print OUT "	   longLabel\t$sampleID SICER peaks\n";
  print OUT "	   type\tbigBed 3\n";
  print OUT "	   color\t0,0,0\n";
  print OUT "	   priority\t$prio\n";
  print OUT "	   visibility\tdense\n";
  print OUT "	   subGroups\tdiet=$diet replicate=$rep mark=$mark gender=$gender view=PK\n\n";
} } } }
print OUT "\n\n";

close(OUT);
