changeset 5:be7ed742f870 draft default tip

Uploaded
author davidvanzessen
date Tue, 11 Mar 2014 11:10:30 -0400
parents 2f2544607ad6
children
files combined.sh script.js style.css tabber.js
diffstat 4 files changed, 249 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/combined.sh	Fri Jan 24 04:04:55 2014 -0500
+++ b/combined.sh	Tue Mar 11 11:10:30 2014 -0400
@@ -17,7 +17,7 @@
 function blastAndParse {
 	echo "<tr><td>Starting blast of sample $3 of patient $2</td></tr>" >> $html
 	echo "igblastn -germline_db_V $PWD/igblastdatabase/database/human_gl_V -germline_db_J $PWD/igblastdatabase/database/human_gl_J -germline_db_D $PWD/igblastdatabase/database/human_gl_D -domain_system imgt -query $1 -auxiliary_data $PWD/igblastdatabase/optional_file/human_gl.aux -show_translation -outfmt 3 > $PWD/$4"
-	igblastn -germline_db_V $PWD/igblastdatabase/database/human_gl_V -germline_db_J $PWD/igblastdatabase/database/human_gl_J -germline_db_D $PWD/igblastdatabase/database/human_gl_D -domain_system imgt -query $1 -auxiliary_data $PWD/igblastdatabase/optional_file/human_gl.aux -show_translation -outfmt 3 > $PWD/$4
+	/home/galaxy/galaxy/igblast/igblastn -germline_db_V $PWD/igblastdatabase/database/human_gl_V -germline_db_J $PWD/igblastdatabase/database/human_gl_J -germline_db_D $PWD/igblastdatabase/database/human_gl_D -domain_system imgt -query $1 -auxiliary_data $PWD/igblastdatabase/optional_file/human_gl.aux -show_translation -outfmt 3 > $PWD/$4
 	echo "<tr><td>Finished blast of sample $3 of patient $2</td></tr>" >> $html
 
 	echo "<tr><td>Starting parse of sample $3 of patient $2</td></tr>" >> $html
@@ -58,63 +58,96 @@
 
 
 inputFile=$PWD/merged.txt
-outputFile=$html
 outputDir=$imageDir
+outputFile=$outputDir/index.html
 mkdir $outputDir
 Rscript --verbose $dir/RScript.r $inputFile $outputDir $outputDir $clonalType 2>&1
-echo "<html>" > $outputFile
+cp $dir/tabber.js $outputDir
+cp $dir/style.css $outputDir
+cp $dir/script.js $outputDir
+echo "<html><center><h1><a href='index.html'>Click here for the results</a></h1>Tip: Open it in a new tab (middle mouse button or right mouse button -> 'open in new tab' on the link above)</center></html>" > $html
+echo "<html><script type='text/javascript' src='tabber.js'></script><script type='text/javascript' src='script.js'></script><link rel='stylesheet' type='text/css' href='style.css'><div class='tabber'><div class='tabbertab' title='Gene frequencies'>" >> $outputFile
 echo "<img src='VPlot.png'/>" >> $outputFile
 echo "<img src='DPlot.png'/>" >> $outputFile
-echo "<img src='JPlot.png'/>" >> $outputFile
+echo "<img src='JPlot.png'/></div>" >> $outputFile
 
 samples=`cat $outputDir/samples.txt`
 count=1
-echo "<table border='1'><caption><a href='allUnique.tsv'><h3>$clonalType</h3></a></caption>" >> $outputFile
-hasReplicateColumn="$(if head -n 1 $inputFile | grep -q 'Replicate'; then echo 'Yes'; else echo 'No'; fi)"
+echo "<div class='tabbertab' title='Heatmaps'><div class='tabber'>" >> $outputFile
 for sample in $samples; do
-	clonalityScore="$(cat $outputDir/ClonalityScore_$sample.csv)"
-	echo "<tr><td colspan='3' height='100'></td></tr>" >> $outputFile
-	echo "<tr><td colspan='3'><h1>$sample</h1></td></tr>" >> $outputFile
+	echo "<div class='tabbertab' title='$sample'><table border='1'><tr>" >> $outputFile
+	
+	mv "$outputDir/HeatmapVD_$sample.png" "$outputDir/VD_$sample.png"
+	echo "<td><img src='VD_$sample.png'/></td>" >> $outputFile
+	mv "$outputDir/HeatmapVJ_$sample.png" "$outputDir/VJ_$sample.png"
+	echo "<td><img src='VJ_$sample.png'/></td>" >> $outputFile
+	mv "$outputDir/HeatmapDJ_$sample.png" "$outputDir/DJ_$sample.png"
+	echo "<td><img src='DJ_$sample.png'/></td></tr></table></div>" >> $outputFile
+	count=$((count+1))
+done
+echo "</div></div>" >> $outputFile
 
-	echo "$hasReplicateColumn"
-	#if its a 'new' merged file with replicate info
-	if [[ "$hasReplicateColumn" == "Yes" ]] ; then
-		echo "<tr><td colspan='3'><a href='clonality_$sample.tsv'><h2>Clonality Score: $clonalityScore</h2></a></td></tr>" >> $outputFile
+
+hasReplicateColumn="$(if head -n 1 $inputFile | grep -q 'Replicate'; then echo 'Yes'; else echo 'No'; fi)"
+echo "$hasReplicateColumn"
+#if its a 'new' merged file with replicate info
+if [[ "$hasReplicateColumn" == "Yes" ]] ; then
+	echo "<div class='tabbertab' title='Clonality'><div class='tabber'>" >> $outputFile
+	for sample in $samples; do
+		clonalityScore="$(cat $outputDir/ClonalityScore_$sample.csv)"
+		echo "<div class='tabbertab' title='$sample'><table border='1'>" >> $outputFile
+		echo "<tr><td colspan='4'>Clonality Score: $clonalityScore</td></tr>" >> $outputFile
 
 		#replicate,reads,squared
-		echo "<tr><td colspan='3'><table border='1'><tr><th>Replicate ID</th><th>Number of Reads</th><th>Reads Squared</th></tr>" >> $outputFile
+		echo "<tr><td>Replicate ID</td><td>Number of Reads</td><td>Reads Squared</td><td></td></tr>" >> $outputFile
 		while IFS=, read replicate reads squared
 		do
-
-			echo "<tr><td><a href='clonality_${sample}_$replicate.tsv'>$replicate</a></td><td>$reads</td><td>$squared</td></tr>" >> $outputFile
+			
+			echo "<tr><td>$replicate</td><td>$reads</td><td>$squared</td><td></td></tr>" >> $outputFile
 		done < $outputDir/ReplicateReads_$sample.csv
-
+		
 		#sum of reads and reads squared
 		while IFS=, read readsSum squaredSum
 			do
 				echo "<tr><td>Sum</td><td>$readsSum</td><td>$squaredSum</td></tr>" >> $outputFile
 		done < $outputDir/ReplicateSumReads_$sample.csv
-
-		echo "</table></td></tr>" >> $outputFile
-
+		
 		#overview
-		echo "<tr><td colspan='3'><table border='1'><tr><th>Coincidence Type</th><th>Raw Coincidence Freq</th><th>Coincidence Weight</th><th>Coincidences, Weighted</th></tr>" >> $outputFile
+		echo "<tr><td>Coincidence Type</td><td>Raw Coincidence Freq</td><td>Coincidence Weight</td><td>Coincidences, Weighted</td></tr>" >> $outputFile
 		while IFS=, read type count weight weightedCount
 		do
 			echo "<tr><td>$type</td><td>$count</td><td>$weight</td><td>$weightedCount</td></tr>" >> $outputFile
 		done < $outputDir/ClonalityOverView_$sample.csv
-		echo "</table></td></tr>" >> $outputFile
-	fi
+		echo "</table></div>" >> $outputFile
+	done
+	echo "</div></div>" >> $outputFile
+fi
+
+
+hasFunctionalityColumn="$(if head -n 1 $inputFile | grep -q 'Functionality'; then echo 'Yes'; else echo 'No'; fi)"
+if [[ "$hasFunctionalityColumn" == "Yes" ]] ; then
+	echo "<div class='tabbertab' title='Junction Analysis'><table border='1'><tr><th>Sample</th><th>unique</th><th>VH.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.DH</th><th>DH.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.JH</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th></tr>" >> $outputFile
+	while IFS=, read Sample unique VHDEL P1 N1 P2 DELDH DHDEL P3 N2 P4 DELJH TotalDel TotalN TotalP
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VHDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELDH</td><td>$DHDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJH</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysis.csv
+	echo "</table></div>" >> $outputFile
+fi
 
-	echo "<tr><td><h2>V-D Heatmap:</h2></td><td><h2>V-J Heatmap:</h2></td><td><h2>D-J Heatmap:</h2></td></tr><tr>" >> $outputFile
-	mv "$outputDir/HeatmapVD_$sample.png" "$outputDir/VD_$sample.png"
-	echo "<td><img src='VD_$sample.png'/></td>" >> $outputFile
-	mv "$outputDir/HeatmapVJ_$sample.png" "$outputDir/VJ_$sample.png"
-	echo "<td><img src='VJ_$sample.png'/></td>" >> $outputFile
-	mv "$outputDir/HeatmapDJ_$sample.png" "$outputDir/DJ_$sample.png"
-	echo "<td><img src='DJ_$sample.png'/></td></tr>" >> $outputFile
-	count=$((count+1))
+echo "<div class='tabbertab' title='Comparison'><table border='1'><tr><th>ID</th><th>Include</th></tr>" >> $outputFile
+for sample in $samples; do
+	echo "<tr><td>$sample</td><td><input type='checkbox' onchange=\"javascript:compareAdd('$sample')\" id='compare_checkbox_$sample'/></td></tr>" >> $outputFile
 done
-echo "</table>" >> $outputFile
+echo "</table><div name='comparisonarea'>" >> $outputFile
+echo "<table><tr id='comparison_table_vd'></tr></table>" >> $outputFile
+echo "<table><tr id='comparison_table_vj'></tr></table>" >> $outputFile
+echo "<table><tr id='comparison_table_dj'></tr></table>" >> $outputFile
+echo "</div></div>" >> $outputFile
 
-echo "</html>" >> $outputFile
+echo "<div class='tabbertab' title='Downloads'>" >> $outputFile
+echo "<table border='1'>" >> $outputFile
+echo "<tr><th>Description</th><th>Link</th></tr>" >> $outputFile
+echo "<tr><td>The dataset used to generate the frequency graphs and the heatmaps (Unique based on clonaltype, $clonalType)</td><td><a href='allUnique.tsv'>Download</a></td></tr>" >> $outputFile
+echo "<tr><td>The dataset used to calculate clonality score (Unique based on clonaltype, $clonalType)</td><td><a href='clonalityComplete.tsv'>Download</a></td></tr>" >> $outputFile
+echo "</table>" >> $outputFile
+echo "</div>" >> $outputFile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/script.js	Tue Mar 11 11:10:30 2014 -0400
@@ -0,0 +1,32 @@
+function compareAdd(id){
+	var img = document.createElement('img');
+	img.setAttribute('src', 'VD_' + id + '.png');
+	var td = document.createElement('td');
+	td.setAttribute('id', "comparison_vd_" + id);
+	td.appendChild(img)
+	document.getElementById('comparison_table_vd').appendChild(td);
+	
+	img = document.createElement('img');
+	img.setAttribute('src', 'VJ_' + id + '.png');
+	td = document.createElement('td');
+	td.setAttribute('id', "comparison_vj_" + id);
+	td.appendChild(img)
+	document.getElementById('comparison_table_vj').appendChild(td);
+	
+	img = document.createElement('img');
+	img.setAttribute('src', 'DJ_' + id + '.png');
+	td = document.createElement('td');
+	td.setAttribute('id', "comparison_dj_" + id);
+	td.appendChild(img)
+	document.getElementById('comparison_table_dj').appendChild(td);
+	
+	document.getElementById('compare_checkbox_' + id).setAttribute('onchange', "javascript:compareRemove('" + id + "')");
+}
+
+
+function compareRemove(id){
+	document.getElementById("comparison_vd_" + id).remove()
+	document.getElementById("comparison_vj_" + id).remove()
+	document.getElementById("comparison_dj_" + id).remove()
+	document.getElementById('compare_checkbox_' + id).setAttribute('onchange', "javascript:compareAdd('" + id + "')");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/style.css	Tue Mar 11 11:10:30 2014 -0400
@@ -0,0 +1,111 @@
+/* $Id: example.css,v 1.5 2006/03/27 02:44:36 pat Exp $ */
+
+/*--------------------------------------------------
+  REQUIRED to hide the non-active tab content.
+  But do not hide them in the print stylesheet!
+  --------------------------------------------------*/
+.tabberlive .tabbertabhide {
+ display:none;
+}
+
+/*--------------------------------------------------
+  .tabber = before the tabber interface is set up
+  .tabberlive = after the tabber interface is set up
+  --------------------------------------------------*/
+.tabber {
+}
+.tabberlive {
+ margin-top:1em;
+}
+
+/*--------------------------------------------------
+  ul.tabbernav = the tab navigation list
+  li.tabberactive = the active tab
+  --------------------------------------------------*/
+ul.tabbernav
+{
+ margin:0;
+ padding: 3px 0;
+ border-bottom: 1px solid #778;
+ font: bold 12px Verdana, sans-serif;
+}
+
+ul.tabbernav li
+{
+ list-style: none;
+ margin: 0;
+ display: inline;
+}
+
+ul.tabbernav li a
+{
+ padding: 3px 0.5em;
+ margin-left: 3px;
+ border: 1px solid #778;
+ border-bottom: none;
+ background: #DDE;
+ text-decoration: none;
+}
+
+ul.tabbernav li a:link { color: #448; }
+ul.tabbernav li a:visited { color: #667; }
+
+ul.tabbernav li a:hover
+{
+ color: #000;
+ background: #AAE;
+ border-color: #227;
+}
+
+ul.tabbernav li.tabberactive a
+{
+ background-color: #fff;
+ border-bottom: 1px solid #fff;
+}
+
+ul.tabbernav li.tabberactive a:hover
+{
+ color: #000;
+ background: white;
+ border-bottom: 1px solid white;
+}
+
+/*--------------------------------------------------
+  .tabbertab = the tab content
+  Add style only after the tabber interface is set up (.tabberlive)
+  --------------------------------------------------*/
+.tabberlive .tabbertab {
+ padding:5px;
+ border:1px solid #aaa;
+ border-top:0;
+
+ /* If you don't want the tab size changing whenever a tab is changed
+    you can set a fixed height */
+
+ /* height:200px; */
+
+ /* If you set a fix height set overflow to auto and you will get a
+    scrollbar when necessary */
+
+ /* overflow:auto; */
+}
+
+/* If desired, hide the heading since a heading is provided by the tab */
+.tabberlive .tabbertab h2 {
+ display:none;
+}
+.tabberlive .tabbertab h3 {
+ display:none;
+}
+
+/* Example of using an ID to set different styles for the tabs on the page */
+.tabberlive#tab1 {
+}
+.tabberlive#tab2 {
+}
+.tabberlive#tab2 .tabbertab {
+ height:200px;
+ overflow:auto;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tabber.js	Tue Mar 11 11:10:30 2014 -0400
@@ -0,0 +1,40 @@
+/* Copyright (c) 2006 Patrick Fitzgerald */
+
+function tabberObj(argsObj)
+{var arg;this.div=null;this.classMain="tabber";this.classMainLive="tabberlive";this.classTab="tabbertab";this.classTabDefault="tabbertabdefault";this.classNav="tabbernav";this.classTabHide="tabbertabhide";this.classNavActive="tabberactive";this.titleElements=['h2','h3','h4','h5','h6'];this.titleElementsStripHTML=true;this.removeTitle=true;this.addLinkId=false;this.linkIdFormat='<tabberid>nav<tabnumberone>';for(arg in argsObj){this[arg]=argsObj[arg];}
+this.REclassMain=new RegExp('\\b'+this.classMain+'\\b','gi');this.REclassMainLive=new RegExp('\\b'+this.classMainLive+'\\b','gi');this.REclassTab=new RegExp('\\b'+this.classTab+'\\b','gi');this.REclassTabDefault=new RegExp('\\b'+this.classTabDefault+'\\b','gi');this.REclassTabHide=new RegExp('\\b'+this.classTabHide+'\\b','gi');this.tabs=new Array();if(this.div){this.init(this.div);this.div=null;}}
+tabberObj.prototype.init=function(e)
+{var
+childNodes,i,i2,t,defaultTab=0,DOM_ul,DOM_li,DOM_a,aId,headingElement;if(!document.getElementsByTagName){return false;}
+if(e.id){this.id=e.id;}
+this.tabs.length=0;childNodes=e.childNodes;for(i=0;i<childNodes.length;i++){if(childNodes[i].className&&childNodes[i].className.match(this.REclassTab)){t=new Object();t.div=childNodes[i];this.tabs[this.tabs.length]=t;if(childNodes[i].className.match(this.REclassTabDefault)){defaultTab=this.tabs.length-1;}}}
+DOM_ul=document.createElement("ul");DOM_ul.className=this.classNav;for(i=0;i<this.tabs.length;i++){t=this.tabs[i];t.headingText=t.div.title;if(this.removeTitle){t.div.title='';}
+if(!t.headingText){for(i2=0;i2<this.titleElements.length;i2++){headingElement=t.div.getElementsByTagName(this.titleElements[i2])[0];if(headingElement){t.headingText=headingElement.innerHTML;if(this.titleElementsStripHTML){t.headingText.replace(/<br>/gi," ");t.headingText=t.headingText.replace(/<[^>]+>/g,"");}
+break;}}}
+if(!t.headingText){t.headingText=i+1;}
+DOM_li=document.createElement("li");t.li=DOM_li;DOM_a=document.createElement("a");DOM_a.appendChild(document.createTextNode(t.headingText));DOM_a.href="javascript:void(null);";DOM_a.title=t.headingText;DOM_a.onclick=this.navClick;DOM_a.tabber=this;DOM_a.tabberIndex=i;if(this.addLinkId&&this.linkIdFormat){aId=this.linkIdFormat;aId=aId.replace(/<tabberid>/gi,this.id);aId=aId.replace(/<tabnumberzero>/gi,i);aId=aId.replace(/<tabnumberone>/gi,i+1);aId=aId.replace(/<tabtitle>/gi,t.headingText.replace(/[^a-zA-Z0-9\-]/gi,''));DOM_a.id=aId;}
+DOM_li.appendChild(DOM_a);DOM_ul.appendChild(DOM_li);}
+e.insertBefore(DOM_ul,e.firstChild);e.className=e.className.replace(this.REclassMain,this.classMainLive);this.tabShow(defaultTab);if(typeof this.onLoad=='function'){this.onLoad({tabber:this});}
+return this;};tabberObj.prototype.navClick=function(event)
+{var
+rVal,a,self,tabberIndex,onClickArgs;a=this;if(!a.tabber){return false;}
+self=a.tabber;tabberIndex=a.tabberIndex;a.blur();if(typeof self.onClick=='function'){onClickArgs={'tabber':self,'index':tabberIndex,'event':event};if(!event){onClickArgs.event=window.event;}
+rVal=self.onClick(onClickArgs);if(rVal===false){return false;}}
+self.tabShow(tabberIndex);return false;};tabberObj.prototype.tabHideAll=function()
+{var i;for(i=0;i<this.tabs.length;i++){this.tabHide(i);}};tabberObj.prototype.tabHide=function(tabberIndex)
+{var div;if(!this.tabs[tabberIndex]){return false;}
+div=this.tabs[tabberIndex].div;if(!div.className.match(this.REclassTabHide)){div.className+=' '+this.classTabHide;}
+this.navClearActive(tabberIndex);return this;};tabberObj.prototype.tabShow=function(tabberIndex)
+{var div;if(!this.tabs[tabberIndex]){return false;}
+this.tabHideAll();div=this.tabs[tabberIndex].div;div.className=div.className.replace(this.REclassTabHide,'');this.navSetActive(tabberIndex);if(typeof this.onTabDisplay=='function'){this.onTabDisplay({'tabber':this,'index':tabberIndex});}
+return this;};tabberObj.prototype.navSetActive=function(tabberIndex)
+{this.tabs[tabberIndex].li.className=this.classNavActive;return this;};tabberObj.prototype.navClearActive=function(tabberIndex)
+{this.tabs[tabberIndex].li.className='';return this;};function tabberAutomatic(tabberArgs)
+{var
+tempObj,divs,i;if(!tabberArgs){tabberArgs={};}
+tempObj=new tabberObj(tabberArgs);divs=document.getElementsByTagName("div");for(i=0;i<divs.length;i++){if(divs[i].className&&divs[i].className.match(tempObj.REclassMain)){tabberArgs.div=divs[i];divs[i].tabber=new tabberObj(tabberArgs);}}
+return this;}
+function tabberAutomaticOnLoad(tabberArgs)
+{var oldOnLoad;if(!tabberArgs){tabberArgs={};}
+oldOnLoad=window.onload;if(typeof window.onload!='function'){window.onload=function(){tabberAutomatic(tabberArgs);};}else{window.onload=function(){oldOnLoad();tabberAutomatic(tabberArgs);};}}
+if(typeof tabberOptions=='undefined'){tabberAutomaticOnLoad();}else{if(!tabberOptions['manualStartup']){tabberAutomaticOnLoad(tabberOptions);}}
\ No newline at end of file