#!/usr/bin/perl

### This is not the first set of tracks in the hub, so exclude header for useOneFile here. ###

$trackfile = "trackDb.pctMeth_stranded.txt";
$datadir = "data/EMseq";
$patientInfoFile = "patientInfo.txt";

%dataTypeKey = ("EMseq" => "both", "E5hmCseq" => "5hmC");
@dataTypes = keys %dataTypeKey;
@patientTypes = ("control","FPD");
@patientCHIPs = ("NA","NoCHIP","CHIP");
@patientSexes = ("F","M");
%patT = (); %patC = (); %patS = (); @patientList = ();
open(IN, "$patientInfoFile");
while (<IN>) {
  next if ($_ =~ /^\#/);
  chomp $_; ($pat, $T, $C, $S) = split/\t/, $_;
  push @patientList, $pat;
  $patT{$pat} = $T;
  $patC{$pat} = $C;
  $patS{$pat} = $S;
}
close(IN);


open(OUT, ">$trackfile");

##############################################################
## main header

#print OUT "hub\tLiuMenezes_RUNX1_hg38_hub\n";
#print OUT "shortLabel\tLiu/Menezes RUNX1 Data Hub\n";
#print OUT "longLabel\tLiu/Menezes RUNX1 Data Hub\n";
#print OUT "useOneFile\ton\n";
#print OUT "email\tgrimmsa\@niehs.nih.gov\n\n";
#print OUT "genome\thg38\n\n";


##############################################################
## composite track header: pctMeth, 2 views

$prio = 200;

print OUT "track\tdataBSPMs\n";
print OUT "compositeTrack\ton\n";
print OUT "shortLabel\tbsPctMeth[str]\n";
print OUT "longLabel\tbisulfite %methylation [stranded]\n";
print OUT "priority\t$prio\n";
print OUT "subGroup1\tview View ViewBigWig=ViewBar ViewColorBed=ViewColor\n";
print OUT "subGroup2\tdtype DataType"; foreach $x (@dataTypes) { print OUT " $x=$x"; } print OUT "\n";
print OUT "subGroup3\tptype PatientType"; foreach $x (@patientTypes) { print OUT " $x=$x"; } print OUT "\n";
print OUT "subGroup4\tpsex PatientSex"; foreach $x (@patientSexes) { print OUT " $x=$x"; } print OUT "\n";
print OUT "subGroup5\tchip StatusCHIP"; foreach $x (@patientCHIPs) { print OUT " $x=$x"; } print OUT "\n";
print OUT "subGroup6\tpatient Patient"; foreach $x (@patientList) { print OUT " $x=$x"; } print OUT "\n";
print OUT "dimensions\tdimX=patient dimY=dtype dimA=view dimB=ptype dimC=psex dimD=chip\n";
print OUT "sortOrder\tdtype=+ ptype=+ chip=+ view=+\n";
print OUT "configurable\ton\n";
print OUT "type\tbigWig\n\n";

## view header (pctMeth/bigWig)
print OUT "   track\tdataBSPMs_ViewBigWig\n";
print OUT "   parent\tdataBSPMs\n";
print OUT "   shortLabel\tbsPctMeth[str]:bigWig\n";
print OUT "   longLabel\tbisulfite %methylation [stranded]: bigWig\n";
print OUT "   view\tViewBigWig\n";
print OUT "   visibility\thide\n";
print OUT "   type\tbigWig\n";
print OUT "   allButtonPair\ton\n";
#print OUT "   centerLabelsDense\ton\n";
print OUT "   centerLabels\toff\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\ton\n";
print OUT "   autoScale\toff\n";
print OUT "   viewLimits\t0:100\n";
print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

## data tracks (pctMeth/bigWig)
foreach $pat (@patientList) { foreach $dtype (@dataTypes) {
  $id = "$pat.$dataTypeKey{$dtype}";
  $bwfile = "$datadir/$id.hg38_CpG_stranded.pctMeth.bigWig";
  unless (-e $bwfile) { print "WARNING: Did not find \'$bwfile\'.\n"; next; }
  $prio++;
  print OUT "      track\t$id.PMBWs\n";
  print OUT "      parent\tdataBSPMs_ViewBigWig\n";
  print OUT "      bigDataUrl\t$bwfile\n";
  print OUT "      shortLabel\t$id %meth [str][bar]\n";
  print OUT "      longLabel\t$pat($dtype) %methylation [stranded][bar]\n";
  print OUT "      type\tbigWig\n";
  print OUT "      color\t0,0,0\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tview=ViewBigWig dtype=$dtype ptype=$patT{$pat} psex=$patS{$pat} chip=$patC{$pat} patient=$pat\n\n";
} }
print OUT "\n\n";

## view header (pctMeth/colorBed)
print OUT "   track\tdataBSPMs_ViewColorBed\n";
print OUT "   parent\tdataBSPMs\n";
print OUT "   shortLabel\tbsPctMeth[str]:color\n";
print OUT "   longLabel\tbisulfite %methylation [stranded]: color\n";
print OUT "   view\tViewColorBed\n";
print OUT "   visibility\thide\n";
print OUT "   type\tbigBed\n";
#print OUT "   allButtonPair\ton\n";
#print OUT "   centerLabelsDense\ton\n";
print OUT "   centerLabels\toff\n";
print OUT "   dragAndDrop\ton\n";
print OUT "   itemRgb\ton\n";
#print OUT "   showSubtrackColorOnUi\ton\n";
print OUT "   viewUi\ton\n\n";

## data tracks (pctMeth/colorBed)
foreach $pat (@patientList) { foreach $dtype (@dataTypes) {
  $id = "$pat.$dataTypeKey{$dtype}";
  $bbfile = "$datadir/$id.hg38_CpG_stranded-color.bigBed";
  unless (-e $bbfile) { print "WARNING: Did not find \'$bbfile\'.\n"; next; }
  $prio++;
  print OUT "      track\t$id.PMCBs\n";
  print OUT "      parent\tdataBSPMs_ViewColorBed\n";
  print OUT "      bigDataUrl\t$bbfile\n";
  print OUT "      shortLabel\t$id %meth [str][color]\n";
  print OUT "      longLabel\t$pat($dtype) %methylation [stranded][color]\n";
  print OUT "      type\tbigBed\n";
  print OUT "      itemRgb\ton\n";
  print OUT "      priority\t$prio\n";
  print OUT "      visibility\thide\n";
  print OUT "      subGroups\tview=ViewColorBed dtype=$dtype ptype=$patT{$pat} psex=$patS{$pat} chip=$patC{$pat} patient=$pat\n\n";
} }
print OUT "\n\n";

close(OUT);


