#!/usr/bin/perl

@ids = (); @conditions = (); @reps = ("rep1", "rep2", "rep3");
%id2name = (); %name2id = (); %name2condition = (); %name2rep = ();
open(IN, "/ddn/gs1/home/grimmsa/millerFred/rnaseq_nov2016/FASTQ/sample_info.txt");
while (<IN>) {
  chomp $_;
  ($id, $s) = split/\t/, $_;
  $s =~ s/\_/\+/g;
  $id2name{$id} = $s; 
  $name2id{$s} = $id;
  ($cond, $rep) = split/\./, $s;
  if ($rep eq "rep1") { push @conditions, $cond; }
  $name2condition{$s} = $cond;
  $name2rep{$s} = $rep;
} 
close(IN);

$strPlusColor = "0,0,204";
$strMinusColor = "204,0,102";


# Step 1)  Write track view header.
$prio = 100;
open(OUT, ">trackDb.txt");
print OUT "track\tFM_tracks\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tFM Tracks\n";
print OUT "longLabel\tFMiller RNAseq Depth\n";
print OUT "priority\t$prio\n";
print OUT "visibility\tfull\n";
print OUT "subGroup1\tview Views COVN=depthNorm COVR=depthRaw\n";
print OUT "subGroup2\tcondition Condition";
foreach $cnd (@conditions) { $cc = $cnd; $cc =~ s/\+//g; print OUT " $cc=$cnd"; } print OUT "\n";
print OUT "subGroup3\treplicate Replicate";
foreach $rep (@reps) { print OUT " $rep=$rep"; } print OUT "\n";
print OUT "subGroup4\tstrand Strand plus=plus minus=minus\n";
print OUT "dimensions\tdimX=condition dimY=replicate dimA=strand\n";
print OUT "sortOrder\tcondition=+ replicate=+ strand=+ view=-\n";
print OUT "configurable\ton\n";
print OUT "type\tbed 3\n\n";


# Step 2a)  Write header for normalized depth track grouping.
print OUT "   track\tFM_tracksViewDepthN\n";
print OUT "   parent\tFM_tracks\n";
print OUT "   shortLabel\tNormDepth\n";
print OUT "   longLabel\tNormalized RNA-seq Depth\n";
print OUT "   view\tCOVN\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:500\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# Step 2b)  Write normalized depth tracks.
foreach $cnd (@conditions) { foreach $rep (@reps) {
  $s = "$cnd.$rep"; $id = $name2id{$s};
  $cc = $cnd; $cc =~ s/\+//g;
  $bwfileP = "DATA/$id.depthNorm.strPlus.bw";
  $bwfileM = "DATA/$id.depthNorm.strMinus.bw";
  unless (-e $bwfileP) { print "WARNING: Did not find $bwfileP.\n"; exit; }
  unless (-e $bwfileM) { print "WARNING: Did not find $bwfileM.\n"; exit; }
  $prio++;
  $thiscolor = $strPlusColor;
  print OUT "      track\t$id.NDP\n";
  print OUT "      parent\tFM_tracksViewDepthN on\n";
  print OUT "      bigDataUrl\t$bwfileP\n";
  print OUT "      shortLabel\t$s plus\n";
  print OUT "      longLabel\tnormalized read depth (+): $s\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\tcondition=$cc replicate=$rep strand=plus view=COVN\n\n";
  $prio++;
  $thiscolor = $strMinusColor;
  print OUT "      track\t$id.NDM\n";
  print OUT "      parent\tFM_tracksViewDepthN on\n";
  print OUT "      bigDataUrl\t$bwfileM\n";
  print OUT "      shortLabel\t$s minus\n"; 
  print OUT "      longLabel\tnormalized read depth (-): $s\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\tcondition=$cc replicate=$rep strand=minus view=COVN\n\n";
} }


# Step 3a)  Write header for raw depth track grouping.
print OUT "   track\tFM_tracksViewDepthR\n";
print OUT "   parent\tFM_tracks\n";
print OUT "   shortLabel\tRawDepth\n";
print OUT "   longLabel\tRaw RNA-seq Depth\n";
print OUT "   view\tCOVR\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:500\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

# Step 3b)  Write raw depth tracks.
foreach $cnd (@conditions) { foreach $rep (@reps) {
  $s = "$cnd.$rep"; $id = $name2id{$s};
  $cc = $cnd; $cc =~ s/\+//g;
  $bwfileP = "DATA/$id.depthRaw.strPlus.bw";
  $bwfileM = "DATA/$id.depthRaw.strMinus.bw";
  unless (-e $bwfileP) { print "WARNING: Did not find $bwfileP.\n"; exit; }
  unless (-e $bwfileM) { print "WARNING: Did not find $bwfileM.\n"; exit; }
  $prio++;
  $thiscolor = $strPlusColor;
  print OUT "      track\t$id.RDP\n";
  print OUT "      parent\tFM_tracksViewDepthR on\n";
  print OUT "      bigDataUrl\t$bwfileP\n";
  print OUT "      shortLabel\t$s plus (raw)\n";
  print OUT "      longLabel\traw read depth (+): $s\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\tcondition=$cc replicate=$rep strand=plus view=COVR\n\n";
  $prio++;
  $thiscolor = $strMinusColor;
  print OUT "      track\t$id.RDM\n";
  print OUT "      parent\tFM_tracksViewDepthR on\n";
  print OUT "      bigDataUrl\t$bwfileM\n";
  print OUT "      shortLabel\t$s minus (raw)\n"; 
  print OUT "      longLabel\traw read depth (-): $s\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\tcondition=$cc replicate=$rep strand=minus view=COVR\n\n";
} }

close(OUT);

