").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 000000000000 -r f90fbc15b35a report_clonality/r_wrapper.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/report_clonality/r_wrapper.sh Thu Jul 16 08:30:43 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 000000000000 -r f90fbc15b35a report_clonality/script.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/report_clonality/script.js Thu Jul 16 08:30:43 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 000000000000 -r f90fbc15b35a report_clonality/style.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/report_clonality/style.css Thu Jul 16 08:30:43 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 000000000000 -r f90fbc15b35a report_clonality/tabber.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/report_clonality/tabber.js Thu Jul 16 08:30:43 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:
+
+