").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
diff -r 0510cf1f7cbc -r 010402c959aa report_clonality/r_wrapper.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/report_clonality/r_wrapper.sh Tue Aug 04 10:00:20 2015 -0400
@@ -0,0 +1,203 @@
+#!/bin/bash
+
+inputFile=$1
+outputDir=$3
+outputFile=$3/index.html #$2
+clonalType=$4
+species=$5
+locus=$6
+filterproductive=$7
+clonality_method=$8
+dir="$(cd "$(dirname "$0")" && pwd)"
+useD="false"
+if grep -q "$species.*${locus}D" "$dir/genes.txt" ; then
+ echo "species D region in reference db"
+ useD="true"
+fi
+echo "$species"
+if [[ "$species" == *"custom"* ]] ; then
+ loci=(${locus//;/ })
+ useD="true"
+ echo "${loci[@]}"
+ if [[ "${#loci[@]}" -eq "2" ]] ; then
+ useD="false"
+ fi
+fi
+mkdir $3
+cp $dir/genes.txt $outputDir
+Rscript --verbose $dir/RScript.r $inputFile $outputDir $outputDir $clonalType "$species" "$locus" $filterproductive ${clonality_method} 2>&1
+cp $dir/tabber.js $outputDir
+cp $dir/style.css $outputDir
+cp $dir/script.js $outputDir
+cp $dir/jquery-1.11.0.min.js $outputDir
+samples=`cat $outputDir/samples.txt`
+echo "
Tip: Open it in a new tab (middle mouse button or right mouse button -> 'open in new tab' on the link above)
" > $2
+echo "" >> $2
+echo "Sample/Replicate | All | Productive | Unique Productive | Unproductive | Unique Unproductive |
" >> $2
+while IFS=, read sample all productive perc_prod productive_unique perc_prod_un unproductive perc_unprod unproductive_unique perc_unprod_un
+ do
+ echo "$sample | " >> $2
+ echo "$all | " >> $2
+ echo "$productive (${perc_prod}%) | " >> $2
+ echo "$productive_unique (${perc_prod_un}%) | " >> $2
+ echo "$unproductive (${perc_unprod}%) | " >> $2
+ echo "$unproductive_unique (${perc_unprod_un}%) |
" >> $2
+done < $outputDir/productive_counting.txt
+echo "
" >> $2
+
+echo "productive_counting.txt"
+echo "
Report on:" >> $outputFile
+for sample in $samples; do
+ echo " $sample" >> $outputFile
+done
+echo "" >> $outputFile
+echo "" >> $outputFile
+echo "" >> $outputFile
+echo "
" >> $outputFile
+echo "
" >> $outputFile
+
+echo "

" >> $outputFile
+echo "

" >> $outputFile
+if [[ "$useD" == "true" ]] ; then
+ echo "

" >> $outputFile
+fi
+echo "

" >> $outputFile
+echo "

" >> $outputFile
+if [[ "$useD" == "true" ]] ; then
+ echo "

" >> $outputFile
+fi
+echo "

" >> $outputFile
+echo "

" >> $outputFile
+
+count=1
+echo "
" >> $outputFile
+for sample in $samples; do
+ echo "
" >> $outputFile
+ if [[ "$useD" == "true" ]] ; then
+ echo " | " >> $outputFile
+ fi
+ echo " | " >> $outputFile
+ if [[ "$useD" == "true" ]] ; then
+ echo " | " >> $outputFile
+ fi
+ echo "
" >> $outputFile
+ count=$((count+1))
+done
+echo "
" >> $outputFile
+
+#echo "
" >> $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" && "$clonalType" != "none" ]] ; then
+ echo "
" >> $outputFile
+ for sample in $samples; do
+ echo "${clonality_method}"
+ if [[ "${clonality_method}" == "old" ]] ; then
+ echo "in old"
+ clonalityScore="$(cat $outputDir/ClonalityScore_$sample.csv)"
+ echo "
" >> $outputFile
+ echo "Clonality Score: $clonalityScore |
" >> $outputFile
+
+ #replicate,reads,squared
+ echo "Replicate ID | Number of Reads | Reads Squared | |
" >> $outputFile
+ while IFS=, read replicate reads squared
+ do
+
+ echo "$replicate | $reads | $squared | |
" >> $outputFile
+ done < $outputDir/ReplicateReads_$sample.csv
+
+ #sum of reads and reads squared
+ while IFS=, read readsSum squaredSum
+ do
+ echo "Sum | $readsSum | $squaredSum |
" >> $outputFile
+ done < $outputDir/ReplicateSumReads_$sample.csv
+
+ #overview
+ echo "Coincidence Type | Raw Coincidence Freq | Coincidence Weight | Coincidences, Weighted |
" >> $outputFile
+ while IFS=, read type count weight weightedCount
+ do
+ echo "$type | $count | $weight | $weightedCount |
" >> $outputFile
+ done < $outputDir/ClonalityOverView_$sample.csv
+ echo "
" >> $outputFile
+ else
+ echo "in new"
+ clonalityScore="$(cat $outputDir/lymphclon_clonality_${sample}.csv)"
+ echo "
" >> $outputFile
+ echo "Lymphclon clonality score:
$clonalityScore
" >> $outputFile
+ echo "
" >> $outputFile
+ while IFS=, read type count
+ do
+ echo "$type | $count |
" >> $outputFile
+ done < $outputDir/lymphclon_coincidences_$sample.csv
+ echo "
" >> $outputFile
+ fi
+ done
+ echo "
" >> $outputFile
+fi
+
+hasJunctionData="$(if head -n 1 $inputFile | grep -q '3V-REGION trimmed-nt nb'; then echo 'Yes'; else echo 'No'; fi)"
+
+if [[ "$hasJunctionData" == "Yes" ]] ; then
+ echo "
" >> $outputFile
+ echo "
ProductiveSample | count | VH.DEL | P1 | N1 | P2 | DEL.DH | DH.DEL | P3 | N2 | P4 | DEL.JH | Total.Del | Total.N | Total.P |
" >> $outputFile
+ while IFS=, read Sample unique VHDEL P1 N1 P2 DELDH DHDEL P3 N2 P4 DELJH TotalDel TotalN TotalP
+ do
+ echo "$Sample | $unique | $VHDEL | $P1 | $N1 | $P2 | $DELDH | $DHDEL | $P3 | $N2 | $P4 | $DELJH | $TotalDel | $TotalN | $TotalP |
" >> $outputFile
+ done < $outputDir/junctionAnalysisProd.csv
+ echo "
" >> $outputFile
+
+ echo "
UnproductiveSample | count | VH.DEL | P1 | N1 | P2 | DEL.DH | DH.DEL | P3 | N2 | P4 | DEL.JH | Total.Del | Total.N | Total.P |
" >> $outputFile
+ while IFS=, read Sample unique VHDEL P1 N1 P2 DELDH DHDEL P3 N2 P4 DELJH TotalDel TotalN TotalP
+ do
+ echo "$Sample | $unique | $VHDEL | $P1 | $N1 | $P2 | $DELDH | $DHDEL | $P3 | $N2 | $P4 | $DELJH | $TotalDel | $TotalN | $TotalP |
" >> $outputFile
+ done < $outputDir/junctionAnalysisUnProd.csv
+ echo "
" >> $outputFile
+
+ echo "
" >> $outputFile
+fi
+
+echo "
" >> $outputFile
+echo "
" >> $outputFile
+echo "
" >> $outputFile
+echo "
" >> $outputFile
+echo "
" >> $outputFile
+
+echo "
" >> $outputFile
+echo "
" >> $outputFile
+echo "Description | Link |
" >> $outputFile
+echo "The dataset used to generate the frequency graphs and the heatmaps (Unique based on clonaltype, $clonalType) | Download |
" >> $outputFile
+echo "The dataset used to calculate clonality score (Unique based on clonaltype, $clonalType) | Download |
" >> $outputFile
+
+echo "The dataset used to generate the CDR3 length frequency graph | Download |
" >> $outputFile
+
+echo "The dataset used to generate the V gene family frequency graph | Download |
" >> $outputFile
+if [[ "$useD" == "true" ]] ; then
+ echo "The dataset used to generate the D gene family frequency graph | Download |
" >> $outputFile
+fi
+echo "The dataset used to generate the J gene family frequency graph | Download |
" >> $outputFile
+
+echo "The dataset used to generate the V gene frequency graph | Download |
" >> $outputFile
+if [[ "$useD" == "true" ]] ; then
+ echo "The dataset used to generate the D gene frequency graph | Download |
" >> $outputFile
+fi
+echo "The dataset used to generate the J gene frequency graph | Download |
" >> $outputFile
+echo "The dataset used to generate the AA composition graph | Download |
" >> $outputFile
+
+for sample in $samples; do
+ if [[ "$useD" == "true" ]] ; then
+ echo "The data used to generate the VD heatmap for $sample. | Download |
" >> $outputFile
+ fi
+ echo "The data used to generate the VJ heatmap for $sample. | Download |
" >> $outputFile
+ if [[ "$useD" == "true" ]] ; then
+ echo "The data used to generate the DJ heatmap for $sample. | Download |
" >> $outputFile
+ fi
+done
+
+echo "
" >> $outputFile
+echo "
" >> $outputFile
diff -r 0510cf1f7cbc -r 010402c959aa report_clonality/script.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/report_clonality/script.js Tue Aug 04 10:00:20 2015 -0400
@@ -0,0 +1,36 @@
+function compareAdd(id){
+ var img = document.createElement('img');
+ img.setAttribute('src', 'HeatmapVD_' + id + '.png');
+ var td = document.createElement('td');
+ td.setAttribute('id', "comparison_vd_" + id);
+ td.appendChild(img)
+ $('#comparison_table_vd').append(td);
+
+ img = document.createElement('img');
+ img.setAttribute('src', 'HeatmapVJ_' + id + '.png');
+ td = document.createElement('td');
+ td.setAttribute('id', "comparison_vj_" + id);
+ td.appendChild(img)
+ $('#comparison_table_vj').append(td);
+
+ img = document.createElement('img');
+ img.setAttribute('src', 'HeatmapDJ_' + id + '.png');
+ td = document.createElement('td');
+ td.setAttribute('id', "comparison_dj_" + id);
+ td.appendChild(img)
+ $('#comparison_table_dj').append(td);
+
+ $('#compare_checkbox_' + id).attr('onchange', "javascript:compareRemove('" + id + "')");
+}
+
+
+function compareRemove(id){
+ $("#comparison_vd_" + id).remove()
+ $("#comparison_vj_" + id).remove()
+ $("#comparison_dj_" + id).remove()
+ $("#compare_checkbox_" + id).attr('onchange', "javascript:compareAdd('" + id + "')");
+}
+
+$( document ).ready(function () {
+ $('#junction_table').tablesorter();
+})
diff -r 0510cf1f7cbc -r 010402c959aa report_clonality/style.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/report_clonality/style.css Tue Aug 04 10:00:20 2015 -0400
@@ -0,0 +1,109 @@
+/* $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;
+}
diff -r 0510cf1f7cbc -r 010402c959aa report_clonality/tabber.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/report_clonality/tabber.js Tue Aug 04 10:00:20 2015 -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='
nav';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/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(//gi,this.id);aId=aId.replace(//gi,i);aId=aId.replace(//gi,i+1);aId=aId.replace(//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
+
+
+#if $gene_selection.source == "imgtdb"
+ report_clonality/r_wrapper.sh $in_file $out_file $out_file.files_path "$clonaltype" "${gene_selection.species}" "${gene_selection.locus}" $filterproductive $clonality_method
+#else
+ report_clonality/r_wrapper.sh $in_file $out_file $out_file.files_path "$clonaltype" "custom" "${gene_selection.vgenes};${gene_selection.dgenes};${gene_selection.jgenes}" $filterproductive $clonality_method
+#end if
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+**INPUT**
+
+One or more ARGalaxy proprietary format files combined with the ARGalaxy Experimental Design tool
+
+
+.. class:: warningmark
+
+Custom gene ordering based on position on genome:
+
+**Human**
+
+IGH::
+
+ V:
+ IGHV7-81,IGHV3-74,IGHV3-73,IGHV3-72,IGHV3-71,IGHV2-70,IGHV1-69,IGHV3-66,IGHV3-64,IGHV4-61,IGHV4-59,IGHV1-58,IGHV3-53,IGHV3-52,IGHV5-a,IGHV5-51,IGHV3-49,IGHV3-48,IGHV3-47,IGHV1-46,IGHV1-45,IGHV3-43,IGHV4-39,IGHV3-35,IGHV4-34,IGHV3-33,IGHV4-31,IGHV4-30-4,IGHV4-30-2,IGHV3-30-3,IGHV3-30,IGHV4-28,IGHV2-26,IGHV1-24,IGHV3-23,IGHV3-22,IGHV3-21,IGHV3-20,IGHV3-19,IGHV1-18,IGHV3-15,IGHV3-13,IGHV3-11,IGHV3-9,IGHV1-8,IGHV3-7,IGHV2-5,IGHV7-4-1,IGHV4-4,IGHV4-b,IGHV1-3,IGHV1-2,IGHV6-1
+ D:
+ IGHD1-1,IGHD2-2,IGHD3-3,IGHD6-6,IGHD1-7,IGHD2-8,IGHD3-9,IGHD3-10,IGHD4-11,IGHD5-12,IGHD6-13,IGHD1-14,IGHD2-15,IGHD3-16,IGHD4-17,IGHD5-18,IGHD6-19,IGHD1-20,IGHD2-21,IGHD3-22,IGHD4-23,IGHD5-24,IGHD6-25,IGHD1-26,IGHD7-27
+ J:
+ IGHJ1,IGHJ2,IGHJ3,IGHJ4,IGHJ5,IGHJ6
+
+
+IGK::
+
+ V:
+ IGKV3D-7,IGKV1D-8,IGKV1D-43,IGKV3D-11,IGKV1D-12,IGKV1D-13,IGKV3D-15,IGKV1D-16,IGKV1D-17,IGKV3D-20,IGKV2D-26,IGKV2D-28,IGKV2D-29,IGKV2D-30,IGKV1D-33,IGKV1D-39,IGKV2D-40,IGKV2-40,IGKV1-39,IGKV1-33,IGKV2-30,IGKV2-29,IGKV2-28,IGKV1-27,IGKV2-24,IGKV3-20,IGKV1-17,IGKV1-16,IGKV3-15,IGKV1-13,IGKV1-12,IGKV3-11,IGKV1-9,IGKV1-8,IGKV1-6,IGKV1-5,IGKV5-2,IGKV4-1
+ J:
+ IGKJ1,IGKJ2,IGKJ3,IGKJ4,IGKJ5
+
+
+IGL::
+
+ V:
+ IGLV4-69,IGLV8-61,IGLV4-60,IGLV6-57,IGLV5-52,IGLV1-51,IGLV9-49,IGLV1-47,IGLV7-46,IGLV5-45,IGLV1-44,IGLV7-43,IGLV1-41,IGLV1-40,IGLV5-39,IGLV5-37,IGLV1-36,IGLV3-27,IGLV3-25,IGLV2-23,IGLV3-22,IGLV3-21,IGLV3-19,IGLV2-18,IGLV3-16,IGLV2-14,IGLV3-12,IGLV2-11,IGLV3-10,IGLV3-9,IGLV2-8,IGLV4-3,IGLV3-1
+ J:
+ IGLJ1,IGLJ2,IGLJ3,IGLJ6,IGLJ7
+
+
+TRB::
+
+ V:
+ TRBV2,TRBV3-1,TRBV4-1,TRBV5-1,TRBV6-1,TRBV4-2,TRBV6-2,TRBV4-3,TRBV6-3,TRBV7-2,TRBV6-4,TRBV7-3,TRBV9,TRBV10-1,TRBV11-1,TRBV10-2,TRBV11-2,TRBV6-5,TRBV7-4,TRBV5-4,TRBV6-6,TRBV5-5,TRBV7-6,TRBV5-6,TRBV6-8,TRBV7-7,TRBV6-9,TRBV7-8,TRBV5-8,TRBV7-9,TRBV13,TRBV10-3,TRBV11-3,TRBV12-3,TRBV12-4,TRBV12-5,TRBV14,TRBV15,TRBV16,TRBV18,TRBV19,TRBV20-1,TRBV24-1,TRBV25-1,TRBV27,TRBV28,TRBV29-1,TRBV30
+ D:
+ TRBD1,TRBD2
+ J:
+ TRBJ1-1,TRBJ1-2,TRBJ1-3,TRBJ1-4,TRBJ1-5,TRBJ1-6,TRBJ2-1,TRBJ2-2,TRBJ2-3,TRBJ2-4,TRBJ2-5,TRBJ2-6,TRBJ2-7
+
+
+TRA::
+
+ V:
+ TRAV1-1,TRAV1-2,TRAV2,TRAV3,TRAV4,TRAV5,TRAV6,TRAV7,TRAV8-1,TRAV9-1,TRAV10,TRAV12-1,TRAV8-2,TRAV8-3,TRAV13-1,TRAV12-2,TRAV8-4,TRAV13-2,TRAV14/DV4,TRAV9-2,TRAV12-3,TRAV8-6,TRAV16,TRAV17,TRAV18,TRAV19,TRAV20,TRAV21,TRAV22,TRAV23/DV6,TRAV24,TRAV25,TRAV26-1,TRAV27,TRAV29/DV5,TRAV30,TRAV26-2,TRAV34,TRAV35,TRAV36/DV7,TRAV38-1,TRAV38-2/DV8,TRAV39,TRAV40,TRAV41
+ J:
+ TRAJ57,TRAJ56,TRAJ54,TRAJ53,TRAJ52,TRAJ50,TRAJ49,TRAJ48,TRAJ47,TRAJ46,TRAJ45,TRAJ44,TRAJ43,TRAJ42,TRAJ41,TRAJ40,TRAJ39,TRAJ38,TRAJ37,TRAJ36,TRAJ34,TRAJ33,TRAJ32,TRAJ31,TRAJ30,TRAJ29,TRAJ28,TRAJ27,TRAJ26,TRAJ24,TRAJ23,TRAJ22,TRAJ21,TRAJ20,TRAJ18,TRAJ17,TRAJ16,TRAJ15,TRAJ14,TRAJ13,TRAJ12,TRAJ11,TRAJ10,TRAJ9,TRAJ8,TRAJ7,TRAJ6,TRAJ5,TRAJ4,TRAJ3
+
+
+TRG::
+
+ V:
+ TRGV9,TRGV8,TRGV5,TRGV4,TRGV3,TRGV2
+ J:
+ TRGJ2,TRGJP2,TRGJ1,TRGJP1
+
+
+TRD::
+
+ V:
+ TRDV1,TRDV2,TRDV3
+ D:
+ TRDD1,TRDD2,TRDD3
+ J:
+ TRDJ1,TRDJ4,TRDJ2,TRDJ3
+
+
+**Mouse**
+
+TRB::
+
+ V:
+ TRBV1,TRBV2,TRBV3,TRBV4,TRBV5,TRBV12-1,TRBV13-1,TRBV12-2,TRBV13-2,TRBV13-3,TRBV14,TRBV15,TRBV16,TRBV17,TRBV19,TRBV20,TRBV23,TRBV24,TRBV26,TRBV29,TRBV30,TRBV31
+ D:
+ TRBD1,TRBD2
+ J:
+ TRBJ1-1,TRBJ1-2,TRBJ1-3,TRBJ1-4,TRBJ1-5,TRBJ2-1,TRBJ2-2,TRBJ2-3,TRBJ2-4,TRBJ2-5,TRBJ2-6,TRBJ2-7
+
+
+**OUTPUT**
+
+It generates the following result:
+
+
diff -r 0510cf1f7cbc -r 010402c959aa subclass_definition.db.nhr
Binary file subclass_definition.db.nhr has changed
diff -r 0510cf1f7cbc -r 010402c959aa subclass_definition.db.nin
Binary file subclass_definition.db.nin has changed
diff -r 0510cf1f7cbc -r 010402c959aa subclass_definition.db.nsq
Binary file subclass_definition.db.nsq has changed
diff -r 0510cf1f7cbc -r 010402c959aa tool_dependencies.xml
--- a/tool_dependencies.xml Tue Aug 04 09:59:26 2015 -0400
+++ b/tool_dependencies.xml Tue Aug 04 10:00:20 2015 -0400
@@ -1,24 +1,28 @@
-
-
-
-
+
- ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.30/ncbi-blast-2.2.30+-x64-linux.tar.gz
-
- bin/blastn
- $INSTALL_DIR
-
-
- $INSTALL_DIR
-
+ https://github.com/mikessh/higblast/releases/download/v0.6/igblastwrapper_linux64.tar.gz
+
+ bin
+ $INSTALL_DIR/
+
+
+ data
+ $INSTALL_DIR/
+
+
+ igblastwrp.jar
+ $INSTALL_DIR/
+
+
+ $INSTALL_DIR/
+
- downloads blast (ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.30/ncbi-blast-2.2.30+-x64-linux.tar.gz) and keeps the blastn executable
+Downloads https://github.com/mikessh/higblast/
-
diff -r 0510cf1f7cbc -r 010402c959aa wrapper.sh
--- a/wrapper.sh Tue Aug 04 09:59:26 2015 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-#!/bin/bash
-set -e
-dir="$(cd "$(dirname "$0")" && pwd)"
-input=$1
-method=$2
-output=$3
-outdir=$4
-title=$5
-include_fr1=$6
-functionality=$7
-unique=$8
-mkdir $outdir
-
-type="`file $input`"
-if [[ "$type" == *"Zip archive"* ]] ; then
- echo "Zip archive"
- echo "unzip $input -d $PWD/files/"
- unzip $input -d $PWD/files/
-elif [[ "$type" == *"XZ compressed data"* ]] ; then
- echo "ZX archive"
- echo "tar -xJf $input -C $PWD/files/"
- mkdir -p $PWD/files/$title
- tar -xJf $input -C $PWD/files/$title
-fi
-
-cat $PWD/files/*/1_* > $PWD/summary.txt
-cat $PWD/files/*/7_* > $PWD/mutationanalysis.txt
-cat $PWD/files/*/8_* > $PWD/mutationstats.txt
-cat $PWD/files/*/10_* > $PWD/hotspots.txt
-
-#BLASTN_DIR="/home/galaxy/tmp/blast/ncbi-blast-2.2.30+/bin"
-
-echo "${BLASTN_DIR}"
-
-echo "identification ($method)"
-
-if [[ "${method}" == "custom" ]] ; then
- python $dir/gene_identification.py --input $PWD/summary.txt --output $outdir/identified_genes.txt
-else
- ID_index=$(cat $PWD/summary.txt | grep -o -P ".+Sequence ID" | grep -o -P "\t" | wc -l)
- ID_index=$((ID_index+1))
- sequence_index=$(cat $PWD/summary.txt | grep -o -P ".+\tSequence" | grep -o -P "\t" | wc -l)
- sequence_index=$((sequence_index+1))
-
- echo "$ID_index ${sequence_index}"
-
- cat $PWD/summary.txt | tail -n+2 | cut -f ${ID_index},${sequence_index} | awk '{print ">" $1 "\n" $2}' > $PWD/sequences.fasta
-
- echo -e "qseqid\tsseqid\tpident\tlength\tmismatch\tgapopen\tqstart\tqend\tsstart\tsend\tevalue\tbitscore" > $outdir/identified_genes.txt
- ${BLASTN_DIR}/blastn -task blastn -db $dir/subclass_definition.db -query $PWD/sequences.fasta -outfmt 6 >> $outdir/identified_genes.txt
-fi
-
-
-
-echo "merging"
-Rscript $dir/merge_and_filter.r $PWD/summary.txt $PWD/mutationanalysis.txt $PWD/mutationstats.txt $PWD/hotspots.txt $outdir/identified_genes.txt $outdir/merged.txt $outdir/unmatched.txt $method $functionality $unique
-
-genes="ca,ca1,ca2,cg,cg1,cg2,cg3,cg4,cm"
-echo "R mutation analysis"
-Rscript $dir/mutation_analysis.r $outdir/merged.txt $genes $outdir ${include_fr1} 2>&1
-echo "python mutation analysis"
-python $dir/mutation_analysis.py --input $outdir/merged.txt --genes $genes --includefr1 "${include_fr1}" --output $outdir/hotspot_analysis.txt
-echo "R AA histogram"
-Rscript $dir/aa_histogram.r $outdir/aa_mutations.txt $outdir/aa_histogram.png 2>&1
-
-cat $outdir/mutations.txt $outdir/hotspot_analysis.txt > $outdir/result.txt
-
-genes=(ca ca1 ca2 cg cg1 cg2 cg3 cg4 cm)
-
-
-echo "$title
" > $output
-echo "info | " >> $output
-for gene in ${genes[@]}
-do
- tmp=`cat $outdir/${gene}_n.txt`
- echo "${gene} (N = $tmp) | " >> $output
-done
-tmp=`cat $outdir/total_n.txt`
-echo "all (N = $tmp) | " >> $output
-
-while IFS=, read name cax cay caz ca1x ca1y ca1z ca2x ca2y ca2z cgx cgy cgz cg1x cg1y cg1z cg2x cg2y cg2z cg3x cg3y cg3z cg4x cg4y cg4z cmx cmy cmz allx ally allz
-do
- if [ "$name" == "FR S/R (ratio)" ] || [ "$name" == "CDR S/R (ratio)" ] ; then #meh
- echo "
---|
$name | ${cax}/${cay} (${caz}) | ${ca1x}/${ca1y} (${ca1z}) | ${ca2x}/${ca2y} (${ca2z}) | ${cgx}/${cgy} (${cgz}) | ${cg1x}/${cg1y} (${cg1z}) | ${cg2x}/${cg2y} (${cg2z}) | ${cg3x}/${cg3y} (${cg3z}) | ${cg4x}/${cg4y} (${cg4z}) | ${cmx}/${cmy} (${cmz}) | ${allx}/${ally} (${allz}) |
" >> $output
- else
- echo "$name | ${cax}/${cay} (${caz}%) | ${ca1x}/${ca1y} (${ca1z}%) | ${ca2x}/${ca2y} (${ca2z}%) | ${cgx}/${cgy} (${cgz}%) | ${cg1x}/${cg1y} (${cg1z}%) | ${cg2x}/${cg2y} (${cg2z}%) | ${cg3x}/${cg3y} (${cg3z}%) | ${cg4x}/${cg4y} (${cg4z}%) | ${cmx}/${cmy} (${cmz}%) | ${allx}/${ally} (${allz}%) |
" >> $output
- fi
-done < $outdir/result.txt
-echo "
" >> $output
-echo "unmatched
motif per sequence
all data
" >> $output
-
-
-echo "
" >> $output
-echo "download data
" >> $output
-if [ -a $outdir/ca.png ]
-then
- echo "
" >> $output
- echo "download data
" >> $output
-fi
-if [ -a $outdir/cg.png ]
-then
- echo "
" >> $output
- echo "download data
" >> $output
-fi
-if [ -a $outdir/scatter.png ]
-then
- echo "
" >> $output
- echo "download data
" >> $output
-fi
-if [ -a $outdir/aa_histogram.png ]
-then
- echo "
" >> $output
- echo "download data
" >> $output
-fi
-
-for gene in ${genes[@]}
-do
- echo "$gene transition table" >> $output
- while IFS=, read from a c g t
- do
- echo "$from | $a | $c | $g | $t |
" >> $output
- done < $outdir/transitions_${gene}.txt
- echo "
" >> $output
-done
-
-echo "All transition table" >> $output
-while IFS=, read from a c g t
- do
- echo "$from | $a | $c | $g | $t |
" >> $output
-done < $outdir/transitions.txt
-echo "
" >> $output
-
-echo "" >> $output
-
-#rm $outdir/HS12RSS.txt
-#rm $outdir/HS23RSS.txt