changeset 52:124b7fd92a3e draft

Uploaded
author davidvanzessen
date Thu, 25 Feb 2021 13:36:15 +0000
parents e35b82f31ec7
children 0ef7f80ea061
files .gitattributes .gitignore LICENSE README.md complete.sh complete_immunerepertoire.xml experimental_design/experimental_design.r experimental_design/experimental_design.sh igblast/igblast.r igblast/igblast.sh imgt_loader/imgt_loader.r imgt_loader/imgt_loader.sh report_clonality/IGH_junctie_analyse.png report_clonality/RScript.r report_clonality/circos/circos.conf report_clonality/circos/etc/LTe50046.ttf report_clonality/circos/etc/LTe50048.ttf report_clonality/circos/etc/LTe50050.ttf report_clonality/circos/etc/LTe50054.ttf report_clonality/circos/etc/pragmata.ttf report_clonality/circos/etc/wingding.ttf report_clonality/circos/etc_colors.conf report_clonality/circos/fonts.conf report_clonality/circos/housekeeping.conf report_clonality/circos/ideogram.conf report_clonality/circos/parse-table.conf report_clonality/circos/ticks.conf report_clonality/genes.txt report_clonality/jquery-1.11.0.min.js report_clonality/naive_cdr3_char.htm report_clonality/naive_circos.htm report_clonality/naive_clonality.htm report_clonality/naive_compare.htm report_clonality/naive_downloads.htm report_clonality/naive_gene_freq.htm report_clonality/naive_heatmap.htm report_clonality/naive_junction.htm report_clonality/naive_overview.htm report_clonality/pure-min.css report_clonality/r_wrapper.sh report_clonality/script.js report_clonality/style.css report_clonality/tabber.js
diffstat 36 files changed, 7747 insertions(+), 7743 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.gitattributes	Thu Feb 25 13:36:15 2021 +0000
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.gitignore	Thu Feb 25 13:36:15 2021 +0000
@@ -0,0 +1,2 @@
+
+argalaxy\.tar\.gz
--- a/LICENSE	Thu Aug 08 07:40:36 2019 -0400
+++ b/LICENSE	Thu Feb 25 13:36:15 2021 +0000
@@ -1,21 +1,21 @@
-MIT License
-
-Copyright (c) 2018 David van Zessen
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+MIT License
+
+Copyright (c) 2018 David van Zessen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
\ No newline at end of file
--- a/README.md	Thu Aug 08 07:40:36 2019 -0400
+++ b/README.md	Thu Feb 25 13:36:15 2021 +0000
@@ -1,123 +1,123 @@
-# ARGalaxy Immune Repertoire
-This is the GitHub repository for the ARGalaxy Immune repertoire pipeline.  
-The Galaxy tool version can be found [here](https://toolshed.g2.bx.psu.edu/repository/browse_repositories_i_own?sort=name&operation=view_or_manage_repository&id=2e457d63170a4b1c).  
-The docker version can be found [here](https://github.com/ErasmusMC-Bioinformatics/ARGalaxy-docker).
-
-## Overview
-
-In execution order:
-
-#### imgt_loader or igblast
-
-###### imgt_loader (Recommended)
-Start the analysis with [IMGT HighV Quest](https://www.imgt.org/HighV-QUEST/) archives.  
-An IMGT archive file holds [multiple tabular files](http://www.imgt.org/IMGT_vquest/share/textes/imgtvquest.html#output3), this script extracts the specific columns relevant to the analysis from several of these files.
-
-`Rscript imgt_loader.r 1_Summary.txt 3_Nt-sequences.txt 5_AA-sequences.txt 6_Junction.txt 4_IMGT-gapped-AA-sequences.txt /path/to/output.txt`
-
-
-###### igblast
-Start the analysis with FASTA files that are aligned with [igblast](https://www.ncbi.nlm.nih.gov/igblast/).  
-Note that this method will provide less information than the IMGT archive.
-
-`sh igblast.sh /path/to/sequences.fasta species locus /path/to/output.txt`
-
-#### experimental_design
-This script will merge multiple result files (from the last step) into a single file with an additional ID and Replicate column to differentiate the individual samples during the analysis and to allow for analysis across samples.
-
-`Rscript experimental_design.r /path/to/input_1 id_1 [/path/to/input_2 id_2] [/path/to/input_n id_n] /path/to/output`
-
-#### report_clonality
-The R script that creates the analysis result.
-
-`sh r_wrapper.sh /path/to/experimental_design/output.txt /path/to/output_dir/output.html /path/to/output_dir "clonaltype" "species" "locus" "filter_productive" "clonality_method"`  
-
-###### parameters
-Clonaltype:  
-- none
-- Top.V.Gene,CDR3.Seq
-- Top.V.Gene,CDR3.Seq.DNA
-- Top.V.Gene,Top.J.Gene,CDR3.Seq
-- Top.V.Gene,Top.J.Gene,CDR3.Seq.DNA
-- Top.V.Gene,Top.D.Gene,Top.J.Gene,CDR3.Seq.DNA
-
-Species:
-- Homo sapiens functional
-- Homo sapiens
-- Homo sapiens non-functional
-- Bos taurus
-- Bos taurus functional
-- Bos taurus non-functional
-- Camelus dromedarius
-- Camelus dromedarius functional
-- Camelus dromedarius non-functional
-- Canis lupus familiaris
-- Canis lupus familiaris functional
-- Canis lupus familiaris non-functional
-- Danio rerio
-- Danio rerio functional
-- Danio rerio non-functional
-- Macaca mulatta
-- Macaca mulatta functional
-- Macaca mulatta non-functional
-- Mus musculus
-- Mus musculus functional
-- Mus musculus non-functional
-- Mus spretus
-- Mus spretus functional
-- Mus spretus non-functional
-- Oncorhynchus mykiss
-- Oncorhynchus mykiss functional
-- Oncorhynchus mykiss non-functional
-- Ornithorhynchus anatinus
-- Ornithorhynchus anatinus functional
-- Ornithorhynchus anatinus non-functional
-- Oryctolagus cuniculus
-- Oryctolagus cuniculus functional
-- Oryctolagus cuniculus non-functional
-- Rattus norvegicus
-- Rattus norvegicus functional
-- Rattus norvegicus non-functional
-- Sus scrofa
-- Sus scrofa functional
-- Sus scrofa non-functional
-
-Locus:
-- TRA
-- TRD
-- TRG
-- TRB
-- IGH
-- IGI
-- IGK
-- IGL
-
-Filter productive:
-- yes
-- no
-
-Clonality Method:
-- none
-- old
-- boyd
-
-## complete.sh
-This script will run all of the above for you, it will detect if you are using FASTA files or IMGT archives and use the appropriate tools.
-
-`sh complete.sh /path/to/input_1 id_1 [/path/to/input_n id_n] /path/to/out_dir/out.html /path/to/out_dir clonaltype species locus filter_productive clonality_method`  
-See "report_clonality" for the parameter options.
-
-## Dependencies
-- Linux
-- R
-  - gridExtra
-  - ggplot2
-  - plyr
-  - data.table
-  - reshape2
-  - lymphclon
-
-#### optional
-- Circos
-- IgBlast
-- igblastwrp
+# ARGalaxy Immune Repertoire
+This is the GitHub repository for the ARGalaxy Immune repertoire pipeline.  
+The Galaxy tool version can be found [here](https://toolshed.g2.bx.psu.edu/repository/browse_repositories_i_own?sort=name&operation=view_or_manage_repository&id=2e457d63170a4b1c).  
+The docker version can be found [here](https://github.com/ErasmusMC-Bioinformatics/ARGalaxy-docker).
+
+## Overview
+
+In execution order:
+
+#### imgt_loader or igblast
+
+###### imgt_loader (Recommended)
+Start the analysis with [IMGT HighV Quest](https://www.imgt.org/HighV-QUEST/) archives.  
+An IMGT archive file holds [multiple tabular files](http://www.imgt.org/IMGT_vquest/share/textes/imgtvquest.html#output3), this script extracts the specific columns relevant to the analysis from several of these files.
+
+`Rscript imgt_loader.r 1_Summary.txt 3_Nt-sequences.txt 5_AA-sequences.txt 6_Junction.txt 4_IMGT-gapped-AA-sequences.txt /path/to/output.txt`
+
+
+###### igblast
+Start the analysis with FASTA files that are aligned with [igblast](https://www.ncbi.nlm.nih.gov/igblast/).  
+Note that this method will provide less information than the IMGT archive.
+
+`sh igblast.sh /path/to/sequences.fasta species locus /path/to/output.txt`
+
+#### experimental_design
+This script will merge multiple result files (from the last step) into a single file with an additional ID and Replicate column to differentiate the individual samples during the analysis and to allow for analysis across samples.
+
+`Rscript experimental_design.r /path/to/input_1 id_1 [/path/to/input_2 id_2] [/path/to/input_n id_n] /path/to/output`
+
+#### report_clonality
+The R script that creates the analysis result.
+
+`sh r_wrapper.sh /path/to/experimental_design/output.txt /path/to/output_dir/output.html /path/to/output_dir "clonaltype" "species" "locus" "filter_productive" "clonality_method"`  
+
+###### parameters
+Clonaltype:  
+- none
+- Top.V.Gene,CDR3.Seq
+- Top.V.Gene,CDR3.Seq.DNA
+- Top.V.Gene,Top.J.Gene,CDR3.Seq
+- Top.V.Gene,Top.J.Gene,CDR3.Seq.DNA
+- Top.V.Gene,Top.D.Gene,Top.J.Gene,CDR3.Seq.DNA
+
+Species:
+- Homo sapiens functional
+- Homo sapiens
+- Homo sapiens non-functional
+- Bos taurus
+- Bos taurus functional
+- Bos taurus non-functional
+- Camelus dromedarius
+- Camelus dromedarius functional
+- Camelus dromedarius non-functional
+- Canis lupus familiaris
+- Canis lupus familiaris functional
+- Canis lupus familiaris non-functional
+- Danio rerio
+- Danio rerio functional
+- Danio rerio non-functional
+- Macaca mulatta
+- Macaca mulatta functional
+- Macaca mulatta non-functional
+- Mus musculus
+- Mus musculus functional
+- Mus musculus non-functional
+- Mus spretus
+- Mus spretus functional
+- Mus spretus non-functional
+- Oncorhynchus mykiss
+- Oncorhynchus mykiss functional
+- Oncorhynchus mykiss non-functional
+- Ornithorhynchus anatinus
+- Ornithorhynchus anatinus functional
+- Ornithorhynchus anatinus non-functional
+- Oryctolagus cuniculus
+- Oryctolagus cuniculus functional
+- Oryctolagus cuniculus non-functional
+- Rattus norvegicus
+- Rattus norvegicus functional
+- Rattus norvegicus non-functional
+- Sus scrofa
+- Sus scrofa functional
+- Sus scrofa non-functional
+
+Locus:
+- TRA
+- TRD
+- TRG
+- TRB
+- IGH
+- IGI
+- IGK
+- IGL
+
+Filter productive:
+- yes
+- no
+
+Clonality Method:
+- none
+- old
+- boyd
+
+## complete.sh
+This script will run all of the above for you, it will detect if you are using FASTA files or IMGT archives and use the appropriate tools.
+
+`sh complete.sh /path/to/input_1 id_1 [/path/to/input_n id_n] /path/to/out_dir/out.html /path/to/out_dir clonaltype species locus filter_productive clonality_method`  
+See "report_clonality" for the parameter options.
+
+## Dependencies
+- Linux
+- R
+  - gridExtra
+  - ggplot2
+  - plyr
+  - data.table
+  - reshape2
+  - lymphclon
+
+#### optional
+- Circos
+- IgBlast
+- igblastwrp
--- a/complete.sh	Thu Aug 08 07:40:36 2019 -0400
+++ b/complete.sh	Thu Feb 25 13:36:15 2021 +0000
@@ -1,72 +1,72 @@
-#!/bin/bash
-set -e
-inputFiles=($1)
-outputDir=$3
-outputFile=$3/index.html #$1
-clonalType=$4
-species=$5
-locus=$6
-filterproductive=$7
-clonality_method=$8
-
-html=$2
-dir="$(cd "$(dirname "$0")" && pwd)"
-array=("$@")
-echo "<html><h3>Progress</h3><table><tr><td>info</td></tr>" > $html
-echo "<tr><td>-----------------------------------</td></tr>" >> $html
-
-#mkdir $PWD/igblastdatabase
-#unzip $dir/database.zip -d $PWD/igblastdatabase/
-#export IGDATA=$PWD/igblastdatabase/
-
-echo "python: `which python`"
-echo "R: `which R`"
-echo "Rscript: `which Rscript`"
-
-id=""
-forwardSlash="/"
-mergerInput=()
-echo "Before loop"
-count=1
-for current in "${inputFiles[@]}"
-do
-	if [[ "$current" != *"$forwardSlash"* ]]; then
-			id="$current"
-			mergerInput+=($id)
-			count=1
-			continue
-	fi
-	echo "working on $current"
-	fileName=$(basename $current)
-	fileName="${fileName%.*}"
-	parsedFileName="$PWD/$fileName.parsed"
-	f=$(file $current)
-	zipType="Zip archive"
-	zxType="XZ compressed data"
-	echo "filetype of ${id}: $f"
-  	if [[ "$f" == *"$zipType"* ]] || [[ "$f" == *"$zxType"* ]]
-	then
-		echo "<tr><td>Sample $count of patient $id is an archive file, using IMGT Loader</td></tr>" >> $html
-	  	fileName=$(basename $current)
-		bash ${dir}/imgt_loader/imgt_loader.sh $current $parsedFileName "${fileName}"
-	else
-		echo "<tr><td>Sample $count of patient $id is not a zip file so assuming fasta/fastq, using igBLASTn</td></tr>" >> $html
-		bash ${dir}/igblast/igblast.sh $current "$species" $locus $parsedFileName
-	fi
-	mergerInput+=($parsedFileName)
-	count=$((count+1))
-done
-
-echo "<tr><td>-----------------------------------</td></tr>" >> $html
-echo "<tr><td>merging</td></tr>" >> $html
-
-bash $dir/experimental_design/experimental_design.sh ${mergerInput[*]} $PWD/merged.txt
-
-echo "<tr><td>done</td></tr>" >> $html
-echo "<tr><td>-----------------------------------</td></tr>" >> $html
-echo "<tr><td>plotting</td></tr>" >> $html
-
-echo "after ED"
-
-bash $dir/report_clonality/r_wrapper.sh $PWD/merged.txt $2 $outputDir $clonalType "$species" "$locus" $filterproductive $clonality_method
-
+#!/bin/bash
+set -e
+inputFiles=($1)
+outputDir=$3
+outputFile=$3/index.html #$1
+clonalType=$4
+species=$5
+locus=$6
+filterproductive=$7
+clonality_method=$8
+
+html=$2
+dir="$(cd "$(dirname "$0")" && pwd)"
+array=("$@")
+echo "<html><h3>Progress</h3><table><tr><td>info</td></tr>" > $html
+echo "<tr><td>-----------------------------------</td></tr>" >> $html
+
+#mkdir $PWD/igblastdatabase
+#unzip $dir/database.zip -d $PWD/igblastdatabase/
+#export IGDATA=$PWD/igblastdatabase/
+
+echo "python: `which python`"
+echo "R: `which R`"
+echo "Rscript: `which Rscript`"
+
+id=""
+forwardSlash="/"
+mergerInput=()
+echo "Before loop"
+count=1
+for current in "${inputFiles[@]}"
+do
+	if [[ "$current" != *"$forwardSlash"* ]]; then
+			id="$current"
+			mergerInput+=($id)
+			count=1
+			continue
+	fi
+	echo "working on $current"
+	fileName=$(basename $current)
+	fileName="${fileName%.*}"
+	parsedFileName="$PWD/$fileName.parsed"
+	f=$(file $current)
+	zipType="Zip archive"
+	zxType="XZ compressed data"
+	echo "filetype of ${id}: $f"
+  	if [[ "$f" == *"$zipType"* ]] || [[ "$f" == *"$zxType"* ]]
+	then
+		echo "<tr><td>Sample $count of patient $id is an archive file, using IMGT Loader</td></tr>" >> $html
+	  	fileName=$(basename $current)
+		bash ${dir}/imgt_loader/imgt_loader.sh $current $parsedFileName "${fileName}"
+	else
+		echo "<tr><td>Sample $count of patient $id is not a zip file so assuming fasta/fastq, using igBLASTn</td></tr>" >> $html
+		bash ${dir}/igblast/igblast.sh $current "$species" $locus $parsedFileName
+	fi
+	mergerInput+=($parsedFileName)
+	count=$((count+1))
+done
+
+echo "<tr><td>-----------------------------------</td></tr>" >> $html
+echo "<tr><td>merging</td></tr>" >> $html
+
+bash $dir/experimental_design/experimental_design.sh ${mergerInput[*]} $PWD/merged.txt
+
+echo "<tr><td>done</td></tr>" >> $html
+echo "<tr><td>-----------------------------------</td></tr>" >> $html
+echo "<tr><td>plotting</td></tr>" >> $html
+
+echo "after ED"
+
+bash $dir/report_clonality/r_wrapper.sh $PWD/merged.txt $2 $outputDir $clonalType "$species" "$locus" $filterproductive $clonality_method
+
--- a/complete_immunerepertoire.xml	Thu Aug 08 07:40:36 2019 -0400
+++ b/complete_immunerepertoire.xml	Thu Feb 25 13:36:15 2021 +0000
@@ -1,199 +1,199 @@
-<tool id="complete_immunerepertoire_igg" name="Immune Repertoire pipeline" version="1.0">
-	<requirements>
-        <requirement type="package" version="2.3">r-gridextra</requirement>
-        <requirement type="package" version="3.0.0">r-ggplot2</requirement>
-        <requirement type="package" version="1.8.4">r-plyr</requirement>
-        <requirement type="package" version="1.11.4">r-data.table</requirement>
-        <requirement type="package" version="1.4.3">r-reshape2</requirement>
-        <requirement type="package" version="1.3.0">r-lymphclon</requirement>
-        <requirement type="package" version="1.2.4">r-stringi</requirement>
-        <requirement type="package" version="1.3.1">r-stringr</requirement>
-        <requirement type="package" version="0.69.6">circos</requirement>
-        <requirement type="package" version="0.23">circos-tools</requirement>
-    </requirements>
-	<description> </description>
-	<command interpreter="bash">
-complete.sh "
-#for $i, $f in enumerate($patients)
-	"${f.id}"
-	#for $j, $g in enumerate($f.samples)
-		${g.sample}
-	#end for
-#end for
-" $out_file $out_file.files_path "$clonaltype"
-#if $gene_selection.source == "imgtdb"		
-	"${gene_selection.species}" "${gene_selection.locus}" $filterproductive ${clonality_method}
-#else
-	"custom" "${gene_selection.vgenes};${gene_selection.dgenes};${gene_selection.jgenes}" $filterproductive $clonality_method
-#end if
-	</command>
-	<inputs>
-		<repeat name="patients" title="Donor" min="1" default="1">
-			<repeat name="samples" title="Replicate" min="1" default="1">
-					<param name="sample" type="data" label="Replicate to Process" />
-			</repeat>
-			<param name="id" type="text" label="ID" />
-		</repeat>
-		<param name="clonaltype" type="select" label="Clonal Type Definition">
-			<option value="none">Don't remove duplicates based on clonaltype</option>
-			<option value="Top.V.Gene,CDR3.Seq">Top.V.Gene, CDR3 (AA)</option>
-			<option value="Top.V.Gene,CDR3.Seq.DNA">Top.V.Gene, CDR3 (nt)</option>
-			<option value="Top.V.Gene,Top.J.Gene,CDR3.Seq">Top.V.Gene, Top.J.Gene, CDR3 (AA)</option>
-			<option value="Top.V.Gene,Top.J.Gene,CDR3.Seq.DNA">Top.V.Gene, Top.J.Gene, CDR3 (nt)</option>
-			<option value="Top.V.Gene,Top.D.Gene,Top.J.Gene,CDR3.Seq.DNA">Top.V.Gene, Top.D.Gene, Top.J.Gene, CDR3 (nt)</option>
-		</param>
-		
-		<conditional name="gene_selection" >
-			<param name="source" type="select" label="Order of V(D)J genes in graphs" help="" >
-					<option value="imgtdb" selected="true">IMGT-DB</option>
-					<option value="custom">User defined</option>
-			</param>
-			<when value="imgtdb">
-				<param name="species" type="select" label="Species">
-					<option value="Homo sapiens functional">Homo sapiens functional</option>
-					<option value="Homo sapiens">Homo sapiens</option>
-					<option value="Homo sapiens non-functional">Homo sapiens non-functional</option>
-					<option value="Bos taurus">Bos taurus</option>
-					<option value="Bos taurus functional">Bos taurus functional</option>
-					<option value="Bos taurus non-functional">Bos taurus non-functional</option>
-					<option value="Camelus dromedarius">Camelus dromedarius</option>
-					<option value="Camelus dromedarius functional">Camelus dromedarius functional</option>
-					<option value="Camelus dromedarius non-functional">Camelus dromedarius non-functional</option>
-					<option value="Canis lupus familiaris">Canis lupus familiaris</option>
-					<option value="Canis lupus familiaris functional">Canis lupus familiaris functional</option>
-					<option value="Canis lupus familiaris non-functional">Canis lupus familiaris non-functional</option>
-					<option value="Danio rerio">Danio rerio</option>
-					<option value="Danio rerio functional">Danio rerio functional</option>
-					<option value="Danio rerio non-functional">Danio rerio non-functional</option>
-					<option value="Macaca mulatta">Macaca mulatta</option>
-					<option value="Macaca mulatta functional">Macaca mulatta functional</option>
-					<option value="Macaca mulatta non-functional">Macaca mulatta non-functional</option>
-					<option value="Mus musculus">Mus musculus</option>
-					<option value="Mus musculus functional">Mus musculus functional</option>
-					<option value="Mus musculus non-functional">Mus musculus non-functional</option>
-					<option value="Mus spretus">Mus spretus</option>
-					<option value="Mus spretus functional">Mus spretus functional</option>
-					<option value="Mus spretus non-functional">Mus spretus non-functional</option>
-					<option value="Oncorhynchus mykiss">Oncorhynchus mykiss</option>
-					<option value="Oncorhynchus mykiss functional">Oncorhynchus mykiss functional</option>
-					<option value="Oncorhynchus mykiss non-functional">Oncorhynchus mykiss non-functional</option>
-					<option value="Ornithorhynchus anatinus">Ornithorhynchus anatinus</option>
-					<option value="Ornithorhynchus anatinus functional">Ornithorhynchus anatinus functional</option>
-					<option value="Ornithorhynchus anatinus non-functional">Ornithorhynchus anatinus non-functional</option>
-					<option value="Oryctolagus cuniculus">Oryctolagus cuniculus</option>
-					<option value="Oryctolagus cuniculus functional">Oryctolagus cuniculus functional</option>
-					<option value="Oryctolagus cuniculus non-functional">Oryctolagus cuniculus non-functional</option>
-					<option value="Rattus norvegicus">Rattus norvegicus</option>
-					<option value="Rattus norvegicus functional">Rattus norvegicus functional</option>
-					<option value="Rattus norvegicus non-functional">Rattus norvegicus non-functional</option>
-					<option value="Sus scrofa">Sus scrofa</option>
-					<option value="Sus scrofa functional">Sus scrofa functional</option>
-					<option value="Sus scrofa non-functional">Sus scrofa non-functional</option>
-				</param>
-			
-				<param name="locus" type="select" label="Locus">
-					<option value="TRA">TRA</option>
-					<option value="TRD">TRD</option>
-					<option value="TRG">TRG</option>
-					<option value="TRB">TRB</option>
-					<option value="IGH">IGH</option>
-					<option value="IGI">IGI</option>
-					<option value="IGK">IGK</option>
-					<option value="IGL">IGL</option>
-				</param>
-			</when>
-			<when value="custom">
-				<param name="species" type="hidden" value="custom" size="50" />
-				<param name="vgenes" type="text" label="V Genes, add the custom genes comma seperated, no spaces" size="100" />
-				<param name="dgenes" type="text" label="D Genes" size="100" />
-				<param name="jgenes" type="text" label="J Genes" size="100" />
-			</when>
-		</conditional>
-		
-		<param name="filterproductive" type="select" label="Remove the unproductive sequences from graphs ">
-			<option value="yes">Yes</option>
-			<option value="no">No</option>
-		</param>
-		
-		<param name="clonality_method" type="select" label="Shared clonal types / clonality">
-			<option value="none">Do not determine overlap (only 1 replicate present)</option>
-			<option value="old">Determine the number of sequences that share the same clonal type between the replicates</option>
-			<option value="boyd">Determine the clonality of the donor (minimal 3 replicates)</option>
-		</param>
-	</inputs>
-	<outputs>
-		<data format="html" name="out_file" />
-	</outputs>
-	<requirements>
-		<requirement type="package" version="0.6">igblastwrp</requirement>
-		<requirement type="package" version="3.3">weblogo</requirement>
-		<!--<requirement type="package" version="0.20">circostools</requirement>-->
-	</requirements>
-	<help>
-<![CDATA[
-**References**
-
-Boyd SD, Marshall EL, Merker JD, Maniar JM, Zhang LN, Sahaf B, Jones CD, Simen BB, Hanczaruk B, Nguyen KD, Nadeau KC, Egholm M, Miklos DB, Zehnder JL, Fire AZ (2009). Measurement and clinical monitoring of human lymphocyte clonality by massively parallel VDJ pyrosequencing. In *Science Translational Medicine 1(12):12ra23*. 
-
------
-
-**Input files**
-
-IMGT/HighV-QUEST .zip and .txz files and FASTA files are accepted as input files. In addition filtered IMGT files generated using the SHM &amp; CSR pipeline can be used as input files. 
-Note: Files can be uploaded by using “get data†and “upload fileâ€. When uploading IMGT files  “IMGT archive“ should be selected as a file type. When uploading FASTA files the auto-detect function can be used to select a file type. Special characters should be prevented in the file names of the uploaded replicates as these can give errors when running the immune repertoire pipeline. Underscores are allowed in the file names.
-
------
-
-**Donor and replicates**
-
-The immune repertoire pipeline can analyse files from multiple donors in parallel. Therefore for each analysed donor an ID has to be given. This ID can only contain letters, numbers and _. Spaces in the ID give an error when running the immune repertoire pipeline. In the default setting of the immune repertoire pipeline one donor consisting out of one replicate can be uploaded. However, multiple replicates per donor can be uploaded by using the "Add new replicate" button. In addition, multiple donors van be added by using the insert donor button. The multiple replicate option can be used when multiple data files from the same donor are available. For the calculation of the clonality score using the algorithm described by Boyd et al (PMID: 20161664) at least 3 replicates have to be included per donor. 
-
------
-
-**Clonal Type Definition**
-
-Allows the selection of a single sequence per clone. Different definitions of a clone can be chosen. 
-
-.. class:: infomark
-
-Note: The first sequence (in the data set) of each clone is always included in the analysis. This means that altering the data order (by for instance sorting) can change the sequence which is included in the analysis and therefore slightly influence results. 
-
------
-
-**Order of V(D)J genes in graphs**
-
-This setting allows you to order the V(D)J genes in the graphs in a user defined order. When using the default “IMGT-DB†all genes in the V, D an J gene graphs will be ordered based on their IMGT numbering. By selecting user defined the order of the V, D and J genes in the graphs can be altered according to the users personal settings. For simplifying of visualizing the genes in the chromosomal order the order of V, D and J genes on the chromosome in are included at the bottom of this help page. For any other ordering please provide the order of gene names divided by commas. 
-
------
-
-**Species**
-
-Enter the species of the replicates(s) you would like to analyse.
-
------
-
-**Locus**
-
-A dropdown menu to select the immune receptor locus to be analysed.
-
------
-
-**Remove unproductive sequences from graphs**
-
-This filter provides the option to only include productive sequences or both productive and unproductive sequences in the graphs.
-
------
-
-**Shared clonal types / clonality**
-
-This filter allows you do identify overlapping sequences between different replicates. If you only upload a single replicate from a replicate no sequences overlap or clonality can be determined and therefore the “do not determine overlap†option should be selection. The “Determine the number of sequences that share the same clonal type between the replicates†option allows the user to determine the number of overlapping sequences (based on the clonal type definition defined in the ‘clonal type definition filter’) between different replicates. This can be used to for instance look at different time point in the same donor to changes in the repertoire. When three or more replicates of the same blood same are amplified and sequences in parallel, the “determine clonality of the donor†function can be used to calculate the number of overlapping sequences as well as the clonality score as described by Boyd et al, PMID: 20161664.
-
------
-
-**Execute**
-
-Upon pressing the execute button a new analysis is added to your history (right side of the page). Initially this analysis will be grey, after initiating the analysis colour of the analysis in the history will change to yellow. When the analysis is finished it will turn green in the history. Now the analysis can be opened by clicking on the eye icon on the analysis of interest. When an analysis turns red an error has occurred when running the analysis. If you click on the analysis title additional information can be found on the analysis. In addition a bug icon appears. Here more information on the error can be found.
-]]>
-	</help>
-
-</tool>
+<tool id="complete_immunerepertoire_igg" name="Immune Repertoire pipeline" version="1.0">
+	<requirements>
+        <requirement type="package" version="2.3">r-gridextra</requirement>
+        <requirement type="package" version="3.0.0">r-ggplot2</requirement>
+        <requirement type="package" version="1.8.4">r-plyr</requirement>
+        <requirement type="package" version="1.11.4">r-data.table</requirement>
+        <requirement type="package" version="1.4.3">r-reshape2</requirement>
+        <requirement type="package" version="1.3.0">r-lymphclon</requirement>
+        <requirement type="package" version="1.2.4">r-stringi</requirement>
+        <requirement type="package" version="1.3.1">r-stringr</requirement>
+        <requirement type="package" version="0.69.6">circos</requirement>
+        <requirement type="package" version="0.23">circos-tools</requirement>
+    </requirements>
+	<description> </description>
+	<command interpreter="bash">
+complete.sh "
+#for $i, $f in enumerate($patients)
+	"${f.id}"
+	#for $j, $g in enumerate($f.samples)
+		${g.sample}
+	#end for
+#end for
+" $out_file $out_file.files_path "$clonaltype"
+#if $gene_selection.source == "imgtdb"		
+	"${gene_selection.species}" "${gene_selection.locus}" $filterproductive ${clonality_method}
+#else
+	"custom" "${gene_selection.vgenes};${gene_selection.dgenes};${gene_selection.jgenes}" $filterproductive $clonality_method
+#end if
+	</command>
+	<inputs>
+		<repeat name="patients" title="Donor" min="1" default="1">
+			<repeat name="samples" title="Replicate" min="1" default="1">
+					<param name="sample" type="data" label="Replicate to Process" />
+			</repeat>
+			<param name="id" type="text" label="ID" />
+		</repeat>
+		<param name="clonaltype" type="select" label="Clonal Type Definition">
+			<option value="none">Don't remove duplicates based on clonaltype</option>
+			<option value="Top.V.Gene,CDR3.Seq">Top.V.Gene, CDR3 (AA)</option>
+			<option value="Top.V.Gene,CDR3.Seq.DNA">Top.V.Gene, CDR3 (nt)</option>
+			<option value="Top.V.Gene,Top.J.Gene,CDR3.Seq">Top.V.Gene, Top.J.Gene, CDR3 (AA)</option>
+			<option value="Top.V.Gene,Top.J.Gene,CDR3.Seq.DNA">Top.V.Gene, Top.J.Gene, CDR3 (nt)</option>
+			<option value="Top.V.Gene,Top.D.Gene,Top.J.Gene,CDR3.Seq.DNA">Top.V.Gene, Top.D.Gene, Top.J.Gene, CDR3 (nt)</option>
+		</param>
+		
+		<conditional name="gene_selection" >
+			<param name="source" type="select" label="Order of V(D)J genes in graphs" help="" >
+					<option value="imgtdb" selected="true">IMGT-DB</option>
+					<option value="custom">User defined</option>
+			</param>
+			<when value="imgtdb">
+				<param name="species" type="select" label="Species">
+					<option value="Homo sapiens functional">Homo sapiens functional</option>
+					<option value="Homo sapiens">Homo sapiens</option>
+					<option value="Homo sapiens non-functional">Homo sapiens non-functional</option>
+					<option value="Bos taurus">Bos taurus</option>
+					<option value="Bos taurus functional">Bos taurus functional</option>
+					<option value="Bos taurus non-functional">Bos taurus non-functional</option>
+					<option value="Camelus dromedarius">Camelus dromedarius</option>
+					<option value="Camelus dromedarius functional">Camelus dromedarius functional</option>
+					<option value="Camelus dromedarius non-functional">Camelus dromedarius non-functional</option>
+					<option value="Canis lupus familiaris">Canis lupus familiaris</option>
+					<option value="Canis lupus familiaris functional">Canis lupus familiaris functional</option>
+					<option value="Canis lupus familiaris non-functional">Canis lupus familiaris non-functional</option>
+					<option value="Danio rerio">Danio rerio</option>
+					<option value="Danio rerio functional">Danio rerio functional</option>
+					<option value="Danio rerio non-functional">Danio rerio non-functional</option>
+					<option value="Macaca mulatta">Macaca mulatta</option>
+					<option value="Macaca mulatta functional">Macaca mulatta functional</option>
+					<option value="Macaca mulatta non-functional">Macaca mulatta non-functional</option>
+					<option value="Mus musculus">Mus musculus</option>
+					<option value="Mus musculus functional">Mus musculus functional</option>
+					<option value="Mus musculus non-functional">Mus musculus non-functional</option>
+					<option value="Mus spretus">Mus spretus</option>
+					<option value="Mus spretus functional">Mus spretus functional</option>
+					<option value="Mus spretus non-functional">Mus spretus non-functional</option>
+					<option value="Oncorhynchus mykiss">Oncorhynchus mykiss</option>
+					<option value="Oncorhynchus mykiss functional">Oncorhynchus mykiss functional</option>
+					<option value="Oncorhynchus mykiss non-functional">Oncorhynchus mykiss non-functional</option>
+					<option value="Ornithorhynchus anatinus">Ornithorhynchus anatinus</option>
+					<option value="Ornithorhynchus anatinus functional">Ornithorhynchus anatinus functional</option>
+					<option value="Ornithorhynchus anatinus non-functional">Ornithorhynchus anatinus non-functional</option>
+					<option value="Oryctolagus cuniculus">Oryctolagus cuniculus</option>
+					<option value="Oryctolagus cuniculus functional">Oryctolagus cuniculus functional</option>
+					<option value="Oryctolagus cuniculus non-functional">Oryctolagus cuniculus non-functional</option>
+					<option value="Rattus norvegicus">Rattus norvegicus</option>
+					<option value="Rattus norvegicus functional">Rattus norvegicus functional</option>
+					<option value="Rattus norvegicus non-functional">Rattus norvegicus non-functional</option>
+					<option value="Sus scrofa">Sus scrofa</option>
+					<option value="Sus scrofa functional">Sus scrofa functional</option>
+					<option value="Sus scrofa non-functional">Sus scrofa non-functional</option>
+				</param>
+			
+				<param name="locus" type="select" label="Locus">
+					<option value="TRA">TRA</option>
+					<option value="TRD">TRD</option>
+					<option value="TRG">TRG</option>
+					<option value="TRB">TRB</option>
+					<option value="IGH">IGH</option>
+					<option value="IGI">IGI</option>
+					<option value="IGK">IGK</option>
+					<option value="IGL">IGL</option>
+				</param>
+			</when>
+			<when value="custom">
+				<param name="species" type="hidden" value="custom" size="50" />
+				<param name="vgenes" type="text" label="V Genes, add the custom genes comma seperated, no spaces" size="100" />
+				<param name="dgenes" type="text" label="D Genes" size="100" />
+				<param name="jgenes" type="text" label="J Genes" size="100" />
+			</when>
+		</conditional>
+		
+		<param name="filterproductive" type="select" label="Remove the unproductive sequences from graphs ">
+			<option value="yes">Yes</option>
+			<option value="no">No</option>
+		</param>
+		
+		<param name="clonality_method" type="select" label="Shared clonal types / clonality">
+			<option value="none">Do not determine overlap (only 1 replicate present)</option>
+			<option value="old">Determine the number of sequences that share the same clonal type between the replicates</option>
+			<option value="boyd">Determine the clonality of the donor (minimal 3 replicates)</option>
+		</param>
+	</inputs>
+	<outputs>
+		<data format="html" name="out_file" />
+	</outputs>
+	<requirements>
+		<requirement type="package" version="0.6">igblastwrp</requirement>
+		<requirement type="package" version="3.3">weblogo</requirement>
+		<!--<requirement type="package" version="0.20">circostools</requirement>-->
+	</requirements>
+	<help>
+<![CDATA[
+**References**
+
+Boyd SD, Marshall EL, Merker JD, Maniar JM, Zhang LN, Sahaf B, Jones CD, Simen BB, Hanczaruk B, Nguyen KD, Nadeau KC, Egholm M, Miklos DB, Zehnder JL, Fire AZ (2009). Measurement and clinical monitoring of human lymphocyte clonality by massively parallel VDJ pyrosequencing. In *Science Translational Medicine 1(12):12ra23*. 
+
+-----
+
+**Input files**
+
+IMGT/HighV-QUEST .zip and .txz files and FASTA files are accepted as input files. In addition filtered IMGT files generated using the SHM &amp; CSR pipeline can be used as input files. 
+Note: Files can be uploaded by using “get data†and “upload fileâ€. When uploading IMGT files  “IMGT archive“ should be selected as a file type. When uploading FASTA files the auto-detect function can be used to select a file type. Special characters should be prevented in the file names of the uploaded replicates as these can give errors when running the immune repertoire pipeline. Underscores are allowed in the file names.
+
+-----
+
+**Donor and replicates**
+
+The immune repertoire pipeline can analyse files from multiple donors in parallel. Therefore for each analysed donor an ID has to be given. This ID can only contain letters, numbers and _. Spaces in the ID give an error when running the immune repertoire pipeline. In the default setting of the immune repertoire pipeline one donor consisting out of one replicate can be uploaded. However, multiple replicates per donor can be uploaded by using the "Add new replicate" button. In addition, multiple donors van be added by using the insert donor button. The multiple replicate option can be used when multiple data files from the same donor are available. For the calculation of the clonality score using the algorithm described by Boyd et al (PMID: 20161664) at least 3 replicates have to be included per donor. 
+
+-----
+
+**Clonal Type Definition**
+
+Allows the selection of a single sequence per clone. Different definitions of a clone can be chosen. 
+
+.. class:: infomark
+
+Note: The first sequence (in the data set) of each clone is always included in the analysis. This means that altering the data order (by for instance sorting) can change the sequence which is included in the analysis and therefore slightly influence results. 
+
+-----
+
+**Order of V(D)J genes in graphs**
+
+This setting allows you to order the V(D)J genes in the graphs in a user defined order. When using the default “IMGT-DB†all genes in the V, D an J gene graphs will be ordered based on their IMGT numbering. By selecting user defined the order of the V, D and J genes in the graphs can be altered according to the users personal settings. For simplifying of visualizing the genes in the chromosomal order the order of V, D and J genes on the chromosome in are included at the bottom of this help page. For any other ordering please provide the order of gene names divided by commas. 
+
+-----
+
+**Species**
+
+Enter the species of the replicates(s) you would like to analyse.
+
+-----
+
+**Locus**
+
+A dropdown menu to select the immune receptor locus to be analysed.
+
+-----
+
+**Remove unproductive sequences from graphs**
+
+This filter provides the option to only include productive sequences or both productive and unproductive sequences in the graphs.
+
+-----
+
+**Shared clonal types / clonality**
+
+This filter allows you do identify overlapping sequences between different replicates. If you only upload a single replicate from a replicate no sequences overlap or clonality can be determined and therefore the “do not determine overlap†option should be selection. The “Determine the number of sequences that share the same clonal type between the replicates†option allows the user to determine the number of overlapping sequences (based on the clonal type definition defined in the ‘clonal type definition filter’) between different replicates. This can be used to for instance look at different time point in the same donor to changes in the repertoire. When three or more replicates of the same blood same are amplified and sequences in parallel, the “determine clonality of the donor†function can be used to calculate the number of overlapping sequences as well as the clonality score as described by Boyd et al, PMID: 20161664.
+
+-----
+
+**Execute**
+
+Upon pressing the execute button a new analysis is added to your history (right side of the page). Initially this analysis will be grey, after initiating the analysis colour of the analysis in the history will change to yellow. When the analysis is finished it will turn green in the history. Now the analysis can be opened by clicking on the eye icon on the analysis of interest. When an analysis turns red an error has occurred when running the analysis. If you click on the analysis title additional information can be found on the analysis. In addition a bug icon appears. Here more information on the error can be found.
+]]>
+	</help>
+
+</tool>
--- a/experimental_design/experimental_design.r	Thu Aug 08 07:40:36 2019 -0400
+++ b/experimental_design/experimental_design.r	Thu Feb 25 13:36:15 2021 +0000
@@ -1,43 +1,43 @@
-args <- commandArgs(trailingOnly = TRUE)
-
-print(args)
-
-inputs = args[1:(length(args) - 1)]
-output = args[length(args)]
-
-current.id = ""
-counter = 1
-
-result = NULL
-
-for(current in inputs){
-	if(grepl("/", current)){ #its a path to a file
-		print(paste("Adding file", counter, "to", current.id))
-		dat = read.table(current, sep="\t", header=T, quote="", fill=T)
-		
-		if(nrow(dat) == 0){
-			print(paste(counter, "of", current.id, "has no sequences, skipping"))
-			next
-		}
-		
-		#IMGT check
-		
-		dat$Sample = current.id
-		dat$Replicate = counter
-		
-		if(is.null(result)){
-			result = dat[NULL,]
-		}
-		
-		result = rbind(result, dat)
-		
-		counter = counter + 1
-		
-	} else { #its an ID of a patient
-		print(paste("New patient", current))
-		current.id = current
-		counter = 1
-	}
-}
-
-write.table(result, output, sep="\t", quote=F, row.names=F, col.names=T)
+args <- commandArgs(trailingOnly = TRUE)
+
+print(args)
+
+inputs = args[1:(length(args) - 1)]
+output = args[length(args)]
+
+current.id = ""
+counter = 1
+
+result = NULL
+
+for(current in inputs){
+	if(grepl("/", current)){ #its a path to a file
+		print(paste("Adding file", counter, "to", current.id))
+		dat = read.table(current, sep="\t", header=T, quote="", fill=T)
+		
+		if(nrow(dat) == 0){
+			print(paste(counter, "of", current.id, "has no sequences, skipping"))
+			next
+		}
+		
+		#IMGT check
+		
+		dat$Sample = current.id
+		dat$Replicate = counter
+		
+		if(is.null(result)){
+			result = dat[NULL,]
+		}
+		
+		result = rbind(result, dat)
+		
+		counter = counter + 1
+		
+	} else { #its an ID of a patient
+		print(paste("New patient", current))
+		current.id = current
+		counter = 1
+	}
+}
+
+write.table(result, output, sep="\t", quote=F, row.names=F, col.names=T)
--- a/experimental_design/experimental_design.sh	Thu Aug 08 07:40:36 2019 -0400
+++ b/experimental_design/experimental_design.sh	Thu Feb 25 13:36:15 2021 +0000
@@ -1,4 +1,4 @@
-
-dir="$(cd "$(dirname "$0")" && pwd)"
-
-Rscript --verbose $dir/experimental_design.r $@ 2>&1
+
+dir="$(cd "$(dirname "$0")" && pwd)"
+
+Rscript --verbose $dir/experimental_design.r $@ 2>&1
--- a/igblast/igblast.r	Thu Aug 08 07:40:36 2019 -0400
+++ b/igblast/igblast.r	Thu Feb 25 13:36:15 2021 +0000
@@ -1,56 +1,56 @@
-args <- commandArgs(trailingOnly = TRUE)
-
-infile=args[1]
-outfile=args[2]
-
-blasted = read.table(infile, header=T, sep="\t", fill=T, stringsAsFactors=F, comment.char="")
-
-blasted$ID = 1:nrow(blasted)
-blasted$VDJ.Frame = "Out-of-frame"
-
-search = blasted$inFrame == "true" & blasted$noStop == "false"
-if(sum(search) > 0){
-  blasted[search ,]$VDJ.Frame = "In-frame with stop codon"
-}
-
-search = blasted$inFrame == "true" & blasted$noStop == "true"
-if(sum(search) > 0){
-  blasted[search ,]$VDJ.Frame = "In-frame"
-}
-
-blasted$Top.V.Gene = blasted$vSegment
-blasted$Top.D.Gene = blasted$dSegment
-blasted$Top.J.Gene = blasted$jSegment
-blasted$CDR1.Seq = blasted$cdr1aa
-blasted$CDR1.Length = nchar(blasted$CDR1.Seq)
-blasted$CDR2.Seq = blasted$cdr2aa
-blasted$CDR2.Length = nchar(blasted$CDR2.Seq)
-blasted$CDR3.Seq = blasted$cdr3aa
-blasted$CDR3.Length = nchar(blasted$CDR3.Seq)
-blasted$CDR3.Seq.DNA = blasted$cdr3nt
-blasted$CDR3.Length.DNA = nchar(blasted$CDR3.Seq.DNA)
-blasted$Strand = "+/-"
-blasted$CDR3.Found.How = "found"
-
-search = blasted$cdr3nt == ""
-if(sum(search) > 0){
-  blasted[search,]$CDR3.Found.How = "NOT_FOUND"
-}
-
-blasted$AA.JUNCTION = blasted$CDR3.Seq
-
-n = c("X.reads_count", "ID", "VDJ.Frame", "Top.V.Gene", "Top.D.Gene", "Top.J.Gene", "CDR1.Seq", "CDR1.Length", "CDR2.Seq", "CDR2.Length", "CDR3.Seq", "CDR3.Length", "CDR3.Seq.DNA", "CDR3.Length.DNA", "Strand", "CDR3.Found.How", "Functionality", "AA.JUNCTION")
-
-n[!(n %in% names(blasted))]
-
-blasted = blasted[,c("X.reads_count", "ID", "VDJ.Frame", "Top.V.Gene", "Top.D.Gene", "Top.J.Gene", "CDR1.Seq", "CDR1.Length", "CDR2.Seq", "CDR2.Length", "CDR3.Seq", "CDR3.Length", "CDR3.Seq.DNA", "CDR3.Length.DNA", "Strand", "CDR3.Found.How", "AA.JUNCTION")]
-
-names(blasted) = c("frequency.count", "ID", "VDJ Frame", "Top V Gene", "Top D Gene", "Top J Gene", "CDR1 Seq", "CDR1 Length", "CDR2 Seq", "CDR2 Length", "CDR3 Seq", "CDR3 Length", "CDR3 Seq DNA", "CDR3 Length DNA", "Strand", "CDR3 Found How", "AA JUNCTION")
-
-#duplicate rows based on frequency.count
-blasted = blasted[rep(seq_len(nrow(blasted)), blasted$frequency.count),]
-blasted$ID = 1:nrow(blasted)
-
-blasted = blasted[,c("ID", "VDJ Frame", "Top V Gene", "Top D Gene", "Top J Gene", "CDR1 Seq", "CDR1 Length", "CDR2 Seq", "CDR2 Length", "CDR3 Seq", "CDR3 Length", "CDR3 Seq DNA", "CDR3 Length DNA", "Strand", "CDR3 Found How", "AA JUNCTION")]
-
-write.table(blasted, outfile, quote=F, sep="\t", row.names=F, col.names=T)
+args <- commandArgs(trailingOnly = TRUE)
+
+infile=args[1]
+outfile=args[2]
+
+blasted = read.table(infile, header=T, sep="\t", fill=T, stringsAsFactors=F, comment.char="")
+
+blasted$ID = 1:nrow(blasted)
+blasted$VDJ.Frame = "Out-of-frame"
+
+search = blasted$inFrame == "true" & blasted$noStop == "false"
+if(sum(search) > 0){
+  blasted[search ,]$VDJ.Frame = "In-frame with stop codon"
+}
+
+search = blasted$inFrame == "true" & blasted$noStop == "true"
+if(sum(search) > 0){
+  blasted[search ,]$VDJ.Frame = "In-frame"
+}
+
+blasted$Top.V.Gene = blasted$vSegment
+blasted$Top.D.Gene = blasted$dSegment
+blasted$Top.J.Gene = blasted$jSegment
+blasted$CDR1.Seq = blasted$cdr1aa
+blasted$CDR1.Length = nchar(blasted$CDR1.Seq)
+blasted$CDR2.Seq = blasted$cdr2aa
+blasted$CDR2.Length = nchar(blasted$CDR2.Seq)
+blasted$CDR3.Seq = blasted$cdr3aa
+blasted$CDR3.Length = nchar(blasted$CDR3.Seq)
+blasted$CDR3.Seq.DNA = blasted$cdr3nt
+blasted$CDR3.Length.DNA = nchar(blasted$CDR3.Seq.DNA)
+blasted$Strand = "+/-"
+blasted$CDR3.Found.How = "found"
+
+search = blasted$cdr3nt == ""
+if(sum(search) > 0){
+  blasted[search,]$CDR3.Found.How = "NOT_FOUND"
+}
+
+blasted$AA.JUNCTION = blasted$CDR3.Seq
+
+n = c("X.reads_count", "ID", "VDJ.Frame", "Top.V.Gene", "Top.D.Gene", "Top.J.Gene", "CDR1.Seq", "CDR1.Length", "CDR2.Seq", "CDR2.Length", "CDR3.Seq", "CDR3.Length", "CDR3.Seq.DNA", "CDR3.Length.DNA", "Strand", "CDR3.Found.How", "Functionality", "AA.JUNCTION")
+
+n[!(n %in% names(blasted))]
+
+blasted = blasted[,c("X.reads_count", "ID", "VDJ.Frame", "Top.V.Gene", "Top.D.Gene", "Top.J.Gene", "CDR1.Seq", "CDR1.Length", "CDR2.Seq", "CDR2.Length", "CDR3.Seq", "CDR3.Length", "CDR3.Seq.DNA", "CDR3.Length.DNA", "Strand", "CDR3.Found.How", "AA.JUNCTION")]
+
+names(blasted) = c("frequency.count", "ID", "VDJ Frame", "Top V Gene", "Top D Gene", "Top J Gene", "CDR1 Seq", "CDR1 Length", "CDR2 Seq", "CDR2 Length", "CDR3 Seq", "CDR3 Length", "CDR3 Seq DNA", "CDR3 Length DNA", "Strand", "CDR3 Found How", "AA JUNCTION")
+
+#duplicate rows based on frequency.count
+blasted = blasted[rep(seq_len(nrow(blasted)), blasted$frequency.count),]
+blasted$ID = 1:nrow(blasted)
+
+blasted = blasted[,c("ID", "VDJ Frame", "Top V Gene", "Top D Gene", "Top J Gene", "CDR1 Seq", "CDR1 Length", "CDR2 Seq", "CDR2 Length", "CDR3 Seq", "CDR3 Length", "CDR3 Seq DNA", "CDR3 Length DNA", "Strand", "CDR3 Found How", "AA JUNCTION")]
+
+write.table(blasted, outfile, quote=F, sep="\t", row.names=F, col.names=T)
--- a/igblast/igblast.sh	Thu Aug 08 07:40:36 2019 -0400
+++ b/igblast/igblast.sh	Thu Feb 25 13:36:15 2021 +0000
@@ -1,28 +1,28 @@
-set -e
-
-dir="$(cd "$(dirname "$0")" && pwd)"
-
-input=$1
-species=$2
-locus=$3
-output=$4
-
-declare -A speciesdict
-
-speciesdict=(["Rattus norvegicus functional"]="rat" ["Rattus norvegicus non-functional"]="rat" ["Oryctolagus cuniculus functional"]="rabbit" ["Oryctolagus cuniculus non-functional"]="rabbit" ["Mus musculus functional"]="mouse" ["Mus musculus non-functional"]="mouse" ["Homo sapiens functional"]="human" ["Homo sapiens non-functional"]="human" ["Macaca mulatta non-functional"]="rhesus_monkey" ["Macaca mulatta functional"]="rhesus_monkey")
-
-echo "Species: $species ${speciesdict[$species]}"
-
-species="${speciesdict[$species]}"
-
-if [ "$species" == "" ]
-then
-	>&2 echo "Species not possible with igBLASTn, use IMGT"
-	exit 1
-fi
-
-echo "$input $species $locus $output"
-
-java -Xmx16G -jar $dir/igblastwrp.jar -p 4 -S $species -R $locus ${input} $PWD/blasted_output 2>&1
-
-Rscript --verbose $dir/igblast.r "$PWD/blasted_output.L2.txt" "$output" 2>&1
+set -e
+
+dir="$(cd "$(dirname "$0")" && pwd)"
+
+input=$1
+species=$2
+locus=$3
+output=$4
+
+declare -A speciesdict
+
+speciesdict=(["Rattus norvegicus functional"]="rat" ["Rattus norvegicus non-functional"]="rat" ["Oryctolagus cuniculus functional"]="rabbit" ["Oryctolagus cuniculus non-functional"]="rabbit" ["Mus musculus functional"]="mouse" ["Mus musculus non-functional"]="mouse" ["Homo sapiens functional"]="human" ["Homo sapiens non-functional"]="human" ["Macaca mulatta non-functional"]="rhesus_monkey" ["Macaca mulatta functional"]="rhesus_monkey")
+
+echo "Species: $species ${speciesdict[$species]}"
+
+species="${speciesdict[$species]}"
+
+if [ "$species" == "" ]
+then
+	>&2 echo "Species not possible with igBLASTn, use IMGT"
+	exit 1
+fi
+
+echo "$input $species $locus $output"
+
+java -Xmx16G -jar $IGBLASTWRP/igblastwrp.jar -p 4 -S $species -R $locus ${input} $PWD/blasted_output 2>&1
+
+Rscript --verbose $dir/igblast.r "$PWD/blasted_output.L2.txt" "$output" 2>&1
--- a/imgt_loader/imgt_loader.r	Thu Aug 08 07:40:36 2019 -0400
+++ b/imgt_loader/imgt_loader.r	Thu Feb 25 13:36:15 2021 +0000
@@ -1,132 +1,132 @@
-args <- commandArgs(trailingOnly = TRUE)
-options(show.error.locations = TRUE)
-
-summ.file = args[1]
-sequences.file = args[2]
-aa.file = args[3]
-junction.file = args[4]
-gapped.aa.file = args[5]
-out.file = args[6]
-
-print(summ.file)
-print(out.file)
-
-summ = read.table(summ.file, sep="\t", header=T, quote="", fill=T)
-sequences = read.table(sequences.file, sep="\t", header=T, quote="", fill=T)
-aa = read.table(aa.file, sep="\t", header=T, quote="", fill=T)
-gapped.aa = read.table(gapped.aa.file, sep="\t", header=T, quote="", fill=T)
-junction = read.table(junction.file, sep="\t", header=T, quote="", fill=T)
-
-print(paste("nrow(summ)", nrow(summ)))
-
-write.table(summ, out.file, sep="\t", quote=F, row.names=F, col.names=T)
-
-fix_column_names = function(df){
-    if("V.DOMAIN.Functionality" %in% names(df)){
-        names(df)[names(df) == "V.DOMAIN.Functionality"] = "Functionality"
-        print("found V.DOMAIN.Functionality, changed")
-    }
-    if("V.DOMAIN.Functionality.comment" %in% names(df)){
-        names(df)[names(df) == "V.DOMAIN.Functionality.comment"] = "Functionality.comment"
-        print("found V.DOMAIN.Functionality.comment, changed")
-    }
-    return(df)
-}
-
-print_missing_columns = function(df, cols, label=""){
-	cols_in_df = cols %in% names(df)
-	if(sum(!cols_in_df) > 0){
-		print("Columns are missing from summary file, don't have:")
-		print(cols[!cols_in_df])
-	} else {
-		print(paste("No missing columns for", label))
-	}
-}
-
-summ = fix_column_names(summ)
-sequences = fix_column_names(sequences)
-aa = fix_column_names(aa)
-gapped.aa = fix_column_names(gapped.aa)
-junction = fix_column_names(junction)
-
-print(paste("nrow(summ)", nrow(summ)))
-
-old_summary_columns=c('Sequence.ID','JUNCTION.frame','V.GENE.and.allele','D.GENE.and.allele','J.GENE.and.allele','CDR1.IMGT.length','CDR2.IMGT.length','CDR3.IMGT.length','Orientation')
-old_sequence_columns=c('CDR1.IMGT','CDR2.IMGT','CDR3.IMGT')
-old_junction_columns=c('JUNCTION')
-
-added_summary_columns=c('Functionality','V.REGION.identity..','V.REGION.identity.nt','D.REGION.reading.frame','AA.JUNCTION','Functionality.comment','Sequence')
-added_sequence_columns=c('FR1.IMGT','FR2.IMGT','FR3.IMGT','CDR3.IMGT','JUNCTION','J.REGION','FR4.IMGT')
-
-added_junction_columns=c('P3.V.nt.nb','N.REGION.nt.nb','N1.REGION.nt.nb','P5.D.nt.nb','P3.D.nt.nb','N2.REGION.nt.nb','P5.J.nt.nb','X3.V.REGION.trimmed.nt.nb','X5.D.REGION.trimmed.nt.nb','X3.D.REGION.trimmed.nt.nb','X5.J.REGION.trimmed.nt.nb','N.REGION','N1.REGION','N2.REGION')
-added_junction_columns=c(added_junction_columns, 'P5.D1.nt.nb', 'P3.D1.nt.nb', 'N2.REGION.nt.nb', 'P5.D2.nt.nb', 'P3.D2.nt.nb', 'N3.REGION.nt.nb', 'P5.D3.nt.nb', 'P3.D2.nt.nb', 'N4.REGION.nt.nb', 'X5.D1.REGION.trimmed.nt.nb', 'X3.D1.REGION.trimmed.nt.nb', 'X5.D2.REGION.trimmed.nt.nb', 'X3.D2.REGION.trimmed.nt.nb', 'X5.D3.REGION.trimmed.nt.nb', 'X3.D3.REGION.trimmed.nt.nb', 'D.REGION.nt.nb', 'D1.REGION.nt.nb', 'D2.REGION.nt.nb', 'D3.REGION.nt.nb')
-
-minimum_columns=c("Sequence.ID","JUNCTION.frame","V.GENE.and.allele","D.GENE.and.allele","J.GENE.and.allele")
-print_missing_columns(summ, minimum_columns)
-out=summ[,minimum_columns]
-
-print(paste("nrow(summ)", nrow(summ)))
-print(paste("nrow(aa)", nrow(aa)))
-
-out[,"CDR1.Seq"] = aa[,"CDR1.IMGT"]
-out[,"CDR1.Length"] = summ[,"CDR1.IMGT.length"]
-
-out[,"CDR2.Seq"] = aa[,"CDR2.IMGT"]
-out[,"CDR2.Length"] = summ[,"CDR2.IMGT.length"]
-
-out[,"CDR3.Seq"] = gapped.aa[,"CDR3.IMGT"]
-out[,"CDR3.Length"] = summ[,"CDR3.IMGT.length"]
-
-out[,"CDR3.IMGT"] = out[,"CDR3.Seq"]
-
-out[,"CDR3.Seq.DNA"] = sequences[,"CDR3.IMGT"]
-out[,"CDR3.Length.DNA"] = nchar(as.character(out[,"CDR3.Seq.DNA"]))
-out[,"Strand"] = summ[,"Orientation"]
-out[,"CDR3.Found.How"] = "a"
-
-out[,added_summary_columns] = summ[,added_summary_columns]
-
-out[,added_sequence_columns] = aa[,added_sequence_columns]
-
-out[,added_junction_columns] = junction[,added_junction_columns]
-
-out[,"Top V Gene"] = gsub(".* ", "", gsub("\\*.*", "", summ[,"V.GENE.and.allele"]))
-out[,"Top D Gene"] = gsub(".* ", "", gsub("\\*.*", "", summ[,"D.GENE.and.allele"]))
-out[,"Top J Gene"] = gsub(".* ", "", gsub("\\*.*", "", summ[,"J.GENE.and.allele"]))
-
-out = out[!grepl("Less than", summ[,"V.GENE.and.allele"]),]
-out = out[!grepl("Less than", summ[,"D.GENE.and.allele"]),]
-out = out[!grepl("Less than", summ[,"J.GENE.and.allele"]),]
-
-out = out[,c('Sequence.ID','JUNCTION.frame','Top V Gene','Top D Gene','Top J Gene','CDR1.Seq','CDR1.Length','CDR2.Seq','CDR2.Length','CDR3.Seq','CDR3.Length','CDR3.Seq.DNA','CDR3.Length.DNA','Strand','CDR3.Found.How','Functionality','V.REGION.identity..','V.REGION.identity.nt','D.REGION.reading.frame','AA.JUNCTION','Functionality.comment','Sequence','FR1.IMGT','FR2.IMGT','FR3.IMGT','CDR3.IMGT','JUNCTION','J.REGION','FR4.IMGT','P3.V.nt.nb','N.REGION.nt.nb','N1.REGION.nt.nb','P5.D.nt.nb','P3.D.nt.nb','N2.REGION.nt.nb','P5.J.nt.nb','X3.V.REGION.trimmed.nt.nb','X5.D.REGION.trimmed.nt.nb','X3.D.REGION.trimmed.nt.nb','X5.J.REGION.trimmed.nt.nb','N.REGION','N1.REGION','N2.REGION', 'P5.D1.nt.nb', 'P3.D1.nt.nb', 'N2.REGION.nt.nb', 'P5.D2.nt.nb', 'P3.D2.nt.nb', 'N3.REGION.nt.nb', 'P5.D3.nt.nb', 'P3.D2.nt.nb', 'N4.REGION.nt.nb', 'X5.D1.REGION.trimmed.nt.nb', 'X3.D1.REGION.trimmed.nt.nb', 'X5.D2.REGION.trimmed.nt.nb', 'X3.D2.REGION.trimmed.nt.nb', 'X5.D3.REGION.trimmed.nt.nb', 'X3.D3.REGION.trimmed.nt.nb', 'D.REGION.nt.nb', 'D1.REGION.nt.nb', 'D2.REGION.nt.nb', 'D3.REGION.nt.nb')]
-
-names(out) = c('ID','VDJ Frame','Top V Gene','Top D Gene','Top J Gene','CDR1 Seq','CDR1 Length','CDR2 Seq','CDR2 Length','CDR3 Seq','CDR3 Length','CDR3 Seq DNA','CDR3 Length DNA','Strand','CDR3 Found How','Functionality','V-REGION identity %','V-REGION identity nt','D-REGION reading frame','AA JUNCTION','Functionality comment','Sequence','FR1-IMGT','FR2-IMGT','FR3-IMGT','CDR3-IMGT','JUNCTION','J-REGION','FR4-IMGT','P3V-nt nb','N-REGION-nt nb','N1-REGION-nt nb','P5D-nt nb','P3D-nt nb','N2-REGION-nt nb','P5J-nt nb','3V-REGION trimmed-nt nb','5D-REGION trimmed-nt nb','3D-REGION trimmed-nt nb','5J-REGION trimmed-nt nb','N-REGION','N1-REGION','N2-REGION', 'P5.D1.nt.nb', 'P3.D1.nt.nb', 'N2.REGION.nt.nb', 'P5.D2.nt.nb', 'P3.D2.nt.nb', 'N3.REGION.nt.nb', 'P5.D3.nt.nb', 'P3.D2.nt.nb', 'N4.REGION.nt.nb', 'X5.D1.REGION.trimmed.nt.nb', 'X3.D1.REGION.trimmed.nt.nb', 'X5.D2.REGION.trimmed.nt.nb', 'X3.D2.REGION.trimmed.nt.nb', 'X5.D3.REGION.trimmed.nt.nb', 'X3.D3.REGION.trimmed.nt.nb', 'D.REGION.nt.nb', 'D1.REGION.nt.nb', 'D2.REGION.nt.nb', 'D3.REGION.nt.nb')
-
-out[,"VDJ Frame"] = as.character(out[,"VDJ Frame"])
-fltr = out[,"VDJ Frame"] == "in-frame"
-if(any(fltr, na.rm=T)){
-	out[fltr, "VDJ Frame"] = "In-frame"
-}
-fltr = out[,"VDJ Frame"] == "null"
-if(any(fltr, na.rm = T)){
-	out[fltr, "VDJ Frame"] = "Out-of-frame"
-}
-fltr = out[,"VDJ Frame"] == "out-of-frame"
-if(any(fltr, na.rm = T)){
-	out[fltr, "VDJ Frame"] = "Out-of-frame"
-}
-fltr = out[,"VDJ Frame"] == ""
-if(any(fltr, na.rm = T)){
-	out[fltr, "VDJ Frame"] = "Out-of-frame"
-}
-
-for(col in c('Top V Gene','Top D Gene','Top J Gene')){
-	out[,col] = as.character(out[,col])
-	fltr = out[,col] == ""
-	fltr[is.na(fltr)] = T
-	if(any(fltr, na.rm = T)){
-		out[fltr,col] = "NA"
-	}
-}
-
-write.table(out, out.file, sep="\t", quote=F, row.names=F, col.names=T)
+args <- commandArgs(trailingOnly = TRUE)
+options(show.error.locations = TRUE)
+
+summ.file = args[1]
+sequences.file = args[2]
+aa.file = args[3]
+junction.file = args[4]
+gapped.aa.file = args[5]
+out.file = args[6]
+
+print(summ.file)
+print(out.file)
+
+summ = read.table(summ.file, sep="\t", header=T, quote="", fill=T)
+sequences = read.table(sequences.file, sep="\t", header=T, quote="", fill=T)
+aa = read.table(aa.file, sep="\t", header=T, quote="", fill=T)
+gapped.aa = read.table(gapped.aa.file, sep="\t", header=T, quote="", fill=T)
+junction = read.table(junction.file, sep="\t", header=T, quote="", fill=T)
+
+print(paste("nrow(summ)", nrow(summ)))
+
+write.table(summ, out.file, sep="\t", quote=F, row.names=F, col.names=T)
+
+fix_column_names = function(df){
+    if("V.DOMAIN.Functionality" %in% names(df)){
+        names(df)[names(df) == "V.DOMAIN.Functionality"] = "Functionality"
+        print("found V.DOMAIN.Functionality, changed")
+    }
+    if("V.DOMAIN.Functionality.comment" %in% names(df)){
+        names(df)[names(df) == "V.DOMAIN.Functionality.comment"] = "Functionality.comment"
+        print("found V.DOMAIN.Functionality.comment, changed")
+    }
+    return(df)
+}
+
+print_missing_columns = function(df, cols, label=""){
+	cols_in_df = cols %in% names(df)
+	if(sum(!cols_in_df) > 0){
+		print("Columns are missing from summary file, don't have:")
+		print(cols[!cols_in_df])
+	} else {
+		print(paste("No missing columns for", label))
+	}
+}
+
+summ = fix_column_names(summ)
+sequences = fix_column_names(sequences)
+aa = fix_column_names(aa)
+gapped.aa = fix_column_names(gapped.aa)
+junction = fix_column_names(junction)
+
+print(paste("nrow(summ)", nrow(summ)))
+
+old_summary_columns=c('Sequence.ID','JUNCTION.frame','V.GENE.and.allele','D.GENE.and.allele','J.GENE.and.allele','CDR1.IMGT.length','CDR2.IMGT.length','CDR3.IMGT.length','Orientation')
+old_sequence_columns=c('CDR1.IMGT','CDR2.IMGT','CDR3.IMGT')
+old_junction_columns=c('JUNCTION')
+
+added_summary_columns=c('Functionality','V.REGION.identity..','V.REGION.identity.nt','D.REGION.reading.frame','AA.JUNCTION','Functionality.comment','Sequence')
+added_sequence_columns=c('FR1.IMGT','FR2.IMGT','FR3.IMGT','CDR3.IMGT','JUNCTION','J.REGION','FR4.IMGT')
+
+added_junction_columns=c('P3.V.nt.nb','N.REGION.nt.nb','N1.REGION.nt.nb','P5.D.nt.nb','P3.D.nt.nb','N2.REGION.nt.nb','P5.J.nt.nb','X3.V.REGION.trimmed.nt.nb','X5.D.REGION.trimmed.nt.nb','X3.D.REGION.trimmed.nt.nb','X5.J.REGION.trimmed.nt.nb','N.REGION','N1.REGION','N2.REGION')
+added_junction_columns=c(added_junction_columns, 'P5.D1.nt.nb', 'P3.D1.nt.nb', 'N2.REGION.nt.nb', 'P5.D2.nt.nb', 'P3.D2.nt.nb', 'N3.REGION.nt.nb', 'P5.D3.nt.nb', 'P3.D2.nt.nb', 'N4.REGION.nt.nb', 'X5.D1.REGION.trimmed.nt.nb', 'X3.D1.REGION.trimmed.nt.nb', 'X5.D2.REGION.trimmed.nt.nb', 'X3.D2.REGION.trimmed.nt.nb', 'X5.D3.REGION.trimmed.nt.nb', 'X3.D3.REGION.trimmed.nt.nb', 'D.REGION.nt.nb', 'D1.REGION.nt.nb', 'D2.REGION.nt.nb', 'D3.REGION.nt.nb')
+
+minimum_columns=c("Sequence.ID","JUNCTION.frame","V.GENE.and.allele","D.GENE.and.allele","J.GENE.and.allele")
+print_missing_columns(summ, minimum_columns)
+out=summ[,minimum_columns]
+
+print(paste("nrow(summ)", nrow(summ)))
+print(paste("nrow(aa)", nrow(aa)))
+
+out[,"CDR1.Seq"] = aa[,"CDR1.IMGT"]
+out[,"CDR1.Length"] = summ[,"CDR1.IMGT.length"]
+
+out[,"CDR2.Seq"] = aa[,"CDR2.IMGT"]
+out[,"CDR2.Length"] = summ[,"CDR2.IMGT.length"]
+
+out[,"CDR3.Seq"] = gapped.aa[,"CDR3.IMGT"]
+out[,"CDR3.Length"] = summ[,"CDR3.IMGT.length"]
+
+out[,"CDR3.IMGT"] = out[,"CDR3.Seq"]
+
+out[,"CDR3.Seq.DNA"] = sequences[,"CDR3.IMGT"]
+out[,"CDR3.Length.DNA"] = nchar(as.character(out[,"CDR3.Seq.DNA"]))
+out[,"Strand"] = summ[,"Orientation"]
+out[,"CDR3.Found.How"] = "a"
+
+out[,added_summary_columns] = summ[,added_summary_columns]
+
+out[,added_sequence_columns] = aa[,added_sequence_columns]
+
+out[,added_junction_columns] = junction[,added_junction_columns]
+
+out[,"Top V Gene"] = gsub(".* ", "", gsub("\\*.*", "", summ[,"V.GENE.and.allele"]))
+out[,"Top D Gene"] = gsub(".* ", "", gsub("\\*.*", "", summ[,"D.GENE.and.allele"]))
+out[,"Top J Gene"] = gsub(".* ", "", gsub("\\*.*", "", summ[,"J.GENE.and.allele"]))
+
+out = out[!grepl("Less than", summ[,"V.GENE.and.allele"]),]
+out = out[!grepl("Less than", summ[,"D.GENE.and.allele"]),]
+out = out[!grepl("Less than", summ[,"J.GENE.and.allele"]),]
+
+out = out[,c('Sequence.ID','JUNCTION.frame','Top V Gene','Top D Gene','Top J Gene','CDR1.Seq','CDR1.Length','CDR2.Seq','CDR2.Length','CDR3.Seq','CDR3.Length','CDR3.Seq.DNA','CDR3.Length.DNA','Strand','CDR3.Found.How','Functionality','V.REGION.identity..','V.REGION.identity.nt','D.REGION.reading.frame','AA.JUNCTION','Functionality.comment','Sequence','FR1.IMGT','FR2.IMGT','FR3.IMGT','CDR3.IMGT','JUNCTION','J.REGION','FR4.IMGT','P3.V.nt.nb','N.REGION.nt.nb','N1.REGION.nt.nb','P5.D.nt.nb','P3.D.nt.nb','N2.REGION.nt.nb','P5.J.nt.nb','X3.V.REGION.trimmed.nt.nb','X5.D.REGION.trimmed.nt.nb','X3.D.REGION.trimmed.nt.nb','X5.J.REGION.trimmed.nt.nb','N.REGION','N1.REGION','N2.REGION', 'P5.D1.nt.nb', 'P3.D1.nt.nb', 'N2.REGION.nt.nb', 'P5.D2.nt.nb', 'P3.D2.nt.nb', 'N3.REGION.nt.nb', 'P5.D3.nt.nb', 'P3.D2.nt.nb', 'N4.REGION.nt.nb', 'X5.D1.REGION.trimmed.nt.nb', 'X3.D1.REGION.trimmed.nt.nb', 'X5.D2.REGION.trimmed.nt.nb', 'X3.D2.REGION.trimmed.nt.nb', 'X5.D3.REGION.trimmed.nt.nb', 'X3.D3.REGION.trimmed.nt.nb', 'D.REGION.nt.nb', 'D1.REGION.nt.nb', 'D2.REGION.nt.nb', 'D3.REGION.nt.nb')]
+
+names(out) = c('ID','VDJ Frame','Top V Gene','Top D Gene','Top J Gene','CDR1 Seq','CDR1 Length','CDR2 Seq','CDR2 Length','CDR3 Seq','CDR3 Length','CDR3 Seq DNA','CDR3 Length DNA','Strand','CDR3 Found How','Functionality','V-REGION identity %','V-REGION identity nt','D-REGION reading frame','AA JUNCTION','Functionality comment','Sequence','FR1-IMGT','FR2-IMGT','FR3-IMGT','CDR3-IMGT','JUNCTION','J-REGION','FR4-IMGT','P3V-nt nb','N-REGION-nt nb','N1-REGION-nt nb','P5D-nt nb','P3D-nt nb','N2-REGION-nt nb','P5J-nt nb','3V-REGION trimmed-nt nb','5D-REGION trimmed-nt nb','3D-REGION trimmed-nt nb','5J-REGION trimmed-nt nb','N-REGION','N1-REGION','N2-REGION', 'P5.D1.nt.nb', 'P3.D1.nt.nb', 'N2.REGION.nt.nb', 'P5.D2.nt.nb', 'P3.D2.nt.nb', 'N3.REGION.nt.nb', 'P5.D3.nt.nb', 'P3.D2.nt.nb', 'N4.REGION.nt.nb', 'X5.D1.REGION.trimmed.nt.nb', 'X3.D1.REGION.trimmed.nt.nb', 'X5.D2.REGION.trimmed.nt.nb', 'X3.D2.REGION.trimmed.nt.nb', 'X5.D3.REGION.trimmed.nt.nb', 'X3.D3.REGION.trimmed.nt.nb', 'D.REGION.nt.nb', 'D1.REGION.nt.nb', 'D2.REGION.nt.nb', 'D3.REGION.nt.nb')
+
+out[,"VDJ Frame"] = as.character(out[,"VDJ Frame"])
+fltr = out[,"VDJ Frame"] == "in-frame"
+if(any(fltr, na.rm=T)){
+	out[fltr, "VDJ Frame"] = "In-frame"
+}
+fltr = out[,"VDJ Frame"] == "null"
+if(any(fltr, na.rm = T)){
+	out[fltr, "VDJ Frame"] = "Out-of-frame"
+}
+fltr = out[,"VDJ Frame"] == "out-of-frame"
+if(any(fltr, na.rm = T)){
+	out[fltr, "VDJ Frame"] = "Out-of-frame"
+}
+fltr = out[,"VDJ Frame"] == ""
+if(any(fltr, na.rm = T)){
+	out[fltr, "VDJ Frame"] = "Out-of-frame"
+}
+
+for(col in c('Top V Gene','Top D Gene','Top J Gene')){
+	out[,col] = as.character(out[,col])
+	fltr = out[,col] == ""
+	fltr[is.na(fltr)] = T
+	if(any(fltr, na.rm = T)){
+		out[fltr,col] = "NA"
+	}
+}
+
+write.table(out, out.file, sep="\t", quote=F, row.names=F, col.names=T)
--- a/imgt_loader/imgt_loader.sh	Thu Aug 08 07:40:36 2019 -0400
+++ b/imgt_loader/imgt_loader.sh	Thu Feb 25 13:36:15 2021 +0000
@@ -1,74 +1,74 @@
-#!/bin/bash
-input=$1
-output=$2
-name=$3
-dir="$(cd "$(dirname "$0")" && pwd)"
-mkdir -p $PWD/$name/files
-f=$(file $input)
-zip7Type="7-zip archive"
-tarType="tar archive"
-bzip2Type="bzip2 compressed"
-gzipType="gzip compressed"
-zipType="Zip archive"
-rarType="RAR archive"
-zxType="XZ compressed data"
-
-if [[ "$f" == *"$zip7Type"* ]]; then
-	echo "7-zip"
-	echo "Trying: 7za e $input -o$PWD/files/"
-	7za e $input -o$PWD/$name/files
-fi
-
-if [[ "$f" == *"$tarType"* ]]
-then
-	echo "tar archive"
-	echo "Trying: tar xvf $input -C $PWD/files/"
-	tar -xvf $input -C $PWD/$name/files
-fi
-
-if [[ "$f" == *"$bzip2Type"* ]]
-then
-	echo "bzip2 compressed data"
-	echo "Trying: tar jxf $input -C $PWD/files/"
-	tar -jxf $input -C $PWD/$name/files
-fi
-
-if [[ "$f" == *"$gzipType"* ]]
-then
-	echo "gzip compressed data"
-	echo "Trying: tar xvzf $input -C $PWD/files/"
-	tar -xvzf $input -C $PWD/$name/files
-fi
-
-if [[ "$f" == *"$zipType"* ]]
-then
-	echo "Zip archive"
-	echo "Trying: unzip $input -d $PWD/files/"
-	unzip $input -d $PWD/$name/files > $PWD/unziplog.log
-fi
-
-if [[ "$f" == *"$rarType"* ]]
-then
-	echo "RAR archive"
-	echo "Trying: unrar e $input $PWD/files/"
-	unrar e $input $PWD/$name/files
-fi
-
-if [[ "$f" == *"$zxType"* ]]
-then
-	echo "xz compressed data"
-	echo "Trying: tar -xJf $input -C $PWD/files/"
-	tar xJf $input -C $PWD/$name/files
-fi
-find $PWD/$name/files -iname "1_*" -exec cat {} + > $PWD/$name/summ.txt
-find $PWD/$name/files -iname "3_*" -exec cat {} + > $PWD/$name/sequences.txt
-find $PWD/$name/files -iname "4_*" -exec cat {} + > $PWD/$name/gapped_aa.txt
-find $PWD/$name/files -iname "5_*" -exec cat {} + > $PWD/$name/aa.txt
-find $PWD/$name/files -iname "6_*" -exec cat {} + > $PWD/$name/junction.txt
-
-echo "summ.txt `cat $PWD/$name/summ.txt | wc -l`"
-echo "aa.txt `cat $PWD/$name/aa.txt | wc -l`"
-
-#python $dir/imgt_loader.py --summ $PWD/$name/summ.txt --aa $PWD/$name/aa.txt --junction $PWD/$name/junction.txt --output $output
-
-Rscript --verbose $dir/imgt_loader.r $PWD/$name/summ.txt $PWD/$name/sequences.txt $PWD/$name/aa.txt $PWD/$name/junction.txt $PWD/$name/gapped_aa.txt $output 2>&1
+#!/bin/bash
+input=$1
+output=$2
+name=$3
+dir="$(cd "$(dirname "$0")" && pwd)"
+mkdir -p $PWD/$name/files
+f=$(file $input)
+zip7Type="7-zip archive"
+tarType="tar archive"
+bzip2Type="bzip2 compressed"
+gzipType="gzip compressed"
+zipType="Zip archive"
+rarType="RAR archive"
+zxType="XZ compressed data"
+
+if [[ "$f" == *"$zip7Type"* ]]; then
+	echo "7-zip"
+	echo "Trying: 7za e $input -o$PWD/files/"
+	7za e $input -o$PWD/$name/files
+fi
+
+if [[ "$f" == *"$tarType"* ]]
+then
+	echo "tar archive"
+	echo "Trying: tar xvf $input -C $PWD/files/"
+	tar -xvf $input -C $PWD/$name/files
+fi
+
+if [[ "$f" == *"$bzip2Type"* ]]
+then
+	echo "bzip2 compressed data"
+	echo "Trying: tar jxf $input -C $PWD/files/"
+	tar -jxf $input -C $PWD/$name/files
+fi
+
+if [[ "$f" == *"$gzipType"* ]]
+then
+	echo "gzip compressed data"
+	echo "Trying: tar xvzf $input -C $PWD/files/"
+	tar -xvzf $input -C $PWD/$name/files
+fi
+
+if [[ "$f" == *"$zipType"* ]]
+then
+	echo "Zip archive"
+	echo "Trying: unzip $input -d $PWD/files/"
+	unzip $input -d $PWD/$name/files > $PWD/unziplog.log
+fi
+
+if [[ "$f" == *"$rarType"* ]]
+then
+	echo "RAR archive"
+	echo "Trying: unrar e $input $PWD/files/"
+	unrar e $input $PWD/$name/files
+fi
+
+if [[ "$f" == *"$zxType"* ]]
+then
+	echo "xz compressed data"
+	echo "Trying: tar -xJf $input -C $PWD/files/"
+	tar xJf $input -C $PWD/$name/files
+fi
+find $PWD/$name/files -iname "1_*" -exec cat {} + > $PWD/$name/summ.txt
+find $PWD/$name/files -iname "3_*" -exec cat {} + > $PWD/$name/sequences.txt
+find $PWD/$name/files -iname "4_*" -exec cat {} + > $PWD/$name/gapped_aa.txt
+find $PWD/$name/files -iname "5_*" -exec cat {} + > $PWD/$name/aa.txt
+find $PWD/$name/files -iname "6_*" -exec cat {} + > $PWD/$name/junction.txt
+
+echo "summ.txt `cat $PWD/$name/summ.txt | wc -l`"
+echo "aa.txt `cat $PWD/$name/aa.txt | wc -l`"
+
+#python $dir/imgt_loader.py --summ $PWD/$name/summ.txt --aa $PWD/$name/aa.txt --junction $PWD/$name/junction.txt --output $output
+
+Rscript --verbose $dir/imgt_loader.r $PWD/$name/summ.txt $PWD/$name/sequences.txt $PWD/$name/aa.txt $PWD/$name/junction.txt $PWD/$name/gapped_aa.txt $output 2>&1
--- a/report_clonality/RScript.r	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/RScript.r	Thu Feb 25 13:36:15 2021 +0000
@@ -1,1044 +1,1044 @@
-# ---------------------- load/install packages ----------------------
-
-if (!("gridExtra" %in% rownames(installed.packages()))) {
-  install.packages("gridExtra", repos="http://cran.xl-mirror.nl/") 
-}
-library(gridExtra)
-if (!("ggplot2" %in% rownames(installed.packages()))) {
-  install.packages("ggplot2", repos="http://cran.xl-mirror.nl/") 
-}
-library(ggplot2)
-if (!("plyr" %in% rownames(installed.packages()))) {
-  install.packages("plyr", repos="http://cran.xl-mirror.nl/") 
-}
-library(plyr)
-
-if (!("data.table" %in% rownames(installed.packages()))) {
-  install.packages("data.table", repos="http://cran.xl-mirror.nl/") 
-}
-library(data.table)
-
-if (!("reshape2" %in% rownames(installed.packages()))) {
-  install.packages("reshape2", repos="http://cran.xl-mirror.nl/")
-}
-library(reshape2)
-
-if (!("lymphclon" %in% rownames(installed.packages()))) {
-  install.packages("lymphclon", repos="http://cran.xl-mirror.nl/")
-}
-library(lymphclon)
-
-# ---------------------- parameters ----------------------
-
-args <- commandArgs(trailingOnly = TRUE)
-
-infile = args[1] #path to input file
-outfile = args[2] #path to output file
-outdir = args[3] #path to output folder (html/images/data)
-clonaltype = args[4] #clonaltype definition, or 'none' for no unique filtering
-ct = unlist(strsplit(clonaltype, ","))
-species = args[5] #human or mouse
-locus = args[6] # IGH, IGK, IGL, TRB, TRA, TRG or TRD
-filterproductive = ifelse(args[7] == "yes", T, F) #should unproductive sequences be filtered out? (yes/no)
-clonality_method = args[8]
-
-
-# ---------------------- Data preperation ----------------------
-
-print("Report Clonality - Data preperation")
-
-inputdata = read.table(infile, sep="\t", header=TRUE, fill=T, comment.char="", stringsAsFactors=F)
-
-inputdata$Sample = as.character(inputdata$Sample)
-
-
-print(paste("nrows: ", nrow(inputdata)))
-
-setwd(outdir)
-
-# remove weird rows
-inputdata = inputdata[inputdata$Sample != "",]
-
-print(paste("nrows: ", nrow(inputdata)))
-
-#remove the allele from the V,D and J genes
-inputdata$Top.V.Gene = gsub("[*]([0-9]+)", "", inputdata$Top.V.Gene)
-inputdata$Top.D.Gene = gsub("[*]([0-9]+)", "", inputdata$Top.D.Gene)
-inputdata$Top.J.Gene = gsub("[*]([0-9]+)", "", inputdata$Top.J.Gene)
-
-print(paste("nrows: ", nrow(inputdata)))
-
-#filter uniques
-inputdata.removed = inputdata[NULL,]
-
-print(paste("nrows: ", nrow(inputdata)))
-
-inputdata$clonaltype = 1:nrow(inputdata)
-
-#keep track of the count of sequences in samples or samples/replicates for the front page overview
-input.sample.count = data.frame(data.table(inputdata)[, list(All=.N), by=c("Sample")])
-input.rep.count = data.frame(data.table(inputdata)[, list(All=.N), by=c("Sample", "Replicate")])
-
-PRODF = inputdata
-UNPROD = inputdata
-if(filterproductive){
-  if("Functionality" %in% colnames(inputdata)) { # "Functionality" is an IMGT column
-    #PRODF = inputdata[inputdata$Functionality == "productive" | inputdata$Functionality == "productive (see comment)", ]
-    PRODF = inputdata[inputdata$Functionality %in% c("productive (see comment)","productive"),]
-    
-    PRODF.count = data.frame(data.table(PRODF)[, list(count=.N), by=c("Sample")])
-    
-    UNPROD = inputdata[inputdata$Functionality %in% c("unproductive (see comment)","unproductive"), ]
-  } else {
-    PRODF = inputdata[inputdata$VDJ.Frame != "In-frame with stop codon" & inputdata$VDJ.Frame != "Out-of-frame" & inputdata$CDR3.Found.How != "NOT_FOUND" , ]
-    UNPROD = inputdata[!(inputdata$VDJ.Frame != "In-frame with stop codon" & inputdata$VDJ.Frame != "Out-of-frame" & inputdata$CDR3.Found.How != "NOT_FOUND" ), ]
-  }
-}
-
-for(i in 1:nrow(UNPROD)){
-    if(!is.numeric(UNPROD[i,"CDR3.Length"])){
-        UNPROD[i,"CDR3.Length"] = 0
-    }
-}
-
-prod.sample.count = data.frame(data.table(PRODF)[, list(Productive=.N), by=c("Sample")])
-prod.rep.count = data.frame(data.table(PRODF)[, list(Productive=.N), by=c("Sample", "Replicate")])
-
-unprod.sample.count = data.frame(data.table(UNPROD)[, list(Unproductive=.N), by=c("Sample")])
-unprod.rep.count = data.frame(data.table(UNPROD)[, list(Unproductive=.N), by=c("Sample", "Replicate")])
-
-clonalityFrame = PRODF
-
-#remove duplicates based on the clonaltype
-if(clonaltype != "none"){
-  clonaltype = paste(clonaltype, ",Sample", sep="") #add sample column to clonaltype, unique within samples
-  PRODF$clonaltype = do.call(paste, c(PRODF[unlist(strsplit(clonaltype, ","))], sep = ":"))
-  PRODF = PRODF[!duplicated(PRODF$clonaltype), ]
-    
-  UNPROD$clonaltype = do.call(paste, c(UNPROD[unlist(strsplit(clonaltype, ","))], sep = ":"))
-  UNPROD = UNPROD[!duplicated(UNPROD$clonaltype), ]
-  
-  #again for clonalityFrame but with sample+replicate
-  clonalityFrame$clonaltype = do.call(paste, c(clonalityFrame[unlist(strsplit(clonaltype, ","))], sep = ":"))
-  clonalityFrame$clonality_clonaltype = do.call(paste, c(clonalityFrame[unlist(strsplit(paste(clonaltype, ",Replicate", sep=""), ","))], sep = ":"))
-  clonalityFrame = clonalityFrame[!duplicated(clonalityFrame$clonality_clonaltype), ]
-}
-
-if(nrow(PRODF) == 0){
-	stop("No sequences left after filtering")
-}
-
-prod.unique.sample.count = data.frame(data.table(PRODF)[, list(Productive_unique=.N), by=c("Sample")])
-prod.unique.rep.count = data.frame(data.table(PRODF)[, list(Productive_unique=.N), by=c("Sample", "Replicate")])
-
-unprod.unique.sample.count = data.frame(data.table(UNPROD)[, list(Unproductive_unique=.N), by=c("Sample")])
-unprod.unique.rep.count = data.frame(data.table(UNPROD)[, list(Unproductive_unique=.N), by=c("Sample", "Replicate")])
-
-
-PRODF$freq = 1
-
-if(any(grepl(pattern="_", x=PRODF$ID))){ #the frequency can be stored in the ID with the pattern ".*_freq_.*"
-  PRODF$freq = gsub("^[0-9]+_", "", PRODF$ID)
-  PRODF$freq = gsub("_.*", "", PRODF$freq)
-  PRODF$freq = as.numeric(PRODF$freq)
-  if(any(is.na(PRODF$freq))){ #if there was an "_" in the ID, but not the frequency, go back to frequency of 1 for every sequence
-    PRODF$freq = 1
-  }
-}
-
-#make a names list with sample -> color
-naive.colors = c('blue4', 'darkred', 'olivedrab3', 'red', 'gray74', 'darkviolet', 'lightblue1', 'gold', 'chartreuse2', 'pink', 'Paleturquoise3', 'Chocolate1', 'Yellow', 'Deeppink3', 'Mediumorchid1', 'Darkgreen', 'Blue', 'Gray36', 'Hotpink', 'Yellow4')
-unique.samples = unique(PRODF$Sample)
-
-if(length(unique.samples) <= length(naive.colors)){
-	sample.colors = naive.colors[1:length(unique.samples)]
-} else {
-	sample.colors = rainbow(length(unique.samples))
-}
-
-names(sample.colors) = unique.samples
-
-print("Sample.colors")
-print(sample.colors)
-
-
-#write the complete dataset that is left over, will be the input if 'none' for clonaltype and 'no' for filterproductive
-write.table(PRODF, "allUnique.txt", sep="\t",quote=F,row.names=F,col.names=T)
-#write.table(PRODF, "allUnique.csv", sep=",",quote=F,row.names=F,col.names=T)
-write.table(UNPROD, "allUnproductive.txt", sep="\t",quote=F,row.names=F,col.names=T)
-
-print("SAMPLE TABLE:")
-print(table(PRODF$Sample))
-
-#write the samples to a file
-sampleFile <- file("samples.txt")
-un = unique(inputdata$Sample)
-un = paste(un, sep="\n")
-writeLines(un, sampleFile)
-close(sampleFile)
-
-# ---------------------- Counting the productive/unproductive and unique sequences ----------------------
-
-print("Report Clonality - counting productive/unproductive/unique")
-
-#create the table on the overview page with the productive/unique counts per sample/replicate
-#first for sample
-
-sample.count = merge(input.sample.count, prod.sample.count, by="Sample", all.x=T)
-sample.count$perc_prod = round(sample.count$Productive / sample.count$All * 100)
-sample.count = merge(sample.count, prod.unique.sample.count, by="Sample", all.x=T)
-sample.count$perc_prod_un = round(sample.count$Productive_unique / sample.count$All * 100)
-
-sample.count = merge(sample.count , unprod.sample.count, by="Sample", all.x=T)
-sample.count$perc_unprod = round(sample.count$Unproductive / sample.count$All * 100)
-sample.count = merge(sample.count, unprod.unique.sample.count, by="Sample", all.x=T)
-sample.count$perc_unprod_un = round(sample.count$Unproductive_unique / sample.count$All * 100)
-
-#then sample/replicate
-rep.count = merge(input.rep.count, prod.rep.count, by=c("Sample", "Replicate"), all.x=T)
-
-print(rep.count)
-
-fltr = is.na(rep.count$Productive)
-if(any(fltr)){
-	rep.count[fltr,"Productive"] = 0
-}
-
-print(rep.count)
-
-rep.count$perc_prod = round(rep.count$Productive / rep.count$All * 100)
-rep.count = merge(rep.count, prod.unique.rep.count, by=c("Sample", "Replicate"), all.x=T)
-rep.count$perc_prod_un = round(rep.count$Productive_unique / rep.count$All * 100)
-
-rep.count = merge(rep.count, unprod.rep.count, by=c("Sample", "Replicate"), all.x=T)
-rep.count$perc_unprod = round(rep.count$Unproductive / rep.count$All * 100)
-rep.count = merge(rep.count, unprod.unique.rep.count, by=c("Sample", "Replicate"), all.x=T)
-rep.count$perc_unprod_un = round(rep.count$Unproductive_unique / rep.count$All * 100)
-
-rep.count$Sample = paste(rep.count$Sample, rep.count$Replicate, sep="_")
-rep.count = rep.count[,names(rep.count) != "Replicate"]
-
-count = rbind(sample.count, rep.count)
-
-
-
-write.table(x=count, file="productive_counting.txt", sep=",",quote=F,row.names=F,col.names=F)
-
-# ---------------------- V+J+CDR3 sequence count ----------------------
-
-VJCDR3.count = data.frame(table(clonalityFrame$Top.V.Gene, clonalityFrame$Top.J.Gene, clonalityFrame$CDR3.Seq.DNA))
-names(VJCDR3.count) = c("Top.V.Gene", "Top.J.Gene", "CDR3.Seq.DNA", "Count")
-
-VJCDR3.count = VJCDR3.count[VJCDR3.count$Count > 0,]
-VJCDR3.count = VJCDR3.count[order(-VJCDR3.count$Count),]
-
-write.table(x=VJCDR3.count, file="VJCDR3_count.txt", sep="\t",quote=F,row.names=F,col.names=T)
-
-# ---------------------- Frequency calculation for V, D and J ----------------------
-
-print("Report Clonality - frequency calculation V, D and J")
-
-PRODFV = data.frame(data.table(PRODF)[, list(Length=sum(freq)), by=c("Sample", "Top.V.Gene")])
-Total = ddply(PRODFV, .(Sample), function(x) data.frame(Total = sum(x$Length)))
-PRODFV = merge(PRODFV, Total, by.x='Sample', by.y='Sample', all.x=TRUE)
-PRODFV = ddply(PRODFV, c("Sample", "Top.V.Gene"), summarise, relFreq= (Length*100 / Total))
-
-PRODFD = data.frame(data.table(PRODF)[, list(Length=sum(freq)), by=c("Sample", "Top.D.Gene")])
-Total = ddply(PRODFD, .(Sample), function(x) data.frame(Total = sum(x$Length)))
-PRODFD = merge(PRODFD, Total, by.x='Sample', by.y='Sample', all.x=TRUE)
-PRODFD = ddply(PRODFD, c("Sample", "Top.D.Gene"), summarise, relFreq= (Length*100 / Total))
-
-PRODFJ = data.frame(data.table(PRODF)[, list(Length=sum(freq)), by=c("Sample", "Top.J.Gene")])
-Total = ddply(PRODFJ, .(Sample), function(x) data.frame(Total = sum(x$Length)))
-PRODFJ = merge(PRODFJ, Total, by.x='Sample', by.y='Sample', all.x=TRUE)
-PRODFJ = ddply(PRODFJ, c("Sample", "Top.J.Gene"), summarise, relFreq= (Length*100 / Total))
-
-# ---------------------- Setting up the gene names for the different species/loci ----------------------
-
-print("Report Clonality - getting genes for species/loci")
-
-Vchain = ""
-Dchain = ""
-Jchain = ""
-
-if(species == "custom"){
-	print("Custom genes: ")
-	splt = unlist(strsplit(locus, ";"))
-	print(paste("V:", splt[1]))
-	print(paste("D:", splt[2]))
-	print(paste("J:", splt[3]))
-	
-	Vchain = unlist(strsplit(splt[1], ","))
-	Vchain = data.frame(v.name = Vchain, chr.orderV = 1:length(Vchain))
-	
-	Dchain = unlist(strsplit(splt[2], ","))
-	if(length(Dchain) > 0){
-		Dchain = data.frame(v.name = Dchain, chr.orderD = 1:length(Dchain))
-	} else {
-		Dchain = data.frame(v.name = character(0), chr.orderD = numeric(0))
-	}
-	
-	Jchain = unlist(strsplit(splt[3], ","))
-	Jchain = data.frame(v.name = Jchain, chr.orderJ = 1:length(Jchain))
-
-} else {
-	genes = read.table("genes.txt", sep="\t", header=TRUE, fill=T, comment.char="")
-
-	Vchain = genes[grepl(species, genes$Species) & genes$locus == locus & genes$region == "V",c("IMGT.GENE.DB", "chr.order")]
-	colnames(Vchain) = c("v.name", "chr.orderV")
-	Dchain = genes[grepl(species, genes$Species) & genes$locus == locus & genes$region == "D",c("IMGT.GENE.DB", "chr.order")]
-	colnames(Dchain) = c("v.name", "chr.orderD")
-	Jchain = genes[grepl(species, genes$Species) & genes$locus == locus & genes$region == "J",c("IMGT.GENE.DB", "chr.order")]
-	colnames(Jchain) = c("v.name", "chr.orderJ")
-}
-useD = TRUE
-if(nrow(Dchain) == 0){
-  useD = FALSE
-  cat("No D Genes in this species/locus")
-}
-print(paste(nrow(Vchain), "genes in V"))
-print(paste(nrow(Dchain), "genes in D"))
-print(paste(nrow(Jchain), "genes in J"))
-
-# ---------------------- merge with the frequency count ----------------------
-
-PRODFV = merge(PRODFV, Vchain, by.x='Top.V.Gene', by.y='v.name', all.x=TRUE)
-
-PRODFD = merge(PRODFD, Dchain, by.x='Top.D.Gene', by.y='v.name', all.x=TRUE)
-
-PRODFJ = merge(PRODFJ, Jchain, by.x='Top.J.Gene', by.y='v.name', all.x=TRUE)
-
-# ---------------------- Create the V, D and J frequency plots and write the data.frame for every plot to a file ----------------------
-
-print("Report Clonality - V, D and J frequency plots")
-
-pV = ggplot(PRODFV)
-pV = pV + geom_bar( aes( x=factor(reorder(Top.V.Gene, chr.orderV)), y=relFreq, fill=Sample), stat='identity', position="dodge") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
-pV = pV + xlab("Summary of V gene") + ylab("Frequency") + ggtitle("Relative frequency of V gene usage") + scale_fill_manual(values=sample.colors)
-pV = pV + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
-write.table(x=PRODFV, file="VFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
-
-png("VPlot.png",width = 1280, height = 720)
-pV
-dev.off()
-
-ggsave("VPlot.pdf", pV, width=13, height=7)
-
-if(useD){
-  pD = ggplot(PRODFD)
-  pD = pD + geom_bar( aes( x=factor(reorder(Top.D.Gene, chr.orderD)), y=relFreq, fill=Sample), stat='identity', position="dodge") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
-  pD = pD + xlab("Summary of D gene") + ylab("Frequency") + ggtitle("Relative frequency of D gene usage") + scale_fill_manual(values=sample.colors)
-  pD = pD + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
-  write.table(x=PRODFD, file="DFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
-  
-  png("DPlot.png",width = 800, height = 600)
-  print(pD)
-  dev.off()
-  
-  ggsave("DPlot.pdf", pD, width=10, height=7)
-}
-
-pJ = ggplot(PRODFJ)
-pJ = pJ + geom_bar( aes( x=factor(reorder(Top.J.Gene, chr.orderJ)), y=relFreq, fill=Sample), stat='identity', position="dodge") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
-pJ = pJ + xlab("Summary of J gene") + ylab("Frequency") + ggtitle("Relative frequency of J gene usage") + scale_fill_manual(values=sample.colors)
-pJ = pJ + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
-write.table(x=PRODFJ, file="JFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
-
-png("JPlot.png",width = 800, height = 600)
-pJ
-dev.off()
-
-ggsave("JPlot.pdf", pJ)
-
-# ---------------------- Now the frequency plots of the V, D and J families ----------------------
-
-print("Report Clonality - V, D and J family plots")
-
-VGenes = PRODF[,c("Sample", "Top.V.Gene")]
-VGenes$Top.V.Gene = gsub("-.*", "", VGenes$Top.V.Gene)
-VGenes = data.frame(data.table(VGenes)[, list(Count=.N), by=c("Sample", "Top.V.Gene")])
-TotalPerSample = data.frame(data.table(VGenes)[, list(total=sum(.SD$Count)), by=Sample])
-VGenes = merge(VGenes, TotalPerSample, by="Sample")
-VGenes$Frequency = VGenes$Count * 100 / VGenes$total
-VPlot = ggplot(VGenes)
-VPlot = VPlot + geom_bar(aes( x = Top.V.Gene, y = Frequency, fill = Sample), stat='identity', position='dodge' ) + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
-  ggtitle("Distribution of V gene families") + 
-  ylab("Percentage of sequences") +
-  scale_fill_manual(values=sample.colors) +
-  theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
-png("VFPlot.png")
-VPlot
-dev.off()
-ggsave("VFPlot.pdf", VPlot)
-
-write.table(x=VGenes, file="VFFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
-
-if(useD){
-  DGenes = PRODF[,c("Sample", "Top.D.Gene")]
-  DGenes$Top.D.Gene = gsub("-.*", "", DGenes$Top.D.Gene)
-  DGenes = data.frame(data.table(DGenes)[, list(Count=.N), by=c("Sample", "Top.D.Gene")])
-  TotalPerSample = data.frame(data.table(DGenes)[, list(total=sum(.SD$Count)), by=Sample])
-  DGenes = merge(DGenes, TotalPerSample, by="Sample")
-  DGenes$Frequency = DGenes$Count * 100 / DGenes$total
-  DPlot = ggplot(DGenes)
-  DPlot = DPlot + geom_bar(aes( x = Top.D.Gene, y = Frequency, fill = Sample), stat='identity', position='dodge' ) + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
-    ggtitle("Distribution of D gene families") + 
-    ylab("Percentage of sequences") + 
-    scale_fill_manual(values=sample.colors) +
-    theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
-  png("DFPlot.png")
-  print(DPlot)
-  dev.off()
-  
-  ggsave("DFPlot.pdf", DPlot)
-  write.table(x=DGenes, file="DFFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
-}
-
-# ---------------------- Plotting the cdr3 length ----------------------
-
-print("Report Clonality - CDR3 length plot")
-
-CDR3Length = data.frame(data.table(PRODF)[, list(Count=.N), by=c("Sample", "CDR3.Length")])
-TotalPerSample = data.frame(data.table(CDR3Length)[, list(total=sum(.SD$Count)), by=Sample])
-CDR3Length = merge(CDR3Length, TotalPerSample, by="Sample")
-CDR3Length$Frequency = CDR3Length$Count * 100 / CDR3Length$total
-CDR3LengthPlot = ggplot(CDR3Length)
-CDR3LengthPlot = CDR3LengthPlot + geom_bar(aes( x = factor(reorder(CDR3.Length, as.numeric(CDR3.Length))), y = Frequency, fill = Sample), stat='identity', position='dodge' ) + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
-  ggtitle("Length distribution of CDR3") + 
-  xlab("CDR3 Length") + 
-  ylab("Percentage of sequences") +
-  scale_fill_manual(values=sample.colors) +
-  theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
-png("CDR3LengthPlot.png",width = 1280, height = 720)
-CDR3LengthPlot
-dev.off()
-
-ggsave("CDR3LengthPlot.pdf", CDR3LengthPlot, width=12, height=7)
-
-write.table(x=CDR3Length, file="CDR3LengthPlot.txt", sep="\t",quote=F,row.names=F,col.names=T)
-
-# ---------------------- Plot the heatmaps ----------------------
-
-#get the reverse order for the V and D genes
-revVchain = Vchain
-revDchain = Dchain
-revVchain$chr.orderV = rev(revVchain$chr.orderV)
-revDchain$chr.orderD = rev(revDchain$chr.orderD)
-
-if(useD){
-  print("Report Clonality - Heatmaps VD")
-  plotVD <- function(dat){
-    if(length(dat[,1]) == 0){
-      return()
-    }
-    
-    img = ggplot() + 
-      geom_tile(data=dat, aes(x=factor(reorder(Top.D.Gene, chr.orderD)), y=factor(reorder(Top.V.Gene, chr.orderV)), fill=relLength)) + 
-      theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
-      scale_fill_gradient(low="gold", high="blue", na.value="white") + 
-      ggtitle(paste(unique(dat$Sample), " (N=" , sum(dat$Length, na.rm=T) ,")", sep="")) + 
-      xlab("D genes") + 
-      ylab("V Genes") +
-      theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), panel.grid.major = element_line(colour = "gainsboro"))
-    
-    png(paste("HeatmapVD_", unique(dat[3])[1,1] , ".png", sep=""), width=200+(15*length(Dchain$v.name)), height=100+(15*length(Vchain$v.name)))
-    print(img)
-    dev.off()
-    
-    ggsave(paste("HeatmapVD_", unique(dat[3])[1,1] , ".pdf", sep=""), img, height=13, width=8)
-    
-    write.table(x=acast(dat, Top.V.Gene~Top.D.Gene, value.var="Length"), file=paste("HeatmapVD_", unique(dat[3])[1,1], ".txt", sep=""), sep="\t",quote=F,row.names=T,col.names=NA)
-  }
-  
-  VandDCount = data.frame(data.table(PRODF)[, list(Length=.N), by=c("Top.V.Gene", "Top.D.Gene", "Sample")])
-  
-  VandDCount$l = log(VandDCount$Length)
-  maxVD = data.frame(data.table(VandDCount)[, list(max=max(l)), by=c("Sample")])
-  VandDCount = merge(VandDCount, maxVD, by.x="Sample", by.y="Sample", all.x=T)
-  VandDCount$relLength = VandDCount$l / VandDCount$max
-  check = is.nan(VandDCount$relLength)
-  if(any(check)){
-	  VandDCount[check,"relLength"] = 0
-  }
-
-  completeVD = merge(VandDCount, revVchain, by.x="Top.V.Gene", by.y="v.name", all=TRUE)
-  completeVD = merge(completeVD, Dchain, by.x="Top.D.Gene", by.y="v.name", all=TRUE)
-  
-  fltr = is.nan(completeVD$relLength)
-  if(all(fltr)){
-	  completeVD[fltr,"relLength"] = 0
-  }
-  
-  VDList = split(completeVD, f=completeVD[,"Sample"])
-  lapply(VDList, FUN=plotVD)
-}
-
-print("Report Clonality - Heatmaps VJ")
-
-plotVJ <- function(dat){
-  if(length(dat[,1]) == 0){
-    return()
-  }
-  cat(paste(unique(dat[3])[1,1]))
-  img = ggplot() + 
-    geom_tile(data=dat, aes(x=factor(reorder(Top.J.Gene, chr.orderJ)), y=factor(reorder(Top.V.Gene, chr.orderV)), fill=relLength)) + 
-    theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
-    scale_fill_gradient(low="gold", high="blue", na.value="white") + 
-    ggtitle(paste(unique(dat$Sample), " (N=" , sum(dat$Length, na.rm=T) ,")", sep="")) + 
-    xlab("J genes") + 
-    ylab("V Genes") +
-    theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), panel.grid.major = element_line(colour = "gainsboro"))
-  
-  png(paste("HeatmapVJ_", unique(dat[3])[1,1] , ".png", sep=""), width=200+(15*length(Jchain$v.name)), height=100+(15*length(Vchain$v.name)))
-  print(img)
-  dev.off()
-  
-  ggsave(paste("HeatmapVJ_", unique(dat[3])[1,1] , ".pdf", sep=""), img, height=11, width=4)
-  
-  write.table(x=acast(dat, Top.V.Gene~Top.J.Gene, value.var="Length"), file=paste("HeatmapVJ_", unique(dat[3])[1,1], ".txt", sep=""), sep="\t",quote=F,row.names=T,col.names=NA)
-}
-
-
-
-VandJCount = data.frame(data.table(PRODF)[, list(Length=.N), by=c("Top.V.Gene", "Top.J.Gene", "Sample")])
-
-VandJCount$l = log(VandJCount$Length)
-maxVJ = data.frame(data.table(VandJCount)[, list(max=max(l)), by=c("Sample")])
-VandJCount = merge(VandJCount, maxVJ, by.x="Sample", by.y="Sample", all.x=T)
-VandJCount$relLength = VandJCount$l / VandJCount$max
-
-check = is.nan(VandJCount$relLength)
-if(any(check)){
-	VandJCount[check,"relLength"] = 0
-}
-
-completeVJ = merge(VandJCount, revVchain, by.x="Top.V.Gene", by.y="v.name", all=TRUE)
-completeVJ = merge(completeVJ, Jchain, by.x="Top.J.Gene", by.y="v.name", all=TRUE)
-
-fltr = is.nan(completeVJ$relLength)
-if(any(fltr)){
-	completeVJ[fltr,"relLength"] = 1
-}
-
-VJList = split(completeVJ, f=completeVJ[,"Sample"])
-lapply(VJList, FUN=plotVJ)
-
-
-
-if(useD){
-  print("Report Clonality - Heatmaps DJ")	
-  plotDJ <- function(dat){
-    if(length(dat[,1]) == 0){
-      return()
-    }
-    img = ggplot() + 
-      geom_tile(data=dat, aes(x=factor(reorder(Top.J.Gene, chr.orderJ)), y=factor(reorder(Top.D.Gene, chr.orderD)), fill=relLength)) + 
-      theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
-      scale_fill_gradient(low="gold", high="blue", na.value="white") + 
-      ggtitle(paste(unique(dat$Sample), " (N=" , sum(dat$Length, na.rm=T) ,")", sep="")) + 
-      xlab("J genes") + 
-      ylab("D Genes") +
-      theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), panel.grid.major = element_line(colour = "gainsboro"))
-    
-    png(paste("HeatmapDJ_", unique(dat[3])[1,1] , ".png", sep=""), width=200+(15*length(Jchain$v.name)), height=100+(15*length(Dchain$v.name)))
-    print(img)
-    dev.off()
-    
-    ggsave(paste("HeatmapDJ_", unique(dat[3])[1,1] , ".pdf", sep=""), img, width=4, height=7)
-    
-    write.table(x=acast(dat, Top.D.Gene~Top.J.Gene, value.var="Length"), file=paste("HeatmapDJ_", unique(dat[3])[1,1], ".txt", sep=""), sep="\t",quote=F,row.names=T,col.names=NA)
-  }
-  
-  
-  DandJCount = data.frame(data.table(PRODF)[, list(Length=.N), by=c("Top.D.Gene", "Top.J.Gene", "Sample")])
-  
-  DandJCount$l = log(DandJCount$Length)
-  maxDJ = data.frame(data.table(DandJCount)[, list(max=max(l)), by=c("Sample")])
-  DandJCount = merge(DandJCount, maxDJ, by.x="Sample", by.y="Sample", all.x=T)
-  DandJCount$relLength = DandJCount$l / DandJCount$max
-  
-  check = is.nan(DandJCount$relLength)
-  if(any(check)){
-    DandJCount[check,"relLength"] = 0
-  }
-  
-  cartegianProductDJ = expand.grid(Top.D.Gene = Dchain$v.name, Top.J.Gene = Jchain$v.name)
-  
-  completeDJ = merge(DandJCount, revDchain, by.x="Top.D.Gene", by.y="v.name", all=TRUE)
-  completeDJ = merge(completeDJ, Jchain, by.x="Top.J.Gene", by.y="v.name", all=TRUE)
-  
-  fltr = is.nan(completeDJ$relLength)
-  if(any(fltr)){
-	  completeDJ[fltr, "relLength"] = 1
-  }
-  
-  DJList = split(completeDJ, f=completeDJ[,"Sample"])
-  lapply(DJList, FUN=plotDJ)
-}
-
-
-# ---------------------- output tables for the circos plots ----------------------
-
-print("Report Clonality - Circos data")
-
-for(smpl in unique(PRODF$Sample)){
-	PRODF.sample = PRODF[PRODF$Sample == smpl,]
-	
-	fltr = PRODF.sample$Top.V.Gene == ""
-	if(any(fltr, na.rm=T)){
-	  PRODF.sample[fltr, "Top.V.Gene"] = "NA"
-	}
-	
-	fltr = PRODF.sample$Top.D.Gene == ""
-	if(any(fltr, na.rm=T)){
-	  PRODF.sample[fltr, "Top.D.Gene"] = "NA"
-	}
-
-	fltr = PRODF.sample$Top.J.Gene == ""
-	if(any(fltr, na.rm=T)){
-	  PRODF.sample[fltr, "Top.J.Gene"] = "NA"
-	}
-	
-	v.d = table(PRODF.sample$Top.V.Gene, PRODF.sample$Top.D.Gene)
-	v.j = table(PRODF.sample$Top.V.Gene, PRODF.sample$Top.J.Gene)
-	d.j = table(PRODF.sample$Top.D.Gene, PRODF.sample$Top.J.Gene)
-
-	write.table(v.d, file=paste(smpl, "_VD_circos.txt", sep=""), sep="\t", quote=F, row.names=T, col.names=NA)
-	write.table(v.j, file=paste(smpl, "_VJ_circos.txt", sep=""), sep="\t", quote=F, row.names=T, col.names=NA)
-	write.table(d.j, file=paste(smpl, "_DJ_circos.txt", sep=""), sep="\t", quote=F, row.names=T, col.names=NA)
-}
-
-# ---------------------- calculating the clonality score ----------------------
-
-if("Replicate" %in% colnames(inputdata)) #can only calculate clonality score when replicate information is available
-{
-  print("Report Clonality - Clonality")
-  write.table(clonalityFrame, "clonalityComplete.txt", sep="\t",quote=F,row.names=F,col.names=T)
-  if(clonality_method == "boyd"){
-    samples = split(clonalityFrame, clonalityFrame$Sample, drop=T)
-   
-    for (sample in samples){
-      res = data.frame(paste=character(0))
-      sample_id = unique(sample$Sample)[[1]]
-      for(replicate in unique(sample$Replicate)){
-        tmp = sample[sample$Replicate == replicate,]
-        clone_table = data.frame(table(tmp$clonaltype))
-        clone_col_name = paste("V", replicate, sep="")
-        colnames(clone_table) = c("paste", clone_col_name)
-        res = merge(res, clone_table, by="paste", all=T)
-      }
-      
-      res[is.na(res)] = 0
-      
-      write.table(res, file=paste("raw_clonality_", sample_id, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=F)
-      write.table(as.matrix(res[,2:ncol(res)]), file=paste("raw_clonality2_", sample_id, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=F)
-      
-      res = read.table(paste("raw_clonality_", sample_id, ".txt", sep=""), header=F, sep="\t", quote="", stringsAsFactors=F, fill=T, comment.char="")
-      
-      infer.result = infer.clonality(as.matrix(res[,2:ncol(res)]))
-      
-      #print(infer.result)
-      
-      write.table(data.table(infer.result[[12]]), file=paste("lymphclon_clonality_", sample_id, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=F)
-      
-      res$type = rowSums(res[,2:ncol(res)])
-      
-      coincidence.table = data.frame(table(res$type))
-      colnames(coincidence.table) = c("Coincidence Type",  "Raw Coincidence Freq")
-      write.table(coincidence.table, file=paste("lymphclon_coincidences_", sample_id, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=T)
-    }
-  }
-  clonalFreq = data.frame(data.table(clonalityFrame)[, list(Type=.N), by=c("Sample", "clonaltype")])
-
-  #write files for every coincidence group of >1
-  samples = unique(clonalFreq$Sample)
-  for(sample in samples){
-      clonalFreqSample = clonalFreq[clonalFreq$Sample == sample,]
-      if(max(clonalFreqSample$Type) > 1){
-          for(i in 2:max(clonalFreqSample$Type)){
-              clonalFreqSampleType = clonalFreqSample[clonalFreqSample$Type == i,]
-              clonalityFrame.sub = clonalityFrame[clonalityFrame$clonaltype %in% clonalFreqSampleType$clonaltype,]
-              clonalityFrame.sub = clonalityFrame.sub[order(clonalityFrame.sub$clonaltype),]
-              write.table(clonalityFrame.sub, file=paste("coincidences_", sample, "_", i, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=T)
-          }
-      }
-  }
-
-  clonalFreqCount = data.frame(data.table(clonalFreq)[, list(Count=.N), by=c("Sample", "Type")])
-  clonalFreqCount$realCount = clonalFreqCount$Type * clonalFreqCount$Count
-  clonalSum = data.frame(data.table(clonalFreqCount)[, list(Reads=sum(realCount)), by=c("Sample")])
-  clonalFreqCount = merge(clonalFreqCount, clonalSum, by.x="Sample", by.y="Sample")
-
-  ct = c('Type\tWeight\n2\t1\n3\t3\n4\t6\n5\t10\n6\t15')
-  tcct = textConnection(ct)
-  CT  = read.table(tcct, sep="\t", header=TRUE)
-  close(tcct)
-  clonalFreqCount = merge(clonalFreqCount, CT, by.x="Type", by.y="Type", all.x=T)
-  clonalFreqCount$WeightedCount = clonalFreqCount$Count * clonalFreqCount$Weight
-
-  ReplicateReads = data.frame(data.table(clonalityFrame)[, list(Type=.N), by=c("Sample", "Replicate", "clonaltype")])
-  ReplicateReads = data.frame(data.table(ReplicateReads)[, list(Reads=.N), by=c("Sample", "Replicate")])
-  clonalFreqCount$Reads = as.numeric(clonalFreqCount$Reads)
-  ReplicateReads$Reads = as.numeric(ReplicateReads$Reads)
-  ReplicateReads$squared = as.numeric(ReplicateReads$Reads * ReplicateReads$Reads)
-
-  ReplicatePrint <- function(dat){
-      write.table(dat[-1], paste("ReplicateReads_", unique(dat[1])[1,1] , ".txt", sep=""), sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  }
-
-  ReplicateSplit = split(ReplicateReads, f=ReplicateReads[,"Sample"])
-  lapply(ReplicateSplit, FUN=ReplicatePrint)
-
-  ReplicateReads = data.frame(data.table(ReplicateReads)[, list(ReadsSum=sum(as.numeric(Reads)), ReadsSquaredSum=sum(as.numeric(squared))), by=c("Sample")])
-  clonalFreqCount = merge(clonalFreqCount, ReplicateReads, by.x="Sample", by.y="Sample", all.x=T)
-
-  ReplicateSumPrint <- function(dat){
-      write.table(dat[-1], paste("ReplicateSumReads_", unique(dat[1])[1,1] , ".txt", sep=""), sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  }
-
-  ReplicateSumSplit = split(ReplicateReads, f=ReplicateReads[,"Sample"])
-  lapply(ReplicateSumSplit, FUN=ReplicateSumPrint)
-
-  clonalFreqCountSum = data.frame(data.table(clonalFreqCount)[, list(Numerator=sum(WeightedCount, na.rm=T)), by=c("Sample")])
-  clonalFreqCount = merge(clonalFreqCount, clonalFreqCountSum, by.x="Sample", by.y="Sample", all.x=T)
-  clonalFreqCount$ReadsSum = as.numeric(clonalFreqCount$ReadsSum) #prevent integer overflow
-  clonalFreqCount$Denominator = (((clonalFreqCount$ReadsSum * clonalFreqCount$ReadsSum) - clonalFreqCount$ReadsSquaredSum) / 2)
-  clonalFreqCount$Result = (clonalFreqCount$Numerator + 1) / (clonalFreqCount$Denominator + 1)
-
-  ClonalityScorePrint <- function(dat){
-      write.table(dat$Result, paste("ClonalityScore_", unique(dat[1])[1,1] , ".txt", sep=""), sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  }
-
-  clonalityScore = clonalFreqCount[c("Sample", "Result")]
-  clonalityScore = unique(clonalityScore)
-
-  clonalityScoreSplit = split(clonalityScore, f=clonalityScore[,"Sample"])
-  lapply(clonalityScoreSplit, FUN=ClonalityScorePrint)
-
-  clonalityOverview = clonalFreqCount[c("Sample", "Type", "Count", "Weight", "WeightedCount")]
-
-
-
-  ClonalityOverviewPrint <- function(dat){
-      dat = dat[order(dat[,2]),]
-      write.table(dat[-1], paste("ClonalityOverView_", unique(dat[1])[1,1] , ".txt", sep=""), sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  }
-
-  clonalityOverviewSplit = split(clonalityOverview, f=clonalityOverview$Sample)
-  lapply(clonalityOverviewSplit, FUN=ClonalityOverviewPrint)
-  
-}
-
-bak = PRODF
-bakun = UNPROD
-
-imgtcolumns = c("X3V.REGION.trimmed.nt.nb","P3V.nt.nb", "N1.REGION.nt.nb", "P5D.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "P3D.nt.nb", "N2.REGION.nt.nb", "P5J.nt.nb", "X5J.REGION.trimmed.nt.nb", "X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb")
-if(all(imgtcolumns %in% colnames(inputdata)))
-{
-  print("found IMGT columns, running junction analysis")
-    
-  #ensure certain columns are in the data (files generated with older versions of IMGT Loader)
-  col.checks = c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb")
-  for(col.check in col.checks){
-	  if(!(col.check %in% names(PRODF))){
-		  print(paste(col.check, "not found adding new column"))
-		  if(nrow(PRODF) > 0){ #because R is anoying...
-			PRODF[,col.check] = 0
-		  } else {
-			PRODF = cbind(PRODF, data.frame(N3.REGION.nt.nb=numeric(0), N4.REGION.nt.nb=numeric(0)))
-		  }
-		  if(nrow(UNPROD) > 0){
-			UNPROD[,col.check] = 0
-		  } else {
-			UNPROD = cbind(UNPROD, data.frame(N3.REGION.nt.nb=numeric(0), N4.REGION.nt.nb=numeric(0)))
-		  }
-	  }
-  }
-  
-  PRODF.with.D = PRODF[nchar(PRODF$Top.D.Gene, keepNA=F) > 2,]
-  PRODF.no.D = PRODF[nchar(PRODF$Top.D.Gene, keepNA=F) < 4,]
-  write.table(PRODF.no.D, "productive_no_D.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
-  
-  UNPROD.with.D = UNPROD[nchar(UNPROD$Top.D.Gene, keepNA=F) > 2,]
-  UNPROD.no.D = UNPROD[nchar(UNPROD$Top.D.Gene, keepNA=F) < 4,]
-  write.table(UNPROD.no.D, "unproductive_no_D.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
-  
-  num_median = function(x, na.rm=T) { as.numeric(median(x, na.rm=na.rm)) }
-
-  newData = data.frame(data.table(PRODF.with.D)[,list(unique=.N, 
-                                               VH.DEL=mean(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
-                                               P1=mean(.SD$P3V.nt.nb, na.rm=T),
-                                               N1=mean(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb"), with=F], na.rm=T)),
-                                               P2=mean(.SD$P5D.nt.nb, na.rm=T),
-                                               DEL.DH=mean(.SD$X5D.REGION.trimmed.nt.nb, na.rm=T),
-                                               DH.DEL=mean(.SD$X3D.REGION.trimmed.nt.nb, na.rm=T),
-                                               P3=mean(.SD$P3D.nt.nb, na.rm=T),
-                                               N2=mean(rowSums(.SD[,c("N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
-                                               P4=mean(.SD$P5J.nt.nb, na.rm=T),
-                                               DEL.JH=mean(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
-                                               Total.Del=mean(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
-                                               Total.N=mean(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
-                                               Total.P=mean(rowSums(.SD[,c("P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
-                                               Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
-                                         by=c("Sample")])
-  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
-  write.table(newData, "junctionAnalysisProd_mean_wD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  
-  newData = data.frame(data.table(PRODF.with.D)[,list(unique=.N, 
-                                               VH.DEL=num_median(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
-                                               P1=num_median(.SD$P3V.nt.nb, na.rm=T),
-                                               N1=num_median(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb"), with=F], na.rm=T)),
-                                               P2=num_median(.SD$P5D.nt.nb, na.rm=T),
-                                               DEL.DH=num_median(.SD$X5D.REGION.trimmed.nt.nb, na.rm=T),
-                                               DH.DEL=num_median(.SD$X3D.REGION.trimmed.nt.nb, na.rm=T),
-                                               P3=num_median(.SD$P3D.nt.nb, na.rm=T),
-                                               N2=num_median(rowSums(.SD[,c("N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
-                                               P4=num_median(.SD$P5J.nt.nb, na.rm=T),
-                                               DEL.JH=num_median(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
-											   Total.Del=num_median(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
-											   Total.N=num_median(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
-											   Total.P=num_median(rowSums(.SD[,c("P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
-											   Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
-                                         by=c("Sample")])
-  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
-  write.table(newData, "junctionAnalysisProd_median_wD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  
-  newData = data.frame(data.table(UNPROD.with.D)[,list(unique=.N, 
-                                                VH.DEL=mean(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
-                                                P1=mean(.SD$P3V.nt.nb, na.rm=T),
-                                                N1=mean(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb"), with=F], na.rm=T)),
-                                                P2=mean(.SD$P5D.nt.nb, na.rm=T),
-                                                DEL.DH=mean(.SD$X5D.REGION.trimmed.nt.nb, na.rm=T),
-                                                DH.DEL=mean(.SD$X3D.REGION.trimmed.nt.nb, na.rm=T),
-                                                P3=mean(.SD$P3D.nt.nb, na.rm=T),
-                                                N2=mean(rowSums(.SD[,c("N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
-                                                P4=mean(.SD$P5J.nt.nb, na.rm=T),
-                                                DEL.JH=mean(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
-                                                Total.Del=mean(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
-                                                Total.N=mean(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
-                                                Total.P=mean(rowSums(.SD[,c("P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
-                                                Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
-                                          by=c("Sample")])
-  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
-  write.table(newData, "junctionAnalysisUnProd_mean_wD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  
-    newData = data.frame(data.table(UNPROD.with.D)[,list(unique=.N, 
-                                                VH.DEL=num_median(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
-                                                P1=num_median(.SD$P3V.nt.nb, na.rm=T),
-                                                N1=num_median(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb"), with=F], na.rm=T)),
-                                                P2=num_median(.SD$P5D.nt.nb, na.rm=T),
-                                                DEL.DH=num_median(.SD$X5D.REGION.trimmed.nt.nb, na.rm=T),
-                                                DH.DEL=num_median(.SD$X3D.REGION.trimmed.nt.nb, na.rm=T),
-                                                P3=num_median(.SD$P3D.nt.nb, na.rm=T),
-                                                N2=num_median(rowSums(.SD[,c("N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
-                                                P4=num_median(.SD$P5J.nt.nb, na.rm=T),
-                                                DEL.JH=num_median(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
-                                                Total.Del=num_median(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
-                                                Total.N=num_median(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
-                                                Total.P=num_median(rowSums(.SD[,c("P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
-                                                Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
-															by=c("Sample")])
-  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
-  write.table(newData, "junctionAnalysisUnProd_median_wD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  
-  #---------------- again for no-D
-  
-  newData = data.frame(data.table(PRODF.no.D)[,list(unique=.N, 
-                                               VH.DEL=mean(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
-                                               P1=mean(.SD$P3V.nt.nb, na.rm=T),
-                                               N1=mean(.SD$N.REGION.nt.nb, na.rm=T),
-                                               P2=mean(.SD$P5J.nt.nb, na.rm=T),
-                                               DEL.JH=mean(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
-                                               Total.Del=mean(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
-                                               Total.N=mean(.SD$N.REGION.nt.nb, na.rm=T),
-                                               Total.P=mean(rowSums(.SD[,c("P3V.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
-                                               Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
-                                         by=c("Sample")])
-  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
-  write.table(newData, "junctionAnalysisProd_mean_nD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  
-  newData = data.frame(data.table(PRODF.no.D)[,list(unique=.N, 
-                                               VH.DEL=num_median(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
-                                               P1=num_median(.SD$P3V.nt.nb, na.rm=T),
-                                               N1=num_median(.SD$N.REGION.nt.nb, na.rm=T),
-                                               P2=num_median(.SD$P5J.nt.nb, na.rm=T),
-                                               DEL.JH=num_median(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
-											   Total.Del=num_median(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
-											   Total.N=num_median(.SD$N.REGION.nt.nb, na.rm=T),
-											   Total.P=num_median(rowSums(.SD[,c("P3V.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
-											   Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
-                                         by=c("Sample")])
-  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
-  write.table(newData, "junctionAnalysisProd_median_nD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  
-  newData = data.frame(data.table(UNPROD.no.D)[,list(unique=.N, 
-                                                VH.DEL=mean(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
-                                                P1=mean(.SD$P3V.nt.nb, na.rm=T),
-                                                N1=mean(.SD$N.REGION.nt.nb, na.rm=T),
-                                                P2=mean(.SD$P5J.nt.nb, na.rm=T),
-                                                DEL.JH=mean(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
-                                                Total.Del=mean(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
-                                                Total.N=mean(.SD$N.REGION.nt.nb, na.rm=T),
-                                                Total.P=mean(rowSums(.SD[,c("P3V.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
-                                                Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
-                                          by=c("Sample")])
-  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
-  write.table(newData, "junctionAnalysisUnProd_mean_nD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-  
-  
-    newData = data.frame(data.table(UNPROD.no.D)[,list(unique=.N, 
-                                                VH.DEL=num_median(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
-                                                P1=num_median(.SD$P3V.nt.nb, na.rm=T),
-                                                N1=num_median(.SD$N.REGION.nt.nb, na.rm=T),
-                                                P2=num_median(.SD$P5J.nt.nb, na.rm=T),
-                                                DEL.JH=num_median(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
-                                                Total.Del=num_median(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
-                                                Total.N=num_median(.SD$N.REGION.nt.nb, na.rm=T),
-                                                Total.P=num_median(rowSums(.SD[,c("P3V.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
-                                                Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
-															by=c("Sample")])
-  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
-  write.table(newData, "junctionAnalysisUnProd_median_nD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-}
-
-PRODF = bak
-UNPROD = bakun
-
-
-# ---------------------- D reading frame ----------------------
-
-D.REGION.reading.frame = PRODF[,c("Sample", "D.REGION.reading.frame")]
-
-chck = is.na(D.REGION.reading.frame$D.REGION.reading.frame)
-if(any(chck)){
-	D.REGION.reading.frame[chck,"D.REGION.reading.frame"] = "No D"
-}
-
-D.REGION.reading.frame.1 = data.frame(data.table(D.REGION.reading.frame)[, list(Freq=.N), by=c("Sample", "D.REGION.reading.frame")])
-
-D.REGION.reading.frame.2 = data.frame(data.table(D.REGION.reading.frame)[, list(sample.sum=sum(as.numeric(.SD$D.REGION.reading.frame), na.rm=T)), by=c("Sample")])
-
-D.REGION.reading.frame = merge(D.REGION.reading.frame.1, D.REGION.reading.frame.2, by="Sample")
-
-D.REGION.reading.frame$percentage = round(D.REGION.reading.frame$Freq / D.REGION.reading.frame$sample.sum * 100, 1)
-
-write.table(D.REGION.reading.frame, "DReadingFrame.txt" , sep="\t",quote=F,row.names=F,col.names=T)
-
-D.REGION.reading.frame = ggplot(D.REGION.reading.frame)
-D.REGION.reading.frame = D.REGION.reading.frame + geom_bar(aes( x = D.REGION.reading.frame, y = percentage, fill=Sample), stat='identity', position='dodge' ) + ggtitle("D reading frame") + xlab("Frame") + ylab("Frequency")
-D.REGION.reading.frame = D.REGION.reading.frame + scale_fill_manual(values=sample.colors)
-D.REGION.reading.frame = D.REGION.reading.frame + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
-
-png("DReadingFrame.png")
-D.REGION.reading.frame
-dev.off()
-
-ggsave("DReadingFrame.pdf", D.REGION.reading.frame)
-
-# ---------------------- AA composition in CDR3 ----------------------
-
-AACDR3 = PRODF[,c("Sample", "CDR3.Seq")]
-
-TotalPerSample = data.frame(data.table(AACDR3)[, list(total=sum(nchar(as.character(.SD$CDR3.Seq)))), by=Sample])
-
-AAfreq = list()
-
-for(i in 1:nrow(TotalPerSample)){
-	sample = TotalPerSample$Sample[i]
-  AAfreq[[i]] = data.frame(table(unlist(strsplit(as.character(AACDR3[AACDR3$Sample == sample,c("CDR3.Seq")]), ""))))
-  AAfreq[[i]]$Sample = sample
-}
-
-AAfreq = ldply(AAfreq, data.frame)
-AAfreq = merge(AAfreq, TotalPerSample, by="Sample", all.x = T)
-AAfreq$freq_perc = as.numeric(AAfreq$Freq / AAfreq$total * 100)
-
-
-AAorder = read.table(sep="\t", header=TRUE, text="order.aa\tAA\n1\tR\n2\tK\n3\tN\n4\tD\n5\tQ\n6\tE\n7\tH\n8\tP\n9\tY\n10\tW\n11\tS\n12\tT\n13\tG\n14\tA\n15\tM\n16\tC\n17\tF\n18\tL\n19\tV\n20\tI")
-AAfreq = merge(AAfreq, AAorder, by.x='Var1', by.y='AA', all.x=TRUE)
-
-AAfreq = AAfreq[!is.na(AAfreq$order.aa),]
-
-AAfreqplot = ggplot(AAfreq)
-AAfreqplot = AAfreqplot + geom_bar(aes( x=factor(reorder(Var1, order.aa)), y = freq_perc, fill = Sample), stat='identity', position='dodge' )
-AAfreqplot = AAfreqplot + annotate("rect", xmin = 0.5, xmax = 2.5, ymin = 0, ymax = Inf, fill = "red", alpha = 0.2)
-AAfreqplot = AAfreqplot + annotate("rect", xmin = 3.5, xmax = 4.5, ymin = 0, ymax = Inf, fill = "blue", alpha = 0.2)
-AAfreqplot = AAfreqplot + annotate("rect", xmin = 5.5, xmax = 6.5, ymin = 0, ymax = Inf, fill = "blue", alpha = 0.2)
-AAfreqplot = AAfreqplot + annotate("rect", xmin = 6.5, xmax = 7.5, ymin = 0, ymax = Inf, fill = "red", alpha = 0.2)
-AAfreqplot = AAfreqplot + ggtitle("Amino Acid Composition in the CDR3") + xlab("Amino Acid, from Hydrophilic (left) to Hydrophobic (right)") + ylab("Percentage") + scale_fill_manual(values=sample.colors)
-AAfreqplot = AAfreqplot + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
-
-png("AAComposition.png",width = 1280, height = 720)
-AAfreqplot
-dev.off()
-
-ggsave("AAComposition.pdf", AAfreqplot, width=12, height=7)
-
-write.table(AAfreq, "AAComposition.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
-
-# ---------------------- AA median CDR3 length ----------------------
-
-median.aa.l = data.frame(data.table(PRODF)[, list(median=as.double(median(as.numeric(.SD$CDR3.Length, na.rm=T), na.rm=T))), by=c("Sample")])
-write.table(median.aa.l, "AAMedianBySample.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
-
-if(clonaltype != "none"){
-	#generate the "Sequences that are present in more than one replicate" dataset
-	clonaltype.in.replicates = inputdata
-	clonaltype.in.replicates = clonaltype.in.replicates[clonaltype.in.replicates$Functionality %in% c("productive (see comment)","productive"),]
-	clonaltype.in.replicates = clonaltype.in.replicates[!(is.na(clonaltype.in.replicates$ID) | is.na(clonaltype.in.replicates$Top.V.Gene) | is.na(clonaltype.in.replicates$Top.J.Gene)),]
-	clonaltype = unlist(strsplit(clonaltype, ","))
-
-	clonaltype.in.replicates$clonaltype = do.call(paste, c(clonaltype.in.replicates[clonaltype], sep = ":"))
-
-	clonaltype.in.replicates = clonaltype.in.replicates[!duplicated(clonaltype.in.replicates$clonaltype),]
-
-	clonaltype = clonaltype[-which(clonaltype == "Sample")]
-
-	clonaltype.in.replicates$clonaltype = do.call(paste, c(clonaltype.in.replicates[clonaltype], sep = ":"))
-	clonaltype.in.replicates = clonaltype.in.replicates[,c("clonaltype","Replicate", "ID", "Sequence", "Sample")]
-
-
-	write.table(clonaltype.in.replicates, "clonaltypes_replicates_before_table.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
-
-	clonaltype.counts = data.frame(table(clonaltype.in.replicates$clonaltype))
-
-	write.table(clonaltype.counts, "clonaltypes_counts.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
-
-	names(clonaltype.counts) = c("clonaltype", "coincidence")
-
-	clonaltype.counts = clonaltype.counts[clonaltype.counts$coincidence > 1,]
-
-	clonaltype.in.replicates = clonaltype.in.replicates[clonaltype.in.replicates$clonaltype %in% clonaltype.counts$clonaltype,]
-	clonaltype.in.replicates = merge(clonaltype.in.replicates, clonaltype.counts, by="clonaltype")
-	clonaltype.in.replicates = clonaltype.in.replicates[order(-clonaltype.in.replicates$coincidence, clonaltype.in.replicates$clonaltype, clonaltype.in.replicates$Replicate),c("coincidence","clonaltype", "Sample", "Replicate", "ID", "Sequence")]
-
-
-	write.table(clonaltype.in.replicates, "clonaltypes_replicates.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
-} else {
-	cat("No clonaltype", file="clonaltypes_replicates_before_table.txt")
-	cat("No clonaltype", file="clonaltypes_counts.txt")
-	cat("No clonaltype", file="clonaltypes_replicates.txt")
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+# ---------------------- load/install packages ----------------------
+
+if (!("gridExtra" %in% rownames(installed.packages()))) {
+  install.packages("gridExtra", repos="http://cran.xl-mirror.nl/") 
+}
+library(gridExtra)
+if (!("ggplot2" %in% rownames(installed.packages()))) {
+  install.packages("ggplot2", repos="http://cran.xl-mirror.nl/") 
+}
+library(ggplot2)
+if (!("plyr" %in% rownames(installed.packages()))) {
+  install.packages("plyr", repos="http://cran.xl-mirror.nl/") 
+}
+library(plyr)
+
+if (!("data.table" %in% rownames(installed.packages()))) {
+  install.packages("data.table", repos="http://cran.xl-mirror.nl/") 
+}
+library(data.table)
+
+if (!("reshape2" %in% rownames(installed.packages()))) {
+  install.packages("reshape2", repos="http://cran.xl-mirror.nl/")
+}
+library(reshape2)
+
+if (!("lymphclon" %in% rownames(installed.packages()))) {
+  install.packages("lymphclon", repos="http://cran.xl-mirror.nl/")
+}
+library(lymphclon)
+
+# ---------------------- parameters ----------------------
+
+args <- commandArgs(trailingOnly = TRUE)
+
+infile = args[1] #path to input file
+outfile = args[2] #path to output file
+outdir = args[3] #path to output folder (html/images/data)
+clonaltype = args[4] #clonaltype definition, or 'none' for no unique filtering
+ct = unlist(strsplit(clonaltype, ","))
+species = args[5] #human or mouse
+locus = args[6] # IGH, IGK, IGL, TRB, TRA, TRG or TRD
+filterproductive = ifelse(args[7] == "yes", T, F) #should unproductive sequences be filtered out? (yes/no)
+clonality_method = args[8]
+
+
+# ---------------------- Data preperation ----------------------
+
+print("Report Clonality - Data preperation")
+
+inputdata = read.table(infile, sep="\t", header=TRUE, fill=T, comment.char="", stringsAsFactors=F)
+
+inputdata$Sample = as.character(inputdata$Sample)
+
+
+print(paste("nrows: ", nrow(inputdata)))
+
+setwd(outdir)
+
+# remove weird rows
+inputdata = inputdata[inputdata$Sample != "",]
+
+print(paste("nrows: ", nrow(inputdata)))
+
+#remove the allele from the V,D and J genes
+inputdata$Top.V.Gene = gsub("[*]([0-9]+)", "", inputdata$Top.V.Gene)
+inputdata$Top.D.Gene = gsub("[*]([0-9]+)", "", inputdata$Top.D.Gene)
+inputdata$Top.J.Gene = gsub("[*]([0-9]+)", "", inputdata$Top.J.Gene)
+
+print(paste("nrows: ", nrow(inputdata)))
+
+#filter uniques
+inputdata.removed = inputdata[NULL,]
+
+print(paste("nrows: ", nrow(inputdata)))
+
+inputdata$clonaltype = 1:nrow(inputdata)
+
+#keep track of the count of sequences in samples or samples/replicates for the front page overview
+input.sample.count = data.frame(data.table(inputdata)[, list(All=.N), by=c("Sample")])
+input.rep.count = data.frame(data.table(inputdata)[, list(All=.N), by=c("Sample", "Replicate")])
+
+PRODF = inputdata
+UNPROD = inputdata
+if(filterproductive){
+  if("Functionality" %in% colnames(inputdata)) { # "Functionality" is an IMGT column
+    #PRODF = inputdata[inputdata$Functionality == "productive" | inputdata$Functionality == "productive (see comment)", ]
+    PRODF = inputdata[inputdata$Functionality %in% c("productive (see comment)","productive"),]
+    
+    PRODF.count = data.frame(data.table(PRODF)[, list(count=.N), by=c("Sample")])
+    
+    UNPROD = inputdata[inputdata$Functionality %in% c("unproductive (see comment)","unproductive"), ]
+  } else {
+    PRODF = inputdata[inputdata$VDJ.Frame != "In-frame with stop codon" & inputdata$VDJ.Frame != "Out-of-frame" & inputdata$CDR3.Found.How != "NOT_FOUND" , ]
+    UNPROD = inputdata[!(inputdata$VDJ.Frame != "In-frame with stop codon" & inputdata$VDJ.Frame != "Out-of-frame" & inputdata$CDR3.Found.How != "NOT_FOUND" ), ]
+  }
+}
+
+for(i in 1:nrow(UNPROD)){
+    if(!is.numeric(UNPROD[i,"CDR3.Length"])){
+        UNPROD[i,"CDR3.Length"] = 0
+    }
+}
+
+prod.sample.count = data.frame(data.table(PRODF)[, list(Productive=.N), by=c("Sample")])
+prod.rep.count = data.frame(data.table(PRODF)[, list(Productive=.N), by=c("Sample", "Replicate")])
+
+unprod.sample.count = data.frame(data.table(UNPROD)[, list(Unproductive=.N), by=c("Sample")])
+unprod.rep.count = data.frame(data.table(UNPROD)[, list(Unproductive=.N), by=c("Sample", "Replicate")])
+
+clonalityFrame = PRODF
+
+#remove duplicates based on the clonaltype
+if(clonaltype != "none"){
+  clonaltype = paste(clonaltype, ",Sample", sep="") #add sample column to clonaltype, unique within samples
+  PRODF$clonaltype = do.call(paste, c(PRODF[unlist(strsplit(clonaltype, ","))], sep = ":"))
+  PRODF = PRODF[!duplicated(PRODF$clonaltype), ]
+    
+  UNPROD$clonaltype = do.call(paste, c(UNPROD[unlist(strsplit(clonaltype, ","))], sep = ":"))
+  UNPROD = UNPROD[!duplicated(UNPROD$clonaltype), ]
+  
+  #again for clonalityFrame but with sample+replicate
+  clonalityFrame$clonaltype = do.call(paste, c(clonalityFrame[unlist(strsplit(clonaltype, ","))], sep = ":"))
+  clonalityFrame$clonality_clonaltype = do.call(paste, c(clonalityFrame[unlist(strsplit(paste(clonaltype, ",Replicate", sep=""), ","))], sep = ":"))
+  clonalityFrame = clonalityFrame[!duplicated(clonalityFrame$clonality_clonaltype), ]
+}
+
+if(nrow(PRODF) == 0){
+	stop("No sequences left after filtering")
+}
+
+prod.unique.sample.count = data.frame(data.table(PRODF)[, list(Productive_unique=.N), by=c("Sample")])
+prod.unique.rep.count = data.frame(data.table(PRODF)[, list(Productive_unique=.N), by=c("Sample", "Replicate")])
+
+unprod.unique.sample.count = data.frame(data.table(UNPROD)[, list(Unproductive_unique=.N), by=c("Sample")])
+unprod.unique.rep.count = data.frame(data.table(UNPROD)[, list(Unproductive_unique=.N), by=c("Sample", "Replicate")])
+
+
+PRODF$freq = 1
+
+if(any(grepl(pattern="_", x=PRODF$ID))){ #the frequency can be stored in the ID with the pattern ".*_freq_.*"
+  PRODF$freq = gsub("^[0-9]+_", "", PRODF$ID)
+  PRODF$freq = gsub("_.*", "", PRODF$freq)
+  PRODF$freq = as.numeric(PRODF$freq)
+  if(any(is.na(PRODF$freq))){ #if there was an "_" in the ID, but not the frequency, go back to frequency of 1 for every sequence
+    PRODF$freq = 1
+  }
+}
+
+#make a names list with sample -> color
+naive.colors = c('blue4', 'darkred', 'olivedrab3', 'red', 'gray74', 'darkviolet', 'lightblue1', 'gold', 'chartreuse2', 'pink', 'Paleturquoise3', 'Chocolate1', 'Yellow', 'Deeppink3', 'Mediumorchid1', 'Darkgreen', 'Blue', 'Gray36', 'Hotpink', 'Yellow4')
+unique.samples = unique(PRODF$Sample)
+
+if(length(unique.samples) <= length(naive.colors)){
+	sample.colors = naive.colors[1:length(unique.samples)]
+} else {
+	sample.colors = rainbow(length(unique.samples))
+}
+
+names(sample.colors) = unique.samples
+
+print("Sample.colors")
+print(sample.colors)
+
+
+#write the complete dataset that is left over, will be the input if 'none' for clonaltype and 'no' for filterproductive
+write.table(PRODF, "allUnique.txt", sep="\t",quote=F,row.names=F,col.names=T)
+#write.table(PRODF, "allUnique.csv", sep=",",quote=F,row.names=F,col.names=T)
+write.table(UNPROD, "allUnproductive.txt", sep="\t",quote=F,row.names=F,col.names=T)
+
+print("SAMPLE TABLE:")
+print(table(PRODF$Sample))
+
+#write the samples to a file
+sampleFile <- file("samples.txt")
+un = unique(inputdata$Sample)
+un = paste(un, sep="\n")
+writeLines(un, sampleFile)
+close(sampleFile)
+
+# ---------------------- Counting the productive/unproductive and unique sequences ----------------------
+
+print("Report Clonality - counting productive/unproductive/unique")
+
+#create the table on the overview page with the productive/unique counts per sample/replicate
+#first for sample
+
+sample.count = merge(input.sample.count, prod.sample.count, by="Sample", all.x=T)
+sample.count$perc_prod = round(sample.count$Productive / sample.count$All * 100)
+sample.count = merge(sample.count, prod.unique.sample.count, by="Sample", all.x=T)
+sample.count$perc_prod_un = round(sample.count$Productive_unique / sample.count$All * 100)
+
+sample.count = merge(sample.count , unprod.sample.count, by="Sample", all.x=T)
+sample.count$perc_unprod = round(sample.count$Unproductive / sample.count$All * 100)
+sample.count = merge(sample.count, unprod.unique.sample.count, by="Sample", all.x=T)
+sample.count$perc_unprod_un = round(sample.count$Unproductive_unique / sample.count$All * 100)
+
+#then sample/replicate
+rep.count = merge(input.rep.count, prod.rep.count, by=c("Sample", "Replicate"), all.x=T)
+
+print(rep.count)
+
+fltr = is.na(rep.count$Productive)
+if(any(fltr)){
+	rep.count[fltr,"Productive"] = 0
+}
+
+print(rep.count)
+
+rep.count$perc_prod = round(rep.count$Productive / rep.count$All * 100)
+rep.count = merge(rep.count, prod.unique.rep.count, by=c("Sample", "Replicate"), all.x=T)
+rep.count$perc_prod_un = round(rep.count$Productive_unique / rep.count$All * 100)
+
+rep.count = merge(rep.count, unprod.rep.count, by=c("Sample", "Replicate"), all.x=T)
+rep.count$perc_unprod = round(rep.count$Unproductive / rep.count$All * 100)
+rep.count = merge(rep.count, unprod.unique.rep.count, by=c("Sample", "Replicate"), all.x=T)
+rep.count$perc_unprod_un = round(rep.count$Unproductive_unique / rep.count$All * 100)
+
+rep.count$Sample = paste(rep.count$Sample, rep.count$Replicate, sep="_")
+rep.count = rep.count[,names(rep.count) != "Replicate"]
+
+count = rbind(sample.count, rep.count)
+
+
+
+write.table(x=count, file="productive_counting.txt", sep=",",quote=F,row.names=F,col.names=F)
+
+# ---------------------- V+J+CDR3 sequence count ----------------------
+
+VJCDR3.count = data.frame(table(clonalityFrame$Top.V.Gene, clonalityFrame$Top.J.Gene, clonalityFrame$CDR3.Seq.DNA))
+names(VJCDR3.count) = c("Top.V.Gene", "Top.J.Gene", "CDR3.Seq.DNA", "Count")
+
+VJCDR3.count = VJCDR3.count[VJCDR3.count$Count > 0,]
+VJCDR3.count = VJCDR3.count[order(-VJCDR3.count$Count),]
+
+write.table(x=VJCDR3.count, file="VJCDR3_count.txt", sep="\t",quote=F,row.names=F,col.names=T)
+
+# ---------------------- Frequency calculation for V, D and J ----------------------
+
+print("Report Clonality - frequency calculation V, D and J")
+
+PRODFV = data.frame(data.table(PRODF)[, list(Length=sum(freq)), by=c("Sample", "Top.V.Gene")])
+Total = ddply(PRODFV, .(Sample), function(x) data.frame(Total = sum(x$Length)))
+PRODFV = merge(PRODFV, Total, by.x='Sample', by.y='Sample', all.x=TRUE)
+PRODFV = ddply(PRODFV, c("Sample", "Top.V.Gene"), summarise, relFreq= (Length*100 / Total))
+
+PRODFD = data.frame(data.table(PRODF)[, list(Length=sum(freq)), by=c("Sample", "Top.D.Gene")])
+Total = ddply(PRODFD, .(Sample), function(x) data.frame(Total = sum(x$Length)))
+PRODFD = merge(PRODFD, Total, by.x='Sample', by.y='Sample', all.x=TRUE)
+PRODFD = ddply(PRODFD, c("Sample", "Top.D.Gene"), summarise, relFreq= (Length*100 / Total))
+
+PRODFJ = data.frame(data.table(PRODF)[, list(Length=sum(freq)), by=c("Sample", "Top.J.Gene")])
+Total = ddply(PRODFJ, .(Sample), function(x) data.frame(Total = sum(x$Length)))
+PRODFJ = merge(PRODFJ, Total, by.x='Sample', by.y='Sample', all.x=TRUE)
+PRODFJ = ddply(PRODFJ, c("Sample", "Top.J.Gene"), summarise, relFreq= (Length*100 / Total))
+
+# ---------------------- Setting up the gene names for the different species/loci ----------------------
+
+print("Report Clonality - getting genes for species/loci")
+
+Vchain = ""
+Dchain = ""
+Jchain = ""
+
+if(species == "custom"){
+	print("Custom genes: ")
+	splt = unlist(strsplit(locus, ";"))
+	print(paste("V:", splt[1]))
+	print(paste("D:", splt[2]))
+	print(paste("J:", splt[3]))
+	
+	Vchain = unlist(strsplit(splt[1], ","))
+	Vchain = data.frame(v.name = Vchain, chr.orderV = 1:length(Vchain))
+	
+	Dchain = unlist(strsplit(splt[2], ","))
+	if(length(Dchain) > 0){
+		Dchain = data.frame(v.name = Dchain, chr.orderD = 1:length(Dchain))
+	} else {
+		Dchain = data.frame(v.name = character(0), chr.orderD = numeric(0))
+	}
+	
+	Jchain = unlist(strsplit(splt[3], ","))
+	Jchain = data.frame(v.name = Jchain, chr.orderJ = 1:length(Jchain))
+
+} else {
+	genes = read.table("genes.txt", sep="\t", header=TRUE, fill=T, comment.char="")
+
+	Vchain = genes[grepl(species, genes$Species) & genes$locus == locus & genes$region == "V",c("IMGT.GENE.DB", "chr.order")]
+	colnames(Vchain) = c("v.name", "chr.orderV")
+	Dchain = genes[grepl(species, genes$Species) & genes$locus == locus & genes$region == "D",c("IMGT.GENE.DB", "chr.order")]
+	colnames(Dchain) = c("v.name", "chr.orderD")
+	Jchain = genes[grepl(species, genes$Species) & genes$locus == locus & genes$region == "J",c("IMGT.GENE.DB", "chr.order")]
+	colnames(Jchain) = c("v.name", "chr.orderJ")
+}
+useD = TRUE
+if(nrow(Dchain) == 0){
+  useD = FALSE
+  cat("No D Genes in this species/locus")
+}
+print(paste(nrow(Vchain), "genes in V"))
+print(paste(nrow(Dchain), "genes in D"))
+print(paste(nrow(Jchain), "genes in J"))
+
+# ---------------------- merge with the frequency count ----------------------
+
+PRODFV = merge(PRODFV, Vchain, by.x='Top.V.Gene', by.y='v.name', all.x=TRUE)
+
+PRODFD = merge(PRODFD, Dchain, by.x='Top.D.Gene', by.y='v.name', all.x=TRUE)
+
+PRODFJ = merge(PRODFJ, Jchain, by.x='Top.J.Gene', by.y='v.name', all.x=TRUE)
+
+# ---------------------- Create the V, D and J frequency plots and write the data.frame for every plot to a file ----------------------
+
+print("Report Clonality - V, D and J frequency plots")
+
+pV = ggplot(PRODFV)
+pV = pV + geom_bar( aes( x=factor(reorder(Top.V.Gene, chr.orderV)), y=relFreq, fill=Sample), stat='identity', position="dodge") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
+pV = pV + xlab("Summary of V gene") + ylab("Frequency") + ggtitle("Relative frequency of V gene usage") + scale_fill_manual(values=sample.colors)
+pV = pV + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
+write.table(x=PRODFV, file="VFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
+
+png("VPlot.png",width = 1280, height = 720)
+pV
+dev.off()
+
+ggsave("VPlot.pdf", pV, width=13, height=7)
+
+if(useD){
+  pD = ggplot(PRODFD)
+  pD = pD + geom_bar( aes( x=factor(reorder(Top.D.Gene, chr.orderD)), y=relFreq, fill=Sample), stat='identity', position="dodge") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
+  pD = pD + xlab("Summary of D gene") + ylab("Frequency") + ggtitle("Relative frequency of D gene usage") + scale_fill_manual(values=sample.colors)
+  pD = pD + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
+  write.table(x=PRODFD, file="DFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
+  
+  png("DPlot.png",width = 800, height = 600)
+  print(pD)
+  dev.off()
+  
+  ggsave("DPlot.pdf", pD, width=10, height=7)
+}
+
+pJ = ggplot(PRODFJ)
+pJ = pJ + geom_bar( aes( x=factor(reorder(Top.J.Gene, chr.orderJ)), y=relFreq, fill=Sample), stat='identity', position="dodge") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
+pJ = pJ + xlab("Summary of J gene") + ylab("Frequency") + ggtitle("Relative frequency of J gene usage") + scale_fill_manual(values=sample.colors)
+pJ = pJ + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
+write.table(x=PRODFJ, file="JFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
+
+png("JPlot.png",width = 800, height = 600)
+pJ
+dev.off()
+
+ggsave("JPlot.pdf", pJ)
+
+# ---------------------- Now the frequency plots of the V, D and J families ----------------------
+
+print("Report Clonality - V, D and J family plots")
+
+VGenes = PRODF[,c("Sample", "Top.V.Gene")]
+VGenes$Top.V.Gene = gsub("-.*", "", VGenes$Top.V.Gene)
+VGenes = data.frame(data.table(VGenes)[, list(Count=.N), by=c("Sample", "Top.V.Gene")])
+TotalPerSample = data.frame(data.table(VGenes)[, list(total=sum(.SD$Count)), by=Sample])
+VGenes = merge(VGenes, TotalPerSample, by="Sample")
+VGenes$Frequency = VGenes$Count * 100 / VGenes$total
+VPlot = ggplot(VGenes)
+VPlot = VPlot + geom_bar(aes( x = Top.V.Gene, y = Frequency, fill = Sample), stat='identity', position='dodge' ) + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
+  ggtitle("Distribution of V gene families") + 
+  ylab("Percentage of sequences") +
+  scale_fill_manual(values=sample.colors) +
+  theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
+png("VFPlot.png")
+VPlot
+dev.off()
+ggsave("VFPlot.pdf", VPlot)
+
+write.table(x=VGenes, file="VFFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
+
+if(useD){
+  DGenes = PRODF[,c("Sample", "Top.D.Gene")]
+  DGenes$Top.D.Gene = gsub("-.*", "", DGenes$Top.D.Gene)
+  DGenes = data.frame(data.table(DGenes)[, list(Count=.N), by=c("Sample", "Top.D.Gene")])
+  TotalPerSample = data.frame(data.table(DGenes)[, list(total=sum(.SD$Count)), by=Sample])
+  DGenes = merge(DGenes, TotalPerSample, by="Sample")
+  DGenes$Frequency = DGenes$Count * 100 / DGenes$total
+  DPlot = ggplot(DGenes)
+  DPlot = DPlot + geom_bar(aes( x = Top.D.Gene, y = Frequency, fill = Sample), stat='identity', position='dodge' ) + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
+    ggtitle("Distribution of D gene families") + 
+    ylab("Percentage of sequences") + 
+    scale_fill_manual(values=sample.colors) +
+    theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
+  png("DFPlot.png")
+  print(DPlot)
+  dev.off()
+  
+  ggsave("DFPlot.pdf", DPlot)
+  write.table(x=DGenes, file="DFFrequency.txt", sep="\t",quote=F,row.names=F,col.names=T)
+}
+
+# ---------------------- Plotting the cdr3 length ----------------------
+
+print("Report Clonality - CDR3 length plot")
+
+CDR3Length = data.frame(data.table(PRODF)[, list(Count=.N), by=c("Sample", "CDR3.Length")])
+TotalPerSample = data.frame(data.table(CDR3Length)[, list(total=sum(.SD$Count)), by=Sample])
+CDR3Length = merge(CDR3Length, TotalPerSample, by="Sample")
+CDR3Length$Frequency = CDR3Length$Count * 100 / CDR3Length$total
+CDR3LengthPlot = ggplot(CDR3Length)
+CDR3LengthPlot = CDR3LengthPlot + geom_bar(aes( x = factor(reorder(CDR3.Length, as.numeric(CDR3.Length))), y = Frequency, fill = Sample), stat='identity', position='dodge' ) + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
+  ggtitle("Length distribution of CDR3") + 
+  xlab("CDR3 Length") + 
+  ylab("Percentage of sequences") +
+  scale_fill_manual(values=sample.colors) +
+  theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
+png("CDR3LengthPlot.png",width = 1280, height = 720)
+CDR3LengthPlot
+dev.off()
+
+ggsave("CDR3LengthPlot.pdf", CDR3LengthPlot, width=12, height=7)
+
+write.table(x=CDR3Length, file="CDR3LengthPlot.txt", sep="\t",quote=F,row.names=F,col.names=T)
+
+# ---------------------- Plot the heatmaps ----------------------
+
+#get the reverse order for the V and D genes
+revVchain = Vchain
+revDchain = Dchain
+revVchain$chr.orderV = rev(revVchain$chr.orderV)
+revDchain$chr.orderD = rev(revDchain$chr.orderD)
+
+if(useD){
+  print("Report Clonality - Heatmaps VD")
+  plotVD <- function(dat){
+    if(length(dat[,1]) == 0){
+      return()
+    }
+    
+    img = ggplot() + 
+      geom_tile(data=dat, aes(x=factor(reorder(Top.D.Gene, chr.orderD)), y=factor(reorder(Top.V.Gene, chr.orderV)), fill=relLength)) + 
+      theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
+      scale_fill_gradient(low="gold", high="blue", na.value="white") + 
+      ggtitle(paste(unique(dat$Sample), " (N=" , sum(dat$Length, na.rm=T) ,")", sep="")) + 
+      xlab("D genes") + 
+      ylab("V Genes") +
+      theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), panel.grid.major = element_line(colour = "gainsboro"))
+    
+    png(paste("HeatmapVD_", unique(dat[3])[1,1] , ".png", sep=""), width=200+(15*length(Dchain$v.name)), height=100+(15*length(Vchain$v.name)))
+    print(img)
+    dev.off()
+    
+    ggsave(paste("HeatmapVD_", unique(dat[3])[1,1] , ".pdf", sep=""), img, height=13, width=8)
+    
+    write.table(x=acast(dat, Top.V.Gene~Top.D.Gene, value.var="Length"), file=paste("HeatmapVD_", unique(dat[3])[1,1], ".txt", sep=""), sep="\t",quote=F,row.names=T,col.names=NA)
+  }
+  
+  VandDCount = data.frame(data.table(PRODF)[, list(Length=.N), by=c("Top.V.Gene", "Top.D.Gene", "Sample")])
+  
+  VandDCount$l = log(VandDCount$Length)
+  maxVD = data.frame(data.table(VandDCount)[, list(max=max(l)), by=c("Sample")])
+  VandDCount = merge(VandDCount, maxVD, by.x="Sample", by.y="Sample", all.x=T)
+  VandDCount$relLength = VandDCount$l / VandDCount$max
+  check = is.nan(VandDCount$relLength)
+  if(any(check)){
+	  VandDCount[check,"relLength"] = 0
+  }
+
+  completeVD = merge(VandDCount, revVchain, by.x="Top.V.Gene", by.y="v.name", all=TRUE)
+  completeVD = merge(completeVD, Dchain, by.x="Top.D.Gene", by.y="v.name", all=TRUE)
+  
+  fltr = is.nan(completeVD$relLength)
+  if(all(fltr)){
+	  completeVD[fltr,"relLength"] = 0
+  }
+  
+  VDList = split(completeVD, f=completeVD[,"Sample"])
+  lapply(VDList, FUN=plotVD)
+}
+
+print("Report Clonality - Heatmaps VJ")
+
+plotVJ <- function(dat){
+  if(length(dat[,1]) == 0){
+    return()
+  }
+  cat(paste(unique(dat[3])[1,1]))
+  img = ggplot() + 
+    geom_tile(data=dat, aes(x=factor(reorder(Top.J.Gene, chr.orderJ)), y=factor(reorder(Top.V.Gene, chr.orderV)), fill=relLength)) + 
+    theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
+    scale_fill_gradient(low="gold", high="blue", na.value="white") + 
+    ggtitle(paste(unique(dat$Sample), " (N=" , sum(dat$Length, na.rm=T) ,")", sep="")) + 
+    xlab("J genes") + 
+    ylab("V Genes") +
+    theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), panel.grid.major = element_line(colour = "gainsboro"))
+  
+  png(paste("HeatmapVJ_", unique(dat[3])[1,1] , ".png", sep=""), width=200+(15*length(Jchain$v.name)), height=100+(15*length(Vchain$v.name)))
+  print(img)
+  dev.off()
+  
+  ggsave(paste("HeatmapVJ_", unique(dat[3])[1,1] , ".pdf", sep=""), img, height=11, width=4)
+  
+  write.table(x=acast(dat, Top.V.Gene~Top.J.Gene, value.var="Length"), file=paste("HeatmapVJ_", unique(dat[3])[1,1], ".txt", sep=""), sep="\t",quote=F,row.names=T,col.names=NA)
+}
+
+
+
+VandJCount = data.frame(data.table(PRODF)[, list(Length=.N), by=c("Top.V.Gene", "Top.J.Gene", "Sample")])
+
+VandJCount$l = log(VandJCount$Length)
+maxVJ = data.frame(data.table(VandJCount)[, list(max=max(l)), by=c("Sample")])
+VandJCount = merge(VandJCount, maxVJ, by.x="Sample", by.y="Sample", all.x=T)
+VandJCount$relLength = VandJCount$l / VandJCount$max
+
+check = is.nan(VandJCount$relLength)
+if(any(check)){
+	VandJCount[check,"relLength"] = 0
+}
+
+completeVJ = merge(VandJCount, revVchain, by.x="Top.V.Gene", by.y="v.name", all=TRUE)
+completeVJ = merge(completeVJ, Jchain, by.x="Top.J.Gene", by.y="v.name", all=TRUE)
+
+fltr = is.nan(completeVJ$relLength)
+if(any(fltr)){
+	completeVJ[fltr,"relLength"] = 1
+}
+
+VJList = split(completeVJ, f=completeVJ[,"Sample"])
+lapply(VJList, FUN=plotVJ)
+
+
+
+if(useD){
+  print("Report Clonality - Heatmaps DJ")	
+  plotDJ <- function(dat){
+    if(length(dat[,1]) == 0){
+      return()
+    }
+    img = ggplot() + 
+      geom_tile(data=dat, aes(x=factor(reorder(Top.J.Gene, chr.orderJ)), y=factor(reorder(Top.D.Gene, chr.orderD)), fill=relLength)) + 
+      theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
+      scale_fill_gradient(low="gold", high="blue", na.value="white") + 
+      ggtitle(paste(unique(dat$Sample), " (N=" , sum(dat$Length, na.rm=T) ,")", sep="")) + 
+      xlab("J genes") + 
+      ylab("D Genes") +
+      theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), panel.grid.major = element_line(colour = "gainsboro"))
+    
+    png(paste("HeatmapDJ_", unique(dat[3])[1,1] , ".png", sep=""), width=200+(15*length(Jchain$v.name)), height=100+(15*length(Dchain$v.name)))
+    print(img)
+    dev.off()
+    
+    ggsave(paste("HeatmapDJ_", unique(dat[3])[1,1] , ".pdf", sep=""), img, width=4, height=7)
+    
+    write.table(x=acast(dat, Top.D.Gene~Top.J.Gene, value.var="Length"), file=paste("HeatmapDJ_", unique(dat[3])[1,1], ".txt", sep=""), sep="\t",quote=F,row.names=T,col.names=NA)
+  }
+  
+  
+  DandJCount = data.frame(data.table(PRODF)[, list(Length=.N), by=c("Top.D.Gene", "Top.J.Gene", "Sample")])
+  
+  DandJCount$l = log(DandJCount$Length)
+  maxDJ = data.frame(data.table(DandJCount)[, list(max=max(l)), by=c("Sample")])
+  DandJCount = merge(DandJCount, maxDJ, by.x="Sample", by.y="Sample", all.x=T)
+  DandJCount$relLength = DandJCount$l / DandJCount$max
+  
+  check = is.nan(DandJCount$relLength)
+  if(any(check)){
+    DandJCount[check,"relLength"] = 0
+  }
+  
+  cartegianProductDJ = expand.grid(Top.D.Gene = Dchain$v.name, Top.J.Gene = Jchain$v.name)
+  
+  completeDJ = merge(DandJCount, revDchain, by.x="Top.D.Gene", by.y="v.name", all=TRUE)
+  completeDJ = merge(completeDJ, Jchain, by.x="Top.J.Gene", by.y="v.name", all=TRUE)
+  
+  fltr = is.nan(completeDJ$relLength)
+  if(any(fltr)){
+	  completeDJ[fltr, "relLength"] = 1
+  }
+  
+  DJList = split(completeDJ, f=completeDJ[,"Sample"])
+  lapply(DJList, FUN=plotDJ)
+}
+
+
+# ---------------------- output tables for the circos plots ----------------------
+
+print("Report Clonality - Circos data")
+
+for(smpl in unique(PRODF$Sample)){
+	PRODF.sample = PRODF[PRODF$Sample == smpl,]
+	
+	fltr = PRODF.sample$Top.V.Gene == ""
+	if(any(fltr, na.rm=T)){
+	  PRODF.sample[fltr, "Top.V.Gene"] = "NA"
+	}
+	
+	fltr = PRODF.sample$Top.D.Gene == ""
+	if(any(fltr, na.rm=T)){
+	  PRODF.sample[fltr, "Top.D.Gene"] = "NA"
+	}
+
+	fltr = PRODF.sample$Top.J.Gene == ""
+	if(any(fltr, na.rm=T)){
+	  PRODF.sample[fltr, "Top.J.Gene"] = "NA"
+	}
+	
+	v.d = table(PRODF.sample$Top.V.Gene, PRODF.sample$Top.D.Gene)
+	v.j = table(PRODF.sample$Top.V.Gene, PRODF.sample$Top.J.Gene)
+	d.j = table(PRODF.sample$Top.D.Gene, PRODF.sample$Top.J.Gene)
+
+	write.table(v.d, file=paste(smpl, "_VD_circos.txt", sep=""), sep="\t", quote=F, row.names=T, col.names=NA)
+	write.table(v.j, file=paste(smpl, "_VJ_circos.txt", sep=""), sep="\t", quote=F, row.names=T, col.names=NA)
+	write.table(d.j, file=paste(smpl, "_DJ_circos.txt", sep=""), sep="\t", quote=F, row.names=T, col.names=NA)
+}
+
+# ---------------------- calculating the clonality score ----------------------
+
+if("Replicate" %in% colnames(inputdata)) #can only calculate clonality score when replicate information is available
+{
+  print("Report Clonality - Clonality")
+  write.table(clonalityFrame, "clonalityComplete.txt", sep="\t",quote=F,row.names=F,col.names=T)
+  if(clonality_method == "boyd"){
+    samples = split(clonalityFrame, clonalityFrame$Sample, drop=T)
+   
+    for (sample in samples){
+      res = data.frame(paste=character(0))
+      sample_id = unique(sample$Sample)[[1]]
+      for(replicate in unique(sample$Replicate)){
+        tmp = sample[sample$Replicate == replicate,]
+        clone_table = data.frame(table(tmp$clonaltype))
+        clone_col_name = paste("V", replicate, sep="")
+        colnames(clone_table) = c("paste", clone_col_name)
+        res = merge(res, clone_table, by="paste", all=T)
+      }
+      
+      res[is.na(res)] = 0
+      
+      write.table(res, file=paste("raw_clonality_", sample_id, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=F)
+      write.table(as.matrix(res[,2:ncol(res)]), file=paste("raw_clonality2_", sample_id, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=F)
+      
+      res = read.table(paste("raw_clonality_", sample_id, ".txt", sep=""), header=F, sep="\t", quote="", stringsAsFactors=F, fill=T, comment.char="")
+      
+      infer.result = infer.clonality(as.matrix(res[,2:ncol(res)]))
+      
+      #print(infer.result)
+      
+      write.table(data.table(infer.result[[12]]), file=paste("lymphclon_clonality_", sample_id, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=F)
+      
+      res$type = rowSums(res[,2:ncol(res)])
+      
+      coincidence.table = data.frame(table(res$type))
+      colnames(coincidence.table) = c("Coincidence Type",  "Raw Coincidence Freq")
+      write.table(coincidence.table, file=paste("lymphclon_coincidences_", sample_id, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=T)
+    }
+  }
+  clonalFreq = data.frame(data.table(clonalityFrame)[, list(Type=.N), by=c("Sample", "clonaltype")])
+
+  #write files for every coincidence group of >1
+  samples = unique(clonalFreq$Sample)
+  for(sample in samples){
+      clonalFreqSample = clonalFreq[clonalFreq$Sample == sample,]
+      if(max(clonalFreqSample$Type) > 1){
+          for(i in 2:max(clonalFreqSample$Type)){
+              clonalFreqSampleType = clonalFreqSample[clonalFreqSample$Type == i,]
+              clonalityFrame.sub = clonalityFrame[clonalityFrame$clonaltype %in% clonalFreqSampleType$clonaltype,]
+              clonalityFrame.sub = clonalityFrame.sub[order(clonalityFrame.sub$clonaltype),]
+              write.table(clonalityFrame.sub, file=paste("coincidences_", sample, "_", i, ".txt", sep=""), sep="\t",quote=F,row.names=F,col.names=T)
+          }
+      }
+  }
+
+  clonalFreqCount = data.frame(data.table(clonalFreq)[, list(Count=.N), by=c("Sample", "Type")])
+  clonalFreqCount$realCount = clonalFreqCount$Type * clonalFreqCount$Count
+  clonalSum = data.frame(data.table(clonalFreqCount)[, list(Reads=sum(realCount)), by=c("Sample")])
+  clonalFreqCount = merge(clonalFreqCount, clonalSum, by.x="Sample", by.y="Sample")
+
+  ct = c('Type\tWeight\n2\t1\n3\t3\n4\t6\n5\t10\n6\t15')
+  tcct = textConnection(ct)
+  CT  = read.table(tcct, sep="\t", header=TRUE)
+  close(tcct)
+  clonalFreqCount = merge(clonalFreqCount, CT, by.x="Type", by.y="Type", all.x=T)
+  clonalFreqCount$WeightedCount = clonalFreqCount$Count * clonalFreqCount$Weight
+
+  ReplicateReads = data.frame(data.table(clonalityFrame)[, list(Type=.N), by=c("Sample", "Replicate", "clonaltype")])
+  ReplicateReads = data.frame(data.table(ReplicateReads)[, list(Reads=.N), by=c("Sample", "Replicate")])
+  clonalFreqCount$Reads = as.numeric(clonalFreqCount$Reads)
+  ReplicateReads$Reads = as.numeric(ReplicateReads$Reads)
+  ReplicateReads$squared = as.numeric(ReplicateReads$Reads * ReplicateReads$Reads)
+
+  ReplicatePrint <- function(dat){
+      write.table(dat[-1], paste("ReplicateReads_", unique(dat[1])[1,1] , ".txt", sep=""), sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  }
+
+  ReplicateSplit = split(ReplicateReads, f=ReplicateReads[,"Sample"])
+  lapply(ReplicateSplit, FUN=ReplicatePrint)
+
+  ReplicateReads = data.frame(data.table(ReplicateReads)[, list(ReadsSum=sum(as.numeric(Reads)), ReadsSquaredSum=sum(as.numeric(squared))), by=c("Sample")])
+  clonalFreqCount = merge(clonalFreqCount, ReplicateReads, by.x="Sample", by.y="Sample", all.x=T)
+
+  ReplicateSumPrint <- function(dat){
+      write.table(dat[-1], paste("ReplicateSumReads_", unique(dat[1])[1,1] , ".txt", sep=""), sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  }
+
+  ReplicateSumSplit = split(ReplicateReads, f=ReplicateReads[,"Sample"])
+  lapply(ReplicateSumSplit, FUN=ReplicateSumPrint)
+
+  clonalFreqCountSum = data.frame(data.table(clonalFreqCount)[, list(Numerator=sum(WeightedCount, na.rm=T)), by=c("Sample")])
+  clonalFreqCount = merge(clonalFreqCount, clonalFreqCountSum, by.x="Sample", by.y="Sample", all.x=T)
+  clonalFreqCount$ReadsSum = as.numeric(clonalFreqCount$ReadsSum) #prevent integer overflow
+  clonalFreqCount$Denominator = (((clonalFreqCount$ReadsSum * clonalFreqCount$ReadsSum) - clonalFreqCount$ReadsSquaredSum) / 2)
+  clonalFreqCount$Result = (clonalFreqCount$Numerator + 1) / (clonalFreqCount$Denominator + 1)
+
+  ClonalityScorePrint <- function(dat){
+      write.table(dat$Result, paste("ClonalityScore_", unique(dat[1])[1,1] , ".txt", sep=""), sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  }
+
+  clonalityScore = clonalFreqCount[c("Sample", "Result")]
+  clonalityScore = unique(clonalityScore)
+
+  clonalityScoreSplit = split(clonalityScore, f=clonalityScore[,"Sample"])
+  lapply(clonalityScoreSplit, FUN=ClonalityScorePrint)
+
+  clonalityOverview = clonalFreqCount[c("Sample", "Type", "Count", "Weight", "WeightedCount")]
+
+
+
+  ClonalityOverviewPrint <- function(dat){
+      dat = dat[order(dat[,2]),]
+      write.table(dat[-1], paste("ClonalityOverView_", unique(dat[1])[1,1] , ".txt", sep=""), sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  }
+
+  clonalityOverviewSplit = split(clonalityOverview, f=clonalityOverview$Sample)
+  lapply(clonalityOverviewSplit, FUN=ClonalityOverviewPrint)
+  
+}
+
+bak = PRODF
+bakun = UNPROD
+
+imgtcolumns = c("X3V.REGION.trimmed.nt.nb","P3V.nt.nb", "N1.REGION.nt.nb", "P5D.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "P3D.nt.nb", "N2.REGION.nt.nb", "P5J.nt.nb", "X5J.REGION.trimmed.nt.nb", "X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb")
+if(all(imgtcolumns %in% colnames(inputdata)))
+{
+  print("found IMGT columns, running junction analysis")
+    
+  #ensure certain columns are in the data (files generated with older versions of IMGT Loader)
+  col.checks = c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb")
+  for(col.check in col.checks){
+	  if(!(col.check %in% names(PRODF))){
+		  print(paste(col.check, "not found adding new column"))
+		  if(nrow(PRODF) > 0){ #because R is anoying...
+			PRODF[,col.check] = 0
+		  } else {
+			PRODF = cbind(PRODF, data.frame(N3.REGION.nt.nb=numeric(0), N4.REGION.nt.nb=numeric(0)))
+		  }
+		  if(nrow(UNPROD) > 0){
+			UNPROD[,col.check] = 0
+		  } else {
+			UNPROD = cbind(UNPROD, data.frame(N3.REGION.nt.nb=numeric(0), N4.REGION.nt.nb=numeric(0)))
+		  }
+	  }
+  }
+  
+  PRODF.with.D = PRODF[nchar(PRODF$Top.D.Gene, keepNA=F) > 2,]
+  PRODF.no.D = PRODF[nchar(PRODF$Top.D.Gene, keepNA=F) < 4,]
+  write.table(PRODF.no.D, "productive_no_D.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
+  
+  UNPROD.with.D = UNPROD[nchar(UNPROD$Top.D.Gene, keepNA=F) > 2,]
+  UNPROD.no.D = UNPROD[nchar(UNPROD$Top.D.Gene, keepNA=F) < 4,]
+  write.table(UNPROD.no.D, "unproductive_no_D.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
+  
+  num_median = function(x, na.rm=T) { as.numeric(median(x, na.rm=na.rm)) }
+
+  newData = data.frame(data.table(PRODF.with.D)[,list(unique=.N, 
+                                               VH.DEL=mean(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
+                                               P1=mean(.SD$P3V.nt.nb, na.rm=T),
+                                               N1=mean(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb"), with=F], na.rm=T)),
+                                               P2=mean(.SD$P5D.nt.nb, na.rm=T),
+                                               DEL.DH=mean(.SD$X5D.REGION.trimmed.nt.nb, na.rm=T),
+                                               DH.DEL=mean(.SD$X3D.REGION.trimmed.nt.nb, na.rm=T),
+                                               P3=mean(.SD$P3D.nt.nb, na.rm=T),
+                                               N2=mean(rowSums(.SD[,c("N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
+                                               P4=mean(.SD$P5J.nt.nb, na.rm=T),
+                                               DEL.JH=mean(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
+                                               Total.Del=mean(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
+                                               Total.N=mean(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
+                                               Total.P=mean(rowSums(.SD[,c("P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
+                                               Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
+                                         by=c("Sample")])
+  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
+  write.table(newData, "junctionAnalysisProd_mean_wD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  
+  newData = data.frame(data.table(PRODF.with.D)[,list(unique=.N, 
+                                               VH.DEL=num_median(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
+                                               P1=num_median(.SD$P3V.nt.nb, na.rm=T),
+                                               N1=num_median(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb"), with=F], na.rm=T)),
+                                               P2=num_median(.SD$P5D.nt.nb, na.rm=T),
+                                               DEL.DH=num_median(.SD$X5D.REGION.trimmed.nt.nb, na.rm=T),
+                                               DH.DEL=num_median(.SD$X3D.REGION.trimmed.nt.nb, na.rm=T),
+                                               P3=num_median(.SD$P3D.nt.nb, na.rm=T),
+                                               N2=num_median(rowSums(.SD[,c("N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
+                                               P4=num_median(.SD$P5J.nt.nb, na.rm=T),
+                                               DEL.JH=num_median(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
+											   Total.Del=num_median(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
+											   Total.N=num_median(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
+											   Total.P=num_median(rowSums(.SD[,c("P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
+											   Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
+                                         by=c("Sample")])
+  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
+  write.table(newData, "junctionAnalysisProd_median_wD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  
+  newData = data.frame(data.table(UNPROD.with.D)[,list(unique=.N, 
+                                                VH.DEL=mean(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
+                                                P1=mean(.SD$P3V.nt.nb, na.rm=T),
+                                                N1=mean(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb"), with=F], na.rm=T)),
+                                                P2=mean(.SD$P5D.nt.nb, na.rm=T),
+                                                DEL.DH=mean(.SD$X5D.REGION.trimmed.nt.nb, na.rm=T),
+                                                DH.DEL=mean(.SD$X3D.REGION.trimmed.nt.nb, na.rm=T),
+                                                P3=mean(.SD$P3D.nt.nb, na.rm=T),
+                                                N2=mean(rowSums(.SD[,c("N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
+                                                P4=mean(.SD$P5J.nt.nb, na.rm=T),
+                                                DEL.JH=mean(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
+                                                Total.Del=mean(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
+                                                Total.N=mean(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
+                                                Total.P=mean(rowSums(.SD[,c("P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
+                                                Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
+                                          by=c("Sample")])
+  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
+  write.table(newData, "junctionAnalysisUnProd_mean_wD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  
+    newData = data.frame(data.table(UNPROD.with.D)[,list(unique=.N, 
+                                                VH.DEL=num_median(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
+                                                P1=num_median(.SD$P3V.nt.nb, na.rm=T),
+                                                N1=num_median(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb"), with=F], na.rm=T)),
+                                                P2=num_median(.SD$P5D.nt.nb, na.rm=T),
+                                                DEL.DH=num_median(.SD$X5D.REGION.trimmed.nt.nb, na.rm=T),
+                                                DH.DEL=num_median(.SD$X3D.REGION.trimmed.nt.nb, na.rm=T),
+                                                P3=num_median(.SD$P3D.nt.nb, na.rm=T),
+                                                N2=num_median(rowSums(.SD[,c("N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
+                                                P4=num_median(.SD$P5J.nt.nb, na.rm=T),
+                                                DEL.JH=num_median(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
+                                                Total.Del=num_median(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5D.REGION.trimmed.nt.nb", "X3D.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
+                                                Total.N=num_median(rowSums(.SD[,c("N.REGION.nt.nb", "N1.REGION.nt.nb", "N2.REGION.nt.nb", "N3.REGION.nt.nb", "N4.REGION.nt.nb"), with=F], na.rm=T)),
+                                                Total.P=num_median(rowSums(.SD[,c("P3V.nt.nb", "P5D.nt.nb", "P3D.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
+                                                Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
+															by=c("Sample")])
+  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
+  write.table(newData, "junctionAnalysisUnProd_median_wD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  
+  #---------------- again for no-D
+  
+  newData = data.frame(data.table(PRODF.no.D)[,list(unique=.N, 
+                                               VH.DEL=mean(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
+                                               P1=mean(.SD$P3V.nt.nb, na.rm=T),
+                                               N1=mean(.SD$N.REGION.nt.nb, na.rm=T),
+                                               P2=mean(.SD$P5J.nt.nb, na.rm=T),
+                                               DEL.JH=mean(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
+                                               Total.Del=mean(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
+                                               Total.N=mean(.SD$N.REGION.nt.nb, na.rm=T),
+                                               Total.P=mean(rowSums(.SD[,c("P3V.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
+                                               Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
+                                         by=c("Sample")])
+  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
+  write.table(newData, "junctionAnalysisProd_mean_nD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  
+  newData = data.frame(data.table(PRODF.no.D)[,list(unique=.N, 
+                                               VH.DEL=num_median(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
+                                               P1=num_median(.SD$P3V.nt.nb, na.rm=T),
+                                               N1=num_median(.SD$N.REGION.nt.nb, na.rm=T),
+                                               P2=num_median(.SD$P5J.nt.nb, na.rm=T),
+                                               DEL.JH=num_median(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
+											   Total.Del=num_median(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
+											   Total.N=num_median(.SD$N.REGION.nt.nb, na.rm=T),
+											   Total.P=num_median(rowSums(.SD[,c("P3V.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
+											   Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
+                                         by=c("Sample")])
+  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
+  write.table(newData, "junctionAnalysisProd_median_nD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  
+  newData = data.frame(data.table(UNPROD.no.D)[,list(unique=.N, 
+                                                VH.DEL=mean(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
+                                                P1=mean(.SD$P3V.nt.nb, na.rm=T),
+                                                N1=mean(.SD$N.REGION.nt.nb, na.rm=T),
+                                                P2=mean(.SD$P5J.nt.nb, na.rm=T),
+                                                DEL.JH=mean(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
+                                                Total.Del=mean(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
+                                                Total.N=mean(.SD$N.REGION.nt.nb, na.rm=T),
+                                                Total.P=mean(rowSums(.SD[,c("P3V.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
+                                                Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
+                                          by=c("Sample")])
+  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
+  write.table(newData, "junctionAnalysisUnProd_mean_nD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+  
+  
+    newData = data.frame(data.table(UNPROD.no.D)[,list(unique=.N, 
+                                                VH.DEL=num_median(.SD$X3V.REGION.trimmed.nt.nb, na.rm=T),
+                                                P1=num_median(.SD$P3V.nt.nb, na.rm=T),
+                                                N1=num_median(.SD$N.REGION.nt.nb, na.rm=T),
+                                                P2=num_median(.SD$P5J.nt.nb, na.rm=T),
+                                                DEL.JH=num_median(.SD$X5J.REGION.trimmed.nt.nb, na.rm=T),
+                                                Total.Del=num_median(rowSums(.SD[,c("X3V.REGION.trimmed.nt.nb", "X5J.REGION.trimmed.nt.nb"), with=F], na.rm=T)),
+                                                Total.N=num_median(.SD$N.REGION.nt.nb, na.rm=T),
+                                                Total.P=num_median(rowSums(.SD[,c("P3V.nt.nb", "P5J.nt.nb"), with=F], na.rm=T)),
+                                                Median.CDR3.l=as.double(median(as.numeric(.SD$CDR3.Length), na.rm=T))),
+															by=c("Sample")])
+  newData[,sapply(newData, is.numeric)] = round(newData[,sapply(newData, is.numeric)],1)
+  write.table(newData, "junctionAnalysisUnProd_median_nD.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+}
+
+PRODF = bak
+UNPROD = bakun
+
+
+# ---------------------- D reading frame ----------------------
+
+D.REGION.reading.frame = PRODF[,c("Sample", "D.REGION.reading.frame")]
+
+chck = is.na(D.REGION.reading.frame$D.REGION.reading.frame)
+if(any(chck)){
+	D.REGION.reading.frame[chck,"D.REGION.reading.frame"] = "No D"
+}
+
+D.REGION.reading.frame.1 = data.frame(data.table(D.REGION.reading.frame)[, list(Freq=.N), by=c("Sample", "D.REGION.reading.frame")])
+
+D.REGION.reading.frame.2 = data.frame(data.table(D.REGION.reading.frame)[, list(sample.sum=sum(as.numeric(.SD$D.REGION.reading.frame), na.rm=T)), by=c("Sample")])
+
+D.REGION.reading.frame = merge(D.REGION.reading.frame.1, D.REGION.reading.frame.2, by="Sample")
+
+D.REGION.reading.frame$percentage = round(D.REGION.reading.frame$Freq / D.REGION.reading.frame$sample.sum * 100, 1)
+
+write.table(D.REGION.reading.frame, "DReadingFrame.txt" , sep="\t",quote=F,row.names=F,col.names=T)
+
+D.REGION.reading.frame = ggplot(D.REGION.reading.frame)
+D.REGION.reading.frame = D.REGION.reading.frame + geom_bar(aes( x = D.REGION.reading.frame, y = percentage, fill=Sample), stat='identity', position='dodge' ) + ggtitle("D reading frame") + xlab("Frame") + ylab("Frequency")
+D.REGION.reading.frame = D.REGION.reading.frame + scale_fill_manual(values=sample.colors)
+D.REGION.reading.frame = D.REGION.reading.frame + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), axis.text.x = element_text(angle = 45, hjust = 1), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
+
+png("DReadingFrame.png")
+D.REGION.reading.frame
+dev.off()
+
+ggsave("DReadingFrame.pdf", D.REGION.reading.frame)
+
+# ---------------------- AA composition in CDR3 ----------------------
+
+AACDR3 = PRODF[,c("Sample", "CDR3.Seq")]
+
+TotalPerSample = data.frame(data.table(AACDR3)[, list(total=sum(nchar(as.character(.SD$CDR3.Seq)))), by=Sample])
+
+AAfreq = list()
+
+for(i in 1:nrow(TotalPerSample)){
+	sample = TotalPerSample$Sample[i]
+  AAfreq[[i]] = data.frame(table(unlist(strsplit(as.character(AACDR3[AACDR3$Sample == sample,c("CDR3.Seq")]), ""))))
+  AAfreq[[i]]$Sample = sample
+}
+
+AAfreq = ldply(AAfreq, data.frame)
+AAfreq = merge(AAfreq, TotalPerSample, by="Sample", all.x = T)
+AAfreq$freq_perc = as.numeric(AAfreq$Freq / AAfreq$total * 100)
+
+
+AAorder = read.table(sep="\t", header=TRUE, text="order.aa\tAA\n1\tR\n2\tK\n3\tN\n4\tD\n5\tQ\n6\tE\n7\tH\n8\tP\n9\tY\n10\tW\n11\tS\n12\tT\n13\tG\n14\tA\n15\tM\n16\tC\n17\tF\n18\tL\n19\tV\n20\tI")
+AAfreq = merge(AAfreq, AAorder, by.x='Var1', by.y='AA', all.x=TRUE)
+
+AAfreq = AAfreq[!is.na(AAfreq$order.aa),]
+
+AAfreqplot = ggplot(AAfreq)
+AAfreqplot = AAfreqplot + geom_bar(aes( x=factor(reorder(Var1, order.aa)), y = freq_perc, fill = Sample), stat='identity', position='dodge' )
+AAfreqplot = AAfreqplot + annotate("rect", xmin = 0.5, xmax = 2.5, ymin = 0, ymax = Inf, fill = "red", alpha = 0.2)
+AAfreqplot = AAfreqplot + annotate("rect", xmin = 3.5, xmax = 4.5, ymin = 0, ymax = Inf, fill = "blue", alpha = 0.2)
+AAfreqplot = AAfreqplot + annotate("rect", xmin = 5.5, xmax = 6.5, ymin = 0, ymax = Inf, fill = "blue", alpha = 0.2)
+AAfreqplot = AAfreqplot + annotate("rect", xmin = 6.5, xmax = 7.5, ymin = 0, ymax = Inf, fill = "red", alpha = 0.2)
+AAfreqplot = AAfreqplot + ggtitle("Amino Acid Composition in the CDR3") + xlab("Amino Acid, from Hydrophilic (left) to Hydrophobic (right)") + ylab("Percentage") + scale_fill_manual(values=sample.colors)
+AAfreqplot = AAfreqplot + theme(panel.background = element_rect(fill = "white", colour="black"),text = element_text(size=15, colour="black"), panel.grid.major.y = element_line(colour = "black"), panel.grid.major.x = element_blank())
+
+png("AAComposition.png",width = 1280, height = 720)
+AAfreqplot
+dev.off()
+
+ggsave("AAComposition.pdf", AAfreqplot, width=12, height=7)
+
+write.table(AAfreq, "AAComposition.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
+
+# ---------------------- AA median CDR3 length ----------------------
+
+median.aa.l = data.frame(data.table(PRODF)[, list(median=as.double(median(as.numeric(.SD$CDR3.Length, na.rm=T), na.rm=T))), by=c("Sample")])
+write.table(median.aa.l, "AAMedianBySample.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=F)
+
+if(clonaltype != "none"){
+	#generate the "Sequences that are present in more than one replicate" dataset
+	clonaltype.in.replicates = inputdata
+	clonaltype.in.replicates = clonaltype.in.replicates[clonaltype.in.replicates$Functionality %in% c("productive (see comment)","productive"),]
+	clonaltype.in.replicates = clonaltype.in.replicates[!(is.na(clonaltype.in.replicates$ID) | is.na(clonaltype.in.replicates$Top.V.Gene) | is.na(clonaltype.in.replicates$Top.J.Gene)),]
+	clonaltype = unlist(strsplit(clonaltype, ","))
+
+	clonaltype.in.replicates$clonaltype = do.call(paste, c(clonaltype.in.replicates[clonaltype], sep = ":"))
+
+	clonaltype.in.replicates = clonaltype.in.replicates[!duplicated(clonaltype.in.replicates$clonaltype),]
+
+	clonaltype = clonaltype[-which(clonaltype == "Sample")]
+
+	clonaltype.in.replicates$clonaltype = do.call(paste, c(clonaltype.in.replicates[clonaltype], sep = ":"))
+	clonaltype.in.replicates = clonaltype.in.replicates[,c("clonaltype","Replicate", "ID", "Sequence", "Sample")]
+
+
+	write.table(clonaltype.in.replicates, "clonaltypes_replicates_before_table.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
+
+	clonaltype.counts = data.frame(table(clonaltype.in.replicates$clonaltype))
+
+	write.table(clonaltype.counts, "clonaltypes_counts.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
+
+	names(clonaltype.counts) = c("clonaltype", "coincidence")
+
+	clonaltype.counts = clonaltype.counts[clonaltype.counts$coincidence > 1,]
+
+	clonaltype.in.replicates = clonaltype.in.replicates[clonaltype.in.replicates$clonaltype %in% clonaltype.counts$clonaltype,]
+	clonaltype.in.replicates = merge(clonaltype.in.replicates, clonaltype.counts, by="clonaltype")
+	clonaltype.in.replicates = clonaltype.in.replicates[order(-clonaltype.in.replicates$coincidence, clonaltype.in.replicates$clonaltype, clonaltype.in.replicates$Replicate),c("coincidence","clonaltype", "Sample", "Replicate", "ID", "Sequence")]
+
+
+	write.table(clonaltype.in.replicates, "clonaltypes_replicates.txt" , sep="\t",quote=F,na="-",row.names=F,col.names=T)
+} else {
+	cat("No clonaltype", file="clonaltypes_replicates_before_table.txt")
+	cat("No clonaltype", file="clonaltypes_counts.txt")
+	cat("No clonaltype", file="clonaltypes_replicates.txt")
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- a/report_clonality/circos/circos.conf	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/circos/circos.conf	Thu Feb 25 13:36:15 2021 +0000
@@ -1,147 +1,147 @@
-
-# This is the main configuration file for the Circos tableviewer. This file also
-# depends on colors.conf (definition on basic colors), ideogram.conf (size and spacing of
-# row/cell segments), and ticks.conf (tick spacing and label definitions - these are turned
-# off by default).
-#
-# In addition to these configuration files, the bin/make-conf script creates 
-# colors.conf (colors of row/col segments) and colors_percentile.conf (colors based on
-# cell percentile values). These configuration files are also included via the <<include>> directive.
-#
-# Some elements of the output image are toggled off by default (e.g. row and column highlights, 
-# anchor links to segment labels, tick marks).
-
-<colors>
-<<include DATA_DIR/etc_colors.conf>>
-<<include DATA_DIR/colors.conf>>
-<<include DATA_DIR/colors_percentile.conf>>
-</colors>
-
-<fonts>
-<<include DATA_DIR/fonts.conf>>
-</fonts>
-
-<<include DATA_DIR/ideogram.conf>>
-<<include DATA_DIR/ticks.conf>>
-
-karyotype = DATA_DIR/karyotype.txt
-
-<image>
-dir   = DATA_DIR
-file  = circos.png
-24bit = yes
-svg   = yes
-png   = yes
-# radius of inscribed circle in image
-radius         = 1500p
-background     = white
-# by default angle=0 is at 3 o'clock position
-angle_offset   = -180
-auto_alpha_colors = yes
-auto_alpha_steps  = 5
-</image>
-
-chromosomes_units              = 10
-chromosomes_display_default    = yes
-chromosomes_order_by_karyotype = yes
-
-<highlights>
-
-show = yes
-
-<highlight>
-show = no
-file = DATA_DIR/row.txt
-r0 = 1r+200p
-r1 = 1r+220p
-stroke_color = black
-stroke_thickness = 2
-</highlight>
-
-<highlight>
-show = no
-file = DATA_DIR/col.txt
-r0 = 1r+230p
-r1 = 1r+250p
-stroke_color = black
-stroke_thickness = 2
-</highlight>
-
-<highlight>
-show = no
-file = DATA_DIR/all.txt
-r0 = 1r+10p
-r1 = 1r+35p
-stroke_color = black
-stroke_thickness = 2
-</highlight>
-
-</highlights>
-
-<plots>
-
-<plot>
-type = text
-file = DATA_DIR/segmentlabel.txt
-label_font = condensedbold
-color = black
-label_size = 30p
-r0   = 1r+50p
-r1   = 1r+500p
-rpadding = 0p
-padding = 0p
-
-show_links     = no
-link_dims      = 0p,10p,32p,10p,5p
-link_thickness = 3p
-link_color     = black
-
-label_snuggle             = no
-# shift label up to its height in pixels in the angular direction
-max_snuggle_distance      = 2r
-snuggle_sampling          = 2
-snuggle_tolerance         = 0.25r
-
-</plot>
-
-</plots>
-
-<links>
-
-<link cellvalues>
-ribbon        = yes
-flat          = yes
-file          = DATA_DIR/cells.txt
-bezier_radius = 0.0r
-radius        = 0.999r-15p
-thickness     = 1
-color         = grey
-stroke_color     = black
-stroke_thickness = 1
-<rules>
-
-<rule>
-importance = 95
-condition  = 1
-radius1    = 0.999r+2p
-flow       = continue
-</rule>
-
-</rules>
-
-</link>
-
-</links>
-
-#anglestep       = 0.5
-#minslicestep    = 10
-#beziersamples   = 40
-#debug           = no
-#warnings        = no
-#imagemap        = no
-
-#units_ok = bupr
-#units_nounit = n
-
-<<include DATA_DIR/housekeeping.conf>>
-
+
+# This is the main configuration file for the Circos tableviewer. This file also
+# depends on colors.conf (definition on basic colors), ideogram.conf (size and spacing of
+# row/cell segments), and ticks.conf (tick spacing and label definitions - these are turned
+# off by default).
+#
+# In addition to these configuration files, the bin/make-conf script creates 
+# colors.conf (colors of row/col segments) and colors_percentile.conf (colors based on
+# cell percentile values). These configuration files are also included via the <<include>> directive.
+#
+# Some elements of the output image are toggled off by default (e.g. row and column highlights, 
+# anchor links to segment labels, tick marks).
+
+<colors>
+<<include DATA_DIR/etc_colors.conf>>
+<<include DATA_DIR/colors.conf>>
+<<include DATA_DIR/colors_percentile.conf>>
+</colors>
+
+<fonts>
+<<include DATA_DIR/fonts.conf>>
+</fonts>
+
+<<include DATA_DIR/ideogram.conf>>
+<<include DATA_DIR/ticks.conf>>
+
+karyotype = DATA_DIR/karyotype.txt
+
+<image>
+dir   = DATA_DIR
+file  = circos.png
+24bit = yes
+svg   = yes
+png   = yes
+# radius of inscribed circle in image
+radius         = 1500p
+background     = white
+# by default angle=0 is at 3 o'clock position
+angle_offset   = -180
+auto_alpha_colors = yes
+auto_alpha_steps  = 5
+</image>
+
+chromosomes_units              = 10
+chromosomes_display_default    = yes
+chromosomes_order_by_karyotype = yes
+
+<highlights>
+
+show = yes
+
+<highlight>
+show = no
+file = DATA_DIR/row.txt
+r0 = 1r+200p
+r1 = 1r+220p
+stroke_color = black
+stroke_thickness = 2
+</highlight>
+
+<highlight>
+show = no
+file = DATA_DIR/col.txt
+r0 = 1r+230p
+r1 = 1r+250p
+stroke_color = black
+stroke_thickness = 2
+</highlight>
+
+<highlight>
+show = no
+file = DATA_DIR/all.txt
+r0 = 1r+10p
+r1 = 1r+35p
+stroke_color = black
+stroke_thickness = 2
+</highlight>
+
+</highlights>
+
+<plots>
+
+<plot>
+type = text
+file = DATA_DIR/segmentlabel.txt
+label_font = condensedbold
+color = black
+label_size = 30p
+r0   = 1r+50p
+r1   = 1r+500p
+rpadding = 0p
+padding = 0p
+
+show_links     = no
+link_dims      = 0p,10p,32p,10p,5p
+link_thickness = 3p
+link_color     = black
+
+label_snuggle             = no
+# shift label up to its height in pixels in the angular direction
+max_snuggle_distance      = 2r
+snuggle_sampling          = 2
+snuggle_tolerance         = 0.25r
+
+</plot>
+
+</plots>
+
+<links>
+
+<link cellvalues>
+ribbon        = yes
+flat          = yes
+file          = DATA_DIR/cells.txt
+bezier_radius = 0.0r
+radius        = 0.999r-15p
+thickness     = 1
+color         = grey
+stroke_color     = black
+stroke_thickness = 1
+<rules>
+
+<rule>
+importance = 95
+condition  = 1
+radius1    = 0.999r+2p
+flow       = continue
+</rule>
+
+</rules>
+
+</link>
+
+</links>
+
+#anglestep       = 0.5
+#minslicestep    = 10
+#beziersamples   = 40
+#debug           = no
+#warnings        = no
+#imagemap        = no
+
+#units_ok = bupr
+#units_nounit = n
+
+<<include DATA_DIR/housekeeping.conf>>
+
--- a/report_clonality/circos/etc_colors.conf	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/circos/etc_colors.conf	Thu Feb 25 13:36:15 2021 +0000
@@ -1,142 +1,142 @@
-# RGB color definition. Colors are refered to within configuration files
-# by their name. In order to use a color, you must define it here. 
-# 
-# e.g. if you really must use 'bisque', then add
-#
-# bisque = 255,228,196
-#
-# Many useful colors are already defined. In general, given a HUE, these
-# colors are defined
-#
-# vlHUE (very light HUE, e.g. vlred)
-# lHUE  (light HUE, e.g. red)
-# HUE   (e.g. red)
-# dHUE  (dark HUE, e.g. dred)
-#
-# In addition to hues, two other color groups are defined. 
-#
-# - cytogenetic band colors (e.g. gposNNN, acen, stalk, etc.) which
-#   correspond to colors on ideogram bands
-# - UCSC chromosome color palette (e.g. chrNN, chrUn, chrNA)
-
-optblue   = 55,133,221
-optgreen  = 55,221,125
-optyellow = 221,215,55
-optorange = 221,164,55
-optred    = 221,55,55
-optviolet = 145,55,221
-optpurple = 219,55,221
-
-white     = 255,255,255
-vvvvlgrey = 250,250,250
-vvvlgrey  = 240,240,240
-vvlgrey   = 230,230,230
-vlgrey    = 220,220,220
-lgrey     = 210,210,210
-grey      = 200,200,200
-dgrey     = 170,170,170
-vdgrey    = 140,140,140
-vvdgrey   = 100,100,100
-vvvdgrey  = 70,70,70
-vvvvdgrey = 40,40,40
-black     = 0,0,0
-
-vlred   = 255,193,200
-lred    = 255,122,137
-red     = 247,42,66
-dred    = 205,51,69
-
-vlgreen = 204,255,218
-lgreen  = 128,255,164
-green   = 51,204,94
-dgreen  = 38,153,71
-
-vlblue  = 128,176,255
-lblue   = 64,137,255
-blue    = 54,116,217
-dblue   = 38,82,153
-
-vlpurple= 242,128,255
-lpurple = 236,64,255
-purple  = 189,51,204
-dpurple = 118,32,128
-
-vlyellow = 255,253,202
-lyellow  = 255,252,150
-yellow   = 255,255,0
-dyellow  = 191,186,48
-
-lime     = 186,255,0
-
-vlorange = 255,228,193
-lorange  = 255,187,110
-orange   = 255,136,0
-dorange  = 221,143,55
-
-# karyotype colors
-
-gpos100 = 0,0,0
-gpos    = 0,0,0
-gpos75  = 130,130,130
-gpos66  = 160,160,160
-gpos50  = 200,200,200
-gpos33  = 210,210,210
-gpos25  = 200,200,200
-gvar    = 220,220,220
-gneg    = 255,255,255
-acen    = 217,47,39
-stalk   = 100,127,164
-
-# others
-
-select = 135,177,255
-
-# new york times cmyk-safe
-
-# roygbiv - normal
-nyt_blue   = 104,152,178
-nyt_green  = 137,129,96
-nyt_yellow = 241,221,117
-nyt_orange = 230,146,57
-nyt_red    = 217,47,39
-
-# chromosome color map (UCSC) 
-
-chr1 = 153,102,0
-chr2 = 102,102,0
-chr3 = 153,153,30
-chr4 = 204,0,0
-chr5 = 255,0,0
-chr6 = 255,0,204
-chr7 = 255,204,204
-chr8 = 255,153,0
-chr9 = 255,204,0
-chr10 = 255,255,0
-chr11 = 204,255,0
-chr12 = 0,255,0
-chr13 = 53,128,0
-chr14 = 0,0,204
-chr15 = 102,153,255
-chr16 = 153,204,255
-chr17 = 0,255,255
-chr18 = 204,255,255
-chr19 = 153,0,204
-chr20 = 204,51,255
-chr21 = 204,153,255
-chr22 = 102,102,102
-chr23 = 153,153,153
-chrX  = 153,153,153
-chr24 = 204,204,204
-chrY = 204,204,204
-chrM = 204,204,153
-chr0 = 204,204,153
-chrUn = 121,204,61
-chrNA = 255,255,255
-
-
-
-
-
-
-
-
+# RGB color definition. Colors are refered to within configuration files
+# by their name. In order to use a color, you must define it here. 
+# 
+# e.g. if you really must use 'bisque', then add
+#
+# bisque = 255,228,196
+#
+# Many useful colors are already defined. In general, given a HUE, these
+# colors are defined
+#
+# vlHUE (very light HUE, e.g. vlred)
+# lHUE  (light HUE, e.g. red)
+# HUE   (e.g. red)
+# dHUE  (dark HUE, e.g. dred)
+#
+# In addition to hues, two other color groups are defined. 
+#
+# - cytogenetic band colors (e.g. gposNNN, acen, stalk, etc.) which
+#   correspond to colors on ideogram bands
+# - UCSC chromosome color palette (e.g. chrNN, chrUn, chrNA)
+
+optblue   = 55,133,221
+optgreen  = 55,221,125
+optyellow = 221,215,55
+optorange = 221,164,55
+optred    = 221,55,55
+optviolet = 145,55,221
+optpurple = 219,55,221
+
+white     = 255,255,255
+vvvvlgrey = 250,250,250
+vvvlgrey  = 240,240,240
+vvlgrey   = 230,230,230
+vlgrey    = 220,220,220
+lgrey     = 210,210,210
+grey      = 200,200,200
+dgrey     = 170,170,170
+vdgrey    = 140,140,140
+vvdgrey   = 100,100,100
+vvvdgrey  = 70,70,70
+vvvvdgrey = 40,40,40
+black     = 0,0,0
+
+vlred   = 255,193,200
+lred    = 255,122,137
+red     = 247,42,66
+dred    = 205,51,69
+
+vlgreen = 204,255,218
+lgreen  = 128,255,164
+green   = 51,204,94
+dgreen  = 38,153,71
+
+vlblue  = 128,176,255
+lblue   = 64,137,255
+blue    = 54,116,217
+dblue   = 38,82,153
+
+vlpurple= 242,128,255
+lpurple = 236,64,255
+purple  = 189,51,204
+dpurple = 118,32,128
+
+vlyellow = 255,253,202
+lyellow  = 255,252,150
+yellow   = 255,255,0
+dyellow  = 191,186,48
+
+lime     = 186,255,0
+
+vlorange = 255,228,193
+lorange  = 255,187,110
+orange   = 255,136,0
+dorange  = 221,143,55
+
+# karyotype colors
+
+gpos100 = 0,0,0
+gpos    = 0,0,0
+gpos75  = 130,130,130
+gpos66  = 160,160,160
+gpos50  = 200,200,200
+gpos33  = 210,210,210
+gpos25  = 200,200,200
+gvar    = 220,220,220
+gneg    = 255,255,255
+acen    = 217,47,39
+stalk   = 100,127,164
+
+# others
+
+select = 135,177,255
+
+# new york times cmyk-safe
+
+# roygbiv - normal
+nyt_blue   = 104,152,178
+nyt_green  = 137,129,96
+nyt_yellow = 241,221,117
+nyt_orange = 230,146,57
+nyt_red    = 217,47,39
+
+# chromosome color map (UCSC) 
+
+chr1 = 153,102,0
+chr2 = 102,102,0
+chr3 = 153,153,30
+chr4 = 204,0,0
+chr5 = 255,0,0
+chr6 = 255,0,204
+chr7 = 255,204,204
+chr8 = 255,153,0
+chr9 = 255,204,0
+chr10 = 255,255,0
+chr11 = 204,255,0
+chr12 = 0,255,0
+chr13 = 53,128,0
+chr14 = 0,0,204
+chr15 = 102,153,255
+chr16 = 153,204,255
+chr17 = 0,255,255
+chr18 = 204,255,255
+chr19 = 153,0,204
+chr20 = 204,51,255
+chr21 = 204,153,255
+chr22 = 102,102,102
+chr23 = 153,153,153
+chrX  = 153,153,153
+chr24 = 204,204,204
+chrY = 204,204,204
+chrM = 204,204,153
+chr0 = 204,204,153
+chrUn = 121,204,61
+chrNA = 255,255,255
+
+
+
+
+
+
+
+
--- a/report_clonality/circos/fonts.conf	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/circos/fonts.conf	Thu Feb 25 13:36:15 2021 +0000
@@ -1,8 +1,8 @@
-
-default       = LTe50046.ttf
-normal        = LTe50046.ttf
-bold          = LTe50048.ttf
-condensed     = LTe50050.ttf
-condensedbold = LTe50054.ttf
-mono          = pragmata.ttf
-glyph         = wingding.ttf
+
+default       = LTe50046.ttf
+normal        = LTe50046.ttf
+bold          = LTe50048.ttf
+condensed     = LTe50050.ttf
+condensedbold = LTe50054.ttf
+mono          = pragmata.ttf
+glyph         = wingding.ttf
--- a/report_clonality/circos/housekeeping.conf	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/circos/housekeeping.conf	Thu Feb 25 13:36:15 2021 +0000
@@ -1,230 +1,230 @@
-# Housekeeping parameters, which must be included
-# at the top level of the configuration.
-#
-# Don't adjust these, unless you know what you are doing, or
-# feel like experimenting
-
-anglestep       = 0.5
-minslicestep    = 10
-beziersamples   = 40 # bezier curves are drawn piece-wise
-                     # linear, with this many samples
-debug           = no
-warnings        = no
-imagemap        = no
-paranoid        = yes
-
-units_ok        = bupr
-units_nounit    = n
-
-# \t  tab
-# \s  any whitespace
-file_delim = \s
-# collapse adjacent whitespace
-# e.g. two spaces are treated as one, not as a missing field
-file_delim_collapse = yes
-
-# Record delimiter for parameter values that are lists, such as
-# hs1:0.25;hs2:0.10. By default, both ; and , are accepted
-#
-# e.g. hs1:0.25,hs2:0.10
-#      hs1:0.25;hs2:0.10
-list_record_delim = \s*[;,]\s*
-# Field delimiter specifies the assignment operator, e.g.
-list_field_delim  = \s*[:=]\s*]
-
-# Rule fields and other parameters accept var(VARIABLE) syntax
-# to reference parameters of data points. By default, if
-# VARIABLE does not exist, Circos quits with an error, unless
-# the skip parameter below is set.
-#
-# This feature is useful when you have data that don't always
-# have the same options. For example,
-#
-# chr1 10 20 a=10
-# chr1 50 60 b=10
-skip_missing_expression_vars = no
-
-# In old versions, data point parameters were referenced using _NAME_
-# syntax. This has been replaced with var(NAME). The _NAME_ syntax is
-# deprecated (for example, it will break when dealing with fields like
-# gene_a_1). If you must use it, set the parameter below.
-
-legacy_underline_expression_syntax = no
-
-# Magnification factor for text in SVG files.
-svg_font_scale = 1.3
-
-# default font - pick one of the keys from <fonts> block
-default_font   = default
-# default font name is used for SVG files for cases where
-# the font definition does not include a name
-# see etc/fonts.conf for details
-default_font_name  = Arial
-default_font_color = black
-
-# default color for cases when color is not specified
-default_color  = black
-
-<guides>
-thickness      = 1
-size           = 5
-type           = outline
-<object>
-all            = no
-ideogram       = no
-ideogram_label = no
-</object>
-<color>
-default = lblue
-text    = red
-</color>
-</guides>
-
-# Receive debug messages about actions
-#
-# Comma-separated list of one or more of the following
-#
-# summary   - top level indications of what's happening
-# chrfilter - ideogram filtering (parsing 'chromosomes' parameter)
-# conf      - configuration file
-# counter   - plot counters
-# spacing   - ideogram spacing
-# scale     - ideogram scaling
-# ideogram  - ideogram reporting
-# anglepos  - report angle positions for base pair coordinates
-# zoom      - zoom regions
-# layers    - specific plot z-layers
-# rules     - dynamic rules
-# text      - text tracks
-# heatmap   - detailed heatmap reports
-# brush     - brushes
-# color     - color allocation and definition
-# ticks     - tick marks and labels
-# timers    - some benchmark timings
-# cache     - caches
-# _all      - turn on all groups
-debug_group = summary
-
-# run length duration after which timing report is automatically
-# generated at the end of the run
-debug_auto_timer_report = 30
-
-debug_word_separator = " "
-debug_undef_text     = _undef_
-debug_empty_text     = _emptylist_
-
-# parameters passed to functions can be
-# validated to check consistency. turn this
-# off to speed things up
-debug_validate       = yes
-
-# Reformat numbers in debug output for consistency.
-# If you have a lot of debug output (e.g. -debug_group _all)
-# this will slow things considerably.
-debug_output_tidy    = no
-
-# pixel sub-sampling for text tracks
-text_pixel_subsampling = 1
-# array or span - use 'span' if applying snuggle refinement
-text_snuggle_method    = array
-
-# restrict names of parameters?
-# if 'yes' then only certain named parameters are allowed within
-# blocks and option fields for data
-#
-# if 'no' then you can define parameters with any name what-so-ever,
-# useful if you wish to define states or labels for your data
-#
-# e.g. hs1 10 20 0.5 paired=yes,special=no,myvar=0.5
-#
-# ordinarily, 'paired', 'special' and 'myvar' would not be allowed
-restrict_parameter_names = no
-
-# Unless set to 'yes', parameter names will be converted to lowercase
-case_sensitive_parameter_names = no
-
-# The location of configuration and data files will be guessed if
-# (a) configuration file is not specified
-# (b) data file paths are relative
-# Circos will look in the following locations, where
-# SCRIPTPATH is the location of the 'circos' script (e.g. /usr/local/bin) and
-# CWD is the current directory (where the 'circos' command was executed).
-# All paths under CWD will be scanned first, then under SCRIPTPATH.
-#
-# {CWD,SCRIPTPATH}/.
-# {CWD,SCRIPTPATH}/..
-# {CWD,SCRIPTPATH}/etc/
-# {CWD,SCRIPTPATH}/../etc
-# {CWD,SCRIPTPATH}/../../etc
-# {CWD,SCRIPTPATH}/data
-# {CWD,SCRIPTPATH}/../data
-# {CWD,SCRIPTPATH}/../../data
-#
-# If you would like to prepend this list with custom directories for
-# data files, enter them as a CSV list here
-# data_path = /home/martink/circos-tutorials
-# If the cache is static, it will always be used and will not be updated
-# unless it is deleted (use -color_cache_rebuild on the command line).
-# Otherwise, the cache will be updated if
-#  - config file is newer than cache file
-#  - list of colors in config file is different than in cache file
-color_cache_static = yes
-color_cache_file   = circos.colorlist
-color_lists_use    = yes
-# if the directory is not defined, then the system will guess a temporary
-# directory compatible with your operating system (using File::Temp)
-# color_cache_dir    = /tmp
-
-# Make some functions faster. This should always be 'yes' unless you
-# want things to run slowly or suspect deep issues.
-memoize = yes
-
-# This is a debugging flag and should be set to 'no' for regular use
-quit_on_dump = yes
-
-offsets = 0,0
-
-# Maximum number of image and data elements. If these are exceeded,
-# Circos will quit with an error. These values are arbitrary, but in
-# my experience images with significantly more data points than this
-# are uninterpretable.
-
-max_ticks            = 5000
-max_ideograms        = 200
-max_links            = 25000
-max_points_per_track = 25000
-
-# What to do when data is found for an ideogram that does not appear in the karyotype file.
-
-# Set to 'skip' or 'exit'
-undefined_ideogram = skip
-
-# Number of iterations for determining ideogram sizes when
-# relative scale is used.
-relative_scale_iterations = 10
-
-# min, max, average, mode             - based on scale statistics of ALL ideograms
-# minadj, maxadj, averageadj, modeadj - based on scale statistics of adjacent ideograms
-#
-# You can specify a fixed scale for spacing using a floating value
-#
-# e.g. relative_scale_spacing = 1.5
-relative_scale_spacing    = mode
-
-# What to do with out-of-range data. Either 'clip' or 'hide'
-data_out_of_range = clip
-
-# Track default directory
-track_defaults = etc/tracks
-
-# Use round brushes for elements with thickness greater than round_brush_min_thickness?
-round_brush_use           = yes
-round_brush_min_thickness = 5
-
-# Use anti aliasing, where possible? I've seen bugs in some gd libraries
-# that cause artefacts to appear when lines are anti-aliased. If your
-# image contains unexpected elements, turn aa off.
-anti_aliasing = yes
-
-# A parameter that must be set. Checks whether this file was imported.
-housekeeping = yes
+# Housekeeping parameters, which must be included
+# at the top level of the configuration.
+#
+# Don't adjust these, unless you know what you are doing, or
+# feel like experimenting
+
+anglestep       = 0.5
+minslicestep    = 10
+beziersamples   = 40 # bezier curves are drawn piece-wise
+                     # linear, with this many samples
+debug           = no
+warnings        = no
+imagemap        = no
+paranoid        = yes
+
+units_ok        = bupr
+units_nounit    = n
+
+# \t  tab
+# \s  any whitespace
+file_delim = \s
+# collapse adjacent whitespace
+# e.g. two spaces are treated as one, not as a missing field
+file_delim_collapse = yes
+
+# Record delimiter for parameter values that are lists, such as
+# hs1:0.25;hs2:0.10. By default, both ; and , are accepted
+#
+# e.g. hs1:0.25,hs2:0.10
+#      hs1:0.25;hs2:0.10
+list_record_delim = \s*[;,]\s*
+# Field delimiter specifies the assignment operator, e.g.
+list_field_delim  = \s*[:=]\s*]
+
+# Rule fields and other parameters accept var(VARIABLE) syntax
+# to reference parameters of data points. By default, if
+# VARIABLE does not exist, Circos quits with an error, unless
+# the skip parameter below is set.
+#
+# This feature is useful when you have data that don't always
+# have the same options. For example,
+#
+# chr1 10 20 a=10
+# chr1 50 60 b=10
+skip_missing_expression_vars = no
+
+# In old versions, data point parameters were referenced using _NAME_
+# syntax. This has been replaced with var(NAME). The _NAME_ syntax is
+# deprecated (for example, it will break when dealing with fields like
+# gene_a_1). If you must use it, set the parameter below.
+
+legacy_underline_expression_syntax = no
+
+# Magnification factor for text in SVG files.
+svg_font_scale = 1.3
+
+# default font - pick one of the keys from <fonts> block
+default_font   = default
+# default font name is used for SVG files for cases where
+# the font definition does not include a name
+# see etc/fonts.conf for details
+default_font_name  = Arial
+default_font_color = black
+
+# default color for cases when color is not specified
+default_color  = black
+
+<guides>
+thickness      = 1
+size           = 5
+type           = outline
+<object>
+all            = no
+ideogram       = no
+ideogram_label = no
+</object>
+<color>
+default = lblue
+text    = red
+</color>
+</guides>
+
+# Receive debug messages about actions
+#
+# Comma-separated list of one or more of the following
+#
+# summary   - top level indications of what's happening
+# chrfilter - ideogram filtering (parsing 'chromosomes' parameter)
+# conf      - configuration file
+# counter   - plot counters
+# spacing   - ideogram spacing
+# scale     - ideogram scaling
+# ideogram  - ideogram reporting
+# anglepos  - report angle positions for base pair coordinates
+# zoom      - zoom regions
+# layers    - specific plot z-layers
+# rules     - dynamic rules
+# text      - text tracks
+# heatmap   - detailed heatmap reports
+# brush     - brushes
+# color     - color allocation and definition
+# ticks     - tick marks and labels
+# timers    - some benchmark timings
+# cache     - caches
+# _all      - turn on all groups
+debug_group = summary
+
+# run length duration after which timing report is automatically
+# generated at the end of the run
+debug_auto_timer_report = 30
+
+debug_word_separator = " "
+debug_undef_text     = _undef_
+debug_empty_text     = _emptylist_
+
+# parameters passed to functions can be
+# validated to check consistency. turn this
+# off to speed things up
+debug_validate       = yes
+
+# Reformat numbers in debug output for consistency.
+# If you have a lot of debug output (e.g. -debug_group _all)
+# this will slow things considerably.
+debug_output_tidy    = no
+
+# pixel sub-sampling for text tracks
+text_pixel_subsampling = 1
+# array or span - use 'span' if applying snuggle refinement
+text_snuggle_method    = array
+
+# restrict names of parameters?
+# if 'yes' then only certain named parameters are allowed within
+# blocks and option fields for data
+#
+# if 'no' then you can define parameters with any name what-so-ever,
+# useful if you wish to define states or labels for your data
+#
+# e.g. hs1 10 20 0.5 paired=yes,special=no,myvar=0.5
+#
+# ordinarily, 'paired', 'special' and 'myvar' would not be allowed
+restrict_parameter_names = no
+
+# Unless set to 'yes', parameter names will be converted to lowercase
+case_sensitive_parameter_names = no
+
+# The location of configuration and data files will be guessed if
+# (a) configuration file is not specified
+# (b) data file paths are relative
+# Circos will look in the following locations, where
+# SCRIPTPATH is the location of the 'circos' script (e.g. /usr/local/bin) and
+# CWD is the current directory (where the 'circos' command was executed).
+# All paths under CWD will be scanned first, then under SCRIPTPATH.
+#
+# {CWD,SCRIPTPATH}/.
+# {CWD,SCRIPTPATH}/..
+# {CWD,SCRIPTPATH}/etc/
+# {CWD,SCRIPTPATH}/../etc
+# {CWD,SCRIPTPATH}/../../etc
+# {CWD,SCRIPTPATH}/data
+# {CWD,SCRIPTPATH}/../data
+# {CWD,SCRIPTPATH}/../../data
+#
+# If you would like to prepend this list with custom directories for
+# data files, enter them as a CSV list here
+# data_path = /home/martink/circos-tutorials
+# If the cache is static, it will always be used and will not be updated
+# unless it is deleted (use -color_cache_rebuild on the command line).
+# Otherwise, the cache will be updated if
+#  - config file is newer than cache file
+#  - list of colors in config file is different than in cache file
+color_cache_static = yes
+color_cache_file   = circos.colorlist
+color_lists_use    = yes
+# if the directory is not defined, then the system will guess a temporary
+# directory compatible with your operating system (using File::Temp)
+# color_cache_dir    = /tmp
+
+# Make some functions faster. This should always be 'yes' unless you
+# want things to run slowly or suspect deep issues.
+memoize = yes
+
+# This is a debugging flag and should be set to 'no' for regular use
+quit_on_dump = yes
+
+offsets = 0,0
+
+# Maximum number of image and data elements. If these are exceeded,
+# Circos will quit with an error. These values are arbitrary, but in
+# my experience images with significantly more data points than this
+# are uninterpretable.
+
+max_ticks            = 5000
+max_ideograms        = 200
+max_links            = 25000
+max_points_per_track = 25000
+
+# What to do when data is found for an ideogram that does not appear in the karyotype file.
+
+# Set to 'skip' or 'exit'
+undefined_ideogram = skip
+
+# Number of iterations for determining ideogram sizes when
+# relative scale is used.
+relative_scale_iterations = 10
+
+# min, max, average, mode             - based on scale statistics of ALL ideograms
+# minadj, maxadj, averageadj, modeadj - based on scale statistics of adjacent ideograms
+#
+# You can specify a fixed scale for spacing using a floating value
+#
+# e.g. relative_scale_spacing = 1.5
+relative_scale_spacing    = mode
+
+# What to do with out-of-range data. Either 'clip' or 'hide'
+data_out_of_range = clip
+
+# Track default directory
+track_defaults = etc/tracks
+
+# Use round brushes for elements with thickness greater than round_brush_min_thickness?
+round_brush_use           = yes
+round_brush_min_thickness = 5
+
+# Use anti aliasing, where possible? I've seen bugs in some gd libraries
+# that cause artefacts to appear when lines are anti-aliased. If your
+# image contains unexpected elements, turn aa off.
+anti_aliasing = yes
+
+# A parameter that must be set. Checks whether this file was imported.
+housekeeping = yes
--- a/report_clonality/circos/ideogram.conf	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/circos/ideogram.conf	Thu Feb 25 13:36:15 2021 +0000
@@ -1,37 +1,37 @@
-
-<ideogram>
-
-<spacing>
-
-default = 0.0025r
-
-</spacing>
-
-thickness        = 50p
-stroke_thickness = 0
-# ideogram border color
-stroke_color     = black
-fill             = yes
-# the default chromosome color is set here and any value
-# defined in the karyotype file overrides it
-fill_color       = black
-
-# fractional radius position of chromosome ideogram within image
-radius         = 0.85r
-show_label     = no
-label_font     = condensedbold
-label_radius   = 0.99r
-label_size     = 36
-
-# cytogenetic bands
-band_stroke_thickness = 2
-
-# show_bands determines whether the outline of cytogenetic bands
-# will be seen
-show_bands            = no
-# in order to fill the bands with the color defined in the karyotype
-# file you must set fill_bands
-fill_bands            = yes
-
-</ideogram>
-
+
+<ideogram>
+
+<spacing>
+
+default = 0.0025r
+
+</spacing>
+
+thickness        = 50p
+stroke_thickness = 0
+# ideogram border color
+stroke_color     = black
+fill             = yes
+# the default chromosome color is set here and any value
+# defined in the karyotype file overrides it
+fill_color       = black
+
+# fractional radius position of chromosome ideogram within image
+radius         = 0.85r
+show_label     = no
+label_font     = condensedbold
+label_radius   = 0.99r
+label_size     = 36
+
+# cytogenetic bands
+band_stroke_thickness = 2
+
+# show_bands determines whether the outline of cytogenetic bands
+# will be seen
+show_bands            = no
+# in order to fill the bands with the color defined in the karyotype
+# file you must set fill_bands
+fill_bands            = yes
+
+</ideogram>
+
--- a/report_clonality/circos/parse-table.conf	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/circos/parse-table.conf	Thu Feb 25 13:36:15 2021 +0000
@@ -1,391 +1,391 @@
-
-################################################################
-#
-# This is a fairly complicated configuration file. Take your time in
-# experimenting and adjust one thing at a time :)
-#
-################################################################
-
-max_col_num = 200
-max_row_num = 200
-
-# skip this many rows before reading in header and data
-skip_rows        = 0
-
-# is there a header line that identifies the columns?
-header           = yes
-
-# is there a row that specifies the order of columns in the image?
-# - if so, this must be the first line of the header
-# - if the line exists (col_order_row=yes), employ the use_col_order_row to toggle whether it is used
-col_order_row     = no
-use_col_order_row = no
-
-# is there a row that specifies the size of columns in the image?
-# - if so, this must be the next line of the header
-# - if the line exists (col_size_row=yes), employ the use_col_size_row to toggle whether it is used
-col_size_row     = no
-use_col_size_row = no
-
-# is there a row that specifies the color of each column segment in the image?
-# - if so, this must be the next line of the header
-# - if the line exists (col_color_row=yes), employ the use_col_color_row to toggle whether it is used
-col_color_row     = no
-use_col_color_row = no
-
-# is there a column that specifies the order of rows in the image?
-# - if so, this must be the first column
-# - if the line exists (row_order_col=yes), employ the use_row_order_col to toggle whether it is used
-row_order_col     = no
-use_row_order_col = no
-
-# is there a column that specifies the color of each row segment in the image?
-# - if so, this must be the second column
-# - if the line exists (row_color_col=yes), employ the use_row_color_col to toggle whether it is used
-row_color_col     = no
-use_row_color_col = no
-
-# if you do not have a column/row that explicitly defines order
-# of segments in the image, you can set this here. Use one (or more) of 
-# these values to specify how segments should be ordered.
-# - row_major (row segments first, then column)
-# - col_major (col segments first, then row)
-# - ascii     (asciibetic order)
-# - row_size  (total of rows for the segment - useful if the segment has both row and column contributions)
-# - col_size  (total of colums for the segment - useful if the segment has both row and column contributions)
-# - row_to_col_ratio (ratio of total of rows to columns for the segment)
-# - col_to_row_ratio (ratio of total of rows to columns for the segment)
-# - size_asc  (size, in ascending order)
-# - size_desc (size, in descending order)
-
-#segment_order = row_to_col_ratio,size_desc # col_major,size_desc
-#segment_order = size_desc
-segment_order = row_major,size_desc
-#segment_order = ascii
-#segment_order = file:etc/order-by-table-remapped.txt
-#segment_order  = size_desc,row_to_col_ratio
-segment_color_order = row_major,size_desc
-
-# values for segments can be normalized if the use_segment_normalization is set to yes
-use_segment_normalization = no
-
-# the normalization function can be one of the following, and is applied to
-# all values that correspond to the segment's label
-# total - sum of cell values for the segment label (row and col)
-# average - average of cell values for the segment label (row and col)
-# row_total, row_average - sum or average for cell values for the segment row
-# col_total, col_average - sum or average for cell values for the segment col
-# row_size, col_size, total_size - based on the optional size column (see col_size_row and row_size_col above)
-# VALUE - segments are scaled to a constant VALUE (e.g. 1000)
-segment_normalization_function = 1000
-
-# normalization can be performed by either altering the actual data values or
-# by applying a visual scaling of the segments. When 'value' is used, the data
-# is changed. When 'visual' is used, then a chromosomes_scale line is reported
-# by this script which you must include in circos.conf for the scaling to be applied
-segment_normalization_scheme   = value
-
-################################################################
-# placement of cell ribbons on row/column segments
-# 
-# for segments that share both column and row ribbons, the
-# order of ribbon position can be adjusted with placement_order
-
-placement_order = row,col # col,row or row,col
-
-# within the row/column ribbon bundle for each segment, 
-# ribbon_bundle_order determines how the ribbons will be
-# ordered
-# - size   - by value of the cell
-# - ascii  - sorted by destination label
-# - native - sorted by order of destination segment
-
-ribbon_bundle_order = native # size, ascii, native
-
-# reverse the position of links in table/row segments?
-
-reverse_rows    = no
-reverse_columns = no
-
-# values for cells with the same row/column name can be treated
-# independently. You can
-# show - show these cells and not filter them at all
-# hide - hide these cells from the image, but not resize the row/columns
-# remove - entirely remove these cells from the data set (equivalent to setting cells to missing value)
-intra_cell_handling = show
-
-# ribbon layering - order in which the ribbons are drawn on the image
-# size_asc  - ascending by ribbon size (small ribbons drawn first, therefore large ribbons will be at front)
-# size_desc - descending by ribbon size (large ribbons drawn first, therefore small ribbons will be at front)
-
-ribbon_layer_order = size_asc
-
-# if both (A,B)=x and (B,A)=y cells exist, you can choose to have the ribbon
-# ends sized variably so that ribbon at A has width x and at B has width y
-
-ribbon_variable = no
-ribbon_variable_intra_collapse = yes
-
-################################################################
-# cell value mapping allows you to remap the cell values using
-# any Perl expression that uses X as the cell value. For example,
-#
-# cell_remap_formula = log(X)
-#                    = sqrt(X)
-#                    = X/10
-#                    = X ? log(X) : 0
-#
-# This remapping takes place before any filters or scaling is applied. Its effect
-# is the same as remapping the cell values in the input file.
-
-use_cell_remap     = no
-cell_remap_formula = round(10*X)
-
-################################################################
-# scale your values with a power rule (useful if the range of values
-# is very large) to
-# - atten_large: attenuate large values and maintain visibility
-#   of ribbons corresponding to small values, or
-# - atten_small: attenuate small values to increase visibility
-#   of ribbons corresponding to large values
-#
-# given a value, v, and a maximum, m
-#
-# atten_small:
-#
-# v_new = m * ( exp(scale_factor * v / m) - 1 ) / ( exp(scale_factor) - 1 )
-#
-# atten_large:
-#
-# v_new = m * ( log(scale_factor * v ) ) / ( log(scale_factor * m ) )
-# 
-# essentially the values are remapped to a log-type scale 
-# with the range 0..m
-
-use_scaling    = no
-scaling_type   = atten_large
-scale_factor   = 1
-
-blank_means_missing = no
-missing_cell_value = -
-
-################################################################
-# Value cutoffs for cell values and ribbon formatting.
-#
-# You can toggle the visibility of ribbons for cells outside
-# a min/max range. You can define one or more of these cutoffs.
-# The cutoffs are applied to unscaled cell values.
-
-#cell_min_value      = 10
-#cell_min_percentile = 10
-#cell_max_value      = 100
-#cell_max_percentile = 100
-
-# For cell values that do not pass the min/max filters above,
-# you can specify whether they are hidden or removed. If the
-# parameter is not defined, "hide" will be assumed.
-# hide - cell values won't be shown, but row/col will not be resized
-# remove - entirely remove these cells from the data set (equivalent to setting cells to missing value)
-
-cutoff_cell_handling = hide
-
-# The color of ribbons is by default the color of the row segment from
-# which they originate. The block below allows you to remap the color
-# of the ribbons based on cell percentile values. There are two ways
-# to remap colors
-# 
-# - color_remap=yes, color_autoremap=no
-#   Uses <percentile> blocks to define the percentile values and associated
-#   color/stroke_color characteristics for ribbons. Percentile value defined
-#   in the block (e.g. <percentile 55>) is the max percentile value for
-#   cells associated with this block.
-# - color_remap=yes, color_autoremap=yes
-#   Uses colors associated with each percentile window of size
-#   percentile_sampling for each cell
-
-<linkcolor>
-color_source       = row
-percentile_source  = larger
-color_transparency = 1
-color_remap        = yes
-color_autoremap    = no
-
-<percentile 50>
-color = dgrey
-transparency = 5
-</percentile>
-
-<percentile 60>
-color = dgrey
-transparency = 5
-</percentile>
-
-<percentile 70>
-transparency = 1
-</percentile>
-
-<percentile 80>
-transparency = 1
-</percentile>
-
-<percentile 90>
-transparency = 1
-stroke_color = black
-stroke_thickness = 1p
-</percentile>
-
-<percentile 100>
-transparency = 1
-stroke_color = black
-stroke_thickness = 3p
-</percentile>
-
-</linkcolor>
-
-<linkparam>
-color = vdgrey
-#stroke_color = black
-#stroke_thickness = 1p
-</linkparam>
-
-# If you are using color_autoremap=yes above, then
-# define the percentile sampling window and 
-# the start/end HSV color values. Percentile window
-# colors are interpolated between this HSV pair.
-#
-# HSV = (hue saturation value) 
-# hue=(0..360) saturation=(0..1) value=(0..1) 
-
-percentile_sampling = 5
-
-# count - percentile based on counts
-# value - percentile based on value
-
-percentile_method = count
-
-# use all values or only unique values when
-# calculating percentiles
-percentile_unique_only = yes
-
-# use a function, f(X), to remap cell values when calculating percentiles
-# for the purpose of color mapping. This allows you to apply a remapping to how
-# colors are calculated, without actually changing the values. The remap
-# applies only if percentile_method=value
-
-# percentile_remap = sqrt(X)
-
-# Which cell value set to use for percentile color mapping
-# raw - original values
-# filtered - values that pass min/max filters
-# scaled - filtered values that have been scaled if use_scaling is set
-percentile_data_domain = raw
-
-<colors>
-h0 = 0
-s0 = 1
-v0 = 1
-h1 = 300
-s1 = 1
-v1 = 1
-</colors>
-
-# You can control the color and stroke of ribbons for each
-# quartile (q1, q2, q3, q4). Any values defined here will
-# overwrite colors determined by remapping. 
-#
-# For example, if you have a lot of cells and wish to attenuate
-# the visibility of ribbons associated with small values, you can
-# set cell_q1_color=vvlgrey,cell_q1_nostroke=yes to fade the
-# ribbons into the background.
-
-#cell_q1_color    = vvlgrey
-#cell_q2_color    = vlgrey
-#cell_q3_color    = lgrey
-#cell_q4_color    = red
-#cell_q1_nostroke = yes
-#cell_q2_nostroke = yes
-#cell_q3_nostroke = yes
-#cell_q4_nostroke = yes
-
-# cell value multiplier, required when all data is small (e.g. <1), in which
-# case set the multiplier to something like 1000 because Circos
-# works only with integer scales
-
-data_mult = 1
-
-################################################################
-# Segment labels can be optionally set to a size that is
-# proportional to the size of the segment. Set min/max size
-# values here. If this line is commented out, then the label
-# size is determined by the circos.conf file used to draw the image
-
-#segment_label_size_range       = 60,60
-
-# progression controls how fast the label size changes from
-# min to max (larger value of progression means values close to max
-# are achieved for smaller segments)
-
-segment_label_size_progression = 4
-
-segment_label_uppercase = no
-
-################################################################
-# Segment colors can be specified in the data file (in this
-# case use row_color_col and col_color_row), otherwise colors
-# are interpolated within an HSV range. Color interpolation can be
-# done in two ways: based on segment index (interpolation steps through
-# colors uniformly for each segment) and total size (interpolation
-# steps through colors in proportion to segment size).
-
-<segment_colors>
-interpolate_type = size # size or count
-h0 = 0
-s0 = 0.8
-v0 = 0.9
-h1 = 300
-s1 = 0.8
-v1 = 0.9
-</segment_colors>
-
-################################################################
-# Shorten the labels of segments. Specify whether to do this
-# with shorten_text=yes|no parameter and provide regular
-# expressions in string_replace which define the text to
-# replace. 
-
-shorten_text = yes
-
-<string_replace>
-IGH = 
-</string_replace>
-
-# exit on any error
-strict_sanity = yes
-
-################################################################
-# if the segment_prefix is set, then rows and columns will be
-# renamed to internal fields segment_prefix + DIGIT
-
-#segment_prefix  = id
-color_prefix = color
-
-################################################################
-# Delimiters
-
-# field delimiter regular expression
-# if this is not defined, any whitespace will be considered a delimiter
-field_delim = \s
-
-# collapse adjacent delimiters?
-field_delim_collapse = yes
-
-# remove any leading space in the input file
-# by default, this is on - if you set this to "no", make sure that you don't have any leading spaces in your table!
-strip_leading_space = yes
-
-# remove quotes and thousand separators - concatenate characters to remove
-#
-# e.g. to remove characters a b c set remove_cell_rx=abc
-# e.g. to remove characters " ' , set remove_cell_rx="',
-remove_cell_rx = "',
-
+
+################################################################
+#
+# This is a fairly complicated configuration file. Take your time in
+# experimenting and adjust one thing at a time :)
+#
+################################################################
+
+max_col_num = 200
+max_row_num = 200
+
+# skip this many rows before reading in header and data
+skip_rows        = 0
+
+# is there a header line that identifies the columns?
+header           = yes
+
+# is there a row that specifies the order of columns in the image?
+# - if so, this must be the first line of the header
+# - if the line exists (col_order_row=yes), employ the use_col_order_row to toggle whether it is used
+col_order_row     = no
+use_col_order_row = no
+
+# is there a row that specifies the size of columns in the image?
+# - if so, this must be the next line of the header
+# - if the line exists (col_size_row=yes), employ the use_col_size_row to toggle whether it is used
+col_size_row     = no
+use_col_size_row = no
+
+# is there a row that specifies the color of each column segment in the image?
+# - if so, this must be the next line of the header
+# - if the line exists (col_color_row=yes), employ the use_col_color_row to toggle whether it is used
+col_color_row     = no
+use_col_color_row = no
+
+# is there a column that specifies the order of rows in the image?
+# - if so, this must be the first column
+# - if the line exists (row_order_col=yes), employ the use_row_order_col to toggle whether it is used
+row_order_col     = no
+use_row_order_col = no
+
+# is there a column that specifies the color of each row segment in the image?
+# - if so, this must be the second column
+# - if the line exists (row_color_col=yes), employ the use_row_color_col to toggle whether it is used
+row_color_col     = no
+use_row_color_col = no
+
+# if you do not have a column/row that explicitly defines order
+# of segments in the image, you can set this here. Use one (or more) of 
+# these values to specify how segments should be ordered.
+# - row_major (row segments first, then column)
+# - col_major (col segments first, then row)
+# - ascii     (asciibetic order)
+# - row_size  (total of rows for the segment - useful if the segment has both row and column contributions)
+# - col_size  (total of colums for the segment - useful if the segment has both row and column contributions)
+# - row_to_col_ratio (ratio of total of rows to columns for the segment)
+# - col_to_row_ratio (ratio of total of rows to columns for the segment)
+# - size_asc  (size, in ascending order)
+# - size_desc (size, in descending order)
+
+#segment_order = row_to_col_ratio,size_desc # col_major,size_desc
+#segment_order = size_desc
+segment_order = row_major,size_desc
+#segment_order = ascii
+#segment_order = file:etc/order-by-table-remapped.txt
+#segment_order  = size_desc,row_to_col_ratio
+segment_color_order = row_major,size_desc
+
+# values for segments can be normalized if the use_segment_normalization is set to yes
+use_segment_normalization = no
+
+# the normalization function can be one of the following, and is applied to
+# all values that correspond to the segment's label
+# total - sum of cell values for the segment label (row and col)
+# average - average of cell values for the segment label (row and col)
+# row_total, row_average - sum or average for cell values for the segment row
+# col_total, col_average - sum or average for cell values for the segment col
+# row_size, col_size, total_size - based on the optional size column (see col_size_row and row_size_col above)
+# VALUE - segments are scaled to a constant VALUE (e.g. 1000)
+segment_normalization_function = 1000
+
+# normalization can be performed by either altering the actual data values or
+# by applying a visual scaling of the segments. When 'value' is used, the data
+# is changed. When 'visual' is used, then a chromosomes_scale line is reported
+# by this script which you must include in circos.conf for the scaling to be applied
+segment_normalization_scheme   = value
+
+################################################################
+# placement of cell ribbons on row/column segments
+# 
+# for segments that share both column and row ribbons, the
+# order of ribbon position can be adjusted with placement_order
+
+placement_order = row,col # col,row or row,col
+
+# within the row/column ribbon bundle for each segment, 
+# ribbon_bundle_order determines how the ribbons will be
+# ordered
+# - size   - by value of the cell
+# - ascii  - sorted by destination label
+# - native - sorted by order of destination segment
+
+ribbon_bundle_order = native # size, ascii, native
+
+# reverse the position of links in table/row segments?
+
+reverse_rows    = no
+reverse_columns = no
+
+# values for cells with the same row/column name can be treated
+# independently. You can
+# show - show these cells and not filter them at all
+# hide - hide these cells from the image, but not resize the row/columns
+# remove - entirely remove these cells from the data set (equivalent to setting cells to missing value)
+intra_cell_handling = show
+
+# ribbon layering - order in which the ribbons are drawn on the image
+# size_asc  - ascending by ribbon size (small ribbons drawn first, therefore large ribbons will be at front)
+# size_desc - descending by ribbon size (large ribbons drawn first, therefore small ribbons will be at front)
+
+ribbon_layer_order = size_asc
+
+# if both (A,B)=x and (B,A)=y cells exist, you can choose to have the ribbon
+# ends sized variably so that ribbon at A has width x and at B has width y
+
+ribbon_variable = no
+ribbon_variable_intra_collapse = yes
+
+################################################################
+# cell value mapping allows you to remap the cell values using
+# any Perl expression that uses X as the cell value. For example,
+#
+# cell_remap_formula = log(X)
+#                    = sqrt(X)
+#                    = X/10
+#                    = X ? log(X) : 0
+#
+# This remapping takes place before any filters or scaling is applied. Its effect
+# is the same as remapping the cell values in the input file.
+
+use_cell_remap     = no
+cell_remap_formula = round(10*X)
+
+################################################################
+# scale your values with a power rule (useful if the range of values
+# is very large) to
+# - atten_large: attenuate large values and maintain visibility
+#   of ribbons corresponding to small values, or
+# - atten_small: attenuate small values to increase visibility
+#   of ribbons corresponding to large values
+#
+# given a value, v, and a maximum, m
+#
+# atten_small:
+#
+# v_new = m * ( exp(scale_factor * v / m) - 1 ) / ( exp(scale_factor) - 1 )
+#
+# atten_large:
+#
+# v_new = m * ( log(scale_factor * v ) ) / ( log(scale_factor * m ) )
+# 
+# essentially the values are remapped to a log-type scale 
+# with the range 0..m
+
+use_scaling    = no
+scaling_type   = atten_large
+scale_factor   = 1
+
+blank_means_missing = no
+missing_cell_value = -
+
+################################################################
+# Value cutoffs for cell values and ribbon formatting.
+#
+# You can toggle the visibility of ribbons for cells outside
+# a min/max range. You can define one or more of these cutoffs.
+# The cutoffs are applied to unscaled cell values.
+
+#cell_min_value      = 10
+#cell_min_percentile = 10
+#cell_max_value      = 100
+#cell_max_percentile = 100
+
+# For cell values that do not pass the min/max filters above,
+# you can specify whether they are hidden or removed. If the
+# parameter is not defined, "hide" will be assumed.
+# hide - cell values won't be shown, but row/col will not be resized
+# remove - entirely remove these cells from the data set (equivalent to setting cells to missing value)
+
+cutoff_cell_handling = hide
+
+# The color of ribbons is by default the color of the row segment from
+# which they originate. The block below allows you to remap the color
+# of the ribbons based on cell percentile values. There are two ways
+# to remap colors
+# 
+# - color_remap=yes, color_autoremap=no
+#   Uses <percentile> blocks to define the percentile values and associated
+#   color/stroke_color characteristics for ribbons. Percentile value defined
+#   in the block (e.g. <percentile 55>) is the max percentile value for
+#   cells associated with this block.
+# - color_remap=yes, color_autoremap=yes
+#   Uses colors associated with each percentile window of size
+#   percentile_sampling for each cell
+
+<linkcolor>
+color_source       = row
+percentile_source  = larger
+color_transparency = 1
+color_remap        = yes
+color_autoremap    = no
+
+<percentile 50>
+color = dgrey
+transparency = 5
+</percentile>
+
+<percentile 60>
+color = dgrey
+transparency = 5
+</percentile>
+
+<percentile 70>
+transparency = 1
+</percentile>
+
+<percentile 80>
+transparency = 1
+</percentile>
+
+<percentile 90>
+transparency = 1
+stroke_color = black
+stroke_thickness = 1p
+</percentile>
+
+<percentile 100>
+transparency = 1
+stroke_color = black
+stroke_thickness = 3p
+</percentile>
+
+</linkcolor>
+
+<linkparam>
+color = vdgrey
+#stroke_color = black
+#stroke_thickness = 1p
+</linkparam>
+
+# If you are using color_autoremap=yes above, then
+# define the percentile sampling window and 
+# the start/end HSV color values. Percentile window
+# colors are interpolated between this HSV pair.
+#
+# HSV = (hue saturation value) 
+# hue=(0..360) saturation=(0..1) value=(0..1) 
+
+percentile_sampling = 5
+
+# count - percentile based on counts
+# value - percentile based on value
+
+percentile_method = count
+
+# use all values or only unique values when
+# calculating percentiles
+percentile_unique_only = yes
+
+# use a function, f(X), to remap cell values when calculating percentiles
+# for the purpose of color mapping. This allows you to apply a remapping to how
+# colors are calculated, without actually changing the values. The remap
+# applies only if percentile_method=value
+
+# percentile_remap = sqrt(X)
+
+# Which cell value set to use for percentile color mapping
+# raw - original values
+# filtered - values that pass min/max filters
+# scaled - filtered values that have been scaled if use_scaling is set
+percentile_data_domain = raw
+
+<colors>
+h0 = 0
+s0 = 1
+v0 = 1
+h1 = 300
+s1 = 1
+v1 = 1
+</colors>
+
+# You can control the color and stroke of ribbons for each
+# quartile (q1, q2, q3, q4). Any values defined here will
+# overwrite colors determined by remapping. 
+#
+# For example, if you have a lot of cells and wish to attenuate
+# the visibility of ribbons associated with small values, you can
+# set cell_q1_color=vvlgrey,cell_q1_nostroke=yes to fade the
+# ribbons into the background.
+
+#cell_q1_color    = vvlgrey
+#cell_q2_color    = vlgrey
+#cell_q3_color    = lgrey
+#cell_q4_color    = red
+#cell_q1_nostroke = yes
+#cell_q2_nostroke = yes
+#cell_q3_nostroke = yes
+#cell_q4_nostroke = yes
+
+# cell value multiplier, required when all data is small (e.g. <1), in which
+# case set the multiplier to something like 1000 because Circos
+# works only with integer scales
+
+data_mult = 1
+
+################################################################
+# Segment labels can be optionally set to a size that is
+# proportional to the size of the segment. Set min/max size
+# values here. If this line is commented out, then the label
+# size is determined by the circos.conf file used to draw the image
+
+#segment_label_size_range       = 60,60
+
+# progression controls how fast the label size changes from
+# min to max (larger value of progression means values close to max
+# are achieved for smaller segments)
+
+segment_label_size_progression = 4
+
+segment_label_uppercase = no
+
+################################################################
+# Segment colors can be specified in the data file (in this
+# case use row_color_col and col_color_row), otherwise colors
+# are interpolated within an HSV range. Color interpolation can be
+# done in two ways: based on segment index (interpolation steps through
+# colors uniformly for each segment) and total size (interpolation
+# steps through colors in proportion to segment size).
+
+<segment_colors>
+interpolate_type = size # size or count
+h0 = 0
+s0 = 0.8
+v0 = 0.9
+h1 = 300
+s1 = 0.8
+v1 = 0.9
+</segment_colors>
+
+################################################################
+# Shorten the labels of segments. Specify whether to do this
+# with shorten_text=yes|no parameter and provide regular
+# expressions in string_replace which define the text to
+# replace. 
+
+shorten_text = yes
+
+<string_replace>
+IGH = 
+</string_replace>
+
+# exit on any error
+strict_sanity = yes
+
+################################################################
+# if the segment_prefix is set, then rows and columns will be
+# renamed to internal fields segment_prefix + DIGIT
+
+#segment_prefix  = id
+color_prefix = color
+
+################################################################
+# Delimiters
+
+# field delimiter regular expression
+# if this is not defined, any whitespace will be considered a delimiter
+field_delim = \s
+
+# collapse adjacent delimiters?
+field_delim_collapse = yes
+
+# remove any leading space in the input file
+# by default, this is on - if you set this to "no", make sure that you don't have any leading spaces in your table!
+strip_leading_space = yes
+
+# remove quotes and thousand separators - concatenate characters to remove
+#
+# e.g. to remove characters a b c set remove_cell_rx=abc
+# e.g. to remove characters " ' , set remove_cell_rx="',
+remove_cell_rx = "',
+
--- a/report_clonality/circos/ticks.conf	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/circos/ticks.conf	Thu Feb 25 13:36:15 2021 +0000
@@ -1,65 +1,65 @@
-
-show_ticks          = no
-show_tick_labels    = no
-chrticklabels       = yes
-chrticklabelfont    = default
-
-grid_start         = dims(ideogram,radius_inner)-0.5r
-grid_end           = dims(ideogram,radius_outer)+100
-
-<ticks>
-skip_first_label     = no
-skip_last_label      = no
-radius               = dims(ideogram,radius_outer)
-label_offset     = 0p
-color = black
-
-<tick>
-spacing        = 5u
-spacing_type   = relative
-rspacing       = 0.1
-size           = 3p
-thickness      = 2p
-color          = dgrey
-show_label     = yes
-label_size     = 16p
-label_offset   = 3p
-label_relative = yes
-format         = %d
-grid           = yes
-grid_color     = dgrey
-grid_thickness = 1p
-suffix = %
-rmultiplier = 100
-offset = 40p
-</tick>
-
-<tick>
-spacing        = 50u
-size           = 3p
-thickness      = 2p
-color          = black
-show_label     = yes
-label_size     = 12p
-label_offset   = 3p
-format         = %d
-grid           = yes
-grid_color     = dgrey
-grid_thickness = 1p
-</tick>
-
-<tick>
-spacing        = 10u
-size           = 2p
-thickness      = 1p
-color          = black
-show_label     = no
-label_size     = 12p
-label_offset   = 3p
-format         = %d
-grid           = yes
-grid_color     = dgrey
-grid_thickness = 1p
-</tick>
-
-</ticks>
+
+show_ticks          = no
+show_tick_labels    = no
+chrticklabels       = yes
+chrticklabelfont    = default
+
+grid_start         = dims(ideogram,radius_inner)-0.5r
+grid_end           = dims(ideogram,radius_outer)+100
+
+<ticks>
+skip_first_label     = no
+skip_last_label      = no
+radius               = dims(ideogram,radius_outer)
+label_offset     = 0p
+color = black
+
+<tick>
+spacing        = 5u
+spacing_type   = relative
+rspacing       = 0.1
+size           = 3p
+thickness      = 2p
+color          = dgrey
+show_label     = yes
+label_size     = 16p
+label_offset   = 3p
+label_relative = yes
+format         = %d
+grid           = yes
+grid_color     = dgrey
+grid_thickness = 1p
+suffix = %
+rmultiplier = 100
+offset = 40p
+</tick>
+
+<tick>
+spacing        = 50u
+size           = 3p
+thickness      = 2p
+color          = black
+show_label     = yes
+label_size     = 12p
+label_offset   = 3p
+format         = %d
+grid           = yes
+grid_color     = dgrey
+grid_thickness = 1p
+</tick>
+
+<tick>
+spacing        = 10u
+size           = 2p
+thickness      = 1p
+color          = black
+show_label     = no
+label_size     = 12p
+label_offset   = 3p
+format         = %d
+grid           = yes
+grid_color     = dgrey
+grid_thickness = 1p
+</tick>
+
+</ticks>
--- a/report_clonality/genes.txt	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/genes.txt	Thu Feb 25 13:36:15 2021 +0000
@@ -1,3306 +1,3306 @@
-Species	IMGT.GENE.DB	locus	region	functional	chr.order
-Bos taurus functional	TRAJ1	TRA	J	TRUE	1
-Bos taurus functional	TRAJ10	TRA	J	TRUE	2
-Bos taurus functional	TRAJ11	TRA	J	TRUE	3
-Bos taurus non-functional	TRAJ12	TRA	J	FALSE	4
-Bos taurus functional	TRAJ13	TRA	J	TRUE	5
-Bos taurus functional	TRAJ14	TRA	J	TRUE	6
-Bos taurus functional	TRAJ15	TRA	J	TRUE	7
-Bos taurus functional	TRAJ16	TRA	J	TRUE	8
-Bos taurus functional	TRAJ17	TRA	J	TRUE	9
-Bos taurus functional	TRAJ18	TRA	J	TRUE	10
-Bos taurus functional	TRAJ19	TRA	J	TRUE	11
-Bos taurus functional	TRAJ2	TRA	J	TRUE	12
-Bos taurus functional	TRAJ20	TRA	J	TRUE	13
-Bos taurus functional	TRAJ21	TRA	J	TRUE	14
-Bos taurus functional	TRAJ22	TRA	J	TRUE	15
-Bos taurus functional	TRAJ23	TRA	J	TRUE	16
-Bos taurus functional	TRAJ24	TRA	J	TRUE	17
-Bos taurus functional	TRAJ25	TRA	J	TRUE	18
-Bos taurus functional	TRAJ26	TRA	J	TRUE	19
-Bos taurus non-functional	TRAJ27	TRA	J	FALSE	20
-Bos taurus functional	TRAJ28	TRA	J	TRUE	21
-Bos taurus functional	TRAJ29	TRA	J	TRUE	22
-Bos taurus functional	TRAJ3	TRA	J	TRUE	23
-Bos taurus non-functional	TRAJ30	TRA	J	FALSE	24
-Bos taurus functional	TRAJ31	TRA	J	TRUE	25
-Bos taurus functional	TRAJ32	TRA	J	TRUE	26
-Bos taurus functional	TRAJ33	TRA	J	TRUE	27
-Bos taurus functional	TRAJ34	TRA	J	TRUE	28
-Bos taurus functional	TRAJ35	TRA	J	TRUE	29
-Bos taurus functional	TRAJ36	TRA	J	TRUE	30
-Bos taurus functional	TRAJ37	TRA	J	TRUE	31
-Bos taurus functional	TRAJ38	TRA	J	TRUE	32
-Bos taurus functional	TRAJ39	TRA	J	TRUE	33
-Bos taurus non-functional	TRAJ4	TRA	J	FALSE	34
-Bos taurus functional	TRAJ40	TRA	J	TRUE	35
-Bos taurus functional	TRAJ41	TRA	J	TRUE	36
-Bos taurus functional	TRAJ42	TRA	J	TRUE	37
-Bos taurus functional	TRAJ43	TRA	J	TRUE	38
-Bos taurus functional	TRAJ44	TRA	J	TRUE	39
-Bos taurus functional	TRAJ45	TRA	J	TRUE	40
-Bos taurus functional	TRAJ46	TRA	J	TRUE	41
-Bos taurus non-functional	TRAJ47	TRA	J	FALSE	42
-Bos taurus functional	TRAJ48	TRA	J	TRUE	43
-Bos taurus functional	TRAJ49	TRA	J	TRUE	44
-Bos taurus functional	TRAJ5	TRA	J	TRUE	45
-Bos taurus functional	TRAJ50	TRA	J	TRUE	46
-Bos taurus functional	TRAJ51	TRA	J	TRUE	47
-Bos taurus non-functional	TRAJ52	TRA	J	FALSE	48
-Bos taurus functional	TRAJ6	TRA	J	TRUE	49
-Bos taurus functional	TRAJ7	TRA	J	TRUE	50
-Bos taurus functional	TRAJ8	TRA	J	TRUE	51
-Bos taurus functional	TRAJ9	TRA	J	TRUE	52
-Bos taurus functional	TRDD1	TRD	D	TRUE	53
-Bos taurus functional	TRDD2	TRD	D	TRUE	54
-Bos taurus functional	TRDD3	TRD	D	TRUE	55
-Bos taurus functional	TRDD4	TRD	D	TRUE	56
-Bos taurus functional	TRDD5	TRD	D	TRUE	57
-Bos taurus functional	TRDJ1	TRD	J	TRUE	58
-Bos taurus functional	TRDJ2	TRD	J	TRUE	59
-Bos taurus functional	TRDJ3	TRD	J	TRUE	60
-Bos taurus functional	TRDV1S1	TRD	V	TRUE	61
-Bos taurus functional	TRDV1S10	TRD	V	TRUE	62
-Bos taurus functional	TRDV1S11	TRD	V	TRUE	63
-Bos taurus functional	TRDV1S12	TRD	V	TRUE	64
-Bos taurus functional	TRDV1S13-1	TRD	V	TRUE	65
-Bos taurus functional	TRDV1S13-2	TRD	V	TRUE	66
-Bos taurus functional	TRDV1S14	TRD	V	TRUE	67
-Bos taurus functional	TRDV1S15-1	TRD	V	TRUE	68
-Bos taurus functional	TRDV1S15-2	TRD	V	TRUE	69
-Bos taurus functional	TRDV1S16	TRD	V	TRUE	70
-Bos taurus functional	TRDV1S17	TRD	V	TRUE	71
-Bos taurus functional	TRDV1S18-1	TRD	V	TRUE	72
-Bos taurus functional	TRDV1S18-2	TRD	V	TRUE	73
-Bos taurus functional	TRDV1S19	TRD	V	TRUE	74
-Bos taurus non-functional	TRDV1S2-1	TRD	V	FALSE	75
-Bos taurus non-functional	TRDV1S2-2	TRD	V	FALSE	76
-Bos taurus functional	TRDV1S20	TRD	V	TRUE	77
-Bos taurus functional	TRDV1S21-1	TRD	V	TRUE	78
-Bos taurus functional	TRDV1S21-2	TRD	V	TRUE	79
-Bos taurus non-functional	TRDV1S22	TRD	V	FALSE	80
-Bos taurus functional	TRDV1S23	TRD	V	TRUE	81
-Bos taurus functional	TRDV1S24	TRD	V	TRUE	82
-Bos taurus non-functional	TRDV1S25-1	TRD	V	FALSE	83
-Bos taurus non-functional	TRDV1S25-2	TRD	V	FALSE	84
-Bos taurus functional	TRDV1S26	TRD	V	TRUE	85
-Bos taurus functional	TRDV1S27-1	TRD	V	TRUE	86
-Bos taurus functional	TRDV1S27-2	TRD	V	TRUE	87
-Bos taurus functional	TRDV1S28	TRD	V	TRUE	88
-Bos taurus functional	TRDV1S29	TRD	V	TRUE	89
-Bos taurus functional	TRDV1S3	TRD	V	TRUE	90
-Bos taurus functional	TRDV1S30	TRD	V	TRUE	91
-Bos taurus functional	TRDV1S31	TRD	V	TRUE	92
-Bos taurus functional	TRDV1S32	TRD	V	TRUE	93
-Bos taurus functional	TRDV1S33	TRD	V	TRUE	94
-Bos taurus non-functional	TRDV1S34	TRD	V	FALSE	95
-Bos taurus functional	TRDV1S35	TRD	V	TRUE	96
-Bos taurus functional	TRDV1S36	TRD	V	TRUE	97
-Bos taurus functional	TRDV1S37	TRD	V	TRUE	98
-Bos taurus functional	TRDV1S38	TRD	V	TRUE	99
-Bos taurus functional	TRDV1S39	TRD	V	TRUE	100
-Bos taurus functional	TRDV1S4-1	TRD	V	TRUE	101
-Bos taurus functional	TRDV1S4-2	TRD	V	TRUE	102
-Bos taurus functional	TRDV1S4-3	TRD	V	TRUE	103
-Bos taurus functional	TRDV1S40	TRD	V	TRUE	104
-Bos taurus functional	TRDV1S41	TRD	V	TRUE	105
-Bos taurus functional	TRDV1S42	TRD	V	TRUE	106
-Bos taurus functional	TRDV1S43	TRD	V	TRUE	107
-Bos taurus non-functional	TRDV1S44	TRD	V	FALSE	108
-Bos taurus functional	TRDV1S45	TRD	V	TRUE	109
-Bos taurus functional	TRDV1S46	TRD	V	TRUE	110
-Bos taurus functional	TRDV1S47-1	TRD	V	TRUE	111
-Bos taurus functional	TRDV1S47-2	TRD	V	TRUE	112
-Bos taurus functional	TRDV1S48	TRD	V	TRUE	113
-Bos taurus functional	TRDV1S49	TRD	V	TRUE	114
-Bos taurus functional	TRDV1S5-1	TRD	V	TRUE	115
-Bos taurus functional	TRDV1S5-2	TRD	V	TRUE	116
-Bos taurus functional	TRDV1S50	TRD	V	TRUE	117
-Bos taurus functional	TRDV1S51-1	TRD	V	TRUE	118
-Bos taurus functional	TRDV1S51-2	TRD	V	TRUE	119
-Bos taurus functional	TRDV1S52-1	TRD	V	TRUE	120
-Bos taurus functional	TRDV1S52-2	TRD	V	TRUE	121
-Bos taurus non-functional	TRDV1S53	TRD	V	FALSE	122
-Bos taurus non-functional	TRDV1S54	TRD	V	FALSE	123
-Bos taurus non-functional	TRDV1S55	TRD	V	FALSE	124
-Bos taurus non-functional	TRDV1S56	TRD	V	FALSE	125
-Bos taurus functional	TRDV1S6-1	TRD	V	TRUE	126
-Bos taurus functional	TRDV1S6-2	TRD	V	TRUE	127
-Bos taurus functional	TRDV1S7-1	TRD	V	TRUE	128
-Bos taurus functional	TRDV1S7-2	TRD	V	TRUE	129
-Bos taurus functional	TRDV1S8	TRD	V	TRUE	130
-Bos taurus non-functional	TRDV1S9	TRD	V	FALSE	131
-Bos taurus functional	TRDV2S1	TRD	V	TRUE	132
-Bos taurus functional	TRDV2S2	TRD	V	TRUE	133
-Bos taurus functional	TRDV2S3	TRD	V	TRUE	134
-Bos taurus non-functional	TRDV2S4	TRD	V	FALSE	135
-Bos taurus functional	TRDV3S1	TRD	V	TRUE	136
-Bos taurus functional	TRDV3S2	TRD	V	TRUE	137
-Bos taurus non-functional	TRDV3S3	TRD	V	FALSE	138
-Bos taurus functional	TRDV4	TRD	V	TRUE	139
-Bos taurus non-functional	TRDV5	TRD	V	FALSE	140
-Bos taurus functional	TRGJ1-1	TRG	J	TRUE	141
-Bos taurus functional	TRGJ1-2	TRG	J	TRUE	142
-Bos taurus functional	TRGJ2-1	TRG	J	TRUE	143
-Bos taurus functional	TRGJ2-2	TRG	J	TRUE	144
-Bos taurus functional	TRGJ3-1	TRG	J	TRUE	145
-Bos taurus functional	TRGJ4-1	TRG	J	TRUE	146
-Bos taurus functional	TRGJ4-2	TRG	J	TRUE	147
-Bos taurus functional	TRGJ5-1	TRG	J	TRUE	148
-Bos taurus functional	TRGJ6-1	TRG	J	TRUE	149
-Bos taurus functional	TRGV1-1	TRG	V	TRUE	150
-Bos taurus functional	TRGV10-1	TRG	V	TRUE	151
-Bos taurus functional	TRGV2-1	TRG	V	TRUE	152
-Bos taurus functional	TRGV3-1	TRG	V	TRUE	153
-Bos taurus functional	TRGV3-2	TRG	V	TRUE	154
-Bos taurus non-functional	TRGV4-1	TRG	V	FALSE	155
-Bos taurus non-functional	TRGV5-1	TRG	V	FALSE	156
-Bos taurus non-functional	TRGV5-2	TRG	V	FALSE	157
-Bos taurus functional	TRGV6-1	TRG	V	TRUE	158
-Bos taurus functional	TRGV6-2	TRG	V	TRUE	159
-Bos taurus functional	TRGV7-1	TRG	V	TRUE	160
-Bos taurus functional	TRGV8-1	TRG	V	TRUE	161
-Bos taurus functional	TRGV8-2	TRG	V	TRUE	162
-Bos taurus functional	TRGV8-3	TRG	V	TRUE	163
-Bos taurus functional	TRGV8-4	TRG	V	TRUE	164
-Bos taurus functional	TRGV9-1	TRG	V	TRUE	165
-Bos taurus functional	TRGV9-2	TRG	V	TRUE	166
-Camelus dromedarius functional	TRDV1S1	TRD	V	TRUE	167
-Camelus dromedarius functional	TRDV1S2	TRD	V	TRUE	168
-Camelus dromedarius functional	TRDV1S3	TRD	V	TRUE	169
-Camelus dromedarius functional	TRDV1S4	TRD	V	TRUE	170
-Camelus dromedarius functional	TRDV1S5	TRD	V	TRUE	171
-Camelus dromedarius functional	TRDV1S6	TRD	V	TRUE	172
-Camelus dromedarius functional	TRDV2S1	TRD	V	TRUE	173
-Camelus dromedarius functional	TRDV2S2	TRD	V	TRUE	174
-Camelus dromedarius functional	TRDV2S3	TRD	V	TRUE	175
-Camelus dromedarius functional	TRDV4S1	TRD	V	TRUE	176
-Camelus dromedarius functional	TRGJ1-1	TRG	J	TRUE	177
-Camelus dromedarius non-functional	TRGJ2-1	TRG	J	FALSE	178
-Camelus dromedarius functional	TRGJ2-2	TRG	J	TRUE	179
-Camelus dromedarius functional	TRGV1	TRG	V	TRUE	180
-Camelus dromedarius functional	TRGV2	TRG	V	TRUE	181
-Canis lupus familiaris functional	TRBD1	TRB	D	TRUE	182
-Canis lupus familiaris functional	TRBD2	TRB	D	TRUE	183
-Canis lupus familiaris functional	TRBJ1-1	TRB	J	TRUE	184
-Canis lupus familiaris functional	TRBJ1-2	TRB	J	TRUE	185
-Canis lupus familiaris non-functional	TRBJ1-3	TRB	J	FALSE	186
-Canis lupus familiaris functional	TRBJ1-4	TRB	J	TRUE	187
-Canis lupus familiaris functional	TRBJ1-5	TRB	J	TRUE	188
-Canis lupus familiaris functional	TRBJ1-6	TRB	J	TRUE	189
-Canis lupus familiaris non-functional	TRBJ2-1	TRB	J	FALSE	190
-Canis lupus familiaris functional	TRBJ2-2	TRB	J	TRUE	191
-Canis lupus familiaris functional	TRBJ2-3	TRB	J	TRUE	192
-Canis lupus familiaris non-functional	TRBJ2-4	TRB	J	FALSE	193
-Canis lupus familiaris functional	TRBJ2-5	TRB	J	TRUE	194
-Canis lupus familiaris functional	TRBJ2-6	TRB	J	TRUE	195
-Canis lupus familiaris functional	TRBV1	TRB	V	TRUE	196
-Canis lupus familiaris functional	TRBV10	TRB	V	TRUE	197
-Canis lupus familiaris non-functional	TRBV11	TRB	V	FALSE	198
-Canis lupus familiaris non-functional	TRBV12-1	TRB	V	FALSE	199
-Canis lupus familiaris functional	TRBV12-2	TRB	V	TRUE	200
-Canis lupus familiaris non-functional	TRBV15	TRB	V	FALSE	201
-Canis lupus familiaris functional	TRBV16	TRB	V	TRUE	202
-Canis lupus familiaris functional	TRBV18	TRB	V	TRUE	203
-Canis lupus familiaris non-functional	TRBV19	TRB	V	FALSE	204
-Canis lupus familiaris non-functional	TRBV2-1	TRB	V	FALSE	205
-Canis lupus familiaris non-functional	TRBV2-2	TRB	V	FALSE	206
-Canis lupus familiaris non-functional	TRBV2-3	TRB	V	FALSE	207
-Canis lupus familiaris functional	TRBV20	TRB	V	TRUE	208
-Canis lupus familiaris non-functional	TRBV21	TRB	V	FALSE	209
-Canis lupus familiaris functional	TRBV22	TRB	V	TRUE	210
-Canis lupus familiaris functional	TRBV24	TRB	V	TRUE	211
-Canis lupus familiaris functional	TRBV25	TRB	V	TRUE	212
-Canis lupus familiaris non-functional	TRBV26	TRB	V	FALSE	213
-Canis lupus familiaris non-functional	TRBV27	TRB	V	FALSE	214
-Canis lupus familiaris non-functional	TRBV28	TRB	V	FALSE	215
-Canis lupus familiaris functional	TRBV29	TRB	V	TRUE	216
-Canis lupus familiaris functional	TRBV3-1	TRB	V	TRUE	217
-Canis lupus familiaris functional	TRBV3-2	TRB	V	TRUE	218
-Canis lupus familiaris non-functional	TRBV3-3	TRB	V	FALSE	219
-Canis lupus familiaris functional	TRBV30	TRB	V	TRUE	220
-Canis lupus familiaris functional	TRBV4-1	TRB	V	TRUE	221
-Canis lupus familiaris functional	TRBV4-2	TRB	V	TRUE	222
-Canis lupus familiaris functional	TRBV4-3	TRB	V	TRUE	223
-Canis lupus familiaris non-functional	TRBV5-1	TRB	V	FALSE	224
-Canis lupus familiaris functional	TRBV5-2	TRB	V	TRUE	225
-Canis lupus familiaris non-functional	TRBV5-3	TRB	V	FALSE	226
-Canis lupus familiaris functional	TRBV5-4	TRB	V	TRUE	227
-Canis lupus familiaris non-functional	TRBV6	TRB	V	FALSE	228
-Canis lupus familiaris functional	TRBV7	TRB	V	TRUE	229
-Canis lupus familiaris non-functional	TRBV8	TRB	V	FALSE	230
-Canis lupus familiaris non-functional	TRGJ1-1	TRG	J	FALSE	231
-Canis lupus familiaris functional	TRGJ1-2	TRG	J	TRUE	232
-Canis lupus familiaris non-functional	TRGJ2-1	TRG	J	FALSE	233
-Canis lupus familiaris functional	TRGJ2-2	TRG	J	TRUE	234
-Canis lupus familiaris non-functional	TRGJ3-1	TRG	J	FALSE	235
-Canis lupus familiaris non-functional	TRGJ3-2	TRG	J	FALSE	236
-Canis lupus familiaris non-functional	TRGJ4-1	TRG	J	FALSE	237
-Canis lupus familiaris functional	TRGJ4-2	TRG	J	TRUE	238
-Canis lupus familiaris non-functional	TRGJ5-1	TRG	J	FALSE	239
-Canis lupus familiaris functional	TRGJ5-2	TRG	J	TRUE	240
-Canis lupus familiaris functional	TRGJ6-1	TRG	J	TRUE	241
-Canis lupus familiaris non-functional	TRGJ6-2	TRG	J	FALSE	242
-Canis lupus familiaris non-functional	TRGJ7-1	TRG	J	FALSE	243
-Canis lupus familiaris functional	TRGJ7-2	TRG	J	TRUE	244
-Canis lupus familiaris functional	TRGJ8-1	TRG	J	TRUE	245
-Canis lupus familiaris non-functional	TRGJ8-2	TRG	J	FALSE	246
-Canis lupus familiaris non-functional	TRGV1-1	TRG	V	FALSE	247
-Canis lupus familiaris functional	TRGV2-1	TRG	V	TRUE	248
-Canis lupus familiaris functional	TRGV2-2	TRG	V	TRUE	249
-Canis lupus familiaris functional	TRGV2-3	TRG	V	TRUE	250
-Canis lupus familiaris functional	TRGV2-4	TRG	V	TRUE	251
-Canis lupus familiaris non-functional	TRGV3-1	TRG	V	FALSE	252
-Canis lupus familiaris non-functional	TRGV3-2	TRG	V	FALSE	253
-Canis lupus familiaris non-functional	TRGV3-3	TRG	V	FALSE	254
-Canis lupus familiaris functional	TRGV4-1	TRG	V	TRUE	255
-Canis lupus familiaris non-functional	TRGV5-1	TRG	V	FALSE	256
-Canis lupus familiaris functional	TRGV5-2	TRG	V	TRUE	257
-Canis lupus familiaris non-functional	TRGV6-1	TRG	V	FALSE	258
-Canis lupus familiaris non-functional	TRGV7-1	TRG	V	FALSE	259
-Canis lupus familiaris functional	TRGV7-2	TRG	V	TRUE	260
-Canis lupus familiaris functional	TRGV7-3	TRG	V	TRUE	261
-Canis lupus familiaris non-functional	TRGV8-1	TRG	V	FALSE	262
-Danio rerio non-functional	IGHD	IGH	D	FALSE	263
-Danio rerio functional	IGHD1-1	IGH	D	TRUE	264
-Danio rerio functional	IGHD1-2	IGH	D	TRUE	265
-Danio rerio functional	IGHD2-1	IGH	D	TRUE	266
-Danio rerio functional	IGHD2-2	IGH	D	TRUE	267
-Danio rerio functional	IGHD2-3	IGH	D	TRUE	268
-Danio rerio functional	IGHD2-4	IGH	D	TRUE	269
-Danio rerio functional	IGHD2-5	IGH	D	TRUE	270
-Danio rerio functional	IGHJ1-1	IGH	J	TRUE	271
-Danio rerio functional	IGHJ1-2	IGH	J	TRUE	272
-Danio rerio functional	IGHJ2-1	IGH	J	TRUE	273
-Danio rerio functional	IGHJ2-2	IGH	J	TRUE	274
-Danio rerio functional	IGHJ2-3	IGH	J	TRUE	275
-Danio rerio functional	IGHJ2-4	IGH	J	TRUE	276
-Danio rerio functional	IGHJ2-5	IGH	J	TRUE	277
-Danio rerio functional	IGHV1-1	IGH	V	TRUE	278
-Danio rerio functional	IGHV1-2	IGH	V	TRUE	279
-Danio rerio functional	IGHV1-3	IGH	V	TRUE	280
-Danio rerio functional	IGHV1-4	IGH	V	TRUE	281
-Danio rerio functional	IGHV1-5	IGH	V	TRUE	282
-Danio rerio functional	IGHV10-1	IGH	V	TRUE	283
-Danio rerio functional	IGHV11-1	IGH	V	TRUE	284
-Danio rerio functional	IGHV11-2	IGH	V	TRUE	285
-Danio rerio non-functional	IGHV12-1	IGH	V	FALSE	286
-Danio rerio functional	IGHV13-2	IGH	V	TRUE	287
-Danio rerio functional	IGHV14-1	IGH	V	TRUE	288
-Danio rerio functional	IGHV2-1	IGH	V	TRUE	289
-Danio rerio functional	IGHV2-2	IGH	V	TRUE	290
-Danio rerio functional	IGHV2-3	IGH	V	TRUE	291
-Danio rerio functional	IGHV3-2	IGH	V	TRUE	292
-Danio rerio functional	IGHV4-1	IGH	V	TRUE	293
-Danio rerio functional	IGHV4-2	IGH	V	TRUE	294
-Danio rerio functional	IGHV4-3	IGH	V	TRUE	295
-Danio rerio functional	IGHV4-5	IGH	V	TRUE	296
-Danio rerio functional	IGHV4-6	IGH	V	TRUE	297
-Danio rerio functional	IGHV4-7	IGH	V	TRUE	298
-Danio rerio functional	IGHV4-8	IGH	V	TRUE	299
-Danio rerio functional	IGHV4-9	IGH	V	TRUE	300
-Danio rerio functional	IGHV5-1	IGH	V	TRUE	301
-Danio rerio non-functional	IGHV5-2	IGH	V	FALSE	302
-Danio rerio functional	IGHV5-3	IGH	V	TRUE	303
-Danio rerio non-functional	IGHV5-4	IGH	V	FALSE	304
-Danio rerio non-functional	IGHV5-5	IGH	V	FALSE	305
-Danio rerio functional	IGHV5-7	IGH	V	TRUE	306
-Danio rerio non-functional	IGHV5-8	IGH	V	FALSE	307
-Danio rerio functional	IGHV6-1	IGH	V	TRUE	308
-Danio rerio non-functional	IGHV6-2	IGH	V	FALSE	309
-Danio rerio functional	IGHV7-1	IGH	V	TRUE	310
-Danio rerio functional	IGHV8-1	IGH	V	TRUE	311
-Danio rerio functional	IGHV8-2	IGH	V	TRUE	312
-Danio rerio functional	IGHV8-3	IGH	V	TRUE	313
-Danio rerio functional	IGHV8-4	IGH	V	TRUE	314
-Danio rerio functional	IGHV9-1	IGH	V	TRUE	315
-Danio rerio functional	IGHV9-2	IGH	V	TRUE	316
-Danio rerio functional	IGHV9-3	IGH	V	TRUE	317
-Danio rerio functional	IGHV9-4	IGH	V	TRUE	318
-Danio rerio functional	IGIJ1	IGI	J	TRUE	319
-Danio rerio non-functional	IGIJ2	IGI	J	FALSE	320
-Danio rerio functional	IGIJ3	IGI	J	TRUE	321
-Danio rerio non-functional	IGIJ4	IGI	J	FALSE	322
-Danio rerio functional	IGIJ5	IGI	J	TRUE	323
-Danio rerio non-functional	IGIJ6S1	IGI	J	FALSE	324
-Danio rerio non-functional	IGIJ7S1	IGI	J	FALSE	325
-Danio rerio non-functional	IGIJ8S1	IGI	J	FALSE	326
-Danio rerio non-functional	IGIV1-1	IGI	V	FALSE	327
-Danio rerio functional	IGIV1-2	IGI	V	TRUE	328
-Danio rerio non-functional	IGIV2	IGI	V	FALSE	329
-Danio rerio functional	IGIV3-1	IGI	V	TRUE	330
-Danio rerio non-functional	IGIV3-2	IGI	V	FALSE	331
-Danio rerio functional	IGIV3-3	IGI	V	TRUE	332
-Danio rerio non-functional	IGIV4-1	IGI	V	FALSE	333
-Danio rerio non-functional	IGIV4-2	IGI	V	FALSE	334
-Danio rerio non-functional	IGIV6S1	IGI	V	FALSE	335
-Danio rerio non-functional	IGIV6S2	IGI	V	FALSE	336
-Danio rerio non-functional	IGIV7S1	IGI	V	FALSE	337
-Danio rerio non-functional	IGIV7S2	IGI	V	FALSE	338
-Danio rerio non-functional	IGIV8S1	IGI	V	FALSE	339
-Homo sapiens functional	CD1D	CD1	D	TRUE	340
-Homo sapiens functional	IGHD	IGH	D	TRUE	341
-Homo sapiens functional	IGHD1-1	IGH	D	TRUE	342
-Homo sapiens non-functional	IGHD1-14	IGH	D	FALSE	343
-Homo sapiens functional	IGHD1-20	IGH	D	TRUE	344
-Homo sapiens functional	IGHD1-26	IGH	D	TRUE	345
-Homo sapiens functional	IGHD1-7	IGH	D	TRUE	346
-Homo sapiens non-functional	IGHD1/OR15-1a	IGH	D	FALSE	347
-Homo sapiens non-functional	IGHD1/OR15-1b	IGH	D	FALSE	348
-Homo sapiens functional	IGHD2-15	IGH	D	TRUE	349
-Homo sapiens functional	IGHD2-2	IGH	D	TRUE	350
-Homo sapiens functional	IGHD2-21	IGH	D	TRUE	351
-Homo sapiens functional	IGHD2-8	IGH	D	TRUE	352
-Homo sapiens non-functional	IGHD2/OR15-2a	IGH	D	FALSE	353
-Homo sapiens non-functional	IGHD2/OR15-2b	IGH	D	FALSE	354
-Homo sapiens functional	IGHD3-10	IGH	D	TRUE	355
-Homo sapiens functional	IGHD3-16	IGH	D	TRUE	356
-Homo sapiens functional	IGHD3-22	IGH	D	TRUE	357
-Homo sapiens functional	IGHD3-3	IGH	D	TRUE	358
-Homo sapiens functional	IGHD3-9	IGH	D	TRUE	359
-Homo sapiens non-functional	IGHD3/OR15-3a	IGH	D	FALSE	360
-Homo sapiens non-functional	IGHD3/OR15-3b	IGH	D	FALSE	361
-Homo sapiens non-functional	IGHD4-11	IGH	D	FALSE	362
-Homo sapiens functional	IGHD4-17	IGH	D	TRUE	363
-Homo sapiens non-functional	IGHD4-23	IGH	D	FALSE	364
-Homo sapiens functional	IGHD4-4	IGH	D	TRUE	365
-Homo sapiens non-functional	IGHD4/OR15-4a	IGH	D	FALSE	366
-Homo sapiens non-functional	IGHD4/OR15-4b	IGH	D	FALSE	367
-Homo sapiens functional	IGHD5-12	IGH	D	TRUE	368
-Homo sapiens functional	IGHD5-18	IGH	D	TRUE	369
-Homo sapiens non-functional	IGHD5-24	IGH	D	FALSE	370
-Homo sapiens functional	IGHD5-5	IGH	D	TRUE	371
-Homo sapiens non-functional	IGHD5/OR15-5a	IGH	D	FALSE	372
-Homo sapiens non-functional	IGHD5/OR15-5b	IGH	D	FALSE	373
-Homo sapiens functional	IGHD6-13	IGH	D	TRUE	374
-Homo sapiens functional	IGHD6-19	IGH	D	TRUE	375
-Homo sapiens functional	IGHD6-25	IGH	D	TRUE	376
-Homo sapiens functional	IGHD6-6	IGH	D	TRUE	377
-Homo sapiens functional	IGHD7-27	IGH	D	TRUE	378
-Homo sapiens functional	IGHJ1	IGH	J	TRUE	379
-Homo sapiens non-functional	IGHJ1P	IGH	J	FALSE	380
-Homo sapiens functional	IGHJ2	IGH	J	TRUE	381
-Homo sapiens non-functional	IGHJ2P	IGH	J	FALSE	382
-Homo sapiens functional	IGHJ3	IGH	J	TRUE	383
-Homo sapiens non-functional	IGHJ3P	IGH	J	FALSE	384
-Homo sapiens functional	IGHJ4	IGH	J	TRUE	385
-Homo sapiens functional	IGHJ5	IGH	J	TRUE	386
-Homo sapiens functional	IGHJ6	IGH	J	TRUE	387
-Homo sapiens non-functional	IGHV(II)-1-1	IGH	V	FALSE	388
-Homo sapiens non-functional	IGHV(II)-15-1	IGH	V	FALSE	389
-Homo sapiens non-functional	IGHV(II)-20-1	IGH	V	FALSE	390
-Homo sapiens non-functional	IGHV(II)-22-1	IGH	V	FALSE	391
-Homo sapiens non-functional	IGHV(II)-23-1	IGH	V	FALSE	392
-Homo sapiens non-functional	IGHV(II)-23-2	IGH	V	FALSE	393
-Homo sapiens non-functional	IGHV(II)-26-2	IGH	V	FALSE	394
-Homo sapiens non-functional	IGHV(II)-28-1	IGH	V	FALSE	395
-Homo sapiens non-functional	IGHV(II)-30-1	IGH	V	FALSE	396
-Homo sapiens non-functional	IGHV(II)-31-1	IGH	V	FALSE	397
-Homo sapiens non-functional	IGHV(II)-33-1	IGH	V	FALSE	398
-Homo sapiens non-functional	IGHV(II)-40-1	IGH	V	FALSE	399
-Homo sapiens non-functional	IGHV(II)-43-1	IGH	V	FALSE	400
-Homo sapiens non-functional	IGHV(II)-43-1D	IGH	V	FALSE	401
-Homo sapiens non-functional	IGHV(II)-44-1D	IGH	V	FALSE	402
-Homo sapiens non-functional	IGHV(II)-44-2	IGH	V	FALSE	403
-Homo sapiens non-functional	IGHV(II)-44-2D	IGH	V	FALSE	404
-Homo sapiens non-functional	IGHV(II)-44-3	IGH	V	FALSE	405
-Homo sapiens non-functional	IGHV(II)-46-1	IGH	V	FALSE	406
-Homo sapiens non-functional	IGHV(II)-49-1	IGH	V	FALSE	407
-Homo sapiens non-functional	IGHV(II)-51-2	IGH	V	FALSE	408
-Homo sapiens non-functional	IGHV(II)-53-1	IGH	V	FALSE	409
-Homo sapiens non-functional	IGHV(II)-60-1	IGH	V	FALSE	410
-Homo sapiens non-functional	IGHV(II)-62-1	IGH	V	FALSE	411
-Homo sapiens non-functional	IGHV(II)-65-1	IGH	V	FALSE	412
-Homo sapiens non-functional	IGHV(II)-67-1	IGH	V	FALSE	413
-Homo sapiens non-functional	IGHV(II)-74-1	IGH	V	FALSE	414
-Homo sapiens non-functional	IGHV(II)-78-1	IGH	V	FALSE	415
-Homo sapiens non-functional	IGHV(III)-11-1	IGH	V	FALSE	416
-Homo sapiens non-functional	IGHV(III)-13-1	IGH	V	FALSE	417
-Homo sapiens non-functional	IGHV(III)-16-1	IGH	V	FALSE	418
-Homo sapiens non-functional	IGHV(III)-2-1	IGH	V	FALSE	419
-Homo sapiens non-functional	IGHV(III)-22-2	IGH	V	FALSE	420
-Homo sapiens non-functional	IGHV(III)-25-1	IGH	V	FALSE	421
-Homo sapiens non-functional	IGHV(III)-26-1	IGH	V	FALSE	422
-Homo sapiens non-functional	IGHV(III)-38-1	IGH	V	FALSE	423
-Homo sapiens non-functional	IGHV(III)-38-1D	IGH	V	FALSE	424
-Homo sapiens non-functional	IGHV(III)-44	IGH	V	FALSE	425
-Homo sapiens non-functional	IGHV(III)-44D	IGH	V	FALSE	426
-Homo sapiens non-functional	IGHV(III)-47-1	IGH	V	FALSE	427
-Homo sapiens non-functional	IGHV(III)-5-1	IGH	V	FALSE	428
-Homo sapiens non-functional	IGHV(III)-5-2	IGH	V	FALSE	429
-Homo sapiens non-functional	IGHV(III)-51-1	IGH	V	FALSE	430
-Homo sapiens non-functional	IGHV(III)-67-2	IGH	V	FALSE	431
-Homo sapiens non-functional	IGHV(III)-67-3	IGH	V	FALSE	432
-Homo sapiens non-functional	IGHV(III)-67-4	IGH	V	FALSE	433
-Homo sapiens non-functional	IGHV(III)-76-1	IGH	V	FALSE	434
-Homo sapiens non-functional	IGHV(III)-82	IGH	V	FALSE	435
-Homo sapiens non-functional	IGHV(IV)-44-1	IGH	V	FALSE	436
-Homo sapiens non-functional	IGHV1-12	IGH	V	FALSE	437
-Homo sapiens non-functional	IGHV1-14	IGH	V	FALSE	438
-Homo sapiens non-functional	IGHV1-17	IGH	V	FALSE	439
-Homo sapiens functional	IGHV1-18	IGH	V	TRUE	440
-Homo sapiens functional	IGHV1-2	IGH	V	TRUE	441
-Homo sapiens functional	IGHV1-24	IGH	V	TRUE	442
-Homo sapiens functional	IGHV1-3	IGH	V	TRUE	443
-Homo sapiens non-functional	IGHV1-38-4	IGH	V	FALSE	444
-Homo sapiens functional	IGHV1-45	IGH	V	TRUE	445
-Homo sapiens functional	IGHV1-46	IGH	V	TRUE	446
-Homo sapiens functional	IGHV1-58	IGH	V	TRUE	447
-Homo sapiens non-functional	IGHV1-67	IGH	V	FALSE	448
-Homo sapiens non-functional	IGHV1-68	IGH	V	FALSE	449
-Homo sapiens functional	IGHV1-69	IGH	V	TRUE	450
-Homo sapiens functional	IGHV1-69-2	IGH	V	TRUE	451
-Homo sapiens functional	IGHV1-69D	IGH	V	TRUE	452
-Homo sapiens functional	IGHV1-8	IGH	V	TRUE	453
-Homo sapiens non-functional	IGHV1-NL1	IGH	V	FALSE	454
-Homo sapiens non-functional	IGHV1/OR15-1	IGH	V	FALSE	455
-Homo sapiens non-functional	IGHV1/OR15-2	IGH	V	FALSE	456
-Homo sapiens non-functional	IGHV1/OR15-3	IGH	V	FALSE	457
-Homo sapiens non-functional	IGHV1/OR15-4	IGH	V	FALSE	458
-Homo sapiens non-functional	IGHV1/OR15-5	IGH	V	FALSE	459
-Homo sapiens non-functional	IGHV1/OR15-6	IGH	V	FALSE	460
-Homo sapiens non-functional	IGHV1/OR15-9	IGH	V	FALSE	461
-Homo sapiens non-functional	IGHV1/OR16-1	IGH	V	FALSE	462
-Homo sapiens non-functional	IGHV1/OR16-2	IGH	V	FALSE	463
-Homo sapiens non-functional	IGHV1/OR16-3	IGH	V	FALSE	464
-Homo sapiens non-functional	IGHV1/OR16-4	IGH	V	FALSE	465
-Homo sapiens non-functional	IGHV1/OR21-1	IGH	V	FALSE	466
-Homo sapiens non-functional	IGHV2-10	IGH	V	FALSE	467
-Homo sapiens functional	IGHV2-26	IGH	V	TRUE	468
-Homo sapiens functional	IGHV2-5	IGH	V	TRUE	469
-Homo sapiens functional	IGHV2-70	IGH	V	TRUE	470
-Homo sapiens functional	IGHV2-70D	IGH	V	TRUE	471
-Homo sapiens non-functional	IGHV2/OR16-5	IGH	V	FALSE	472
-Homo sapiens functional	IGHV3-11	IGH	V	TRUE	473
-Homo sapiens functional	IGHV3-13	IGH	V	TRUE	474
-Homo sapiens functional	IGHV3-15	IGH	V	TRUE	475
-Homo sapiens non-functional	IGHV3-16	IGH	V	FALSE	476
-Homo sapiens non-functional	IGHV3-19	IGH	V	FALSE	477
-Homo sapiens functional	IGHV3-20	IGH	V	TRUE	478
-Homo sapiens functional	IGHV3-21	IGH	V	TRUE	479
-Homo sapiens non-functional	IGHV3-22	IGH	V	FALSE	480
-Homo sapiens functional	IGHV3-23	IGH	V	TRUE	481
-Homo sapiens functional	IGHV3-23D	IGH	V	TRUE	482
-Homo sapiens non-functional	IGHV3-25	IGH	V	FALSE	483
-Homo sapiens non-functional	IGHV3-29	IGH	V	FALSE	484
-Homo sapiens functional	IGHV3-30	IGH	V	TRUE	485
-Homo sapiens non-functional	IGHV3-30-2	IGH	V	FALSE	486
-Homo sapiens functional	IGHV3-30-3	IGH	V	TRUE	487
-Homo sapiens functional	IGHV3-30-5	IGH	V	TRUE	488
-Homo sapiens non-functional	IGHV3-32	IGH	V	FALSE	489
-Homo sapiens functional	IGHV3-33	IGH	V	TRUE	490
-Homo sapiens non-functional	IGHV3-33-2	IGH	V	FALSE	491
-Homo sapiens non-functional	IGHV3-35	IGH	V	FALSE	492
-Homo sapiens non-functional	IGHV3-36	IGH	V	FALSE	493
-Homo sapiens non-functional	IGHV3-37	IGH	V	FALSE	494
-Homo sapiens non-functional	IGHV3-38	IGH	V	FALSE	495
-Homo sapiens non-functional	IGHV3-38-3	IGH	V	FALSE	496
-Homo sapiens non-functional	IGHV3-41	IGH	V	FALSE	497
-Homo sapiens non-functional	IGHV3-42	IGH	V	FALSE	498
-Homo sapiens non-functional	IGHV3-42D	IGH	V	FALSE	499
-Homo sapiens functional	IGHV3-43	IGH	V	TRUE	500
-Homo sapiens functional	IGHV3-43D	IGH	V	TRUE	501
-Homo sapiens non-functional	IGHV3-47	IGH	V	FALSE	502
-Homo sapiens functional	IGHV3-48	IGH	V	TRUE	503
-Homo sapiens functional	IGHV3-49	IGH	V	TRUE	504
-Homo sapiens non-functional	IGHV3-50	IGH	V	FALSE	505
-Homo sapiens non-functional	IGHV3-52	IGH	V	FALSE	506
-Homo sapiens functional	IGHV3-53	IGH	V	TRUE	507
-Homo sapiens non-functional	IGHV3-54	IGH	V	FALSE	508
-Homo sapiens non-functional	IGHV3-57	IGH	V	FALSE	509
-Homo sapiens non-functional	IGHV3-6	IGH	V	FALSE	510
-Homo sapiens non-functional	IGHV3-60	IGH	V	FALSE	511
-Homo sapiens non-functional	IGHV3-62	IGH	V	FALSE	512
-Homo sapiens non-functional	IGHV3-63	IGH	V	FALSE	513
-Homo sapiens functional	IGHV3-64	IGH	V	TRUE	514
-Homo sapiens functional	IGHV3-64D	IGH	V	TRUE	515
-Homo sapiens non-functional	IGHV3-65	IGH	V	FALSE	516
-Homo sapiens functional	IGHV3-66	IGH	V	TRUE	517
-Homo sapiens non-functional	IGHV3-69-1	IGH	V	FALSE	518
-Homo sapiens functional	IGHV3-7	IGH	V	TRUE	519
-Homo sapiens non-functional	IGHV3-71	IGH	V	FALSE	520
-Homo sapiens functional	IGHV3-72	IGH	V	TRUE	521
-Homo sapiens functional	IGHV3-73	IGH	V	TRUE	522
-Homo sapiens functional	IGHV3-74	IGH	V	TRUE	523
-Homo sapiens non-functional	IGHV3-75	IGH	V	FALSE	524
-Homo sapiens non-functional	IGHV3-76	IGH	V	FALSE	525
-Homo sapiens non-functional	IGHV3-79	IGH	V	FALSE	526
-Homo sapiens functional	IGHV3-9	IGH	V	TRUE	527
-Homo sapiens functional	IGHV3-NL1	IGH	V	TRUE	528
-Homo sapiens non-functional	IGHV3/OR15-7	IGH	V	FALSE	529
-Homo sapiens non-functional	IGHV3/OR16-10	IGH	V	FALSE	530
-Homo sapiens non-functional	IGHV3/OR16-11	IGH	V	FALSE	531
-Homo sapiens non-functional	IGHV3/OR16-12	IGH	V	FALSE	532
-Homo sapiens non-functional	IGHV3/OR16-13	IGH	V	FALSE	533
-Homo sapiens non-functional	IGHV3/OR16-14	IGH	V	FALSE	534
-Homo sapiens non-functional	IGHV3/OR16-15	IGH	V	FALSE	535
-Homo sapiens non-functional	IGHV3/OR16-16	IGH	V	FALSE	536
-Homo sapiens non-functional	IGHV3/OR16-6	IGH	V	FALSE	537
-Homo sapiens non-functional	IGHV3/OR16-7	IGH	V	FALSE	538
-Homo sapiens non-functional	IGHV3/OR16-8	IGH	V	FALSE	539
-Homo sapiens non-functional	IGHV3/OR16-9	IGH	V	FALSE	540
-Homo sapiens functional	IGHV4-28	IGH	V	TRUE	541
-Homo sapiens functional	IGHV4-30-1	IGH	V	TRUE	542
-Homo sapiens functional	IGHV4-30-2	IGH	V	TRUE	543
-Homo sapiens functional	IGHV4-30-4	IGH	V	TRUE	544
-Homo sapiens functional	IGHV4-31	IGH	V	TRUE	545
-Homo sapiens functional	IGHV4-34	IGH	V	TRUE	546
-Homo sapiens functional	IGHV4-38-2	IGH	V	TRUE	547
-Homo sapiens functional	IGHV4-39	IGH	V	TRUE	548
-Homo sapiens functional	IGHV4-4	IGH	V	TRUE	549
-Homo sapiens non-functional	IGHV4-55	IGH	V	FALSE	550
-Homo sapiens functional	IGHV4-59	IGH	V	TRUE	551
-Homo sapiens functional	IGHV4-61	IGH	V	TRUE	552
-Homo sapiens non-functional	IGHV4-80	IGH	V	FALSE	553
-Homo sapiens non-functional	IGHV4/OR15-8	IGH	V	FALSE	554
-Homo sapiens functional	IGHV5-10-1	IGH	V	TRUE	555
-Homo sapiens functional	IGHV5-51	IGH	V	TRUE	556
-Homo sapiens non-functional	IGHV5-78	IGH	V	FALSE	557
-Homo sapiens functional	IGHV6-1	IGH	V	TRUE	558
-Homo sapiens non-functional	IGHV7-27	IGH	V	FALSE	559
-Homo sapiens non-functional	IGHV7-34-1	IGH	V	FALSE	560
-Homo sapiens functional	IGHV7-4-1	IGH	V	TRUE	561
-Homo sapiens non-functional	IGHV7-40	IGH	V	FALSE	562
-Homo sapiens non-functional	IGHV7-40D	IGH	V	FALSE	563
-Homo sapiens non-functional	IGHV7-56	IGH	V	FALSE	564
-Homo sapiens non-functional	IGHV7-77	IGH	V	FALSE	565
-Homo sapiens non-functional	IGHV7-81	IGH	V	FALSE	566
-Homo sapiens non-functional	IGHV7-NL1	IGH	V	FALSE	567
-Homo sapiens functional	IGKJ1	IGK	J	TRUE	568
-Homo sapiens functional	IGKJ2	IGK	J	TRUE	569
-Homo sapiens functional	IGKJ3	IGK	J	TRUE	570
-Homo sapiens functional	IGKJ4	IGK	J	TRUE	571
-Homo sapiens functional	IGKJ5	IGK	J	TRUE	572
-Homo sapiens functional	IGKV1-12	IGK	V	TRUE	573
-Homo sapiens functional	IGKV1-13	IGK	V	TRUE	574
-Homo sapiens functional	IGKV1-16	IGK	V	TRUE	575
-Homo sapiens functional	IGKV1-17	IGK	V	TRUE	576
-Homo sapiens non-functional	IGKV1-22	IGK	V	FALSE	577
-Homo sapiens functional	IGKV1-27	IGK	V	TRUE	578
-Homo sapiens non-functional	IGKV1-32	IGK	V	FALSE	579
-Homo sapiens functional	IGKV1-33	IGK	V	TRUE	580
-Homo sapiens non-functional	IGKV1-35	IGK	V	FALSE	581
-Homo sapiens non-functional	IGKV1-37	IGK	V	FALSE	582
-Homo sapiens functional	IGKV1-39	IGK	V	TRUE	583
-Homo sapiens functional	IGKV1-5	IGK	V	TRUE	584
-Homo sapiens functional	IGKV1-6	IGK	V	TRUE	585
-Homo sapiens functional	IGKV1-8	IGK	V	TRUE	586
-Homo sapiens functional	IGKV1-9	IGK	V	TRUE	587
-Homo sapiens functional	IGKV1-NL1	IGK	V	TRUE	588
-Homo sapiens non-functional	IGKV1/OR-2	IGK	V	FALSE	589
-Homo sapiens non-functional	IGKV1/OR-3	IGK	V	FALSE	590
-Homo sapiens non-functional	IGKV1/OR-4	IGK	V	FALSE	591
-Homo sapiens non-functional	IGKV1/OR1-1	IGK	V	FALSE	592
-Homo sapiens non-functional	IGKV1/OR10-1	IGK	V	FALSE	593
-Homo sapiens non-functional	IGKV1/OR15-118	IGK	V	FALSE	594
-Homo sapiens non-functional	IGKV1/OR2-0	IGK	V	FALSE	595
-Homo sapiens non-functional	IGKV1/OR2-1	IGK	V	FALSE	596
-Homo sapiens non-functional	IGKV1/OR2-108	IGK	V	FALSE	597
-Homo sapiens non-functional	IGKV1/OR2-11	IGK	V	FALSE	598
-Homo sapiens non-functional	IGKV1/OR2-118	IGK	V	FALSE	599
-Homo sapiens non-functional	IGKV1/OR2-2	IGK	V	FALSE	600
-Homo sapiens non-functional	IGKV1/OR2-3	IGK	V	FALSE	601
-Homo sapiens non-functional	IGKV1/OR2-6	IGK	V	FALSE	602
-Homo sapiens non-functional	IGKV1/OR2-9	IGK	V	FALSE	603
-Homo sapiens non-functional	IGKV1/OR22-1	IGK	V	FALSE	604
-Homo sapiens non-functional	IGKV1/OR22-5	IGK	V	FALSE	605
-Homo sapiens non-functional	IGKV1/OR9-1	IGK	V	FALSE	606
-Homo sapiens non-functional	IGKV1/OR9-2	IGK	V	FALSE	607
-Homo sapiens non-functional	IGKV1/ORY-1	IGK	V	FALSE	608
-Homo sapiens functional	IGKV1D-12	IGK	V	TRUE	609
-Homo sapiens functional	IGKV1D-13	IGK	V	TRUE	610
-Homo sapiens functional	IGKV1D-16	IGK	V	TRUE	611
-Homo sapiens functional	IGKV1D-17	IGK	V	TRUE	612
-Homo sapiens non-functional	IGKV1D-22	IGK	V	FALSE	613
-Homo sapiens non-functional	IGKV1D-27	IGK	V	FALSE	614
-Homo sapiens non-functional	IGKV1D-32	IGK	V	FALSE	615
-Homo sapiens functional	IGKV1D-33	IGK	V	TRUE	616
-Homo sapiens non-functional	IGKV1D-35	IGK	V	FALSE	617
-Homo sapiens non-functional	IGKV1D-37	IGK	V	FALSE	618
-Homo sapiens functional	IGKV1D-39	IGK	V	TRUE	619
-Homo sapiens non-functional	IGKV1D-42	IGK	V	FALSE	620
-Homo sapiens functional	IGKV1D-43	IGK	V	TRUE	621
-Homo sapiens functional	IGKV1D-8	IGK	V	TRUE	622
-Homo sapiens non-functional	IGKV2-10	IGK	V	FALSE	623
-Homo sapiens non-functional	IGKV2-14	IGK	V	FALSE	624
-Homo sapiens non-functional	IGKV2-18	IGK	V	FALSE	625
-Homo sapiens non-functional	IGKV2-19	IGK	V	FALSE	626
-Homo sapiens non-functional	IGKV2-23	IGK	V	FALSE	627
-Homo sapiens functional	IGKV2-24	IGK	V	TRUE	628
-Homo sapiens non-functional	IGKV2-26	IGK	V	FALSE	629
-Homo sapiens functional	IGKV2-28	IGK	V	TRUE	630
-Homo sapiens functional	IGKV2-29	IGK	V	TRUE	631
-Homo sapiens functional	IGKV2-30	IGK	V	TRUE	632
-Homo sapiens non-functional	IGKV2-36	IGK	V	FALSE	633
-Homo sapiens non-functional	IGKV2-38	IGK	V	FALSE	634
-Homo sapiens non-functional	IGKV2-4	IGK	V	FALSE	635
-Homo sapiens functional	IGKV2-40	IGK	V	TRUE	636
-Homo sapiens non-functional	IGKV2/OR2-1	IGK	V	FALSE	637
-Homo sapiens non-functional	IGKV2/OR2-10	IGK	V	FALSE	638
-Homo sapiens non-functional	IGKV2/OR2-2	IGK	V	FALSE	639
-Homo sapiens non-functional	IGKV2/OR2-4	IGK	V	FALSE	640
-Homo sapiens non-functional	IGKV2/OR2-7	IGK	V	FALSE	641
-Homo sapiens non-functional	IGKV2/OR2-7D	IGK	V	FALSE	642
-Homo sapiens non-functional	IGKV2/OR2-8	IGK	V	FALSE	643
-Homo sapiens non-functional	IGKV2/OR22-3	IGK	V	FALSE	644
-Homo sapiens non-functional	IGKV2/OR22-4	IGK	V	FALSE	645
-Homo sapiens non-functional	IGKV2D-10	IGK	V	FALSE	646
-Homo sapiens non-functional	IGKV2D-14	IGK	V	FALSE	647
-Homo sapiens non-functional	IGKV2D-18	IGK	V	FALSE	648
-Homo sapiens non-functional	IGKV2D-19	IGK	V	FALSE	649
-Homo sapiens non-functional	IGKV2D-23	IGK	V	FALSE	650
-Homo sapiens non-functional	IGKV2D-24	IGK	V	FALSE	651
-Homo sapiens functional	IGKV2D-26	IGK	V	TRUE	652
-Homo sapiens functional	IGKV2D-28	IGK	V	TRUE	653
-Homo sapiens functional	IGKV2D-29	IGK	V	TRUE	654
-Homo sapiens functional	IGKV2D-30	IGK	V	TRUE	655
-Homo sapiens non-functional	IGKV2D-36	IGK	V	FALSE	656
-Homo sapiens non-functional	IGKV2D-38	IGK	V	FALSE	657
-Homo sapiens functional	IGKV2D-40	IGK	V	TRUE	658
-Homo sapiens functional	IGKV3-11	IGK	V	TRUE	659
-Homo sapiens functional	IGKV3-15	IGK	V	TRUE	660
-Homo sapiens functional	IGKV3-20	IGK	V	TRUE	661
-Homo sapiens non-functional	IGKV3-25	IGK	V	FALSE	662
-Homo sapiens non-functional	IGKV3-31	IGK	V	FALSE	663
-Homo sapiens non-functional	IGKV3-34	IGK	V	FALSE	664
-Homo sapiens non-functional	IGKV3-7	IGK	V	FALSE	665
-Homo sapiens functional	IGKV3-NL1	IGK	V	TRUE	666
-Homo sapiens functional	IGKV3-NL2	IGK	V	TRUE	667
-Homo sapiens functional	IGKV3-NL3	IGK	V	TRUE	668
-Homo sapiens functional	IGKV3-NL4	IGK	V	TRUE	669
-Homo sapiens functional	IGKV3-NL5	IGK	V	TRUE	670
-Homo sapiens non-functional	IGKV3/OR2-268	IGK	V	FALSE	671
-Homo sapiens non-functional	IGKV3/OR2-5	IGK	V	FALSE	672
-Homo sapiens non-functional	IGKV3/OR22-2	IGK	V	FALSE	673
-Homo sapiens functional	IGKV3D-11	IGK	V	TRUE	674
-Homo sapiens functional	IGKV3D-15	IGK	V	TRUE	675
-Homo sapiens functional	IGKV3D-20	IGK	V	TRUE	676
-Homo sapiens non-functional	IGKV3D-25	IGK	V	FALSE	677
-Homo sapiens non-functional	IGKV3D-31	IGK	V	FALSE	678
-Homo sapiens non-functional	IGKV3D-34	IGK	V	FALSE	679
-Homo sapiens functional	IGKV3D-7	IGK	V	TRUE	680
-Homo sapiens functional	IGKV4-1	IGK	V	TRUE	681
-Homo sapiens functional	IGKV5-2	IGK	V	TRUE	682
-Homo sapiens non-functional	IGKV6-21	IGK	V	FALSE	683
-Homo sapiens non-functional	IGKV6D-21	IGK	V	FALSE	684
-Homo sapiens non-functional	IGKV6D-41	IGK	V	FALSE	685
-Homo sapiens non-functional	IGKV7-3	IGK	V	FALSE	686
-Homo sapiens non-functional	IGLJ-C/OR18	IGL	J	FALSE	687
-Homo sapiens functional	IGLJ1	IGL	J	TRUE	688
-Homo sapiens functional	IGLJ2	IGL	J	TRUE	689
-Homo sapiens non-functional	IGLJ2A	IGL	J	FALSE	690
-Homo sapiens non-functional	IGLJ2B	IGL	J	FALSE	691
-Homo sapiens non-functional	IGLJ2C	IGL	J	FALSE	692
-Homo sapiens non-functional	IGLJ2D	IGL	J	FALSE	693
-Homo sapiens functional	IGLJ3	IGL	J	TRUE	694
-Homo sapiens non-functional	IGLJ4	IGL	J	FALSE	695
-Homo sapiens non-functional	IGLJ5	IGL	J	FALSE	696
-Homo sapiens functional	IGLJ6	IGL	J	TRUE	697
-Homo sapiens functional	IGLJ7	IGL	J	TRUE	698
-Homo sapiens non-functional	IGLV(I)-20	IGL	V	FALSE	699
-Homo sapiens non-functional	IGLV(I)-38	IGL	V	FALSE	700
-Homo sapiens non-functional	IGLV(I)-42	IGL	V	FALSE	701
-Homo sapiens non-functional	IGLV(I)-56	IGL	V	FALSE	702
-Homo sapiens non-functional	IGLV(I)-63	IGL	V	FALSE	703
-Homo sapiens non-functional	IGLV(I)-68	IGL	V	FALSE	704
-Homo sapiens non-functional	IGLV(I)-70	IGL	V	FALSE	705
-Homo sapiens non-functional	IGLV(IV)-53	IGL	V	FALSE	706
-Homo sapiens non-functional	IGLV(IV)-59	IGL	V	FALSE	707
-Homo sapiens non-functional	IGLV(IV)-64	IGL	V	FALSE	708
-Homo sapiens non-functional	IGLV(IV)-65	IGL	V	FALSE	709
-Homo sapiens non-functional	IGLV(IV)-66-1	IGL	V	FALSE	710
-Homo sapiens non-functional	IGLV(IV)/OR22-1	IGL	V	FALSE	711
-Homo sapiens non-functional	IGLV(IV)/OR22-2	IGL	V	FALSE	712
-Homo sapiens non-functional	IGLV(V)-58	IGL	V	FALSE	713
-Homo sapiens non-functional	IGLV(V)-66	IGL	V	FALSE	714
-Homo sapiens non-functional	IGLV(VI)-22-1	IGL	V	FALSE	715
-Homo sapiens non-functional	IGLV(VI)-25-1	IGL	V	FALSE	716
-Homo sapiens non-functional	IGLV(VII)-41-1	IGL	V	FALSE	717
-Homo sapiens non-functional	IGLV/OR8-2	IGL	V	FALSE	718
-Homo sapiens functional	IGLV1-36	IGL	V	TRUE	719
-Homo sapiens functional	IGLV1-40	IGL	V	TRUE	720
-Homo sapiens non-functional	IGLV1-41	IGL	V	FALSE	721
-Homo sapiens functional	IGLV1-44	IGL	V	TRUE	722
-Homo sapiens functional	IGLV1-47	IGL	V	TRUE	723
-Homo sapiens non-functional	IGLV1-50	IGL	V	FALSE	724
-Homo sapiens functional	IGLV1-51	IGL	V	TRUE	725
-Homo sapiens non-functional	IGLV1-62	IGL	V	FALSE	726
-Homo sapiens functional	IGLV10-54	IGL	V	TRUE	727
-Homo sapiens non-functional	IGLV10-67	IGL	V	FALSE	728
-Homo sapiens non-functional	IGLV11-55	IGL	V	FALSE	729
-Homo sapiens functional	IGLV2-11	IGL	V	TRUE	730
-Homo sapiens functional	IGLV2-14	IGL	V	TRUE	731
-Homo sapiens functional	IGLV2-18	IGL	V	TRUE	732
-Homo sapiens functional	IGLV2-23	IGL	V	TRUE	733
-Homo sapiens non-functional	IGLV2-28	IGL	V	FALSE	734
-Homo sapiens non-functional	IGLV2-33	IGL	V	FALSE	735
-Homo sapiens non-functional	IGLV2-34	IGL	V	FALSE	736
-Homo sapiens non-functional	IGLV2-5	IGL	V	FALSE	737
-Homo sapiens functional	IGLV2-8	IGL	V	TRUE	738
-Homo sapiens non-functional	IGLV2-NL1	IGL	V	FALSE	739
-Homo sapiens functional	IGLV3-1	IGL	V	TRUE	740
-Homo sapiens functional	IGLV3-10	IGL	V	TRUE	741
-Homo sapiens functional	IGLV3-12	IGL	V	TRUE	742
-Homo sapiens non-functional	IGLV3-13	IGL	V	FALSE	743
-Homo sapiens non-functional	IGLV3-15	IGL	V	FALSE	744
-Homo sapiens functional	IGLV3-16	IGL	V	TRUE	745
-Homo sapiens non-functional	IGLV3-17	IGL	V	FALSE	746
-Homo sapiens functional	IGLV3-19	IGL	V	TRUE	747
-Homo sapiens non-functional	IGLV3-2	IGL	V	FALSE	748
-Homo sapiens functional	IGLV3-21	IGL	V	TRUE	749
-Homo sapiens functional	IGLV3-22	IGL	V	TRUE	750
-Homo sapiens non-functional	IGLV3-24	IGL	V	FALSE	751
-Homo sapiens functional	IGLV3-25	IGL	V	TRUE	752
-Homo sapiens non-functional	IGLV3-26	IGL	V	FALSE	753
-Homo sapiens functional	IGLV3-27	IGL	V	TRUE	754
-Homo sapiens non-functional	IGLV3-29	IGL	V	FALSE	755
-Homo sapiens non-functional	IGLV3-30	IGL	V	FALSE	756
-Homo sapiens non-functional	IGLV3-31	IGL	V	FALSE	757
-Homo sapiens non-functional	IGLV3-32	IGL	V	FALSE	758
-Homo sapiens non-functional	IGLV3-4	IGL	V	FALSE	759
-Homo sapiens non-functional	IGLV3-6	IGL	V	FALSE	760
-Homo sapiens non-functional	IGLV3-7	IGL	V	FALSE	761
-Homo sapiens functional	IGLV3-9	IGL	V	TRUE	762
-Homo sapiens functional	IGLV4-3	IGL	V	TRUE	763
-Homo sapiens functional	IGLV4-60	IGL	V	TRUE	764
-Homo sapiens functional	IGLV4-69	IGL	V	TRUE	765
-Homo sapiens functional	IGLV5-37	IGL	V	TRUE	766
-Homo sapiens functional	IGLV5-39	IGL	V	TRUE	767
-Homo sapiens functional	IGLV5-45	IGL	V	TRUE	768
-Homo sapiens non-functional	IGLV5-48	IGL	V	FALSE	769
-Homo sapiens functional	IGLV5-52	IGL	V	TRUE	770
-Homo sapiens functional	IGLV6-57	IGL	V	TRUE	771
-Homo sapiens non-functional	IGLV7-35	IGL	V	FALSE	772
-Homo sapiens functional	IGLV7-43	IGL	V	TRUE	773
-Homo sapiens functional	IGLV7-46	IGL	V	TRUE	774
-Homo sapiens functional	IGLV8-61	IGL	V	TRUE	775
-Homo sapiens non-functional	IGLV8/OR8-1	IGL	V	FALSE	776
-Homo sapiens functional	IGLV9-49	IGL	V	TRUE	777
-Homo sapiens non-functional	TRAJ1	TRA	J	FALSE	778
-Homo sapiens functional	TRAJ10	TRA	J	TRUE	779
-Homo sapiens functional	TRAJ11	TRA	J	TRUE	780
-Homo sapiens functional	TRAJ12	TRA	J	TRUE	781
-Homo sapiens functional	TRAJ13	TRA	J	TRUE	782
-Homo sapiens functional	TRAJ14	TRA	J	TRUE	783
-Homo sapiens functional	TRAJ15	TRA	J	TRUE	784
-Homo sapiens functional	TRAJ16	TRA	J	TRUE	785
-Homo sapiens functional	TRAJ17	TRA	J	TRUE	786
-Homo sapiens functional	TRAJ18	TRA	J	TRUE	787
-Homo sapiens non-functional	TRAJ19	TRA	J	FALSE	788
-Homo sapiens non-functional	TRAJ2	TRA	J	FALSE	789
-Homo sapiens functional	TRAJ20	TRA	J	TRUE	790
-Homo sapiens functional	TRAJ21	TRA	J	TRUE	791
-Homo sapiens functional	TRAJ22	TRA	J	TRUE	792
-Homo sapiens functional	TRAJ23	TRA	J	TRUE	793
-Homo sapiens functional	TRAJ24	TRA	J	TRUE	794
-Homo sapiens non-functional	TRAJ25	TRA	J	FALSE	795
-Homo sapiens functional	TRAJ26	TRA	J	TRUE	796
-Homo sapiens functional	TRAJ27	TRA	J	TRUE	797
-Homo sapiens functional	TRAJ28	TRA	J	TRUE	798
-Homo sapiens functional	TRAJ29	TRA	J	TRUE	799
-Homo sapiens functional	TRAJ3	TRA	J	TRUE	800
-Homo sapiens functional	TRAJ30	TRA	J	TRUE	801
-Homo sapiens functional	TRAJ31	TRA	J	TRUE	802
-Homo sapiens functional	TRAJ32	TRA	J	TRUE	803
-Homo sapiens functional	TRAJ33	TRA	J	TRUE	804
-Homo sapiens functional	TRAJ34	TRA	J	TRUE	805
-Homo sapiens non-functional	TRAJ35	TRA	J	FALSE	806
-Homo sapiens functional	TRAJ36	TRA	J	TRUE	807
-Homo sapiens functional	TRAJ37	TRA	J	TRUE	808
-Homo sapiens functional	TRAJ38	TRA	J	TRUE	809
-Homo sapiens functional	TRAJ39	TRA	J	TRUE	810
-Homo sapiens functional	TRAJ4	TRA	J	TRUE	811
-Homo sapiens functional	TRAJ40	TRA	J	TRUE	812
-Homo sapiens functional	TRAJ41	TRA	J	TRUE	813
-Homo sapiens functional	TRAJ42	TRA	J	TRUE	814
-Homo sapiens functional	TRAJ43	TRA	J	TRUE	815
-Homo sapiens functional	TRAJ44	TRA	J	TRUE	816
-Homo sapiens functional	TRAJ45	TRA	J	TRUE	817
-Homo sapiens functional	TRAJ46	TRA	J	TRUE	818
-Homo sapiens functional	TRAJ47	TRA	J	TRUE	819
-Homo sapiens functional	TRAJ48	TRA	J	TRUE	820
-Homo sapiens functional	TRAJ49	TRA	J	TRUE	821
-Homo sapiens functional	TRAJ5	TRA	J	TRUE	822
-Homo sapiens functional	TRAJ50	TRA	J	TRUE	823
-Homo sapiens non-functional	TRAJ51	TRA	J	FALSE	824
-Homo sapiens functional	TRAJ52	TRA	J	TRUE	825
-Homo sapiens functional	TRAJ53	TRA	J	TRUE	826
-Homo sapiens functional	TRAJ54	TRA	J	TRUE	827
-Homo sapiens non-functional	TRAJ55	TRA	J	FALSE	828
-Homo sapiens functional	TRAJ56	TRA	J	TRUE	829
-Homo sapiens functional	TRAJ57	TRA	J	TRUE	830
-Homo sapiens non-functional	TRAJ58	TRA	J	FALSE	831
-Homo sapiens non-functional	TRAJ59	TRA	J	FALSE	832
-Homo sapiens functional	TRAJ6	TRA	J	TRUE	833
-Homo sapiens non-functional	TRAJ60	TRA	J	FALSE	834
-Homo sapiens non-functional	TRAJ61	TRA	J	FALSE	835
-Homo sapiens functional	TRAJ7	TRA	J	TRUE	836
-Homo sapiens functional	TRAJ8	TRA	J	TRUE	837
-Homo sapiens functional	TRAJ9	TRA	J	TRUE	838
-Homo sapiens functional	TRAV1-1	TRA	V	TRUE	839
-Homo sapiens functional	TRAV1-2	TRA	V	TRUE	840
-Homo sapiens functional	TRAV10	TRA	V	TRUE	841
-Homo sapiens non-functional	TRAV11	TRA	V	FALSE	842
-Homo sapiens functional	TRAV12-1	TRA	V	TRUE	843
-Homo sapiens functional	TRAV12-2	TRA	V	TRUE	844
-Homo sapiens functional	TRAV12-3	TRA	V	TRUE	845
-Homo sapiens functional	TRAV13-1	TRA	V	TRUE	846
-Homo sapiens functional	TRAV13-2	TRA	V	TRUE	847
-Homo sapiens functional	TRAV14/DV4	TRA	V	TRUE	848
-Homo sapiens non-functional	TRAV15	TRA	V	FALSE	849
-Homo sapiens functional	TRAV16	TRA	V	TRUE	850
-Homo sapiens functional	TRAV17	TRA	V	TRUE	851
-Homo sapiens functional	TRAV18	TRA	V	TRUE	852
-Homo sapiens functional	TRAV19	TRA	V	TRUE	853
-Homo sapiens functional	TRAV2	TRA	V	TRUE	854
-Homo sapiens functional	TRAV20	TRA	V	TRUE	855
-Homo sapiens functional	TRAV21	TRA	V	TRUE	856
-Homo sapiens functional	TRAV22	TRA	V	TRUE	857
-Homo sapiens functional	TRAV23/DV6	TRA	V	TRUE	858
-Homo sapiens functional	TRAV24	TRA	V	TRUE	859
-Homo sapiens functional	TRAV25	TRA	V	TRUE	860
-Homo sapiens functional	TRAV26-1	TRA	V	TRUE	861
-Homo sapiens functional	TRAV26-2	TRA	V	TRUE	862
-Homo sapiens functional	TRAV27	TRA	V	TRUE	863
-Homo sapiens non-functional	TRAV28	TRA	V	FALSE	864
-Homo sapiens functional	TRAV29/DV5	TRA	V	TRUE	865
-Homo sapiens functional	TRAV3	TRA	V	TRUE	866
-Homo sapiens functional	TRAV30	TRA	V	TRUE	867
-Homo sapiens non-functional	TRAV31	TRA	V	FALSE	868
-Homo sapiens non-functional	TRAV32	TRA	V	FALSE	869
-Homo sapiens non-functional	TRAV33	TRA	V	FALSE	870
-Homo sapiens functional	TRAV34	TRA	V	TRUE	871
-Homo sapiens functional	TRAV35	TRA	V	TRUE	872
-Homo sapiens functional	TRAV36/DV7	TRA	V	TRUE	873
-Homo sapiens non-functional	TRAV37	TRA	V	FALSE	874
-Homo sapiens functional	TRAV38-1	TRA	V	TRUE	875
-Homo sapiens functional	TRAV38-2/DV8	TRA	V	TRUE	876
-Homo sapiens functional	TRAV39	TRA	V	TRUE	877
-Homo sapiens functional	TRAV4	TRA	V	TRUE	878
-Homo sapiens functional	TRAV40	TRA	V	TRUE	879
-Homo sapiens functional	TRAV41	TRA	V	TRUE	880
-Homo sapiens functional	TRAV5	TRA	V	TRUE	881
-Homo sapiens functional	TRAV6	TRA	V	TRUE	882
-Homo sapiens functional	TRAV7	TRA	V	TRUE	883
-Homo sapiens functional	TRAV8-1	TRA	V	TRUE	884
-Homo sapiens functional	TRAV8-2	TRA	V	TRUE	885
-Homo sapiens functional	TRAV8-3	TRA	V	TRUE	886
-Homo sapiens functional	TRAV8-4	TRA	V	TRUE	887
-Homo sapiens non-functional	TRAV8-5	TRA	V	FALSE	888
-Homo sapiens functional	TRAV8-6	TRA	V	TRUE	889
-Homo sapiens non-functional	TRAV8-7	TRA	V	FALSE	890
-Homo sapiens functional	TRAV9-1	TRA	V	TRUE	891
-Homo sapiens functional	TRAV9-2	TRA	V	TRUE	892
-Homo sapiens functional	TRBD1	TRB	D	TRUE	893
-Homo sapiens functional	TRBD2	TRB	D	TRUE	894
-Homo sapiens functional	TRBJ1-1	TRB	J	TRUE	895
-Homo sapiens functional	TRBJ1-2	TRB	J	TRUE	896
-Homo sapiens functional	TRBJ1-3	TRB	J	TRUE	897
-Homo sapiens functional	TRBJ1-4	TRB	J	TRUE	898
-Homo sapiens functional	TRBJ1-5	TRB	J	TRUE	899
-Homo sapiens functional	TRBJ1-6	TRB	J	TRUE	900
-Homo sapiens functional	TRBJ2-1	TRB	J	TRUE	901
-Homo sapiens functional	TRBJ2-2	TRB	J	TRUE	902
-Homo sapiens non-functional	TRBJ2-2P	TRB	J	FALSE	903
-Homo sapiens functional	TRBJ2-3	TRB	J	TRUE	904
-Homo sapiens functional	TRBJ2-4	TRB	J	TRUE	905
-Homo sapiens functional	TRBJ2-5	TRB	J	TRUE	906
-Homo sapiens functional	TRBJ2-6	TRB	J	TRUE	907
-Homo sapiens functional	TRBJ2-7	TRB	J	TRUE	908
-Homo sapiens non-functional	TRBV1	TRB	V	FALSE	909
-Homo sapiens functional	TRBV10-1	TRB	V	TRUE	910
-Homo sapiens functional	TRBV10-2	TRB	V	TRUE	911
-Homo sapiens functional	TRBV10-3	TRB	V	TRUE	912
-Homo sapiens functional	TRBV11-1	TRB	V	TRUE	913
-Homo sapiens functional	TRBV11-2	TRB	V	TRUE	914
-Homo sapiens functional	TRBV11-3	TRB	V	TRUE	915
-Homo sapiens non-functional	TRBV12-1	TRB	V	FALSE	916
-Homo sapiens non-functional	TRBV12-2	TRB	V	FALSE	917
-Homo sapiens functional	TRBV12-3	TRB	V	TRUE	918
-Homo sapiens functional	TRBV12-4	TRB	V	TRUE	919
-Homo sapiens functional	TRBV12-5	TRB	V	TRUE	920
-Homo sapiens functional	TRBV13	TRB	V	TRUE	921
-Homo sapiens functional	TRBV14	TRB	V	TRUE	922
-Homo sapiens functional	TRBV15	TRB	V	TRUE	923
-Homo sapiens functional	TRBV16	TRB	V	TRUE	924
-Homo sapiens non-functional	TRBV17	TRB	V	FALSE	925
-Homo sapiens functional	TRBV18	TRB	V	TRUE	926
-Homo sapiens functional	TRBV19	TRB	V	TRUE	927
-Homo sapiens functional	TRBV2	TRB	V	TRUE	928
-Homo sapiens functional	TRBV20-1	TRB	V	TRUE	929
-Homo sapiens non-functional	TRBV20/OR9-2	TRB	V	FALSE	930
-Homo sapiens non-functional	TRBV21-1	TRB	V	FALSE	931
-Homo sapiens non-functional	TRBV21/OR9-2	TRB	V	FALSE	932
-Homo sapiens non-functional	TRBV22-1	TRB	V	FALSE	933
-Homo sapiens non-functional	TRBV22/OR9-2	TRB	V	FALSE	934
-Homo sapiens non-functional	TRBV23-1	TRB	V	FALSE	935
-Homo sapiens non-functional	TRBV23/OR9-2	TRB	V	FALSE	936
-Homo sapiens functional	TRBV24-1	TRB	V	TRUE	937
-Homo sapiens non-functional	TRBV24/OR9-2	TRB	V	FALSE	938
-Homo sapiens functional	TRBV25-1	TRB	V	TRUE	939
-Homo sapiens non-functional	TRBV25/OR9-2	TRB	V	FALSE	940
-Homo sapiens non-functional	TRBV26	TRB	V	FALSE	941
-Homo sapiens non-functional	TRBV26/OR9-2	TRB	V	FALSE	942
-Homo sapiens functional	TRBV27	TRB	V	TRUE	943
-Homo sapiens functional	TRBV28	TRB	V	TRUE	944
-Homo sapiens functional	TRBV29-1	TRB	V	TRUE	945
-Homo sapiens non-functional	TRBV29/OR9-2	TRB	V	FALSE	946
-Homo sapiens functional	TRBV3-1	TRB	V	TRUE	947
-Homo sapiens non-functional	TRBV3-2	TRB	V	FALSE	948
-Homo sapiens functional	TRBV30	TRB	V	TRUE	949
-Homo sapiens functional	TRBV4-1	TRB	V	TRUE	950
-Homo sapiens functional	TRBV4-2	TRB	V	TRUE	951
-Homo sapiens functional	TRBV4-3	TRB	V	TRUE	952
-Homo sapiens functional	TRBV5-1	TRB	V	TRUE	953
-Homo sapiens non-functional	TRBV5-2	TRB	V	FALSE	954
-Homo sapiens non-functional	TRBV5-3	TRB	V	FALSE	955
-Homo sapiens functional	TRBV5-4	TRB	V	TRUE	956
-Homo sapiens functional	TRBV5-5	TRB	V	TRUE	957
-Homo sapiens functional	TRBV5-6	TRB	V	TRUE	958
-Homo sapiens non-functional	TRBV5-7	TRB	V	FALSE	959
-Homo sapiens functional	TRBV5-8	TRB	V	TRUE	960
-Homo sapiens functional	TRBV6-1	TRB	V	TRUE	961
-Homo sapiens functional	TRBV6-2	TRB	V	TRUE	962
-Homo sapiens functional	TRBV6-3	TRB	V	TRUE	963
-Homo sapiens functional	TRBV6-4	TRB	V	TRUE	964
-Homo sapiens functional	TRBV6-5	TRB	V	TRUE	965
-Homo sapiens functional	TRBV6-6	TRB	V	TRUE	966
-Homo sapiens non-functional	TRBV6-7	TRB	V	FALSE	967
-Homo sapiens functional	TRBV6-8	TRB	V	TRUE	968
-Homo sapiens functional	TRBV6-9	TRB	V	TRUE	969
-Homo sapiens non-functional	TRBV7-1	TRB	V	FALSE	970
-Homo sapiens functional	TRBV7-2	TRB	V	TRUE	971
-Homo sapiens functional	TRBV7-3	TRB	V	TRUE	972
-Homo sapiens functional	TRBV7-4	TRB	V	TRUE	973
-Homo sapiens non-functional	TRBV7-5	TRB	V	FALSE	974
-Homo sapiens functional	TRBV7-6	TRB	V	TRUE	975
-Homo sapiens functional	TRBV7-7	TRB	V	TRUE	976
-Homo sapiens functional	TRBV7-8	TRB	V	TRUE	977
-Homo sapiens functional	TRBV7-9	TRB	V	TRUE	978
-Homo sapiens non-functional	TRBV8-1	TRB	V	FALSE	979
-Homo sapiens non-functional	TRBV8-2	TRB	V	FALSE	980
-Homo sapiens functional	TRBV9	TRB	V	TRUE	981
-Homo sapiens non-functional	TRBVA	TRB	V	FALSE	982
-Homo sapiens non-functional	TRBVA/OR9-2	TRB	V	FALSE	983
-Homo sapiens non-functional	TRBVB	TRB	V	FALSE	984
-Homo sapiens non-functional	TRBVC	TRB	V	FALSE	985
-Homo sapiens functional	TRDD1	TRD	D	TRUE	986
-Homo sapiens functional	TRDD2	TRD	D	TRUE	987
-Homo sapiens functional	TRDD3	TRD	D	TRUE	988
-Homo sapiens functional	TRDJ1	TRD	J	TRUE	989
-Homo sapiens functional	TRDJ2	TRD	J	TRUE	990
-Homo sapiens functional	TRDJ3	TRD	J	TRUE	991
-Homo sapiens functional	TRDJ4	TRD	J	TRUE	992
-Homo sapiens functional	TRDV1	TRD	V	TRUE	993
-Homo sapiens functional	TRDV2	TRD	V	TRUE	994
-Homo sapiens functional	TRDV3	TRD	V	TRUE	995
-Homo sapiens functional	TRGJ1	TRG	J	TRUE	996
-Homo sapiens functional	TRGJ2	TRG	J	TRUE	997
-Homo sapiens functional	TRGJP	TRG	J	TRUE	998
-Homo sapiens functional	TRGJP1	TRG	J	TRUE	999
-Homo sapiens functional	TRGJP2	TRG	J	TRUE	1000
-Homo sapiens non-functional	TRGV1	TRG	V	FALSE	1001
-Homo sapiens non-functional	TRGV10	TRG	V	FALSE	1002
-Homo sapiens non-functional	TRGV11	TRG	V	FALSE	1003
-Homo sapiens functional	TRGV2	TRG	V	TRUE	1004
-Homo sapiens functional	TRGV3	TRG	V	TRUE	1005
-Homo sapiens non-functional	TRGV3P	TRG	V	FALSE	1006
-Homo sapiens functional	TRGV4	TRG	V	TRUE	1007
-Homo sapiens functional	TRGV5	TRG	V	TRUE	1008
-Homo sapiens non-functional	TRGV5P	TRG	V	FALSE	1009
-Homo sapiens non-functional	TRGV6	TRG	V	FALSE	1010
-Homo sapiens non-functional	TRGV7	TRG	V	FALSE	1011
-Homo sapiens functional	TRGV8	TRG	V	TRUE	1012
-Homo sapiens functional	TRGV9	TRG	V	TRUE	1013
-Homo sapiens non-functional	TRGVA	TRG	V	FALSE	1014
-Homo sapiens non-functional	TRGVB	TRG	V	FALSE	1015
-Macaca mulatta non-functional	IGHD	IGH	D	FALSE	1016
-Macaca mulatta functional	IGHD1-1	IGH	D	TRUE	1017
-Macaca mulatta functional	IGHD1-2	IGH	D	TRUE	1018
-Macaca mulatta functional	IGHD1-3	IGH	D	TRUE	1019
-Macaca mulatta functional	IGHD1-4	IGH	D	TRUE	1020
-Macaca mulatta non-functional	IGHD1-5	IGH	D	FALSE	1021
-Macaca mulatta non-functional	IGHD1-6	IGH	D	FALSE	1022
-Macaca mulatta non-functional	IGHD1-7	IGH	D	FALSE	1023
-Macaca mulatta functional	IGHD1-8	IGH	D	TRUE	1024
-Macaca mulatta functional	IGHD2-1	IGH	D	TRUE	1025
-Macaca mulatta functional	IGHD2-2	IGH	D	TRUE	1026
-Macaca mulatta functional	IGHD2-3	IGH	D	TRUE	1027
-Macaca mulatta functional	IGHD2-4	IGH	D	TRUE	1028
-Macaca mulatta functional	IGHD2-5	IGH	D	TRUE	1029
-Macaca mulatta functional	IGHD2-6	IGH	D	TRUE	1030
-Macaca mulatta non-functional	IGHD3-1	IGH	D	FALSE	1031
-Macaca mulatta non-functional	IGHD3-2	IGH	D	FALSE	1032
-Macaca mulatta functional	IGHD3-3	IGH	D	TRUE	1033
-Macaca mulatta functional	IGHD3-4	IGH	D	TRUE	1034
-Macaca mulatta non-functional	IGHD4-1	IGH	D	FALSE	1035
-Macaca mulatta functional	IGHD4-2	IGH	D	TRUE	1036
-Macaca mulatta functional	IGHD4-3	IGH	D	TRUE	1037
-Macaca mulatta functional	IGHD4-4	IGH	D	TRUE	1038
-Macaca mulatta non-functional	IGHD5-1	IGH	D	FALSE	1039
-Macaca mulatta functional	IGHD5-2	IGH	D	TRUE	1040
-Macaca mulatta non-functional	IGHD5-3	IGH	D	FALSE	1041
-Macaca mulatta functional	IGHD6-1	IGH	D	TRUE	1042
-Macaca mulatta functional	IGHD6-2	IGH	D	TRUE	1043
-Macaca mulatta functional	IGHD6-3	IGH	D	TRUE	1044
-Macaca mulatta functional	IGHD6-4	IGH	D	TRUE	1045
-Macaca mulatta functional	IGHD6-5	IGH	D	TRUE	1046
-Macaca mulatta functional	IGHD6-6	IGH	D	TRUE	1047
-Macaca mulatta functional	IGHD7-1	IGH	D	TRUE	1048
-Macaca mulatta functional	IGHJ1	IGH	J	TRUE	1049
-Macaca mulatta non-functional	IGHJ2	IGH	J	FALSE	1050
-Macaca mulatta functional	IGHJ3	IGH	J	TRUE	1051
-Macaca mulatta functional	IGHJ4	IGH	J	TRUE	1052
-Macaca mulatta functional	IGHJ5-1	IGH	J	TRUE	1053
-Macaca mulatta functional	IGHJ5-2	IGH	J	TRUE	1054
-Macaca mulatta functional	IGHJ6	IGH	J	TRUE	1055
-Macaca mulatta non-functional	IGHV(II)-1	IGH	V	FALSE	1056
-Macaca mulatta non-functional	IGHV(II)-10	IGH	V	FALSE	1057
-Macaca mulatta non-functional	IGHV(II)-11	IGH	V	FALSE	1058
-Macaca mulatta non-functional	IGHV(II)-12	IGH	V	FALSE	1059
-Macaca mulatta non-functional	IGHV(II)-2	IGH	V	FALSE	1060
-Macaca mulatta non-functional	IGHV(II)-3	IGH	V	FALSE	1061
-Macaca mulatta non-functional	IGHV(II)-4	IGH	V	FALSE	1062
-Macaca mulatta non-functional	IGHV(II)-5	IGH	V	FALSE	1063
-Macaca mulatta non-functional	IGHV(II)-6	IGH	V	FALSE	1064
-Macaca mulatta non-functional	IGHV(II)-7	IGH	V	FALSE	1065
-Macaca mulatta non-functional	IGHV(II)-8	IGH	V	FALSE	1066
-Macaca mulatta non-functional	IGHV(II)-9	IGH	V	FALSE	1067
-Macaca mulatta non-functional	IGHV(III)-1	IGH	V	FALSE	1068
-Macaca mulatta non-functional	IGHV(III)-2	IGH	V	FALSE	1069
-Macaca mulatta non-functional	IGHV(III)-3	IGH	V	FALSE	1070
-Macaca mulatta non-functional	IGHV(III)-4	IGH	V	FALSE	1071
-Macaca mulatta functional	IGHV1-1	IGH	V	TRUE	1072
-Macaca mulatta non-functional	IGHV1-2	IGH	V	FALSE	1073
-Macaca mulatta functional	IGHV2-1	IGH	V	TRUE	1074
-Macaca mulatta non-functional	IGHV2-2	IGH	V	FALSE	1075
-Macaca mulatta non-functional	IGHV3-1	IGH	V	FALSE	1076
-Macaca mulatta functional	IGHV3-10	IGH	V	TRUE	1077
-Macaca mulatta functional	IGHV3-11	IGH	V	TRUE	1078
-Macaca mulatta functional	IGHV3-12	IGH	V	TRUE	1079
-Macaca mulatta functional	IGHV3-13	IGH	V	TRUE	1080
-Macaca mulatta functional	IGHV3-14	IGH	V	TRUE	1081
-Macaca mulatta non-functional	IGHV3-15	IGH	V	FALSE	1082
-Macaca mulatta non-functional	IGHV3-16	IGH	V	FALSE	1083
-Macaca mulatta non-functional	IGHV3-17	IGH	V	FALSE	1084
-Macaca mulatta functional	IGHV3-18	IGH	V	TRUE	1085
-Macaca mulatta non-functional	IGHV3-19	IGH	V	FALSE	1086
-Macaca mulatta non-functional	IGHV3-2	IGH	V	FALSE	1087
-Macaca mulatta functional	IGHV3-20	IGH	V	TRUE	1088
-Macaca mulatta functional	IGHV3-21	IGH	V	TRUE	1089
-Macaca mulatta functional	IGHV3-22	IGH	V	TRUE	1090
-Macaca mulatta non-functional	IGHV3-23	IGH	V	FALSE	1091
-Macaca mulatta non-functional	IGHV3-24	IGH	V	FALSE	1092
-Macaca mulatta non-functional	IGHV3-3	IGH	V	FALSE	1093
-Macaca mulatta non-functional	IGHV3-4	IGH	V	FALSE	1094
-Macaca mulatta functional	IGHV3-5	IGH	V	TRUE	1095
-Macaca mulatta functional	IGHV3-6	IGH	V	TRUE	1096
-Macaca mulatta functional	IGHV3-7	IGH	V	TRUE	1097
-Macaca mulatta non-functional	IGHV3-8	IGH	V	FALSE	1098
-Macaca mulatta functional	IGHV3-9	IGH	V	TRUE	1099
-Macaca mulatta non-functional	IGHV4-1	IGH	V	FALSE	1100
-Macaca mulatta functional	IGHV4-2	IGH	V	TRUE	1101
-Macaca mulatta non-functional	IGHV4-3	IGH	V	FALSE	1102
-Macaca mulatta non-functional	IGHV4-4	IGH	V	FALSE	1103
-Macaca mulatta non-functional	IGHV5-1	IGH	V	FALSE	1104
-Macaca mulatta functional	IGHV5-2	IGH	V	TRUE	1105
-Macaca mulatta functional	IGHV6-1	IGH	V	TRUE	1106
-Macaca mulatta functional	IGHV7-1	IGH	V	TRUE	1107
-Macaca mulatta functional	IGKJ1	IGK	J	TRUE	1108
-Macaca mulatta functional	IGKJ2	IGK	J	TRUE	1109
-Macaca mulatta functional	IGKJ3	IGK	J	TRUE	1110
-Macaca mulatta functional	IGKJ4	IGK	J	TRUE	1111
-Macaca mulatta non-functional	IGKJ5	IGK	J	FALSE	1112
-Macaca mulatta non-functional	IGKV1-1	IGK	V	FALSE	1113
-Macaca mulatta functional	IGKV1-10	IGK	V	TRUE	1114
-Macaca mulatta functional	IGKV1-11	IGK	V	TRUE	1115
-Macaca mulatta non-functional	IGKV1-12	IGK	V	FALSE	1116
-Macaca mulatta functional	IGKV1-13	IGK	V	TRUE	1117
-Macaca mulatta functional	IGKV1-14	IGK	V	TRUE	1118
-Macaca mulatta functional	IGKV1-15	IGK	V	TRUE	1119
-Macaca mulatta non-functional	IGKV1-16	IGK	V	FALSE	1120
-Macaca mulatta functional	IGKV1-17	IGK	V	TRUE	1121
-Macaca mulatta functional	IGKV1-18	IGK	V	TRUE	1122
-Macaca mulatta non-functional	IGKV1-19	IGK	V	FALSE	1123
-Macaca mulatta functional	IGKV1-2	IGK	V	TRUE	1124
-Macaca mulatta functional	IGKV1-20	IGK	V	TRUE	1125
-Macaca mulatta functional	IGKV1-21	IGK	V	TRUE	1126
-Macaca mulatta functional	IGKV1-22	IGK	V	TRUE	1127
-Macaca mulatta functional	IGKV1-23	IGK	V	TRUE	1128
-Macaca mulatta non-functional	IGKV1-3	IGK	V	FALSE	1129
-Macaca mulatta non-functional	IGKV1-4	IGK	V	FALSE	1130
-Macaca mulatta functional	IGKV1-5	IGK	V	TRUE	1131
-Macaca mulatta non-functional	IGKV1-6	IGK	V	FALSE	1132
-Macaca mulatta non-functional	IGKV1-7	IGK	V	FALSE	1133
-Macaca mulatta functional	IGKV1-8	IGK	V	TRUE	1134
-Macaca mulatta functional	IGKV1-9	IGK	V	TRUE	1135
-Macaca mulatta functional	IGKV1S1	IGK	V	TRUE	1136
-Macaca mulatta functional	IGKV1S10	IGK	V	TRUE	1137
-Macaca mulatta functional	IGKV1S11	IGK	V	TRUE	1138
-Macaca mulatta functional	IGKV1S12	IGK	V	TRUE	1139
-Macaca mulatta functional	IGKV1S13	IGK	V	TRUE	1140
-Macaca mulatta functional	IGKV1S14	IGK	V	TRUE	1141
-Macaca mulatta functional	IGKV1S15	IGK	V	TRUE	1142
-Macaca mulatta functional	IGKV1S16	IGK	V	TRUE	1143
-Macaca mulatta functional	IGKV1S17	IGK	V	TRUE	1144
-Macaca mulatta non-functional	IGKV1S18	IGK	V	FALSE	1145
-Macaca mulatta functional	IGKV1S19	IGK	V	TRUE	1146
-Macaca mulatta functional	IGKV1S2	IGK	V	TRUE	1147
-Macaca mulatta functional	IGKV1S20	IGK	V	TRUE	1148
-Macaca mulatta functional	IGKV1S21	IGK	V	TRUE	1149
-Macaca mulatta functional	IGKV1S22	IGK	V	TRUE	1150
-Macaca mulatta functional	IGKV1S23	IGK	V	TRUE	1151
-Macaca mulatta functional	IGKV1S24	IGK	V	TRUE	1152
-Macaca mulatta functional	IGKV1S25	IGK	V	TRUE	1153
-Macaca mulatta functional	IGKV1S26	IGK	V	TRUE	1154
-Macaca mulatta functional	IGKV1S27	IGK	V	TRUE	1155
-Macaca mulatta functional	IGKV1S28	IGK	V	TRUE	1156
-Macaca mulatta functional	IGKV1S3	IGK	V	TRUE	1157
-Macaca mulatta functional	IGKV1S4	IGK	V	TRUE	1158
-Macaca mulatta functional	IGKV1S5	IGK	V	TRUE	1159
-Macaca mulatta functional	IGKV1S6	IGK	V	TRUE	1160
-Macaca mulatta functional	IGKV1S7	IGK	V	TRUE	1161
-Macaca mulatta functional	IGKV1S8	IGK	V	TRUE	1162
-Macaca mulatta functional	IGKV1S9	IGK	V	TRUE	1163
-Macaca mulatta functional	IGKV2-1	IGK	V	TRUE	1164
-Macaca mulatta non-functional	IGKV2-10	IGK	V	FALSE	1165
-Macaca mulatta non-functional	IGKV2-11	IGK	V	FALSE	1166
-Macaca mulatta non-functional	IGKV2-12	IGK	V	FALSE	1167
-Macaca mulatta non-functional	IGKV2-13	IGK	V	FALSE	1168
-Macaca mulatta functional	IGKV2-14	IGK	V	TRUE	1169
-Macaca mulatta non-functional	IGKV2-15	IGK	V	FALSE	1170
-Macaca mulatta non-functional	IGKV2-16	IGK	V	FALSE	1171
-Macaca mulatta non-functional	IGKV2-2	IGK	V	FALSE	1172
-Macaca mulatta functional	IGKV2-3	IGK	V	TRUE	1173
-Macaca mulatta non-functional	IGKV2-4	IGK	V	FALSE	1174
-Macaca mulatta non-functional	IGKV2-5	IGK	V	FALSE	1175
-Macaca mulatta non-functional	IGKV2-6	IGK	V	FALSE	1176
-Macaca mulatta non-functional	IGKV2-7	IGK	V	FALSE	1177
-Macaca mulatta non-functional	IGKV2-8	IGK	V	FALSE	1178
-Macaca mulatta non-functional	IGKV2-9	IGK	V	FALSE	1179
-Macaca mulatta functional	IGKV2S1	IGK	V	TRUE	1180
-Macaca mulatta functional	IGKV2S10	IGK	V	TRUE	1181
-Macaca mulatta functional	IGKV2S11	IGK	V	TRUE	1182
-Macaca mulatta functional	IGKV2S12	IGK	V	TRUE	1183
-Macaca mulatta functional	IGKV2S13	IGK	V	TRUE	1184
-Macaca mulatta non-functional	IGKV2S14	IGK	V	FALSE	1185
-Macaca mulatta functional	IGKV2S15	IGK	V	TRUE	1186
-Macaca mulatta non-functional	IGKV2S16	IGK	V	FALSE	1187
-Macaca mulatta functional	IGKV2S17	IGK	V	TRUE	1188
-Macaca mulatta functional	IGKV2S18	IGK	V	TRUE	1189
-Macaca mulatta functional	IGKV2S19	IGK	V	TRUE	1190
-Macaca mulatta functional	IGKV2S2	IGK	V	TRUE	1191
-Macaca mulatta functional	IGKV2S20	IGK	V	TRUE	1192
-Macaca mulatta functional	IGKV2S3	IGK	V	TRUE	1193
-Macaca mulatta functional	IGKV2S4	IGK	V	TRUE	1194
-Macaca mulatta functional	IGKV2S5	IGK	V	TRUE	1195
-Macaca mulatta non-functional	IGKV2S6	IGK	V	FALSE	1196
-Macaca mulatta non-functional	IGKV2S7	IGK	V	FALSE	1197
-Macaca mulatta functional	IGKV2S8	IGK	V	TRUE	1198
-Macaca mulatta functional	IGKV2S9	IGK	V	TRUE	1199
-Macaca mulatta functional	IGKV3-1	IGK	V	TRUE	1200
-Macaca mulatta non-functional	IGKV3-10	IGK	V	FALSE	1201
-Macaca mulatta non-functional	IGKV3-11	IGK	V	FALSE	1202
-Macaca mulatta functional	IGKV3-2	IGK	V	TRUE	1203
-Macaca mulatta functional	IGKV3-3	IGK	V	TRUE	1204
-Macaca mulatta non-functional	IGKV3-4	IGK	V	FALSE	1205
-Macaca mulatta functional	IGKV3-5	IGK	V	TRUE	1206
-Macaca mulatta non-functional	IGKV3-6	IGK	V	FALSE	1207
-Macaca mulatta non-functional	IGKV3-7	IGK	V	FALSE	1208
-Macaca mulatta non-functional	IGKV3-8	IGK	V	FALSE	1209
-Macaca mulatta functional	IGKV3-9	IGK	V	TRUE	1210
-Macaca mulatta functional	IGKV3S1	IGK	V	TRUE	1211
-Macaca mulatta functional	IGKV3S10	IGK	V	TRUE	1212
-Macaca mulatta functional	IGKV3S11	IGK	V	TRUE	1213
-Macaca mulatta functional	IGKV3S2	IGK	V	TRUE	1214
-Macaca mulatta functional	IGKV3S3	IGK	V	TRUE	1215
-Macaca mulatta functional	IGKV3S4	IGK	V	TRUE	1216
-Macaca mulatta functional	IGKV3S5	IGK	V	TRUE	1217
-Macaca mulatta functional	IGKV3S6	IGK	V	TRUE	1218
-Macaca mulatta functional	IGKV3S7	IGK	V	TRUE	1219
-Macaca mulatta functional	IGKV3S8	IGK	V	TRUE	1220
-Macaca mulatta functional	IGKV3S9	IGK	V	TRUE	1221
-Macaca mulatta non-functional	IGKV4-1	IGK	V	FALSE	1222
-Macaca mulatta non-functional	IGKV4-2	IGK	V	FALSE	1223
-Macaca mulatta functional	IGKV4-3	IGK	V	TRUE	1224
-Macaca mulatta functional	IGKV5-1	IGK	V	TRUE	1225
-Macaca mulatta functional	IGKV5-2	IGK	V	TRUE	1226
-Macaca mulatta functional	IGKV6-1	IGK	V	TRUE	1227
-Macaca mulatta functional	IGKV6-2	IGK	V	TRUE	1228
-Macaca mulatta non-functional	IGKV6-3	IGK	V	FALSE	1229
-Macaca mulatta functional	IGKV7-1	IGK	V	TRUE	1230
-Macaca mulatta functional	IGLJ1	IGL	J	TRUE	1231
-Macaca mulatta functional	IGLJ2	IGL	J	TRUE	1232
-Macaca mulatta functional	IGLJ3	IGL	J	TRUE	1233
-Macaca mulatta non-functional	IGLJ4	IGL	J	FALSE	1234
-Macaca mulatta functional	IGLJ5	IGL	J	TRUE	1235
-Macaca mulatta functional	IGLJ6	IGL	J	TRUE	1236
-Macaca mulatta non-functional	IGLV(I)-1	IGL	V	FALSE	1237
-Macaca mulatta non-functional	IGLV(I)-10	IGL	V	FALSE	1238
-Macaca mulatta non-functional	IGLV(I)-11	IGL	V	FALSE	1239
-Macaca mulatta non-functional	IGLV(I)-12	IGL	V	FALSE	1240
-Macaca mulatta non-functional	IGLV(I)-2	IGL	V	FALSE	1241
-Macaca mulatta non-functional	IGLV(I)-3	IGL	V	FALSE	1242
-Macaca mulatta non-functional	IGLV(I)-4	IGL	V	FALSE	1243
-Macaca mulatta non-functional	IGLV(I)-5	IGL	V	FALSE	1244
-Macaca mulatta non-functional	IGLV(I)-6	IGL	V	FALSE	1245
-Macaca mulatta non-functional	IGLV(I)-7	IGL	V	FALSE	1246
-Macaca mulatta non-functional	IGLV(I)-8	IGL	V	FALSE	1247
-Macaca mulatta non-functional	IGLV(I)-9	IGL	V	FALSE	1248
-Macaca mulatta non-functional	IGLV(II)-1	IGL	V	FALSE	1249
-Macaca mulatta non-functional	IGLV(II)-2	IGL	V	FALSE	1250
-Macaca mulatta non-functional	IGLV(III)-1	IGL	V	FALSE	1251
-Macaca mulatta non-functional	IGLV(III)-2	IGL	V	FALSE	1252
-Macaca mulatta non-functional	IGLV(III)-3	IGL	V	FALSE	1253
-Macaca mulatta non-functional	IGLV(III)-4	IGL	V	FALSE	1254
-Macaca mulatta non-functional	IGLV(IV)-1	IGL	V	FALSE	1255
-Macaca mulatta non-functional	IGLV(IV)-2	IGL	V	FALSE	1256
-Macaca mulatta non-functional	IGLV(IV)-3	IGL	V	FALSE	1257
-Macaca mulatta non-functional	IGLV(V)-1	IGL	V	FALSE	1258
-Macaca mulatta non-functional	IGLV(V)-2	IGL	V	FALSE	1259
-Macaca mulatta non-functional	IGLV1-1	IGL	V	FALSE	1260
-Macaca mulatta functional	IGLV1-10	IGL	V	TRUE	1261
-Macaca mulatta functional	IGLV1-11	IGL	V	TRUE	1262
-Macaca mulatta functional	IGLV1-12	IGL	V	TRUE	1263
-Macaca mulatta functional	IGLV1-13	IGL	V	TRUE	1264
-Macaca mulatta functional	IGLV1-14	IGL	V	TRUE	1265
-Macaca mulatta functional	IGLV1-15	IGL	V	TRUE	1266
-Macaca mulatta non-functional	IGLV1-2	IGL	V	FALSE	1267
-Macaca mulatta non-functional	IGLV1-3	IGL	V	FALSE	1268
-Macaca mulatta non-functional	IGLV1-4	IGL	V	FALSE	1269
-Macaca mulatta non-functional	IGLV1-5	IGL	V	FALSE	1270
-Macaca mulatta functional	IGLV1-6	IGL	V	TRUE	1271
-Macaca mulatta functional	IGLV1-7	IGL	V	TRUE	1272
-Macaca mulatta functional	IGLV1-8	IGL	V	TRUE	1273
-Macaca mulatta functional	IGLV1-9	IGL	V	TRUE	1274
-Macaca mulatta functional	IGLV10-1	IGL	V	TRUE	1275
-Macaca mulatta non-functional	IGLV10-2	IGL	V	FALSE	1276
-Macaca mulatta functional	IGLV11-1	IGL	V	TRUE	1277
-Macaca mulatta functional	IGLV1S1	IGL	V	TRUE	1278
-Macaca mulatta functional	IGLV1S2	IGL	V	TRUE	1279
-Macaca mulatta functional	IGLV1S3	IGL	V	TRUE	1280
-Macaca mulatta functional	IGLV1S4	IGL	V	TRUE	1281
-Macaca mulatta non-functional	IGLV1S5	IGL	V	FALSE	1282
-Macaca mulatta functional	IGLV1S6	IGL	V	TRUE	1283
-Macaca mulatta functional	IGLV1S7	IGL	V	TRUE	1284
-Macaca mulatta non-functional	IGLV2-1	IGL	V	FALSE	1285
-Macaca mulatta functional	IGLV2-10	IGL	V	TRUE	1286
-Macaca mulatta non-functional	IGLV2-11	IGL	V	FALSE	1287
-Macaca mulatta non-functional	IGLV2-2	IGL	V	FALSE	1288
-Macaca mulatta functional	IGLV2-3	IGL	V	TRUE	1289
-Macaca mulatta non-functional	IGLV2-4	IGL	V	FALSE	1290
-Macaca mulatta non-functional	IGLV2-5	IGL	V	FALSE	1291
-Macaca mulatta non-functional	IGLV2-6	IGL	V	FALSE	1292
-Macaca mulatta functional	IGLV2-7	IGL	V	TRUE	1293
-Macaca mulatta functional	IGLV2-8	IGL	V	TRUE	1294
-Macaca mulatta functional	IGLV2-9	IGL	V	TRUE	1295
-Macaca mulatta functional	IGLV2S1	IGL	V	TRUE	1296
-Macaca mulatta functional	IGLV2S10	IGL	V	TRUE	1297
-Macaca mulatta functional	IGLV2S11	IGL	V	TRUE	1298
-Macaca mulatta functional	IGLV2S2	IGL	V	TRUE	1299
-Macaca mulatta functional	IGLV2S3	IGL	V	TRUE	1300
-Macaca mulatta functional	IGLV2S4	IGL	V	TRUE	1301
-Macaca mulatta functional	IGLV2S5	IGL	V	TRUE	1302
-Macaca mulatta functional	IGLV2S6	IGL	V	TRUE	1303
-Macaca mulatta functional	IGLV2S7	IGL	V	TRUE	1304
-Macaca mulatta non-functional	IGLV2S8	IGL	V	FALSE	1305
-Macaca mulatta functional	IGLV2S9	IGL	V	TRUE	1306
-Macaca mulatta functional	IGLV3-1	IGL	V	TRUE	1307
-Macaca mulatta functional	IGLV3-10	IGL	V	TRUE	1308
-Macaca mulatta non-functional	IGLV3-11	IGL	V	FALSE	1309
-Macaca mulatta functional	IGLV3-12	IGL	V	TRUE	1310
-Macaca mulatta non-functional	IGLV3-13	IGL	V	FALSE	1311
-Macaca mulatta non-functional	IGLV3-14	IGL	V	FALSE	1312
-Macaca mulatta non-functional	IGLV3-15	IGL	V	FALSE	1313
-Macaca mulatta non-functional	IGLV3-16	IGL	V	FALSE	1314
-Macaca mulatta non-functional	IGLV3-17	IGL	V	FALSE	1315
-Macaca mulatta non-functional	IGLV3-18	IGL	V	FALSE	1316
-Macaca mulatta functional	IGLV3-19	IGL	V	TRUE	1317
-Macaca mulatta functional	IGLV3-2	IGL	V	TRUE	1318
-Macaca mulatta non-functional	IGLV3-20	IGL	V	FALSE	1319
-Macaca mulatta functional	IGLV3-3	IGL	V	TRUE	1320
-Macaca mulatta functional	IGLV3-4	IGL	V	TRUE	1321
-Macaca mulatta functional	IGLV3-5	IGL	V	TRUE	1322
-Macaca mulatta functional	IGLV3-6	IGL	V	TRUE	1323
-Macaca mulatta non-functional	IGLV3-7	IGL	V	FALSE	1324
-Macaca mulatta non-functional	IGLV3-8	IGL	V	FALSE	1325
-Macaca mulatta non-functional	IGLV3-9	IGL	V	FALSE	1326
-Macaca mulatta functional	IGLV3S1	IGL	V	TRUE	1327
-Macaca mulatta functional	IGLV3S10	IGL	V	TRUE	1328
-Macaca mulatta functional	IGLV3S11	IGL	V	TRUE	1329
-Macaca mulatta functional	IGLV3S12	IGL	V	TRUE	1330
-Macaca mulatta functional	IGLV3S13	IGL	V	TRUE	1331
-Macaca mulatta functional	IGLV3S14	IGL	V	TRUE	1332
-Macaca mulatta functional	IGLV3S15	IGL	V	TRUE	1333
-Macaca mulatta functional	IGLV3S16	IGL	V	TRUE	1334
-Macaca mulatta non-functional	IGLV3S18	IGL	V	FALSE	1335
-Macaca mulatta non-functional	IGLV3S19	IGL	V	FALSE	1336
-Macaca mulatta functional	IGLV3S2	IGL	V	TRUE	1337
-Macaca mulatta non-functional	IGLV3S20	IGL	V	FALSE	1338
-Macaca mulatta functional	IGLV3S3	IGL	V	TRUE	1339
-Macaca mulatta functional	IGLV3S4	IGL	V	TRUE	1340
-Macaca mulatta functional	IGLV3S5	IGL	V	TRUE	1341
-Macaca mulatta functional	IGLV3S6	IGL	V	TRUE	1342
-Macaca mulatta functional	IGLV3S7	IGL	V	TRUE	1343
-Macaca mulatta functional	IGLV3S8	IGL	V	TRUE	1344
-Macaca mulatta functional	IGLV3S9	IGL	V	TRUE	1345
-Macaca mulatta non-functional	IGLV4-1	IGL	V	FALSE	1346
-Macaca mulatta functional	IGLV4-2	IGL	V	TRUE	1347
-Macaca mulatta non-functional	IGLV4-3	IGL	V	FALSE	1348
-Macaca mulatta functional	IGLV4-4	IGL	V	TRUE	1349
-Macaca mulatta functional	IGLV4S1	IGL	V	TRUE	1350
-Macaca mulatta functional	IGLV4S2	IGL	V	TRUE	1351
-Macaca mulatta functional	IGLV4S3	IGL	V	TRUE	1352
-Macaca mulatta functional	IGLV4S4	IGL	V	TRUE	1353
-Macaca mulatta non-functional	IGLV5-1	IGL	V	FALSE	1354
-Macaca mulatta functional	IGLV5-10	IGL	V	TRUE	1355
-Macaca mulatta functional	IGLV5-11	IGL	V	TRUE	1356
-Macaca mulatta non-functional	IGLV5-12	IGL	V	FALSE	1357
-Macaca mulatta functional	IGLV5-13	IGL	V	TRUE	1358
-Macaca mulatta functional	IGLV5-14	IGL	V	TRUE	1359
-Macaca mulatta non-functional	IGLV5-15	IGL	V	FALSE	1360
-Macaca mulatta non-functional	IGLV5-2	IGL	V	FALSE	1361
-Macaca mulatta non-functional	IGLV5-3	IGL	V	FALSE	1362
-Macaca mulatta non-functional	IGLV5-4	IGL	V	FALSE	1363
-Macaca mulatta functional	IGLV5-5	IGL	V	TRUE	1364
-Macaca mulatta functional	IGLV5-6	IGL	V	TRUE	1365
-Macaca mulatta functional	IGLV5-7	IGL	V	TRUE	1366
-Macaca mulatta non-functional	IGLV5-8	IGL	V	FALSE	1367
-Macaca mulatta non-functional	IGLV5-9	IGL	V	FALSE	1368
-Macaca mulatta non-functional	IGLV5S1	IGL	V	FALSE	1369
-Macaca mulatta functional	IGLV5S2	IGL	V	TRUE	1370
-Macaca mulatta functional	IGLV5S3	IGL	V	TRUE	1371
-Macaca mulatta functional	IGLV5S4	IGL	V	TRUE	1372
-Macaca mulatta functional	IGLV6-1	IGL	V	TRUE	1373
-Macaca mulatta functional	IGLV6-2	IGL	V	TRUE	1374
-Macaca mulatta non-functional	IGLV6-3	IGL	V	FALSE	1375
-Macaca mulatta non-functional	IGLV6-4	IGL	V	FALSE	1376
-Macaca mulatta functional	IGLV6-5	IGL	V	TRUE	1377
-Macaca mulatta functional	IGLV7-1	IGL	V	TRUE	1378
-Macaca mulatta functional	IGLV7-2	IGL	V	TRUE	1379
-Macaca mulatta functional	IGLV7-3	IGL	V	TRUE	1380
-Macaca mulatta functional	IGLV7-4	IGL	V	TRUE	1381
-Macaca mulatta non-functional	IGLV7-5	IGL	V	FALSE	1382
-Macaca mulatta non-functional	IGLV7-6	IGL	V	FALSE	1383
-Macaca mulatta non-functional	IGLV7-7	IGL	V	FALSE	1384
-Macaca mulatta functional	IGLV8-1	IGL	V	TRUE	1385
-Macaca mulatta non-functional	IGLV8S1	IGL	V	FALSE	1386
-Macaca mulatta functional	IGLV9-1	IGL	V	TRUE	1387
-Macaca mulatta functional	TRBD1	TRB	D	TRUE	1388
-Macaca mulatta functional	TRBD2	TRB	D	TRUE	1389
-Macaca mulatta functional	TRBJ1-1	TRB	J	TRUE	1390
-Macaca mulatta functional	TRBJ1-2	TRB	J	TRUE	1391
-Macaca mulatta functional	TRBJ1-3	TRB	J	TRUE	1392
-Macaca mulatta functional	TRBJ1-4	TRB	J	TRUE	1393
-Macaca mulatta functional	TRBJ1-5	TRB	J	TRUE	1394
-Macaca mulatta functional	TRBJ1-6	TRB	J	TRUE	1395
-Macaca mulatta functional	TRBJ2-1	TRB	J	TRUE	1396
-Macaca mulatta functional	TRBJ2-2	TRB	J	TRUE	1397
-Macaca mulatta non-functional	TRBJ2-2P	TRB	J	FALSE	1398
-Macaca mulatta functional	TRBJ2-3	TRB	J	TRUE	1399
-Macaca mulatta functional	TRBJ2-4	TRB	J	TRUE	1400
-Macaca mulatta functional	TRBJ2-5	TRB	J	TRUE	1401
-Macaca mulatta functional	TRBJ2-6	TRB	J	TRUE	1402
-Macaca mulatta functional	TRBJ2-7	TRB	J	TRUE	1403
-Macaca mulatta non-functional	TRBV1-1	TRB	V	FALSE	1404
-Macaca mulatta non-functional	TRBV1-2	TRB	V	FALSE	1405
-Macaca mulatta non-functional	TRBV1-3	TRB	V	FALSE	1406
-Macaca mulatta functional	TRBV10-1	TRB	V	TRUE	1407
-Macaca mulatta functional	TRBV10-2	TRB	V	TRUE	1408
-Macaca mulatta functional	TRBV10-3	TRB	V	TRUE	1409
-Macaca mulatta functional	TRBV11-1	TRB	V	TRUE	1410
-Macaca mulatta functional	TRBV11-2	TRB	V	TRUE	1411
-Macaca mulatta functional	TRBV11-3	TRB	V	TRUE	1412
-Macaca mulatta functional	TRBV12-1	TRB	V	TRUE	1413
-Macaca mulatta functional	TRBV12-2	TRB	V	TRUE	1414
-Macaca mulatta functional	TRBV12-3	TRB	V	TRUE	1415
-Macaca mulatta functional	TRBV12-4	TRB	V	TRUE	1416
-Macaca mulatta functional	TRBV13	TRB	V	TRUE	1417
-Macaca mulatta functional	TRBV14	TRB	V	TRUE	1418
-Macaca mulatta functional	TRBV15	TRB	V	TRUE	1419
-Macaca mulatta functional	TRBV16	TRB	V	TRUE	1420
-Macaca mulatta functional	TRBV18	TRB	V	TRUE	1421
-Macaca mulatta functional	TRBV19	TRB	V	TRUE	1422
-Macaca mulatta functional	TRBV2-1	TRB	V	TRUE	1423
-Macaca mulatta functional	TRBV2-2	TRB	V	TRUE	1424
-Macaca mulatta functional	TRBV2-3	TRB	V	TRUE	1425
-Macaca mulatta functional	TRBV20-1	TRB	V	TRUE	1426
-Macaca mulatta functional	TRBV21-1	TRB	V	TRUE	1427
-Macaca mulatta non-functional	TRBV22-1	TRB	V	FALSE	1428
-Macaca mulatta functional	TRBV23-1	TRB	V	TRUE	1429
-Macaca mulatta functional	TRBV24-1	TRB	V	TRUE	1430
-Macaca mulatta functional	TRBV25-1	TRB	V	TRUE	1431
-Macaca mulatta non-functional	TRBV26	TRB	V	FALSE	1432
-Macaca mulatta functional	TRBV27	TRB	V	TRUE	1433
-Macaca mulatta functional	TRBV28	TRB	V	TRUE	1434
-Macaca mulatta functional	TRBV29-1	TRB	V	TRUE	1435
-Macaca mulatta functional	TRBV3-1	TRB	V	TRUE	1436
-Macaca mulatta functional	TRBV3-2	TRB	V	TRUE	1437
-Macaca mulatta functional	TRBV3-3	TRB	V	TRUE	1438
-Macaca mulatta functional	TRBV3-4	TRB	V	TRUE	1439
-Macaca mulatta functional	TRBV30	TRB	V	TRUE	1440
-Macaca mulatta functional	TRBV4-1	TRB	V	TRUE	1441
-Macaca mulatta functional	TRBV4-2	TRB	V	TRUE	1442
-Macaca mulatta functional	TRBV4-3	TRB	V	TRUE	1443
-Macaca mulatta non-functional	TRBV5-1	TRB	V	FALSE	1444
-Macaca mulatta functional	TRBV5-10	TRB	V	TRUE	1445
-Macaca mulatta non-functional	TRBV5-2	TRB	V	FALSE	1446
-Macaca mulatta non-functional	TRBV5-3	TRB	V	FALSE	1447
-Macaca mulatta functional	TRBV5-4	TRB	V	TRUE	1448
-Macaca mulatta functional	TRBV5-5	TRB	V	TRUE	1449
-Macaca mulatta functional	TRBV5-6	TRB	V	TRUE	1450
-Macaca mulatta functional	TRBV5-7	TRB	V	TRUE	1451
-Macaca mulatta functional	TRBV5-8	TRB	V	TRUE	1452
-Macaca mulatta functional	TRBV5-9	TRB	V	TRUE	1453
-Macaca mulatta functional	TRBV6-1	TRB	V	TRUE	1454
-Macaca mulatta functional	TRBV6-2	TRB	V	TRUE	1455
-Macaca mulatta functional	TRBV6-3	TRB	V	TRUE	1456
-Macaca mulatta functional	TRBV6-4	TRB	V	TRUE	1457
-Macaca mulatta functional	TRBV6-5	TRB	V	TRUE	1458
-Macaca mulatta functional	TRBV6-6	TRB	V	TRUE	1459
-Macaca mulatta functional	TRBV6-7	TRB	V	TRUE	1460
-Macaca mulatta functional	TRBV6-8	TRB	V	TRUE	1461
-Macaca mulatta non-functional	TRBV7-1	TRB	V	FALSE	1462
-Macaca mulatta functional	TRBV7-10	TRB	V	TRUE	1463
-Macaca mulatta functional	TRBV7-2	TRB	V	TRUE	1464
-Macaca mulatta functional	TRBV7-3	TRB	V	TRUE	1465
-Macaca mulatta functional	TRBV7-4	TRB	V	TRUE	1466
-Macaca mulatta functional	TRBV7-5	TRB	V	TRUE	1467
-Macaca mulatta functional	TRBV7-6	TRB	V	TRUE	1468
-Macaca mulatta functional	TRBV7-7	TRB	V	TRUE	1469
-Macaca mulatta non-functional	TRBV7-8	TRB	V	FALSE	1470
-Macaca mulatta functional	TRBV7-9	TRB	V	TRUE	1471
-Macaca mulatta non-functional	TRBV8-1	TRB	V	FALSE	1472
-Macaca mulatta functional	TRBV9	TRB	V	TRUE	1473
-Macaca mulatta non-functional	TRBVA	TRB	V	FALSE	1474
-Macaca mulatta non-functional	TRBVB	TRB	V	FALSE	1475
-Mus musculus functional	IGHD	IGH	D	TRUE	1476
-Mus musculus functional	IGHD1-1	IGH	D	TRUE	1477
-Mus musculus functional	IGHD1-2	IGH	D	TRUE	1478
-Mus musculus functional	IGHD1-3	IGH	D	TRUE	1479
-Mus musculus functional	IGHD2-1	IGH	D	TRUE	1480
-Mus musculus functional	IGHD2-10	IGH	D	TRUE	1481
-Mus musculus functional	IGHD2-11	IGH	D	TRUE	1482
-Mus musculus functional	IGHD2-12	IGH	D	TRUE	1483
-Mus musculus functional	IGHD2-13	IGH	D	TRUE	1484
-Mus musculus functional	IGHD2-14	IGH	D	TRUE	1485
-Mus musculus functional	IGHD2-2	IGH	D	TRUE	1486
-Mus musculus functional	IGHD2-3	IGH	D	TRUE	1487
-Mus musculus functional	IGHD2-4	IGH	D	TRUE	1488
-Mus musculus functional	IGHD2-5	IGH	D	TRUE	1489
-Mus musculus functional	IGHD2-6	IGH	D	TRUE	1490
-Mus musculus functional	IGHD2-7	IGH	D	TRUE	1491
-Mus musculus functional	IGHD2-8	IGH	D	TRUE	1492
-Mus musculus functional	IGHD2-9	IGH	D	TRUE	1493
-Mus musculus functional	IGHD3-1	IGH	D	TRUE	1494
-Mus musculus functional	IGHD3-2	IGH	D	TRUE	1495
-Mus musculus functional	IGHD3-3	IGH	D	TRUE	1496
-Mus musculus functional	IGHD4-1	IGH	D	TRUE	1497
-Mus musculus non-functional	IGHD5-1	IGH	D	FALSE	1498
-Mus musculus non-functional	IGHD5-2	IGH	D	FALSE	1499
-Mus musculus non-functional	IGHD5-3	IGH	D	FALSE	1500
-Mus musculus non-functional	IGHD5-4	IGH	D	FALSE	1501
-Mus musculus non-functional	IGHD5-5	IGH	D	FALSE	1502
-Mus musculus non-functional	IGHD5-6	IGH	D	FALSE	1503
-Mus musculus non-functional	IGHD5-7	IGH	D	FALSE	1504
-Mus musculus non-functional	IGHD5-8	IGH	D	FALSE	1505
-Mus musculus non-functional	IGHD6-1	IGH	D	FALSE	1506
-Mus musculus non-functional	IGHD6-2	IGH	D	FALSE	1507
-Mus musculus non-functional	IGHD6-3	IGH	D	FALSE	1508
-Mus musculus functional	IGHJ1	IGH	J	TRUE	1509
-Mus musculus functional	IGHJ2	IGH	J	TRUE	1510
-Mus musculus functional	IGHJ3	IGH	J	TRUE	1511
-Mus musculus functional	IGHJ4	IGH	J	TRUE	1512
-Mus musculus non-functional	IGHV(I)-1	IGH	V	FALSE	1513
-Mus musculus non-functional	IGHV(II)-1	IGH	V	FALSE	1514
-Mus musculus non-functional	IGHV(II)-2	IGH	V	FALSE	1515
-Mus musculus non-functional	IGHV(II)-3	IGH	V	FALSE	1516
-Mus musculus non-functional	IGHV(II)-4	IGH	V	FALSE	1517
-Mus musculus non-functional	IGHV(II)-5	IGH	V	FALSE	1518
-Mus musculus non-functional	IGHV(III)-1	IGH	V	FALSE	1519
-Mus musculus non-functional	IGHV(III)-10	IGH	V	FALSE	1520
-Mus musculus non-functional	IGHV(III)-11	IGH	V	FALSE	1521
-Mus musculus non-functional	IGHV(III)-12	IGH	V	FALSE	1522
-Mus musculus non-functional	IGHV(III)-13	IGH	V	FALSE	1523
-Mus musculus non-functional	IGHV(III)-2	IGH	V	FALSE	1524
-Mus musculus non-functional	IGHV(III)-3	IGH	V	FALSE	1525
-Mus musculus non-functional	IGHV(III)-4	IGH	V	FALSE	1526
-Mus musculus non-functional	IGHV(III)-5	IGH	V	FALSE	1527
-Mus musculus non-functional	IGHV(III)-6	IGH	V	FALSE	1528
-Mus musculus non-functional	IGHV(III)-7	IGH	V	FALSE	1529
-Mus musculus non-functional	IGHV(III)-8	IGH	V	FALSE	1530
-Mus musculus non-functional	IGHV(III)-9	IGH	V	FALSE	1531
-Mus musculus non-functional	IGHV1-1	IGH	V	FALSE	1532
-Mus musculus non-functional	IGHV1-10	IGH	V	FALSE	1533
-Mus musculus functional	IGHV1-11	IGH	V	TRUE	1534
-Mus musculus functional	IGHV1-12	IGH	V	TRUE	1535
-Mus musculus non-functional	IGHV1-13	IGH	V	FALSE	1536
-Mus musculus functional	IGHV1-14	IGH	V	TRUE	1537
-Mus musculus functional	IGHV1-15	IGH	V	TRUE	1538
-Mus musculus non-functional	IGHV1-16	IGH	V	FALSE	1539
-Mus musculus non-functional	IGHV1-17	IGH	V	FALSE	1540
-Mus musculus functional	IGHV1-17-1	IGH	V	TRUE	1541
-Mus musculus functional	IGHV1-18	IGH	V	TRUE	1542
-Mus musculus functional	IGHV1-19	IGH	V	TRUE	1543
-Mus musculus non-functional	IGHV1-19-1	IGH	V	FALSE	1544
-Mus musculus non-functional	IGHV1-2	IGH	V	FALSE	1545
-Mus musculus functional	IGHV1-20	IGH	V	TRUE	1546
-Mus musculus non-functional	IGHV1-21	IGH	V	FALSE	1547
-Mus musculus non-functional	IGHV1-21-1	IGH	V	FALSE	1548
-Mus musculus functional	IGHV1-22	IGH	V	TRUE	1549
-Mus musculus non-functional	IGHV1-23	IGH	V	FALSE	1550
-Mus musculus non-functional	IGHV1-24	IGH	V	FALSE	1551
-Mus musculus non-functional	IGHV1-25	IGH	V	FALSE	1552
-Mus musculus functional	IGHV1-26	IGH	V	TRUE	1553
-Mus musculus non-functional	IGHV1-27	IGH	V	FALSE	1554
-Mus musculus non-functional	IGHV1-28	IGH	V	FALSE	1555
-Mus musculus non-functional	IGHV1-29	IGH	V	FALSE	1556
-Mus musculus non-functional	IGHV1-3	IGH	V	FALSE	1557
-Mus musculus non-functional	IGHV1-30	IGH	V	FALSE	1558
-Mus musculus functional	IGHV1-31	IGH	V	TRUE	1559
-Mus musculus non-functional	IGHV1-32	IGH	V	FALSE	1560
-Mus musculus non-functional	IGHV1-33	IGH	V	FALSE	1561
-Mus musculus functional	IGHV1-34	IGH	V	TRUE	1562
-Mus musculus non-functional	IGHV1-35	IGH	V	FALSE	1563
-Mus musculus functional	IGHV1-36	IGH	V	TRUE	1564
-Mus musculus functional	IGHV1-37	IGH	V	TRUE	1565
-Mus musculus non-functional	IGHV1-38	IGH	V	FALSE	1566
-Mus musculus functional	IGHV1-39	IGH	V	TRUE	1567
-Mus musculus functional	IGHV1-4	IGH	V	TRUE	1568
-Mus musculus non-functional	IGHV1-40	IGH	V	FALSE	1569
-Mus musculus non-functional	IGHV1-41	IGH	V	FALSE	1570
-Mus musculus functional	IGHV1-42	IGH	V	TRUE	1571
-Mus musculus functional	IGHV1-43	IGH	V	TRUE	1572
-Mus musculus non-functional	IGHV1-44	IGH	V	FALSE	1573
-Mus musculus non-functional	IGHV1-45	IGH	V	FALSE	1574
-Mus musculus non-functional	IGHV1-46	IGH	V	FALSE	1575
-Mus musculus functional	IGHV1-47	IGH	V	TRUE	1576
-Mus musculus non-functional	IGHV1-48	IGH	V	FALSE	1577
-Mus musculus functional	IGHV1-49	IGH	V	TRUE	1578
-Mus musculus functional	IGHV1-5	IGH	V	TRUE	1579
-Mus musculus functional	IGHV1-50	IGH	V	TRUE	1580
-Mus musculus non-functional	IGHV1-51	IGH	V	FALSE	1581
-Mus musculus functional	IGHV1-52	IGH	V	TRUE	1582
-Mus musculus functional	IGHV1-53	IGH	V	TRUE	1583
-Mus musculus functional	IGHV1-54	IGH	V	TRUE	1584
-Mus musculus functional	IGHV1-55	IGH	V	TRUE	1585
-Mus musculus functional	IGHV1-56	IGH	V	TRUE	1586
-Mus musculus non-functional	IGHV1-57	IGH	V	FALSE	1587
-Mus musculus functional	IGHV1-58	IGH	V	TRUE	1588
-Mus musculus functional	IGHV1-59	IGH	V	TRUE	1589
-Mus musculus non-functional	IGHV1-6	IGH	V	FALSE	1590
-Mus musculus non-functional	IGHV1-60	IGH	V	FALSE	1591
-Mus musculus functional	IGHV1-61	IGH	V	TRUE	1592
-Mus musculus non-functional	IGHV1-62	IGH	V	FALSE	1593
-Mus musculus functional	IGHV1-62-1	IGH	V	TRUE	1594
-Mus musculus functional	IGHV1-62-2	IGH	V	TRUE	1595
-Mus musculus non-functional	IGHV1-62-3	IGH	V	FALSE	1596
-Mus musculus functional	IGHV1-63	IGH	V	TRUE	1597
-Mus musculus functional	IGHV1-64	IGH	V	TRUE	1598
-Mus musculus non-functional	IGHV1-65	IGH	V	FALSE	1599
-Mus musculus functional	IGHV1-66	IGH	V	TRUE	1600
-Mus musculus functional	IGHV1-67	IGH	V	TRUE	1601
-Mus musculus non-functional	IGHV1-68	IGH	V	FALSE	1602
-Mus musculus functional	IGHV1-69	IGH	V	TRUE	1603
-Mus musculus functional	IGHV1-7	IGH	V	TRUE	1604
-Mus musculus non-functional	IGHV1-70	IGH	V	FALSE	1605
-Mus musculus functional	IGHV1-71	IGH	V	TRUE	1606
-Mus musculus functional	IGHV1-72	IGH	V	TRUE	1607
-Mus musculus non-functional	IGHV1-73	IGH	V	FALSE	1608
-Mus musculus functional	IGHV1-74	IGH	V	TRUE	1609
-Mus musculus functional	IGHV1-75	IGH	V	TRUE	1610
-Mus musculus functional	IGHV1-76	IGH	V	TRUE	1611
-Mus musculus functional	IGHV1-77	IGH	V	TRUE	1612
-Mus musculus functional	IGHV1-78	IGH	V	TRUE	1613
-Mus musculus non-functional	IGHV1-79	IGH	V	FALSE	1614
-Mus musculus non-functional	IGHV1-8	IGH	V	FALSE	1615
-Mus musculus functional	IGHV1-80	IGH	V	TRUE	1616
-Mus musculus functional	IGHV1-81	IGH	V	TRUE	1617
-Mus musculus functional	IGHV1-82	IGH	V	TRUE	1618
-Mus musculus non-functional	IGHV1-83	IGH	V	FALSE	1619
-Mus musculus functional	IGHV1-84	IGH	V	TRUE	1620
-Mus musculus functional	IGHV1-85	IGH	V	TRUE	1621
-Mus musculus non-functional	IGHV1-86	IGH	V	FALSE	1622
-Mus musculus functional	IGHV1-9	IGH	V	TRUE	1623
-Mus musculus functional	IGHV10-1	IGH	V	TRUE	1624
-Mus musculus non-functional	IGHV10-2	IGH	V	FALSE	1625
-Mus musculus functional	IGHV10-3	IGH	V	TRUE	1626
-Mus musculus non-functional	IGHV10-4	IGH	V	FALSE	1627
-Mus musculus functional	IGHV10S3	IGH	V	TRUE	1628
-Mus musculus non-functional	IGHV10S4	IGH	V	FALSE	1629
-Mus musculus non-functional	IGHV10S5	IGH	V	FALSE	1630
-Mus musculus functional	IGHV11-1	IGH	V	TRUE	1631
-Mus musculus functional	IGHV11-2	IGH	V	TRUE	1632
-Mus musculus non-functional	IGHV12-1	IGH	V	FALSE	1633
-Mus musculus functional	IGHV12-1-1	IGH	V	TRUE	1634
-Mus musculus non-functional	IGHV12-1-2	IGH	V	FALSE	1635
-Mus musculus non-functional	IGHV12-2	IGH	V	FALSE	1636
-Mus musculus non-functional	IGHV12-2-1	IGH	V	FALSE	1637
-Mus musculus functional	IGHV12-3	IGH	V	TRUE	1638
-Mus musculus non-functional	IGHV12S2	IGH	V	FALSE	1639
-Mus musculus non-functional	IGHV13-1	IGH	V	FALSE	1640
-Mus musculus functional	IGHV13-2	IGH	V	TRUE	1641
-Mus musculus functional	IGHV14-1	IGH	V	TRUE	1642
-Mus musculus functional	IGHV14-2	IGH	V	TRUE	1643
-Mus musculus functional	IGHV14-3	IGH	V	TRUE	1644
-Mus musculus functional	IGHV14-4	IGH	V	TRUE	1645
-Mus musculus non-functional	IGHV14S4	IGH	V	FALSE	1646
-Mus musculus non-functional	IGHV15-1	IGH	V	FALSE	1647
-Mus musculus functional	IGHV15-2	IGH	V	TRUE	1648
-Mus musculus functional	IGHV16-1	IGH	V	TRUE	1649
-Mus musculus non-functional	IGHV1S10	IGH	V	FALSE	1650
-Mus musculus non-functional	IGHV1S100	IGH	V	FALSE	1651
-Mus musculus non-functional	IGHV1S101	IGH	V	FALSE	1652
-Mus musculus non-functional	IGHV1S103	IGH	V	FALSE	1653
-Mus musculus non-functional	IGHV1S107	IGH	V	FALSE	1654
-Mus musculus non-functional	IGHV1S108	IGH	V	FALSE	1655
-Mus musculus non-functional	IGHV1S11	IGH	V	FALSE	1656
-Mus musculus non-functional	IGHV1S110	IGH	V	FALSE	1657
-Mus musculus non-functional	IGHV1S111	IGH	V	FALSE	1658
-Mus musculus non-functional	IGHV1S112	IGH	V	FALSE	1659
-Mus musculus non-functional	IGHV1S113	IGH	V	FALSE	1660
-Mus musculus non-functional	IGHV1S118	IGH	V	FALSE	1661
-Mus musculus functional	IGHV1S12	IGH	V	TRUE	1662
-Mus musculus non-functional	IGHV1S120	IGH	V	FALSE	1663
-Mus musculus non-functional	IGHV1S121	IGH	V	FALSE	1664
-Mus musculus non-functional	IGHV1S122	IGH	V	FALSE	1665
-Mus musculus non-functional	IGHV1S124	IGH	V	FALSE	1666
-Mus musculus non-functional	IGHV1S126	IGH	V	FALSE	1667
-Mus musculus non-functional	IGHV1S127	IGH	V	FALSE	1668
-Mus musculus non-functional	IGHV1S130	IGH	V	FALSE	1669
-Mus musculus non-functional	IGHV1S132	IGH	V	FALSE	1670
-Mus musculus non-functional	IGHV1S134	IGH	V	FALSE	1671
-Mus musculus non-functional	IGHV1S135	IGH	V	FALSE	1672
-Mus musculus non-functional	IGHV1S136	IGH	V	FALSE	1673
-Mus musculus non-functional	IGHV1S137	IGH	V	FALSE	1674
-Mus musculus functional	IGHV1S14	IGH	V	TRUE	1675
-Mus musculus non-functional	IGHV1S15	IGH	V	FALSE	1676
-Mus musculus non-functional	IGHV1S16	IGH	V	FALSE	1677
-Mus musculus non-functional	IGHV1S17	IGH	V	FALSE	1678
-Mus musculus non-functional	IGHV1S18	IGH	V	FALSE	1679
-Mus musculus non-functional	IGHV1S19	IGH	V	FALSE	1680
-Mus musculus functional	IGHV1S20	IGH	V	TRUE	1681
-Mus musculus functional	IGHV1S21	IGH	V	TRUE	1682
-Mus musculus functional	IGHV1S22	IGH	V	TRUE	1683
-Mus musculus functional	IGHV1S26	IGH	V	TRUE	1684
-Mus musculus non-functional	IGHV1S28	IGH	V	FALSE	1685
-Mus musculus functional	IGHV1S29	IGH	V	TRUE	1686
-Mus musculus functional	IGHV1S30	IGH	V	TRUE	1687
-Mus musculus functional	IGHV1S31	IGH	V	TRUE	1688
-Mus musculus functional	IGHV1S32	IGH	V	TRUE	1689
-Mus musculus functional	IGHV1S33	IGH	V	TRUE	1690
-Mus musculus functional	IGHV1S34	IGH	V	TRUE	1691
-Mus musculus functional	IGHV1S35	IGH	V	TRUE	1692
-Mus musculus functional	IGHV1S36	IGH	V	TRUE	1693
-Mus musculus functional	IGHV1S37	IGH	V	TRUE	1694
-Mus musculus functional	IGHV1S40	IGH	V	TRUE	1695
-Mus musculus functional	IGHV1S41	IGH	V	TRUE	1696
-Mus musculus non-functional	IGHV1S44	IGH	V	FALSE	1697
-Mus musculus functional	IGHV1S45	IGH	V	TRUE	1698
-Mus musculus non-functional	IGHV1S46	IGH	V	FALSE	1699
-Mus musculus non-functional	IGHV1S47	IGH	V	FALSE	1700
-Mus musculus functional	IGHV1S49	IGH	V	TRUE	1701
-Mus musculus functional	IGHV1S5	IGH	V	TRUE	1702
-Mus musculus functional	IGHV1S50	IGH	V	TRUE	1703
-Mus musculus non-functional	IGHV1S51	IGH	V	FALSE	1704
-Mus musculus functional	IGHV1S52	IGH	V	TRUE	1705
-Mus musculus functional	IGHV1S53	IGH	V	TRUE	1706
-Mus musculus functional	IGHV1S55	IGH	V	TRUE	1707
-Mus musculus functional	IGHV1S56	IGH	V	TRUE	1708
-Mus musculus non-functional	IGHV1S57	IGH	V	FALSE	1709
-Mus musculus functional	IGHV1S61	IGH	V	TRUE	1710
-Mus musculus non-functional	IGHV1S65	IGH	V	FALSE	1711
-Mus musculus non-functional	IGHV1S67	IGH	V	FALSE	1712
-Mus musculus non-functional	IGHV1S68	IGH	V	FALSE	1713
-Mus musculus non-functional	IGHV1S70	IGH	V	FALSE	1714
-Mus musculus non-functional	IGHV1S72	IGH	V	FALSE	1715
-Mus musculus non-functional	IGHV1S73	IGH	V	FALSE	1716
-Mus musculus non-functional	IGHV1S74	IGH	V	FALSE	1717
-Mus musculus non-functional	IGHV1S75	IGH	V	FALSE	1718
-Mus musculus non-functional	IGHV1S78	IGH	V	FALSE	1719
-Mus musculus non-functional	IGHV1S81	IGH	V	FALSE	1720
-Mus musculus non-functional	IGHV1S82	IGH	V	FALSE	1721
-Mus musculus non-functional	IGHV1S83	IGH	V	FALSE	1722
-Mus musculus non-functional	IGHV1S84	IGH	V	FALSE	1723
-Mus musculus non-functional	IGHV1S87	IGH	V	FALSE	1724
-Mus musculus non-functional	IGHV1S88	IGH	V	FALSE	1725
-Mus musculus non-functional	IGHV1S9	IGH	V	FALSE	1726
-Mus musculus non-functional	IGHV1S92	IGH	V	FALSE	1727
-Mus musculus non-functional	IGHV1S95	IGH	V	FALSE	1728
-Mus musculus non-functional	IGHV1S96	IGH	V	FALSE	1729
-Mus musculus non-functional	IGHV2-1	IGH	V	FALSE	1730
-Mus musculus functional	IGHV2-2	IGH	V	TRUE	1731
-Mus musculus non-functional	IGHV2-2-1	IGH	V	FALSE	1732
-Mus musculus functional	IGHV2-2-2	IGH	V	TRUE	1733
-Mus musculus functional	IGHV2-3	IGH	V	TRUE	1734
-Mus musculus functional	IGHV2-3-1	IGH	V	TRUE	1735
-Mus musculus functional	IGHV2-4	IGH	V	TRUE	1736
-Mus musculus functional	IGHV2-4-1	IGH	V	TRUE	1737
-Mus musculus functional	IGHV2-5	IGH	V	TRUE	1738
-Mus musculus functional	IGHV2-5-1	IGH	V	TRUE	1739
-Mus musculus functional	IGHV2-6	IGH	V	TRUE	1740
-Mus musculus functional	IGHV2-6-1	IGH	V	TRUE	1741
-Mus musculus functional	IGHV2-6-2	IGH	V	TRUE	1742
-Mus musculus functional	IGHV2-6-3	IGH	V	TRUE	1743
-Mus musculus functional	IGHV2-6-4	IGH	V	TRUE	1744
-Mus musculus functional	IGHV2-6-5	IGH	V	TRUE	1745
-Mus musculus functional	IGHV2-6-6	IGH	V	TRUE	1746
-Mus musculus functional	IGHV2-6-7	IGH	V	TRUE	1747
-Mus musculus functional	IGHV2-6-8	IGH	V	TRUE	1748
-Mus musculus functional	IGHV2-7	IGH	V	TRUE	1749
-Mus musculus non-functional	IGHV2-8	IGH	V	FALSE	1750
-Mus musculus functional	IGHV2-9	IGH	V	TRUE	1751
-Mus musculus functional	IGHV2-9-1	IGH	V	TRUE	1752
-Mus musculus functional	IGHV2S3	IGH	V	TRUE	1753
-Mus musculus functional	IGHV3-1	IGH	V	TRUE	1754
-Mus musculus functional	IGHV3-2	IGH	V	TRUE	1755
-Mus musculus functional	IGHV3-3	IGH	V	TRUE	1756
-Mus musculus functional	IGHV3-4	IGH	V	TRUE	1757
-Mus musculus functional	IGHV3-5	IGH	V	TRUE	1758
-Mus musculus functional	IGHV3-6	IGH	V	TRUE	1759
-Mus musculus non-functional	IGHV3-7	IGH	V	FALSE	1760
-Mus musculus functional	IGHV3-8	IGH	V	TRUE	1761
-Mus musculus functional	IGHV3S1	IGH	V	TRUE	1762
-Mus musculus non-functional	IGHV3S7	IGH	V	FALSE	1763
-Mus musculus functional	IGHV4-1	IGH	V	TRUE	1764
-Mus musculus functional	IGHV4-2	IGH	V	TRUE	1765
-Mus musculus non-functional	IGHV5-1	IGH	V	FALSE	1766
-Mus musculus non-functional	IGHV5-10	IGH	V	FALSE	1767
-Mus musculus non-functional	IGHV5-10-1	IGH	V	FALSE	1768
-Mus musculus non-functional	IGHV5-10-2	IGH	V	FALSE	1769
-Mus musculus non-functional	IGHV5-11	IGH	V	FALSE	1770
-Mus musculus non-functional	IGHV5-11-1	IGH	V	FALSE	1771
-Mus musculus non-functional	IGHV5-11-2	IGH	V	FALSE	1772
-Mus musculus functional	IGHV5-12	IGH	V	TRUE	1773
-Mus musculus functional	IGHV5-12-1	IGH	V	TRUE	1774
-Mus musculus functional	IGHV5-12-2	IGH	V	TRUE	1775
-Mus musculus non-functional	IGHV5-12-3	IGH	V	FALSE	1776
-Mus musculus functional	IGHV5-12-4	IGH	V	TRUE	1777
-Mus musculus non-functional	IGHV5-13	IGH	V	FALSE	1778
-Mus musculus non-functional	IGHV5-13-1	IGH	V	FALSE	1779
-Mus musculus functional	IGHV5-15	IGH	V	TRUE	1780
-Mus musculus functional	IGHV5-16	IGH	V	TRUE	1781
-Mus musculus functional	IGHV5-17	IGH	V	TRUE	1782
-Mus musculus non-functional	IGHV5-18	IGH	V	FALSE	1783
-Mus musculus non-functional	IGHV5-19	IGH	V	FALSE	1784
-Mus musculus functional	IGHV5-2	IGH	V	TRUE	1785
-Mus musculus non-functional	IGHV5-21	IGH	V	FALSE	1786
-Mus musculus non-functional	IGHV5-3	IGH	V	FALSE	1787
-Mus musculus functional	IGHV5-4	IGH	V	TRUE	1788
-Mus musculus non-functional	IGHV5-5	IGH	V	FALSE	1789
-Mus musculus non-functional	IGHV5-5-1	IGH	V	FALSE	1790
-Mus musculus functional	IGHV5-6	IGH	V	TRUE	1791
-Mus musculus functional	IGHV5-6-1	IGH	V	TRUE	1792
-Mus musculus functional	IGHV5-6-2	IGH	V	TRUE	1793
-Mus musculus functional	IGHV5-6-3	IGH	V	TRUE	1794
-Mus musculus functional	IGHV5-6-4	IGH	V	TRUE	1795
-Mus musculus functional	IGHV5-6-5	IGH	V	TRUE	1796
-Mus musculus functional	IGHV5-6-6	IGH	V	TRUE	1797
-Mus musculus non-functional	IGHV5-7	IGH	V	FALSE	1798
-Mus musculus non-functional	IGHV5-7-1	IGH	V	FALSE	1799
-Mus musculus non-functional	IGHV5-7-2	IGH	V	FALSE	1800
-Mus musculus non-functional	IGHV5-7-3	IGH	V	FALSE	1801
-Mus musculus non-functional	IGHV5-7-4	IGH	V	FALSE	1802
-Mus musculus non-functional	IGHV5-7-5	IGH	V	FALSE	1803
-Mus musculus non-functional	IGHV5-7-6	IGH	V	FALSE	1804
-Mus musculus non-functional	IGHV5-8	IGH	V	FALSE	1805
-Mus musculus non-functional	IGHV5-8-1	IGH	V	FALSE	1806
-Mus musculus non-functional	IGHV5-8-2	IGH	V	FALSE	1807
-Mus musculus non-functional	IGHV5-8-3	IGH	V	FALSE	1808
-Mus musculus functional	IGHV5-9	IGH	V	TRUE	1809
-Mus musculus functional	IGHV5-9-1	IGH	V	TRUE	1810
-Mus musculus functional	IGHV5-9-2	IGH	V	TRUE	1811
-Mus musculus functional	IGHV5-9-3	IGH	V	TRUE	1812
-Mus musculus functional	IGHV5-9-4	IGH	V	TRUE	1813
-Mus musculus functional	IGHV5-9-5	IGH	V	TRUE	1814
-Mus musculus non-functional	IGHV5S12	IGH	V	FALSE	1815
-Mus musculus non-functional	IGHV5S21	IGH	V	FALSE	1816
-Mus musculus non-functional	IGHV5S24	IGH	V	FALSE	1817
-Mus musculus functional	IGHV5S4	IGH	V	TRUE	1818
-Mus musculus functional	IGHV5S9	IGH	V	TRUE	1819
-Mus musculus non-functional	IGHV6-1	IGH	V	FALSE	1820
-Mus musculus non-functional	IGHV6-1-1	IGH	V	FALSE	1821
-Mus musculus non-functional	IGHV6-2	IGH	V	FALSE	1822
-Mus musculus functional	IGHV6-3	IGH	V	TRUE	1823
-Mus musculus functional	IGHV6-4	IGH	V	TRUE	1824
-Mus musculus functional	IGHV6-5	IGH	V	TRUE	1825
-Mus musculus functional	IGHV6-6	IGH	V	TRUE	1826
-Mus musculus functional	IGHV6-7	IGH	V	TRUE	1827
-Mus musculus non-functional	IGHV6S2	IGH	V	FALSE	1828
-Mus musculus non-functional	IGHV6S3	IGH	V	FALSE	1829
-Mus musculus non-functional	IGHV6S4	IGH	V	FALSE	1830
-Mus musculus functional	IGHV7-1	IGH	V	TRUE	1831
-Mus musculus functional	IGHV7-2	IGH	V	TRUE	1832
-Mus musculus functional	IGHV7-3	IGH	V	TRUE	1833
-Mus musculus functional	IGHV7-4	IGH	V	TRUE	1834
-Mus musculus non-functional	IGHV8-1	IGH	V	FALSE	1835
-Mus musculus non-functional	IGHV8-10	IGH	V	FALSE	1836
-Mus musculus functional	IGHV8-11	IGH	V	TRUE	1837
-Mus musculus functional	IGHV8-12	IGH	V	TRUE	1838
-Mus musculus non-functional	IGHV8-13	IGH	V	FALSE	1839
-Mus musculus non-functional	IGHV8-14	IGH	V	FALSE	1840
-Mus musculus non-functional	IGHV8-15	IGH	V	FALSE	1841
-Mus musculus non-functional	IGHV8-16	IGH	V	FALSE	1842
-Mus musculus non-functional	IGHV8-2	IGH	V	FALSE	1843
-Mus musculus non-functional	IGHV8-3	IGH	V	FALSE	1844
-Mus musculus functional	IGHV8-4	IGH	V	TRUE	1845
-Mus musculus functional	IGHV8-5	IGH	V	TRUE	1846
-Mus musculus functional	IGHV8-6	IGH	V	TRUE	1847
-Mus musculus non-functional	IGHV8-7	IGH	V	FALSE	1848
-Mus musculus functional	IGHV8-8	IGH	V	TRUE	1849
-Mus musculus non-functional	IGHV8-8-1	IGH	V	FALSE	1850
-Mus musculus non-functional	IGHV8-9	IGH	V	FALSE	1851
-Mus musculus non-functional	IGHV8S1	IGH	V	FALSE	1852
-Mus musculus non-functional	IGHV8S2	IGH	V	FALSE	1853
-Mus musculus non-functional	IGHV8S6	IGH	V	FALSE	1854
-Mus musculus non-functional	IGHV8S9	IGH	V	FALSE	1855
-Mus musculus functional	IGHV9-1	IGH	V	TRUE	1856
-Mus musculus functional	IGHV9-2	IGH	V	TRUE	1857
-Mus musculus functional	IGHV9-2-1	IGH	V	TRUE	1858
-Mus musculus functional	IGHV9-3	IGH	V	TRUE	1859
-Mus musculus functional	IGHV9-3-1	IGH	V	TRUE	1860
-Mus musculus functional	IGHV9-4	IGH	V	TRUE	1861
-Mus musculus functional	IGHV9S7	IGH	V	TRUE	1862
-Mus musculus functional	IGHV9S8	IGH	V	TRUE	1863
-Mus musculus functional	IGKJ1	IGK	J	TRUE	1864
-Mus musculus functional	IGKJ2	IGK	J	TRUE	1865
-Mus musculus non-functional	IGKJ3	IGK	J	FALSE	1866
-Mus musculus functional	IGKJ4	IGK	J	TRUE	1867
-Mus musculus functional	IGKJ5	IGK	J	TRUE	1868
-Mus musculus non-functional	IGKV1-108	IGK	V	FALSE	1869
-Mus musculus functional	IGKV1-110	IGK	V	TRUE	1870
-Mus musculus non-functional	IGKV1-115	IGK	V	FALSE	1871
-Mus musculus functional	IGKV1-117	IGK	V	TRUE	1872
-Mus musculus functional	IGKV1-122	IGK	V	TRUE	1873
-Mus musculus non-functional	IGKV1-131	IGK	V	FALSE	1874
-Mus musculus functional	IGKV1-132	IGK	V	TRUE	1875
-Mus musculus functional	IGKV1-133	IGK	V	TRUE	1876
-Mus musculus functional	IGKV1-135	IGK	V	TRUE	1877
-Mus musculus non-functional	IGKV1-136	IGK	V	FALSE	1878
-Mus musculus non-functional	IGKV1-35	IGK	V	FALSE	1879
-Mus musculus functional	IGKV1-88	IGK	V	TRUE	1880
-Mus musculus functional	IGKV1-99	IGK	V	TRUE	1881
-Mus musculus non-functional	IGKV1/OR16-1	IGK	V	FALSE	1882
-Mus musculus non-functional	IGKV1/OR19-1	IGK	V	FALSE	1883
-Mus musculus non-functional	IGKV1/OR6-1	IGK	V	FALSE	1884
-Mus musculus functional	IGKV10-94	IGK	V	TRUE	1885
-Mus musculus functional	IGKV10-95	IGK	V	TRUE	1886
-Mus musculus functional	IGKV10-96	IGK	V	TRUE	1887
-Mus musculus non-functional	IGKV11-106	IGK	V	FALSE	1888
-Mus musculus non-functional	IGKV11-114	IGK	V	FALSE	1889
-Mus musculus non-functional	IGKV11-118	IGK	V	FALSE	1890
-Mus musculus functional	IGKV11-125	IGK	V	TRUE	1891
-Mus musculus functional	IGKV12-38	IGK	V	TRUE	1892
-Mus musculus non-functional	IGKV12-40	IGK	V	FALSE	1893
-Mus musculus functional	IGKV12-41	IGK	V	TRUE	1894
-Mus musculus non-functional	IGKV12-42	IGK	V	FALSE	1895
-Mus musculus functional	IGKV12-44	IGK	V	TRUE	1896
-Mus musculus functional	IGKV12-46	IGK	V	TRUE	1897
-Mus musculus non-functional	IGKV12-47	IGK	V	FALSE	1898
-Mus musculus non-functional	IGKV12-49	IGK	V	FALSE	1899
-Mus musculus non-functional	IGKV12-66	IGK	V	FALSE	1900
-Mus musculus non-functional	IGKV12-67	IGK	V	FALSE	1901
-Mus musculus functional	IGKV12-89	IGK	V	TRUE	1902
-Mus musculus functional	IGKV12-98	IGK	V	TRUE	1903
-Mus musculus functional	IGKV12-e	IGK	V	TRUE	1904
-Mus musculus non-functional	IGKV13-54-1	IGK	V	FALSE	1905
-Mus musculus non-functional	IGKV13-55-1	IGK	V	FALSE	1906
-Mus musculus non-functional	IGKV13-56-1	IGK	V	FALSE	1907
-Mus musculus non-functional	IGKV13-57-1	IGK	V	FALSE	1908
-Mus musculus non-functional	IGKV13-57-2	IGK	V	FALSE	1909
-Mus musculus non-functional	IGKV13-61-1	IGK	V	FALSE	1910
-Mus musculus non-functional	IGKV13-62-1	IGK	V	FALSE	1911
-Mus musculus non-functional	IGKV13-64	IGK	V	FALSE	1912
-Mus musculus non-functional	IGKV13-71-1	IGK	V	FALSE	1913
-Mus musculus non-functional	IGKV13-73-1	IGK	V	FALSE	1914
-Mus musculus non-functional	IGKV13-74-1	IGK	V	FALSE	1915
-Mus musculus non-functional	IGKV13-76	IGK	V	FALSE	1916
-Mus musculus non-functional	IGKV13-78-1	IGK	V	FALSE	1917
-Mus musculus non-functional	IGKV13-80-1	IGK	V	FALSE	1918
-Mus musculus non-functional	IGKV13-82	IGK	V	FALSE	1919
-Mus musculus functional	IGKV13-84	IGK	V	TRUE	1920
-Mus musculus functional	IGKV13-85	IGK	V	TRUE	1921
-Mus musculus non-functional	IGKV13-87	IGK	V	FALSE	1922
-Mus musculus non-functional	IGKV13-89-1	IGK	V	FALSE	1923
-Mus musculus functional	IGKV14-100	IGK	V	TRUE	1924
-Mus musculus functional	IGKV14-111	IGK	V	TRUE	1925
-Mus musculus non-functional	IGKV14-118-1	IGK	V	FALSE	1926
-Mus musculus non-functional	IGKV14-118-2	IGK	V	FALSE	1927
-Mus musculus functional	IGKV14-126	IGK	V	TRUE	1928
-Mus musculus non-functional	IGKV14-126-1	IGK	V	FALSE	1929
-Mus musculus functional	IGKV14-130	IGK	V	TRUE	1930
-Mus musculus non-functional	IGKV14-134-1	IGK	V	FALSE	1931
-Mus musculus non-functional	IGKV14/OR16-2	IGK	V	FALSE	1932
-Mus musculus non-functional	IGKV14/OR6-2	IGK	V	FALSE	1933
-Mus musculus non-functional	IGKV14/OR6-3	IGK	V	FALSE	1934
-Mus musculus non-functional	IGKV15-101	IGK	V	FALSE	1935
-Mus musculus non-functional	IGKV15-101-1	IGK	V	FALSE	1936
-Mus musculus non-functional	IGKV15-102	IGK	V	FALSE	1937
-Mus musculus non-functional	IGKV15-103	IGK	V	FALSE	1938
-Mus musculus non-functional	IGKV15-97	IGK	V	FALSE	1939
-Mus musculus functional	IGKV16-104	IGK	V	TRUE	1940
-Mus musculus functional	IGKV17-121	IGK	V	TRUE	1941
-Mus musculus functional	IGKV17-127	IGK	V	TRUE	1942
-Mus musculus non-functional	IGKV17-134	IGK	V	FALSE	1943
-Mus musculus non-functional	IGKV17/OR16-3	IGK	V	FALSE	1944
-Mus musculus non-functional	IGKV17/OR19-2	IGK	V	FALSE	1945
-Mus musculus functional	IGKV18-36	IGK	V	TRUE	1946
-Mus musculus functional	IGKV19-93	IGK	V	TRUE	1947
-Mus musculus non-functional	IGKV2-105	IGK	V	FALSE	1948
-Mus musculus non-functional	IGKV2-107	IGK	V	FALSE	1949
-Mus musculus functional	IGKV2-109	IGK	V	TRUE	1950
-Mus musculus functional	IGKV2-112	IGK	V	TRUE	1951
-Mus musculus non-functional	IGKV2-113	IGK	V	FALSE	1952
-Mus musculus non-functional	IGKV2-116	IGK	V	FALSE	1953
-Mus musculus functional	IGKV2-137	IGK	V	TRUE	1954
-Mus musculus non-functional	IGKV2-93-1	IGK	V	FALSE	1955
-Mus musculus non-functional	IGKV2-95-1	IGK	V	FALSE	1956
-Mus musculus non-functional	IGKV2-95-2	IGK	V	FALSE	1957
-Mus musculus functional	IGKV2-a	IGK	V	TRUE	1958
-Mus musculus non-functional	IGKV2-f	IGK	V	FALSE	1959
-Mus musculus functional	IGKV20-101-2	IGK	V	TRUE	1960
-Mus musculus functional	IGKV3-1	IGK	V	TRUE	1961
-Mus musculus functional	IGKV3-10	IGK	V	TRUE	1962
-Mus musculus non-functional	IGKV3-11	IGK	V	FALSE	1963
-Mus musculus functional	IGKV3-12	IGK	V	TRUE	1964
-Mus musculus non-functional	IGKV3-12-1	IGK	V	FALSE	1965
-Mus musculus functional	IGKV3-2	IGK	V	TRUE	1966
-Mus musculus functional	IGKV3-3	IGK	V	TRUE	1967
-Mus musculus functional	IGKV3-4	IGK	V	TRUE	1968
-Mus musculus functional	IGKV3-5	IGK	V	TRUE	1969
-Mus musculus non-functional	IGKV3-6	IGK	V	FALSE	1970
-Mus musculus functional	IGKV3-7	IGK	V	TRUE	1971
-Mus musculus non-functional	IGKV3-8	IGK	V	FALSE	1972
-Mus musculus functional	IGKV3-9	IGK	V	TRUE	1973
-Mus musculus functional	IGKV4-50	IGK	V	TRUE	1974
-Mus musculus functional	IGKV4-51	IGK	V	TRUE	1975
-Mus musculus non-functional	IGKV4-52	IGK	V	FALSE	1976
-Mus musculus functional	IGKV4-53	IGK	V	TRUE	1977
-Mus musculus non-functional	IGKV4-54	IGK	V	FALSE	1978
-Mus musculus functional	IGKV4-55	IGK	V	TRUE	1979
-Mus musculus non-functional	IGKV4-56	IGK	V	FALSE	1980
-Mus musculus functional	IGKV4-57	IGK	V	TRUE	1981
-Mus musculus functional	IGKV4-57-1	IGK	V	TRUE	1982
-Mus musculus functional	IGKV4-58	IGK	V	TRUE	1983
-Mus musculus functional	IGKV4-59	IGK	V	TRUE	1984
-Mus musculus non-functional	IGKV4-60	IGK	V	FALSE	1985
-Mus musculus functional	IGKV4-61	IGK	V	TRUE	1986
-Mus musculus non-functional	IGKV4-62	IGK	V	FALSE	1987
-Mus musculus functional	IGKV4-63	IGK	V	TRUE	1988
-Mus musculus non-functional	IGKV4-65	IGK	V	FALSE	1989
-Mus musculus functional	IGKV4-68	IGK	V	TRUE	1990
-Mus musculus functional	IGKV4-69	IGK	V	TRUE	1991
-Mus musculus functional	IGKV4-70	IGK	V	TRUE	1992
-Mus musculus functional	IGKV4-71	IGK	V	TRUE	1993
-Mus musculus functional	IGKV4-72	IGK	V	TRUE	1994
-Mus musculus functional	IGKV4-73	IGK	V	TRUE	1995
-Mus musculus functional	IGKV4-74	IGK	V	TRUE	1996
-Mus musculus non-functional	IGKV4-75	IGK	V	FALSE	1997
-Mus musculus non-functional	IGKV4-77	IGK	V	FALSE	1998
-Mus musculus functional	IGKV4-78	IGK	V	TRUE	1999
-Mus musculus functional	IGKV4-79	IGK	V	TRUE	2000
-Mus musculus functional	IGKV4-80	IGK	V	TRUE	2001
-Mus musculus functional	IGKV4-81	IGK	V	TRUE	2002
-Mus musculus non-functional	IGKV4-83	IGK	V	FALSE	2003
-Mus musculus functional	IGKV4-86	IGK	V	TRUE	2004
-Mus musculus functional	IGKV4-90	IGK	V	TRUE	2005
-Mus musculus functional	IGKV4-91	IGK	V	TRUE	2006
-Mus musculus functional	IGKV4-92	IGK	V	TRUE	2007
-Mus musculus functional	IGKV5-37	IGK	V	TRUE	2008
-Mus musculus functional	IGKV5-39	IGK	V	TRUE	2009
-Mus musculus non-functional	IGKV5-40-1	IGK	V	FALSE	2010
-Mus musculus functional	IGKV5-43	IGK	V	TRUE	2011
-Mus musculus functional	IGKV5-45	IGK	V	TRUE	2012
-Mus musculus functional	IGKV5-48	IGK	V	TRUE	2013
-Mus musculus non-functional	IGKV6-13	IGK	V	FALSE	2014
-Mus musculus functional	IGKV6-14	IGK	V	TRUE	2015
-Mus musculus functional	IGKV6-15	IGK	V	TRUE	2016
-Mus musculus functional	IGKV6-17	IGK	V	TRUE	2017
-Mus musculus functional	IGKV6-20	IGK	V	TRUE	2018
-Mus musculus functional	IGKV6-23	IGK	V	TRUE	2019
-Mus musculus functional	IGKV6-25	IGK	V	TRUE	2020
-Mus musculus functional	IGKV6-29	IGK	V	TRUE	2021
-Mus musculus functional	IGKV6-32	IGK	V	TRUE	2022
-Mus musculus functional	IGKV6-b	IGK	V	TRUE	2023
-Mus musculus functional	IGKV6-c	IGK	V	TRUE	2024
-Mus musculus functional	IGKV6-d	IGK	V	TRUE	2025
-Mus musculus functional	IGKV7-33	IGK	V	TRUE	2026
-Mus musculus functional	IGKV8-16	IGK	V	TRUE	2027
-Mus musculus non-functional	IGKV8-18	IGK	V	FALSE	2028
-Mus musculus functional	IGKV8-19	IGK	V	TRUE	2029
-Mus musculus functional	IGKV8-21	IGK	V	TRUE	2030
-Mus musculus non-functional	IGKV8-22	IGK	V	FALSE	2031
-Mus musculus non-functional	IGKV8-23-1	IGK	V	FALSE	2032
-Mus musculus functional	IGKV8-24	IGK	V	TRUE	2033
-Mus musculus non-functional	IGKV8-26	IGK	V	FALSE	2034
-Mus musculus functional	IGKV8-27	IGK	V	TRUE	2035
-Mus musculus functional	IGKV8-28	IGK	V	TRUE	2036
-Mus musculus functional	IGKV8-30	IGK	V	TRUE	2037
-Mus musculus non-functional	IGKV8-31	IGK	V	FALSE	2038
-Mus musculus functional	IGKV8-34	IGK	V	TRUE	2039
-Mus musculus non-functional	IGKV9-119	IGK	V	FALSE	2040
-Mus musculus functional	IGKV9-120	IGK	V	TRUE	2041
-Mus musculus functional	IGKV9-123	IGK	V	TRUE	2042
-Mus musculus functional	IGKV9-124	IGK	V	TRUE	2043
-Mus musculus non-functional	IGKV9-128	IGK	V	FALSE	2044
-Mus musculus non-functional	IGKV9-129	IGK	V	FALSE	2045
-Mus musculus functional	IGLJ1	IGL	J	TRUE	2046
-Mus musculus functional	IGLJ2	IGL	J	TRUE	2047
-Mus musculus functional	IGLJ3	IGL	J	TRUE	2048
-Mus musculus non-functional	IGLJ3P	IGL	J	FALSE	2049
-Mus musculus non-functional	IGLJ4	IGL	J	FALSE	2050
-Mus musculus functional	IGLV1	IGL	V	TRUE	2051
-Mus musculus functional	IGLV2	IGL	V	TRUE	2052
-Mus musculus functional	IGLV3	IGL	V	TRUE	2053
-Mus musculus non-functional	IGLV4	IGL	V	FALSE	2054
-Mus musculus non-functional	IGLV5	IGL	V	FALSE	2055
-Mus musculus non-functional	IGLV6	IGL	V	FALSE	2056
-Mus musculus non-functional	IGLV7	IGL	V	FALSE	2057
-Mus musculus non-functional	IGLV8	IGL	V	FALSE	2058
-Mus musculus non-functional	TRAJ1	TRA	J	FALSE	2059
-Mus musculus functional	TRAJ11	TRA	J	TRUE	2060
-Mus musculus functional	TRAJ12	TRA	J	TRUE	2061
-Mus musculus functional	TRAJ13	TRA	J	TRUE	2062
-Mus musculus non-functional	TRAJ14	TRA	J	FALSE	2063
-Mus musculus functional	TRAJ15	TRA	J	TRUE	2064
-Mus musculus functional	TRAJ16	TRA	J	TRUE	2065
-Mus musculus functional	TRAJ17	TRA	J	TRUE	2066
-Mus musculus functional	TRAJ18	TRA	J	TRUE	2067
-Mus musculus non-functional	TRAJ19	TRA	J	FALSE	2068
-Mus musculus functional	TRAJ2	TRA	J	TRUE	2069
-Mus musculus non-functional	TRAJ20	TRA	J	FALSE	2070
-Mus musculus functional	TRAJ21	TRA	J	TRUE	2071
-Mus musculus functional	TRAJ22	TRA	J	TRUE	2072
-Mus musculus functional	TRAJ23	TRA	J	TRUE	2073
-Mus musculus functional	TRAJ24	TRA	J	TRUE	2074
-Mus musculus non-functional	TRAJ25	TRA	J	FALSE	2075
-Mus musculus functional	TRAJ26	TRA	J	TRUE	2076
-Mus musculus functional	TRAJ27	TRA	J	TRUE	2077
-Mus musculus functional	TRAJ28	TRA	J	TRUE	2078
-Mus musculus non-functional	TRAJ29	TRA	J	FALSE	2079
-Mus musculus non-functional	TRAJ3	TRA	J	FALSE	2080
-Mus musculus functional	TRAJ30	TRA	J	TRUE	2081
-Mus musculus functional	TRAJ31	TRA	J	TRUE	2082
-Mus musculus functional	TRAJ32	TRA	J	TRUE	2083
-Mus musculus functional	TRAJ33	TRA	J	TRUE	2084
-Mus musculus functional	TRAJ34	TRA	J	TRUE	2085
-Mus musculus functional	TRAJ35	TRA	J	TRUE	2086
-Mus musculus non-functional	TRAJ36	TRA	J	FALSE	2087
-Mus musculus functional	TRAJ37	TRA	J	TRUE	2088
-Mus musculus functional	TRAJ38	TRA	J	TRUE	2089
-Mus musculus functional	TRAJ39	TRA	J	TRUE	2090
-Mus musculus non-functional	TRAJ4	TRA	J	FALSE	2091
-Mus musculus functional	TRAJ40	TRA	J	TRUE	2092
-Mus musculus non-functional	TRAJ41	TRA	J	FALSE	2093
-Mus musculus functional	TRAJ42	TRA	J	TRUE	2094
-Mus musculus functional	TRAJ43	TRA	J	TRUE	2095
-Mus musculus non-functional	TRAJ44	TRA	J	FALSE	2096
-Mus musculus functional	TRAJ45	TRA	J	TRUE	2097
-Mus musculus non-functional	TRAJ46	TRA	J	FALSE	2098
-Mus musculus non-functional	TRAJ47	TRA	J	FALSE	2099
-Mus musculus functional	TRAJ48	TRA	J	TRUE	2100
-Mus musculus functional	TRAJ49	TRA	J	TRUE	2101
-Mus musculus functional	TRAJ5	TRA	J	TRUE	2102
-Mus musculus functional	TRAJ50	TRA	J	TRUE	2103
-Mus musculus non-functional	TRAJ51	TRA	J	FALSE	2104
-Mus musculus functional	TRAJ52	TRA	J	TRUE	2105
-Mus musculus functional	TRAJ53	TRA	J	TRUE	2106
-Mus musculus non-functional	TRAJ54	TRA	J	FALSE	2107
-Mus musculus non-functional	TRAJ55	TRA	J	FALSE	2108
-Mus musculus functional	TRAJ56	TRA	J	TRUE	2109
-Mus musculus functional	TRAJ57	TRA	J	TRUE	2110
-Mus musculus functional	TRAJ58	TRA	J	TRUE	2111
-Mus musculus non-functional	TRAJ59	TRA	J	FALSE	2112
-Mus musculus functional	TRAJ6	TRA	J	TRUE	2113
-Mus musculus non-functional	TRAJ60	TRA	J	FALSE	2114
-Mus musculus non-functional	TRAJ61	TRA	J	FALSE	2115
-Mus musculus non-functional	TRAJ7	TRA	J	FALSE	2116
-Mus musculus non-functional	TRAJ8	TRA	J	FALSE	2117
-Mus musculus functional	TRAJ9	TRA	J	TRUE	2118
-Mus musculus functional	TRAV1	TRA	V	TRUE	2119
-Mus musculus functional	TRAV10	TRA	V	TRUE	2120
-Mus musculus functional	TRAV10D	TRA	V	TRUE	2121
-Mus musculus functional	TRAV10N	TRA	V	TRUE	2122
-Mus musculus functional	TRAV11	TRA	V	TRUE	2123
-Mus musculus functional	TRAV11D	TRA	V	TRUE	2124
-Mus musculus non-functional	TRAV11N	TRA	V	FALSE	2125
-Mus musculus functional	TRAV12-1	TRA	V	TRUE	2126
-Mus musculus functional	TRAV12-2	TRA	V	TRUE	2127
-Mus musculus functional	TRAV12-3	TRA	V	TRUE	2128
-Mus musculus non-functional	TRAV12-4	TRA	V	FALSE	2129
-Mus musculus functional	TRAV12D-1	TRA	V	TRUE	2130
-Mus musculus functional	TRAV12D-2	TRA	V	TRUE	2131
-Mus musculus functional	TRAV12D-3	TRA	V	TRUE	2132
-Mus musculus functional	TRAV12N-1	TRA	V	TRUE	2133
-Mus musculus functional	TRAV12N-2	TRA	V	TRUE	2134
-Mus musculus functional	TRAV12N-3	TRA	V	TRUE	2135
-Mus musculus functional	TRAV13-1	TRA	V	TRUE	2136
-Mus musculus functional	TRAV13-2	TRA	V	TRUE	2137
-Mus musculus functional	TRAV13-3	TRA	V	TRUE	2138
-Mus musculus functional	TRAV13-4/DV7	TRA	V	TRUE	2139
-Mus musculus functional	TRAV13-5	TRA	V	TRUE	2140
-Mus musculus functional	TRAV13D-1	TRA	V	TRUE	2141
-Mus musculus functional	TRAV13D-2	TRA	V	TRUE	2142
-Mus musculus functional	TRAV13D-3	TRA	V	TRUE	2143
-Mus musculus functional	TRAV13D-4	TRA	V	TRUE	2144
-Mus musculus functional	TRAV13N-1	TRA	V	TRUE	2145
-Mus musculus functional	TRAV13N-2	TRA	V	TRUE	2146
-Mus musculus functional	TRAV13N-3	TRA	V	TRUE	2147
-Mus musculus functional	TRAV13N-4	TRA	V	TRUE	2148
-Mus musculus functional	TRAV14-1	TRA	V	TRUE	2149
-Mus musculus functional	TRAV14-2	TRA	V	TRUE	2150
-Mus musculus functional	TRAV14-3	TRA	V	TRUE	2151
-Mus musculus functional	TRAV14D-1	TRA	V	TRUE	2152
-Mus musculus functional	TRAV14D-2	TRA	V	TRUE	2153
-Mus musculus functional	TRAV14D-3/DV8	TRA	V	TRUE	2154
-Mus musculus functional	TRAV14N-1	TRA	V	TRUE	2155
-Mus musculus functional	TRAV14N-2	TRA	V	TRUE	2156
-Mus musculus functional	TRAV14N-3	TRA	V	TRUE	2157
-Mus musculus functional	TRAV15-1/DV6-1	TRA	V	TRUE	2158
-Mus musculus functional	TRAV15-2/DV6-2	TRA	V	TRUE	2159
-Mus musculus non-functional	TRAV15-3	TRA	V	FALSE	2160
-Mus musculus functional	TRAV15D-1/DV6D-1	TRA	V	TRUE	2161
-Mus musculus functional	TRAV15D-2/DV6D-2	TRA	V	TRUE	2162
-Mus musculus non-functional	TRAV15D-3	TRA	V	FALSE	2163
-Mus musculus functional	TRAV15N-1	TRA	V	TRUE	2164
-Mus musculus functional	TRAV15N-2	TRA	V	TRUE	2165
-Mus musculus non-functional	TRAV15N-3	TRA	V	FALSE	2166
-Mus musculus functional	TRAV16	TRA	V	TRUE	2167
-Mus musculus functional	TRAV16D/DV11	TRA	V	TRUE	2168
-Mus musculus functional	TRAV16N	TRA	V	TRUE	2169
-Mus musculus functional	TRAV17	TRA	V	TRUE	2170
-Mus musculus non-functional	TRAV18	TRA	V	FALSE	2171
-Mus musculus functional	TRAV19	TRA	V	TRUE	2172
-Mus musculus functional	TRAV2	TRA	V	TRUE	2173
-Mus musculus non-functional	TRAV20	TRA	V	FALSE	2174
-Mus musculus functional	TRAV21/DV12	TRA	V	TRUE	2175
-Mus musculus non-functional	TRAV22	TRA	V	FALSE	2176
-Mus musculus non-functional	TRAV23	TRA	V	FALSE	2177
-Mus musculus functional	TRAV3-1	TRA	V	TRUE	2178
-Mus musculus non-functional	TRAV3-2	TRA	V	FALSE	2179
-Mus musculus functional	TRAV3-3	TRA	V	TRUE	2180
-Mus musculus functional	TRAV3-4	TRA	V	TRUE	2181
-Mus musculus non-functional	TRAV3D-2	TRA	V	FALSE	2182
-Mus musculus functional	TRAV3D-3	TRA	V	TRUE	2183
-Mus musculus non-functional	TRAV3N-2	TRA	V	FALSE	2184
-Mus musculus functional	TRAV3N-3	TRA	V	TRUE	2185
-Mus musculus non-functional	TRAV4-1	TRA	V	FALSE	2186
-Mus musculus functional	TRAV4-2	TRA	V	TRUE	2187
-Mus musculus functional	TRAV4-3	TRA	V	TRUE	2188
-Mus musculus functional	TRAV4-4/DV10	TRA	V	TRUE	2189
-Mus musculus non-functional	TRAV4D-2	TRA	V	FALSE	2190
-Mus musculus functional	TRAV4D-3	TRA	V	TRUE	2191
-Mus musculus functional	TRAV4D-4	TRA	V	TRUE	2192
-Mus musculus functional	TRAV4N-3	TRA	V	TRUE	2193
-Mus musculus functional	TRAV4N-4	TRA	V	TRUE	2194
-Mus musculus functional	TRAV5-1	TRA	V	TRUE	2195
-Mus musculus non-functional	TRAV5-2	TRA	V	FALSE	2196
-Mus musculus non-functional	TRAV5-3	TRA	V	FALSE	2197
-Mus musculus non-functional	TRAV5-4	TRA	V	FALSE	2198
-Mus musculus non-functional	TRAV5D-2	TRA	V	FALSE	2199
-Mus musculus non-functional	TRAV5D-3	TRA	V	FALSE	2200
-Mus musculus functional	TRAV5D-4	TRA	V	TRUE	2201
-Mus musculus non-functional	TRAV5N-2	TRA	V	FALSE	2202
-Mus musculus non-functional	TRAV5N-3	TRA	V	FALSE	2203
-Mus musculus functional	TRAV5N-4	TRA	V	TRUE	2204
-Mus musculus functional	TRAV6-1	TRA	V	TRUE	2205
-Mus musculus functional	TRAV6-2	TRA	V	TRUE	2206
-Mus musculus functional	TRAV6-3	TRA	V	TRUE	2207
-Mus musculus functional	TRAV6-4	TRA	V	TRUE	2208
-Mus musculus functional	TRAV6-5	TRA	V	TRUE	2209
-Mus musculus functional	TRAV6-6	TRA	V	TRUE	2210
-Mus musculus functional	TRAV6-7/DV9	TRA	V	TRUE	2211
-Mus musculus functional	TRAV6D-3	TRA	V	TRUE	2212
-Mus musculus functional	TRAV6D-4	TRA	V	TRUE	2213
-Mus musculus functional	TRAV6D-5	TRA	V	TRUE	2214
-Mus musculus functional	TRAV6D-6	TRA	V	TRUE	2215
-Mus musculus functional	TRAV6D-7	TRA	V	TRUE	2216
-Mus musculus functional	TRAV6N-5	TRA	V	TRUE	2217
-Mus musculus functional	TRAV6N-6	TRA	V	TRUE	2218
-Mus musculus functional	TRAV6N-7	TRA	V	TRUE	2219
-Mus musculus functional	TRAV7-1	TRA	V	TRUE	2220
-Mus musculus functional	TRAV7-2	TRA	V	TRUE	2221
-Mus musculus functional	TRAV7-3	TRA	V	TRUE	2222
-Mus musculus functional	TRAV7-4	TRA	V	TRUE	2223
-Mus musculus functional	TRAV7-5	TRA	V	TRUE	2224
-Mus musculus functional	TRAV7-6	TRA	V	TRUE	2225
-Mus musculus functional	TRAV7D-2	TRA	V	TRUE	2226
-Mus musculus functional	TRAV7D-3	TRA	V	TRUE	2227
-Mus musculus functional	TRAV7D-4	TRA	V	TRUE	2228
-Mus musculus functional	TRAV7D-5	TRA	V	TRUE	2229
-Mus musculus functional	TRAV7D-6	TRA	V	TRUE	2230
-Mus musculus functional	TRAV7N-4	TRA	V	TRUE	2231
-Mus musculus functional	TRAV7N-5	TRA	V	TRUE	2232
-Mus musculus functional	TRAV7N-6	TRA	V	TRUE	2233
-Mus musculus functional	TRAV8-1	TRA	V	TRUE	2234
-Mus musculus functional	TRAV8-2	TRA	V	TRUE	2235
-Mus musculus functional	TRAV8D-1	TRA	V	TRUE	2236
-Mus musculus functional	TRAV8D-2	TRA	V	TRUE	2237
-Mus musculus functional	TRAV8N-2	TRA	V	TRUE	2238
-Mus musculus functional	TRAV9-1	TRA	V	TRUE	2239
-Mus musculus functional	TRAV9-2	TRA	V	TRUE	2240
-Mus musculus functional	TRAV9-3	TRA	V	TRUE	2241
-Mus musculus functional	TRAV9-4	TRA	V	TRUE	2242
-Mus musculus functional	TRAV9D-1	TRA	V	TRUE	2243
-Mus musculus functional	TRAV9D-2	TRA	V	TRUE	2244
-Mus musculus functional	TRAV9D-3	TRA	V	TRUE	2245
-Mus musculus functional	TRAV9D-4	TRA	V	TRUE	2246
-Mus musculus non-functional	TRAV9N-1	TRA	V	FALSE	2247
-Mus musculus functional	TRAV9N-2	TRA	V	TRUE	2248
-Mus musculus functional	TRAV9N-3	TRA	V	TRUE	2249
-Mus musculus functional	TRAV9N-4	TRA	V	TRUE	2250
-Mus musculus functional	TRBD1	TRB	D	TRUE	2251
-Mus musculus functional	TRBD2	TRB	D	TRUE	2252
-Mus musculus functional	TRBJ1-1	TRB	J	TRUE	2253
-Mus musculus functional	TRBJ1-2	TRB	J	TRUE	2254
-Mus musculus functional	TRBJ1-3	TRB	J	TRUE	2255
-Mus musculus functional	TRBJ1-4	TRB	J	TRUE	2256
-Mus musculus functional	TRBJ1-5	TRB	J	TRUE	2257
-Mus musculus non-functional	TRBJ1-6	TRB	J	FALSE	2258
-Mus musculus non-functional	TRBJ1-7	TRB	J	FALSE	2259
-Mus musculus functional	TRBJ2-1	TRB	J	TRUE	2260
-Mus musculus functional	TRBJ2-2	TRB	J	TRUE	2261
-Mus musculus functional	TRBJ2-3	TRB	J	TRUE	2262
-Mus musculus functional	TRBJ2-4	TRB	J	TRUE	2263
-Mus musculus functional	TRBJ2-5	TRB	J	TRUE	2264
-Mus musculus non-functional	TRBJ2-6	TRB	J	FALSE	2265
-Mus musculus functional	TRBJ2-7	TRB	J	TRUE	2266
-Mus musculus functional	TRBV1	TRB	V	TRUE	2267
-Mus musculus non-functional	TRBV10	TRB	V	FALSE	2268
-Mus musculus non-functional	TRBV11	TRB	V	FALSE	2269
-Mus musculus functional	TRBV12-1	TRB	V	TRUE	2270
-Mus musculus functional	TRBV12-2	TRB	V	TRUE	2271
-Mus musculus non-functional	TRBV12-3	TRB	V	FALSE	2272
-Mus musculus functional	TRBV13-1	TRB	V	TRUE	2273
-Mus musculus functional	TRBV13-2	TRB	V	TRUE	2274
-Mus musculus functional	TRBV13-3	TRB	V	TRUE	2275
-Mus musculus functional	TRBV14	TRB	V	TRUE	2276
-Mus musculus functional	TRBV15	TRB	V	TRUE	2277
-Mus musculus functional	TRBV16	TRB	V	TRUE	2278
-Mus musculus functional	TRBV17	TRB	V	TRUE	2279
-Mus musculus non-functional	TRBV18	TRB	V	FALSE	2280
-Mus musculus functional	TRBV19	TRB	V	TRUE	2281
-Mus musculus functional	TRBV2	TRB	V	TRUE	2282
-Mus musculus functional	TRBV20	TRB	V	TRUE	2283
-Mus musculus non-functional	TRBV21	TRB	V	FALSE	2284
-Mus musculus non-functional	TRBV22	TRB	V	FALSE	2285
-Mus musculus functional	TRBV23	TRB	V	TRUE	2286
-Mus musculus functional	TRBV24	TRB	V	TRUE	2287
-Mus musculus non-functional	TRBV25	TRB	V	FALSE	2288
-Mus musculus functional	TRBV26	TRB	V	TRUE	2289
-Mus musculus non-functional	TRBV27	TRB	V	FALSE	2290
-Mus musculus non-functional	TRBV28	TRB	V	FALSE	2291
-Mus musculus functional	TRBV29	TRB	V	TRUE	2292
-Mus musculus functional	TRBV3	TRB	V	TRUE	2293
-Mus musculus functional	TRBV30	TRB	V	TRUE	2294
-Mus musculus functional	TRBV31	TRB	V	TRUE	2295
-Mus musculus functional	TRBV4	TRB	V	TRUE	2296
-Mus musculus functional	TRBV5	TRB	V	TRUE	2297
-Mus musculus non-functional	TRBV6	TRB	V	FALSE	2298
-Mus musculus non-functional	TRBV7	TRB	V	FALSE	2299
-Mus musculus non-functional	TRBV8	TRB	V	FALSE	2300
-Mus musculus non-functional	TRBV9	TRB	V	FALSE	2301
-Mus musculus functional	TRDD1	TRD	D	TRUE	2302
-Mus musculus functional	TRDD2	TRD	D	TRUE	2303
-Mus musculus functional	TRDJ1	TRD	J	TRUE	2304
-Mus musculus functional	TRDJ2	TRD	J	TRUE	2305
-Mus musculus functional	TRDV1	TRD	V	TRUE	2306
-Mus musculus functional	TRDV2-1	TRD	V	TRUE	2307
-Mus musculus functional	TRDV2-2	TRD	V	TRUE	2308
-Mus musculus non-functional	TRDV3	TRD	V	FALSE	2309
-Mus musculus functional	TRDV4	TRD	V	TRUE	2310
-Mus musculus functional	TRDV5	TRD	V	TRUE	2311
-Mus musculus functional	TRGJ1	TRG	J	TRUE	2312
-Mus musculus functional	TRGJ2	TRG	J	TRUE	2313
-Mus musculus functional	TRGJ3	TRG	J	TRUE	2314
-Mus musculus functional	TRGJ4	TRG	J	TRUE	2315
-Mus musculus functional	TRGV1	TRG	V	TRUE	2316
-Mus musculus functional	TRGV2	TRG	V	TRUE	2317
-Mus musculus functional	TRGV3	TRG	V	TRUE	2318
-Mus musculus functional	TRGV4	TRG	V	TRUE	2319
-Mus musculus functional	TRGV5	TRG	V	TRUE	2320
-Mus musculus functional	TRGV6	TRG	V	TRUE	2321
-Mus musculus functional	TRGV7	TRG	V	TRUE	2322
-Mus spretus functional	IGKV10-94	IGK	V	TRUE	2323
-Mus spretus functional	IGKV10-96	IGK	V	TRUE	2324
-Mus spretus non-functional	IGLJ4	IGL	J	FALSE	2325
-Mus spretus non-functional	IGLJ5	IGL	J	FALSE	2326
-Mus spretus functional	IGLV2	IGL	V	TRUE	2327
-Mus spretus functional	IGLV3	IGL	V	TRUE	2328
-Mus spretus non-functional	IGLV4	IGL	V	FALSE	2329
-Mus spretus non-functional	IGLV8	IGL	V	FALSE	2330
-Oncorhynchus mykiss functional	IGHD	IGH	D	TRUE	2331
-Oncorhynchus mykiss functional	IGHD1	IGH	D	TRUE	2332
-Oncorhynchus mykiss functional	IGHD2	IGH	D	TRUE	2333
-Oncorhynchus mykiss functional	IGHD3	IGH	D	TRUE	2334
-Oncorhynchus mykiss functional	IGHD4	IGH	D	TRUE	2335
-Oncorhynchus mykiss functional	IGHD5	IGH	D	TRUE	2336
-Oncorhynchus mykiss functional	IGHD6	IGH	D	TRUE	2337
-Oncorhynchus mykiss functional	IGHD7	IGH	D	TRUE	2338
-Oncorhynchus mykiss functional	IGHD8	IGH	D	TRUE	2339
-Oncorhynchus mykiss functional	IGHD9	IGH	D	TRUE	2340
-Oncorhynchus mykiss functional	IGHJ1	IGH	J	TRUE	2341
-Oncorhynchus mykiss functional	IGHJ2	IGH	J	TRUE	2342
-Oncorhynchus mykiss functional	IGHJ3	IGH	J	TRUE	2343
-Oncorhynchus mykiss functional	IGHJ4	IGH	J	TRUE	2344
-Oncorhynchus mykiss functional	IGHJ5	IGH	J	TRUE	2345
-Oncorhynchus mykiss functional	IGHJ6	IGH	J	TRUE	2346
-Oncorhynchus mykiss functional	IGHJ7	IGH	J	TRUE	2347
-Oncorhynchus mykiss non-functional	IGHV10S1	IGH	V	FALSE	2348
-Oncorhynchus mykiss non-functional	IGHV11S1	IGH	V	FALSE	2349
-Oncorhynchus mykiss non-functional	IGHV12S1	IGH	V	FALSE	2350
-Oncorhynchus mykiss non-functional	IGHV13S1	IGH	V	FALSE	2351
-Oncorhynchus mykiss functional	IGHV1S1	IGH	V	TRUE	2352
-Oncorhynchus mykiss functional	IGHV1S2	IGH	V	TRUE	2353
-Oncorhynchus mykiss non-functional	IGHV1S3	IGH	V	FALSE	2354
-Oncorhynchus mykiss non-functional	IGHV1S4	IGH	V	FALSE	2355
-Oncorhynchus mykiss non-functional	IGHV1S5	IGH	V	FALSE	2356
-Oncorhynchus mykiss non-functional	IGHV1S6	IGH	V	FALSE	2357
-Oncorhynchus mykiss non-functional	IGHV1S7	IGH	V	FALSE	2358
-Oncorhynchus mykiss non-functional	IGHV2S1	IGH	V	FALSE	2359
-Oncorhynchus mykiss functional	IGHV2S2	IGH	V	TRUE	2360
-Oncorhynchus mykiss non-functional	IGHV2S3	IGH	V	FALSE	2361
-Oncorhynchus mykiss non-functional	IGHV3S1	IGH	V	FALSE	2362
-Oncorhynchus mykiss non-functional	IGHV3S2	IGH	V	FALSE	2363
-Oncorhynchus mykiss non-functional	IGHV3S3	IGH	V	FALSE	2364
-Oncorhynchus mykiss non-functional	IGHV3S4	IGH	V	FALSE	2365
-Oncorhynchus mykiss non-functional	IGHV4S1	IGH	V	FALSE	2366
-Oncorhynchus mykiss non-functional	IGHV5S1	IGH	V	FALSE	2367
-Oncorhynchus mykiss functional	IGHV5S10	IGH	V	TRUE	2368
-Oncorhynchus mykiss non-functional	IGHV5S2	IGH	V	FALSE	2369
-Oncorhynchus mykiss non-functional	IGHV5S3	IGH	V	FALSE	2370
-Oncorhynchus mykiss non-functional	IGHV5S4	IGH	V	FALSE	2371
-Oncorhynchus mykiss non-functional	IGHV5S5	IGH	V	FALSE	2372
-Oncorhynchus mykiss non-functional	IGHV5S6	IGH	V	FALSE	2373
-Oncorhynchus mykiss non-functional	IGHV5S7	IGH	V	FALSE	2374
-Oncorhynchus mykiss non-functional	IGHV5S8	IGH	V	FALSE	2375
-Oncorhynchus mykiss non-functional	IGHV5S9	IGH	V	FALSE	2376
-Oncorhynchus mykiss functional	IGHV6S1	IGH	V	TRUE	2377
-Oncorhynchus mykiss non-functional	IGHV6S2	IGH	V	FALSE	2378
-Oncorhynchus mykiss non-functional	IGHV6S3	IGH	V	FALSE	2379
-Oncorhynchus mykiss non-functional	IGHV6S4	IGH	V	FALSE	2380
-Oncorhynchus mykiss non-functional	IGHV6S5	IGH	V	FALSE	2381
-Oncorhynchus mykiss non-functional	IGHV6S6	IGH	V	FALSE	2382
-Oncorhynchus mykiss non-functional	IGHV6S7	IGH	V	FALSE	2383
-Oncorhynchus mykiss non-functional	IGHV6S8	IGH	V	FALSE	2384
-Oncorhynchus mykiss non-functional	IGHV6S9	IGH	V	FALSE	2385
-Oncorhynchus mykiss non-functional	IGHV7S1	IGH	V	FALSE	2386
-Oncorhynchus mykiss non-functional	IGHV8S1	IGH	V	FALSE	2387
-Oncorhynchus mykiss non-functional	IGHV8S10	IGH	V	FALSE	2388
-Oncorhynchus mykiss non-functional	IGHV8S11	IGH	V	FALSE	2389
-Oncorhynchus mykiss non-functional	IGHV8S2	IGH	V	FALSE	2390
-Oncorhynchus mykiss non-functional	IGHV8S3	IGH	V	FALSE	2391
-Oncorhynchus mykiss non-functional	IGHV8S4	IGH	V	FALSE	2392
-Oncorhynchus mykiss non-functional	IGHV8S5	IGH	V	FALSE	2393
-Oncorhynchus mykiss non-functional	IGHV8S6	IGH	V	FALSE	2394
-Oncorhynchus mykiss functional	IGHV8S7	IGH	V	TRUE	2395
-Oncorhynchus mykiss non-functional	IGHV8S8	IGH	V	FALSE	2396
-Oncorhynchus mykiss non-functional	IGHV8S9	IGH	V	FALSE	2397
-Oncorhynchus mykiss non-functional	IGHV9S1	IGH	V	FALSE	2398
-Oncorhynchus mykiss non-functional	IGHV9S2	IGH	V	FALSE	2399
-Oncorhynchus mykiss non-functional	IGHV9S3	IGH	V	FALSE	2400
-Oncorhynchus mykiss non-functional	IGHV9S4	IGH	V	FALSE	2401
-Oncorhynchus mykiss non-functional	IGHV9S5	IGH	V	FALSE	2402
-Oncorhynchus mykiss non-functional	IGHV9S6	IGH	V	FALSE	2403
-Oncorhynchus mykiss non-functional	IGHV9S7	IGH	V	FALSE	2404
-Oncorhynchus mykiss functional	TRBD1	TRB	D	TRUE	2405
-Oncorhynchus mykiss functional	TRBJ1	TRB	J	TRUE	2406
-Oncorhynchus mykiss functional	TRBJ10	TRB	J	TRUE	2407
-Oncorhynchus mykiss functional	TRBJ2	TRB	J	TRUE	2408
-Oncorhynchus mykiss functional	TRBJ3	TRB	J	TRUE	2409
-Oncorhynchus mykiss functional	TRBJ4	TRB	J	TRUE	2410
-Oncorhynchus mykiss functional	TRBJ5	TRB	J	TRUE	2411
-Oncorhynchus mykiss functional	TRBJ6	TRB	J	TRUE	2412
-Oncorhynchus mykiss functional	TRBJ7	TRB	J	TRUE	2413
-Oncorhynchus mykiss functional	TRBJ8	TRB	J	TRUE	2414
-Oncorhynchus mykiss functional	TRBJ9	TRB	J	TRUE	2415
-Oncorhynchus mykiss non-functional	TRBV10S1	TRB	V	FALSE	2416
-Oncorhynchus mykiss non-functional	TRBV1S1	TRB	V	FALSE	2417
-Oncorhynchus mykiss non-functional	TRBV1S2	TRB	V	FALSE	2418
-Oncorhynchus mykiss non-functional	TRBV1S3	TRB	V	FALSE	2419
-Oncorhynchus mykiss non-functional	TRBV1S4	TRB	V	FALSE	2420
-Oncorhynchus mykiss non-functional	TRBV1S5	TRB	V	FALSE	2421
-Oncorhynchus mykiss non-functional	TRBV2S1	TRB	V	FALSE	2422
-Oncorhynchus mykiss non-functional	TRBV2S10	TRB	V	FALSE	2423
-Oncorhynchus mykiss non-functional	TRBV2S11	TRB	V	FALSE	2424
-Oncorhynchus mykiss non-functional	TRBV2S12	TRB	V	FALSE	2425
-Oncorhynchus mykiss non-functional	TRBV2S13	TRB	V	FALSE	2426
-Oncorhynchus mykiss non-functional	TRBV2S14	TRB	V	FALSE	2427
-Oncorhynchus mykiss non-functional	TRBV2S15	TRB	V	FALSE	2428
-Oncorhynchus mykiss non-functional	TRBV2S16	TRB	V	FALSE	2429
-Oncorhynchus mykiss non-functional	TRBV2S17	TRB	V	FALSE	2430
-Oncorhynchus mykiss non-functional	TRBV2S18	TRB	V	FALSE	2431
-Oncorhynchus mykiss non-functional	TRBV2S19	TRB	V	FALSE	2432
-Oncorhynchus mykiss non-functional	TRBV2S2	TRB	V	FALSE	2433
-Oncorhynchus mykiss non-functional	TRBV2S20	TRB	V	FALSE	2434
-Oncorhynchus mykiss non-functional	TRBV2S21	TRB	V	FALSE	2435
-Oncorhynchus mykiss non-functional	TRBV2S23	TRB	V	FALSE	2436
-Oncorhynchus mykiss non-functional	TRBV2S24	TRB	V	FALSE	2437
-Oncorhynchus mykiss non-functional	TRBV2S25	TRB	V	FALSE	2438
-Oncorhynchus mykiss non-functional	TRBV2S26	TRB	V	FALSE	2439
-Oncorhynchus mykiss non-functional	TRBV2S27	TRB	V	FALSE	2440
-Oncorhynchus mykiss non-functional	TRBV2S3	TRB	V	FALSE	2441
-Oncorhynchus mykiss non-functional	TRBV2S4	TRB	V	FALSE	2442
-Oncorhynchus mykiss non-functional	TRBV2S5	TRB	V	FALSE	2443
-Oncorhynchus mykiss non-functional	TRBV2S6	TRB	V	FALSE	2444
-Oncorhynchus mykiss non-functional	TRBV2S7	TRB	V	FALSE	2445
-Oncorhynchus mykiss non-functional	TRBV2S8	TRB	V	FALSE	2446
-Oncorhynchus mykiss non-functional	TRBV2S9	TRB	V	FALSE	2447
-Oncorhynchus mykiss non-functional	TRBV3S1	TRB	V	FALSE	2448
-Oncorhynchus mykiss non-functional	TRBV3S2	TRB	V	FALSE	2449
-Oncorhynchus mykiss non-functional	TRBV4S1	TRB	V	FALSE	2450
-Oncorhynchus mykiss non-functional	TRBV5S1	TRB	V	FALSE	2451
-Oncorhynchus mykiss non-functional	TRBV6S1	TRB	V	FALSE	2452
-Oncorhynchus mykiss non-functional	TRBV7S1	TRB	V	FALSE	2453
-Oncorhynchus mykiss non-functional	TRBV7S2	TRB	V	FALSE	2454
-Oncorhynchus mykiss non-functional	TRBV7S3	TRB	V	FALSE	2455
-Oncorhynchus mykiss non-functional	TRBV7S4	TRB	V	FALSE	2456
-Oncorhynchus mykiss non-functional	TRBV8S1	TRB	V	FALSE	2457
-Oncorhynchus mykiss non-functional	TRBV8S2	TRB	V	FALSE	2458
-Oncorhynchus mykiss non-functional	TRBV8S3	TRB	V	FALSE	2459
-Oncorhynchus mykiss non-functional	TRBV9S1	TRB	V	FALSE	2460
-Ornithorhynchus anatinus functional	IGHD	IGH	D	TRUE	2461
-Ornithorhynchus anatinus non-functional	IGHD1	IGH	D	FALSE	2462
-Ornithorhynchus anatinus non-functional	IGHD2	IGH	D	FALSE	2463
-Ornithorhynchus anatinus non-functional	IGHD3	IGH	D	FALSE	2464
-Ornithorhynchus anatinus non-functional	IGHJ1	IGH	J	FALSE	2465
-Ornithorhynchus anatinus functional	IGHJ10	IGH	J	TRUE	2466
-Ornithorhynchus anatinus non-functional	IGHJ11	IGH	J	FALSE	2467
-Ornithorhynchus anatinus non-functional	IGHJ2	IGH	J	FALSE	2468
-Ornithorhynchus anatinus non-functional	IGHJ3	IGH	J	FALSE	2469
-Ornithorhynchus anatinus non-functional	IGHJ4	IGH	J	FALSE	2470
-Ornithorhynchus anatinus non-functional	IGHJ5	IGH	J	FALSE	2471
-Ornithorhynchus anatinus non-functional	IGHJ6	IGH	J	FALSE	2472
-Ornithorhynchus anatinus non-functional	IGHJ7	IGH	J	FALSE	2473
-Ornithorhynchus anatinus non-functional	IGHJ8	IGH	J	FALSE	2474
-Ornithorhynchus anatinus non-functional	IGHJ9	IGH	J	FALSE	2475
-Oryctolagus cuniculus functional	IGHD1-1	IGH	D	TRUE	2476
-Oryctolagus cuniculus functional	IGHD2-1	IGH	D	TRUE	2477
-Oryctolagus cuniculus non-functional	IGHD3-1	IGH	D	FALSE	2478
-Oryctolagus cuniculus functional	IGHD3-2	IGH	D	TRUE	2479
-Oryctolagus cuniculus functional	IGHD3-3	IGH	D	TRUE	2480
-Oryctolagus cuniculus functional	IGHD4-1	IGH	D	TRUE	2481
-Oryctolagus cuniculus functional	IGHD4-2	IGH	D	TRUE	2482
-Oryctolagus cuniculus functional	IGHD5-1	IGH	D	TRUE	2483
-Oryctolagus cuniculus functional	IGHD6-1	IGH	D	TRUE	2484
-Oryctolagus cuniculus functional	IGHD7-1	IGH	D	TRUE	2485
-Oryctolagus cuniculus functional	IGHD8-1	IGH	D	TRUE	2486
-Oryctolagus cuniculus functional	IGHJ1	IGH	J	TRUE	2487
-Oryctolagus cuniculus functional	IGHJ2	IGH	J	TRUE	2488
-Oryctolagus cuniculus functional	IGHJ3	IGH	J	TRUE	2489
-Oryctolagus cuniculus functional	IGHJ4	IGH	J	TRUE	2490
-Oryctolagus cuniculus functional	IGHJ5	IGH	J	TRUE	2491
-Oryctolagus cuniculus functional	IGHJ6	IGH	J	TRUE	2492
-Oryctolagus cuniculus functional	IGHV1S1	IGH	V	TRUE	2493
-Oryctolagus cuniculus non-functional	IGHV1S10	IGH	V	FALSE	2494
-Oryctolagus cuniculus non-functional	IGHV1S11	IGH	V	FALSE	2495
-Oryctolagus cuniculus non-functional	IGHV1S12	IGH	V	FALSE	2496
-Oryctolagus cuniculus functional	IGHV1S13	IGH	V	TRUE	2497
-Oryctolagus cuniculus non-functional	IGHV1S14	IGH	V	FALSE	2498
-Oryctolagus cuniculus non-functional	IGHV1S15	IGH	V	FALSE	2499
-Oryctolagus cuniculus non-functional	IGHV1S16	IGH	V	FALSE	2500
-Oryctolagus cuniculus functional	IGHV1S17	IGH	V	TRUE	2501
-Oryctolagus cuniculus non-functional	IGHV1S18	IGH	V	FALSE	2502
-Oryctolagus cuniculus non-functional	IGHV1S19	IGH	V	FALSE	2503
-Oryctolagus cuniculus non-functional	IGHV1S2	IGH	V	FALSE	2504
-Oryctolagus cuniculus non-functional	IGHV1S20	IGH	V	FALSE	2505
-Oryctolagus cuniculus non-functional	IGHV1S21	IGH	V	FALSE	2506
-Oryctolagus cuniculus non-functional	IGHV1S22	IGH	V	FALSE	2507
-Oryctolagus cuniculus non-functional	IGHV1S23	IGH	V	FALSE	2508
-Oryctolagus cuniculus functional	IGHV1S24	IGH	V	TRUE	2509
-Oryctolagus cuniculus functional	IGHV1S25	IGH	V	TRUE	2510
-Oryctolagus cuniculus functional	IGHV1S26	IGH	V	TRUE	2511
-Oryctolagus cuniculus non-functional	IGHV1S27	IGH	V	FALSE	2512
-Oryctolagus cuniculus functional	IGHV1S28	IGH	V	TRUE	2513
-Oryctolagus cuniculus non-functional	IGHV1S29	IGH	V	FALSE	2514
-Oryctolagus cuniculus non-functional	IGHV1S3	IGH	V	FALSE	2515
-Oryctolagus cuniculus non-functional	IGHV1S30	IGH	V	FALSE	2516
-Oryctolagus cuniculus functional	IGHV1S31	IGH	V	TRUE	2517
-Oryctolagus cuniculus non-functional	IGHV1S32	IGH	V	FALSE	2518
-Oryctolagus cuniculus functional	IGHV1S33	IGH	V	TRUE	2519
-Oryctolagus cuniculus functional	IGHV1S34	IGH	V	TRUE	2520
-Oryctolagus cuniculus non-functional	IGHV1S35	IGH	V	FALSE	2521
-Oryctolagus cuniculus functional	IGHV1S36	IGH	V	TRUE	2522
-Oryctolagus cuniculus non-functional	IGHV1S37	IGH	V	FALSE	2523
-Oryctolagus cuniculus non-functional	IGHV1S39	IGH	V	FALSE	2524
-Oryctolagus cuniculus non-functional	IGHV1S4	IGH	V	FALSE	2525
-Oryctolagus cuniculus functional	IGHV1S40	IGH	V	TRUE	2526
-Oryctolagus cuniculus non-functional	IGHV1S42	IGH	V	FALSE	2527
-Oryctolagus cuniculus functional	IGHV1S43	IGH	V	TRUE	2528
-Oryctolagus cuniculus functional	IGHV1S44	IGH	V	TRUE	2529
-Oryctolagus cuniculus functional	IGHV1S45	IGH	V	TRUE	2530
-Oryctolagus cuniculus non-functional	IGHV1S46	IGH	V	FALSE	2531
-Oryctolagus cuniculus functional	IGHV1S47	IGH	V	TRUE	2532
-Oryctolagus cuniculus non-functional	IGHV1S48	IGH	V	FALSE	2533
-Oryctolagus cuniculus functional	IGHV1S49	IGH	V	TRUE	2534
-Oryctolagus cuniculus non-functional	IGHV1S5	IGH	V	FALSE	2535
-Oryctolagus cuniculus functional	IGHV1S50	IGH	V	TRUE	2536
-Oryctolagus cuniculus functional	IGHV1S51	IGH	V	TRUE	2537
-Oryctolagus cuniculus functional	IGHV1S52	IGH	V	TRUE	2538
-Oryctolagus cuniculus functional	IGHV1S53	IGH	V	TRUE	2539
-Oryctolagus cuniculus functional	IGHV1S54	IGH	V	TRUE	2540
-Oryctolagus cuniculus functional	IGHV1S55	IGH	V	TRUE	2541
-Oryctolagus cuniculus functional	IGHV1S56	IGH	V	TRUE	2542
-Oryctolagus cuniculus functional	IGHV1S57	IGH	V	TRUE	2543
-Oryctolagus cuniculus functional	IGHV1S58	IGH	V	TRUE	2544
-Oryctolagus cuniculus functional	IGHV1S59	IGH	V	TRUE	2545
-Oryctolagus cuniculus non-functional	IGHV1S6	IGH	V	FALSE	2546
-Oryctolagus cuniculus functional	IGHV1S60	IGH	V	TRUE	2547
-Oryctolagus cuniculus functional	IGHV1S61	IGH	V	TRUE	2548
-Oryctolagus cuniculus functional	IGHV1S62	IGH	V	TRUE	2549
-Oryctolagus cuniculus functional	IGHV1S63	IGH	V	TRUE	2550
-Oryctolagus cuniculus functional	IGHV1S64	IGH	V	TRUE	2551
-Oryctolagus cuniculus functional	IGHV1S65	IGH	V	TRUE	2552
-Oryctolagus cuniculus functional	IGHV1S66	IGH	V	TRUE	2553
-Oryctolagus cuniculus functional	IGHV1S67	IGH	V	TRUE	2554
-Oryctolagus cuniculus functional	IGHV1S68	IGH	V	TRUE	2555
-Oryctolagus cuniculus functional	IGHV1S69	IGH	V	TRUE	2556
-Oryctolagus cuniculus functional	IGHV1S7	IGH	V	TRUE	2557
-Oryctolagus cuniculus functional	IGHV1S8	IGH	V	TRUE	2558
-Oryctolagus cuniculus non-functional	IGHV1S9	IGH	V	FALSE	2559
-Oryctolagus cuniculus functional	IGKJ1-1	IGK	J	TRUE	2560
-Oryctolagus cuniculus functional	IGKJ1-2	IGK	J	TRUE	2561
-Oryctolagus cuniculus non-functional	IGKJ1-3	IGK	J	FALSE	2562
-Oryctolagus cuniculus non-functional	IGKJ1-4	IGK	J	FALSE	2563
-Oryctolagus cuniculus non-functional	IGKJ1-5	IGK	J	FALSE	2564
-Oryctolagus cuniculus functional	IGKJ2-1	IGK	J	TRUE	2565
-Oryctolagus cuniculus functional	IGKJ2-2	IGK	J	TRUE	2566
-Oryctolagus cuniculus functional	IGKJ2-3	IGK	J	TRUE	2567
-Oryctolagus cuniculus functional	IGKV1S1	IGK	V	TRUE	2568
-Oryctolagus cuniculus functional	IGKV1S10	IGK	V	TRUE	2569
-Oryctolagus cuniculus functional	IGKV1S11	IGK	V	TRUE	2570
-Oryctolagus cuniculus functional	IGKV1S12	IGK	V	TRUE	2571
-Oryctolagus cuniculus non-functional	IGKV1S13	IGK	V	FALSE	2572
-Oryctolagus cuniculus functional	IGKV1S14	IGK	V	TRUE	2573
-Oryctolagus cuniculus functional	IGKV1S15	IGK	V	TRUE	2574
-Oryctolagus cuniculus functional	IGKV1S16	IGK	V	TRUE	2575
-Oryctolagus cuniculus functional	IGKV1S17	IGK	V	TRUE	2576
-Oryctolagus cuniculus functional	IGKV1S18	IGK	V	TRUE	2577
-Oryctolagus cuniculus functional	IGKV1S19	IGK	V	TRUE	2578
-Oryctolagus cuniculus functional	IGKV1S2	IGK	V	TRUE	2579
-Oryctolagus cuniculus functional	IGKV1S20	IGK	V	TRUE	2580
-Oryctolagus cuniculus functional	IGKV1S21	IGK	V	TRUE	2581
-Oryctolagus cuniculus functional	IGKV1S22	IGK	V	TRUE	2582
-Oryctolagus cuniculus functional	IGKV1S23	IGK	V	TRUE	2583
-Oryctolagus cuniculus functional	IGKV1S24	IGK	V	TRUE	2584
-Oryctolagus cuniculus functional	IGKV1S25	IGK	V	TRUE	2585
-Oryctolagus cuniculus functional	IGKV1S26	IGK	V	TRUE	2586
-Oryctolagus cuniculus non-functional	IGKV1S27	IGK	V	FALSE	2587
-Oryctolagus cuniculus non-functional	IGKV1S28	IGK	V	FALSE	2588
-Oryctolagus cuniculus non-functional	IGKV1S29	IGK	V	FALSE	2589
-Oryctolagus cuniculus functional	IGKV1S3	IGK	V	TRUE	2590
-Oryctolagus cuniculus non-functional	IGKV1S30	IGK	V	FALSE	2591
-Oryctolagus cuniculus non-functional	IGKV1S31	IGK	V	FALSE	2592
-Oryctolagus cuniculus non-functional	IGKV1S32	IGK	V	FALSE	2593
-Oryctolagus cuniculus non-functional	IGKV1S33	IGK	V	FALSE	2594
-Oryctolagus cuniculus non-functional	IGKV1S34	IGK	V	FALSE	2595
-Oryctolagus cuniculus non-functional	IGKV1S35	IGK	V	FALSE	2596
-Oryctolagus cuniculus non-functional	IGKV1S36	IGK	V	FALSE	2597
-Oryctolagus cuniculus non-functional	IGKV1S37	IGK	V	FALSE	2598
-Oryctolagus cuniculus non-functional	IGKV1S38	IGK	V	FALSE	2599
-Oryctolagus cuniculus non-functional	IGKV1S39	IGK	V	FALSE	2600
-Oryctolagus cuniculus non-functional	IGKV1S4	IGK	V	FALSE	2601
-Oryctolagus cuniculus non-functional	IGKV1S40	IGK	V	FALSE	2602
-Oryctolagus cuniculus non-functional	IGKV1S41	IGK	V	FALSE	2603
-Oryctolagus cuniculus non-functional	IGKV1S42	IGK	V	FALSE	2604
-Oryctolagus cuniculus non-functional	IGKV1S43	IGK	V	FALSE	2605
-Oryctolagus cuniculus non-functional	IGKV1S44	IGK	V	FALSE	2606
-Oryctolagus cuniculus non-functional	IGKV1S45	IGK	V	FALSE	2607
-Oryctolagus cuniculus non-functional	IGKV1S46	IGK	V	FALSE	2608
-Oryctolagus cuniculus non-functional	IGKV1S47	IGK	V	FALSE	2609
-Oryctolagus cuniculus non-functional	IGKV1S48	IGK	V	FALSE	2610
-Oryctolagus cuniculus non-functional	IGKV1S49	IGK	V	FALSE	2611
-Oryctolagus cuniculus functional	IGKV1S5	IGK	V	TRUE	2612
-Oryctolagus cuniculus non-functional	IGKV1S50	IGK	V	FALSE	2613
-Oryctolagus cuniculus non-functional	IGKV1S51	IGK	V	FALSE	2614
-Oryctolagus cuniculus non-functional	IGKV1S52	IGK	V	FALSE	2615
-Oryctolagus cuniculus non-functional	IGKV1S53	IGK	V	FALSE	2616
-Oryctolagus cuniculus non-functional	IGKV1S54	IGK	V	FALSE	2617
-Oryctolagus cuniculus non-functional	IGKV1S55	IGK	V	FALSE	2618
-Oryctolagus cuniculus non-functional	IGKV1S56	IGK	V	FALSE	2619
-Oryctolagus cuniculus non-functional	IGKV1S57	IGK	V	FALSE	2620
-Oryctolagus cuniculus non-functional	IGKV1S58	IGK	V	FALSE	2621
-Oryctolagus cuniculus non-functional	IGKV1S59	IGK	V	FALSE	2622
-Oryctolagus cuniculus functional	IGKV1S6	IGK	V	TRUE	2623
-Oryctolagus cuniculus non-functional	IGKV1S60	IGK	V	FALSE	2624
-Oryctolagus cuniculus non-functional	IGKV1S61	IGK	V	FALSE	2625
-Oryctolagus cuniculus non-functional	IGKV1S62	IGK	V	FALSE	2626
-Oryctolagus cuniculus non-functional	IGKV1S63	IGK	V	FALSE	2627
-Oryctolagus cuniculus non-functional	IGKV1S64	IGK	V	FALSE	2628
-Oryctolagus cuniculus non-functional	IGKV1S65	IGK	V	FALSE	2629
-Oryctolagus cuniculus non-functional	IGKV1S66	IGK	V	FALSE	2630
-Oryctolagus cuniculus non-functional	IGKV1S67	IGK	V	FALSE	2631
-Oryctolagus cuniculus non-functional	IGKV1S68	IGK	V	FALSE	2632
-Oryctolagus cuniculus functional	IGKV1S7	IGK	V	TRUE	2633
-Oryctolagus cuniculus functional	IGKV1S8	IGK	V	TRUE	2634
-Oryctolagus cuniculus functional	IGKV1S9	IGK	V	TRUE	2635
-Oryctolagus cuniculus non-functional	IGLJ1	IGL	J	FALSE	2636
-Oryctolagus cuniculus non-functional	IGLJ3	IGL	J	FALSE	2637
-Oryctolagus cuniculus functional	IGLJ5	IGL	J	TRUE	2638
-Oryctolagus cuniculus functional	IGLJ6	IGL	J	TRUE	2639
-Oryctolagus cuniculus non-functional	IGLV1S1	IGL	V	FALSE	2640
-Oryctolagus cuniculus non-functional	IGLV1S2	IGL	V	FALSE	2641
-Oryctolagus cuniculus non-functional	IGLV1S3	IGL	V	FALSE	2642
-Oryctolagus cuniculus functional	IGLV2S1	IGL	V	TRUE	2643
-Oryctolagus cuniculus functional	IGLV2S2	IGL	V	TRUE	2644
-Oryctolagus cuniculus non-functional	IGLV2S3	IGL	V	FALSE	2645
-Oryctolagus cuniculus non-functional	IGLV2S4	IGL	V	FALSE	2646
-Oryctolagus cuniculus non-functional	IGLV2S5	IGL	V	FALSE	2647
-Oryctolagus cuniculus non-functional	IGLV3S1	IGL	V	FALSE	2648
-Oryctolagus cuniculus non-functional	IGLV3S10	IGL	V	FALSE	2649
-Oryctolagus cuniculus functional	IGLV3S2	IGL	V	TRUE	2650
-Oryctolagus cuniculus non-functional	IGLV3S3	IGL	V	FALSE	2651
-Oryctolagus cuniculus non-functional	IGLV3S4	IGL	V	FALSE	2652
-Oryctolagus cuniculus non-functional	IGLV3S5	IGL	V	FALSE	2653
-Oryctolagus cuniculus functional	IGLV3S6	IGL	V	TRUE	2654
-Oryctolagus cuniculus functional	IGLV3S7	IGL	V	TRUE	2655
-Oryctolagus cuniculus non-functional	IGLV3S8	IGL	V	FALSE	2656
-Oryctolagus cuniculus functional	IGLV3S9	IGL	V	TRUE	2657
-Oryctolagus cuniculus non-functional	IGLV4S1	IGL	V	FALSE	2658
-Oryctolagus cuniculus non-functional	IGLV4S2	IGL	V	FALSE	2659
-Oryctolagus cuniculus functional	IGLV4S3	IGL	V	TRUE	2660
-Oryctolagus cuniculus functional	IGLV4S4	IGL	V	TRUE	2661
-Oryctolagus cuniculus non-functional	IGLV4S5	IGL	V	FALSE	2662
-Oryctolagus cuniculus non-functional	IGLV4S6	IGL	V	FALSE	2663
-Oryctolagus cuniculus non-functional	IGLV4S7	IGL	V	FALSE	2664
-Oryctolagus cuniculus functional	IGLV5S1	IGL	V	TRUE	2665
-Oryctolagus cuniculus functional	IGLV5S10	IGL	V	TRUE	2666
-Oryctolagus cuniculus functional	IGLV5S2	IGL	V	TRUE	2667
-Oryctolagus cuniculus functional	IGLV5S3	IGL	V	TRUE	2668
-Oryctolagus cuniculus non-functional	IGLV5S4	IGL	V	FALSE	2669
-Oryctolagus cuniculus functional	IGLV5S5	IGL	V	TRUE	2670
-Oryctolagus cuniculus functional	IGLV5S6	IGL	V	TRUE	2671
-Oryctolagus cuniculus non-functional	IGLV5S7	IGL	V	FALSE	2672
-Oryctolagus cuniculus non-functional	IGLV5S8	IGL	V	FALSE	2673
-Oryctolagus cuniculus functional	IGLV5S9	IGL	V	TRUE	2674
-Oryctolagus cuniculus functional	IGLV6S1	IGL	V	TRUE	2675
-Oryctolagus cuniculus non-functional	IGLV6S2	IGL	V	FALSE	2676
-Oryctolagus cuniculus functional	IGLV6S3	IGL	V	TRUE	2677
-Oryctolagus cuniculus non-functional	IGLV6S4	IGL	V	FALSE	2678
-Oryctolagus cuniculus functional	IGLV6S5	IGL	V	TRUE	2679
-Oryctolagus cuniculus functional	IGLV6S6	IGL	V	TRUE	2680
-Oryctolagus cuniculus functional	IGLV6S7	IGL	V	TRUE	2681
-Oryctolagus cuniculus non-functional	IGLV7S1	IGL	V	FALSE	2682
-Rattus norvegicus functional	IGHD	IGH	D	TRUE	2683
-Rattus norvegicus functional	IGHD1-1	IGH	D	TRUE	2684
-Rattus norvegicus functional	IGHD1-2	IGH	D	TRUE	2685
-Rattus norvegicus functional	IGHD1-3	IGH	D	TRUE	2686
-Rattus norvegicus functional	IGHD1-4	IGH	D	TRUE	2687
-Rattus norvegicus functional	IGHD1-5	IGH	D	TRUE	2688
-Rattus norvegicus functional	IGHD1-6	IGH	D	TRUE	2689
-Rattus norvegicus functional	IGHD1-7	IGH	D	TRUE	2690
-Rattus norvegicus functional	IGHD1-8	IGH	D	TRUE	2691
-Rattus norvegicus non-functional	IGHD2-1	IGH	D	FALSE	2692
-Rattus norvegicus non-functional	IGHD2-2	IGH	D	FALSE	2693
-Rattus norvegicus non-functional	IGHD2-3	IGH	D	FALSE	2694
-Rattus norvegicus non-functional	IGHD3-1	IGH	D	FALSE	2695
-Rattus norvegicus non-functional	IGHD3-2	IGH	D	FALSE	2696
-Rattus norvegicus non-functional	IGHD3-3	IGH	D	FALSE	2697
-Rattus norvegicus non-functional	IGHD3-4	IGH	D	FALSE	2698
-Rattus norvegicus functional	IGHD4-1	IGH	D	TRUE	2699
-Rattus norvegicus functional	IGHD4-2	IGH	D	TRUE	2700
-Rattus norvegicus functional	IGHD4-3	IGH	D	TRUE	2701
-Rattus norvegicus functional	IGHD4-4	IGH	D	TRUE	2702
-Rattus norvegicus functional	IGHD5-1	IGH	D	TRUE	2703
-Rattus norvegicus functional	IGHJ1	IGH	J	TRUE	2704
-Rattus norvegicus functional	IGHJ2	IGH	J	TRUE	2705
-Rattus norvegicus functional	IGHJ3	IGH	J	TRUE	2706
-Rattus norvegicus functional	IGHJ4	IGH	J	TRUE	2707
-Rattus norvegicus non-functional	IGHV10S1	IGH	V	FALSE	2708
-Rattus norvegicus non-functional	IGHV10S10	IGH	V	FALSE	2709
-Rattus norvegicus non-functional	IGHV10S11	IGH	V	FALSE	2710
-Rattus norvegicus non-functional	IGHV10S12	IGH	V	FALSE	2711
-Rattus norvegicus functional	IGHV10S13	IGH	V	TRUE	2712
-Rattus norvegicus non-functional	IGHV10S14	IGH	V	FALSE	2713
-Rattus norvegicus non-functional	IGHV10S15	IGH	V	FALSE	2714
-Rattus norvegicus non-functional	IGHV10S16	IGH	V	FALSE	2715
-Rattus norvegicus non-functional	IGHV10S17	IGH	V	FALSE	2716
-Rattus norvegicus non-functional	IGHV10S18	IGH	V	FALSE	2717
-Rattus norvegicus non-functional	IGHV10S19	IGH	V	FALSE	2718
-Rattus norvegicus non-functional	IGHV10S2	IGH	V	FALSE	2719
-Rattus norvegicus non-functional	IGHV10S3	IGH	V	FALSE	2720
-Rattus norvegicus non-functional	IGHV10S4	IGH	V	FALSE	2721
-Rattus norvegicus non-functional	IGHV10S5	IGH	V	FALSE	2722
-Rattus norvegicus non-functional	IGHV10S6	IGH	V	FALSE	2723
-Rattus norvegicus non-functional	IGHV10S7	IGH	V	FALSE	2724
-Rattus norvegicus functional	IGHV10S8	IGH	V	TRUE	2725
-Rattus norvegicus non-functional	IGHV10S9	IGH	V	FALSE	2726
-Rattus norvegicus functional	IGHV11S1	IGH	V	TRUE	2727
-Rattus norvegicus functional	IGHV11S10	IGH	V	TRUE	2728
-Rattus norvegicus non-functional	IGHV11S11	IGH	V	FALSE	2729
-Rattus norvegicus non-functional	IGHV11S12	IGH	V	FALSE	2730
-Rattus norvegicus functional	IGHV11S2	IGH	V	TRUE	2731
-Rattus norvegicus functional	IGHV11S3	IGH	V	TRUE	2732
-Rattus norvegicus non-functional	IGHV11S4	IGH	V	FALSE	2733
-Rattus norvegicus non-functional	IGHV11S5	IGH	V	FALSE	2734
-Rattus norvegicus non-functional	IGHV11S6	IGH	V	FALSE	2735
-Rattus norvegicus functional	IGHV11S7	IGH	V	TRUE	2736
-Rattus norvegicus non-functional	IGHV11S8	IGH	V	FALSE	2737
-Rattus norvegicus non-functional	IGHV11S9	IGH	V	FALSE	2738
-Rattus norvegicus non-functional	IGHV12S1	IGH	V	FALSE	2739
-Rattus norvegicus functional	IGHV12S2	IGH	V	TRUE	2740
-Rattus norvegicus non-functional	IGHV12S3	IGH	V	FALSE	2741
-Rattus norvegicus non-functional	IGHV15S1	IGH	V	FALSE	2742
-Rattus norvegicus non-functional	IGHV1S1	IGH	V	FALSE	2743
-Rattus norvegicus non-functional	IGHV1S10	IGH	V	FALSE	2744
-Rattus norvegicus non-functional	IGHV1S11	IGH	V	FALSE	2745
-Rattus norvegicus non-functional	IGHV1S12	IGH	V	FALSE	2746
-Rattus norvegicus functional	IGHV1S13	IGH	V	TRUE	2747
-Rattus norvegicus non-functional	IGHV1S14	IGH	V	FALSE	2748
-Rattus norvegicus functional	IGHV1S15	IGH	V	TRUE	2749
-Rattus norvegicus functional	IGHV1S16	IGH	V	TRUE	2750
-Rattus norvegicus functional	IGHV1S17	IGH	V	TRUE	2751
-Rattus norvegicus non-functional	IGHV1S18	IGH	V	FALSE	2752
-Rattus norvegicus non-functional	IGHV1S19	IGH	V	FALSE	2753
-Rattus norvegicus non-functional	IGHV1S2	IGH	V	FALSE	2754
-Rattus norvegicus functional	IGHV1S20	IGH	V	TRUE	2755
-Rattus norvegicus non-functional	IGHV1S21	IGH	V	FALSE	2756
-Rattus norvegicus functional	IGHV1S22	IGH	V	TRUE	2757
-Rattus norvegicus functional	IGHV1S23	IGH	V	TRUE	2758
-Rattus norvegicus non-functional	IGHV1S24	IGH	V	FALSE	2759
-Rattus norvegicus non-functional	IGHV1S25	IGH	V	FALSE	2760
-Rattus norvegicus non-functional	IGHV1S26	IGH	V	FALSE	2761
-Rattus norvegicus functional	IGHV1S27	IGH	V	TRUE	2762
-Rattus norvegicus functional	IGHV1S28	IGH	V	TRUE	2763
-Rattus norvegicus functional	IGHV1S29	IGH	V	TRUE	2764
-Rattus norvegicus non-functional	IGHV1S3	IGH	V	FALSE	2765
-Rattus norvegicus non-functional	IGHV1S30	IGH	V	FALSE	2766
-Rattus norvegicus functional	IGHV1S31	IGH	V	TRUE	2767
-Rattus norvegicus non-functional	IGHV1S32	IGH	V	FALSE	2768
-Rattus norvegicus non-functional	IGHV1S33	IGH	V	FALSE	2769
-Rattus norvegicus non-functional	IGHV1S34	IGH	V	FALSE	2770
-Rattus norvegicus non-functional	IGHV1S35	IGH	V	FALSE	2771
-Rattus norvegicus non-functional	IGHV1S36	IGH	V	FALSE	2772
-Rattus norvegicus non-functional	IGHV1S37	IGH	V	FALSE	2773
-Rattus norvegicus functional	IGHV1S38	IGH	V	TRUE	2774
-Rattus norvegicus functional	IGHV1S39	IGH	V	TRUE	2775
-Rattus norvegicus non-functional	IGHV1S4	IGH	V	FALSE	2776
-Rattus norvegicus non-functional	IGHV1S40	IGH	V	FALSE	2777
-Rattus norvegicus functional	IGHV1S41	IGH	V	TRUE	2778
-Rattus norvegicus non-functional	IGHV1S42	IGH	V	FALSE	2779
-Rattus norvegicus non-functional	IGHV1S43	IGH	V	FALSE	2780
-Rattus norvegicus non-functional	IGHV1S44	IGH	V	FALSE	2781
-Rattus norvegicus functional	IGHV1S45	IGH	V	TRUE	2782
-Rattus norvegicus non-functional	IGHV1S46	IGH	V	FALSE	2783
-Rattus norvegicus functional	IGHV1S47	IGH	V	TRUE	2784
-Rattus norvegicus functional	IGHV1S48	IGH	V	TRUE	2785
-Rattus norvegicus non-functional	IGHV1S49	IGH	V	FALSE	2786
-Rattus norvegicus non-functional	IGHV1S5	IGH	V	FALSE	2787
-Rattus norvegicus non-functional	IGHV1S50	IGH	V	FALSE	2788
-Rattus norvegicus functional	IGHV1S51	IGH	V	TRUE	2789
-Rattus norvegicus non-functional	IGHV1S52	IGH	V	FALSE	2790
-Rattus norvegicus non-functional	IGHV1S53	IGH	V	FALSE	2791
-Rattus norvegicus non-functional	IGHV1S54	IGH	V	FALSE	2792
-Rattus norvegicus non-functional	IGHV1S55	IGH	V	FALSE	2793
-Rattus norvegicus non-functional	IGHV1S56	IGH	V	FALSE	2794
-Rattus norvegicus functional	IGHV1S57	IGH	V	TRUE	2795
-Rattus norvegicus non-functional	IGHV1S58	IGH	V	FALSE	2796
-Rattus norvegicus non-functional	IGHV1S59	IGH	V	FALSE	2797
-Rattus norvegicus functional	IGHV1S6	IGH	V	TRUE	2798
-Rattus norvegicus non-functional	IGHV1S60	IGH	V	FALSE	2799
-Rattus norvegicus non-functional	IGHV1S61	IGH	V	FALSE	2800
-Rattus norvegicus functional	IGHV1S62	IGH	V	TRUE	2801
-Rattus norvegicus non-functional	IGHV1S63	IGH	V	FALSE	2802
-Rattus norvegicus non-functional	IGHV1S64	IGH	V	FALSE	2803
-Rattus norvegicus non-functional	IGHV1S65	IGH	V	FALSE	2804
-Rattus norvegicus functional	IGHV1S66	IGH	V	TRUE	2805
-Rattus norvegicus functional	IGHV1S67	IGH	V	TRUE	2806
-Rattus norvegicus non-functional	IGHV1S7	IGH	V	FALSE	2807
-Rattus norvegicus non-functional	IGHV1S8	IGH	V	FALSE	2808
-Rattus norvegicus functional	IGHV1S9	IGH	V	TRUE	2809
-Rattus norvegicus functional	IGHV2S1	IGH	V	TRUE	2810
-Rattus norvegicus functional	IGHV2S10	IGH	V	TRUE	2811
-Rattus norvegicus non-functional	IGHV2S11	IGH	V	FALSE	2812
-Rattus norvegicus functional	IGHV2S12	IGH	V	TRUE	2813
-Rattus norvegicus functional	IGHV2S13	IGH	V	TRUE	2814
-Rattus norvegicus functional	IGHV2S14	IGH	V	TRUE	2815
-Rattus norvegicus non-functional	IGHV2S15	IGH	V	FALSE	2816
-Rattus norvegicus non-functional	IGHV2S16	IGH	V	FALSE	2817
-Rattus norvegicus non-functional	IGHV2S17	IGH	V	FALSE	2818
-Rattus norvegicus functional	IGHV2S18	IGH	V	TRUE	2819
-Rattus norvegicus non-functional	IGHV2S19	IGH	V	FALSE	2820
-Rattus norvegicus non-functional	IGHV2S2	IGH	V	FALSE	2821
-Rattus norvegicus functional	IGHV2S20	IGH	V	TRUE	2822
-Rattus norvegicus non-functional	IGHV2S21	IGH	V	FALSE	2823
-Rattus norvegicus non-functional	IGHV2S22	IGH	V	FALSE	2824
-Rattus norvegicus non-functional	IGHV2S23	IGH	V	FALSE	2825
-Rattus norvegicus non-functional	IGHV2S24	IGH	V	FALSE	2826
-Rattus norvegicus non-functional	IGHV2S25	IGH	V	FALSE	2827
-Rattus norvegicus non-functional	IGHV2S26	IGH	V	FALSE	2828
-Rattus norvegicus non-functional	IGHV2S27	IGH	V	FALSE	2829
-Rattus norvegicus non-functional	IGHV2S28	IGH	V	FALSE	2830
-Rattus norvegicus non-functional	IGHV2S29	IGH	V	FALSE	2831
-Rattus norvegicus functional	IGHV2S30	IGH	V	TRUE	2832
-Rattus norvegicus functional	IGHV2S31	IGH	V	TRUE	2833
-Rattus norvegicus non-functional	IGHV2S32	IGH	V	FALSE	2834
-Rattus norvegicus functional	IGHV2S33	IGH	V	TRUE	2835
-Rattus norvegicus non-functional	IGHV2S34	IGH	V	FALSE	2836
-Rattus norvegicus non-functional	IGHV2S35	IGH	V	FALSE	2837
-Rattus norvegicus non-functional	IGHV2S36	IGH	V	FALSE	2838
-Rattus norvegicus non-functional	IGHV2S37	IGH	V	FALSE	2839
-Rattus norvegicus non-functional	IGHV2S38	IGH	V	FALSE	2840
-Rattus norvegicus non-functional	IGHV2S39	IGH	V	FALSE	2841
-Rattus norvegicus functional	IGHV2S40	IGH	V	TRUE	2842
-Rattus norvegicus functional	IGHV2S41	IGH	V	TRUE	2843
-Rattus norvegicus non-functional	IGHV2S42	IGH	V	FALSE	2844
-Rattus norvegicus non-functional	IGHV2S43	IGH	V	FALSE	2845
-Rattus norvegicus non-functional	IGHV2S44	IGH	V	FALSE	2846
-Rattus norvegicus non-functional	IGHV2S45	IGH	V	FALSE	2847
-Rattus norvegicus non-functional	IGHV2S46	IGH	V	FALSE	2848
-Rattus norvegicus non-functional	IGHV2S47	IGH	V	FALSE	2849
-Rattus norvegicus functional	IGHV2S48	IGH	V	TRUE	2850
-Rattus norvegicus non-functional	IGHV2S49	IGH	V	FALSE	2851
-Rattus norvegicus functional	IGHV2S5	IGH	V	TRUE	2852
-Rattus norvegicus non-functional	IGHV2S50	IGH	V	FALSE	2853
-Rattus norvegicus non-functional	IGHV2S51	IGH	V	FALSE	2854
-Rattus norvegicus non-functional	IGHV2S52	IGH	V	FALSE	2855
-Rattus norvegicus non-functional	IGHV2S53	IGH	V	FALSE	2856
-Rattus norvegicus functional	IGHV2S54	IGH	V	TRUE	2857
-Rattus norvegicus non-functional	IGHV2S55	IGH	V	FALSE	2858
-Rattus norvegicus functional	IGHV2S56	IGH	V	TRUE	2859
-Rattus norvegicus non-functional	IGHV2S57	IGH	V	FALSE	2860
-Rattus norvegicus non-functional	IGHV2S58	IGH	V	FALSE	2861
-Rattus norvegicus non-functional	IGHV2S59	IGH	V	FALSE	2862
-Rattus norvegicus non-functional	IGHV2S6	IGH	V	FALSE	2863
-Rattus norvegicus non-functional	IGHV2S60	IGH	V	FALSE	2864
-Rattus norvegicus functional	IGHV2S61	IGH	V	TRUE	2865
-Rattus norvegicus non-functional	IGHV2S62	IGH	V	FALSE	2866
-Rattus norvegicus functional	IGHV2S63	IGH	V	TRUE	2867
-Rattus norvegicus functional	IGHV2S64	IGH	V	TRUE	2868
-Rattus norvegicus non-functional	IGHV2S69	IGH	V	FALSE	2869
-Rattus norvegicus non-functional	IGHV2S7	IGH	V	FALSE	2870
-Rattus norvegicus functional	IGHV2S70	IGH	V	TRUE	2871
-Rattus norvegicus non-functional	IGHV2S71	IGH	V	FALSE	2872
-Rattus norvegicus functional	IGHV2S72	IGH	V	TRUE	2873
-Rattus norvegicus non-functional	IGHV2S73	IGH	V	FALSE	2874
-Rattus norvegicus non-functional	IGHV2S74	IGH	V	FALSE	2875
-Rattus norvegicus functional	IGHV2S75	IGH	V	TRUE	2876
-Rattus norvegicus non-functional	IGHV2S76	IGH	V	FALSE	2877
-Rattus norvegicus non-functional	IGHV2S77	IGH	V	FALSE	2878
-Rattus norvegicus functional	IGHV2S78	IGH	V	TRUE	2879
-Rattus norvegicus non-functional	IGHV2S79	IGH	V	FALSE	2880
-Rattus norvegicus functional	IGHV2S8	IGH	V	TRUE	2881
-Rattus norvegicus non-functional	IGHV2S80	IGH	V	FALSE	2882
-Rattus norvegicus non-functional	IGHV2S81	IGH	V	FALSE	2883
-Rattus norvegicus functional	IGHV2S82	IGH	V	TRUE	2884
-Rattus norvegicus non-functional	IGHV2S83	IGH	V	FALSE	2885
-Rattus norvegicus functional	IGHV2S84	IGH	V	TRUE	2886
-Rattus norvegicus functional	IGHV2S85	IGH	V	TRUE	2887
-Rattus norvegicus non-functional	IGHV2S86	IGH	V	FALSE	2888
-Rattus norvegicus non-functional	IGHV2S87	IGH	V	FALSE	2889
-Rattus norvegicus functional	IGHV2S88	IGH	V	TRUE	2890
-Rattus norvegicus functional	IGHV2S89	IGH	V	TRUE	2891
-Rattus norvegicus non-functional	IGHV2S9	IGH	V	FALSE	2892
-Rattus norvegicus non-functional	IGHV2S90	IGH	V	FALSE	2893
-Rattus norvegicus non-functional	IGHV2S91	IGH	V	FALSE	2894
-Rattus norvegicus functional	IGHV2S92	IGH	V	TRUE	2895
-Rattus norvegicus non-functional	IGHV2S93	IGH	V	FALSE	2896
-Rattus norvegicus functional	IGHV2S94	IGH	V	TRUE	2897
-Rattus norvegicus non-functional	IGHV2S95	IGH	V	FALSE	2898
-Rattus norvegicus non-functional	IGHV2S96	IGH	V	FALSE	2899
-Rattus norvegicus functional	IGHV2S97	IGH	V	TRUE	2900
-Rattus norvegicus functional	IGHV2S98	IGH	V	TRUE	2901
-Rattus norvegicus non-functional	IGHV2S99	IGH	V	FALSE	2902
-Rattus norvegicus functional	IGHV3S1	IGH	V	TRUE	2903
-Rattus norvegicus non-functional	IGHV3S2	IGH	V	FALSE	2904
-Rattus norvegicus functional	IGHV3S3	IGH	V	TRUE	2905
-Rattus norvegicus non-functional	IGHV3S4	IGH	V	FALSE	2906
-Rattus norvegicus functional	IGHV3S5	IGH	V	TRUE	2907
-Rattus norvegicus non-functional	IGHV3S6	IGH	V	FALSE	2908
-Rattus norvegicus functional	IGHV3S7	IGH	V	TRUE	2909
-Rattus norvegicus non-functional	IGHV3S8	IGH	V	FALSE	2910
-Rattus norvegicus functional	IGHV4S1	IGH	V	TRUE	2911
-Rattus norvegicus functional	IGHV4S2	IGH	V	TRUE	2912
-Rattus norvegicus non-functional	IGHV4S3	IGH	V	FALSE	2913
-Rattus norvegicus non-functional	IGHV4S4	IGH	V	FALSE	2914
-Rattus norvegicus non-functional	IGHV5S1	IGH	V	FALSE	2915
-Rattus norvegicus functional	IGHV5S10	IGH	V	TRUE	2916
-Rattus norvegicus functional	IGHV5S11	IGH	V	TRUE	2917
-Rattus norvegicus non-functional	IGHV5S12	IGH	V	FALSE	2918
-Rattus norvegicus functional	IGHV5S13	IGH	V	TRUE	2919
-Rattus norvegicus functional	IGHV5S14	IGH	V	TRUE	2920
-Rattus norvegicus non-functional	IGHV5S15	IGH	V	FALSE	2921
-Rattus norvegicus functional	IGHV5S16	IGH	V	TRUE	2922
-Rattus norvegicus non-functional	IGHV5S17	IGH	V	FALSE	2923
-Rattus norvegicus non-functional	IGHV5S18	IGH	V	FALSE	2924
-Rattus norvegicus non-functional	IGHV5S19	IGH	V	FALSE	2925
-Rattus norvegicus non-functional	IGHV5S2	IGH	V	FALSE	2926
-Rattus norvegicus non-functional	IGHV5S20	IGH	V	FALSE	2927
-Rattus norvegicus non-functional	IGHV5S21	IGH	V	FALSE	2928
-Rattus norvegicus non-functional	IGHV5S22	IGH	V	FALSE	2929
-Rattus norvegicus functional	IGHV5S23	IGH	V	TRUE	2930
-Rattus norvegicus non-functional	IGHV5S24	IGH	V	FALSE	2931
-Rattus norvegicus non-functional	IGHV5S25	IGH	V	FALSE	2932
-Rattus norvegicus non-functional	IGHV5S26	IGH	V	FALSE	2933
-Rattus norvegicus functional	IGHV5S27	IGH	V	TRUE	2934
-Rattus norvegicus non-functional	IGHV5S28	IGH	V	FALSE	2935
-Rattus norvegicus functional	IGHV5S29	IGH	V	TRUE	2936
-Rattus norvegicus non-functional	IGHV5S3	IGH	V	FALSE	2937
-Rattus norvegicus functional	IGHV5S30	IGH	V	TRUE	2938
-Rattus norvegicus non-functional	IGHV5S31	IGH	V	FALSE	2939
-Rattus norvegicus functional	IGHV5S32	IGH	V	TRUE	2940
-Rattus norvegicus non-functional	IGHV5S33	IGH	V	FALSE	2941
-Rattus norvegicus non-functional	IGHV5S34	IGH	V	FALSE	2942
-Rattus norvegicus non-functional	IGHV5S35	IGH	V	FALSE	2943
-Rattus norvegicus functional	IGHV5S36	IGH	V	TRUE	2944
-Rattus norvegicus non-functional	IGHV5S37	IGH	V	FALSE	2945
-Rattus norvegicus non-functional	IGHV5S39	IGH	V	FALSE	2946
-Rattus norvegicus non-functional	IGHV5S4	IGH	V	FALSE	2947
-Rattus norvegicus non-functional	IGHV5S40	IGH	V	FALSE	2948
-Rattus norvegicus non-functional	IGHV5S41	IGH	V	FALSE	2949
-Rattus norvegicus non-functional	IGHV5S42	IGH	V	FALSE	2950
-Rattus norvegicus functional	IGHV5S43	IGH	V	TRUE	2951
-Rattus norvegicus non-functional	IGHV5S44	IGH	V	FALSE	2952
-Rattus norvegicus functional	IGHV5S45	IGH	V	TRUE	2953
-Rattus norvegicus non-functional	IGHV5S46	IGH	V	FALSE	2954
-Rattus norvegicus functional	IGHV5S47	IGH	V	TRUE	2955
-Rattus norvegicus non-functional	IGHV5S48	IGH	V	FALSE	2956
-Rattus norvegicus non-functional	IGHV5S49	IGH	V	FALSE	2957
-Rattus norvegicus non-functional	IGHV5S5	IGH	V	FALSE	2958
-Rattus norvegicus non-functional	IGHV5S50	IGH	V	FALSE	2959
-Rattus norvegicus non-functional	IGHV5S51	IGH	V	FALSE	2960
-Rattus norvegicus non-functional	IGHV5S52	IGH	V	FALSE	2961
-Rattus norvegicus non-functional	IGHV5S53	IGH	V	FALSE	2962
-Rattus norvegicus functional	IGHV5S54	IGH	V	TRUE	2963
-Rattus norvegicus non-functional	IGHV5S55	IGH	V	FALSE	2964
-Rattus norvegicus non-functional	IGHV5S56	IGH	V	FALSE	2965
-Rattus norvegicus functional	IGHV5S57	IGH	V	TRUE	2966
-Rattus norvegicus functional	IGHV5S58	IGH	V	TRUE	2967
-Rattus norvegicus non-functional	IGHV5S59	IGH	V	FALSE	2968
-Rattus norvegicus non-functional	IGHV5S6	IGH	V	FALSE	2969
-Rattus norvegicus non-functional	IGHV5S60	IGH	V	FALSE	2970
-Rattus norvegicus non-functional	IGHV5S61	IGH	V	FALSE	2971
-Rattus norvegicus non-functional	IGHV5S62	IGH	V	FALSE	2972
-Rattus norvegicus non-functional	IGHV5S63	IGH	V	FALSE	2973
-Rattus norvegicus functional	IGHV5S64	IGH	V	TRUE	2974
-Rattus norvegicus functional	IGHV5S65	IGH	V	TRUE	2975
-Rattus norvegicus non-functional	IGHV5S66	IGH	V	FALSE	2976
-Rattus norvegicus non-functional	IGHV5S67	IGH	V	FALSE	2977
-Rattus norvegicus non-functional	IGHV5S68	IGH	V	FALSE	2978
-Rattus norvegicus non-functional	IGHV5S69	IGH	V	FALSE	2979
-Rattus norvegicus non-functional	IGHV5S7	IGH	V	FALSE	2980
-Rattus norvegicus non-functional	IGHV5S70	IGH	V	FALSE	2981
-Rattus norvegicus non-functional	IGHV5S71	IGH	V	FALSE	2982
-Rattus norvegicus non-functional	IGHV5S72	IGH	V	FALSE	2983
-Rattus norvegicus non-functional	IGHV5S73	IGH	V	FALSE	2984
-Rattus norvegicus functional	IGHV5S74	IGH	V	TRUE	2985
-Rattus norvegicus non-functional	IGHV5S75	IGH	V	FALSE	2986
-Rattus norvegicus functional	IGHV5S8	IGH	V	TRUE	2987
-Rattus norvegicus non-functional	IGHV5S9	IGH	V	FALSE	2988
-Rattus norvegicus non-functional	IGHV6S1	IGH	V	FALSE	2989
-Rattus norvegicus functional	IGHV6S10	IGH	V	TRUE	2990
-Rattus norvegicus functional	IGHV6S11	IGH	V	TRUE	2991
-Rattus norvegicus non-functional	IGHV6S12	IGH	V	FALSE	2992
-Rattus norvegicus non-functional	IGHV6S13	IGH	V	FALSE	2993
-Rattus norvegicus functional	IGHV6S14	IGH	V	TRUE	2994
-Rattus norvegicus non-functional	IGHV6S15	IGH	V	FALSE	2995
-Rattus norvegicus non-functional	IGHV6S16	IGH	V	FALSE	2996
-Rattus norvegicus functional	IGHV6S17	IGH	V	TRUE	2997
-Rattus norvegicus functional	IGHV6S18	IGH	V	TRUE	2998
-Rattus norvegicus functional	IGHV6S19	IGH	V	TRUE	2999
-Rattus norvegicus non-functional	IGHV6S20	IGH	V	FALSE	3000
-Rattus norvegicus functional	IGHV6S3	IGH	V	TRUE	3001
-Rattus norvegicus non-functional	IGHV6S4	IGH	V	FALSE	3002
-Rattus norvegicus non-functional	IGHV6S5	IGH	V	FALSE	3003
-Rattus norvegicus functional	IGHV6S6	IGH	V	TRUE	3004
-Rattus norvegicus non-functional	IGHV6S7	IGH	V	FALSE	3005
-Rattus norvegicus non-functional	IGHV6S8	IGH	V	FALSE	3006
-Rattus norvegicus non-functional	IGHV6S9	IGH	V	FALSE	3007
-Rattus norvegicus functional	IGHV7S1	IGH	V	TRUE	3008
-Rattus norvegicus non-functional	IGHV7S10	IGH	V	FALSE	3009
-Rattus norvegicus non-functional	IGHV7S11	IGH	V	FALSE	3010
-Rattus norvegicus non-functional	IGHV7S12	IGH	V	FALSE	3011
-Rattus norvegicus functional	IGHV7S13	IGH	V	TRUE	3012
-Rattus norvegicus non-functional	IGHV7S14	IGH	V	FALSE	3013
-Rattus norvegicus non-functional	IGHV7S15	IGH	V	FALSE	3014
-Rattus norvegicus functional	IGHV7S16	IGH	V	TRUE	3015
-Rattus norvegicus non-functional	IGHV7S2	IGH	V	FALSE	3016
-Rattus norvegicus non-functional	IGHV7S3	IGH	V	FALSE	3017
-Rattus norvegicus functional	IGHV7S4	IGH	V	TRUE	3018
-Rattus norvegicus functional	IGHV7S5	IGH	V	TRUE	3019
-Rattus norvegicus functional	IGHV7S6	IGH	V	TRUE	3020
-Rattus norvegicus non-functional	IGHV7S8	IGH	V	FALSE	3021
-Rattus norvegicus non-functional	IGHV7S9	IGH	V	FALSE	3022
-Rattus norvegicus non-functional	IGHV8S1	IGH	V	FALSE	3023
-Rattus norvegicus functional	IGHV8S10	IGH	V	TRUE	3024
-Rattus norvegicus functional	IGHV8S11	IGH	V	TRUE	3025
-Rattus norvegicus non-functional	IGHV8S12	IGH	V	FALSE	3026
-Rattus norvegicus functional	IGHV8S13	IGH	V	TRUE	3027
-Rattus norvegicus non-functional	IGHV8S14	IGH	V	FALSE	3028
-Rattus norvegicus functional	IGHV8S15	IGH	V	TRUE	3029
-Rattus norvegicus functional	IGHV8S16	IGH	V	TRUE	3030
-Rattus norvegicus non-functional	IGHV8S17	IGH	V	FALSE	3031
-Rattus norvegicus functional	IGHV8S18	IGH	V	TRUE	3032
-Rattus norvegicus non-functional	IGHV8S19	IGH	V	FALSE	3033
-Rattus norvegicus functional	IGHV8S2	IGH	V	TRUE	3034
-Rattus norvegicus non-functional	IGHV8S3	IGH	V	FALSE	3035
-Rattus norvegicus non-functional	IGHV8S4	IGH	V	FALSE	3036
-Rattus norvegicus non-functional	IGHV8S5	IGH	V	FALSE	3037
-Rattus norvegicus non-functional	IGHV8S6	IGH	V	FALSE	3038
-Rattus norvegicus functional	IGHV8S7	IGH	V	TRUE	3039
-Rattus norvegicus non-functional	IGHV8S8	IGH	V	FALSE	3040
-Rattus norvegicus non-functional	IGHV8S9	IGH	V	FALSE	3041
-Rattus norvegicus non-functional	IGHV9S1	IGH	V	FALSE	3042
-Rattus norvegicus non-functional	IGHV9S2	IGH	V	FALSE	3043
-Rattus norvegicus functional	IGHV9S3	IGH	V	TRUE	3044
-Rattus norvegicus functional	IGHV9S4	IGH	V	TRUE	3045
-Rattus norvegicus non-functional	IGHV9S5	IGH	V	FALSE	3046
-Rattus norvegicus functional	IGHV9S6	IGH	V	TRUE	3047
-Rattus norvegicus non-functional	IGHV9S7	IGH	V	FALSE	3048
-Rattus norvegicus functional	IGHV9S8	IGH	V	TRUE	3049
-Rattus norvegicus functional	IGKJ1	IGK	J	TRUE	3050
-Rattus norvegicus functional	IGKJ2-1	IGK	J	TRUE	3051
-Rattus norvegicus functional	IGKJ2-2	IGK	J	TRUE	3052
-Rattus norvegicus functional	IGKJ2-3	IGK	J	TRUE	3053
-Rattus norvegicus non-functional	IGKJ3	IGK	J	FALSE	3054
-Rattus norvegicus functional	IGKJ4	IGK	J	TRUE	3055
-Rattus norvegicus functional	IGKJ5	IGK	J	TRUE	3056
-Rattus norvegicus functional	IGKV10S11	IGK	V	TRUE	3057
-Rattus norvegicus functional	IGKV10S12	IGK	V	TRUE	3058
-Rattus norvegicus functional	IGKV10S5	IGK	V	TRUE	3059
-Rattus norvegicus functional	IGKV10S6	IGK	V	TRUE	3060
-Rattus norvegicus functional	IGKV10S9	IGK	V	TRUE	3061
-Rattus norvegicus functional	IGKV12S1	IGK	V	TRUE	3062
-Rattus norvegicus functional	IGKV12S11	IGK	V	TRUE	3063
-Rattus norvegicus non-functional	IGKV12S12	IGK	V	FALSE	3064
-Rattus norvegicus functional	IGKV12S14	IGK	V	TRUE	3065
-Rattus norvegicus functional	IGKV12S16	IGK	V	TRUE	3066
-Rattus norvegicus functional	IGKV12S17	IGK	V	TRUE	3067
-Rattus norvegicus functional	IGKV12S20	IGK	V	TRUE	3068
-Rattus norvegicus functional	IGKV12S22	IGK	V	TRUE	3069
-Rattus norvegicus functional	IGKV12S24	IGK	V	TRUE	3070
-Rattus norvegicus functional	IGKV12S25	IGK	V	TRUE	3071
-Rattus norvegicus functional	IGKV12S26	IGK	V	TRUE	3072
-Rattus norvegicus non-functional	IGKV12S27	IGK	V	FALSE	3073
-Rattus norvegicus non-functional	IGKV12S28	IGK	V	FALSE	3074
-Rattus norvegicus functional	IGKV12S29	IGK	V	TRUE	3075
-Rattus norvegicus functional	IGKV12S30	IGK	V	TRUE	3076
-Rattus norvegicus functional	IGKV12S31	IGK	V	TRUE	3077
-Rattus norvegicus functional	IGKV12S32	IGK	V	TRUE	3078
-Rattus norvegicus functional	IGKV12S34	IGK	V	TRUE	3079
-Rattus norvegicus functional	IGKV12S36	IGK	V	TRUE	3080
-Rattus norvegicus functional	IGKV12S38	IGK	V	TRUE	3081
-Rattus norvegicus functional	IGKV12S39	IGK	V	TRUE	3082
-Rattus norvegicus non-functional	IGKV12S5	IGK	V	FALSE	3083
-Rattus norvegicus functional	IGKV12S7	IGK	V	TRUE	3084
-Rattus norvegicus functional	IGKV12S8	IGK	V	TRUE	3085
-Rattus norvegicus functional	IGKV12S9	IGK	V	TRUE	3086
-Rattus norvegicus non-functional	IGKV13S7	IGK	V	FALSE	3087
-Rattus norvegicus functional	IGKV14S1	IGK	V	TRUE	3088
-Rattus norvegicus functional	IGKV14S13	IGK	V	TRUE	3089
-Rattus norvegicus functional	IGKV14S14	IGK	V	TRUE	3090
-Rattus norvegicus functional	IGKV14S15	IGK	V	TRUE	3091
-Rattus norvegicus functional	IGKV14S16	IGK	V	TRUE	3092
-Rattus norvegicus functional	IGKV14S18	IGK	V	TRUE	3093
-Rattus norvegicus functional	IGKV14S19	IGK	V	TRUE	3094
-Rattus norvegicus functional	IGKV14S2	IGK	V	TRUE	3095
-Rattus norvegicus functional	IGKV14S22	IGK	V	TRUE	3096
-Rattus norvegicus non-functional	IGKV14S4	IGK	V	FALSE	3097
-Rattus norvegicus functional	IGKV14S8	IGK	V	TRUE	3098
-Rattus norvegicus functional	IGKV14S9	IGK	V	TRUE	3099
-Rattus norvegicus non-functional	IGKV15S2	IGK	V	FALSE	3100
-Rattus norvegicus non-functional	IGKV15S3	IGK	V	FALSE	3101
-Rattus norvegicus functional	IGKV15S4	IGK	V	TRUE	3102
-Rattus norvegicus functional	IGKV16S1	IGK	V	TRUE	3103
-Rattus norvegicus non-functional	IGKV16S2	IGK	V	FALSE	3104
-Rattus norvegicus functional	IGKV17S1	IGK	V	TRUE	3105
-Rattus norvegicus functional	IGKV18S1	IGK	V	TRUE	3106
-Rattus norvegicus functional	IGKV19S1	IGK	V	TRUE	3107
-Rattus norvegicus functional	IGKV19S2	IGK	V	TRUE	3108
-Rattus norvegicus functional	IGKV1S1	IGK	V	TRUE	3109
-Rattus norvegicus functional	IGKV1S12	IGK	V	TRUE	3110
-Rattus norvegicus functional	IGKV1S14	IGK	V	TRUE	3111
-Rattus norvegicus non-functional	IGKV1S15	IGK	V	FALSE	3112
-Rattus norvegicus functional	IGKV1S18	IGK	V	TRUE	3113
-Rattus norvegicus functional	IGKV1S19	IGK	V	TRUE	3114
-Rattus norvegicus functional	IGKV1S21	IGK	V	TRUE	3115
-Rattus norvegicus functional	IGKV1S22	IGK	V	TRUE	3116
-Rattus norvegicus functional	IGKV1S23	IGK	V	TRUE	3117
-Rattus norvegicus functional	IGKV1S24	IGK	V	TRUE	3118
-Rattus norvegicus functional	IGKV1S25	IGK	V	TRUE	3119
-Rattus norvegicus functional	IGKV1S26	IGK	V	TRUE	3120
-Rattus norvegicus functional	IGKV1S27	IGK	V	TRUE	3121
-Rattus norvegicus functional	IGKV1S28	IGK	V	TRUE	3122
-Rattus norvegicus functional	IGKV1S29	IGK	V	TRUE	3123
-Rattus norvegicus functional	IGKV1S30	IGK	V	TRUE	3124
-Rattus norvegicus functional	IGKV1S31	IGK	V	TRUE	3125
-Rattus norvegicus non-functional	IGKV1S32	IGK	V	FALSE	3126
-Rattus norvegicus functional	IGKV1S34	IGK	V	TRUE	3127
-Rattus norvegicus functional	IGKV1S42	IGK	V	TRUE	3128
-Rattus norvegicus functional	IGKV1S5	IGK	V	TRUE	3129
-Rattus norvegicus functional	IGKV1S7	IGK	V	TRUE	3130
-Rattus norvegicus functional	IGKV1S8	IGK	V	TRUE	3131
-Rattus norvegicus functional	IGKV20S1	IGK	V	TRUE	3132
-Rattus norvegicus functional	IGKV21S2	IGK	V	TRUE	3133
-Rattus norvegicus functional	IGKV21S3	IGK	V	TRUE	3134
-Rattus norvegicus functional	IGKV22S1	IGK	V	TRUE	3135
-Rattus norvegicus functional	IGKV22S2	IGK	V	TRUE	3136
-Rattus norvegicus functional	IGKV22S4	IGK	V	TRUE	3137
-Rattus norvegicus functional	IGKV22S5	IGK	V	TRUE	3138
-Rattus norvegicus non-functional	IGKV22S6	IGK	V	FALSE	3139
-Rattus norvegicus functional	IGKV22S7	IGK	V	TRUE	3140
-Rattus norvegicus non-functional	IGKV22S8	IGK	V	FALSE	3141
-Rattus norvegicus functional	IGKV22S9	IGK	V	TRUE	3142
-Rattus norvegicus functional	IGKV2S11	IGK	V	TRUE	3143
-Rattus norvegicus functional	IGKV2S16	IGK	V	TRUE	3144
-Rattus norvegicus functional	IGKV2S17	IGK	V	TRUE	3145
-Rattus norvegicus non-functional	IGKV2S20	IGK	V	FALSE	3146
-Rattus norvegicus non-functional	IGKV2S21	IGK	V	FALSE	3147
-Rattus norvegicus non-functional	IGKV2S22	IGK	V	FALSE	3148
-Rattus norvegicus non-functional	IGKV2S23	IGK	V	FALSE	3149
-Rattus norvegicus non-functional	IGKV2S24	IGK	V	FALSE	3150
-Rattus norvegicus functional	IGKV2S25	IGK	V	TRUE	3151
-Rattus norvegicus functional	IGKV2S26	IGK	V	TRUE	3152
-Rattus norvegicus functional	IGKV2S27	IGK	V	TRUE	3153
-Rattus norvegicus functional	IGKV2S3	IGK	V	TRUE	3154
-Rattus norvegicus functional	IGKV2S6	IGK	V	TRUE	3155
-Rattus norvegicus functional	IGKV2S9	IGK	V	TRUE	3156
-Rattus norvegicus functional	IGKV3S1	IGK	V	TRUE	3157
-Rattus norvegicus functional	IGKV3S10	IGK	V	TRUE	3158
-Rattus norvegicus functional	IGKV3S11	IGK	V	TRUE	3159
-Rattus norvegicus non-functional	IGKV3S12	IGK	V	FALSE	3160
-Rattus norvegicus functional	IGKV3S13	IGK	V	TRUE	3161
-Rattus norvegicus non-functional	IGKV3S14	IGK	V	FALSE	3162
-Rattus norvegicus non-functional	IGKV3S15	IGK	V	FALSE	3163
-Rattus norvegicus functional	IGKV3S17	IGK	V	TRUE	3164
-Rattus norvegicus functional	IGKV3S18	IGK	V	TRUE	3165
-Rattus norvegicus functional	IGKV3S19	IGK	V	TRUE	3166
-Rattus norvegicus functional	IGKV3S5	IGK	V	TRUE	3167
-Rattus norvegicus functional	IGKV3S6	IGK	V	TRUE	3168
-Rattus norvegicus non-functional	IGKV3S7	IGK	V	FALSE	3169
-Rattus norvegicus functional	IGKV3S8	IGK	V	TRUE	3170
-Rattus norvegicus functional	IGKV3S9	IGK	V	TRUE	3171
-Rattus norvegicus functional	IGKV4S10	IGK	V	TRUE	3172
-Rattus norvegicus functional	IGKV4S11	IGK	V	TRUE	3173
-Rattus norvegicus functional	IGKV4S12	IGK	V	TRUE	3174
-Rattus norvegicus functional	IGKV4S13	IGK	V	TRUE	3175
-Rattus norvegicus functional	IGKV4S14	IGK	V	TRUE	3176
-Rattus norvegicus functional	IGKV4S15	IGK	V	TRUE	3177
-Rattus norvegicus functional	IGKV4S16	IGK	V	TRUE	3178
-Rattus norvegicus functional	IGKV4S18	IGK	V	TRUE	3179
-Rattus norvegicus functional	IGKV4S19	IGK	V	TRUE	3180
-Rattus norvegicus functional	IGKV4S2	IGK	V	TRUE	3181
-Rattus norvegicus functional	IGKV4S20	IGK	V	TRUE	3182
-Rattus norvegicus functional	IGKV4S21	IGK	V	TRUE	3183
-Rattus norvegicus functional	IGKV4S3	IGK	V	TRUE	3184
-Rattus norvegicus functional	IGKV4S4	IGK	V	TRUE	3185
-Rattus norvegicus functional	IGKV4S5	IGK	V	TRUE	3186
-Rattus norvegicus functional	IGKV4S6	IGK	V	TRUE	3187
-Rattus norvegicus functional	IGKV4S7	IGK	V	TRUE	3188
-Rattus norvegicus functional	IGKV4S8	IGK	V	TRUE	3189
-Rattus norvegicus functional	IGKV4S9	IGK	V	TRUE	3190
-Rattus norvegicus non-functional	IGKV5S1	IGK	V	FALSE	3191
-Rattus norvegicus functional	IGKV5S10	IGK	V	TRUE	3192
-Rattus norvegicus functional	IGKV5S12	IGK	V	TRUE	3193
-Rattus norvegicus functional	IGKV5S2	IGK	V	TRUE	3194
-Rattus norvegicus non-functional	IGKV5S4	IGK	V	FALSE	3195
-Rattus norvegicus functional	IGKV5S5	IGK	V	TRUE	3196
-Rattus norvegicus functional	IGKV5S6	IGK	V	TRUE	3197
-Rattus norvegicus functional	IGKV6S10	IGK	V	TRUE	3198
-Rattus norvegicus functional	IGKV6S11	IGK	V	TRUE	3199
-Rattus norvegicus non-functional	IGKV6S2	IGK	V	FALSE	3200
-Rattus norvegicus non-functional	IGKV6S3	IGK	V	FALSE	3201
-Rattus norvegicus functional	IGKV6S4	IGK	V	TRUE	3202
-Rattus norvegicus functional	IGKV6S5	IGK	V	TRUE	3203
-Rattus norvegicus non-functional	IGKV6S6	IGK	V	FALSE	3204
-Rattus norvegicus functional	IGKV6S7	IGK	V	TRUE	3205
-Rattus norvegicus functional	IGKV6S8	IGK	V	TRUE	3206
-Rattus norvegicus functional	IGKV6S9	IGK	V	TRUE	3207
-Rattus norvegicus functional	IGKV7S1	IGK	V	TRUE	3208
-Rattus norvegicus functional	IGKV8S10	IGK	V	TRUE	3209
-Rattus norvegicus non-functional	IGKV8S11	IGK	V	FALSE	3210
-Rattus norvegicus non-functional	IGKV8S2	IGK	V	FALSE	3211
-Rattus norvegicus functional	IGKV8S4	IGK	V	TRUE	3212
-Rattus norvegicus functional	IGKV8S5	IGK	V	TRUE	3213
-Rattus norvegicus functional	IGKV8S6	IGK	V	TRUE	3214
-Rattus norvegicus functional	IGKV8S7	IGK	V	TRUE	3215
-Rattus norvegicus functional	IGKV8S8	IGK	V	TRUE	3216
-Rattus norvegicus functional	IGKV8S9	IGK	V	TRUE	3217
-Rattus norvegicus functional	IGKV9S1	IGK	V	TRUE	3218
-Rattus norvegicus functional	IGKV9S2	IGK	V	TRUE	3219
-Rattus norvegicus functional	IGLJ1	IGL	J	TRUE	3220
-Rattus norvegicus non-functional	IGLJ2	IGL	J	FALSE	3221
-Rattus norvegicus functional	IGLJ3	IGL	J	TRUE	3222
-Rattus norvegicus non-functional	IGLJ4	IGL	J	FALSE	3223
-Rattus norvegicus functional	IGLV1S1	IGL	V	TRUE	3224
-Rattus norvegicus functional	IGLV2S1	IGL	V	TRUE	3225
-Rattus norvegicus functional	IGLV3S1	IGL	V	TRUE	3226
-Rattus norvegicus functional	IGLV3S2	IGL	V	TRUE	3227
-Rattus norvegicus functional	IGLV3S3	IGL	V	TRUE	3228
-Rattus norvegicus functional	IGLV3S4	IGL	V	TRUE	3229
-Rattus norvegicus functional	IGLV3S5	IGL	V	TRUE	3230
-Sus scrofa functional	IGHD	IGH	D	TRUE	3231
-Sus scrofa functional	IGHD1	IGH	D	TRUE	3232
-Sus scrofa functional	IGHD2	IGH	D	TRUE	3233
-Sus scrofa functional	IGHD3	IGH	D	TRUE	3234
-Sus scrofa functional	IGHD4	IGH	D	TRUE	3235
-Sus scrofa functional	IGHJ1	IGH	J	TRUE	3236
-Sus scrofa functional	IGHJ2	IGH	J	TRUE	3237
-Sus scrofa functional	IGHJ3	IGH	J	TRUE	3238
-Sus scrofa functional	IGHJ4	IGH	J	TRUE	3239
-Sus scrofa functional	IGHJ5	IGH	J	TRUE	3240
-Sus scrofa non-functional	IGHV1-1	IGH	V	FALSE	3241
-Sus scrofa functional	IGHV1-10	IGH	V	TRUE	3242
-Sus scrofa functional	IGHV1-11	IGH	V	TRUE	3243
-Sus scrofa functional	IGHV1-12	IGH	V	TRUE	3244
-Sus scrofa non-functional	IGHV1-13	IGH	V	FALSE	3245
-Sus scrofa functional	IGHV1-14	IGH	V	TRUE	3246
-Sus scrofa functional	IGHV1-15	IGH	V	TRUE	3247
-Sus scrofa functional	IGHV1-2	IGH	V	TRUE	3248
-Sus scrofa non-functional	IGHV1-3	IGH	V	FALSE	3249
-Sus scrofa functional	IGHV1-4	IGH	V	TRUE	3250
-Sus scrofa functional	IGHV1-5	IGH	V	TRUE	3251
-Sus scrofa functional	IGHV1-6	IGH	V	TRUE	3252
-Sus scrofa non-functional	IGHV1-7	IGH	V	FALSE	3253
-Sus scrofa functional	IGHV1-8	IGH	V	TRUE	3254
-Sus scrofa non-functional	IGHV1-9	IGH	V	FALSE	3255
-Sus scrofa functional	IGHV1S2	IGH	V	TRUE	3256
-Sus scrofa non-functional	IGHV1S3	IGH	V	FALSE	3257
-Sus scrofa functional	IGHV1S5	IGH	V	TRUE	3258
-Sus scrofa functional	IGHV1S6	IGH	V	TRUE	3259
-Sus scrofa non-functional	IGHV1S7	IGH	V	FALSE	3260
-Sus scrofa non-functional	IGHV1S8	IGH	V	FALSE	3261
-Sus scrofa functional	IGKJ1	IGK	J	TRUE	3262
-Sus scrofa functional	IGKJ2	IGK	J	TRUE	3263
-Sus scrofa functional	IGKJ3	IGK	J	TRUE	3264
-Sus scrofa functional	IGKJ4	IGK	J	TRUE	3265
-Sus scrofa functional	IGKJ5	IGK	J	TRUE	3266
-Sus scrofa functional	IGKV1-11	IGK	V	TRUE	3267
-Sus scrofa functional	IGKV1-14	IGK	V	TRUE	3268
-Sus scrofa functional	IGKV1-7	IGK	V	TRUE	3269
-Sus scrofa functional	IGKV1-9	IGK	V	TRUE	3270
-Sus scrofa functional	IGKV1D-11	IGK	V	TRUE	3271
-Sus scrofa functional	IGKV2-10	IGK	V	TRUE	3272
-Sus scrofa functional	IGKV2-12	IGK	V	TRUE	3273
-Sus scrofa functional	IGKV2-13	IGK	V	TRUE	3274
-Sus scrofa non-functional	IGKV2-5	IGK	V	FALSE	3275
-Sus scrofa functional	IGKV2-6	IGK	V	TRUE	3276
-Sus scrofa functional	IGKV2-8	IGK	V	TRUE	3277
-Sus scrofa non-functional	IGKV2/OR3-1	IGK	V	FALSE	3278
-Sus scrofa functional	IGKV2D-12	IGK	V	TRUE	3279
-Sus scrofa non-functional	IGKV3-3	IGK	V	FALSE	3280
-Sus scrofa non-functional	IGKV5-4	IGK	V	FALSE	3281
-Sus scrofa functional	IGLJ2	IGL	J	TRUE	3282
-Sus scrofa functional	IGLJ3	IGL	J	TRUE	3283
-Sus scrofa functional	IGLJ4	IGL	J	TRUE	3284
-Sus scrofa non-functional	IGLV(III)-8	IGL	V	FALSE	3285
-Sus scrofa non-functional	IGLV1-15	IGL	V	FALSE	3286
-Sus scrofa non-functional	IGLV1-20	IGL	V	FALSE	3287
-Sus scrofa functional	IGLV2-6	IGL	V	TRUE	3288
-Sus scrofa non-functional	IGLV3-1	IGL	V	FALSE	3289
-Sus scrofa functional	IGLV3-2	IGL	V	TRUE	3290
-Sus scrofa functional	IGLV3-3	IGL	V	TRUE	3291
-Sus scrofa functional	IGLV3-4	IGL	V	TRUE	3292
-Sus scrofa functional	IGLV3-5	IGL	V	TRUE	3293
-Sus scrofa non-functional	IGLV5-11	IGL	V	FALSE	3294
-Sus scrofa functional	IGLV5-14	IGL	V	TRUE	3295
-Sus scrofa non-functional	IGLV5-17	IGL	V	FALSE	3296
-Sus scrofa non-functional	IGLV5-22	IGL	V	FALSE	3297
-Sus scrofa non-functional	IGLV7-7	IGL	V	FALSE	3298
-Sus scrofa non-functional	IGLV7-9	IGL	V	FALSE	3299
-Sus scrofa functional	IGLV8-10	IGL	V	TRUE	3300
-Sus scrofa functional	IGLV8-13	IGL	V	TRUE	3301
-Sus scrofa non-functional	IGLV8-16	IGL	V	FALSE	3302
-Sus scrofa functional	IGLV8-18	IGL	V	TRUE	3303
-Sus scrofa functional	IGLV8-19	IGL	V	TRUE	3304
-Sus scrofa non-functional	IGLV8-21	IGL	V	FALSE	3305
+Species	IMGT.GENE.DB	locus	region	functional	chr.order
+Bos taurus functional	TRAJ1	TRA	J	TRUE	1
+Bos taurus functional	TRAJ10	TRA	J	TRUE	2
+Bos taurus functional	TRAJ11	TRA	J	TRUE	3
+Bos taurus non-functional	TRAJ12	TRA	J	FALSE	4
+Bos taurus functional	TRAJ13	TRA	J	TRUE	5
+Bos taurus functional	TRAJ14	TRA	J	TRUE	6
+Bos taurus functional	TRAJ15	TRA	J	TRUE	7
+Bos taurus functional	TRAJ16	TRA	J	TRUE	8
+Bos taurus functional	TRAJ17	TRA	J	TRUE	9
+Bos taurus functional	TRAJ18	TRA	J	TRUE	10
+Bos taurus functional	TRAJ19	TRA	J	TRUE	11
+Bos taurus functional	TRAJ2	TRA	J	TRUE	12
+Bos taurus functional	TRAJ20	TRA	J	TRUE	13
+Bos taurus functional	TRAJ21	TRA	J	TRUE	14
+Bos taurus functional	TRAJ22	TRA	J	TRUE	15
+Bos taurus functional	TRAJ23	TRA	J	TRUE	16
+Bos taurus functional	TRAJ24	TRA	J	TRUE	17
+Bos taurus functional	TRAJ25	TRA	J	TRUE	18
+Bos taurus functional	TRAJ26	TRA	J	TRUE	19
+Bos taurus non-functional	TRAJ27	TRA	J	FALSE	20
+Bos taurus functional	TRAJ28	TRA	J	TRUE	21
+Bos taurus functional	TRAJ29	TRA	J	TRUE	22
+Bos taurus functional	TRAJ3	TRA	J	TRUE	23
+Bos taurus non-functional	TRAJ30	TRA	J	FALSE	24
+Bos taurus functional	TRAJ31	TRA	J	TRUE	25
+Bos taurus functional	TRAJ32	TRA	J	TRUE	26
+Bos taurus functional	TRAJ33	TRA	J	TRUE	27
+Bos taurus functional	TRAJ34	TRA	J	TRUE	28
+Bos taurus functional	TRAJ35	TRA	J	TRUE	29
+Bos taurus functional	TRAJ36	TRA	J	TRUE	30
+Bos taurus functional	TRAJ37	TRA	J	TRUE	31
+Bos taurus functional	TRAJ38	TRA	J	TRUE	32
+Bos taurus functional	TRAJ39	TRA	J	TRUE	33
+Bos taurus non-functional	TRAJ4	TRA	J	FALSE	34
+Bos taurus functional	TRAJ40	TRA	J	TRUE	35
+Bos taurus functional	TRAJ41	TRA	J	TRUE	36
+Bos taurus functional	TRAJ42	TRA	J	TRUE	37
+Bos taurus functional	TRAJ43	TRA	J	TRUE	38
+Bos taurus functional	TRAJ44	TRA	J	TRUE	39
+Bos taurus functional	TRAJ45	TRA	J	TRUE	40
+Bos taurus functional	TRAJ46	TRA	J	TRUE	41
+Bos taurus non-functional	TRAJ47	TRA	J	FALSE	42
+Bos taurus functional	TRAJ48	TRA	J	TRUE	43
+Bos taurus functional	TRAJ49	TRA	J	TRUE	44
+Bos taurus functional	TRAJ5	TRA	J	TRUE	45
+Bos taurus functional	TRAJ50	TRA	J	TRUE	46
+Bos taurus functional	TRAJ51	TRA	J	TRUE	47
+Bos taurus non-functional	TRAJ52	TRA	J	FALSE	48
+Bos taurus functional	TRAJ6	TRA	J	TRUE	49
+Bos taurus functional	TRAJ7	TRA	J	TRUE	50
+Bos taurus functional	TRAJ8	TRA	J	TRUE	51
+Bos taurus functional	TRAJ9	TRA	J	TRUE	52
+Bos taurus functional	TRDD1	TRD	D	TRUE	53
+Bos taurus functional	TRDD2	TRD	D	TRUE	54
+Bos taurus functional	TRDD3	TRD	D	TRUE	55
+Bos taurus functional	TRDD4	TRD	D	TRUE	56
+Bos taurus functional	TRDD5	TRD	D	TRUE	57
+Bos taurus functional	TRDJ1	TRD	J	TRUE	58
+Bos taurus functional	TRDJ2	TRD	J	TRUE	59
+Bos taurus functional	TRDJ3	TRD	J	TRUE	60
+Bos taurus functional	TRDV1S1	TRD	V	TRUE	61
+Bos taurus functional	TRDV1S10	TRD	V	TRUE	62
+Bos taurus functional	TRDV1S11	TRD	V	TRUE	63
+Bos taurus functional	TRDV1S12	TRD	V	TRUE	64
+Bos taurus functional	TRDV1S13-1	TRD	V	TRUE	65
+Bos taurus functional	TRDV1S13-2	TRD	V	TRUE	66
+Bos taurus functional	TRDV1S14	TRD	V	TRUE	67
+Bos taurus functional	TRDV1S15-1	TRD	V	TRUE	68
+Bos taurus functional	TRDV1S15-2	TRD	V	TRUE	69
+Bos taurus functional	TRDV1S16	TRD	V	TRUE	70
+Bos taurus functional	TRDV1S17	TRD	V	TRUE	71
+Bos taurus functional	TRDV1S18-1	TRD	V	TRUE	72
+Bos taurus functional	TRDV1S18-2	TRD	V	TRUE	73
+Bos taurus functional	TRDV1S19	TRD	V	TRUE	74
+Bos taurus non-functional	TRDV1S2-1	TRD	V	FALSE	75
+Bos taurus non-functional	TRDV1S2-2	TRD	V	FALSE	76
+Bos taurus functional	TRDV1S20	TRD	V	TRUE	77
+Bos taurus functional	TRDV1S21-1	TRD	V	TRUE	78
+Bos taurus functional	TRDV1S21-2	TRD	V	TRUE	79
+Bos taurus non-functional	TRDV1S22	TRD	V	FALSE	80
+Bos taurus functional	TRDV1S23	TRD	V	TRUE	81
+Bos taurus functional	TRDV1S24	TRD	V	TRUE	82
+Bos taurus non-functional	TRDV1S25-1	TRD	V	FALSE	83
+Bos taurus non-functional	TRDV1S25-2	TRD	V	FALSE	84
+Bos taurus functional	TRDV1S26	TRD	V	TRUE	85
+Bos taurus functional	TRDV1S27-1	TRD	V	TRUE	86
+Bos taurus functional	TRDV1S27-2	TRD	V	TRUE	87
+Bos taurus functional	TRDV1S28	TRD	V	TRUE	88
+Bos taurus functional	TRDV1S29	TRD	V	TRUE	89
+Bos taurus functional	TRDV1S3	TRD	V	TRUE	90
+Bos taurus functional	TRDV1S30	TRD	V	TRUE	91
+Bos taurus functional	TRDV1S31	TRD	V	TRUE	92
+Bos taurus functional	TRDV1S32	TRD	V	TRUE	93
+Bos taurus functional	TRDV1S33	TRD	V	TRUE	94
+Bos taurus non-functional	TRDV1S34	TRD	V	FALSE	95
+Bos taurus functional	TRDV1S35	TRD	V	TRUE	96
+Bos taurus functional	TRDV1S36	TRD	V	TRUE	97
+Bos taurus functional	TRDV1S37	TRD	V	TRUE	98
+Bos taurus functional	TRDV1S38	TRD	V	TRUE	99
+Bos taurus functional	TRDV1S39	TRD	V	TRUE	100
+Bos taurus functional	TRDV1S4-1	TRD	V	TRUE	101
+Bos taurus functional	TRDV1S4-2	TRD	V	TRUE	102
+Bos taurus functional	TRDV1S4-3	TRD	V	TRUE	103
+Bos taurus functional	TRDV1S40	TRD	V	TRUE	104
+Bos taurus functional	TRDV1S41	TRD	V	TRUE	105
+Bos taurus functional	TRDV1S42	TRD	V	TRUE	106
+Bos taurus functional	TRDV1S43	TRD	V	TRUE	107
+Bos taurus non-functional	TRDV1S44	TRD	V	FALSE	108
+Bos taurus functional	TRDV1S45	TRD	V	TRUE	109
+Bos taurus functional	TRDV1S46	TRD	V	TRUE	110
+Bos taurus functional	TRDV1S47-1	TRD	V	TRUE	111
+Bos taurus functional	TRDV1S47-2	TRD	V	TRUE	112
+Bos taurus functional	TRDV1S48	TRD	V	TRUE	113
+Bos taurus functional	TRDV1S49	TRD	V	TRUE	114
+Bos taurus functional	TRDV1S5-1	TRD	V	TRUE	115
+Bos taurus functional	TRDV1S5-2	TRD	V	TRUE	116
+Bos taurus functional	TRDV1S50	TRD	V	TRUE	117
+Bos taurus functional	TRDV1S51-1	TRD	V	TRUE	118
+Bos taurus functional	TRDV1S51-2	TRD	V	TRUE	119
+Bos taurus functional	TRDV1S52-1	TRD	V	TRUE	120
+Bos taurus functional	TRDV1S52-2	TRD	V	TRUE	121
+Bos taurus non-functional	TRDV1S53	TRD	V	FALSE	122
+Bos taurus non-functional	TRDV1S54	TRD	V	FALSE	123
+Bos taurus non-functional	TRDV1S55	TRD	V	FALSE	124
+Bos taurus non-functional	TRDV1S56	TRD	V	FALSE	125
+Bos taurus functional	TRDV1S6-1	TRD	V	TRUE	126
+Bos taurus functional	TRDV1S6-2	TRD	V	TRUE	127
+Bos taurus functional	TRDV1S7-1	TRD	V	TRUE	128
+Bos taurus functional	TRDV1S7-2	TRD	V	TRUE	129
+Bos taurus functional	TRDV1S8	TRD	V	TRUE	130
+Bos taurus non-functional	TRDV1S9	TRD	V	FALSE	131
+Bos taurus functional	TRDV2S1	TRD	V	TRUE	132
+Bos taurus functional	TRDV2S2	TRD	V	TRUE	133
+Bos taurus functional	TRDV2S3	TRD	V	TRUE	134
+Bos taurus non-functional	TRDV2S4	TRD	V	FALSE	135
+Bos taurus functional	TRDV3S1	TRD	V	TRUE	136
+Bos taurus functional	TRDV3S2	TRD	V	TRUE	137
+Bos taurus non-functional	TRDV3S3	TRD	V	FALSE	138
+Bos taurus functional	TRDV4	TRD	V	TRUE	139
+Bos taurus non-functional	TRDV5	TRD	V	FALSE	140
+Bos taurus functional	TRGJ1-1	TRG	J	TRUE	141
+Bos taurus functional	TRGJ1-2	TRG	J	TRUE	142
+Bos taurus functional	TRGJ2-1	TRG	J	TRUE	143
+Bos taurus functional	TRGJ2-2	TRG	J	TRUE	144
+Bos taurus functional	TRGJ3-1	TRG	J	TRUE	145
+Bos taurus functional	TRGJ4-1	TRG	J	TRUE	146
+Bos taurus functional	TRGJ4-2	TRG	J	TRUE	147
+Bos taurus functional	TRGJ5-1	TRG	J	TRUE	148
+Bos taurus functional	TRGJ6-1	TRG	J	TRUE	149
+Bos taurus functional	TRGV1-1	TRG	V	TRUE	150
+Bos taurus functional	TRGV10-1	TRG	V	TRUE	151
+Bos taurus functional	TRGV2-1	TRG	V	TRUE	152
+Bos taurus functional	TRGV3-1	TRG	V	TRUE	153
+Bos taurus functional	TRGV3-2	TRG	V	TRUE	154
+Bos taurus non-functional	TRGV4-1	TRG	V	FALSE	155
+Bos taurus non-functional	TRGV5-1	TRG	V	FALSE	156
+Bos taurus non-functional	TRGV5-2	TRG	V	FALSE	157
+Bos taurus functional	TRGV6-1	TRG	V	TRUE	158
+Bos taurus functional	TRGV6-2	TRG	V	TRUE	159
+Bos taurus functional	TRGV7-1	TRG	V	TRUE	160
+Bos taurus functional	TRGV8-1	TRG	V	TRUE	161
+Bos taurus functional	TRGV8-2	TRG	V	TRUE	162
+Bos taurus functional	TRGV8-3	TRG	V	TRUE	163
+Bos taurus functional	TRGV8-4	TRG	V	TRUE	164
+Bos taurus functional	TRGV9-1	TRG	V	TRUE	165
+Bos taurus functional	TRGV9-2	TRG	V	TRUE	166
+Camelus dromedarius functional	TRDV1S1	TRD	V	TRUE	167
+Camelus dromedarius functional	TRDV1S2	TRD	V	TRUE	168
+Camelus dromedarius functional	TRDV1S3	TRD	V	TRUE	169
+Camelus dromedarius functional	TRDV1S4	TRD	V	TRUE	170
+Camelus dromedarius functional	TRDV1S5	TRD	V	TRUE	171
+Camelus dromedarius functional	TRDV1S6	TRD	V	TRUE	172
+Camelus dromedarius functional	TRDV2S1	TRD	V	TRUE	173
+Camelus dromedarius functional	TRDV2S2	TRD	V	TRUE	174
+Camelus dromedarius functional	TRDV2S3	TRD	V	TRUE	175
+Camelus dromedarius functional	TRDV4S1	TRD	V	TRUE	176
+Camelus dromedarius functional	TRGJ1-1	TRG	J	TRUE	177
+Camelus dromedarius non-functional	TRGJ2-1	TRG	J	FALSE	178
+Camelus dromedarius functional	TRGJ2-2	TRG	J	TRUE	179
+Camelus dromedarius functional	TRGV1	TRG	V	TRUE	180
+Camelus dromedarius functional	TRGV2	TRG	V	TRUE	181
+Canis lupus familiaris functional	TRBD1	TRB	D	TRUE	182
+Canis lupus familiaris functional	TRBD2	TRB	D	TRUE	183
+Canis lupus familiaris functional	TRBJ1-1	TRB	J	TRUE	184
+Canis lupus familiaris functional	TRBJ1-2	TRB	J	TRUE	185
+Canis lupus familiaris non-functional	TRBJ1-3	TRB	J	FALSE	186
+Canis lupus familiaris functional	TRBJ1-4	TRB	J	TRUE	187
+Canis lupus familiaris functional	TRBJ1-5	TRB	J	TRUE	188
+Canis lupus familiaris functional	TRBJ1-6	TRB	J	TRUE	189
+Canis lupus familiaris non-functional	TRBJ2-1	TRB	J	FALSE	190
+Canis lupus familiaris functional	TRBJ2-2	TRB	J	TRUE	191
+Canis lupus familiaris functional	TRBJ2-3	TRB	J	TRUE	192
+Canis lupus familiaris non-functional	TRBJ2-4	TRB	J	FALSE	193
+Canis lupus familiaris functional	TRBJ2-5	TRB	J	TRUE	194
+Canis lupus familiaris functional	TRBJ2-6	TRB	J	TRUE	195
+Canis lupus familiaris functional	TRBV1	TRB	V	TRUE	196
+Canis lupus familiaris functional	TRBV10	TRB	V	TRUE	197
+Canis lupus familiaris non-functional	TRBV11	TRB	V	FALSE	198
+Canis lupus familiaris non-functional	TRBV12-1	TRB	V	FALSE	199
+Canis lupus familiaris functional	TRBV12-2	TRB	V	TRUE	200
+Canis lupus familiaris non-functional	TRBV15	TRB	V	FALSE	201
+Canis lupus familiaris functional	TRBV16	TRB	V	TRUE	202
+Canis lupus familiaris functional	TRBV18	TRB	V	TRUE	203
+Canis lupus familiaris non-functional	TRBV19	TRB	V	FALSE	204
+Canis lupus familiaris non-functional	TRBV2-1	TRB	V	FALSE	205
+Canis lupus familiaris non-functional	TRBV2-2	TRB	V	FALSE	206
+Canis lupus familiaris non-functional	TRBV2-3	TRB	V	FALSE	207
+Canis lupus familiaris functional	TRBV20	TRB	V	TRUE	208
+Canis lupus familiaris non-functional	TRBV21	TRB	V	FALSE	209
+Canis lupus familiaris functional	TRBV22	TRB	V	TRUE	210
+Canis lupus familiaris functional	TRBV24	TRB	V	TRUE	211
+Canis lupus familiaris functional	TRBV25	TRB	V	TRUE	212
+Canis lupus familiaris non-functional	TRBV26	TRB	V	FALSE	213
+Canis lupus familiaris non-functional	TRBV27	TRB	V	FALSE	214
+Canis lupus familiaris non-functional	TRBV28	TRB	V	FALSE	215
+Canis lupus familiaris functional	TRBV29	TRB	V	TRUE	216
+Canis lupus familiaris functional	TRBV3-1	TRB	V	TRUE	217
+Canis lupus familiaris functional	TRBV3-2	TRB	V	TRUE	218
+Canis lupus familiaris non-functional	TRBV3-3	TRB	V	FALSE	219
+Canis lupus familiaris functional	TRBV30	TRB	V	TRUE	220
+Canis lupus familiaris functional	TRBV4-1	TRB	V	TRUE	221
+Canis lupus familiaris functional	TRBV4-2	TRB	V	TRUE	222
+Canis lupus familiaris functional	TRBV4-3	TRB	V	TRUE	223
+Canis lupus familiaris non-functional	TRBV5-1	TRB	V	FALSE	224
+Canis lupus familiaris functional	TRBV5-2	TRB	V	TRUE	225
+Canis lupus familiaris non-functional	TRBV5-3	TRB	V	FALSE	226
+Canis lupus familiaris functional	TRBV5-4	TRB	V	TRUE	227
+Canis lupus familiaris non-functional	TRBV6	TRB	V	FALSE	228
+Canis lupus familiaris functional	TRBV7	TRB	V	TRUE	229
+Canis lupus familiaris non-functional	TRBV8	TRB	V	FALSE	230
+Canis lupus familiaris non-functional	TRGJ1-1	TRG	J	FALSE	231
+Canis lupus familiaris functional	TRGJ1-2	TRG	J	TRUE	232
+Canis lupus familiaris non-functional	TRGJ2-1	TRG	J	FALSE	233
+Canis lupus familiaris functional	TRGJ2-2	TRG	J	TRUE	234
+Canis lupus familiaris non-functional	TRGJ3-1	TRG	J	FALSE	235
+Canis lupus familiaris non-functional	TRGJ3-2	TRG	J	FALSE	236
+Canis lupus familiaris non-functional	TRGJ4-1	TRG	J	FALSE	237
+Canis lupus familiaris functional	TRGJ4-2	TRG	J	TRUE	238
+Canis lupus familiaris non-functional	TRGJ5-1	TRG	J	FALSE	239
+Canis lupus familiaris functional	TRGJ5-2	TRG	J	TRUE	240
+Canis lupus familiaris functional	TRGJ6-1	TRG	J	TRUE	241
+Canis lupus familiaris non-functional	TRGJ6-2	TRG	J	FALSE	242
+Canis lupus familiaris non-functional	TRGJ7-1	TRG	J	FALSE	243
+Canis lupus familiaris functional	TRGJ7-2	TRG	J	TRUE	244
+Canis lupus familiaris functional	TRGJ8-1	TRG	J	TRUE	245
+Canis lupus familiaris non-functional	TRGJ8-2	TRG	J	FALSE	246
+Canis lupus familiaris non-functional	TRGV1-1	TRG	V	FALSE	247
+Canis lupus familiaris functional	TRGV2-1	TRG	V	TRUE	248
+Canis lupus familiaris functional	TRGV2-2	TRG	V	TRUE	249
+Canis lupus familiaris functional	TRGV2-3	TRG	V	TRUE	250
+Canis lupus familiaris functional	TRGV2-4	TRG	V	TRUE	251
+Canis lupus familiaris non-functional	TRGV3-1	TRG	V	FALSE	252
+Canis lupus familiaris non-functional	TRGV3-2	TRG	V	FALSE	253
+Canis lupus familiaris non-functional	TRGV3-3	TRG	V	FALSE	254
+Canis lupus familiaris functional	TRGV4-1	TRG	V	TRUE	255
+Canis lupus familiaris non-functional	TRGV5-1	TRG	V	FALSE	256
+Canis lupus familiaris functional	TRGV5-2	TRG	V	TRUE	257
+Canis lupus familiaris non-functional	TRGV6-1	TRG	V	FALSE	258
+Canis lupus familiaris non-functional	TRGV7-1	TRG	V	FALSE	259
+Canis lupus familiaris functional	TRGV7-2	TRG	V	TRUE	260
+Canis lupus familiaris functional	TRGV7-3	TRG	V	TRUE	261
+Canis lupus familiaris non-functional	TRGV8-1	TRG	V	FALSE	262
+Danio rerio non-functional	IGHD	IGH	D	FALSE	263
+Danio rerio functional	IGHD1-1	IGH	D	TRUE	264
+Danio rerio functional	IGHD1-2	IGH	D	TRUE	265
+Danio rerio functional	IGHD2-1	IGH	D	TRUE	266
+Danio rerio functional	IGHD2-2	IGH	D	TRUE	267
+Danio rerio functional	IGHD2-3	IGH	D	TRUE	268
+Danio rerio functional	IGHD2-4	IGH	D	TRUE	269
+Danio rerio functional	IGHD2-5	IGH	D	TRUE	270
+Danio rerio functional	IGHJ1-1	IGH	J	TRUE	271
+Danio rerio functional	IGHJ1-2	IGH	J	TRUE	272
+Danio rerio functional	IGHJ2-1	IGH	J	TRUE	273
+Danio rerio functional	IGHJ2-2	IGH	J	TRUE	274
+Danio rerio functional	IGHJ2-3	IGH	J	TRUE	275
+Danio rerio functional	IGHJ2-4	IGH	J	TRUE	276
+Danio rerio functional	IGHJ2-5	IGH	J	TRUE	277
+Danio rerio functional	IGHV1-1	IGH	V	TRUE	278
+Danio rerio functional	IGHV1-2	IGH	V	TRUE	279
+Danio rerio functional	IGHV1-3	IGH	V	TRUE	280
+Danio rerio functional	IGHV1-4	IGH	V	TRUE	281
+Danio rerio functional	IGHV1-5	IGH	V	TRUE	282
+Danio rerio functional	IGHV10-1	IGH	V	TRUE	283
+Danio rerio functional	IGHV11-1	IGH	V	TRUE	284
+Danio rerio functional	IGHV11-2	IGH	V	TRUE	285
+Danio rerio non-functional	IGHV12-1	IGH	V	FALSE	286
+Danio rerio functional	IGHV13-2	IGH	V	TRUE	287
+Danio rerio functional	IGHV14-1	IGH	V	TRUE	288
+Danio rerio functional	IGHV2-1	IGH	V	TRUE	289
+Danio rerio functional	IGHV2-2	IGH	V	TRUE	290
+Danio rerio functional	IGHV2-3	IGH	V	TRUE	291
+Danio rerio functional	IGHV3-2	IGH	V	TRUE	292
+Danio rerio functional	IGHV4-1	IGH	V	TRUE	293
+Danio rerio functional	IGHV4-2	IGH	V	TRUE	294
+Danio rerio functional	IGHV4-3	IGH	V	TRUE	295
+Danio rerio functional	IGHV4-5	IGH	V	TRUE	296
+Danio rerio functional	IGHV4-6	IGH	V	TRUE	297
+Danio rerio functional	IGHV4-7	IGH	V	TRUE	298
+Danio rerio functional	IGHV4-8	IGH	V	TRUE	299
+Danio rerio functional	IGHV4-9	IGH	V	TRUE	300
+Danio rerio functional	IGHV5-1	IGH	V	TRUE	301
+Danio rerio non-functional	IGHV5-2	IGH	V	FALSE	302
+Danio rerio functional	IGHV5-3	IGH	V	TRUE	303
+Danio rerio non-functional	IGHV5-4	IGH	V	FALSE	304
+Danio rerio non-functional	IGHV5-5	IGH	V	FALSE	305
+Danio rerio functional	IGHV5-7	IGH	V	TRUE	306
+Danio rerio non-functional	IGHV5-8	IGH	V	FALSE	307
+Danio rerio functional	IGHV6-1	IGH	V	TRUE	308
+Danio rerio non-functional	IGHV6-2	IGH	V	FALSE	309
+Danio rerio functional	IGHV7-1	IGH	V	TRUE	310
+Danio rerio functional	IGHV8-1	IGH	V	TRUE	311
+Danio rerio functional	IGHV8-2	IGH	V	TRUE	312
+Danio rerio functional	IGHV8-3	IGH	V	TRUE	313
+Danio rerio functional	IGHV8-4	IGH	V	TRUE	314
+Danio rerio functional	IGHV9-1	IGH	V	TRUE	315
+Danio rerio functional	IGHV9-2	IGH	V	TRUE	316
+Danio rerio functional	IGHV9-3	IGH	V	TRUE	317
+Danio rerio functional	IGHV9-4	IGH	V	TRUE	318
+Danio rerio functional	IGIJ1	IGI	J	TRUE	319
+Danio rerio non-functional	IGIJ2	IGI	J	FALSE	320
+Danio rerio functional	IGIJ3	IGI	J	TRUE	321
+Danio rerio non-functional	IGIJ4	IGI	J	FALSE	322
+Danio rerio functional	IGIJ5	IGI	J	TRUE	323
+Danio rerio non-functional	IGIJ6S1	IGI	J	FALSE	324
+Danio rerio non-functional	IGIJ7S1	IGI	J	FALSE	325
+Danio rerio non-functional	IGIJ8S1	IGI	J	FALSE	326
+Danio rerio non-functional	IGIV1-1	IGI	V	FALSE	327
+Danio rerio functional	IGIV1-2	IGI	V	TRUE	328
+Danio rerio non-functional	IGIV2	IGI	V	FALSE	329
+Danio rerio functional	IGIV3-1	IGI	V	TRUE	330
+Danio rerio non-functional	IGIV3-2	IGI	V	FALSE	331
+Danio rerio functional	IGIV3-3	IGI	V	TRUE	332
+Danio rerio non-functional	IGIV4-1	IGI	V	FALSE	333
+Danio rerio non-functional	IGIV4-2	IGI	V	FALSE	334
+Danio rerio non-functional	IGIV6S1	IGI	V	FALSE	335
+Danio rerio non-functional	IGIV6S2	IGI	V	FALSE	336
+Danio rerio non-functional	IGIV7S1	IGI	V	FALSE	337
+Danio rerio non-functional	IGIV7S2	IGI	V	FALSE	338
+Danio rerio non-functional	IGIV8S1	IGI	V	FALSE	339
+Homo sapiens functional	CD1D	CD1	D	TRUE	340
+Homo sapiens functional	IGHD	IGH	D	TRUE	341
+Homo sapiens functional	IGHD1-1	IGH	D	TRUE	342
+Homo sapiens non-functional	IGHD1-14	IGH	D	FALSE	343
+Homo sapiens functional	IGHD1-20	IGH	D	TRUE	344
+Homo sapiens functional	IGHD1-26	IGH	D	TRUE	345
+Homo sapiens functional	IGHD1-7	IGH	D	TRUE	346
+Homo sapiens non-functional	IGHD1/OR15-1a	IGH	D	FALSE	347
+Homo sapiens non-functional	IGHD1/OR15-1b	IGH	D	FALSE	348
+Homo sapiens functional	IGHD2-15	IGH	D	TRUE	349
+Homo sapiens functional	IGHD2-2	IGH	D	TRUE	350
+Homo sapiens functional	IGHD2-21	IGH	D	TRUE	351
+Homo sapiens functional	IGHD2-8	IGH	D	TRUE	352
+Homo sapiens non-functional	IGHD2/OR15-2a	IGH	D	FALSE	353
+Homo sapiens non-functional	IGHD2/OR15-2b	IGH	D	FALSE	354
+Homo sapiens functional	IGHD3-10	IGH	D	TRUE	355
+Homo sapiens functional	IGHD3-16	IGH	D	TRUE	356
+Homo sapiens functional	IGHD3-22	IGH	D	TRUE	357
+Homo sapiens functional	IGHD3-3	IGH	D	TRUE	358
+Homo sapiens functional	IGHD3-9	IGH	D	TRUE	359
+Homo sapiens non-functional	IGHD3/OR15-3a	IGH	D	FALSE	360
+Homo sapiens non-functional	IGHD3/OR15-3b	IGH	D	FALSE	361
+Homo sapiens non-functional	IGHD4-11	IGH	D	FALSE	362
+Homo sapiens functional	IGHD4-17	IGH	D	TRUE	363
+Homo sapiens non-functional	IGHD4-23	IGH	D	FALSE	364
+Homo sapiens functional	IGHD4-4	IGH	D	TRUE	365
+Homo sapiens non-functional	IGHD4/OR15-4a	IGH	D	FALSE	366
+Homo sapiens non-functional	IGHD4/OR15-4b	IGH	D	FALSE	367
+Homo sapiens functional	IGHD5-12	IGH	D	TRUE	368
+Homo sapiens functional	IGHD5-18	IGH	D	TRUE	369
+Homo sapiens non-functional	IGHD5-24	IGH	D	FALSE	370
+Homo sapiens functional	IGHD5-5	IGH	D	TRUE	371
+Homo sapiens non-functional	IGHD5/OR15-5a	IGH	D	FALSE	372
+Homo sapiens non-functional	IGHD5/OR15-5b	IGH	D	FALSE	373
+Homo sapiens functional	IGHD6-13	IGH	D	TRUE	374
+Homo sapiens functional	IGHD6-19	IGH	D	TRUE	375
+Homo sapiens functional	IGHD6-25	IGH	D	TRUE	376
+Homo sapiens functional	IGHD6-6	IGH	D	TRUE	377
+Homo sapiens functional	IGHD7-27	IGH	D	TRUE	378
+Homo sapiens functional	IGHJ1	IGH	J	TRUE	379
+Homo sapiens non-functional	IGHJ1P	IGH	J	FALSE	380
+Homo sapiens functional	IGHJ2	IGH	J	TRUE	381
+Homo sapiens non-functional	IGHJ2P	IGH	J	FALSE	382
+Homo sapiens functional	IGHJ3	IGH	J	TRUE	383
+Homo sapiens non-functional	IGHJ3P	IGH	J	FALSE	384
+Homo sapiens functional	IGHJ4	IGH	J	TRUE	385
+Homo sapiens functional	IGHJ5	IGH	J	TRUE	386
+Homo sapiens functional	IGHJ6	IGH	J	TRUE	387
+Homo sapiens non-functional	IGHV(II)-1-1	IGH	V	FALSE	388
+Homo sapiens non-functional	IGHV(II)-15-1	IGH	V	FALSE	389
+Homo sapiens non-functional	IGHV(II)-20-1	IGH	V	FALSE	390
+Homo sapiens non-functional	IGHV(II)-22-1	IGH	V	FALSE	391
+Homo sapiens non-functional	IGHV(II)-23-1	IGH	V	FALSE	392
+Homo sapiens non-functional	IGHV(II)-23-2	IGH	V	FALSE	393
+Homo sapiens non-functional	IGHV(II)-26-2	IGH	V	FALSE	394
+Homo sapiens non-functional	IGHV(II)-28-1	IGH	V	FALSE	395
+Homo sapiens non-functional	IGHV(II)-30-1	IGH	V	FALSE	396
+Homo sapiens non-functional	IGHV(II)-31-1	IGH	V	FALSE	397
+Homo sapiens non-functional	IGHV(II)-33-1	IGH	V	FALSE	398
+Homo sapiens non-functional	IGHV(II)-40-1	IGH	V	FALSE	399
+Homo sapiens non-functional	IGHV(II)-43-1	IGH	V	FALSE	400
+Homo sapiens non-functional	IGHV(II)-43-1D	IGH	V	FALSE	401
+Homo sapiens non-functional	IGHV(II)-44-1D	IGH	V	FALSE	402
+Homo sapiens non-functional	IGHV(II)-44-2	IGH	V	FALSE	403
+Homo sapiens non-functional	IGHV(II)-44-2D	IGH	V	FALSE	404
+Homo sapiens non-functional	IGHV(II)-44-3	IGH	V	FALSE	405
+Homo sapiens non-functional	IGHV(II)-46-1	IGH	V	FALSE	406
+Homo sapiens non-functional	IGHV(II)-49-1	IGH	V	FALSE	407
+Homo sapiens non-functional	IGHV(II)-51-2	IGH	V	FALSE	408
+Homo sapiens non-functional	IGHV(II)-53-1	IGH	V	FALSE	409
+Homo sapiens non-functional	IGHV(II)-60-1	IGH	V	FALSE	410
+Homo sapiens non-functional	IGHV(II)-62-1	IGH	V	FALSE	411
+Homo sapiens non-functional	IGHV(II)-65-1	IGH	V	FALSE	412
+Homo sapiens non-functional	IGHV(II)-67-1	IGH	V	FALSE	413
+Homo sapiens non-functional	IGHV(II)-74-1	IGH	V	FALSE	414
+Homo sapiens non-functional	IGHV(II)-78-1	IGH	V	FALSE	415
+Homo sapiens non-functional	IGHV(III)-11-1	IGH	V	FALSE	416
+Homo sapiens non-functional	IGHV(III)-13-1	IGH	V	FALSE	417
+Homo sapiens non-functional	IGHV(III)-16-1	IGH	V	FALSE	418
+Homo sapiens non-functional	IGHV(III)-2-1	IGH	V	FALSE	419
+Homo sapiens non-functional	IGHV(III)-22-2	IGH	V	FALSE	420
+Homo sapiens non-functional	IGHV(III)-25-1	IGH	V	FALSE	421
+Homo sapiens non-functional	IGHV(III)-26-1	IGH	V	FALSE	422
+Homo sapiens non-functional	IGHV(III)-38-1	IGH	V	FALSE	423
+Homo sapiens non-functional	IGHV(III)-38-1D	IGH	V	FALSE	424
+Homo sapiens non-functional	IGHV(III)-44	IGH	V	FALSE	425
+Homo sapiens non-functional	IGHV(III)-44D	IGH	V	FALSE	426
+Homo sapiens non-functional	IGHV(III)-47-1	IGH	V	FALSE	427
+Homo sapiens non-functional	IGHV(III)-5-1	IGH	V	FALSE	428
+Homo sapiens non-functional	IGHV(III)-5-2	IGH	V	FALSE	429
+Homo sapiens non-functional	IGHV(III)-51-1	IGH	V	FALSE	430
+Homo sapiens non-functional	IGHV(III)-67-2	IGH	V	FALSE	431
+Homo sapiens non-functional	IGHV(III)-67-3	IGH	V	FALSE	432
+Homo sapiens non-functional	IGHV(III)-67-4	IGH	V	FALSE	433
+Homo sapiens non-functional	IGHV(III)-76-1	IGH	V	FALSE	434
+Homo sapiens non-functional	IGHV(III)-82	IGH	V	FALSE	435
+Homo sapiens non-functional	IGHV(IV)-44-1	IGH	V	FALSE	436
+Homo sapiens non-functional	IGHV1-12	IGH	V	FALSE	437
+Homo sapiens non-functional	IGHV1-14	IGH	V	FALSE	438
+Homo sapiens non-functional	IGHV1-17	IGH	V	FALSE	439
+Homo sapiens functional	IGHV1-18	IGH	V	TRUE	440
+Homo sapiens functional	IGHV1-2	IGH	V	TRUE	441
+Homo sapiens functional	IGHV1-24	IGH	V	TRUE	442
+Homo sapiens functional	IGHV1-3	IGH	V	TRUE	443
+Homo sapiens non-functional	IGHV1-38-4	IGH	V	FALSE	444
+Homo sapiens functional	IGHV1-45	IGH	V	TRUE	445
+Homo sapiens functional	IGHV1-46	IGH	V	TRUE	446
+Homo sapiens functional	IGHV1-58	IGH	V	TRUE	447
+Homo sapiens non-functional	IGHV1-67	IGH	V	FALSE	448
+Homo sapiens non-functional	IGHV1-68	IGH	V	FALSE	449
+Homo sapiens functional	IGHV1-69	IGH	V	TRUE	450
+Homo sapiens functional	IGHV1-69-2	IGH	V	TRUE	451
+Homo sapiens functional	IGHV1-69D	IGH	V	TRUE	452
+Homo sapiens functional	IGHV1-8	IGH	V	TRUE	453
+Homo sapiens non-functional	IGHV1-NL1	IGH	V	FALSE	454
+Homo sapiens non-functional	IGHV1/OR15-1	IGH	V	FALSE	455
+Homo sapiens non-functional	IGHV1/OR15-2	IGH	V	FALSE	456
+Homo sapiens non-functional	IGHV1/OR15-3	IGH	V	FALSE	457
+Homo sapiens non-functional	IGHV1/OR15-4	IGH	V	FALSE	458
+Homo sapiens non-functional	IGHV1/OR15-5	IGH	V	FALSE	459
+Homo sapiens non-functional	IGHV1/OR15-6	IGH	V	FALSE	460
+Homo sapiens non-functional	IGHV1/OR15-9	IGH	V	FALSE	461
+Homo sapiens non-functional	IGHV1/OR16-1	IGH	V	FALSE	462
+Homo sapiens non-functional	IGHV1/OR16-2	IGH	V	FALSE	463
+Homo sapiens non-functional	IGHV1/OR16-3	IGH	V	FALSE	464
+Homo sapiens non-functional	IGHV1/OR16-4	IGH	V	FALSE	465
+Homo sapiens non-functional	IGHV1/OR21-1	IGH	V	FALSE	466
+Homo sapiens non-functional	IGHV2-10	IGH	V	FALSE	467
+Homo sapiens functional	IGHV2-26	IGH	V	TRUE	468
+Homo sapiens functional	IGHV2-5	IGH	V	TRUE	469
+Homo sapiens functional	IGHV2-70	IGH	V	TRUE	470
+Homo sapiens functional	IGHV2-70D	IGH	V	TRUE	471
+Homo sapiens non-functional	IGHV2/OR16-5	IGH	V	FALSE	472
+Homo sapiens functional	IGHV3-11	IGH	V	TRUE	473
+Homo sapiens functional	IGHV3-13	IGH	V	TRUE	474
+Homo sapiens functional	IGHV3-15	IGH	V	TRUE	475
+Homo sapiens non-functional	IGHV3-16	IGH	V	FALSE	476
+Homo sapiens non-functional	IGHV3-19	IGH	V	FALSE	477
+Homo sapiens functional	IGHV3-20	IGH	V	TRUE	478
+Homo sapiens functional	IGHV3-21	IGH	V	TRUE	479
+Homo sapiens non-functional	IGHV3-22	IGH	V	FALSE	480
+Homo sapiens functional	IGHV3-23	IGH	V	TRUE	481
+Homo sapiens functional	IGHV3-23D	IGH	V	TRUE	482
+Homo sapiens non-functional	IGHV3-25	IGH	V	FALSE	483
+Homo sapiens non-functional	IGHV3-29	IGH	V	FALSE	484
+Homo sapiens functional	IGHV3-30	IGH	V	TRUE	485
+Homo sapiens non-functional	IGHV3-30-2	IGH	V	FALSE	486
+Homo sapiens functional	IGHV3-30-3	IGH	V	TRUE	487
+Homo sapiens functional	IGHV3-30-5	IGH	V	TRUE	488
+Homo sapiens non-functional	IGHV3-32	IGH	V	FALSE	489
+Homo sapiens functional	IGHV3-33	IGH	V	TRUE	490
+Homo sapiens non-functional	IGHV3-33-2	IGH	V	FALSE	491
+Homo sapiens non-functional	IGHV3-35	IGH	V	FALSE	492
+Homo sapiens non-functional	IGHV3-36	IGH	V	FALSE	493
+Homo sapiens non-functional	IGHV3-37	IGH	V	FALSE	494
+Homo sapiens non-functional	IGHV3-38	IGH	V	FALSE	495
+Homo sapiens non-functional	IGHV3-38-3	IGH	V	FALSE	496
+Homo sapiens non-functional	IGHV3-41	IGH	V	FALSE	497
+Homo sapiens non-functional	IGHV3-42	IGH	V	FALSE	498
+Homo sapiens non-functional	IGHV3-42D	IGH	V	FALSE	499
+Homo sapiens functional	IGHV3-43	IGH	V	TRUE	500
+Homo sapiens functional	IGHV3-43D	IGH	V	TRUE	501
+Homo sapiens non-functional	IGHV3-47	IGH	V	FALSE	502
+Homo sapiens functional	IGHV3-48	IGH	V	TRUE	503
+Homo sapiens functional	IGHV3-49	IGH	V	TRUE	504
+Homo sapiens non-functional	IGHV3-50	IGH	V	FALSE	505
+Homo sapiens non-functional	IGHV3-52	IGH	V	FALSE	506
+Homo sapiens functional	IGHV3-53	IGH	V	TRUE	507
+Homo sapiens non-functional	IGHV3-54	IGH	V	FALSE	508
+Homo sapiens non-functional	IGHV3-57	IGH	V	FALSE	509
+Homo sapiens non-functional	IGHV3-6	IGH	V	FALSE	510
+Homo sapiens non-functional	IGHV3-60	IGH	V	FALSE	511
+Homo sapiens non-functional	IGHV3-62	IGH	V	FALSE	512
+Homo sapiens non-functional	IGHV3-63	IGH	V	FALSE	513
+Homo sapiens functional	IGHV3-64	IGH	V	TRUE	514
+Homo sapiens functional	IGHV3-64D	IGH	V	TRUE	515
+Homo sapiens non-functional	IGHV3-65	IGH	V	FALSE	516
+Homo sapiens functional	IGHV3-66	IGH	V	TRUE	517
+Homo sapiens non-functional	IGHV3-69-1	IGH	V	FALSE	518
+Homo sapiens functional	IGHV3-7	IGH	V	TRUE	519
+Homo sapiens non-functional	IGHV3-71	IGH	V	FALSE	520
+Homo sapiens functional	IGHV3-72	IGH	V	TRUE	521
+Homo sapiens functional	IGHV3-73	IGH	V	TRUE	522
+Homo sapiens functional	IGHV3-74	IGH	V	TRUE	523
+Homo sapiens non-functional	IGHV3-75	IGH	V	FALSE	524
+Homo sapiens non-functional	IGHV3-76	IGH	V	FALSE	525
+Homo sapiens non-functional	IGHV3-79	IGH	V	FALSE	526
+Homo sapiens functional	IGHV3-9	IGH	V	TRUE	527
+Homo sapiens functional	IGHV3-NL1	IGH	V	TRUE	528
+Homo sapiens non-functional	IGHV3/OR15-7	IGH	V	FALSE	529
+Homo sapiens non-functional	IGHV3/OR16-10	IGH	V	FALSE	530
+Homo sapiens non-functional	IGHV3/OR16-11	IGH	V	FALSE	531
+Homo sapiens non-functional	IGHV3/OR16-12	IGH	V	FALSE	532
+Homo sapiens non-functional	IGHV3/OR16-13	IGH	V	FALSE	533
+Homo sapiens non-functional	IGHV3/OR16-14	IGH	V	FALSE	534
+Homo sapiens non-functional	IGHV3/OR16-15	IGH	V	FALSE	535
+Homo sapiens non-functional	IGHV3/OR16-16	IGH	V	FALSE	536
+Homo sapiens non-functional	IGHV3/OR16-6	IGH	V	FALSE	537
+Homo sapiens non-functional	IGHV3/OR16-7	IGH	V	FALSE	538
+Homo sapiens non-functional	IGHV3/OR16-8	IGH	V	FALSE	539
+Homo sapiens non-functional	IGHV3/OR16-9	IGH	V	FALSE	540
+Homo sapiens functional	IGHV4-28	IGH	V	TRUE	541
+Homo sapiens functional	IGHV4-30-1	IGH	V	TRUE	542
+Homo sapiens functional	IGHV4-30-2	IGH	V	TRUE	543
+Homo sapiens functional	IGHV4-30-4	IGH	V	TRUE	544
+Homo sapiens functional	IGHV4-31	IGH	V	TRUE	545
+Homo sapiens functional	IGHV4-34	IGH	V	TRUE	546
+Homo sapiens functional	IGHV4-38-2	IGH	V	TRUE	547
+Homo sapiens functional	IGHV4-39	IGH	V	TRUE	548
+Homo sapiens functional	IGHV4-4	IGH	V	TRUE	549
+Homo sapiens non-functional	IGHV4-55	IGH	V	FALSE	550
+Homo sapiens functional	IGHV4-59	IGH	V	TRUE	551
+Homo sapiens functional	IGHV4-61	IGH	V	TRUE	552
+Homo sapiens non-functional	IGHV4-80	IGH	V	FALSE	553
+Homo sapiens non-functional	IGHV4/OR15-8	IGH	V	FALSE	554
+Homo sapiens functional	IGHV5-10-1	IGH	V	TRUE	555
+Homo sapiens functional	IGHV5-51	IGH	V	TRUE	556
+Homo sapiens non-functional	IGHV5-78	IGH	V	FALSE	557
+Homo sapiens functional	IGHV6-1	IGH	V	TRUE	558
+Homo sapiens non-functional	IGHV7-27	IGH	V	FALSE	559
+Homo sapiens non-functional	IGHV7-34-1	IGH	V	FALSE	560
+Homo sapiens functional	IGHV7-4-1	IGH	V	TRUE	561
+Homo sapiens non-functional	IGHV7-40	IGH	V	FALSE	562
+Homo sapiens non-functional	IGHV7-40D	IGH	V	FALSE	563
+Homo sapiens non-functional	IGHV7-56	IGH	V	FALSE	564
+Homo sapiens non-functional	IGHV7-77	IGH	V	FALSE	565
+Homo sapiens non-functional	IGHV7-81	IGH	V	FALSE	566
+Homo sapiens non-functional	IGHV7-NL1	IGH	V	FALSE	567
+Homo sapiens functional	IGKJ1	IGK	J	TRUE	568
+Homo sapiens functional	IGKJ2	IGK	J	TRUE	569
+Homo sapiens functional	IGKJ3	IGK	J	TRUE	570
+Homo sapiens functional	IGKJ4	IGK	J	TRUE	571
+Homo sapiens functional	IGKJ5	IGK	J	TRUE	572
+Homo sapiens functional	IGKV1-12	IGK	V	TRUE	573
+Homo sapiens functional	IGKV1-13	IGK	V	TRUE	574
+Homo sapiens functional	IGKV1-16	IGK	V	TRUE	575
+Homo sapiens functional	IGKV1-17	IGK	V	TRUE	576
+Homo sapiens non-functional	IGKV1-22	IGK	V	FALSE	577
+Homo sapiens functional	IGKV1-27	IGK	V	TRUE	578
+Homo sapiens non-functional	IGKV1-32	IGK	V	FALSE	579
+Homo sapiens functional	IGKV1-33	IGK	V	TRUE	580
+Homo sapiens non-functional	IGKV1-35	IGK	V	FALSE	581
+Homo sapiens non-functional	IGKV1-37	IGK	V	FALSE	582
+Homo sapiens functional	IGKV1-39	IGK	V	TRUE	583
+Homo sapiens functional	IGKV1-5	IGK	V	TRUE	584
+Homo sapiens functional	IGKV1-6	IGK	V	TRUE	585
+Homo sapiens functional	IGKV1-8	IGK	V	TRUE	586
+Homo sapiens functional	IGKV1-9	IGK	V	TRUE	587
+Homo sapiens functional	IGKV1-NL1	IGK	V	TRUE	588
+Homo sapiens non-functional	IGKV1/OR-2	IGK	V	FALSE	589
+Homo sapiens non-functional	IGKV1/OR-3	IGK	V	FALSE	590
+Homo sapiens non-functional	IGKV1/OR-4	IGK	V	FALSE	591
+Homo sapiens non-functional	IGKV1/OR1-1	IGK	V	FALSE	592
+Homo sapiens non-functional	IGKV1/OR10-1	IGK	V	FALSE	593
+Homo sapiens non-functional	IGKV1/OR15-118	IGK	V	FALSE	594
+Homo sapiens non-functional	IGKV1/OR2-0	IGK	V	FALSE	595
+Homo sapiens non-functional	IGKV1/OR2-1	IGK	V	FALSE	596
+Homo sapiens non-functional	IGKV1/OR2-108	IGK	V	FALSE	597
+Homo sapiens non-functional	IGKV1/OR2-11	IGK	V	FALSE	598
+Homo sapiens non-functional	IGKV1/OR2-118	IGK	V	FALSE	599
+Homo sapiens non-functional	IGKV1/OR2-2	IGK	V	FALSE	600
+Homo sapiens non-functional	IGKV1/OR2-3	IGK	V	FALSE	601
+Homo sapiens non-functional	IGKV1/OR2-6	IGK	V	FALSE	602
+Homo sapiens non-functional	IGKV1/OR2-9	IGK	V	FALSE	603
+Homo sapiens non-functional	IGKV1/OR22-1	IGK	V	FALSE	604
+Homo sapiens non-functional	IGKV1/OR22-5	IGK	V	FALSE	605
+Homo sapiens non-functional	IGKV1/OR9-1	IGK	V	FALSE	606
+Homo sapiens non-functional	IGKV1/OR9-2	IGK	V	FALSE	607
+Homo sapiens non-functional	IGKV1/ORY-1	IGK	V	FALSE	608
+Homo sapiens functional	IGKV1D-12	IGK	V	TRUE	609
+Homo sapiens functional	IGKV1D-13	IGK	V	TRUE	610
+Homo sapiens functional	IGKV1D-16	IGK	V	TRUE	611
+Homo sapiens functional	IGKV1D-17	IGK	V	TRUE	612
+Homo sapiens non-functional	IGKV1D-22	IGK	V	FALSE	613
+Homo sapiens non-functional	IGKV1D-27	IGK	V	FALSE	614
+Homo sapiens non-functional	IGKV1D-32	IGK	V	FALSE	615
+Homo sapiens functional	IGKV1D-33	IGK	V	TRUE	616
+Homo sapiens non-functional	IGKV1D-35	IGK	V	FALSE	617
+Homo sapiens non-functional	IGKV1D-37	IGK	V	FALSE	618
+Homo sapiens functional	IGKV1D-39	IGK	V	TRUE	619
+Homo sapiens non-functional	IGKV1D-42	IGK	V	FALSE	620
+Homo sapiens functional	IGKV1D-43	IGK	V	TRUE	621
+Homo sapiens functional	IGKV1D-8	IGK	V	TRUE	622
+Homo sapiens non-functional	IGKV2-10	IGK	V	FALSE	623
+Homo sapiens non-functional	IGKV2-14	IGK	V	FALSE	624
+Homo sapiens non-functional	IGKV2-18	IGK	V	FALSE	625
+Homo sapiens non-functional	IGKV2-19	IGK	V	FALSE	626
+Homo sapiens non-functional	IGKV2-23	IGK	V	FALSE	627
+Homo sapiens functional	IGKV2-24	IGK	V	TRUE	628
+Homo sapiens non-functional	IGKV2-26	IGK	V	FALSE	629
+Homo sapiens functional	IGKV2-28	IGK	V	TRUE	630
+Homo sapiens functional	IGKV2-29	IGK	V	TRUE	631
+Homo sapiens functional	IGKV2-30	IGK	V	TRUE	632
+Homo sapiens non-functional	IGKV2-36	IGK	V	FALSE	633
+Homo sapiens non-functional	IGKV2-38	IGK	V	FALSE	634
+Homo sapiens non-functional	IGKV2-4	IGK	V	FALSE	635
+Homo sapiens functional	IGKV2-40	IGK	V	TRUE	636
+Homo sapiens non-functional	IGKV2/OR2-1	IGK	V	FALSE	637
+Homo sapiens non-functional	IGKV2/OR2-10	IGK	V	FALSE	638
+Homo sapiens non-functional	IGKV2/OR2-2	IGK	V	FALSE	639
+Homo sapiens non-functional	IGKV2/OR2-4	IGK	V	FALSE	640
+Homo sapiens non-functional	IGKV2/OR2-7	IGK	V	FALSE	641
+Homo sapiens non-functional	IGKV2/OR2-7D	IGK	V	FALSE	642
+Homo sapiens non-functional	IGKV2/OR2-8	IGK	V	FALSE	643
+Homo sapiens non-functional	IGKV2/OR22-3	IGK	V	FALSE	644
+Homo sapiens non-functional	IGKV2/OR22-4	IGK	V	FALSE	645
+Homo sapiens non-functional	IGKV2D-10	IGK	V	FALSE	646
+Homo sapiens non-functional	IGKV2D-14	IGK	V	FALSE	647
+Homo sapiens non-functional	IGKV2D-18	IGK	V	FALSE	648
+Homo sapiens non-functional	IGKV2D-19	IGK	V	FALSE	649
+Homo sapiens non-functional	IGKV2D-23	IGK	V	FALSE	650
+Homo sapiens non-functional	IGKV2D-24	IGK	V	FALSE	651
+Homo sapiens functional	IGKV2D-26	IGK	V	TRUE	652
+Homo sapiens functional	IGKV2D-28	IGK	V	TRUE	653
+Homo sapiens functional	IGKV2D-29	IGK	V	TRUE	654
+Homo sapiens functional	IGKV2D-30	IGK	V	TRUE	655
+Homo sapiens non-functional	IGKV2D-36	IGK	V	FALSE	656
+Homo sapiens non-functional	IGKV2D-38	IGK	V	FALSE	657
+Homo sapiens functional	IGKV2D-40	IGK	V	TRUE	658
+Homo sapiens functional	IGKV3-11	IGK	V	TRUE	659
+Homo sapiens functional	IGKV3-15	IGK	V	TRUE	660
+Homo sapiens functional	IGKV3-20	IGK	V	TRUE	661
+Homo sapiens non-functional	IGKV3-25	IGK	V	FALSE	662
+Homo sapiens non-functional	IGKV3-31	IGK	V	FALSE	663
+Homo sapiens non-functional	IGKV3-34	IGK	V	FALSE	664
+Homo sapiens non-functional	IGKV3-7	IGK	V	FALSE	665
+Homo sapiens functional	IGKV3-NL1	IGK	V	TRUE	666
+Homo sapiens functional	IGKV3-NL2	IGK	V	TRUE	667
+Homo sapiens functional	IGKV3-NL3	IGK	V	TRUE	668
+Homo sapiens functional	IGKV3-NL4	IGK	V	TRUE	669
+Homo sapiens functional	IGKV3-NL5	IGK	V	TRUE	670
+Homo sapiens non-functional	IGKV3/OR2-268	IGK	V	FALSE	671
+Homo sapiens non-functional	IGKV3/OR2-5	IGK	V	FALSE	672
+Homo sapiens non-functional	IGKV3/OR22-2	IGK	V	FALSE	673
+Homo sapiens functional	IGKV3D-11	IGK	V	TRUE	674
+Homo sapiens functional	IGKV3D-15	IGK	V	TRUE	675
+Homo sapiens functional	IGKV3D-20	IGK	V	TRUE	676
+Homo sapiens non-functional	IGKV3D-25	IGK	V	FALSE	677
+Homo sapiens non-functional	IGKV3D-31	IGK	V	FALSE	678
+Homo sapiens non-functional	IGKV3D-34	IGK	V	FALSE	679
+Homo sapiens functional	IGKV3D-7	IGK	V	TRUE	680
+Homo sapiens functional	IGKV4-1	IGK	V	TRUE	681
+Homo sapiens functional	IGKV5-2	IGK	V	TRUE	682
+Homo sapiens non-functional	IGKV6-21	IGK	V	FALSE	683
+Homo sapiens non-functional	IGKV6D-21	IGK	V	FALSE	684
+Homo sapiens non-functional	IGKV6D-41	IGK	V	FALSE	685
+Homo sapiens non-functional	IGKV7-3	IGK	V	FALSE	686
+Homo sapiens non-functional	IGLJ-C/OR18	IGL	J	FALSE	687
+Homo sapiens functional	IGLJ1	IGL	J	TRUE	688
+Homo sapiens functional	IGLJ2	IGL	J	TRUE	689
+Homo sapiens non-functional	IGLJ2A	IGL	J	FALSE	690
+Homo sapiens non-functional	IGLJ2B	IGL	J	FALSE	691
+Homo sapiens non-functional	IGLJ2C	IGL	J	FALSE	692
+Homo sapiens non-functional	IGLJ2D	IGL	J	FALSE	693
+Homo sapiens functional	IGLJ3	IGL	J	TRUE	694
+Homo sapiens non-functional	IGLJ4	IGL	J	FALSE	695
+Homo sapiens non-functional	IGLJ5	IGL	J	FALSE	696
+Homo sapiens functional	IGLJ6	IGL	J	TRUE	697
+Homo sapiens functional	IGLJ7	IGL	J	TRUE	698
+Homo sapiens non-functional	IGLV(I)-20	IGL	V	FALSE	699
+Homo sapiens non-functional	IGLV(I)-38	IGL	V	FALSE	700
+Homo sapiens non-functional	IGLV(I)-42	IGL	V	FALSE	701
+Homo sapiens non-functional	IGLV(I)-56	IGL	V	FALSE	702
+Homo sapiens non-functional	IGLV(I)-63	IGL	V	FALSE	703
+Homo sapiens non-functional	IGLV(I)-68	IGL	V	FALSE	704
+Homo sapiens non-functional	IGLV(I)-70	IGL	V	FALSE	705
+Homo sapiens non-functional	IGLV(IV)-53	IGL	V	FALSE	706
+Homo sapiens non-functional	IGLV(IV)-59	IGL	V	FALSE	707
+Homo sapiens non-functional	IGLV(IV)-64	IGL	V	FALSE	708
+Homo sapiens non-functional	IGLV(IV)-65	IGL	V	FALSE	709
+Homo sapiens non-functional	IGLV(IV)-66-1	IGL	V	FALSE	710
+Homo sapiens non-functional	IGLV(IV)/OR22-1	IGL	V	FALSE	711
+Homo sapiens non-functional	IGLV(IV)/OR22-2	IGL	V	FALSE	712
+Homo sapiens non-functional	IGLV(V)-58	IGL	V	FALSE	713
+Homo sapiens non-functional	IGLV(V)-66	IGL	V	FALSE	714
+Homo sapiens non-functional	IGLV(VI)-22-1	IGL	V	FALSE	715
+Homo sapiens non-functional	IGLV(VI)-25-1	IGL	V	FALSE	716
+Homo sapiens non-functional	IGLV(VII)-41-1	IGL	V	FALSE	717
+Homo sapiens non-functional	IGLV/OR8-2	IGL	V	FALSE	718
+Homo sapiens functional	IGLV1-36	IGL	V	TRUE	719
+Homo sapiens functional	IGLV1-40	IGL	V	TRUE	720
+Homo sapiens non-functional	IGLV1-41	IGL	V	FALSE	721
+Homo sapiens functional	IGLV1-44	IGL	V	TRUE	722
+Homo sapiens functional	IGLV1-47	IGL	V	TRUE	723
+Homo sapiens non-functional	IGLV1-50	IGL	V	FALSE	724
+Homo sapiens functional	IGLV1-51	IGL	V	TRUE	725
+Homo sapiens non-functional	IGLV1-62	IGL	V	FALSE	726
+Homo sapiens functional	IGLV10-54	IGL	V	TRUE	727
+Homo sapiens non-functional	IGLV10-67	IGL	V	FALSE	728
+Homo sapiens non-functional	IGLV11-55	IGL	V	FALSE	729
+Homo sapiens functional	IGLV2-11	IGL	V	TRUE	730
+Homo sapiens functional	IGLV2-14	IGL	V	TRUE	731
+Homo sapiens functional	IGLV2-18	IGL	V	TRUE	732
+Homo sapiens functional	IGLV2-23	IGL	V	TRUE	733
+Homo sapiens non-functional	IGLV2-28	IGL	V	FALSE	734
+Homo sapiens non-functional	IGLV2-33	IGL	V	FALSE	735
+Homo sapiens non-functional	IGLV2-34	IGL	V	FALSE	736
+Homo sapiens non-functional	IGLV2-5	IGL	V	FALSE	737
+Homo sapiens functional	IGLV2-8	IGL	V	TRUE	738
+Homo sapiens non-functional	IGLV2-NL1	IGL	V	FALSE	739
+Homo sapiens functional	IGLV3-1	IGL	V	TRUE	740
+Homo sapiens functional	IGLV3-10	IGL	V	TRUE	741
+Homo sapiens functional	IGLV3-12	IGL	V	TRUE	742
+Homo sapiens non-functional	IGLV3-13	IGL	V	FALSE	743
+Homo sapiens non-functional	IGLV3-15	IGL	V	FALSE	744
+Homo sapiens functional	IGLV3-16	IGL	V	TRUE	745
+Homo sapiens non-functional	IGLV3-17	IGL	V	FALSE	746
+Homo sapiens functional	IGLV3-19	IGL	V	TRUE	747
+Homo sapiens non-functional	IGLV3-2	IGL	V	FALSE	748
+Homo sapiens functional	IGLV3-21	IGL	V	TRUE	749
+Homo sapiens functional	IGLV3-22	IGL	V	TRUE	750
+Homo sapiens non-functional	IGLV3-24	IGL	V	FALSE	751
+Homo sapiens functional	IGLV3-25	IGL	V	TRUE	752
+Homo sapiens non-functional	IGLV3-26	IGL	V	FALSE	753
+Homo sapiens functional	IGLV3-27	IGL	V	TRUE	754
+Homo sapiens non-functional	IGLV3-29	IGL	V	FALSE	755
+Homo sapiens non-functional	IGLV3-30	IGL	V	FALSE	756
+Homo sapiens non-functional	IGLV3-31	IGL	V	FALSE	757
+Homo sapiens non-functional	IGLV3-32	IGL	V	FALSE	758
+Homo sapiens non-functional	IGLV3-4	IGL	V	FALSE	759
+Homo sapiens non-functional	IGLV3-6	IGL	V	FALSE	760
+Homo sapiens non-functional	IGLV3-7	IGL	V	FALSE	761
+Homo sapiens functional	IGLV3-9	IGL	V	TRUE	762
+Homo sapiens functional	IGLV4-3	IGL	V	TRUE	763
+Homo sapiens functional	IGLV4-60	IGL	V	TRUE	764
+Homo sapiens functional	IGLV4-69	IGL	V	TRUE	765
+Homo sapiens functional	IGLV5-37	IGL	V	TRUE	766
+Homo sapiens functional	IGLV5-39	IGL	V	TRUE	767
+Homo sapiens functional	IGLV5-45	IGL	V	TRUE	768
+Homo sapiens non-functional	IGLV5-48	IGL	V	FALSE	769
+Homo sapiens functional	IGLV5-52	IGL	V	TRUE	770
+Homo sapiens functional	IGLV6-57	IGL	V	TRUE	771
+Homo sapiens non-functional	IGLV7-35	IGL	V	FALSE	772
+Homo sapiens functional	IGLV7-43	IGL	V	TRUE	773
+Homo sapiens functional	IGLV7-46	IGL	V	TRUE	774
+Homo sapiens functional	IGLV8-61	IGL	V	TRUE	775
+Homo sapiens non-functional	IGLV8/OR8-1	IGL	V	FALSE	776
+Homo sapiens functional	IGLV9-49	IGL	V	TRUE	777
+Homo sapiens non-functional	TRAJ1	TRA	J	FALSE	778
+Homo sapiens functional	TRAJ10	TRA	J	TRUE	779
+Homo sapiens functional	TRAJ11	TRA	J	TRUE	780
+Homo sapiens functional	TRAJ12	TRA	J	TRUE	781
+Homo sapiens functional	TRAJ13	TRA	J	TRUE	782
+Homo sapiens functional	TRAJ14	TRA	J	TRUE	783
+Homo sapiens functional	TRAJ15	TRA	J	TRUE	784
+Homo sapiens functional	TRAJ16	TRA	J	TRUE	785
+Homo sapiens functional	TRAJ17	TRA	J	TRUE	786
+Homo sapiens functional	TRAJ18	TRA	J	TRUE	787
+Homo sapiens non-functional	TRAJ19	TRA	J	FALSE	788
+Homo sapiens non-functional	TRAJ2	TRA	J	FALSE	789
+Homo sapiens functional	TRAJ20	TRA	J	TRUE	790
+Homo sapiens functional	TRAJ21	TRA	J	TRUE	791
+Homo sapiens functional	TRAJ22	TRA	J	TRUE	792
+Homo sapiens functional	TRAJ23	TRA	J	TRUE	793
+Homo sapiens functional	TRAJ24	TRA	J	TRUE	794
+Homo sapiens non-functional	TRAJ25	TRA	J	FALSE	795
+Homo sapiens functional	TRAJ26	TRA	J	TRUE	796
+Homo sapiens functional	TRAJ27	TRA	J	TRUE	797
+Homo sapiens functional	TRAJ28	TRA	J	TRUE	798
+Homo sapiens functional	TRAJ29	TRA	J	TRUE	799
+Homo sapiens functional	TRAJ3	TRA	J	TRUE	800
+Homo sapiens functional	TRAJ30	TRA	J	TRUE	801
+Homo sapiens functional	TRAJ31	TRA	J	TRUE	802
+Homo sapiens functional	TRAJ32	TRA	J	TRUE	803
+Homo sapiens functional	TRAJ33	TRA	J	TRUE	804
+Homo sapiens functional	TRAJ34	TRA	J	TRUE	805
+Homo sapiens non-functional	TRAJ35	TRA	J	FALSE	806
+Homo sapiens functional	TRAJ36	TRA	J	TRUE	807
+Homo sapiens functional	TRAJ37	TRA	J	TRUE	808
+Homo sapiens functional	TRAJ38	TRA	J	TRUE	809
+Homo sapiens functional	TRAJ39	TRA	J	TRUE	810
+Homo sapiens functional	TRAJ4	TRA	J	TRUE	811
+Homo sapiens functional	TRAJ40	TRA	J	TRUE	812
+Homo sapiens functional	TRAJ41	TRA	J	TRUE	813
+Homo sapiens functional	TRAJ42	TRA	J	TRUE	814
+Homo sapiens functional	TRAJ43	TRA	J	TRUE	815
+Homo sapiens functional	TRAJ44	TRA	J	TRUE	816
+Homo sapiens functional	TRAJ45	TRA	J	TRUE	817
+Homo sapiens functional	TRAJ46	TRA	J	TRUE	818
+Homo sapiens functional	TRAJ47	TRA	J	TRUE	819
+Homo sapiens functional	TRAJ48	TRA	J	TRUE	820
+Homo sapiens functional	TRAJ49	TRA	J	TRUE	821
+Homo sapiens functional	TRAJ5	TRA	J	TRUE	822
+Homo sapiens functional	TRAJ50	TRA	J	TRUE	823
+Homo sapiens non-functional	TRAJ51	TRA	J	FALSE	824
+Homo sapiens functional	TRAJ52	TRA	J	TRUE	825
+Homo sapiens functional	TRAJ53	TRA	J	TRUE	826
+Homo sapiens functional	TRAJ54	TRA	J	TRUE	827
+Homo sapiens non-functional	TRAJ55	TRA	J	FALSE	828
+Homo sapiens functional	TRAJ56	TRA	J	TRUE	829
+Homo sapiens functional	TRAJ57	TRA	J	TRUE	830
+Homo sapiens non-functional	TRAJ58	TRA	J	FALSE	831
+Homo sapiens non-functional	TRAJ59	TRA	J	FALSE	832
+Homo sapiens functional	TRAJ6	TRA	J	TRUE	833
+Homo sapiens non-functional	TRAJ60	TRA	J	FALSE	834
+Homo sapiens non-functional	TRAJ61	TRA	J	FALSE	835
+Homo sapiens functional	TRAJ7	TRA	J	TRUE	836
+Homo sapiens functional	TRAJ8	TRA	J	TRUE	837
+Homo sapiens functional	TRAJ9	TRA	J	TRUE	838
+Homo sapiens functional	TRAV1-1	TRA	V	TRUE	839
+Homo sapiens functional	TRAV1-2	TRA	V	TRUE	840
+Homo sapiens functional	TRAV10	TRA	V	TRUE	841
+Homo sapiens non-functional	TRAV11	TRA	V	FALSE	842
+Homo sapiens functional	TRAV12-1	TRA	V	TRUE	843
+Homo sapiens functional	TRAV12-2	TRA	V	TRUE	844
+Homo sapiens functional	TRAV12-3	TRA	V	TRUE	845
+Homo sapiens functional	TRAV13-1	TRA	V	TRUE	846
+Homo sapiens functional	TRAV13-2	TRA	V	TRUE	847
+Homo sapiens functional	TRAV14/DV4	TRA	V	TRUE	848
+Homo sapiens non-functional	TRAV15	TRA	V	FALSE	849
+Homo sapiens functional	TRAV16	TRA	V	TRUE	850
+Homo sapiens functional	TRAV17	TRA	V	TRUE	851
+Homo sapiens functional	TRAV18	TRA	V	TRUE	852
+Homo sapiens functional	TRAV19	TRA	V	TRUE	853
+Homo sapiens functional	TRAV2	TRA	V	TRUE	854
+Homo sapiens functional	TRAV20	TRA	V	TRUE	855
+Homo sapiens functional	TRAV21	TRA	V	TRUE	856
+Homo sapiens functional	TRAV22	TRA	V	TRUE	857
+Homo sapiens functional	TRAV23/DV6	TRA	V	TRUE	858
+Homo sapiens functional	TRAV24	TRA	V	TRUE	859
+Homo sapiens functional	TRAV25	TRA	V	TRUE	860
+Homo sapiens functional	TRAV26-1	TRA	V	TRUE	861
+Homo sapiens functional	TRAV26-2	TRA	V	TRUE	862
+Homo sapiens functional	TRAV27	TRA	V	TRUE	863
+Homo sapiens non-functional	TRAV28	TRA	V	FALSE	864
+Homo sapiens functional	TRAV29/DV5	TRA	V	TRUE	865
+Homo sapiens functional	TRAV3	TRA	V	TRUE	866
+Homo sapiens functional	TRAV30	TRA	V	TRUE	867
+Homo sapiens non-functional	TRAV31	TRA	V	FALSE	868
+Homo sapiens non-functional	TRAV32	TRA	V	FALSE	869
+Homo sapiens non-functional	TRAV33	TRA	V	FALSE	870
+Homo sapiens functional	TRAV34	TRA	V	TRUE	871
+Homo sapiens functional	TRAV35	TRA	V	TRUE	872
+Homo sapiens functional	TRAV36/DV7	TRA	V	TRUE	873
+Homo sapiens non-functional	TRAV37	TRA	V	FALSE	874
+Homo sapiens functional	TRAV38-1	TRA	V	TRUE	875
+Homo sapiens functional	TRAV38-2/DV8	TRA	V	TRUE	876
+Homo sapiens functional	TRAV39	TRA	V	TRUE	877
+Homo sapiens functional	TRAV4	TRA	V	TRUE	878
+Homo sapiens functional	TRAV40	TRA	V	TRUE	879
+Homo sapiens functional	TRAV41	TRA	V	TRUE	880
+Homo sapiens functional	TRAV5	TRA	V	TRUE	881
+Homo sapiens functional	TRAV6	TRA	V	TRUE	882
+Homo sapiens functional	TRAV7	TRA	V	TRUE	883
+Homo sapiens functional	TRAV8-1	TRA	V	TRUE	884
+Homo sapiens functional	TRAV8-2	TRA	V	TRUE	885
+Homo sapiens functional	TRAV8-3	TRA	V	TRUE	886
+Homo sapiens functional	TRAV8-4	TRA	V	TRUE	887
+Homo sapiens non-functional	TRAV8-5	TRA	V	FALSE	888
+Homo sapiens functional	TRAV8-6	TRA	V	TRUE	889
+Homo sapiens non-functional	TRAV8-7	TRA	V	FALSE	890
+Homo sapiens functional	TRAV9-1	TRA	V	TRUE	891
+Homo sapiens functional	TRAV9-2	TRA	V	TRUE	892
+Homo sapiens functional	TRBD1	TRB	D	TRUE	893
+Homo sapiens functional	TRBD2	TRB	D	TRUE	894
+Homo sapiens functional	TRBJ1-1	TRB	J	TRUE	895
+Homo sapiens functional	TRBJ1-2	TRB	J	TRUE	896
+Homo sapiens functional	TRBJ1-3	TRB	J	TRUE	897
+Homo sapiens functional	TRBJ1-4	TRB	J	TRUE	898
+Homo sapiens functional	TRBJ1-5	TRB	J	TRUE	899
+Homo sapiens functional	TRBJ1-6	TRB	J	TRUE	900
+Homo sapiens functional	TRBJ2-1	TRB	J	TRUE	901
+Homo sapiens functional	TRBJ2-2	TRB	J	TRUE	902
+Homo sapiens non-functional	TRBJ2-2P	TRB	J	FALSE	903
+Homo sapiens functional	TRBJ2-3	TRB	J	TRUE	904
+Homo sapiens functional	TRBJ2-4	TRB	J	TRUE	905
+Homo sapiens functional	TRBJ2-5	TRB	J	TRUE	906
+Homo sapiens functional	TRBJ2-6	TRB	J	TRUE	907
+Homo sapiens functional	TRBJ2-7	TRB	J	TRUE	908
+Homo sapiens non-functional	TRBV1	TRB	V	FALSE	909
+Homo sapiens functional	TRBV10-1	TRB	V	TRUE	910
+Homo sapiens functional	TRBV10-2	TRB	V	TRUE	911
+Homo sapiens functional	TRBV10-3	TRB	V	TRUE	912
+Homo sapiens functional	TRBV11-1	TRB	V	TRUE	913
+Homo sapiens functional	TRBV11-2	TRB	V	TRUE	914
+Homo sapiens functional	TRBV11-3	TRB	V	TRUE	915
+Homo sapiens non-functional	TRBV12-1	TRB	V	FALSE	916
+Homo sapiens non-functional	TRBV12-2	TRB	V	FALSE	917
+Homo sapiens functional	TRBV12-3	TRB	V	TRUE	918
+Homo sapiens functional	TRBV12-4	TRB	V	TRUE	919
+Homo sapiens functional	TRBV12-5	TRB	V	TRUE	920
+Homo sapiens functional	TRBV13	TRB	V	TRUE	921
+Homo sapiens functional	TRBV14	TRB	V	TRUE	922
+Homo sapiens functional	TRBV15	TRB	V	TRUE	923
+Homo sapiens functional	TRBV16	TRB	V	TRUE	924
+Homo sapiens non-functional	TRBV17	TRB	V	FALSE	925
+Homo sapiens functional	TRBV18	TRB	V	TRUE	926
+Homo sapiens functional	TRBV19	TRB	V	TRUE	927
+Homo sapiens functional	TRBV2	TRB	V	TRUE	928
+Homo sapiens functional	TRBV20-1	TRB	V	TRUE	929
+Homo sapiens non-functional	TRBV20/OR9-2	TRB	V	FALSE	930
+Homo sapiens non-functional	TRBV21-1	TRB	V	FALSE	931
+Homo sapiens non-functional	TRBV21/OR9-2	TRB	V	FALSE	932
+Homo sapiens non-functional	TRBV22-1	TRB	V	FALSE	933
+Homo sapiens non-functional	TRBV22/OR9-2	TRB	V	FALSE	934
+Homo sapiens non-functional	TRBV23-1	TRB	V	FALSE	935
+Homo sapiens non-functional	TRBV23/OR9-2	TRB	V	FALSE	936
+Homo sapiens functional	TRBV24-1	TRB	V	TRUE	937
+Homo sapiens non-functional	TRBV24/OR9-2	TRB	V	FALSE	938
+Homo sapiens functional	TRBV25-1	TRB	V	TRUE	939
+Homo sapiens non-functional	TRBV25/OR9-2	TRB	V	FALSE	940
+Homo sapiens non-functional	TRBV26	TRB	V	FALSE	941
+Homo sapiens non-functional	TRBV26/OR9-2	TRB	V	FALSE	942
+Homo sapiens functional	TRBV27	TRB	V	TRUE	943
+Homo sapiens functional	TRBV28	TRB	V	TRUE	944
+Homo sapiens functional	TRBV29-1	TRB	V	TRUE	945
+Homo sapiens non-functional	TRBV29/OR9-2	TRB	V	FALSE	946
+Homo sapiens functional	TRBV3-1	TRB	V	TRUE	947
+Homo sapiens non-functional	TRBV3-2	TRB	V	FALSE	948
+Homo sapiens functional	TRBV30	TRB	V	TRUE	949
+Homo sapiens functional	TRBV4-1	TRB	V	TRUE	950
+Homo sapiens functional	TRBV4-2	TRB	V	TRUE	951
+Homo sapiens functional	TRBV4-3	TRB	V	TRUE	952
+Homo sapiens functional	TRBV5-1	TRB	V	TRUE	953
+Homo sapiens non-functional	TRBV5-2	TRB	V	FALSE	954
+Homo sapiens non-functional	TRBV5-3	TRB	V	FALSE	955
+Homo sapiens functional	TRBV5-4	TRB	V	TRUE	956
+Homo sapiens functional	TRBV5-5	TRB	V	TRUE	957
+Homo sapiens functional	TRBV5-6	TRB	V	TRUE	958
+Homo sapiens non-functional	TRBV5-7	TRB	V	FALSE	959
+Homo sapiens functional	TRBV5-8	TRB	V	TRUE	960
+Homo sapiens functional	TRBV6-1	TRB	V	TRUE	961
+Homo sapiens functional	TRBV6-2	TRB	V	TRUE	962
+Homo sapiens functional	TRBV6-3	TRB	V	TRUE	963
+Homo sapiens functional	TRBV6-4	TRB	V	TRUE	964
+Homo sapiens functional	TRBV6-5	TRB	V	TRUE	965
+Homo sapiens functional	TRBV6-6	TRB	V	TRUE	966
+Homo sapiens non-functional	TRBV6-7	TRB	V	FALSE	967
+Homo sapiens functional	TRBV6-8	TRB	V	TRUE	968
+Homo sapiens functional	TRBV6-9	TRB	V	TRUE	969
+Homo sapiens non-functional	TRBV7-1	TRB	V	FALSE	970
+Homo sapiens functional	TRBV7-2	TRB	V	TRUE	971
+Homo sapiens functional	TRBV7-3	TRB	V	TRUE	972
+Homo sapiens functional	TRBV7-4	TRB	V	TRUE	973
+Homo sapiens non-functional	TRBV7-5	TRB	V	FALSE	974
+Homo sapiens functional	TRBV7-6	TRB	V	TRUE	975
+Homo sapiens functional	TRBV7-7	TRB	V	TRUE	976
+Homo sapiens functional	TRBV7-8	TRB	V	TRUE	977
+Homo sapiens functional	TRBV7-9	TRB	V	TRUE	978
+Homo sapiens non-functional	TRBV8-1	TRB	V	FALSE	979
+Homo sapiens non-functional	TRBV8-2	TRB	V	FALSE	980
+Homo sapiens functional	TRBV9	TRB	V	TRUE	981
+Homo sapiens non-functional	TRBVA	TRB	V	FALSE	982
+Homo sapiens non-functional	TRBVA/OR9-2	TRB	V	FALSE	983
+Homo sapiens non-functional	TRBVB	TRB	V	FALSE	984
+Homo sapiens non-functional	TRBVC	TRB	V	FALSE	985
+Homo sapiens functional	TRDD1	TRD	D	TRUE	986
+Homo sapiens functional	TRDD2	TRD	D	TRUE	987
+Homo sapiens functional	TRDD3	TRD	D	TRUE	988
+Homo sapiens functional	TRDJ1	TRD	J	TRUE	989
+Homo sapiens functional	TRDJ2	TRD	J	TRUE	990
+Homo sapiens functional	TRDJ3	TRD	J	TRUE	991
+Homo sapiens functional	TRDJ4	TRD	J	TRUE	992
+Homo sapiens functional	TRDV1	TRD	V	TRUE	993
+Homo sapiens functional	TRDV2	TRD	V	TRUE	994
+Homo sapiens functional	TRDV3	TRD	V	TRUE	995
+Homo sapiens functional	TRGJ1	TRG	J	TRUE	996
+Homo sapiens functional	TRGJ2	TRG	J	TRUE	997
+Homo sapiens functional	TRGJP	TRG	J	TRUE	998
+Homo sapiens functional	TRGJP1	TRG	J	TRUE	999
+Homo sapiens functional	TRGJP2	TRG	J	TRUE	1000
+Homo sapiens non-functional	TRGV1	TRG	V	FALSE	1001
+Homo sapiens non-functional	TRGV10	TRG	V	FALSE	1002
+Homo sapiens non-functional	TRGV11	TRG	V	FALSE	1003
+Homo sapiens functional	TRGV2	TRG	V	TRUE	1004
+Homo sapiens functional	TRGV3	TRG	V	TRUE	1005
+Homo sapiens non-functional	TRGV3P	TRG	V	FALSE	1006
+Homo sapiens functional	TRGV4	TRG	V	TRUE	1007
+Homo sapiens functional	TRGV5	TRG	V	TRUE	1008
+Homo sapiens non-functional	TRGV5P	TRG	V	FALSE	1009
+Homo sapiens non-functional	TRGV6	TRG	V	FALSE	1010
+Homo sapiens non-functional	TRGV7	TRG	V	FALSE	1011
+Homo sapiens functional	TRGV8	TRG	V	TRUE	1012
+Homo sapiens functional	TRGV9	TRG	V	TRUE	1013
+Homo sapiens non-functional	TRGVA	TRG	V	FALSE	1014
+Homo sapiens non-functional	TRGVB	TRG	V	FALSE	1015
+Macaca mulatta non-functional	IGHD	IGH	D	FALSE	1016
+Macaca mulatta functional	IGHD1-1	IGH	D	TRUE	1017
+Macaca mulatta functional	IGHD1-2	IGH	D	TRUE	1018
+Macaca mulatta functional	IGHD1-3	IGH	D	TRUE	1019
+Macaca mulatta functional	IGHD1-4	IGH	D	TRUE	1020
+Macaca mulatta non-functional	IGHD1-5	IGH	D	FALSE	1021
+Macaca mulatta non-functional	IGHD1-6	IGH	D	FALSE	1022
+Macaca mulatta non-functional	IGHD1-7	IGH	D	FALSE	1023
+Macaca mulatta functional	IGHD1-8	IGH	D	TRUE	1024
+Macaca mulatta functional	IGHD2-1	IGH	D	TRUE	1025
+Macaca mulatta functional	IGHD2-2	IGH	D	TRUE	1026
+Macaca mulatta functional	IGHD2-3	IGH	D	TRUE	1027
+Macaca mulatta functional	IGHD2-4	IGH	D	TRUE	1028
+Macaca mulatta functional	IGHD2-5	IGH	D	TRUE	1029
+Macaca mulatta functional	IGHD2-6	IGH	D	TRUE	1030
+Macaca mulatta non-functional	IGHD3-1	IGH	D	FALSE	1031
+Macaca mulatta non-functional	IGHD3-2	IGH	D	FALSE	1032
+Macaca mulatta functional	IGHD3-3	IGH	D	TRUE	1033
+Macaca mulatta functional	IGHD3-4	IGH	D	TRUE	1034
+Macaca mulatta non-functional	IGHD4-1	IGH	D	FALSE	1035
+Macaca mulatta functional	IGHD4-2	IGH	D	TRUE	1036
+Macaca mulatta functional	IGHD4-3	IGH	D	TRUE	1037
+Macaca mulatta functional	IGHD4-4	IGH	D	TRUE	1038
+Macaca mulatta non-functional	IGHD5-1	IGH	D	FALSE	1039
+Macaca mulatta functional	IGHD5-2	IGH	D	TRUE	1040
+Macaca mulatta non-functional	IGHD5-3	IGH	D	FALSE	1041
+Macaca mulatta functional	IGHD6-1	IGH	D	TRUE	1042
+Macaca mulatta functional	IGHD6-2	IGH	D	TRUE	1043
+Macaca mulatta functional	IGHD6-3	IGH	D	TRUE	1044
+Macaca mulatta functional	IGHD6-4	IGH	D	TRUE	1045
+Macaca mulatta functional	IGHD6-5	IGH	D	TRUE	1046
+Macaca mulatta functional	IGHD6-6	IGH	D	TRUE	1047
+Macaca mulatta functional	IGHD7-1	IGH	D	TRUE	1048
+Macaca mulatta functional	IGHJ1	IGH	J	TRUE	1049
+Macaca mulatta non-functional	IGHJ2	IGH	J	FALSE	1050
+Macaca mulatta functional	IGHJ3	IGH	J	TRUE	1051
+Macaca mulatta functional	IGHJ4	IGH	J	TRUE	1052
+Macaca mulatta functional	IGHJ5-1	IGH	J	TRUE	1053
+Macaca mulatta functional	IGHJ5-2	IGH	J	TRUE	1054
+Macaca mulatta functional	IGHJ6	IGH	J	TRUE	1055
+Macaca mulatta non-functional	IGHV(II)-1	IGH	V	FALSE	1056
+Macaca mulatta non-functional	IGHV(II)-10	IGH	V	FALSE	1057
+Macaca mulatta non-functional	IGHV(II)-11	IGH	V	FALSE	1058
+Macaca mulatta non-functional	IGHV(II)-12	IGH	V	FALSE	1059
+Macaca mulatta non-functional	IGHV(II)-2	IGH	V	FALSE	1060
+Macaca mulatta non-functional	IGHV(II)-3	IGH	V	FALSE	1061
+Macaca mulatta non-functional	IGHV(II)-4	IGH	V	FALSE	1062
+Macaca mulatta non-functional	IGHV(II)-5	IGH	V	FALSE	1063
+Macaca mulatta non-functional	IGHV(II)-6	IGH	V	FALSE	1064
+Macaca mulatta non-functional	IGHV(II)-7	IGH	V	FALSE	1065
+Macaca mulatta non-functional	IGHV(II)-8	IGH	V	FALSE	1066
+Macaca mulatta non-functional	IGHV(II)-9	IGH	V	FALSE	1067
+Macaca mulatta non-functional	IGHV(III)-1	IGH	V	FALSE	1068
+Macaca mulatta non-functional	IGHV(III)-2	IGH	V	FALSE	1069
+Macaca mulatta non-functional	IGHV(III)-3	IGH	V	FALSE	1070
+Macaca mulatta non-functional	IGHV(III)-4	IGH	V	FALSE	1071
+Macaca mulatta functional	IGHV1-1	IGH	V	TRUE	1072
+Macaca mulatta non-functional	IGHV1-2	IGH	V	FALSE	1073
+Macaca mulatta functional	IGHV2-1	IGH	V	TRUE	1074
+Macaca mulatta non-functional	IGHV2-2	IGH	V	FALSE	1075
+Macaca mulatta non-functional	IGHV3-1	IGH	V	FALSE	1076
+Macaca mulatta functional	IGHV3-10	IGH	V	TRUE	1077
+Macaca mulatta functional	IGHV3-11	IGH	V	TRUE	1078
+Macaca mulatta functional	IGHV3-12	IGH	V	TRUE	1079
+Macaca mulatta functional	IGHV3-13	IGH	V	TRUE	1080
+Macaca mulatta functional	IGHV3-14	IGH	V	TRUE	1081
+Macaca mulatta non-functional	IGHV3-15	IGH	V	FALSE	1082
+Macaca mulatta non-functional	IGHV3-16	IGH	V	FALSE	1083
+Macaca mulatta non-functional	IGHV3-17	IGH	V	FALSE	1084
+Macaca mulatta functional	IGHV3-18	IGH	V	TRUE	1085
+Macaca mulatta non-functional	IGHV3-19	IGH	V	FALSE	1086
+Macaca mulatta non-functional	IGHV3-2	IGH	V	FALSE	1087
+Macaca mulatta functional	IGHV3-20	IGH	V	TRUE	1088
+Macaca mulatta functional	IGHV3-21	IGH	V	TRUE	1089
+Macaca mulatta functional	IGHV3-22	IGH	V	TRUE	1090
+Macaca mulatta non-functional	IGHV3-23	IGH	V	FALSE	1091
+Macaca mulatta non-functional	IGHV3-24	IGH	V	FALSE	1092
+Macaca mulatta non-functional	IGHV3-3	IGH	V	FALSE	1093
+Macaca mulatta non-functional	IGHV3-4	IGH	V	FALSE	1094
+Macaca mulatta functional	IGHV3-5	IGH	V	TRUE	1095
+Macaca mulatta functional	IGHV3-6	IGH	V	TRUE	1096
+Macaca mulatta functional	IGHV3-7	IGH	V	TRUE	1097
+Macaca mulatta non-functional	IGHV3-8	IGH	V	FALSE	1098
+Macaca mulatta functional	IGHV3-9	IGH	V	TRUE	1099
+Macaca mulatta non-functional	IGHV4-1	IGH	V	FALSE	1100
+Macaca mulatta functional	IGHV4-2	IGH	V	TRUE	1101
+Macaca mulatta non-functional	IGHV4-3	IGH	V	FALSE	1102
+Macaca mulatta non-functional	IGHV4-4	IGH	V	FALSE	1103
+Macaca mulatta non-functional	IGHV5-1	IGH	V	FALSE	1104
+Macaca mulatta functional	IGHV5-2	IGH	V	TRUE	1105
+Macaca mulatta functional	IGHV6-1	IGH	V	TRUE	1106
+Macaca mulatta functional	IGHV7-1	IGH	V	TRUE	1107
+Macaca mulatta functional	IGKJ1	IGK	J	TRUE	1108
+Macaca mulatta functional	IGKJ2	IGK	J	TRUE	1109
+Macaca mulatta functional	IGKJ3	IGK	J	TRUE	1110
+Macaca mulatta functional	IGKJ4	IGK	J	TRUE	1111
+Macaca mulatta non-functional	IGKJ5	IGK	J	FALSE	1112
+Macaca mulatta non-functional	IGKV1-1	IGK	V	FALSE	1113
+Macaca mulatta functional	IGKV1-10	IGK	V	TRUE	1114
+Macaca mulatta functional	IGKV1-11	IGK	V	TRUE	1115
+Macaca mulatta non-functional	IGKV1-12	IGK	V	FALSE	1116
+Macaca mulatta functional	IGKV1-13	IGK	V	TRUE	1117
+Macaca mulatta functional	IGKV1-14	IGK	V	TRUE	1118
+Macaca mulatta functional	IGKV1-15	IGK	V	TRUE	1119
+Macaca mulatta non-functional	IGKV1-16	IGK	V	FALSE	1120
+Macaca mulatta functional	IGKV1-17	IGK	V	TRUE	1121
+Macaca mulatta functional	IGKV1-18	IGK	V	TRUE	1122
+Macaca mulatta non-functional	IGKV1-19	IGK	V	FALSE	1123
+Macaca mulatta functional	IGKV1-2	IGK	V	TRUE	1124
+Macaca mulatta functional	IGKV1-20	IGK	V	TRUE	1125
+Macaca mulatta functional	IGKV1-21	IGK	V	TRUE	1126
+Macaca mulatta functional	IGKV1-22	IGK	V	TRUE	1127
+Macaca mulatta functional	IGKV1-23	IGK	V	TRUE	1128
+Macaca mulatta non-functional	IGKV1-3	IGK	V	FALSE	1129
+Macaca mulatta non-functional	IGKV1-4	IGK	V	FALSE	1130
+Macaca mulatta functional	IGKV1-5	IGK	V	TRUE	1131
+Macaca mulatta non-functional	IGKV1-6	IGK	V	FALSE	1132
+Macaca mulatta non-functional	IGKV1-7	IGK	V	FALSE	1133
+Macaca mulatta functional	IGKV1-8	IGK	V	TRUE	1134
+Macaca mulatta functional	IGKV1-9	IGK	V	TRUE	1135
+Macaca mulatta functional	IGKV1S1	IGK	V	TRUE	1136
+Macaca mulatta functional	IGKV1S10	IGK	V	TRUE	1137
+Macaca mulatta functional	IGKV1S11	IGK	V	TRUE	1138
+Macaca mulatta functional	IGKV1S12	IGK	V	TRUE	1139
+Macaca mulatta functional	IGKV1S13	IGK	V	TRUE	1140
+Macaca mulatta functional	IGKV1S14	IGK	V	TRUE	1141
+Macaca mulatta functional	IGKV1S15	IGK	V	TRUE	1142
+Macaca mulatta functional	IGKV1S16	IGK	V	TRUE	1143
+Macaca mulatta functional	IGKV1S17	IGK	V	TRUE	1144
+Macaca mulatta non-functional	IGKV1S18	IGK	V	FALSE	1145
+Macaca mulatta functional	IGKV1S19	IGK	V	TRUE	1146
+Macaca mulatta functional	IGKV1S2	IGK	V	TRUE	1147
+Macaca mulatta functional	IGKV1S20	IGK	V	TRUE	1148
+Macaca mulatta functional	IGKV1S21	IGK	V	TRUE	1149
+Macaca mulatta functional	IGKV1S22	IGK	V	TRUE	1150
+Macaca mulatta functional	IGKV1S23	IGK	V	TRUE	1151
+Macaca mulatta functional	IGKV1S24	IGK	V	TRUE	1152
+Macaca mulatta functional	IGKV1S25	IGK	V	TRUE	1153
+Macaca mulatta functional	IGKV1S26	IGK	V	TRUE	1154
+Macaca mulatta functional	IGKV1S27	IGK	V	TRUE	1155
+Macaca mulatta functional	IGKV1S28	IGK	V	TRUE	1156
+Macaca mulatta functional	IGKV1S3	IGK	V	TRUE	1157
+Macaca mulatta functional	IGKV1S4	IGK	V	TRUE	1158
+Macaca mulatta functional	IGKV1S5	IGK	V	TRUE	1159
+Macaca mulatta functional	IGKV1S6	IGK	V	TRUE	1160
+Macaca mulatta functional	IGKV1S7	IGK	V	TRUE	1161
+Macaca mulatta functional	IGKV1S8	IGK	V	TRUE	1162
+Macaca mulatta functional	IGKV1S9	IGK	V	TRUE	1163
+Macaca mulatta functional	IGKV2-1	IGK	V	TRUE	1164
+Macaca mulatta non-functional	IGKV2-10	IGK	V	FALSE	1165
+Macaca mulatta non-functional	IGKV2-11	IGK	V	FALSE	1166
+Macaca mulatta non-functional	IGKV2-12	IGK	V	FALSE	1167
+Macaca mulatta non-functional	IGKV2-13	IGK	V	FALSE	1168
+Macaca mulatta functional	IGKV2-14	IGK	V	TRUE	1169
+Macaca mulatta non-functional	IGKV2-15	IGK	V	FALSE	1170
+Macaca mulatta non-functional	IGKV2-16	IGK	V	FALSE	1171
+Macaca mulatta non-functional	IGKV2-2	IGK	V	FALSE	1172
+Macaca mulatta functional	IGKV2-3	IGK	V	TRUE	1173
+Macaca mulatta non-functional	IGKV2-4	IGK	V	FALSE	1174
+Macaca mulatta non-functional	IGKV2-5	IGK	V	FALSE	1175
+Macaca mulatta non-functional	IGKV2-6	IGK	V	FALSE	1176
+Macaca mulatta non-functional	IGKV2-7	IGK	V	FALSE	1177
+Macaca mulatta non-functional	IGKV2-8	IGK	V	FALSE	1178
+Macaca mulatta non-functional	IGKV2-9	IGK	V	FALSE	1179
+Macaca mulatta functional	IGKV2S1	IGK	V	TRUE	1180
+Macaca mulatta functional	IGKV2S10	IGK	V	TRUE	1181
+Macaca mulatta functional	IGKV2S11	IGK	V	TRUE	1182
+Macaca mulatta functional	IGKV2S12	IGK	V	TRUE	1183
+Macaca mulatta functional	IGKV2S13	IGK	V	TRUE	1184
+Macaca mulatta non-functional	IGKV2S14	IGK	V	FALSE	1185
+Macaca mulatta functional	IGKV2S15	IGK	V	TRUE	1186
+Macaca mulatta non-functional	IGKV2S16	IGK	V	FALSE	1187
+Macaca mulatta functional	IGKV2S17	IGK	V	TRUE	1188
+Macaca mulatta functional	IGKV2S18	IGK	V	TRUE	1189
+Macaca mulatta functional	IGKV2S19	IGK	V	TRUE	1190
+Macaca mulatta functional	IGKV2S2	IGK	V	TRUE	1191
+Macaca mulatta functional	IGKV2S20	IGK	V	TRUE	1192
+Macaca mulatta functional	IGKV2S3	IGK	V	TRUE	1193
+Macaca mulatta functional	IGKV2S4	IGK	V	TRUE	1194
+Macaca mulatta functional	IGKV2S5	IGK	V	TRUE	1195
+Macaca mulatta non-functional	IGKV2S6	IGK	V	FALSE	1196
+Macaca mulatta non-functional	IGKV2S7	IGK	V	FALSE	1197
+Macaca mulatta functional	IGKV2S8	IGK	V	TRUE	1198
+Macaca mulatta functional	IGKV2S9	IGK	V	TRUE	1199
+Macaca mulatta functional	IGKV3-1	IGK	V	TRUE	1200
+Macaca mulatta non-functional	IGKV3-10	IGK	V	FALSE	1201
+Macaca mulatta non-functional	IGKV3-11	IGK	V	FALSE	1202
+Macaca mulatta functional	IGKV3-2	IGK	V	TRUE	1203
+Macaca mulatta functional	IGKV3-3	IGK	V	TRUE	1204
+Macaca mulatta non-functional	IGKV3-4	IGK	V	FALSE	1205
+Macaca mulatta functional	IGKV3-5	IGK	V	TRUE	1206
+Macaca mulatta non-functional	IGKV3-6	IGK	V	FALSE	1207
+Macaca mulatta non-functional	IGKV3-7	IGK	V	FALSE	1208
+Macaca mulatta non-functional	IGKV3-8	IGK	V	FALSE	1209
+Macaca mulatta functional	IGKV3-9	IGK	V	TRUE	1210
+Macaca mulatta functional	IGKV3S1	IGK	V	TRUE	1211
+Macaca mulatta functional	IGKV3S10	IGK	V	TRUE	1212
+Macaca mulatta functional	IGKV3S11	IGK	V	TRUE	1213
+Macaca mulatta functional	IGKV3S2	IGK	V	TRUE	1214
+Macaca mulatta functional	IGKV3S3	IGK	V	TRUE	1215
+Macaca mulatta functional	IGKV3S4	IGK	V	TRUE	1216
+Macaca mulatta functional	IGKV3S5	IGK	V	TRUE	1217
+Macaca mulatta functional	IGKV3S6	IGK	V	TRUE	1218
+Macaca mulatta functional	IGKV3S7	IGK	V	TRUE	1219
+Macaca mulatta functional	IGKV3S8	IGK	V	TRUE	1220
+Macaca mulatta functional	IGKV3S9	IGK	V	TRUE	1221
+Macaca mulatta non-functional	IGKV4-1	IGK	V	FALSE	1222
+Macaca mulatta non-functional	IGKV4-2	IGK	V	FALSE	1223
+Macaca mulatta functional	IGKV4-3	IGK	V	TRUE	1224
+Macaca mulatta functional	IGKV5-1	IGK	V	TRUE	1225
+Macaca mulatta functional	IGKV5-2	IGK	V	TRUE	1226
+Macaca mulatta functional	IGKV6-1	IGK	V	TRUE	1227
+Macaca mulatta functional	IGKV6-2	IGK	V	TRUE	1228
+Macaca mulatta non-functional	IGKV6-3	IGK	V	FALSE	1229
+Macaca mulatta functional	IGKV7-1	IGK	V	TRUE	1230
+Macaca mulatta functional	IGLJ1	IGL	J	TRUE	1231
+Macaca mulatta functional	IGLJ2	IGL	J	TRUE	1232
+Macaca mulatta functional	IGLJ3	IGL	J	TRUE	1233
+Macaca mulatta non-functional	IGLJ4	IGL	J	FALSE	1234
+Macaca mulatta functional	IGLJ5	IGL	J	TRUE	1235
+Macaca mulatta functional	IGLJ6	IGL	J	TRUE	1236
+Macaca mulatta non-functional	IGLV(I)-1	IGL	V	FALSE	1237
+Macaca mulatta non-functional	IGLV(I)-10	IGL	V	FALSE	1238
+Macaca mulatta non-functional	IGLV(I)-11	IGL	V	FALSE	1239
+Macaca mulatta non-functional	IGLV(I)-12	IGL	V	FALSE	1240
+Macaca mulatta non-functional	IGLV(I)-2	IGL	V	FALSE	1241
+Macaca mulatta non-functional	IGLV(I)-3	IGL	V	FALSE	1242
+Macaca mulatta non-functional	IGLV(I)-4	IGL	V	FALSE	1243
+Macaca mulatta non-functional	IGLV(I)-5	IGL	V	FALSE	1244
+Macaca mulatta non-functional	IGLV(I)-6	IGL	V	FALSE	1245
+Macaca mulatta non-functional	IGLV(I)-7	IGL	V	FALSE	1246
+Macaca mulatta non-functional	IGLV(I)-8	IGL	V	FALSE	1247
+Macaca mulatta non-functional	IGLV(I)-9	IGL	V	FALSE	1248
+Macaca mulatta non-functional	IGLV(II)-1	IGL	V	FALSE	1249
+Macaca mulatta non-functional	IGLV(II)-2	IGL	V	FALSE	1250
+Macaca mulatta non-functional	IGLV(III)-1	IGL	V	FALSE	1251
+Macaca mulatta non-functional	IGLV(III)-2	IGL	V	FALSE	1252
+Macaca mulatta non-functional	IGLV(III)-3	IGL	V	FALSE	1253
+Macaca mulatta non-functional	IGLV(III)-4	IGL	V	FALSE	1254
+Macaca mulatta non-functional	IGLV(IV)-1	IGL	V	FALSE	1255
+Macaca mulatta non-functional	IGLV(IV)-2	IGL	V	FALSE	1256
+Macaca mulatta non-functional	IGLV(IV)-3	IGL	V	FALSE	1257
+Macaca mulatta non-functional	IGLV(V)-1	IGL	V	FALSE	1258
+Macaca mulatta non-functional	IGLV(V)-2	IGL	V	FALSE	1259
+Macaca mulatta non-functional	IGLV1-1	IGL	V	FALSE	1260
+Macaca mulatta functional	IGLV1-10	IGL	V	TRUE	1261
+Macaca mulatta functional	IGLV1-11	IGL	V	TRUE	1262
+Macaca mulatta functional	IGLV1-12	IGL	V	TRUE	1263
+Macaca mulatta functional	IGLV1-13	IGL	V	TRUE	1264
+Macaca mulatta functional	IGLV1-14	IGL	V	TRUE	1265
+Macaca mulatta functional	IGLV1-15	IGL	V	TRUE	1266
+Macaca mulatta non-functional	IGLV1-2	IGL	V	FALSE	1267
+Macaca mulatta non-functional	IGLV1-3	IGL	V	FALSE	1268
+Macaca mulatta non-functional	IGLV1-4	IGL	V	FALSE	1269
+Macaca mulatta non-functional	IGLV1-5	IGL	V	FALSE	1270
+Macaca mulatta functional	IGLV1-6	IGL	V	TRUE	1271
+Macaca mulatta functional	IGLV1-7	IGL	V	TRUE	1272
+Macaca mulatta functional	IGLV1-8	IGL	V	TRUE	1273
+Macaca mulatta functional	IGLV1-9	IGL	V	TRUE	1274
+Macaca mulatta functional	IGLV10-1	IGL	V	TRUE	1275
+Macaca mulatta non-functional	IGLV10-2	IGL	V	FALSE	1276
+Macaca mulatta functional	IGLV11-1	IGL	V	TRUE	1277
+Macaca mulatta functional	IGLV1S1	IGL	V	TRUE	1278
+Macaca mulatta functional	IGLV1S2	IGL	V	TRUE	1279
+Macaca mulatta functional	IGLV1S3	IGL	V	TRUE	1280
+Macaca mulatta functional	IGLV1S4	IGL	V	TRUE	1281
+Macaca mulatta non-functional	IGLV1S5	IGL	V	FALSE	1282
+Macaca mulatta functional	IGLV1S6	IGL	V	TRUE	1283
+Macaca mulatta functional	IGLV1S7	IGL	V	TRUE	1284
+Macaca mulatta non-functional	IGLV2-1	IGL	V	FALSE	1285
+Macaca mulatta functional	IGLV2-10	IGL	V	TRUE	1286
+Macaca mulatta non-functional	IGLV2-11	IGL	V	FALSE	1287
+Macaca mulatta non-functional	IGLV2-2	IGL	V	FALSE	1288
+Macaca mulatta functional	IGLV2-3	IGL	V	TRUE	1289
+Macaca mulatta non-functional	IGLV2-4	IGL	V	FALSE	1290
+Macaca mulatta non-functional	IGLV2-5	IGL	V	FALSE	1291
+Macaca mulatta non-functional	IGLV2-6	IGL	V	FALSE	1292
+Macaca mulatta functional	IGLV2-7	IGL	V	TRUE	1293
+Macaca mulatta functional	IGLV2-8	IGL	V	TRUE	1294
+Macaca mulatta functional	IGLV2-9	IGL	V	TRUE	1295
+Macaca mulatta functional	IGLV2S1	IGL	V	TRUE	1296
+Macaca mulatta functional	IGLV2S10	IGL	V	TRUE	1297
+Macaca mulatta functional	IGLV2S11	IGL	V	TRUE	1298
+Macaca mulatta functional	IGLV2S2	IGL	V	TRUE	1299
+Macaca mulatta functional	IGLV2S3	IGL	V	TRUE	1300
+Macaca mulatta functional	IGLV2S4	IGL	V	TRUE	1301
+Macaca mulatta functional	IGLV2S5	IGL	V	TRUE	1302
+Macaca mulatta functional	IGLV2S6	IGL	V	TRUE	1303
+Macaca mulatta functional	IGLV2S7	IGL	V	TRUE	1304
+Macaca mulatta non-functional	IGLV2S8	IGL	V	FALSE	1305
+Macaca mulatta functional	IGLV2S9	IGL	V	TRUE	1306
+Macaca mulatta functional	IGLV3-1	IGL	V	TRUE	1307
+Macaca mulatta functional	IGLV3-10	IGL	V	TRUE	1308
+Macaca mulatta non-functional	IGLV3-11	IGL	V	FALSE	1309
+Macaca mulatta functional	IGLV3-12	IGL	V	TRUE	1310
+Macaca mulatta non-functional	IGLV3-13	IGL	V	FALSE	1311
+Macaca mulatta non-functional	IGLV3-14	IGL	V	FALSE	1312
+Macaca mulatta non-functional	IGLV3-15	IGL	V	FALSE	1313
+Macaca mulatta non-functional	IGLV3-16	IGL	V	FALSE	1314
+Macaca mulatta non-functional	IGLV3-17	IGL	V	FALSE	1315
+Macaca mulatta non-functional	IGLV3-18	IGL	V	FALSE	1316
+Macaca mulatta functional	IGLV3-19	IGL	V	TRUE	1317
+Macaca mulatta functional	IGLV3-2	IGL	V	TRUE	1318
+Macaca mulatta non-functional	IGLV3-20	IGL	V	FALSE	1319
+Macaca mulatta functional	IGLV3-3	IGL	V	TRUE	1320
+Macaca mulatta functional	IGLV3-4	IGL	V	TRUE	1321
+Macaca mulatta functional	IGLV3-5	IGL	V	TRUE	1322
+Macaca mulatta functional	IGLV3-6	IGL	V	TRUE	1323
+Macaca mulatta non-functional	IGLV3-7	IGL	V	FALSE	1324
+Macaca mulatta non-functional	IGLV3-8	IGL	V	FALSE	1325
+Macaca mulatta non-functional	IGLV3-9	IGL	V	FALSE	1326
+Macaca mulatta functional	IGLV3S1	IGL	V	TRUE	1327
+Macaca mulatta functional	IGLV3S10	IGL	V	TRUE	1328
+Macaca mulatta functional	IGLV3S11	IGL	V	TRUE	1329
+Macaca mulatta functional	IGLV3S12	IGL	V	TRUE	1330
+Macaca mulatta functional	IGLV3S13	IGL	V	TRUE	1331
+Macaca mulatta functional	IGLV3S14	IGL	V	TRUE	1332
+Macaca mulatta functional	IGLV3S15	IGL	V	TRUE	1333
+Macaca mulatta functional	IGLV3S16	IGL	V	TRUE	1334
+Macaca mulatta non-functional	IGLV3S18	IGL	V	FALSE	1335
+Macaca mulatta non-functional	IGLV3S19	IGL	V	FALSE	1336
+Macaca mulatta functional	IGLV3S2	IGL	V	TRUE	1337
+Macaca mulatta non-functional	IGLV3S20	IGL	V	FALSE	1338
+Macaca mulatta functional	IGLV3S3	IGL	V	TRUE	1339
+Macaca mulatta functional	IGLV3S4	IGL	V	TRUE	1340
+Macaca mulatta functional	IGLV3S5	IGL	V	TRUE	1341
+Macaca mulatta functional	IGLV3S6	IGL	V	TRUE	1342
+Macaca mulatta functional	IGLV3S7	IGL	V	TRUE	1343
+Macaca mulatta functional	IGLV3S8	IGL	V	TRUE	1344
+Macaca mulatta functional	IGLV3S9	IGL	V	TRUE	1345
+Macaca mulatta non-functional	IGLV4-1	IGL	V	FALSE	1346
+Macaca mulatta functional	IGLV4-2	IGL	V	TRUE	1347
+Macaca mulatta non-functional	IGLV4-3	IGL	V	FALSE	1348
+Macaca mulatta functional	IGLV4-4	IGL	V	TRUE	1349
+Macaca mulatta functional	IGLV4S1	IGL	V	TRUE	1350
+Macaca mulatta functional	IGLV4S2	IGL	V	TRUE	1351
+Macaca mulatta functional	IGLV4S3	IGL	V	TRUE	1352
+Macaca mulatta functional	IGLV4S4	IGL	V	TRUE	1353
+Macaca mulatta non-functional	IGLV5-1	IGL	V	FALSE	1354
+Macaca mulatta functional	IGLV5-10	IGL	V	TRUE	1355
+Macaca mulatta functional	IGLV5-11	IGL	V	TRUE	1356
+Macaca mulatta non-functional	IGLV5-12	IGL	V	FALSE	1357
+Macaca mulatta functional	IGLV5-13	IGL	V	TRUE	1358
+Macaca mulatta functional	IGLV5-14	IGL	V	TRUE	1359
+Macaca mulatta non-functional	IGLV5-15	IGL	V	FALSE	1360
+Macaca mulatta non-functional	IGLV5-2	IGL	V	FALSE	1361
+Macaca mulatta non-functional	IGLV5-3	IGL	V	FALSE	1362
+Macaca mulatta non-functional	IGLV5-4	IGL	V	FALSE	1363
+Macaca mulatta functional	IGLV5-5	IGL	V	TRUE	1364
+Macaca mulatta functional	IGLV5-6	IGL	V	TRUE	1365
+Macaca mulatta functional	IGLV5-7	IGL	V	TRUE	1366
+Macaca mulatta non-functional	IGLV5-8	IGL	V	FALSE	1367
+Macaca mulatta non-functional	IGLV5-9	IGL	V	FALSE	1368
+Macaca mulatta non-functional	IGLV5S1	IGL	V	FALSE	1369
+Macaca mulatta functional	IGLV5S2	IGL	V	TRUE	1370
+Macaca mulatta functional	IGLV5S3	IGL	V	TRUE	1371
+Macaca mulatta functional	IGLV5S4	IGL	V	TRUE	1372
+Macaca mulatta functional	IGLV6-1	IGL	V	TRUE	1373
+Macaca mulatta functional	IGLV6-2	IGL	V	TRUE	1374
+Macaca mulatta non-functional	IGLV6-3	IGL	V	FALSE	1375
+Macaca mulatta non-functional	IGLV6-4	IGL	V	FALSE	1376
+Macaca mulatta functional	IGLV6-5	IGL	V	TRUE	1377
+Macaca mulatta functional	IGLV7-1	IGL	V	TRUE	1378
+Macaca mulatta functional	IGLV7-2	IGL	V	TRUE	1379
+Macaca mulatta functional	IGLV7-3	IGL	V	TRUE	1380
+Macaca mulatta functional	IGLV7-4	IGL	V	TRUE	1381
+Macaca mulatta non-functional	IGLV7-5	IGL	V	FALSE	1382
+Macaca mulatta non-functional	IGLV7-6	IGL	V	FALSE	1383
+Macaca mulatta non-functional	IGLV7-7	IGL	V	FALSE	1384
+Macaca mulatta functional	IGLV8-1	IGL	V	TRUE	1385
+Macaca mulatta non-functional	IGLV8S1	IGL	V	FALSE	1386
+Macaca mulatta functional	IGLV9-1	IGL	V	TRUE	1387
+Macaca mulatta functional	TRBD1	TRB	D	TRUE	1388
+Macaca mulatta functional	TRBD2	TRB	D	TRUE	1389
+Macaca mulatta functional	TRBJ1-1	TRB	J	TRUE	1390
+Macaca mulatta functional	TRBJ1-2	TRB	J	TRUE	1391
+Macaca mulatta functional	TRBJ1-3	TRB	J	TRUE	1392
+Macaca mulatta functional	TRBJ1-4	TRB	J	TRUE	1393
+Macaca mulatta functional	TRBJ1-5	TRB	J	TRUE	1394
+Macaca mulatta functional	TRBJ1-6	TRB	J	TRUE	1395
+Macaca mulatta functional	TRBJ2-1	TRB	J	TRUE	1396
+Macaca mulatta functional	TRBJ2-2	TRB	J	TRUE	1397
+Macaca mulatta non-functional	TRBJ2-2P	TRB	J	FALSE	1398
+Macaca mulatta functional	TRBJ2-3	TRB	J	TRUE	1399
+Macaca mulatta functional	TRBJ2-4	TRB	J	TRUE	1400
+Macaca mulatta functional	TRBJ2-5	TRB	J	TRUE	1401
+Macaca mulatta functional	TRBJ2-6	TRB	J	TRUE	1402
+Macaca mulatta functional	TRBJ2-7	TRB	J	TRUE	1403
+Macaca mulatta non-functional	TRBV1-1	TRB	V	FALSE	1404
+Macaca mulatta non-functional	TRBV1-2	TRB	V	FALSE	1405
+Macaca mulatta non-functional	TRBV1-3	TRB	V	FALSE	1406
+Macaca mulatta functional	TRBV10-1	TRB	V	TRUE	1407
+Macaca mulatta functional	TRBV10-2	TRB	V	TRUE	1408
+Macaca mulatta functional	TRBV10-3	TRB	V	TRUE	1409
+Macaca mulatta functional	TRBV11-1	TRB	V	TRUE	1410
+Macaca mulatta functional	TRBV11-2	TRB	V	TRUE	1411
+Macaca mulatta functional	TRBV11-3	TRB	V	TRUE	1412
+Macaca mulatta functional	TRBV12-1	TRB	V	TRUE	1413
+Macaca mulatta functional	TRBV12-2	TRB	V	TRUE	1414
+Macaca mulatta functional	TRBV12-3	TRB	V	TRUE	1415
+Macaca mulatta functional	TRBV12-4	TRB	V	TRUE	1416
+Macaca mulatta functional	TRBV13	TRB	V	TRUE	1417
+Macaca mulatta functional	TRBV14	TRB	V	TRUE	1418
+Macaca mulatta functional	TRBV15	TRB	V	TRUE	1419
+Macaca mulatta functional	TRBV16	TRB	V	TRUE	1420
+Macaca mulatta functional	TRBV18	TRB	V	TRUE	1421
+Macaca mulatta functional	TRBV19	TRB	V	TRUE	1422
+Macaca mulatta functional	TRBV2-1	TRB	V	TRUE	1423
+Macaca mulatta functional	TRBV2-2	TRB	V	TRUE	1424
+Macaca mulatta functional	TRBV2-3	TRB	V	TRUE	1425
+Macaca mulatta functional	TRBV20-1	TRB	V	TRUE	1426
+Macaca mulatta functional	TRBV21-1	TRB	V	TRUE	1427
+Macaca mulatta non-functional	TRBV22-1	TRB	V	FALSE	1428
+Macaca mulatta functional	TRBV23-1	TRB	V	TRUE	1429
+Macaca mulatta functional	TRBV24-1	TRB	V	TRUE	1430
+Macaca mulatta functional	TRBV25-1	TRB	V	TRUE	1431
+Macaca mulatta non-functional	TRBV26	TRB	V	FALSE	1432
+Macaca mulatta functional	TRBV27	TRB	V	TRUE	1433
+Macaca mulatta functional	TRBV28	TRB	V	TRUE	1434
+Macaca mulatta functional	TRBV29-1	TRB	V	TRUE	1435
+Macaca mulatta functional	TRBV3-1	TRB	V	TRUE	1436
+Macaca mulatta functional	TRBV3-2	TRB	V	TRUE	1437
+Macaca mulatta functional	TRBV3-3	TRB	V	TRUE	1438
+Macaca mulatta functional	TRBV3-4	TRB	V	TRUE	1439
+Macaca mulatta functional	TRBV30	TRB	V	TRUE	1440
+Macaca mulatta functional	TRBV4-1	TRB	V	TRUE	1441
+Macaca mulatta functional	TRBV4-2	TRB	V	TRUE	1442
+Macaca mulatta functional	TRBV4-3	TRB	V	TRUE	1443
+Macaca mulatta non-functional	TRBV5-1	TRB	V	FALSE	1444
+Macaca mulatta functional	TRBV5-10	TRB	V	TRUE	1445
+Macaca mulatta non-functional	TRBV5-2	TRB	V	FALSE	1446
+Macaca mulatta non-functional	TRBV5-3	TRB	V	FALSE	1447
+Macaca mulatta functional	TRBV5-4	TRB	V	TRUE	1448
+Macaca mulatta functional	TRBV5-5	TRB	V	TRUE	1449
+Macaca mulatta functional	TRBV5-6	TRB	V	TRUE	1450
+Macaca mulatta functional	TRBV5-7	TRB	V	TRUE	1451
+Macaca mulatta functional	TRBV5-8	TRB	V	TRUE	1452
+Macaca mulatta functional	TRBV5-9	TRB	V	TRUE	1453
+Macaca mulatta functional	TRBV6-1	TRB	V	TRUE	1454
+Macaca mulatta functional	TRBV6-2	TRB	V	TRUE	1455
+Macaca mulatta functional	TRBV6-3	TRB	V	TRUE	1456
+Macaca mulatta functional	TRBV6-4	TRB	V	TRUE	1457
+Macaca mulatta functional	TRBV6-5	TRB	V	TRUE	1458
+Macaca mulatta functional	TRBV6-6	TRB	V	TRUE	1459
+Macaca mulatta functional	TRBV6-7	TRB	V	TRUE	1460
+Macaca mulatta functional	TRBV6-8	TRB	V	TRUE	1461
+Macaca mulatta non-functional	TRBV7-1	TRB	V	FALSE	1462
+Macaca mulatta functional	TRBV7-10	TRB	V	TRUE	1463
+Macaca mulatta functional	TRBV7-2	TRB	V	TRUE	1464
+Macaca mulatta functional	TRBV7-3	TRB	V	TRUE	1465
+Macaca mulatta functional	TRBV7-4	TRB	V	TRUE	1466
+Macaca mulatta functional	TRBV7-5	TRB	V	TRUE	1467
+Macaca mulatta functional	TRBV7-6	TRB	V	TRUE	1468
+Macaca mulatta functional	TRBV7-7	TRB	V	TRUE	1469
+Macaca mulatta non-functional	TRBV7-8	TRB	V	FALSE	1470
+Macaca mulatta functional	TRBV7-9	TRB	V	TRUE	1471
+Macaca mulatta non-functional	TRBV8-1	TRB	V	FALSE	1472
+Macaca mulatta functional	TRBV9	TRB	V	TRUE	1473
+Macaca mulatta non-functional	TRBVA	TRB	V	FALSE	1474
+Macaca mulatta non-functional	TRBVB	TRB	V	FALSE	1475
+Mus musculus functional	IGHD	IGH	D	TRUE	1476
+Mus musculus functional	IGHD1-1	IGH	D	TRUE	1477
+Mus musculus functional	IGHD1-2	IGH	D	TRUE	1478
+Mus musculus functional	IGHD1-3	IGH	D	TRUE	1479
+Mus musculus functional	IGHD2-1	IGH	D	TRUE	1480
+Mus musculus functional	IGHD2-10	IGH	D	TRUE	1481
+Mus musculus functional	IGHD2-11	IGH	D	TRUE	1482
+Mus musculus functional	IGHD2-12	IGH	D	TRUE	1483
+Mus musculus functional	IGHD2-13	IGH	D	TRUE	1484
+Mus musculus functional	IGHD2-14	IGH	D	TRUE	1485
+Mus musculus functional	IGHD2-2	IGH	D	TRUE	1486
+Mus musculus functional	IGHD2-3	IGH	D	TRUE	1487
+Mus musculus functional	IGHD2-4	IGH	D	TRUE	1488
+Mus musculus functional	IGHD2-5	IGH	D	TRUE	1489
+Mus musculus functional	IGHD2-6	IGH	D	TRUE	1490
+Mus musculus functional	IGHD2-7	IGH	D	TRUE	1491
+Mus musculus functional	IGHD2-8	IGH	D	TRUE	1492
+Mus musculus functional	IGHD2-9	IGH	D	TRUE	1493
+Mus musculus functional	IGHD3-1	IGH	D	TRUE	1494
+Mus musculus functional	IGHD3-2	IGH	D	TRUE	1495
+Mus musculus functional	IGHD3-3	IGH	D	TRUE	1496
+Mus musculus functional	IGHD4-1	IGH	D	TRUE	1497
+Mus musculus non-functional	IGHD5-1	IGH	D	FALSE	1498
+Mus musculus non-functional	IGHD5-2	IGH	D	FALSE	1499
+Mus musculus non-functional	IGHD5-3	IGH	D	FALSE	1500
+Mus musculus non-functional	IGHD5-4	IGH	D	FALSE	1501
+Mus musculus non-functional	IGHD5-5	IGH	D	FALSE	1502
+Mus musculus non-functional	IGHD5-6	IGH	D	FALSE	1503
+Mus musculus non-functional	IGHD5-7	IGH	D	FALSE	1504
+Mus musculus non-functional	IGHD5-8	IGH	D	FALSE	1505
+Mus musculus non-functional	IGHD6-1	IGH	D	FALSE	1506
+Mus musculus non-functional	IGHD6-2	IGH	D	FALSE	1507
+Mus musculus non-functional	IGHD6-3	IGH	D	FALSE	1508
+Mus musculus functional	IGHJ1	IGH	J	TRUE	1509
+Mus musculus functional	IGHJ2	IGH	J	TRUE	1510
+Mus musculus functional	IGHJ3	IGH	J	TRUE	1511
+Mus musculus functional	IGHJ4	IGH	J	TRUE	1512
+Mus musculus non-functional	IGHV(I)-1	IGH	V	FALSE	1513
+Mus musculus non-functional	IGHV(II)-1	IGH	V	FALSE	1514
+Mus musculus non-functional	IGHV(II)-2	IGH	V	FALSE	1515
+Mus musculus non-functional	IGHV(II)-3	IGH	V	FALSE	1516
+Mus musculus non-functional	IGHV(II)-4	IGH	V	FALSE	1517
+Mus musculus non-functional	IGHV(II)-5	IGH	V	FALSE	1518
+Mus musculus non-functional	IGHV(III)-1	IGH	V	FALSE	1519
+Mus musculus non-functional	IGHV(III)-10	IGH	V	FALSE	1520
+Mus musculus non-functional	IGHV(III)-11	IGH	V	FALSE	1521
+Mus musculus non-functional	IGHV(III)-12	IGH	V	FALSE	1522
+Mus musculus non-functional	IGHV(III)-13	IGH	V	FALSE	1523
+Mus musculus non-functional	IGHV(III)-2	IGH	V	FALSE	1524
+Mus musculus non-functional	IGHV(III)-3	IGH	V	FALSE	1525
+Mus musculus non-functional	IGHV(III)-4	IGH	V	FALSE	1526
+Mus musculus non-functional	IGHV(III)-5	IGH	V	FALSE	1527
+Mus musculus non-functional	IGHV(III)-6	IGH	V	FALSE	1528
+Mus musculus non-functional	IGHV(III)-7	IGH	V	FALSE	1529
+Mus musculus non-functional	IGHV(III)-8	IGH	V	FALSE	1530
+Mus musculus non-functional	IGHV(III)-9	IGH	V	FALSE	1531
+Mus musculus non-functional	IGHV1-1	IGH	V	FALSE	1532
+Mus musculus non-functional	IGHV1-10	IGH	V	FALSE	1533
+Mus musculus functional	IGHV1-11	IGH	V	TRUE	1534
+Mus musculus functional	IGHV1-12	IGH	V	TRUE	1535
+Mus musculus non-functional	IGHV1-13	IGH	V	FALSE	1536
+Mus musculus functional	IGHV1-14	IGH	V	TRUE	1537
+Mus musculus functional	IGHV1-15	IGH	V	TRUE	1538
+Mus musculus non-functional	IGHV1-16	IGH	V	FALSE	1539
+Mus musculus non-functional	IGHV1-17	IGH	V	FALSE	1540
+Mus musculus functional	IGHV1-17-1	IGH	V	TRUE	1541
+Mus musculus functional	IGHV1-18	IGH	V	TRUE	1542
+Mus musculus functional	IGHV1-19	IGH	V	TRUE	1543
+Mus musculus non-functional	IGHV1-19-1	IGH	V	FALSE	1544
+Mus musculus non-functional	IGHV1-2	IGH	V	FALSE	1545
+Mus musculus functional	IGHV1-20	IGH	V	TRUE	1546
+Mus musculus non-functional	IGHV1-21	IGH	V	FALSE	1547
+Mus musculus non-functional	IGHV1-21-1	IGH	V	FALSE	1548
+Mus musculus functional	IGHV1-22	IGH	V	TRUE	1549
+Mus musculus non-functional	IGHV1-23	IGH	V	FALSE	1550
+Mus musculus non-functional	IGHV1-24	IGH	V	FALSE	1551
+Mus musculus non-functional	IGHV1-25	IGH	V	FALSE	1552
+Mus musculus functional	IGHV1-26	IGH	V	TRUE	1553
+Mus musculus non-functional	IGHV1-27	IGH	V	FALSE	1554
+Mus musculus non-functional	IGHV1-28	IGH	V	FALSE	1555
+Mus musculus non-functional	IGHV1-29	IGH	V	FALSE	1556
+Mus musculus non-functional	IGHV1-3	IGH	V	FALSE	1557
+Mus musculus non-functional	IGHV1-30	IGH	V	FALSE	1558
+Mus musculus functional	IGHV1-31	IGH	V	TRUE	1559
+Mus musculus non-functional	IGHV1-32	IGH	V	FALSE	1560
+Mus musculus non-functional	IGHV1-33	IGH	V	FALSE	1561
+Mus musculus functional	IGHV1-34	IGH	V	TRUE	1562
+Mus musculus non-functional	IGHV1-35	IGH	V	FALSE	1563
+Mus musculus functional	IGHV1-36	IGH	V	TRUE	1564
+Mus musculus functional	IGHV1-37	IGH	V	TRUE	1565
+Mus musculus non-functional	IGHV1-38	IGH	V	FALSE	1566
+Mus musculus functional	IGHV1-39	IGH	V	TRUE	1567
+Mus musculus functional	IGHV1-4	IGH	V	TRUE	1568
+Mus musculus non-functional	IGHV1-40	IGH	V	FALSE	1569
+Mus musculus non-functional	IGHV1-41	IGH	V	FALSE	1570
+Mus musculus functional	IGHV1-42	IGH	V	TRUE	1571
+Mus musculus functional	IGHV1-43	IGH	V	TRUE	1572
+Mus musculus non-functional	IGHV1-44	IGH	V	FALSE	1573
+Mus musculus non-functional	IGHV1-45	IGH	V	FALSE	1574
+Mus musculus non-functional	IGHV1-46	IGH	V	FALSE	1575
+Mus musculus functional	IGHV1-47	IGH	V	TRUE	1576
+Mus musculus non-functional	IGHV1-48	IGH	V	FALSE	1577
+Mus musculus functional	IGHV1-49	IGH	V	TRUE	1578
+Mus musculus functional	IGHV1-5	IGH	V	TRUE	1579
+Mus musculus functional	IGHV1-50	IGH	V	TRUE	1580
+Mus musculus non-functional	IGHV1-51	IGH	V	FALSE	1581
+Mus musculus functional	IGHV1-52	IGH	V	TRUE	1582
+Mus musculus functional	IGHV1-53	IGH	V	TRUE	1583
+Mus musculus functional	IGHV1-54	IGH	V	TRUE	1584
+Mus musculus functional	IGHV1-55	IGH	V	TRUE	1585
+Mus musculus functional	IGHV1-56	IGH	V	TRUE	1586
+Mus musculus non-functional	IGHV1-57	IGH	V	FALSE	1587
+Mus musculus functional	IGHV1-58	IGH	V	TRUE	1588
+Mus musculus functional	IGHV1-59	IGH	V	TRUE	1589
+Mus musculus non-functional	IGHV1-6	IGH	V	FALSE	1590
+Mus musculus non-functional	IGHV1-60	IGH	V	FALSE	1591
+Mus musculus functional	IGHV1-61	IGH	V	TRUE	1592
+Mus musculus non-functional	IGHV1-62	IGH	V	FALSE	1593
+Mus musculus functional	IGHV1-62-1	IGH	V	TRUE	1594
+Mus musculus functional	IGHV1-62-2	IGH	V	TRUE	1595
+Mus musculus non-functional	IGHV1-62-3	IGH	V	FALSE	1596
+Mus musculus functional	IGHV1-63	IGH	V	TRUE	1597
+Mus musculus functional	IGHV1-64	IGH	V	TRUE	1598
+Mus musculus non-functional	IGHV1-65	IGH	V	FALSE	1599
+Mus musculus functional	IGHV1-66	IGH	V	TRUE	1600
+Mus musculus functional	IGHV1-67	IGH	V	TRUE	1601
+Mus musculus non-functional	IGHV1-68	IGH	V	FALSE	1602
+Mus musculus functional	IGHV1-69	IGH	V	TRUE	1603
+Mus musculus functional	IGHV1-7	IGH	V	TRUE	1604
+Mus musculus non-functional	IGHV1-70	IGH	V	FALSE	1605
+Mus musculus functional	IGHV1-71	IGH	V	TRUE	1606
+Mus musculus functional	IGHV1-72	IGH	V	TRUE	1607
+Mus musculus non-functional	IGHV1-73	IGH	V	FALSE	1608
+Mus musculus functional	IGHV1-74	IGH	V	TRUE	1609
+Mus musculus functional	IGHV1-75	IGH	V	TRUE	1610
+Mus musculus functional	IGHV1-76	IGH	V	TRUE	1611
+Mus musculus functional	IGHV1-77	IGH	V	TRUE	1612
+Mus musculus functional	IGHV1-78	IGH	V	TRUE	1613
+Mus musculus non-functional	IGHV1-79	IGH	V	FALSE	1614
+Mus musculus non-functional	IGHV1-8	IGH	V	FALSE	1615
+Mus musculus functional	IGHV1-80	IGH	V	TRUE	1616
+Mus musculus functional	IGHV1-81	IGH	V	TRUE	1617
+Mus musculus functional	IGHV1-82	IGH	V	TRUE	1618
+Mus musculus non-functional	IGHV1-83	IGH	V	FALSE	1619
+Mus musculus functional	IGHV1-84	IGH	V	TRUE	1620
+Mus musculus functional	IGHV1-85	IGH	V	TRUE	1621
+Mus musculus non-functional	IGHV1-86	IGH	V	FALSE	1622
+Mus musculus functional	IGHV1-9	IGH	V	TRUE	1623
+Mus musculus functional	IGHV10-1	IGH	V	TRUE	1624
+Mus musculus non-functional	IGHV10-2	IGH	V	FALSE	1625
+Mus musculus functional	IGHV10-3	IGH	V	TRUE	1626
+Mus musculus non-functional	IGHV10-4	IGH	V	FALSE	1627
+Mus musculus functional	IGHV10S3	IGH	V	TRUE	1628
+Mus musculus non-functional	IGHV10S4	IGH	V	FALSE	1629
+Mus musculus non-functional	IGHV10S5	IGH	V	FALSE	1630
+Mus musculus functional	IGHV11-1	IGH	V	TRUE	1631
+Mus musculus functional	IGHV11-2	IGH	V	TRUE	1632
+Mus musculus non-functional	IGHV12-1	IGH	V	FALSE	1633
+Mus musculus functional	IGHV12-1-1	IGH	V	TRUE	1634
+Mus musculus non-functional	IGHV12-1-2	IGH	V	FALSE	1635
+Mus musculus non-functional	IGHV12-2	IGH	V	FALSE	1636
+Mus musculus non-functional	IGHV12-2-1	IGH	V	FALSE	1637
+Mus musculus functional	IGHV12-3	IGH	V	TRUE	1638
+Mus musculus non-functional	IGHV12S2	IGH	V	FALSE	1639
+Mus musculus non-functional	IGHV13-1	IGH	V	FALSE	1640
+Mus musculus functional	IGHV13-2	IGH	V	TRUE	1641
+Mus musculus functional	IGHV14-1	IGH	V	TRUE	1642
+Mus musculus functional	IGHV14-2	IGH	V	TRUE	1643
+Mus musculus functional	IGHV14-3	IGH	V	TRUE	1644
+Mus musculus functional	IGHV14-4	IGH	V	TRUE	1645
+Mus musculus non-functional	IGHV14S4	IGH	V	FALSE	1646
+Mus musculus non-functional	IGHV15-1	IGH	V	FALSE	1647
+Mus musculus functional	IGHV15-2	IGH	V	TRUE	1648
+Mus musculus functional	IGHV16-1	IGH	V	TRUE	1649
+Mus musculus non-functional	IGHV1S10	IGH	V	FALSE	1650
+Mus musculus non-functional	IGHV1S100	IGH	V	FALSE	1651
+Mus musculus non-functional	IGHV1S101	IGH	V	FALSE	1652
+Mus musculus non-functional	IGHV1S103	IGH	V	FALSE	1653
+Mus musculus non-functional	IGHV1S107	IGH	V	FALSE	1654
+Mus musculus non-functional	IGHV1S108	IGH	V	FALSE	1655
+Mus musculus non-functional	IGHV1S11	IGH	V	FALSE	1656
+Mus musculus non-functional	IGHV1S110	IGH	V	FALSE	1657
+Mus musculus non-functional	IGHV1S111	IGH	V	FALSE	1658
+Mus musculus non-functional	IGHV1S112	IGH	V	FALSE	1659
+Mus musculus non-functional	IGHV1S113	IGH	V	FALSE	1660
+Mus musculus non-functional	IGHV1S118	IGH	V	FALSE	1661
+Mus musculus functional	IGHV1S12	IGH	V	TRUE	1662
+Mus musculus non-functional	IGHV1S120	IGH	V	FALSE	1663
+Mus musculus non-functional	IGHV1S121	IGH	V	FALSE	1664
+Mus musculus non-functional	IGHV1S122	IGH	V	FALSE	1665
+Mus musculus non-functional	IGHV1S124	IGH	V	FALSE	1666
+Mus musculus non-functional	IGHV1S126	IGH	V	FALSE	1667
+Mus musculus non-functional	IGHV1S127	IGH	V	FALSE	1668
+Mus musculus non-functional	IGHV1S130	IGH	V	FALSE	1669
+Mus musculus non-functional	IGHV1S132	IGH	V	FALSE	1670
+Mus musculus non-functional	IGHV1S134	IGH	V	FALSE	1671
+Mus musculus non-functional	IGHV1S135	IGH	V	FALSE	1672
+Mus musculus non-functional	IGHV1S136	IGH	V	FALSE	1673
+Mus musculus non-functional	IGHV1S137	IGH	V	FALSE	1674
+Mus musculus functional	IGHV1S14	IGH	V	TRUE	1675
+Mus musculus non-functional	IGHV1S15	IGH	V	FALSE	1676
+Mus musculus non-functional	IGHV1S16	IGH	V	FALSE	1677
+Mus musculus non-functional	IGHV1S17	IGH	V	FALSE	1678
+Mus musculus non-functional	IGHV1S18	IGH	V	FALSE	1679
+Mus musculus non-functional	IGHV1S19	IGH	V	FALSE	1680
+Mus musculus functional	IGHV1S20	IGH	V	TRUE	1681
+Mus musculus functional	IGHV1S21	IGH	V	TRUE	1682
+Mus musculus functional	IGHV1S22	IGH	V	TRUE	1683
+Mus musculus functional	IGHV1S26	IGH	V	TRUE	1684
+Mus musculus non-functional	IGHV1S28	IGH	V	FALSE	1685
+Mus musculus functional	IGHV1S29	IGH	V	TRUE	1686
+Mus musculus functional	IGHV1S30	IGH	V	TRUE	1687
+Mus musculus functional	IGHV1S31	IGH	V	TRUE	1688
+Mus musculus functional	IGHV1S32	IGH	V	TRUE	1689
+Mus musculus functional	IGHV1S33	IGH	V	TRUE	1690
+Mus musculus functional	IGHV1S34	IGH	V	TRUE	1691
+Mus musculus functional	IGHV1S35	IGH	V	TRUE	1692
+Mus musculus functional	IGHV1S36	IGH	V	TRUE	1693
+Mus musculus functional	IGHV1S37	IGH	V	TRUE	1694
+Mus musculus functional	IGHV1S40	IGH	V	TRUE	1695
+Mus musculus functional	IGHV1S41	IGH	V	TRUE	1696
+Mus musculus non-functional	IGHV1S44	IGH	V	FALSE	1697
+Mus musculus functional	IGHV1S45	IGH	V	TRUE	1698
+Mus musculus non-functional	IGHV1S46	IGH	V	FALSE	1699
+Mus musculus non-functional	IGHV1S47	IGH	V	FALSE	1700
+Mus musculus functional	IGHV1S49	IGH	V	TRUE	1701
+Mus musculus functional	IGHV1S5	IGH	V	TRUE	1702
+Mus musculus functional	IGHV1S50	IGH	V	TRUE	1703
+Mus musculus non-functional	IGHV1S51	IGH	V	FALSE	1704
+Mus musculus functional	IGHV1S52	IGH	V	TRUE	1705
+Mus musculus functional	IGHV1S53	IGH	V	TRUE	1706
+Mus musculus functional	IGHV1S55	IGH	V	TRUE	1707
+Mus musculus functional	IGHV1S56	IGH	V	TRUE	1708
+Mus musculus non-functional	IGHV1S57	IGH	V	FALSE	1709
+Mus musculus functional	IGHV1S61	IGH	V	TRUE	1710
+Mus musculus non-functional	IGHV1S65	IGH	V	FALSE	1711
+Mus musculus non-functional	IGHV1S67	IGH	V	FALSE	1712
+Mus musculus non-functional	IGHV1S68	IGH	V	FALSE	1713
+Mus musculus non-functional	IGHV1S70	IGH	V	FALSE	1714
+Mus musculus non-functional	IGHV1S72	IGH	V	FALSE	1715
+Mus musculus non-functional	IGHV1S73	IGH	V	FALSE	1716
+Mus musculus non-functional	IGHV1S74	IGH	V	FALSE	1717
+Mus musculus non-functional	IGHV1S75	IGH	V	FALSE	1718
+Mus musculus non-functional	IGHV1S78	IGH	V	FALSE	1719
+Mus musculus non-functional	IGHV1S81	IGH	V	FALSE	1720
+Mus musculus non-functional	IGHV1S82	IGH	V	FALSE	1721
+Mus musculus non-functional	IGHV1S83	IGH	V	FALSE	1722
+Mus musculus non-functional	IGHV1S84	IGH	V	FALSE	1723
+Mus musculus non-functional	IGHV1S87	IGH	V	FALSE	1724
+Mus musculus non-functional	IGHV1S88	IGH	V	FALSE	1725
+Mus musculus non-functional	IGHV1S9	IGH	V	FALSE	1726
+Mus musculus non-functional	IGHV1S92	IGH	V	FALSE	1727
+Mus musculus non-functional	IGHV1S95	IGH	V	FALSE	1728
+Mus musculus non-functional	IGHV1S96	IGH	V	FALSE	1729
+Mus musculus non-functional	IGHV2-1	IGH	V	FALSE	1730
+Mus musculus functional	IGHV2-2	IGH	V	TRUE	1731
+Mus musculus non-functional	IGHV2-2-1	IGH	V	FALSE	1732
+Mus musculus functional	IGHV2-2-2	IGH	V	TRUE	1733
+Mus musculus functional	IGHV2-3	IGH	V	TRUE	1734
+Mus musculus functional	IGHV2-3-1	IGH	V	TRUE	1735
+Mus musculus functional	IGHV2-4	IGH	V	TRUE	1736
+Mus musculus functional	IGHV2-4-1	IGH	V	TRUE	1737
+Mus musculus functional	IGHV2-5	IGH	V	TRUE	1738
+Mus musculus functional	IGHV2-5-1	IGH	V	TRUE	1739
+Mus musculus functional	IGHV2-6	IGH	V	TRUE	1740
+Mus musculus functional	IGHV2-6-1	IGH	V	TRUE	1741
+Mus musculus functional	IGHV2-6-2	IGH	V	TRUE	1742
+Mus musculus functional	IGHV2-6-3	IGH	V	TRUE	1743
+Mus musculus functional	IGHV2-6-4	IGH	V	TRUE	1744
+Mus musculus functional	IGHV2-6-5	IGH	V	TRUE	1745
+Mus musculus functional	IGHV2-6-6	IGH	V	TRUE	1746
+Mus musculus functional	IGHV2-6-7	IGH	V	TRUE	1747
+Mus musculus functional	IGHV2-6-8	IGH	V	TRUE	1748
+Mus musculus functional	IGHV2-7	IGH	V	TRUE	1749
+Mus musculus non-functional	IGHV2-8	IGH	V	FALSE	1750
+Mus musculus functional	IGHV2-9	IGH	V	TRUE	1751
+Mus musculus functional	IGHV2-9-1	IGH	V	TRUE	1752
+Mus musculus functional	IGHV2S3	IGH	V	TRUE	1753
+Mus musculus functional	IGHV3-1	IGH	V	TRUE	1754
+Mus musculus functional	IGHV3-2	IGH	V	TRUE	1755
+Mus musculus functional	IGHV3-3	IGH	V	TRUE	1756
+Mus musculus functional	IGHV3-4	IGH	V	TRUE	1757
+Mus musculus functional	IGHV3-5	IGH	V	TRUE	1758
+Mus musculus functional	IGHV3-6	IGH	V	TRUE	1759
+Mus musculus non-functional	IGHV3-7	IGH	V	FALSE	1760
+Mus musculus functional	IGHV3-8	IGH	V	TRUE	1761
+Mus musculus functional	IGHV3S1	IGH	V	TRUE	1762
+Mus musculus non-functional	IGHV3S7	IGH	V	FALSE	1763
+Mus musculus functional	IGHV4-1	IGH	V	TRUE	1764
+Mus musculus functional	IGHV4-2	IGH	V	TRUE	1765
+Mus musculus non-functional	IGHV5-1	IGH	V	FALSE	1766
+Mus musculus non-functional	IGHV5-10	IGH	V	FALSE	1767
+Mus musculus non-functional	IGHV5-10-1	IGH	V	FALSE	1768
+Mus musculus non-functional	IGHV5-10-2	IGH	V	FALSE	1769
+Mus musculus non-functional	IGHV5-11	IGH	V	FALSE	1770
+Mus musculus non-functional	IGHV5-11-1	IGH	V	FALSE	1771
+Mus musculus non-functional	IGHV5-11-2	IGH	V	FALSE	1772
+Mus musculus functional	IGHV5-12	IGH	V	TRUE	1773
+Mus musculus functional	IGHV5-12-1	IGH	V	TRUE	1774
+Mus musculus functional	IGHV5-12-2	IGH	V	TRUE	1775
+Mus musculus non-functional	IGHV5-12-3	IGH	V	FALSE	1776
+Mus musculus functional	IGHV5-12-4	IGH	V	TRUE	1777
+Mus musculus non-functional	IGHV5-13	IGH	V	FALSE	1778
+Mus musculus non-functional	IGHV5-13-1	IGH	V	FALSE	1779
+Mus musculus functional	IGHV5-15	IGH	V	TRUE	1780
+Mus musculus functional	IGHV5-16	IGH	V	TRUE	1781
+Mus musculus functional	IGHV5-17	IGH	V	TRUE	1782
+Mus musculus non-functional	IGHV5-18	IGH	V	FALSE	1783
+Mus musculus non-functional	IGHV5-19	IGH	V	FALSE	1784
+Mus musculus functional	IGHV5-2	IGH	V	TRUE	1785
+Mus musculus non-functional	IGHV5-21	IGH	V	FALSE	1786
+Mus musculus non-functional	IGHV5-3	IGH	V	FALSE	1787
+Mus musculus functional	IGHV5-4	IGH	V	TRUE	1788
+Mus musculus non-functional	IGHV5-5	IGH	V	FALSE	1789
+Mus musculus non-functional	IGHV5-5-1	IGH	V	FALSE	1790
+Mus musculus functional	IGHV5-6	IGH	V	TRUE	1791
+Mus musculus functional	IGHV5-6-1	IGH	V	TRUE	1792
+Mus musculus functional	IGHV5-6-2	IGH	V	TRUE	1793
+Mus musculus functional	IGHV5-6-3	IGH	V	TRUE	1794
+Mus musculus functional	IGHV5-6-4	IGH	V	TRUE	1795
+Mus musculus functional	IGHV5-6-5	IGH	V	TRUE	1796
+Mus musculus functional	IGHV5-6-6	IGH	V	TRUE	1797
+Mus musculus non-functional	IGHV5-7	IGH	V	FALSE	1798
+Mus musculus non-functional	IGHV5-7-1	IGH	V	FALSE	1799
+Mus musculus non-functional	IGHV5-7-2	IGH	V	FALSE	1800
+Mus musculus non-functional	IGHV5-7-3	IGH	V	FALSE	1801
+Mus musculus non-functional	IGHV5-7-4	IGH	V	FALSE	1802
+Mus musculus non-functional	IGHV5-7-5	IGH	V	FALSE	1803
+Mus musculus non-functional	IGHV5-7-6	IGH	V	FALSE	1804
+Mus musculus non-functional	IGHV5-8	IGH	V	FALSE	1805
+Mus musculus non-functional	IGHV5-8-1	IGH	V	FALSE	1806
+Mus musculus non-functional	IGHV5-8-2	IGH	V	FALSE	1807
+Mus musculus non-functional	IGHV5-8-3	IGH	V	FALSE	1808
+Mus musculus functional	IGHV5-9	IGH	V	TRUE	1809
+Mus musculus functional	IGHV5-9-1	IGH	V	TRUE	1810
+Mus musculus functional	IGHV5-9-2	IGH	V	TRUE	1811
+Mus musculus functional	IGHV5-9-3	IGH	V	TRUE	1812
+Mus musculus functional	IGHV5-9-4	IGH	V	TRUE	1813
+Mus musculus functional	IGHV5-9-5	IGH	V	TRUE	1814
+Mus musculus non-functional	IGHV5S12	IGH	V	FALSE	1815
+Mus musculus non-functional	IGHV5S21	IGH	V	FALSE	1816
+Mus musculus non-functional	IGHV5S24	IGH	V	FALSE	1817
+Mus musculus functional	IGHV5S4	IGH	V	TRUE	1818
+Mus musculus functional	IGHV5S9	IGH	V	TRUE	1819
+Mus musculus non-functional	IGHV6-1	IGH	V	FALSE	1820
+Mus musculus non-functional	IGHV6-1-1	IGH	V	FALSE	1821
+Mus musculus non-functional	IGHV6-2	IGH	V	FALSE	1822
+Mus musculus functional	IGHV6-3	IGH	V	TRUE	1823
+Mus musculus functional	IGHV6-4	IGH	V	TRUE	1824
+Mus musculus functional	IGHV6-5	IGH	V	TRUE	1825
+Mus musculus functional	IGHV6-6	IGH	V	TRUE	1826
+Mus musculus functional	IGHV6-7	IGH	V	TRUE	1827
+Mus musculus non-functional	IGHV6S2	IGH	V	FALSE	1828
+Mus musculus non-functional	IGHV6S3	IGH	V	FALSE	1829
+Mus musculus non-functional	IGHV6S4	IGH	V	FALSE	1830
+Mus musculus functional	IGHV7-1	IGH	V	TRUE	1831
+Mus musculus functional	IGHV7-2	IGH	V	TRUE	1832
+Mus musculus functional	IGHV7-3	IGH	V	TRUE	1833
+Mus musculus functional	IGHV7-4	IGH	V	TRUE	1834
+Mus musculus non-functional	IGHV8-1	IGH	V	FALSE	1835
+Mus musculus non-functional	IGHV8-10	IGH	V	FALSE	1836
+Mus musculus functional	IGHV8-11	IGH	V	TRUE	1837
+Mus musculus functional	IGHV8-12	IGH	V	TRUE	1838
+Mus musculus non-functional	IGHV8-13	IGH	V	FALSE	1839
+Mus musculus non-functional	IGHV8-14	IGH	V	FALSE	1840
+Mus musculus non-functional	IGHV8-15	IGH	V	FALSE	1841
+Mus musculus non-functional	IGHV8-16	IGH	V	FALSE	1842
+Mus musculus non-functional	IGHV8-2	IGH	V	FALSE	1843
+Mus musculus non-functional	IGHV8-3	IGH	V	FALSE	1844
+Mus musculus functional	IGHV8-4	IGH	V	TRUE	1845
+Mus musculus functional	IGHV8-5	IGH	V	TRUE	1846
+Mus musculus functional	IGHV8-6	IGH	V	TRUE	1847
+Mus musculus non-functional	IGHV8-7	IGH	V	FALSE	1848
+Mus musculus functional	IGHV8-8	IGH	V	TRUE	1849
+Mus musculus non-functional	IGHV8-8-1	IGH	V	FALSE	1850
+Mus musculus non-functional	IGHV8-9	IGH	V	FALSE	1851
+Mus musculus non-functional	IGHV8S1	IGH	V	FALSE	1852
+Mus musculus non-functional	IGHV8S2	IGH	V	FALSE	1853
+Mus musculus non-functional	IGHV8S6	IGH	V	FALSE	1854
+Mus musculus non-functional	IGHV8S9	IGH	V	FALSE	1855
+Mus musculus functional	IGHV9-1	IGH	V	TRUE	1856
+Mus musculus functional	IGHV9-2	IGH	V	TRUE	1857
+Mus musculus functional	IGHV9-2-1	IGH	V	TRUE	1858
+Mus musculus functional	IGHV9-3	IGH	V	TRUE	1859
+Mus musculus functional	IGHV9-3-1	IGH	V	TRUE	1860
+Mus musculus functional	IGHV9-4	IGH	V	TRUE	1861
+Mus musculus functional	IGHV9S7	IGH	V	TRUE	1862
+Mus musculus functional	IGHV9S8	IGH	V	TRUE	1863
+Mus musculus functional	IGKJ1	IGK	J	TRUE	1864
+Mus musculus functional	IGKJ2	IGK	J	TRUE	1865
+Mus musculus non-functional	IGKJ3	IGK	J	FALSE	1866
+Mus musculus functional	IGKJ4	IGK	J	TRUE	1867
+Mus musculus functional	IGKJ5	IGK	J	TRUE	1868
+Mus musculus non-functional	IGKV1-108	IGK	V	FALSE	1869
+Mus musculus functional	IGKV1-110	IGK	V	TRUE	1870
+Mus musculus non-functional	IGKV1-115	IGK	V	FALSE	1871
+Mus musculus functional	IGKV1-117	IGK	V	TRUE	1872
+Mus musculus functional	IGKV1-122	IGK	V	TRUE	1873
+Mus musculus non-functional	IGKV1-131	IGK	V	FALSE	1874
+Mus musculus functional	IGKV1-132	IGK	V	TRUE	1875
+Mus musculus functional	IGKV1-133	IGK	V	TRUE	1876
+Mus musculus functional	IGKV1-135	IGK	V	TRUE	1877
+Mus musculus non-functional	IGKV1-136	IGK	V	FALSE	1878
+Mus musculus non-functional	IGKV1-35	IGK	V	FALSE	1879
+Mus musculus functional	IGKV1-88	IGK	V	TRUE	1880
+Mus musculus functional	IGKV1-99	IGK	V	TRUE	1881
+Mus musculus non-functional	IGKV1/OR16-1	IGK	V	FALSE	1882
+Mus musculus non-functional	IGKV1/OR19-1	IGK	V	FALSE	1883
+Mus musculus non-functional	IGKV1/OR6-1	IGK	V	FALSE	1884
+Mus musculus functional	IGKV10-94	IGK	V	TRUE	1885
+Mus musculus functional	IGKV10-95	IGK	V	TRUE	1886
+Mus musculus functional	IGKV10-96	IGK	V	TRUE	1887
+Mus musculus non-functional	IGKV11-106	IGK	V	FALSE	1888
+Mus musculus non-functional	IGKV11-114	IGK	V	FALSE	1889
+Mus musculus non-functional	IGKV11-118	IGK	V	FALSE	1890
+Mus musculus functional	IGKV11-125	IGK	V	TRUE	1891
+Mus musculus functional	IGKV12-38	IGK	V	TRUE	1892
+Mus musculus non-functional	IGKV12-40	IGK	V	FALSE	1893
+Mus musculus functional	IGKV12-41	IGK	V	TRUE	1894
+Mus musculus non-functional	IGKV12-42	IGK	V	FALSE	1895
+Mus musculus functional	IGKV12-44	IGK	V	TRUE	1896
+Mus musculus functional	IGKV12-46	IGK	V	TRUE	1897
+Mus musculus non-functional	IGKV12-47	IGK	V	FALSE	1898
+Mus musculus non-functional	IGKV12-49	IGK	V	FALSE	1899
+Mus musculus non-functional	IGKV12-66	IGK	V	FALSE	1900
+Mus musculus non-functional	IGKV12-67	IGK	V	FALSE	1901
+Mus musculus functional	IGKV12-89	IGK	V	TRUE	1902
+Mus musculus functional	IGKV12-98	IGK	V	TRUE	1903
+Mus musculus functional	IGKV12-e	IGK	V	TRUE	1904
+Mus musculus non-functional	IGKV13-54-1	IGK	V	FALSE	1905
+Mus musculus non-functional	IGKV13-55-1	IGK	V	FALSE	1906
+Mus musculus non-functional	IGKV13-56-1	IGK	V	FALSE	1907
+Mus musculus non-functional	IGKV13-57-1	IGK	V	FALSE	1908
+Mus musculus non-functional	IGKV13-57-2	IGK	V	FALSE	1909
+Mus musculus non-functional	IGKV13-61-1	IGK	V	FALSE	1910
+Mus musculus non-functional	IGKV13-62-1	IGK	V	FALSE	1911
+Mus musculus non-functional	IGKV13-64	IGK	V	FALSE	1912
+Mus musculus non-functional	IGKV13-71-1	IGK	V	FALSE	1913
+Mus musculus non-functional	IGKV13-73-1	IGK	V	FALSE	1914
+Mus musculus non-functional	IGKV13-74-1	IGK	V	FALSE	1915
+Mus musculus non-functional	IGKV13-76	IGK	V	FALSE	1916
+Mus musculus non-functional	IGKV13-78-1	IGK	V	FALSE	1917
+Mus musculus non-functional	IGKV13-80-1	IGK	V	FALSE	1918
+Mus musculus non-functional	IGKV13-82	IGK	V	FALSE	1919
+Mus musculus functional	IGKV13-84	IGK	V	TRUE	1920
+Mus musculus functional	IGKV13-85	IGK	V	TRUE	1921
+Mus musculus non-functional	IGKV13-87	IGK	V	FALSE	1922
+Mus musculus non-functional	IGKV13-89-1	IGK	V	FALSE	1923
+Mus musculus functional	IGKV14-100	IGK	V	TRUE	1924
+Mus musculus functional	IGKV14-111	IGK	V	TRUE	1925
+Mus musculus non-functional	IGKV14-118-1	IGK	V	FALSE	1926
+Mus musculus non-functional	IGKV14-118-2	IGK	V	FALSE	1927
+Mus musculus functional	IGKV14-126	IGK	V	TRUE	1928
+Mus musculus non-functional	IGKV14-126-1	IGK	V	FALSE	1929
+Mus musculus functional	IGKV14-130	IGK	V	TRUE	1930
+Mus musculus non-functional	IGKV14-134-1	IGK	V	FALSE	1931
+Mus musculus non-functional	IGKV14/OR16-2	IGK	V	FALSE	1932
+Mus musculus non-functional	IGKV14/OR6-2	IGK	V	FALSE	1933
+Mus musculus non-functional	IGKV14/OR6-3	IGK	V	FALSE	1934
+Mus musculus non-functional	IGKV15-101	IGK	V	FALSE	1935
+Mus musculus non-functional	IGKV15-101-1	IGK	V	FALSE	1936
+Mus musculus non-functional	IGKV15-102	IGK	V	FALSE	1937
+Mus musculus non-functional	IGKV15-103	IGK	V	FALSE	1938
+Mus musculus non-functional	IGKV15-97	IGK	V	FALSE	1939
+Mus musculus functional	IGKV16-104	IGK	V	TRUE	1940
+Mus musculus functional	IGKV17-121	IGK	V	TRUE	1941
+Mus musculus functional	IGKV17-127	IGK	V	TRUE	1942
+Mus musculus non-functional	IGKV17-134	IGK	V	FALSE	1943
+Mus musculus non-functional	IGKV17/OR16-3	IGK	V	FALSE	1944
+Mus musculus non-functional	IGKV17/OR19-2	IGK	V	FALSE	1945
+Mus musculus functional	IGKV18-36	IGK	V	TRUE	1946
+Mus musculus functional	IGKV19-93	IGK	V	TRUE	1947
+Mus musculus non-functional	IGKV2-105	IGK	V	FALSE	1948
+Mus musculus non-functional	IGKV2-107	IGK	V	FALSE	1949
+Mus musculus functional	IGKV2-109	IGK	V	TRUE	1950
+Mus musculus functional	IGKV2-112	IGK	V	TRUE	1951
+Mus musculus non-functional	IGKV2-113	IGK	V	FALSE	1952
+Mus musculus non-functional	IGKV2-116	IGK	V	FALSE	1953
+Mus musculus functional	IGKV2-137	IGK	V	TRUE	1954
+Mus musculus non-functional	IGKV2-93-1	IGK	V	FALSE	1955
+Mus musculus non-functional	IGKV2-95-1	IGK	V	FALSE	1956
+Mus musculus non-functional	IGKV2-95-2	IGK	V	FALSE	1957
+Mus musculus functional	IGKV2-a	IGK	V	TRUE	1958
+Mus musculus non-functional	IGKV2-f	IGK	V	FALSE	1959
+Mus musculus functional	IGKV20-101-2	IGK	V	TRUE	1960
+Mus musculus functional	IGKV3-1	IGK	V	TRUE	1961
+Mus musculus functional	IGKV3-10	IGK	V	TRUE	1962
+Mus musculus non-functional	IGKV3-11	IGK	V	FALSE	1963
+Mus musculus functional	IGKV3-12	IGK	V	TRUE	1964
+Mus musculus non-functional	IGKV3-12-1	IGK	V	FALSE	1965
+Mus musculus functional	IGKV3-2	IGK	V	TRUE	1966
+Mus musculus functional	IGKV3-3	IGK	V	TRUE	1967
+Mus musculus functional	IGKV3-4	IGK	V	TRUE	1968
+Mus musculus functional	IGKV3-5	IGK	V	TRUE	1969
+Mus musculus non-functional	IGKV3-6	IGK	V	FALSE	1970
+Mus musculus functional	IGKV3-7	IGK	V	TRUE	1971
+Mus musculus non-functional	IGKV3-8	IGK	V	FALSE	1972
+Mus musculus functional	IGKV3-9	IGK	V	TRUE	1973
+Mus musculus functional	IGKV4-50	IGK	V	TRUE	1974
+Mus musculus functional	IGKV4-51	IGK	V	TRUE	1975
+Mus musculus non-functional	IGKV4-52	IGK	V	FALSE	1976
+Mus musculus functional	IGKV4-53	IGK	V	TRUE	1977
+Mus musculus non-functional	IGKV4-54	IGK	V	FALSE	1978
+Mus musculus functional	IGKV4-55	IGK	V	TRUE	1979
+Mus musculus non-functional	IGKV4-56	IGK	V	FALSE	1980
+Mus musculus functional	IGKV4-57	IGK	V	TRUE	1981
+Mus musculus functional	IGKV4-57-1	IGK	V	TRUE	1982
+Mus musculus functional	IGKV4-58	IGK	V	TRUE	1983
+Mus musculus functional	IGKV4-59	IGK	V	TRUE	1984
+Mus musculus non-functional	IGKV4-60	IGK	V	FALSE	1985
+Mus musculus functional	IGKV4-61	IGK	V	TRUE	1986
+Mus musculus non-functional	IGKV4-62	IGK	V	FALSE	1987
+Mus musculus functional	IGKV4-63	IGK	V	TRUE	1988
+Mus musculus non-functional	IGKV4-65	IGK	V	FALSE	1989
+Mus musculus functional	IGKV4-68	IGK	V	TRUE	1990
+Mus musculus functional	IGKV4-69	IGK	V	TRUE	1991
+Mus musculus functional	IGKV4-70	IGK	V	TRUE	1992
+Mus musculus functional	IGKV4-71	IGK	V	TRUE	1993
+Mus musculus functional	IGKV4-72	IGK	V	TRUE	1994
+Mus musculus functional	IGKV4-73	IGK	V	TRUE	1995
+Mus musculus functional	IGKV4-74	IGK	V	TRUE	1996
+Mus musculus non-functional	IGKV4-75	IGK	V	FALSE	1997
+Mus musculus non-functional	IGKV4-77	IGK	V	FALSE	1998
+Mus musculus functional	IGKV4-78	IGK	V	TRUE	1999
+Mus musculus functional	IGKV4-79	IGK	V	TRUE	2000
+Mus musculus functional	IGKV4-80	IGK	V	TRUE	2001
+Mus musculus functional	IGKV4-81	IGK	V	TRUE	2002
+Mus musculus non-functional	IGKV4-83	IGK	V	FALSE	2003
+Mus musculus functional	IGKV4-86	IGK	V	TRUE	2004
+Mus musculus functional	IGKV4-90	IGK	V	TRUE	2005
+Mus musculus functional	IGKV4-91	IGK	V	TRUE	2006
+Mus musculus functional	IGKV4-92	IGK	V	TRUE	2007
+Mus musculus functional	IGKV5-37	IGK	V	TRUE	2008
+Mus musculus functional	IGKV5-39	IGK	V	TRUE	2009
+Mus musculus non-functional	IGKV5-40-1	IGK	V	FALSE	2010
+Mus musculus functional	IGKV5-43	IGK	V	TRUE	2011
+Mus musculus functional	IGKV5-45	IGK	V	TRUE	2012
+Mus musculus functional	IGKV5-48	IGK	V	TRUE	2013
+Mus musculus non-functional	IGKV6-13	IGK	V	FALSE	2014
+Mus musculus functional	IGKV6-14	IGK	V	TRUE	2015
+Mus musculus functional	IGKV6-15	IGK	V	TRUE	2016
+Mus musculus functional	IGKV6-17	IGK	V	TRUE	2017
+Mus musculus functional	IGKV6-20	IGK	V	TRUE	2018
+Mus musculus functional	IGKV6-23	IGK	V	TRUE	2019
+Mus musculus functional	IGKV6-25	IGK	V	TRUE	2020
+Mus musculus functional	IGKV6-29	IGK	V	TRUE	2021
+Mus musculus functional	IGKV6-32	IGK	V	TRUE	2022
+Mus musculus functional	IGKV6-b	IGK	V	TRUE	2023
+Mus musculus functional	IGKV6-c	IGK	V	TRUE	2024
+Mus musculus functional	IGKV6-d	IGK	V	TRUE	2025
+Mus musculus functional	IGKV7-33	IGK	V	TRUE	2026
+Mus musculus functional	IGKV8-16	IGK	V	TRUE	2027
+Mus musculus non-functional	IGKV8-18	IGK	V	FALSE	2028
+Mus musculus functional	IGKV8-19	IGK	V	TRUE	2029
+Mus musculus functional	IGKV8-21	IGK	V	TRUE	2030
+Mus musculus non-functional	IGKV8-22	IGK	V	FALSE	2031
+Mus musculus non-functional	IGKV8-23-1	IGK	V	FALSE	2032
+Mus musculus functional	IGKV8-24	IGK	V	TRUE	2033
+Mus musculus non-functional	IGKV8-26	IGK	V	FALSE	2034
+Mus musculus functional	IGKV8-27	IGK	V	TRUE	2035
+Mus musculus functional	IGKV8-28	IGK	V	TRUE	2036
+Mus musculus functional	IGKV8-30	IGK	V	TRUE	2037
+Mus musculus non-functional	IGKV8-31	IGK	V	FALSE	2038
+Mus musculus functional	IGKV8-34	IGK	V	TRUE	2039
+Mus musculus non-functional	IGKV9-119	IGK	V	FALSE	2040
+Mus musculus functional	IGKV9-120	IGK	V	TRUE	2041
+Mus musculus functional	IGKV9-123	IGK	V	TRUE	2042
+Mus musculus functional	IGKV9-124	IGK	V	TRUE	2043
+Mus musculus non-functional	IGKV9-128	IGK	V	FALSE	2044
+Mus musculus non-functional	IGKV9-129	IGK	V	FALSE	2045
+Mus musculus functional	IGLJ1	IGL	J	TRUE	2046
+Mus musculus functional	IGLJ2	IGL	J	TRUE	2047
+Mus musculus functional	IGLJ3	IGL	J	TRUE	2048
+Mus musculus non-functional	IGLJ3P	IGL	J	FALSE	2049
+Mus musculus non-functional	IGLJ4	IGL	J	FALSE	2050
+Mus musculus functional	IGLV1	IGL	V	TRUE	2051
+Mus musculus functional	IGLV2	IGL	V	TRUE	2052
+Mus musculus functional	IGLV3	IGL	V	TRUE	2053
+Mus musculus non-functional	IGLV4	IGL	V	FALSE	2054
+Mus musculus non-functional	IGLV5	IGL	V	FALSE	2055
+Mus musculus non-functional	IGLV6	IGL	V	FALSE	2056
+Mus musculus non-functional	IGLV7	IGL	V	FALSE	2057
+Mus musculus non-functional	IGLV8	IGL	V	FALSE	2058
+Mus musculus non-functional	TRAJ1	TRA	J	FALSE	2059
+Mus musculus functional	TRAJ11	TRA	J	TRUE	2060
+Mus musculus functional	TRAJ12	TRA	J	TRUE	2061
+Mus musculus functional	TRAJ13	TRA	J	TRUE	2062
+Mus musculus non-functional	TRAJ14	TRA	J	FALSE	2063
+Mus musculus functional	TRAJ15	TRA	J	TRUE	2064
+Mus musculus functional	TRAJ16	TRA	J	TRUE	2065
+Mus musculus functional	TRAJ17	TRA	J	TRUE	2066
+Mus musculus functional	TRAJ18	TRA	J	TRUE	2067
+Mus musculus non-functional	TRAJ19	TRA	J	FALSE	2068
+Mus musculus functional	TRAJ2	TRA	J	TRUE	2069
+Mus musculus non-functional	TRAJ20	TRA	J	FALSE	2070
+Mus musculus functional	TRAJ21	TRA	J	TRUE	2071
+Mus musculus functional	TRAJ22	TRA	J	TRUE	2072
+Mus musculus functional	TRAJ23	TRA	J	TRUE	2073
+Mus musculus functional	TRAJ24	TRA	J	TRUE	2074
+Mus musculus non-functional	TRAJ25	TRA	J	FALSE	2075
+Mus musculus functional	TRAJ26	TRA	J	TRUE	2076
+Mus musculus functional	TRAJ27	TRA	J	TRUE	2077
+Mus musculus functional	TRAJ28	TRA	J	TRUE	2078
+Mus musculus non-functional	TRAJ29	TRA	J	FALSE	2079
+Mus musculus non-functional	TRAJ3	TRA	J	FALSE	2080
+Mus musculus functional	TRAJ30	TRA	J	TRUE	2081
+Mus musculus functional	TRAJ31	TRA	J	TRUE	2082
+Mus musculus functional	TRAJ32	TRA	J	TRUE	2083
+Mus musculus functional	TRAJ33	TRA	J	TRUE	2084
+Mus musculus functional	TRAJ34	TRA	J	TRUE	2085
+Mus musculus functional	TRAJ35	TRA	J	TRUE	2086
+Mus musculus non-functional	TRAJ36	TRA	J	FALSE	2087
+Mus musculus functional	TRAJ37	TRA	J	TRUE	2088
+Mus musculus functional	TRAJ38	TRA	J	TRUE	2089
+Mus musculus functional	TRAJ39	TRA	J	TRUE	2090
+Mus musculus non-functional	TRAJ4	TRA	J	FALSE	2091
+Mus musculus functional	TRAJ40	TRA	J	TRUE	2092
+Mus musculus non-functional	TRAJ41	TRA	J	FALSE	2093
+Mus musculus functional	TRAJ42	TRA	J	TRUE	2094
+Mus musculus functional	TRAJ43	TRA	J	TRUE	2095
+Mus musculus non-functional	TRAJ44	TRA	J	FALSE	2096
+Mus musculus functional	TRAJ45	TRA	J	TRUE	2097
+Mus musculus non-functional	TRAJ46	TRA	J	FALSE	2098
+Mus musculus non-functional	TRAJ47	TRA	J	FALSE	2099
+Mus musculus functional	TRAJ48	TRA	J	TRUE	2100
+Mus musculus functional	TRAJ49	TRA	J	TRUE	2101
+Mus musculus functional	TRAJ5	TRA	J	TRUE	2102
+Mus musculus functional	TRAJ50	TRA	J	TRUE	2103
+Mus musculus non-functional	TRAJ51	TRA	J	FALSE	2104
+Mus musculus functional	TRAJ52	TRA	J	TRUE	2105
+Mus musculus functional	TRAJ53	TRA	J	TRUE	2106
+Mus musculus non-functional	TRAJ54	TRA	J	FALSE	2107
+Mus musculus non-functional	TRAJ55	TRA	J	FALSE	2108
+Mus musculus functional	TRAJ56	TRA	J	TRUE	2109
+Mus musculus functional	TRAJ57	TRA	J	TRUE	2110
+Mus musculus functional	TRAJ58	TRA	J	TRUE	2111
+Mus musculus non-functional	TRAJ59	TRA	J	FALSE	2112
+Mus musculus functional	TRAJ6	TRA	J	TRUE	2113
+Mus musculus non-functional	TRAJ60	TRA	J	FALSE	2114
+Mus musculus non-functional	TRAJ61	TRA	J	FALSE	2115
+Mus musculus non-functional	TRAJ7	TRA	J	FALSE	2116
+Mus musculus non-functional	TRAJ8	TRA	J	FALSE	2117
+Mus musculus functional	TRAJ9	TRA	J	TRUE	2118
+Mus musculus functional	TRAV1	TRA	V	TRUE	2119
+Mus musculus functional	TRAV10	TRA	V	TRUE	2120
+Mus musculus functional	TRAV10D	TRA	V	TRUE	2121
+Mus musculus functional	TRAV10N	TRA	V	TRUE	2122
+Mus musculus functional	TRAV11	TRA	V	TRUE	2123
+Mus musculus functional	TRAV11D	TRA	V	TRUE	2124
+Mus musculus non-functional	TRAV11N	TRA	V	FALSE	2125
+Mus musculus functional	TRAV12-1	TRA	V	TRUE	2126
+Mus musculus functional	TRAV12-2	TRA	V	TRUE	2127
+Mus musculus functional	TRAV12-3	TRA	V	TRUE	2128
+Mus musculus non-functional	TRAV12-4	TRA	V	FALSE	2129
+Mus musculus functional	TRAV12D-1	TRA	V	TRUE	2130
+Mus musculus functional	TRAV12D-2	TRA	V	TRUE	2131
+Mus musculus functional	TRAV12D-3	TRA	V	TRUE	2132
+Mus musculus functional	TRAV12N-1	TRA	V	TRUE	2133
+Mus musculus functional	TRAV12N-2	TRA	V	TRUE	2134
+Mus musculus functional	TRAV12N-3	TRA	V	TRUE	2135
+Mus musculus functional	TRAV13-1	TRA	V	TRUE	2136
+Mus musculus functional	TRAV13-2	TRA	V	TRUE	2137
+Mus musculus functional	TRAV13-3	TRA	V	TRUE	2138
+Mus musculus functional	TRAV13-4/DV7	TRA	V	TRUE	2139
+Mus musculus functional	TRAV13-5	TRA	V	TRUE	2140
+Mus musculus functional	TRAV13D-1	TRA	V	TRUE	2141
+Mus musculus functional	TRAV13D-2	TRA	V	TRUE	2142
+Mus musculus functional	TRAV13D-3	TRA	V	TRUE	2143
+Mus musculus functional	TRAV13D-4	TRA	V	TRUE	2144
+Mus musculus functional	TRAV13N-1	TRA	V	TRUE	2145
+Mus musculus functional	TRAV13N-2	TRA	V	TRUE	2146
+Mus musculus functional	TRAV13N-3	TRA	V	TRUE	2147
+Mus musculus functional	TRAV13N-4	TRA	V	TRUE	2148
+Mus musculus functional	TRAV14-1	TRA	V	TRUE	2149
+Mus musculus functional	TRAV14-2	TRA	V	TRUE	2150
+Mus musculus functional	TRAV14-3	TRA	V	TRUE	2151
+Mus musculus functional	TRAV14D-1	TRA	V	TRUE	2152
+Mus musculus functional	TRAV14D-2	TRA	V	TRUE	2153
+Mus musculus functional	TRAV14D-3/DV8	TRA	V	TRUE	2154
+Mus musculus functional	TRAV14N-1	TRA	V	TRUE	2155
+Mus musculus functional	TRAV14N-2	TRA	V	TRUE	2156
+Mus musculus functional	TRAV14N-3	TRA	V	TRUE	2157
+Mus musculus functional	TRAV15-1/DV6-1	TRA	V	TRUE	2158
+Mus musculus functional	TRAV15-2/DV6-2	TRA	V	TRUE	2159
+Mus musculus non-functional	TRAV15-3	TRA	V	FALSE	2160
+Mus musculus functional	TRAV15D-1/DV6D-1	TRA	V	TRUE	2161
+Mus musculus functional	TRAV15D-2/DV6D-2	TRA	V	TRUE	2162
+Mus musculus non-functional	TRAV15D-3	TRA	V	FALSE	2163
+Mus musculus functional	TRAV15N-1	TRA	V	TRUE	2164
+Mus musculus functional	TRAV15N-2	TRA	V	TRUE	2165
+Mus musculus non-functional	TRAV15N-3	TRA	V	FALSE	2166
+Mus musculus functional	TRAV16	TRA	V	TRUE	2167
+Mus musculus functional	TRAV16D/DV11	TRA	V	TRUE	2168
+Mus musculus functional	TRAV16N	TRA	V	TRUE	2169
+Mus musculus functional	TRAV17	TRA	V	TRUE	2170
+Mus musculus non-functional	TRAV18	TRA	V	FALSE	2171
+Mus musculus functional	TRAV19	TRA	V	TRUE	2172
+Mus musculus functional	TRAV2	TRA	V	TRUE	2173
+Mus musculus non-functional	TRAV20	TRA	V	FALSE	2174
+Mus musculus functional	TRAV21/DV12	TRA	V	TRUE	2175
+Mus musculus non-functional	TRAV22	TRA	V	FALSE	2176
+Mus musculus non-functional	TRAV23	TRA	V	FALSE	2177
+Mus musculus functional	TRAV3-1	TRA	V	TRUE	2178
+Mus musculus non-functional	TRAV3-2	TRA	V	FALSE	2179
+Mus musculus functional	TRAV3-3	TRA	V	TRUE	2180
+Mus musculus functional	TRAV3-4	TRA	V	TRUE	2181
+Mus musculus non-functional	TRAV3D-2	TRA	V	FALSE	2182
+Mus musculus functional	TRAV3D-3	TRA	V	TRUE	2183
+Mus musculus non-functional	TRAV3N-2	TRA	V	FALSE	2184
+Mus musculus functional	TRAV3N-3	TRA	V	TRUE	2185
+Mus musculus non-functional	TRAV4-1	TRA	V	FALSE	2186
+Mus musculus functional	TRAV4-2	TRA	V	TRUE	2187
+Mus musculus functional	TRAV4-3	TRA	V	TRUE	2188
+Mus musculus functional	TRAV4-4/DV10	TRA	V	TRUE	2189
+Mus musculus non-functional	TRAV4D-2	TRA	V	FALSE	2190
+Mus musculus functional	TRAV4D-3	TRA	V	TRUE	2191
+Mus musculus functional	TRAV4D-4	TRA	V	TRUE	2192
+Mus musculus functional	TRAV4N-3	TRA	V	TRUE	2193
+Mus musculus functional	TRAV4N-4	TRA	V	TRUE	2194
+Mus musculus functional	TRAV5-1	TRA	V	TRUE	2195
+Mus musculus non-functional	TRAV5-2	TRA	V	FALSE	2196
+Mus musculus non-functional	TRAV5-3	TRA	V	FALSE	2197
+Mus musculus non-functional	TRAV5-4	TRA	V	FALSE	2198
+Mus musculus non-functional	TRAV5D-2	TRA	V	FALSE	2199
+Mus musculus non-functional	TRAV5D-3	TRA	V	FALSE	2200
+Mus musculus functional	TRAV5D-4	TRA	V	TRUE	2201
+Mus musculus non-functional	TRAV5N-2	TRA	V	FALSE	2202
+Mus musculus non-functional	TRAV5N-3	TRA	V	FALSE	2203
+Mus musculus functional	TRAV5N-4	TRA	V	TRUE	2204
+Mus musculus functional	TRAV6-1	TRA	V	TRUE	2205
+Mus musculus functional	TRAV6-2	TRA	V	TRUE	2206
+Mus musculus functional	TRAV6-3	TRA	V	TRUE	2207
+Mus musculus functional	TRAV6-4	TRA	V	TRUE	2208
+Mus musculus functional	TRAV6-5	TRA	V	TRUE	2209
+Mus musculus functional	TRAV6-6	TRA	V	TRUE	2210
+Mus musculus functional	TRAV6-7/DV9	TRA	V	TRUE	2211
+Mus musculus functional	TRAV6D-3	TRA	V	TRUE	2212
+Mus musculus functional	TRAV6D-4	TRA	V	TRUE	2213
+Mus musculus functional	TRAV6D-5	TRA	V	TRUE	2214
+Mus musculus functional	TRAV6D-6	TRA	V	TRUE	2215
+Mus musculus functional	TRAV6D-7	TRA	V	TRUE	2216
+Mus musculus functional	TRAV6N-5	TRA	V	TRUE	2217
+Mus musculus functional	TRAV6N-6	TRA	V	TRUE	2218
+Mus musculus functional	TRAV6N-7	TRA	V	TRUE	2219
+Mus musculus functional	TRAV7-1	TRA	V	TRUE	2220
+Mus musculus functional	TRAV7-2	TRA	V	TRUE	2221
+Mus musculus functional	TRAV7-3	TRA	V	TRUE	2222
+Mus musculus functional	TRAV7-4	TRA	V	TRUE	2223
+Mus musculus functional	TRAV7-5	TRA	V	TRUE	2224
+Mus musculus functional	TRAV7-6	TRA	V	TRUE	2225
+Mus musculus functional	TRAV7D-2	TRA	V	TRUE	2226
+Mus musculus functional	TRAV7D-3	TRA	V	TRUE	2227
+Mus musculus functional	TRAV7D-4	TRA	V	TRUE	2228
+Mus musculus functional	TRAV7D-5	TRA	V	TRUE	2229
+Mus musculus functional	TRAV7D-6	TRA	V	TRUE	2230
+Mus musculus functional	TRAV7N-4	TRA	V	TRUE	2231
+Mus musculus functional	TRAV7N-5	TRA	V	TRUE	2232
+Mus musculus functional	TRAV7N-6	TRA	V	TRUE	2233
+Mus musculus functional	TRAV8-1	TRA	V	TRUE	2234
+Mus musculus functional	TRAV8-2	TRA	V	TRUE	2235
+Mus musculus functional	TRAV8D-1	TRA	V	TRUE	2236
+Mus musculus functional	TRAV8D-2	TRA	V	TRUE	2237
+Mus musculus functional	TRAV8N-2	TRA	V	TRUE	2238
+Mus musculus functional	TRAV9-1	TRA	V	TRUE	2239
+Mus musculus functional	TRAV9-2	TRA	V	TRUE	2240
+Mus musculus functional	TRAV9-3	TRA	V	TRUE	2241
+Mus musculus functional	TRAV9-4	TRA	V	TRUE	2242
+Mus musculus functional	TRAV9D-1	TRA	V	TRUE	2243
+Mus musculus functional	TRAV9D-2	TRA	V	TRUE	2244
+Mus musculus functional	TRAV9D-3	TRA	V	TRUE	2245
+Mus musculus functional	TRAV9D-4	TRA	V	TRUE	2246
+Mus musculus non-functional	TRAV9N-1	TRA	V	FALSE	2247
+Mus musculus functional	TRAV9N-2	TRA	V	TRUE	2248
+Mus musculus functional	TRAV9N-3	TRA	V	TRUE	2249
+Mus musculus functional	TRAV9N-4	TRA	V	TRUE	2250
+Mus musculus functional	TRBD1	TRB	D	TRUE	2251
+Mus musculus functional	TRBD2	TRB	D	TRUE	2252
+Mus musculus functional	TRBJ1-1	TRB	J	TRUE	2253
+Mus musculus functional	TRBJ1-2	TRB	J	TRUE	2254
+Mus musculus functional	TRBJ1-3	TRB	J	TRUE	2255
+Mus musculus functional	TRBJ1-4	TRB	J	TRUE	2256
+Mus musculus functional	TRBJ1-5	TRB	J	TRUE	2257
+Mus musculus non-functional	TRBJ1-6	TRB	J	FALSE	2258
+Mus musculus non-functional	TRBJ1-7	TRB	J	FALSE	2259
+Mus musculus functional	TRBJ2-1	TRB	J	TRUE	2260
+Mus musculus functional	TRBJ2-2	TRB	J	TRUE	2261
+Mus musculus functional	TRBJ2-3	TRB	J	TRUE	2262
+Mus musculus functional	TRBJ2-4	TRB	J	TRUE	2263
+Mus musculus functional	TRBJ2-5	TRB	J	TRUE	2264
+Mus musculus non-functional	TRBJ2-6	TRB	J	FALSE	2265
+Mus musculus functional	TRBJ2-7	TRB	J	TRUE	2266
+Mus musculus functional	TRBV1	TRB	V	TRUE	2267
+Mus musculus non-functional	TRBV10	TRB	V	FALSE	2268
+Mus musculus non-functional	TRBV11	TRB	V	FALSE	2269
+Mus musculus functional	TRBV12-1	TRB	V	TRUE	2270
+Mus musculus functional	TRBV12-2	TRB	V	TRUE	2271
+Mus musculus non-functional	TRBV12-3	TRB	V	FALSE	2272
+Mus musculus functional	TRBV13-1	TRB	V	TRUE	2273
+Mus musculus functional	TRBV13-2	TRB	V	TRUE	2274
+Mus musculus functional	TRBV13-3	TRB	V	TRUE	2275
+Mus musculus functional	TRBV14	TRB	V	TRUE	2276
+Mus musculus functional	TRBV15	TRB	V	TRUE	2277
+Mus musculus functional	TRBV16	TRB	V	TRUE	2278
+Mus musculus functional	TRBV17	TRB	V	TRUE	2279
+Mus musculus non-functional	TRBV18	TRB	V	FALSE	2280
+Mus musculus functional	TRBV19	TRB	V	TRUE	2281
+Mus musculus functional	TRBV2	TRB	V	TRUE	2282
+Mus musculus functional	TRBV20	TRB	V	TRUE	2283
+Mus musculus non-functional	TRBV21	TRB	V	FALSE	2284
+Mus musculus non-functional	TRBV22	TRB	V	FALSE	2285
+Mus musculus functional	TRBV23	TRB	V	TRUE	2286
+Mus musculus functional	TRBV24	TRB	V	TRUE	2287
+Mus musculus non-functional	TRBV25	TRB	V	FALSE	2288
+Mus musculus functional	TRBV26	TRB	V	TRUE	2289
+Mus musculus non-functional	TRBV27	TRB	V	FALSE	2290
+Mus musculus non-functional	TRBV28	TRB	V	FALSE	2291
+Mus musculus functional	TRBV29	TRB	V	TRUE	2292
+Mus musculus functional	TRBV3	TRB	V	TRUE	2293
+Mus musculus functional	TRBV30	TRB	V	TRUE	2294
+Mus musculus functional	TRBV31	TRB	V	TRUE	2295
+Mus musculus functional	TRBV4	TRB	V	TRUE	2296
+Mus musculus functional	TRBV5	TRB	V	TRUE	2297
+Mus musculus non-functional	TRBV6	TRB	V	FALSE	2298
+Mus musculus non-functional	TRBV7	TRB	V	FALSE	2299
+Mus musculus non-functional	TRBV8	TRB	V	FALSE	2300
+Mus musculus non-functional	TRBV9	TRB	V	FALSE	2301
+Mus musculus functional	TRDD1	TRD	D	TRUE	2302
+Mus musculus functional	TRDD2	TRD	D	TRUE	2303
+Mus musculus functional	TRDJ1	TRD	J	TRUE	2304
+Mus musculus functional	TRDJ2	TRD	J	TRUE	2305
+Mus musculus functional	TRDV1	TRD	V	TRUE	2306
+Mus musculus functional	TRDV2-1	TRD	V	TRUE	2307
+Mus musculus functional	TRDV2-2	TRD	V	TRUE	2308
+Mus musculus non-functional	TRDV3	TRD	V	FALSE	2309
+Mus musculus functional	TRDV4	TRD	V	TRUE	2310
+Mus musculus functional	TRDV5	TRD	V	TRUE	2311
+Mus musculus functional	TRGJ1	TRG	J	TRUE	2312
+Mus musculus functional	TRGJ2	TRG	J	TRUE	2313
+Mus musculus functional	TRGJ3	TRG	J	TRUE	2314
+Mus musculus functional	TRGJ4	TRG	J	TRUE	2315
+Mus musculus functional	TRGV1	TRG	V	TRUE	2316
+Mus musculus functional	TRGV2	TRG	V	TRUE	2317
+Mus musculus functional	TRGV3	TRG	V	TRUE	2318
+Mus musculus functional	TRGV4	TRG	V	TRUE	2319
+Mus musculus functional	TRGV5	TRG	V	TRUE	2320
+Mus musculus functional	TRGV6	TRG	V	TRUE	2321
+Mus musculus functional	TRGV7	TRG	V	TRUE	2322
+Mus spretus functional	IGKV10-94	IGK	V	TRUE	2323
+Mus spretus functional	IGKV10-96	IGK	V	TRUE	2324
+Mus spretus non-functional	IGLJ4	IGL	J	FALSE	2325
+Mus spretus non-functional	IGLJ5	IGL	J	FALSE	2326
+Mus spretus functional	IGLV2	IGL	V	TRUE	2327
+Mus spretus functional	IGLV3	IGL	V	TRUE	2328
+Mus spretus non-functional	IGLV4	IGL	V	FALSE	2329
+Mus spretus non-functional	IGLV8	IGL	V	FALSE	2330
+Oncorhynchus mykiss functional	IGHD	IGH	D	TRUE	2331
+Oncorhynchus mykiss functional	IGHD1	IGH	D	TRUE	2332
+Oncorhynchus mykiss functional	IGHD2	IGH	D	TRUE	2333
+Oncorhynchus mykiss functional	IGHD3	IGH	D	TRUE	2334
+Oncorhynchus mykiss functional	IGHD4	IGH	D	TRUE	2335
+Oncorhynchus mykiss functional	IGHD5	IGH	D	TRUE	2336
+Oncorhynchus mykiss functional	IGHD6	IGH	D	TRUE	2337
+Oncorhynchus mykiss functional	IGHD7	IGH	D	TRUE	2338
+Oncorhynchus mykiss functional	IGHD8	IGH	D	TRUE	2339
+Oncorhynchus mykiss functional	IGHD9	IGH	D	TRUE	2340
+Oncorhynchus mykiss functional	IGHJ1	IGH	J	TRUE	2341
+Oncorhynchus mykiss functional	IGHJ2	IGH	J	TRUE	2342
+Oncorhynchus mykiss functional	IGHJ3	IGH	J	TRUE	2343
+Oncorhynchus mykiss functional	IGHJ4	IGH	J	TRUE	2344
+Oncorhynchus mykiss functional	IGHJ5	IGH	J	TRUE	2345
+Oncorhynchus mykiss functional	IGHJ6	IGH	J	TRUE	2346
+Oncorhynchus mykiss functional	IGHJ7	IGH	J	TRUE	2347
+Oncorhynchus mykiss non-functional	IGHV10S1	IGH	V	FALSE	2348
+Oncorhynchus mykiss non-functional	IGHV11S1	IGH	V	FALSE	2349
+Oncorhynchus mykiss non-functional	IGHV12S1	IGH	V	FALSE	2350
+Oncorhynchus mykiss non-functional	IGHV13S1	IGH	V	FALSE	2351
+Oncorhynchus mykiss functional	IGHV1S1	IGH	V	TRUE	2352
+Oncorhynchus mykiss functional	IGHV1S2	IGH	V	TRUE	2353
+Oncorhynchus mykiss non-functional	IGHV1S3	IGH	V	FALSE	2354
+Oncorhynchus mykiss non-functional	IGHV1S4	IGH	V	FALSE	2355
+Oncorhynchus mykiss non-functional	IGHV1S5	IGH	V	FALSE	2356
+Oncorhynchus mykiss non-functional	IGHV1S6	IGH	V	FALSE	2357
+Oncorhynchus mykiss non-functional	IGHV1S7	IGH	V	FALSE	2358
+Oncorhynchus mykiss non-functional	IGHV2S1	IGH	V	FALSE	2359
+Oncorhynchus mykiss functional	IGHV2S2	IGH	V	TRUE	2360
+Oncorhynchus mykiss non-functional	IGHV2S3	IGH	V	FALSE	2361
+Oncorhynchus mykiss non-functional	IGHV3S1	IGH	V	FALSE	2362
+Oncorhynchus mykiss non-functional	IGHV3S2	IGH	V	FALSE	2363
+Oncorhynchus mykiss non-functional	IGHV3S3	IGH	V	FALSE	2364
+Oncorhynchus mykiss non-functional	IGHV3S4	IGH	V	FALSE	2365
+Oncorhynchus mykiss non-functional	IGHV4S1	IGH	V	FALSE	2366
+Oncorhynchus mykiss non-functional	IGHV5S1	IGH	V	FALSE	2367
+Oncorhynchus mykiss functional	IGHV5S10	IGH	V	TRUE	2368
+Oncorhynchus mykiss non-functional	IGHV5S2	IGH	V	FALSE	2369
+Oncorhynchus mykiss non-functional	IGHV5S3	IGH	V	FALSE	2370
+Oncorhynchus mykiss non-functional	IGHV5S4	IGH	V	FALSE	2371
+Oncorhynchus mykiss non-functional	IGHV5S5	IGH	V	FALSE	2372
+Oncorhynchus mykiss non-functional	IGHV5S6	IGH	V	FALSE	2373
+Oncorhynchus mykiss non-functional	IGHV5S7	IGH	V	FALSE	2374
+Oncorhynchus mykiss non-functional	IGHV5S8	IGH	V	FALSE	2375
+Oncorhynchus mykiss non-functional	IGHV5S9	IGH	V	FALSE	2376
+Oncorhynchus mykiss functional	IGHV6S1	IGH	V	TRUE	2377
+Oncorhynchus mykiss non-functional	IGHV6S2	IGH	V	FALSE	2378
+Oncorhynchus mykiss non-functional	IGHV6S3	IGH	V	FALSE	2379
+Oncorhynchus mykiss non-functional	IGHV6S4	IGH	V	FALSE	2380
+Oncorhynchus mykiss non-functional	IGHV6S5	IGH	V	FALSE	2381
+Oncorhynchus mykiss non-functional	IGHV6S6	IGH	V	FALSE	2382
+Oncorhynchus mykiss non-functional	IGHV6S7	IGH	V	FALSE	2383
+Oncorhynchus mykiss non-functional	IGHV6S8	IGH	V	FALSE	2384
+Oncorhynchus mykiss non-functional	IGHV6S9	IGH	V	FALSE	2385
+Oncorhynchus mykiss non-functional	IGHV7S1	IGH	V	FALSE	2386
+Oncorhynchus mykiss non-functional	IGHV8S1	IGH	V	FALSE	2387
+Oncorhynchus mykiss non-functional	IGHV8S10	IGH	V	FALSE	2388
+Oncorhynchus mykiss non-functional	IGHV8S11	IGH	V	FALSE	2389
+Oncorhynchus mykiss non-functional	IGHV8S2	IGH	V	FALSE	2390
+Oncorhynchus mykiss non-functional	IGHV8S3	IGH	V	FALSE	2391
+Oncorhynchus mykiss non-functional	IGHV8S4	IGH	V	FALSE	2392
+Oncorhynchus mykiss non-functional	IGHV8S5	IGH	V	FALSE	2393
+Oncorhynchus mykiss non-functional	IGHV8S6	IGH	V	FALSE	2394
+Oncorhynchus mykiss functional	IGHV8S7	IGH	V	TRUE	2395
+Oncorhynchus mykiss non-functional	IGHV8S8	IGH	V	FALSE	2396
+Oncorhynchus mykiss non-functional	IGHV8S9	IGH	V	FALSE	2397
+Oncorhynchus mykiss non-functional	IGHV9S1	IGH	V	FALSE	2398
+Oncorhynchus mykiss non-functional	IGHV9S2	IGH	V	FALSE	2399
+Oncorhynchus mykiss non-functional	IGHV9S3	IGH	V	FALSE	2400
+Oncorhynchus mykiss non-functional	IGHV9S4	IGH	V	FALSE	2401
+Oncorhynchus mykiss non-functional	IGHV9S5	IGH	V	FALSE	2402
+Oncorhynchus mykiss non-functional	IGHV9S6	IGH	V	FALSE	2403
+Oncorhynchus mykiss non-functional	IGHV9S7	IGH	V	FALSE	2404
+Oncorhynchus mykiss functional	TRBD1	TRB	D	TRUE	2405
+Oncorhynchus mykiss functional	TRBJ1	TRB	J	TRUE	2406
+Oncorhynchus mykiss functional	TRBJ10	TRB	J	TRUE	2407
+Oncorhynchus mykiss functional	TRBJ2	TRB	J	TRUE	2408
+Oncorhynchus mykiss functional	TRBJ3	TRB	J	TRUE	2409
+Oncorhynchus mykiss functional	TRBJ4	TRB	J	TRUE	2410
+Oncorhynchus mykiss functional	TRBJ5	TRB	J	TRUE	2411
+Oncorhynchus mykiss functional	TRBJ6	TRB	J	TRUE	2412
+Oncorhynchus mykiss functional	TRBJ7	TRB	J	TRUE	2413
+Oncorhynchus mykiss functional	TRBJ8	TRB	J	TRUE	2414
+Oncorhynchus mykiss functional	TRBJ9	TRB	J	TRUE	2415
+Oncorhynchus mykiss non-functional	TRBV10S1	TRB	V	FALSE	2416
+Oncorhynchus mykiss non-functional	TRBV1S1	TRB	V	FALSE	2417
+Oncorhynchus mykiss non-functional	TRBV1S2	TRB	V	FALSE	2418
+Oncorhynchus mykiss non-functional	TRBV1S3	TRB	V	FALSE	2419
+Oncorhynchus mykiss non-functional	TRBV1S4	TRB	V	FALSE	2420
+Oncorhynchus mykiss non-functional	TRBV1S5	TRB	V	FALSE	2421
+Oncorhynchus mykiss non-functional	TRBV2S1	TRB	V	FALSE	2422
+Oncorhynchus mykiss non-functional	TRBV2S10	TRB	V	FALSE	2423
+Oncorhynchus mykiss non-functional	TRBV2S11	TRB	V	FALSE	2424
+Oncorhynchus mykiss non-functional	TRBV2S12	TRB	V	FALSE	2425
+Oncorhynchus mykiss non-functional	TRBV2S13	TRB	V	FALSE	2426
+Oncorhynchus mykiss non-functional	TRBV2S14	TRB	V	FALSE	2427
+Oncorhynchus mykiss non-functional	TRBV2S15	TRB	V	FALSE	2428
+Oncorhynchus mykiss non-functional	TRBV2S16	TRB	V	FALSE	2429
+Oncorhynchus mykiss non-functional	TRBV2S17	TRB	V	FALSE	2430
+Oncorhynchus mykiss non-functional	TRBV2S18	TRB	V	FALSE	2431
+Oncorhynchus mykiss non-functional	TRBV2S19	TRB	V	FALSE	2432
+Oncorhynchus mykiss non-functional	TRBV2S2	TRB	V	FALSE	2433
+Oncorhynchus mykiss non-functional	TRBV2S20	TRB	V	FALSE	2434
+Oncorhynchus mykiss non-functional	TRBV2S21	TRB	V	FALSE	2435
+Oncorhynchus mykiss non-functional	TRBV2S23	TRB	V	FALSE	2436
+Oncorhynchus mykiss non-functional	TRBV2S24	TRB	V	FALSE	2437
+Oncorhynchus mykiss non-functional	TRBV2S25	TRB	V	FALSE	2438
+Oncorhynchus mykiss non-functional	TRBV2S26	TRB	V	FALSE	2439
+Oncorhynchus mykiss non-functional	TRBV2S27	TRB	V	FALSE	2440
+Oncorhynchus mykiss non-functional	TRBV2S3	TRB	V	FALSE	2441
+Oncorhynchus mykiss non-functional	TRBV2S4	TRB	V	FALSE	2442
+Oncorhynchus mykiss non-functional	TRBV2S5	TRB	V	FALSE	2443
+Oncorhynchus mykiss non-functional	TRBV2S6	TRB	V	FALSE	2444
+Oncorhynchus mykiss non-functional	TRBV2S7	TRB	V	FALSE	2445
+Oncorhynchus mykiss non-functional	TRBV2S8	TRB	V	FALSE	2446
+Oncorhynchus mykiss non-functional	TRBV2S9	TRB	V	FALSE	2447
+Oncorhynchus mykiss non-functional	TRBV3S1	TRB	V	FALSE	2448
+Oncorhynchus mykiss non-functional	TRBV3S2	TRB	V	FALSE	2449
+Oncorhynchus mykiss non-functional	TRBV4S1	TRB	V	FALSE	2450
+Oncorhynchus mykiss non-functional	TRBV5S1	TRB	V	FALSE	2451
+Oncorhynchus mykiss non-functional	TRBV6S1	TRB	V	FALSE	2452
+Oncorhynchus mykiss non-functional	TRBV7S1	TRB	V	FALSE	2453
+Oncorhynchus mykiss non-functional	TRBV7S2	TRB	V	FALSE	2454
+Oncorhynchus mykiss non-functional	TRBV7S3	TRB	V	FALSE	2455
+Oncorhynchus mykiss non-functional	TRBV7S4	TRB	V	FALSE	2456
+Oncorhynchus mykiss non-functional	TRBV8S1	TRB	V	FALSE	2457
+Oncorhynchus mykiss non-functional	TRBV8S2	TRB	V	FALSE	2458
+Oncorhynchus mykiss non-functional	TRBV8S3	TRB	V	FALSE	2459
+Oncorhynchus mykiss non-functional	TRBV9S1	TRB	V	FALSE	2460
+Ornithorhynchus anatinus functional	IGHD	IGH	D	TRUE	2461
+Ornithorhynchus anatinus non-functional	IGHD1	IGH	D	FALSE	2462
+Ornithorhynchus anatinus non-functional	IGHD2	IGH	D	FALSE	2463
+Ornithorhynchus anatinus non-functional	IGHD3	IGH	D	FALSE	2464
+Ornithorhynchus anatinus non-functional	IGHJ1	IGH	J	FALSE	2465
+Ornithorhynchus anatinus functional	IGHJ10	IGH	J	TRUE	2466
+Ornithorhynchus anatinus non-functional	IGHJ11	IGH	J	FALSE	2467
+Ornithorhynchus anatinus non-functional	IGHJ2	IGH	J	FALSE	2468
+Ornithorhynchus anatinus non-functional	IGHJ3	IGH	J	FALSE	2469
+Ornithorhynchus anatinus non-functional	IGHJ4	IGH	J	FALSE	2470
+Ornithorhynchus anatinus non-functional	IGHJ5	IGH	J	FALSE	2471
+Ornithorhynchus anatinus non-functional	IGHJ6	IGH	J	FALSE	2472
+Ornithorhynchus anatinus non-functional	IGHJ7	IGH	J	FALSE	2473
+Ornithorhynchus anatinus non-functional	IGHJ8	IGH	J	FALSE	2474
+Ornithorhynchus anatinus non-functional	IGHJ9	IGH	J	FALSE	2475
+Oryctolagus cuniculus functional	IGHD1-1	IGH	D	TRUE	2476
+Oryctolagus cuniculus functional	IGHD2-1	IGH	D	TRUE	2477
+Oryctolagus cuniculus non-functional	IGHD3-1	IGH	D	FALSE	2478
+Oryctolagus cuniculus functional	IGHD3-2	IGH	D	TRUE	2479
+Oryctolagus cuniculus functional	IGHD3-3	IGH	D	TRUE	2480
+Oryctolagus cuniculus functional	IGHD4-1	IGH	D	TRUE	2481
+Oryctolagus cuniculus functional	IGHD4-2	IGH	D	TRUE	2482
+Oryctolagus cuniculus functional	IGHD5-1	IGH	D	TRUE	2483
+Oryctolagus cuniculus functional	IGHD6-1	IGH	D	TRUE	2484
+Oryctolagus cuniculus functional	IGHD7-1	IGH	D	TRUE	2485
+Oryctolagus cuniculus functional	IGHD8-1	IGH	D	TRUE	2486
+Oryctolagus cuniculus functional	IGHJ1	IGH	J	TRUE	2487
+Oryctolagus cuniculus functional	IGHJ2	IGH	J	TRUE	2488
+Oryctolagus cuniculus functional	IGHJ3	IGH	J	TRUE	2489
+Oryctolagus cuniculus functional	IGHJ4	IGH	J	TRUE	2490
+Oryctolagus cuniculus functional	IGHJ5	IGH	J	TRUE	2491
+Oryctolagus cuniculus functional	IGHJ6	IGH	J	TRUE	2492
+Oryctolagus cuniculus functional	IGHV1S1	IGH	V	TRUE	2493
+Oryctolagus cuniculus non-functional	IGHV1S10	IGH	V	FALSE	2494
+Oryctolagus cuniculus non-functional	IGHV1S11	IGH	V	FALSE	2495
+Oryctolagus cuniculus non-functional	IGHV1S12	IGH	V	FALSE	2496
+Oryctolagus cuniculus functional	IGHV1S13	IGH	V	TRUE	2497
+Oryctolagus cuniculus non-functional	IGHV1S14	IGH	V	FALSE	2498
+Oryctolagus cuniculus non-functional	IGHV1S15	IGH	V	FALSE	2499
+Oryctolagus cuniculus non-functional	IGHV1S16	IGH	V	FALSE	2500
+Oryctolagus cuniculus functional	IGHV1S17	IGH	V	TRUE	2501
+Oryctolagus cuniculus non-functional	IGHV1S18	IGH	V	FALSE	2502
+Oryctolagus cuniculus non-functional	IGHV1S19	IGH	V	FALSE	2503
+Oryctolagus cuniculus non-functional	IGHV1S2	IGH	V	FALSE	2504
+Oryctolagus cuniculus non-functional	IGHV1S20	IGH	V	FALSE	2505
+Oryctolagus cuniculus non-functional	IGHV1S21	IGH	V	FALSE	2506
+Oryctolagus cuniculus non-functional	IGHV1S22	IGH	V	FALSE	2507
+Oryctolagus cuniculus non-functional	IGHV1S23	IGH	V	FALSE	2508
+Oryctolagus cuniculus functional	IGHV1S24	IGH	V	TRUE	2509
+Oryctolagus cuniculus functional	IGHV1S25	IGH	V	TRUE	2510
+Oryctolagus cuniculus functional	IGHV1S26	IGH	V	TRUE	2511
+Oryctolagus cuniculus non-functional	IGHV1S27	IGH	V	FALSE	2512
+Oryctolagus cuniculus functional	IGHV1S28	IGH	V	TRUE	2513
+Oryctolagus cuniculus non-functional	IGHV1S29	IGH	V	FALSE	2514
+Oryctolagus cuniculus non-functional	IGHV1S3	IGH	V	FALSE	2515
+Oryctolagus cuniculus non-functional	IGHV1S30	IGH	V	FALSE	2516
+Oryctolagus cuniculus functional	IGHV1S31	IGH	V	TRUE	2517
+Oryctolagus cuniculus non-functional	IGHV1S32	IGH	V	FALSE	2518
+Oryctolagus cuniculus functional	IGHV1S33	IGH	V	TRUE	2519
+Oryctolagus cuniculus functional	IGHV1S34	IGH	V	TRUE	2520
+Oryctolagus cuniculus non-functional	IGHV1S35	IGH	V	FALSE	2521
+Oryctolagus cuniculus functional	IGHV1S36	IGH	V	TRUE	2522
+Oryctolagus cuniculus non-functional	IGHV1S37	IGH	V	FALSE	2523
+Oryctolagus cuniculus non-functional	IGHV1S39	IGH	V	FALSE	2524
+Oryctolagus cuniculus non-functional	IGHV1S4	IGH	V	FALSE	2525
+Oryctolagus cuniculus functional	IGHV1S40	IGH	V	TRUE	2526
+Oryctolagus cuniculus non-functional	IGHV1S42	IGH	V	FALSE	2527
+Oryctolagus cuniculus functional	IGHV1S43	IGH	V	TRUE	2528
+Oryctolagus cuniculus functional	IGHV1S44	IGH	V	TRUE	2529
+Oryctolagus cuniculus functional	IGHV1S45	IGH	V	TRUE	2530
+Oryctolagus cuniculus non-functional	IGHV1S46	IGH	V	FALSE	2531
+Oryctolagus cuniculus functional	IGHV1S47	IGH	V	TRUE	2532
+Oryctolagus cuniculus non-functional	IGHV1S48	IGH	V	FALSE	2533
+Oryctolagus cuniculus functional	IGHV1S49	IGH	V	TRUE	2534
+Oryctolagus cuniculus non-functional	IGHV1S5	IGH	V	FALSE	2535
+Oryctolagus cuniculus functional	IGHV1S50	IGH	V	TRUE	2536
+Oryctolagus cuniculus functional	IGHV1S51	IGH	V	TRUE	2537
+Oryctolagus cuniculus functional	IGHV1S52	IGH	V	TRUE	2538
+Oryctolagus cuniculus functional	IGHV1S53	IGH	V	TRUE	2539
+Oryctolagus cuniculus functional	IGHV1S54	IGH	V	TRUE	2540
+Oryctolagus cuniculus functional	IGHV1S55	IGH	V	TRUE	2541
+Oryctolagus cuniculus functional	IGHV1S56	IGH	V	TRUE	2542
+Oryctolagus cuniculus functional	IGHV1S57	IGH	V	TRUE	2543
+Oryctolagus cuniculus functional	IGHV1S58	IGH	V	TRUE	2544
+Oryctolagus cuniculus functional	IGHV1S59	IGH	V	TRUE	2545
+Oryctolagus cuniculus non-functional	IGHV1S6	IGH	V	FALSE	2546
+Oryctolagus cuniculus functional	IGHV1S60	IGH	V	TRUE	2547
+Oryctolagus cuniculus functional	IGHV1S61	IGH	V	TRUE	2548
+Oryctolagus cuniculus functional	IGHV1S62	IGH	V	TRUE	2549
+Oryctolagus cuniculus functional	IGHV1S63	IGH	V	TRUE	2550
+Oryctolagus cuniculus functional	IGHV1S64	IGH	V	TRUE	2551
+Oryctolagus cuniculus functional	IGHV1S65	IGH	V	TRUE	2552
+Oryctolagus cuniculus functional	IGHV1S66	IGH	V	TRUE	2553
+Oryctolagus cuniculus functional	IGHV1S67	IGH	V	TRUE	2554
+Oryctolagus cuniculus functional	IGHV1S68	IGH	V	TRUE	2555
+Oryctolagus cuniculus functional	IGHV1S69	IGH	V	TRUE	2556
+Oryctolagus cuniculus functional	IGHV1S7	IGH	V	TRUE	2557
+Oryctolagus cuniculus functional	IGHV1S8	IGH	V	TRUE	2558
+Oryctolagus cuniculus non-functional	IGHV1S9	IGH	V	FALSE	2559
+Oryctolagus cuniculus functional	IGKJ1-1	IGK	J	TRUE	2560
+Oryctolagus cuniculus functional	IGKJ1-2	IGK	J	TRUE	2561
+Oryctolagus cuniculus non-functional	IGKJ1-3	IGK	J	FALSE	2562
+Oryctolagus cuniculus non-functional	IGKJ1-4	IGK	J	FALSE	2563
+Oryctolagus cuniculus non-functional	IGKJ1-5	IGK	J	FALSE	2564
+Oryctolagus cuniculus functional	IGKJ2-1	IGK	J	TRUE	2565
+Oryctolagus cuniculus functional	IGKJ2-2	IGK	J	TRUE	2566
+Oryctolagus cuniculus functional	IGKJ2-3	IGK	J	TRUE	2567
+Oryctolagus cuniculus functional	IGKV1S1	IGK	V	TRUE	2568
+Oryctolagus cuniculus functional	IGKV1S10	IGK	V	TRUE	2569
+Oryctolagus cuniculus functional	IGKV1S11	IGK	V	TRUE	2570
+Oryctolagus cuniculus functional	IGKV1S12	IGK	V	TRUE	2571
+Oryctolagus cuniculus non-functional	IGKV1S13	IGK	V	FALSE	2572
+Oryctolagus cuniculus functional	IGKV1S14	IGK	V	TRUE	2573
+Oryctolagus cuniculus functional	IGKV1S15	IGK	V	TRUE	2574
+Oryctolagus cuniculus functional	IGKV1S16	IGK	V	TRUE	2575
+Oryctolagus cuniculus functional	IGKV1S17	IGK	V	TRUE	2576
+Oryctolagus cuniculus functional	IGKV1S18	IGK	V	TRUE	2577
+Oryctolagus cuniculus functional	IGKV1S19	IGK	V	TRUE	2578
+Oryctolagus cuniculus functional	IGKV1S2	IGK	V	TRUE	2579
+Oryctolagus cuniculus functional	IGKV1S20	IGK	V	TRUE	2580
+Oryctolagus cuniculus functional	IGKV1S21	IGK	V	TRUE	2581
+Oryctolagus cuniculus functional	IGKV1S22	IGK	V	TRUE	2582
+Oryctolagus cuniculus functional	IGKV1S23	IGK	V	TRUE	2583
+Oryctolagus cuniculus functional	IGKV1S24	IGK	V	TRUE	2584
+Oryctolagus cuniculus functional	IGKV1S25	IGK	V	TRUE	2585
+Oryctolagus cuniculus functional	IGKV1S26	IGK	V	TRUE	2586
+Oryctolagus cuniculus non-functional	IGKV1S27	IGK	V	FALSE	2587
+Oryctolagus cuniculus non-functional	IGKV1S28	IGK	V	FALSE	2588
+Oryctolagus cuniculus non-functional	IGKV1S29	IGK	V	FALSE	2589
+Oryctolagus cuniculus functional	IGKV1S3	IGK	V	TRUE	2590
+Oryctolagus cuniculus non-functional	IGKV1S30	IGK	V	FALSE	2591
+Oryctolagus cuniculus non-functional	IGKV1S31	IGK	V	FALSE	2592
+Oryctolagus cuniculus non-functional	IGKV1S32	IGK	V	FALSE	2593
+Oryctolagus cuniculus non-functional	IGKV1S33	IGK	V	FALSE	2594
+Oryctolagus cuniculus non-functional	IGKV1S34	IGK	V	FALSE	2595
+Oryctolagus cuniculus non-functional	IGKV1S35	IGK	V	FALSE	2596
+Oryctolagus cuniculus non-functional	IGKV1S36	IGK	V	FALSE	2597
+Oryctolagus cuniculus non-functional	IGKV1S37	IGK	V	FALSE	2598
+Oryctolagus cuniculus non-functional	IGKV1S38	IGK	V	FALSE	2599
+Oryctolagus cuniculus non-functional	IGKV1S39	IGK	V	FALSE	2600
+Oryctolagus cuniculus non-functional	IGKV1S4	IGK	V	FALSE	2601
+Oryctolagus cuniculus non-functional	IGKV1S40	IGK	V	FALSE	2602
+Oryctolagus cuniculus non-functional	IGKV1S41	IGK	V	FALSE	2603
+Oryctolagus cuniculus non-functional	IGKV1S42	IGK	V	FALSE	2604
+Oryctolagus cuniculus non-functional	IGKV1S43	IGK	V	FALSE	2605
+Oryctolagus cuniculus non-functional	IGKV1S44	IGK	V	FALSE	2606
+Oryctolagus cuniculus non-functional	IGKV1S45	IGK	V	FALSE	2607
+Oryctolagus cuniculus non-functional	IGKV1S46	IGK	V	FALSE	2608
+Oryctolagus cuniculus non-functional	IGKV1S47	IGK	V	FALSE	2609
+Oryctolagus cuniculus non-functional	IGKV1S48	IGK	V	FALSE	2610
+Oryctolagus cuniculus non-functional	IGKV1S49	IGK	V	FALSE	2611
+Oryctolagus cuniculus functional	IGKV1S5	IGK	V	TRUE	2612
+Oryctolagus cuniculus non-functional	IGKV1S50	IGK	V	FALSE	2613
+Oryctolagus cuniculus non-functional	IGKV1S51	IGK	V	FALSE	2614
+Oryctolagus cuniculus non-functional	IGKV1S52	IGK	V	FALSE	2615
+Oryctolagus cuniculus non-functional	IGKV1S53	IGK	V	FALSE	2616
+Oryctolagus cuniculus non-functional	IGKV1S54	IGK	V	FALSE	2617
+Oryctolagus cuniculus non-functional	IGKV1S55	IGK	V	FALSE	2618
+Oryctolagus cuniculus non-functional	IGKV1S56	IGK	V	FALSE	2619
+Oryctolagus cuniculus non-functional	IGKV1S57	IGK	V	FALSE	2620
+Oryctolagus cuniculus non-functional	IGKV1S58	IGK	V	FALSE	2621
+Oryctolagus cuniculus non-functional	IGKV1S59	IGK	V	FALSE	2622
+Oryctolagus cuniculus functional	IGKV1S6	IGK	V	TRUE	2623
+Oryctolagus cuniculus non-functional	IGKV1S60	IGK	V	FALSE	2624
+Oryctolagus cuniculus non-functional	IGKV1S61	IGK	V	FALSE	2625
+Oryctolagus cuniculus non-functional	IGKV1S62	IGK	V	FALSE	2626
+Oryctolagus cuniculus non-functional	IGKV1S63	IGK	V	FALSE	2627
+Oryctolagus cuniculus non-functional	IGKV1S64	IGK	V	FALSE	2628
+Oryctolagus cuniculus non-functional	IGKV1S65	IGK	V	FALSE	2629
+Oryctolagus cuniculus non-functional	IGKV1S66	IGK	V	FALSE	2630
+Oryctolagus cuniculus non-functional	IGKV1S67	IGK	V	FALSE	2631
+Oryctolagus cuniculus non-functional	IGKV1S68	IGK	V	FALSE	2632
+Oryctolagus cuniculus functional	IGKV1S7	IGK	V	TRUE	2633
+Oryctolagus cuniculus functional	IGKV1S8	IGK	V	TRUE	2634
+Oryctolagus cuniculus functional	IGKV1S9	IGK	V	TRUE	2635
+Oryctolagus cuniculus non-functional	IGLJ1	IGL	J	FALSE	2636
+Oryctolagus cuniculus non-functional	IGLJ3	IGL	J	FALSE	2637
+Oryctolagus cuniculus functional	IGLJ5	IGL	J	TRUE	2638
+Oryctolagus cuniculus functional	IGLJ6	IGL	J	TRUE	2639
+Oryctolagus cuniculus non-functional	IGLV1S1	IGL	V	FALSE	2640
+Oryctolagus cuniculus non-functional	IGLV1S2	IGL	V	FALSE	2641
+Oryctolagus cuniculus non-functional	IGLV1S3	IGL	V	FALSE	2642
+Oryctolagus cuniculus functional	IGLV2S1	IGL	V	TRUE	2643
+Oryctolagus cuniculus functional	IGLV2S2	IGL	V	TRUE	2644
+Oryctolagus cuniculus non-functional	IGLV2S3	IGL	V	FALSE	2645
+Oryctolagus cuniculus non-functional	IGLV2S4	IGL	V	FALSE	2646
+Oryctolagus cuniculus non-functional	IGLV2S5	IGL	V	FALSE	2647
+Oryctolagus cuniculus non-functional	IGLV3S1	IGL	V	FALSE	2648
+Oryctolagus cuniculus non-functional	IGLV3S10	IGL	V	FALSE	2649
+Oryctolagus cuniculus functional	IGLV3S2	IGL	V	TRUE	2650
+Oryctolagus cuniculus non-functional	IGLV3S3	IGL	V	FALSE	2651
+Oryctolagus cuniculus non-functional	IGLV3S4	IGL	V	FALSE	2652
+Oryctolagus cuniculus non-functional	IGLV3S5	IGL	V	FALSE	2653
+Oryctolagus cuniculus functional	IGLV3S6	IGL	V	TRUE	2654
+Oryctolagus cuniculus functional	IGLV3S7	IGL	V	TRUE	2655
+Oryctolagus cuniculus non-functional	IGLV3S8	IGL	V	FALSE	2656
+Oryctolagus cuniculus functional	IGLV3S9	IGL	V	TRUE	2657
+Oryctolagus cuniculus non-functional	IGLV4S1	IGL	V	FALSE	2658
+Oryctolagus cuniculus non-functional	IGLV4S2	IGL	V	FALSE	2659
+Oryctolagus cuniculus functional	IGLV4S3	IGL	V	TRUE	2660
+Oryctolagus cuniculus functional	IGLV4S4	IGL	V	TRUE	2661
+Oryctolagus cuniculus non-functional	IGLV4S5	IGL	V	FALSE	2662
+Oryctolagus cuniculus non-functional	IGLV4S6	IGL	V	FALSE	2663
+Oryctolagus cuniculus non-functional	IGLV4S7	IGL	V	FALSE	2664
+Oryctolagus cuniculus functional	IGLV5S1	IGL	V	TRUE	2665
+Oryctolagus cuniculus functional	IGLV5S10	IGL	V	TRUE	2666
+Oryctolagus cuniculus functional	IGLV5S2	IGL	V	TRUE	2667
+Oryctolagus cuniculus functional	IGLV5S3	IGL	V	TRUE	2668
+Oryctolagus cuniculus non-functional	IGLV5S4	IGL	V	FALSE	2669
+Oryctolagus cuniculus functional	IGLV5S5	IGL	V	TRUE	2670
+Oryctolagus cuniculus functional	IGLV5S6	IGL	V	TRUE	2671
+Oryctolagus cuniculus non-functional	IGLV5S7	IGL	V	FALSE	2672
+Oryctolagus cuniculus non-functional	IGLV5S8	IGL	V	FALSE	2673
+Oryctolagus cuniculus functional	IGLV5S9	IGL	V	TRUE	2674
+Oryctolagus cuniculus functional	IGLV6S1	IGL	V	TRUE	2675
+Oryctolagus cuniculus non-functional	IGLV6S2	IGL	V	FALSE	2676
+Oryctolagus cuniculus functional	IGLV6S3	IGL	V	TRUE	2677
+Oryctolagus cuniculus non-functional	IGLV6S4	IGL	V	FALSE	2678
+Oryctolagus cuniculus functional	IGLV6S5	IGL	V	TRUE	2679
+Oryctolagus cuniculus functional	IGLV6S6	IGL	V	TRUE	2680
+Oryctolagus cuniculus functional	IGLV6S7	IGL	V	TRUE	2681
+Oryctolagus cuniculus non-functional	IGLV7S1	IGL	V	FALSE	2682
+Rattus norvegicus functional	IGHD	IGH	D	TRUE	2683
+Rattus norvegicus functional	IGHD1-1	IGH	D	TRUE	2684
+Rattus norvegicus functional	IGHD1-2	IGH	D	TRUE	2685
+Rattus norvegicus functional	IGHD1-3	IGH	D	TRUE	2686
+Rattus norvegicus functional	IGHD1-4	IGH	D	TRUE	2687
+Rattus norvegicus functional	IGHD1-5	IGH	D	TRUE	2688
+Rattus norvegicus functional	IGHD1-6	IGH	D	TRUE	2689
+Rattus norvegicus functional	IGHD1-7	IGH	D	TRUE	2690
+Rattus norvegicus functional	IGHD1-8	IGH	D	TRUE	2691
+Rattus norvegicus non-functional	IGHD2-1	IGH	D	FALSE	2692
+Rattus norvegicus non-functional	IGHD2-2	IGH	D	FALSE	2693
+Rattus norvegicus non-functional	IGHD2-3	IGH	D	FALSE	2694
+Rattus norvegicus non-functional	IGHD3-1	IGH	D	FALSE	2695
+Rattus norvegicus non-functional	IGHD3-2	IGH	D	FALSE	2696
+Rattus norvegicus non-functional	IGHD3-3	IGH	D	FALSE	2697
+Rattus norvegicus non-functional	IGHD3-4	IGH	D	FALSE	2698
+Rattus norvegicus functional	IGHD4-1	IGH	D	TRUE	2699
+Rattus norvegicus functional	IGHD4-2	IGH	D	TRUE	2700
+Rattus norvegicus functional	IGHD4-3	IGH	D	TRUE	2701
+Rattus norvegicus functional	IGHD4-4	IGH	D	TRUE	2702
+Rattus norvegicus functional	IGHD5-1	IGH	D	TRUE	2703
+Rattus norvegicus functional	IGHJ1	IGH	J	TRUE	2704
+Rattus norvegicus functional	IGHJ2	IGH	J	TRUE	2705
+Rattus norvegicus functional	IGHJ3	IGH	J	TRUE	2706
+Rattus norvegicus functional	IGHJ4	IGH	J	TRUE	2707
+Rattus norvegicus non-functional	IGHV10S1	IGH	V	FALSE	2708
+Rattus norvegicus non-functional	IGHV10S10	IGH	V	FALSE	2709
+Rattus norvegicus non-functional	IGHV10S11	IGH	V	FALSE	2710
+Rattus norvegicus non-functional	IGHV10S12	IGH	V	FALSE	2711
+Rattus norvegicus functional	IGHV10S13	IGH	V	TRUE	2712
+Rattus norvegicus non-functional	IGHV10S14	IGH	V	FALSE	2713
+Rattus norvegicus non-functional	IGHV10S15	IGH	V	FALSE	2714
+Rattus norvegicus non-functional	IGHV10S16	IGH	V	FALSE	2715
+Rattus norvegicus non-functional	IGHV10S17	IGH	V	FALSE	2716
+Rattus norvegicus non-functional	IGHV10S18	IGH	V	FALSE	2717
+Rattus norvegicus non-functional	IGHV10S19	IGH	V	FALSE	2718
+Rattus norvegicus non-functional	IGHV10S2	IGH	V	FALSE	2719
+Rattus norvegicus non-functional	IGHV10S3	IGH	V	FALSE	2720
+Rattus norvegicus non-functional	IGHV10S4	IGH	V	FALSE	2721
+Rattus norvegicus non-functional	IGHV10S5	IGH	V	FALSE	2722
+Rattus norvegicus non-functional	IGHV10S6	IGH	V	FALSE	2723
+Rattus norvegicus non-functional	IGHV10S7	IGH	V	FALSE	2724
+Rattus norvegicus functional	IGHV10S8	IGH	V	TRUE	2725
+Rattus norvegicus non-functional	IGHV10S9	IGH	V	FALSE	2726
+Rattus norvegicus functional	IGHV11S1	IGH	V	TRUE	2727
+Rattus norvegicus functional	IGHV11S10	IGH	V	TRUE	2728
+Rattus norvegicus non-functional	IGHV11S11	IGH	V	FALSE	2729
+Rattus norvegicus non-functional	IGHV11S12	IGH	V	FALSE	2730
+Rattus norvegicus functional	IGHV11S2	IGH	V	TRUE	2731
+Rattus norvegicus functional	IGHV11S3	IGH	V	TRUE	2732
+Rattus norvegicus non-functional	IGHV11S4	IGH	V	FALSE	2733
+Rattus norvegicus non-functional	IGHV11S5	IGH	V	FALSE	2734
+Rattus norvegicus non-functional	IGHV11S6	IGH	V	FALSE	2735
+Rattus norvegicus functional	IGHV11S7	IGH	V	TRUE	2736
+Rattus norvegicus non-functional	IGHV11S8	IGH	V	FALSE	2737
+Rattus norvegicus non-functional	IGHV11S9	IGH	V	FALSE	2738
+Rattus norvegicus non-functional	IGHV12S1	IGH	V	FALSE	2739
+Rattus norvegicus functional	IGHV12S2	IGH	V	TRUE	2740
+Rattus norvegicus non-functional	IGHV12S3	IGH	V	FALSE	2741
+Rattus norvegicus non-functional	IGHV15S1	IGH	V	FALSE	2742
+Rattus norvegicus non-functional	IGHV1S1	IGH	V	FALSE	2743
+Rattus norvegicus non-functional	IGHV1S10	IGH	V	FALSE	2744
+Rattus norvegicus non-functional	IGHV1S11	IGH	V	FALSE	2745
+Rattus norvegicus non-functional	IGHV1S12	IGH	V	FALSE	2746
+Rattus norvegicus functional	IGHV1S13	IGH	V	TRUE	2747
+Rattus norvegicus non-functional	IGHV1S14	IGH	V	FALSE	2748
+Rattus norvegicus functional	IGHV1S15	IGH	V	TRUE	2749
+Rattus norvegicus functional	IGHV1S16	IGH	V	TRUE	2750
+Rattus norvegicus functional	IGHV1S17	IGH	V	TRUE	2751
+Rattus norvegicus non-functional	IGHV1S18	IGH	V	FALSE	2752
+Rattus norvegicus non-functional	IGHV1S19	IGH	V	FALSE	2753
+Rattus norvegicus non-functional	IGHV1S2	IGH	V	FALSE	2754
+Rattus norvegicus functional	IGHV1S20	IGH	V	TRUE	2755
+Rattus norvegicus non-functional	IGHV1S21	IGH	V	FALSE	2756
+Rattus norvegicus functional	IGHV1S22	IGH	V	TRUE	2757
+Rattus norvegicus functional	IGHV1S23	IGH	V	TRUE	2758
+Rattus norvegicus non-functional	IGHV1S24	IGH	V	FALSE	2759
+Rattus norvegicus non-functional	IGHV1S25	IGH	V	FALSE	2760
+Rattus norvegicus non-functional	IGHV1S26	IGH	V	FALSE	2761
+Rattus norvegicus functional	IGHV1S27	IGH	V	TRUE	2762
+Rattus norvegicus functional	IGHV1S28	IGH	V	TRUE	2763
+Rattus norvegicus functional	IGHV1S29	IGH	V	TRUE	2764
+Rattus norvegicus non-functional	IGHV1S3	IGH	V	FALSE	2765
+Rattus norvegicus non-functional	IGHV1S30	IGH	V	FALSE	2766
+Rattus norvegicus functional	IGHV1S31	IGH	V	TRUE	2767
+Rattus norvegicus non-functional	IGHV1S32	IGH	V	FALSE	2768
+Rattus norvegicus non-functional	IGHV1S33	IGH	V	FALSE	2769
+Rattus norvegicus non-functional	IGHV1S34	IGH	V	FALSE	2770
+Rattus norvegicus non-functional	IGHV1S35	IGH	V	FALSE	2771
+Rattus norvegicus non-functional	IGHV1S36	IGH	V	FALSE	2772
+Rattus norvegicus non-functional	IGHV1S37	IGH	V	FALSE	2773
+Rattus norvegicus functional	IGHV1S38	IGH	V	TRUE	2774
+Rattus norvegicus functional	IGHV1S39	IGH	V	TRUE	2775
+Rattus norvegicus non-functional	IGHV1S4	IGH	V	FALSE	2776
+Rattus norvegicus non-functional	IGHV1S40	IGH	V	FALSE	2777
+Rattus norvegicus functional	IGHV1S41	IGH	V	TRUE	2778
+Rattus norvegicus non-functional	IGHV1S42	IGH	V	FALSE	2779
+Rattus norvegicus non-functional	IGHV1S43	IGH	V	FALSE	2780
+Rattus norvegicus non-functional	IGHV1S44	IGH	V	FALSE	2781
+Rattus norvegicus functional	IGHV1S45	IGH	V	TRUE	2782
+Rattus norvegicus non-functional	IGHV1S46	IGH	V	FALSE	2783
+Rattus norvegicus functional	IGHV1S47	IGH	V	TRUE	2784
+Rattus norvegicus functional	IGHV1S48	IGH	V	TRUE	2785
+Rattus norvegicus non-functional	IGHV1S49	IGH	V	FALSE	2786
+Rattus norvegicus non-functional	IGHV1S5	IGH	V	FALSE	2787
+Rattus norvegicus non-functional	IGHV1S50	IGH	V	FALSE	2788
+Rattus norvegicus functional	IGHV1S51	IGH	V	TRUE	2789
+Rattus norvegicus non-functional	IGHV1S52	IGH	V	FALSE	2790
+Rattus norvegicus non-functional	IGHV1S53	IGH	V	FALSE	2791
+Rattus norvegicus non-functional	IGHV1S54	IGH	V	FALSE	2792
+Rattus norvegicus non-functional	IGHV1S55	IGH	V	FALSE	2793
+Rattus norvegicus non-functional	IGHV1S56	IGH	V	FALSE	2794
+Rattus norvegicus functional	IGHV1S57	IGH	V	TRUE	2795
+Rattus norvegicus non-functional	IGHV1S58	IGH	V	FALSE	2796
+Rattus norvegicus non-functional	IGHV1S59	IGH	V	FALSE	2797
+Rattus norvegicus functional	IGHV1S6	IGH	V	TRUE	2798
+Rattus norvegicus non-functional	IGHV1S60	IGH	V	FALSE	2799
+Rattus norvegicus non-functional	IGHV1S61	IGH	V	FALSE	2800
+Rattus norvegicus functional	IGHV1S62	IGH	V	TRUE	2801
+Rattus norvegicus non-functional	IGHV1S63	IGH	V	FALSE	2802
+Rattus norvegicus non-functional	IGHV1S64	IGH	V	FALSE	2803
+Rattus norvegicus non-functional	IGHV1S65	IGH	V	FALSE	2804
+Rattus norvegicus functional	IGHV1S66	IGH	V	TRUE	2805
+Rattus norvegicus functional	IGHV1S67	IGH	V	TRUE	2806
+Rattus norvegicus non-functional	IGHV1S7	IGH	V	FALSE	2807
+Rattus norvegicus non-functional	IGHV1S8	IGH	V	FALSE	2808
+Rattus norvegicus functional	IGHV1S9	IGH	V	TRUE	2809
+Rattus norvegicus functional	IGHV2S1	IGH	V	TRUE	2810
+Rattus norvegicus functional	IGHV2S10	IGH	V	TRUE	2811
+Rattus norvegicus non-functional	IGHV2S11	IGH	V	FALSE	2812
+Rattus norvegicus functional	IGHV2S12	IGH	V	TRUE	2813
+Rattus norvegicus functional	IGHV2S13	IGH	V	TRUE	2814
+Rattus norvegicus functional	IGHV2S14	IGH	V	TRUE	2815
+Rattus norvegicus non-functional	IGHV2S15	IGH	V	FALSE	2816
+Rattus norvegicus non-functional	IGHV2S16	IGH	V	FALSE	2817
+Rattus norvegicus non-functional	IGHV2S17	IGH	V	FALSE	2818
+Rattus norvegicus functional	IGHV2S18	IGH	V	TRUE	2819
+Rattus norvegicus non-functional	IGHV2S19	IGH	V	FALSE	2820
+Rattus norvegicus non-functional	IGHV2S2	IGH	V	FALSE	2821
+Rattus norvegicus functional	IGHV2S20	IGH	V	TRUE	2822
+Rattus norvegicus non-functional	IGHV2S21	IGH	V	FALSE	2823
+Rattus norvegicus non-functional	IGHV2S22	IGH	V	FALSE	2824
+Rattus norvegicus non-functional	IGHV2S23	IGH	V	FALSE	2825
+Rattus norvegicus non-functional	IGHV2S24	IGH	V	FALSE	2826
+Rattus norvegicus non-functional	IGHV2S25	IGH	V	FALSE	2827
+Rattus norvegicus non-functional	IGHV2S26	IGH	V	FALSE	2828
+Rattus norvegicus non-functional	IGHV2S27	IGH	V	FALSE	2829
+Rattus norvegicus non-functional	IGHV2S28	IGH	V	FALSE	2830
+Rattus norvegicus non-functional	IGHV2S29	IGH	V	FALSE	2831
+Rattus norvegicus functional	IGHV2S30	IGH	V	TRUE	2832
+Rattus norvegicus functional	IGHV2S31	IGH	V	TRUE	2833
+Rattus norvegicus non-functional	IGHV2S32	IGH	V	FALSE	2834
+Rattus norvegicus functional	IGHV2S33	IGH	V	TRUE	2835
+Rattus norvegicus non-functional	IGHV2S34	IGH	V	FALSE	2836
+Rattus norvegicus non-functional	IGHV2S35	IGH	V	FALSE	2837
+Rattus norvegicus non-functional	IGHV2S36	IGH	V	FALSE	2838
+Rattus norvegicus non-functional	IGHV2S37	IGH	V	FALSE	2839
+Rattus norvegicus non-functional	IGHV2S38	IGH	V	FALSE	2840
+Rattus norvegicus non-functional	IGHV2S39	IGH	V	FALSE	2841
+Rattus norvegicus functional	IGHV2S40	IGH	V	TRUE	2842
+Rattus norvegicus functional	IGHV2S41	IGH	V	TRUE	2843
+Rattus norvegicus non-functional	IGHV2S42	IGH	V	FALSE	2844
+Rattus norvegicus non-functional	IGHV2S43	IGH	V	FALSE	2845
+Rattus norvegicus non-functional	IGHV2S44	IGH	V	FALSE	2846
+Rattus norvegicus non-functional	IGHV2S45	IGH	V	FALSE	2847
+Rattus norvegicus non-functional	IGHV2S46	IGH	V	FALSE	2848
+Rattus norvegicus non-functional	IGHV2S47	IGH	V	FALSE	2849
+Rattus norvegicus functional	IGHV2S48	IGH	V	TRUE	2850
+Rattus norvegicus non-functional	IGHV2S49	IGH	V	FALSE	2851
+Rattus norvegicus functional	IGHV2S5	IGH	V	TRUE	2852
+Rattus norvegicus non-functional	IGHV2S50	IGH	V	FALSE	2853
+Rattus norvegicus non-functional	IGHV2S51	IGH	V	FALSE	2854
+Rattus norvegicus non-functional	IGHV2S52	IGH	V	FALSE	2855
+Rattus norvegicus non-functional	IGHV2S53	IGH	V	FALSE	2856
+Rattus norvegicus functional	IGHV2S54	IGH	V	TRUE	2857
+Rattus norvegicus non-functional	IGHV2S55	IGH	V	FALSE	2858
+Rattus norvegicus functional	IGHV2S56	IGH	V	TRUE	2859
+Rattus norvegicus non-functional	IGHV2S57	IGH	V	FALSE	2860
+Rattus norvegicus non-functional	IGHV2S58	IGH	V	FALSE	2861
+Rattus norvegicus non-functional	IGHV2S59	IGH	V	FALSE	2862
+Rattus norvegicus non-functional	IGHV2S6	IGH	V	FALSE	2863
+Rattus norvegicus non-functional	IGHV2S60	IGH	V	FALSE	2864
+Rattus norvegicus functional	IGHV2S61	IGH	V	TRUE	2865
+Rattus norvegicus non-functional	IGHV2S62	IGH	V	FALSE	2866
+Rattus norvegicus functional	IGHV2S63	IGH	V	TRUE	2867
+Rattus norvegicus functional	IGHV2S64	IGH	V	TRUE	2868
+Rattus norvegicus non-functional	IGHV2S69	IGH	V	FALSE	2869
+Rattus norvegicus non-functional	IGHV2S7	IGH	V	FALSE	2870
+Rattus norvegicus functional	IGHV2S70	IGH	V	TRUE	2871
+Rattus norvegicus non-functional	IGHV2S71	IGH	V	FALSE	2872
+Rattus norvegicus functional	IGHV2S72	IGH	V	TRUE	2873
+Rattus norvegicus non-functional	IGHV2S73	IGH	V	FALSE	2874
+Rattus norvegicus non-functional	IGHV2S74	IGH	V	FALSE	2875
+Rattus norvegicus functional	IGHV2S75	IGH	V	TRUE	2876
+Rattus norvegicus non-functional	IGHV2S76	IGH	V	FALSE	2877
+Rattus norvegicus non-functional	IGHV2S77	IGH	V	FALSE	2878
+Rattus norvegicus functional	IGHV2S78	IGH	V	TRUE	2879
+Rattus norvegicus non-functional	IGHV2S79	IGH	V	FALSE	2880
+Rattus norvegicus functional	IGHV2S8	IGH	V	TRUE	2881
+Rattus norvegicus non-functional	IGHV2S80	IGH	V	FALSE	2882
+Rattus norvegicus non-functional	IGHV2S81	IGH	V	FALSE	2883
+Rattus norvegicus functional	IGHV2S82	IGH	V	TRUE	2884
+Rattus norvegicus non-functional	IGHV2S83	IGH	V	FALSE	2885
+Rattus norvegicus functional	IGHV2S84	IGH	V	TRUE	2886
+Rattus norvegicus functional	IGHV2S85	IGH	V	TRUE	2887
+Rattus norvegicus non-functional	IGHV2S86	IGH	V	FALSE	2888
+Rattus norvegicus non-functional	IGHV2S87	IGH	V	FALSE	2889
+Rattus norvegicus functional	IGHV2S88	IGH	V	TRUE	2890
+Rattus norvegicus functional	IGHV2S89	IGH	V	TRUE	2891
+Rattus norvegicus non-functional	IGHV2S9	IGH	V	FALSE	2892
+Rattus norvegicus non-functional	IGHV2S90	IGH	V	FALSE	2893
+Rattus norvegicus non-functional	IGHV2S91	IGH	V	FALSE	2894
+Rattus norvegicus functional	IGHV2S92	IGH	V	TRUE	2895
+Rattus norvegicus non-functional	IGHV2S93	IGH	V	FALSE	2896
+Rattus norvegicus functional	IGHV2S94	IGH	V	TRUE	2897
+Rattus norvegicus non-functional	IGHV2S95	IGH	V	FALSE	2898
+Rattus norvegicus non-functional	IGHV2S96	IGH	V	FALSE	2899
+Rattus norvegicus functional	IGHV2S97	IGH	V	TRUE	2900
+Rattus norvegicus functional	IGHV2S98	IGH	V	TRUE	2901
+Rattus norvegicus non-functional	IGHV2S99	IGH	V	FALSE	2902
+Rattus norvegicus functional	IGHV3S1	IGH	V	TRUE	2903
+Rattus norvegicus non-functional	IGHV3S2	IGH	V	FALSE	2904
+Rattus norvegicus functional	IGHV3S3	IGH	V	TRUE	2905
+Rattus norvegicus non-functional	IGHV3S4	IGH	V	FALSE	2906
+Rattus norvegicus functional	IGHV3S5	IGH	V	TRUE	2907
+Rattus norvegicus non-functional	IGHV3S6	IGH	V	FALSE	2908
+Rattus norvegicus functional	IGHV3S7	IGH	V	TRUE	2909
+Rattus norvegicus non-functional	IGHV3S8	IGH	V	FALSE	2910
+Rattus norvegicus functional	IGHV4S1	IGH	V	TRUE	2911
+Rattus norvegicus functional	IGHV4S2	IGH	V	TRUE	2912
+Rattus norvegicus non-functional	IGHV4S3	IGH	V	FALSE	2913
+Rattus norvegicus non-functional	IGHV4S4	IGH	V	FALSE	2914
+Rattus norvegicus non-functional	IGHV5S1	IGH	V	FALSE	2915
+Rattus norvegicus functional	IGHV5S10	IGH	V	TRUE	2916
+Rattus norvegicus functional	IGHV5S11	IGH	V	TRUE	2917
+Rattus norvegicus non-functional	IGHV5S12	IGH	V	FALSE	2918
+Rattus norvegicus functional	IGHV5S13	IGH	V	TRUE	2919
+Rattus norvegicus functional	IGHV5S14	IGH	V	TRUE	2920
+Rattus norvegicus non-functional	IGHV5S15	IGH	V	FALSE	2921
+Rattus norvegicus functional	IGHV5S16	IGH	V	TRUE	2922
+Rattus norvegicus non-functional	IGHV5S17	IGH	V	FALSE	2923
+Rattus norvegicus non-functional	IGHV5S18	IGH	V	FALSE	2924
+Rattus norvegicus non-functional	IGHV5S19	IGH	V	FALSE	2925
+Rattus norvegicus non-functional	IGHV5S2	IGH	V	FALSE	2926
+Rattus norvegicus non-functional	IGHV5S20	IGH	V	FALSE	2927
+Rattus norvegicus non-functional	IGHV5S21	IGH	V	FALSE	2928
+Rattus norvegicus non-functional	IGHV5S22	IGH	V	FALSE	2929
+Rattus norvegicus functional	IGHV5S23	IGH	V	TRUE	2930
+Rattus norvegicus non-functional	IGHV5S24	IGH	V	FALSE	2931
+Rattus norvegicus non-functional	IGHV5S25	IGH	V	FALSE	2932
+Rattus norvegicus non-functional	IGHV5S26	IGH	V	FALSE	2933
+Rattus norvegicus functional	IGHV5S27	IGH	V	TRUE	2934
+Rattus norvegicus non-functional	IGHV5S28	IGH	V	FALSE	2935
+Rattus norvegicus functional	IGHV5S29	IGH	V	TRUE	2936
+Rattus norvegicus non-functional	IGHV5S3	IGH	V	FALSE	2937
+Rattus norvegicus functional	IGHV5S30	IGH	V	TRUE	2938
+Rattus norvegicus non-functional	IGHV5S31	IGH	V	FALSE	2939
+Rattus norvegicus functional	IGHV5S32	IGH	V	TRUE	2940
+Rattus norvegicus non-functional	IGHV5S33	IGH	V	FALSE	2941
+Rattus norvegicus non-functional	IGHV5S34	IGH	V	FALSE	2942
+Rattus norvegicus non-functional	IGHV5S35	IGH	V	FALSE	2943
+Rattus norvegicus functional	IGHV5S36	IGH	V	TRUE	2944
+Rattus norvegicus non-functional	IGHV5S37	IGH	V	FALSE	2945
+Rattus norvegicus non-functional	IGHV5S39	IGH	V	FALSE	2946
+Rattus norvegicus non-functional	IGHV5S4	IGH	V	FALSE	2947
+Rattus norvegicus non-functional	IGHV5S40	IGH	V	FALSE	2948
+Rattus norvegicus non-functional	IGHV5S41	IGH	V	FALSE	2949
+Rattus norvegicus non-functional	IGHV5S42	IGH	V	FALSE	2950
+Rattus norvegicus functional	IGHV5S43	IGH	V	TRUE	2951
+Rattus norvegicus non-functional	IGHV5S44	IGH	V	FALSE	2952
+Rattus norvegicus functional	IGHV5S45	IGH	V	TRUE	2953
+Rattus norvegicus non-functional	IGHV5S46	IGH	V	FALSE	2954
+Rattus norvegicus functional	IGHV5S47	IGH	V	TRUE	2955
+Rattus norvegicus non-functional	IGHV5S48	IGH	V	FALSE	2956
+Rattus norvegicus non-functional	IGHV5S49	IGH	V	FALSE	2957
+Rattus norvegicus non-functional	IGHV5S5	IGH	V	FALSE	2958
+Rattus norvegicus non-functional	IGHV5S50	IGH	V	FALSE	2959
+Rattus norvegicus non-functional	IGHV5S51	IGH	V	FALSE	2960
+Rattus norvegicus non-functional	IGHV5S52	IGH	V	FALSE	2961
+Rattus norvegicus non-functional	IGHV5S53	IGH	V	FALSE	2962
+Rattus norvegicus functional	IGHV5S54	IGH	V	TRUE	2963
+Rattus norvegicus non-functional	IGHV5S55	IGH	V	FALSE	2964
+Rattus norvegicus non-functional	IGHV5S56	IGH	V	FALSE	2965
+Rattus norvegicus functional	IGHV5S57	IGH	V	TRUE	2966
+Rattus norvegicus functional	IGHV5S58	IGH	V	TRUE	2967
+Rattus norvegicus non-functional	IGHV5S59	IGH	V	FALSE	2968
+Rattus norvegicus non-functional	IGHV5S6	IGH	V	FALSE	2969
+Rattus norvegicus non-functional	IGHV5S60	IGH	V	FALSE	2970
+Rattus norvegicus non-functional	IGHV5S61	IGH	V	FALSE	2971
+Rattus norvegicus non-functional	IGHV5S62	IGH	V	FALSE	2972
+Rattus norvegicus non-functional	IGHV5S63	IGH	V	FALSE	2973
+Rattus norvegicus functional	IGHV5S64	IGH	V	TRUE	2974
+Rattus norvegicus functional	IGHV5S65	IGH	V	TRUE	2975
+Rattus norvegicus non-functional	IGHV5S66	IGH	V	FALSE	2976
+Rattus norvegicus non-functional	IGHV5S67	IGH	V	FALSE	2977
+Rattus norvegicus non-functional	IGHV5S68	IGH	V	FALSE	2978
+Rattus norvegicus non-functional	IGHV5S69	IGH	V	FALSE	2979
+Rattus norvegicus non-functional	IGHV5S7	IGH	V	FALSE	2980
+Rattus norvegicus non-functional	IGHV5S70	IGH	V	FALSE	2981
+Rattus norvegicus non-functional	IGHV5S71	IGH	V	FALSE	2982
+Rattus norvegicus non-functional	IGHV5S72	IGH	V	FALSE	2983
+Rattus norvegicus non-functional	IGHV5S73	IGH	V	FALSE	2984
+Rattus norvegicus functional	IGHV5S74	IGH	V	TRUE	2985
+Rattus norvegicus non-functional	IGHV5S75	IGH	V	FALSE	2986
+Rattus norvegicus functional	IGHV5S8	IGH	V	TRUE	2987
+Rattus norvegicus non-functional	IGHV5S9	IGH	V	FALSE	2988
+Rattus norvegicus non-functional	IGHV6S1	IGH	V	FALSE	2989
+Rattus norvegicus functional	IGHV6S10	IGH	V	TRUE	2990
+Rattus norvegicus functional	IGHV6S11	IGH	V	TRUE	2991
+Rattus norvegicus non-functional	IGHV6S12	IGH	V	FALSE	2992
+Rattus norvegicus non-functional	IGHV6S13	IGH	V	FALSE	2993
+Rattus norvegicus functional	IGHV6S14	IGH	V	TRUE	2994
+Rattus norvegicus non-functional	IGHV6S15	IGH	V	FALSE	2995
+Rattus norvegicus non-functional	IGHV6S16	IGH	V	FALSE	2996
+Rattus norvegicus functional	IGHV6S17	IGH	V	TRUE	2997
+Rattus norvegicus functional	IGHV6S18	IGH	V	TRUE	2998
+Rattus norvegicus functional	IGHV6S19	IGH	V	TRUE	2999
+Rattus norvegicus non-functional	IGHV6S20	IGH	V	FALSE	3000
+Rattus norvegicus functional	IGHV6S3	IGH	V	TRUE	3001
+Rattus norvegicus non-functional	IGHV6S4	IGH	V	FALSE	3002
+Rattus norvegicus non-functional	IGHV6S5	IGH	V	FALSE	3003
+Rattus norvegicus functional	IGHV6S6	IGH	V	TRUE	3004
+Rattus norvegicus non-functional	IGHV6S7	IGH	V	FALSE	3005
+Rattus norvegicus non-functional	IGHV6S8	IGH	V	FALSE	3006
+Rattus norvegicus non-functional	IGHV6S9	IGH	V	FALSE	3007
+Rattus norvegicus functional	IGHV7S1	IGH	V	TRUE	3008
+Rattus norvegicus non-functional	IGHV7S10	IGH	V	FALSE	3009
+Rattus norvegicus non-functional	IGHV7S11	IGH	V	FALSE	3010
+Rattus norvegicus non-functional	IGHV7S12	IGH	V	FALSE	3011
+Rattus norvegicus functional	IGHV7S13	IGH	V	TRUE	3012
+Rattus norvegicus non-functional	IGHV7S14	IGH	V	FALSE	3013
+Rattus norvegicus non-functional	IGHV7S15	IGH	V	FALSE	3014
+Rattus norvegicus functional	IGHV7S16	IGH	V	TRUE	3015
+Rattus norvegicus non-functional	IGHV7S2	IGH	V	FALSE	3016
+Rattus norvegicus non-functional	IGHV7S3	IGH	V	FALSE	3017
+Rattus norvegicus functional	IGHV7S4	IGH	V	TRUE	3018
+Rattus norvegicus functional	IGHV7S5	IGH	V	TRUE	3019
+Rattus norvegicus functional	IGHV7S6	IGH	V	TRUE	3020
+Rattus norvegicus non-functional	IGHV7S8	IGH	V	FALSE	3021
+Rattus norvegicus non-functional	IGHV7S9	IGH	V	FALSE	3022
+Rattus norvegicus non-functional	IGHV8S1	IGH	V	FALSE	3023
+Rattus norvegicus functional	IGHV8S10	IGH	V	TRUE	3024
+Rattus norvegicus functional	IGHV8S11	IGH	V	TRUE	3025
+Rattus norvegicus non-functional	IGHV8S12	IGH	V	FALSE	3026
+Rattus norvegicus functional	IGHV8S13	IGH	V	TRUE	3027
+Rattus norvegicus non-functional	IGHV8S14	IGH	V	FALSE	3028
+Rattus norvegicus functional	IGHV8S15	IGH	V	TRUE	3029
+Rattus norvegicus functional	IGHV8S16	IGH	V	TRUE	3030
+Rattus norvegicus non-functional	IGHV8S17	IGH	V	FALSE	3031
+Rattus norvegicus functional	IGHV8S18	IGH	V	TRUE	3032
+Rattus norvegicus non-functional	IGHV8S19	IGH	V	FALSE	3033
+Rattus norvegicus functional	IGHV8S2	IGH	V	TRUE	3034
+Rattus norvegicus non-functional	IGHV8S3	IGH	V	FALSE	3035
+Rattus norvegicus non-functional	IGHV8S4	IGH	V	FALSE	3036
+Rattus norvegicus non-functional	IGHV8S5	IGH	V	FALSE	3037
+Rattus norvegicus non-functional	IGHV8S6	IGH	V	FALSE	3038
+Rattus norvegicus functional	IGHV8S7	IGH	V	TRUE	3039
+Rattus norvegicus non-functional	IGHV8S8	IGH	V	FALSE	3040
+Rattus norvegicus non-functional	IGHV8S9	IGH	V	FALSE	3041
+Rattus norvegicus non-functional	IGHV9S1	IGH	V	FALSE	3042
+Rattus norvegicus non-functional	IGHV9S2	IGH	V	FALSE	3043
+Rattus norvegicus functional	IGHV9S3	IGH	V	TRUE	3044
+Rattus norvegicus functional	IGHV9S4	IGH	V	TRUE	3045
+Rattus norvegicus non-functional	IGHV9S5	IGH	V	FALSE	3046
+Rattus norvegicus functional	IGHV9S6	IGH	V	TRUE	3047
+Rattus norvegicus non-functional	IGHV9S7	IGH	V	FALSE	3048
+Rattus norvegicus functional	IGHV9S8	IGH	V	TRUE	3049
+Rattus norvegicus functional	IGKJ1	IGK	J	TRUE	3050
+Rattus norvegicus functional	IGKJ2-1	IGK	J	TRUE	3051
+Rattus norvegicus functional	IGKJ2-2	IGK	J	TRUE	3052
+Rattus norvegicus functional	IGKJ2-3	IGK	J	TRUE	3053
+Rattus norvegicus non-functional	IGKJ3	IGK	J	FALSE	3054
+Rattus norvegicus functional	IGKJ4	IGK	J	TRUE	3055
+Rattus norvegicus functional	IGKJ5	IGK	J	TRUE	3056
+Rattus norvegicus functional	IGKV10S11	IGK	V	TRUE	3057
+Rattus norvegicus functional	IGKV10S12	IGK	V	TRUE	3058
+Rattus norvegicus functional	IGKV10S5	IGK	V	TRUE	3059
+Rattus norvegicus functional	IGKV10S6	IGK	V	TRUE	3060
+Rattus norvegicus functional	IGKV10S9	IGK	V	TRUE	3061
+Rattus norvegicus functional	IGKV12S1	IGK	V	TRUE	3062
+Rattus norvegicus functional	IGKV12S11	IGK	V	TRUE	3063
+Rattus norvegicus non-functional	IGKV12S12	IGK	V	FALSE	3064
+Rattus norvegicus functional	IGKV12S14	IGK	V	TRUE	3065
+Rattus norvegicus functional	IGKV12S16	IGK	V	TRUE	3066
+Rattus norvegicus functional	IGKV12S17	IGK	V	TRUE	3067
+Rattus norvegicus functional	IGKV12S20	IGK	V	TRUE	3068
+Rattus norvegicus functional	IGKV12S22	IGK	V	TRUE	3069
+Rattus norvegicus functional	IGKV12S24	IGK	V	TRUE	3070
+Rattus norvegicus functional	IGKV12S25	IGK	V	TRUE	3071
+Rattus norvegicus functional	IGKV12S26	IGK	V	TRUE	3072
+Rattus norvegicus non-functional	IGKV12S27	IGK	V	FALSE	3073
+Rattus norvegicus non-functional	IGKV12S28	IGK	V	FALSE	3074
+Rattus norvegicus functional	IGKV12S29	IGK	V	TRUE	3075
+Rattus norvegicus functional	IGKV12S30	IGK	V	TRUE	3076
+Rattus norvegicus functional	IGKV12S31	IGK	V	TRUE	3077
+Rattus norvegicus functional	IGKV12S32	IGK	V	TRUE	3078
+Rattus norvegicus functional	IGKV12S34	IGK	V	TRUE	3079
+Rattus norvegicus functional	IGKV12S36	IGK	V	TRUE	3080
+Rattus norvegicus functional	IGKV12S38	IGK	V	TRUE	3081
+Rattus norvegicus functional	IGKV12S39	IGK	V	TRUE	3082
+Rattus norvegicus non-functional	IGKV12S5	IGK	V	FALSE	3083
+Rattus norvegicus functional	IGKV12S7	IGK	V	TRUE	3084
+Rattus norvegicus functional	IGKV12S8	IGK	V	TRUE	3085
+Rattus norvegicus functional	IGKV12S9	IGK	V	TRUE	3086
+Rattus norvegicus non-functional	IGKV13S7	IGK	V	FALSE	3087
+Rattus norvegicus functional	IGKV14S1	IGK	V	TRUE	3088
+Rattus norvegicus functional	IGKV14S13	IGK	V	TRUE	3089
+Rattus norvegicus functional	IGKV14S14	IGK	V	TRUE	3090
+Rattus norvegicus functional	IGKV14S15	IGK	V	TRUE	3091
+Rattus norvegicus functional	IGKV14S16	IGK	V	TRUE	3092
+Rattus norvegicus functional	IGKV14S18	IGK	V	TRUE	3093
+Rattus norvegicus functional	IGKV14S19	IGK	V	TRUE	3094
+Rattus norvegicus functional	IGKV14S2	IGK	V	TRUE	3095
+Rattus norvegicus functional	IGKV14S22	IGK	V	TRUE	3096
+Rattus norvegicus non-functional	IGKV14S4	IGK	V	FALSE	3097
+Rattus norvegicus functional	IGKV14S8	IGK	V	TRUE	3098
+Rattus norvegicus functional	IGKV14S9	IGK	V	TRUE	3099
+Rattus norvegicus non-functional	IGKV15S2	IGK	V	FALSE	3100
+Rattus norvegicus non-functional	IGKV15S3	IGK	V	FALSE	3101
+Rattus norvegicus functional	IGKV15S4	IGK	V	TRUE	3102
+Rattus norvegicus functional	IGKV16S1	IGK	V	TRUE	3103
+Rattus norvegicus non-functional	IGKV16S2	IGK	V	FALSE	3104
+Rattus norvegicus functional	IGKV17S1	IGK	V	TRUE	3105
+Rattus norvegicus functional	IGKV18S1	IGK	V	TRUE	3106
+Rattus norvegicus functional	IGKV19S1	IGK	V	TRUE	3107
+Rattus norvegicus functional	IGKV19S2	IGK	V	TRUE	3108
+Rattus norvegicus functional	IGKV1S1	IGK	V	TRUE	3109
+Rattus norvegicus functional	IGKV1S12	IGK	V	TRUE	3110
+Rattus norvegicus functional	IGKV1S14	IGK	V	TRUE	3111
+Rattus norvegicus non-functional	IGKV1S15	IGK	V	FALSE	3112
+Rattus norvegicus functional	IGKV1S18	IGK	V	TRUE	3113
+Rattus norvegicus functional	IGKV1S19	IGK	V	TRUE	3114
+Rattus norvegicus functional	IGKV1S21	IGK	V	TRUE	3115
+Rattus norvegicus functional	IGKV1S22	IGK	V	TRUE	3116
+Rattus norvegicus functional	IGKV1S23	IGK	V	TRUE	3117
+Rattus norvegicus functional	IGKV1S24	IGK	V	TRUE	3118
+Rattus norvegicus functional	IGKV1S25	IGK	V	TRUE	3119
+Rattus norvegicus functional	IGKV1S26	IGK	V	TRUE	3120
+Rattus norvegicus functional	IGKV1S27	IGK	V	TRUE	3121
+Rattus norvegicus functional	IGKV1S28	IGK	V	TRUE	3122
+Rattus norvegicus functional	IGKV1S29	IGK	V	TRUE	3123
+Rattus norvegicus functional	IGKV1S30	IGK	V	TRUE	3124
+Rattus norvegicus functional	IGKV1S31	IGK	V	TRUE	3125
+Rattus norvegicus non-functional	IGKV1S32	IGK	V	FALSE	3126
+Rattus norvegicus functional	IGKV1S34	IGK	V	TRUE	3127
+Rattus norvegicus functional	IGKV1S42	IGK	V	TRUE	3128
+Rattus norvegicus functional	IGKV1S5	IGK	V	TRUE	3129
+Rattus norvegicus functional	IGKV1S7	IGK	V	TRUE	3130
+Rattus norvegicus functional	IGKV1S8	IGK	V	TRUE	3131
+Rattus norvegicus functional	IGKV20S1	IGK	V	TRUE	3132
+Rattus norvegicus functional	IGKV21S2	IGK	V	TRUE	3133
+Rattus norvegicus functional	IGKV21S3	IGK	V	TRUE	3134
+Rattus norvegicus functional	IGKV22S1	IGK	V	TRUE	3135
+Rattus norvegicus functional	IGKV22S2	IGK	V	TRUE	3136
+Rattus norvegicus functional	IGKV22S4	IGK	V	TRUE	3137
+Rattus norvegicus functional	IGKV22S5	IGK	V	TRUE	3138
+Rattus norvegicus non-functional	IGKV22S6	IGK	V	FALSE	3139
+Rattus norvegicus functional	IGKV22S7	IGK	V	TRUE	3140
+Rattus norvegicus non-functional	IGKV22S8	IGK	V	FALSE	3141
+Rattus norvegicus functional	IGKV22S9	IGK	V	TRUE	3142
+Rattus norvegicus functional	IGKV2S11	IGK	V	TRUE	3143
+Rattus norvegicus functional	IGKV2S16	IGK	V	TRUE	3144
+Rattus norvegicus functional	IGKV2S17	IGK	V	TRUE	3145
+Rattus norvegicus non-functional	IGKV2S20	IGK	V	FALSE	3146
+Rattus norvegicus non-functional	IGKV2S21	IGK	V	FALSE	3147
+Rattus norvegicus non-functional	IGKV2S22	IGK	V	FALSE	3148
+Rattus norvegicus non-functional	IGKV2S23	IGK	V	FALSE	3149
+Rattus norvegicus non-functional	IGKV2S24	IGK	V	FALSE	3150
+Rattus norvegicus functional	IGKV2S25	IGK	V	TRUE	3151
+Rattus norvegicus functional	IGKV2S26	IGK	V	TRUE	3152
+Rattus norvegicus functional	IGKV2S27	IGK	V	TRUE	3153
+Rattus norvegicus functional	IGKV2S3	IGK	V	TRUE	3154
+Rattus norvegicus functional	IGKV2S6	IGK	V	TRUE	3155
+Rattus norvegicus functional	IGKV2S9	IGK	V	TRUE	3156
+Rattus norvegicus functional	IGKV3S1	IGK	V	TRUE	3157
+Rattus norvegicus functional	IGKV3S10	IGK	V	TRUE	3158
+Rattus norvegicus functional	IGKV3S11	IGK	V	TRUE	3159
+Rattus norvegicus non-functional	IGKV3S12	IGK	V	FALSE	3160
+Rattus norvegicus functional	IGKV3S13	IGK	V	TRUE	3161
+Rattus norvegicus non-functional	IGKV3S14	IGK	V	FALSE	3162
+Rattus norvegicus non-functional	IGKV3S15	IGK	V	FALSE	3163
+Rattus norvegicus functional	IGKV3S17	IGK	V	TRUE	3164
+Rattus norvegicus functional	IGKV3S18	IGK	V	TRUE	3165
+Rattus norvegicus functional	IGKV3S19	IGK	V	TRUE	3166
+Rattus norvegicus functional	IGKV3S5	IGK	V	TRUE	3167
+Rattus norvegicus functional	IGKV3S6	IGK	V	TRUE	3168
+Rattus norvegicus non-functional	IGKV3S7	IGK	V	FALSE	3169
+Rattus norvegicus functional	IGKV3S8	IGK	V	TRUE	3170
+Rattus norvegicus functional	IGKV3S9	IGK	V	TRUE	3171
+Rattus norvegicus functional	IGKV4S10	IGK	V	TRUE	3172
+Rattus norvegicus functional	IGKV4S11	IGK	V	TRUE	3173
+Rattus norvegicus functional	IGKV4S12	IGK	V	TRUE	3174
+Rattus norvegicus functional	IGKV4S13	IGK	V	TRUE	3175
+Rattus norvegicus functional	IGKV4S14	IGK	V	TRUE	3176
+Rattus norvegicus functional	IGKV4S15	IGK	V	TRUE	3177
+Rattus norvegicus functional	IGKV4S16	IGK	V	TRUE	3178
+Rattus norvegicus functional	IGKV4S18	IGK	V	TRUE	3179
+Rattus norvegicus functional	IGKV4S19	IGK	V	TRUE	3180
+Rattus norvegicus functional	IGKV4S2	IGK	V	TRUE	3181
+Rattus norvegicus functional	IGKV4S20	IGK	V	TRUE	3182
+Rattus norvegicus functional	IGKV4S21	IGK	V	TRUE	3183
+Rattus norvegicus functional	IGKV4S3	IGK	V	TRUE	3184
+Rattus norvegicus functional	IGKV4S4	IGK	V	TRUE	3185
+Rattus norvegicus functional	IGKV4S5	IGK	V	TRUE	3186
+Rattus norvegicus functional	IGKV4S6	IGK	V	TRUE	3187
+Rattus norvegicus functional	IGKV4S7	IGK	V	TRUE	3188
+Rattus norvegicus functional	IGKV4S8	IGK	V	TRUE	3189
+Rattus norvegicus functional	IGKV4S9	IGK	V	TRUE	3190
+Rattus norvegicus non-functional	IGKV5S1	IGK	V	FALSE	3191
+Rattus norvegicus functional	IGKV5S10	IGK	V	TRUE	3192
+Rattus norvegicus functional	IGKV5S12	IGK	V	TRUE	3193
+Rattus norvegicus functional	IGKV5S2	IGK	V	TRUE	3194
+Rattus norvegicus non-functional	IGKV5S4	IGK	V	FALSE	3195
+Rattus norvegicus functional	IGKV5S5	IGK	V	TRUE	3196
+Rattus norvegicus functional	IGKV5S6	IGK	V	TRUE	3197
+Rattus norvegicus functional	IGKV6S10	IGK	V	TRUE	3198
+Rattus norvegicus functional	IGKV6S11	IGK	V	TRUE	3199
+Rattus norvegicus non-functional	IGKV6S2	IGK	V	FALSE	3200
+Rattus norvegicus non-functional	IGKV6S3	IGK	V	FALSE	3201
+Rattus norvegicus functional	IGKV6S4	IGK	V	TRUE	3202
+Rattus norvegicus functional	IGKV6S5	IGK	V	TRUE	3203
+Rattus norvegicus non-functional	IGKV6S6	IGK	V	FALSE	3204
+Rattus norvegicus functional	IGKV6S7	IGK	V	TRUE	3205
+Rattus norvegicus functional	IGKV6S8	IGK	V	TRUE	3206
+Rattus norvegicus functional	IGKV6S9	IGK	V	TRUE	3207
+Rattus norvegicus functional	IGKV7S1	IGK	V	TRUE	3208
+Rattus norvegicus functional	IGKV8S10	IGK	V	TRUE	3209
+Rattus norvegicus non-functional	IGKV8S11	IGK	V	FALSE	3210
+Rattus norvegicus non-functional	IGKV8S2	IGK	V	FALSE	3211
+Rattus norvegicus functional	IGKV8S4	IGK	V	TRUE	3212
+Rattus norvegicus functional	IGKV8S5	IGK	V	TRUE	3213
+Rattus norvegicus functional	IGKV8S6	IGK	V	TRUE	3214
+Rattus norvegicus functional	IGKV8S7	IGK	V	TRUE	3215
+Rattus norvegicus functional	IGKV8S8	IGK	V	TRUE	3216
+Rattus norvegicus functional	IGKV8S9	IGK	V	TRUE	3217
+Rattus norvegicus functional	IGKV9S1	IGK	V	TRUE	3218
+Rattus norvegicus functional	IGKV9S2	IGK	V	TRUE	3219
+Rattus norvegicus functional	IGLJ1	IGL	J	TRUE	3220
+Rattus norvegicus non-functional	IGLJ2	IGL	J	FALSE	3221
+Rattus norvegicus functional	IGLJ3	IGL	J	TRUE	3222
+Rattus norvegicus non-functional	IGLJ4	IGL	J	FALSE	3223
+Rattus norvegicus functional	IGLV1S1	IGL	V	TRUE	3224
+Rattus norvegicus functional	IGLV2S1	IGL	V	TRUE	3225
+Rattus norvegicus functional	IGLV3S1	IGL	V	TRUE	3226
+Rattus norvegicus functional	IGLV3S2	IGL	V	TRUE	3227
+Rattus norvegicus functional	IGLV3S3	IGL	V	TRUE	3228
+Rattus norvegicus functional	IGLV3S4	IGL	V	TRUE	3229
+Rattus norvegicus functional	IGLV3S5	IGL	V	TRUE	3230
+Sus scrofa functional	IGHD	IGH	D	TRUE	3231
+Sus scrofa functional	IGHD1	IGH	D	TRUE	3232
+Sus scrofa functional	IGHD2	IGH	D	TRUE	3233
+Sus scrofa functional	IGHD3	IGH	D	TRUE	3234
+Sus scrofa functional	IGHD4	IGH	D	TRUE	3235
+Sus scrofa functional	IGHJ1	IGH	J	TRUE	3236
+Sus scrofa functional	IGHJ2	IGH	J	TRUE	3237
+Sus scrofa functional	IGHJ3	IGH	J	TRUE	3238
+Sus scrofa functional	IGHJ4	IGH	J	TRUE	3239
+Sus scrofa functional	IGHJ5	IGH	J	TRUE	3240
+Sus scrofa non-functional	IGHV1-1	IGH	V	FALSE	3241
+Sus scrofa functional	IGHV1-10	IGH	V	TRUE	3242
+Sus scrofa functional	IGHV1-11	IGH	V	TRUE	3243
+Sus scrofa functional	IGHV1-12	IGH	V	TRUE	3244
+Sus scrofa non-functional	IGHV1-13	IGH	V	FALSE	3245
+Sus scrofa functional	IGHV1-14	IGH	V	TRUE	3246
+Sus scrofa functional	IGHV1-15	IGH	V	TRUE	3247
+Sus scrofa functional	IGHV1-2	IGH	V	TRUE	3248
+Sus scrofa non-functional	IGHV1-3	IGH	V	FALSE	3249
+Sus scrofa functional	IGHV1-4	IGH	V	TRUE	3250
+Sus scrofa functional	IGHV1-5	IGH	V	TRUE	3251
+Sus scrofa functional	IGHV1-6	IGH	V	TRUE	3252
+Sus scrofa non-functional	IGHV1-7	IGH	V	FALSE	3253
+Sus scrofa functional	IGHV1-8	IGH	V	TRUE	3254
+Sus scrofa non-functional	IGHV1-9	IGH	V	FALSE	3255
+Sus scrofa functional	IGHV1S2	IGH	V	TRUE	3256
+Sus scrofa non-functional	IGHV1S3	IGH	V	FALSE	3257
+Sus scrofa functional	IGHV1S5	IGH	V	TRUE	3258
+Sus scrofa functional	IGHV1S6	IGH	V	TRUE	3259
+Sus scrofa non-functional	IGHV1S7	IGH	V	FALSE	3260
+Sus scrofa non-functional	IGHV1S8	IGH	V	FALSE	3261
+Sus scrofa functional	IGKJ1	IGK	J	TRUE	3262
+Sus scrofa functional	IGKJ2	IGK	J	TRUE	3263
+Sus scrofa functional	IGKJ3	IGK	J	TRUE	3264
+Sus scrofa functional	IGKJ4	IGK	J	TRUE	3265
+Sus scrofa functional	IGKJ5	IGK	J	TRUE	3266
+Sus scrofa functional	IGKV1-11	IGK	V	TRUE	3267
+Sus scrofa functional	IGKV1-14	IGK	V	TRUE	3268
+Sus scrofa functional	IGKV1-7	IGK	V	TRUE	3269
+Sus scrofa functional	IGKV1-9	IGK	V	TRUE	3270
+Sus scrofa functional	IGKV1D-11	IGK	V	TRUE	3271
+Sus scrofa functional	IGKV2-10	IGK	V	TRUE	3272
+Sus scrofa functional	IGKV2-12	IGK	V	TRUE	3273
+Sus scrofa functional	IGKV2-13	IGK	V	TRUE	3274
+Sus scrofa non-functional	IGKV2-5	IGK	V	FALSE	3275
+Sus scrofa functional	IGKV2-6	IGK	V	TRUE	3276
+Sus scrofa functional	IGKV2-8	IGK	V	TRUE	3277
+Sus scrofa non-functional	IGKV2/OR3-1	IGK	V	FALSE	3278
+Sus scrofa functional	IGKV2D-12	IGK	V	TRUE	3279
+Sus scrofa non-functional	IGKV3-3	IGK	V	FALSE	3280
+Sus scrofa non-functional	IGKV5-4	IGK	V	FALSE	3281
+Sus scrofa functional	IGLJ2	IGL	J	TRUE	3282
+Sus scrofa functional	IGLJ3	IGL	J	TRUE	3283
+Sus scrofa functional	IGLJ4	IGL	J	TRUE	3284
+Sus scrofa non-functional	IGLV(III)-8	IGL	V	FALSE	3285
+Sus scrofa non-functional	IGLV1-15	IGL	V	FALSE	3286
+Sus scrofa non-functional	IGLV1-20	IGL	V	FALSE	3287
+Sus scrofa functional	IGLV2-6	IGL	V	TRUE	3288
+Sus scrofa non-functional	IGLV3-1	IGL	V	FALSE	3289
+Sus scrofa functional	IGLV3-2	IGL	V	TRUE	3290
+Sus scrofa functional	IGLV3-3	IGL	V	TRUE	3291
+Sus scrofa functional	IGLV3-4	IGL	V	TRUE	3292
+Sus scrofa functional	IGLV3-5	IGL	V	TRUE	3293
+Sus scrofa non-functional	IGLV5-11	IGL	V	FALSE	3294
+Sus scrofa functional	IGLV5-14	IGL	V	TRUE	3295
+Sus scrofa non-functional	IGLV5-17	IGL	V	FALSE	3296
+Sus scrofa non-functional	IGLV5-22	IGL	V	FALSE	3297
+Sus scrofa non-functional	IGLV7-7	IGL	V	FALSE	3298
+Sus scrofa non-functional	IGLV7-9	IGL	V	FALSE	3299
+Sus scrofa functional	IGLV8-10	IGL	V	TRUE	3300
+Sus scrofa functional	IGLV8-13	IGL	V	TRUE	3301
+Sus scrofa non-functional	IGLV8-16	IGL	V	FALSE	3302
+Sus scrofa functional	IGLV8-18	IGL	V	TRUE	3303
+Sus scrofa functional	IGLV8-19	IGL	V	TRUE	3304
+Sus scrofa non-functional	IGLV8-21	IGL	V	FALSE	3305
--- a/report_clonality/jquery-1.11.0.min.js	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/jquery-1.11.0.min.js	Thu Feb 25 13:36:15 2021 +0000
@@ -1,4 +1,4 @@
-/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
-}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
-},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").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});
+/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
+}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
+},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").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});
--- a/report_clonality/naive_cdr3_char.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_cdr3_char.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,101 +1,101 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft Word 14 (filtered)">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-.MsoChpDefault
-	{font-family:"Calibri","sans-serif";}
-.MsoPapDefault
-	{margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;}
-div.WordSection1
-	{page:WordSection1;}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{mso-style-priority:1;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	mso-bidi-font-family:"Times New Roman";}
--->
-</style>
-
-</head>
-
-<body lang=EN-US>
-
-<div class=WordSection1>
-
-<p class=MsoNormalCxSpFirst style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><b><u><span style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>CDR3 characteristics tab</span></u></b></p>
-
-<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>This tab gives information on the
-different characteristics of the CDR3.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><b><span lang=EN-GB style='font-size:
-12.0pt;font-family:"Times New Roman","serif"'>Graphs</span></b></p>
-
-<p class=MsoNoSpacing style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>length distribution of CDR3</span></u></p>
-
-<p class=MsoNoSpacing style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><span style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>Graph visualizing for each donor the
-distribution of the CDR3 length in amino acids between all sequences.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>Amino acid composition of CDR3</span></u></p>
-
-<p class=MsoNoSpacing style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>Bar graph visualizing for each donor how
-frequent each amino acid is used in the CDR3 of all sequences. The red colour
-in the background indicate positively charged amino acids, and the blue colour
-in the background indicate negatively charged amino acids. The amino acids are
-ordered from hydrophilic (left) to hydrophobic (right). </span></p>
-
-<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><b><span lang=EN-GB style='font-size:
-12.0pt;font-family:"Times New Roman","serif"'>Table</span></b></p>
-
-<p class=MsoNoSpacing style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>Table showing for each donor the median
-CDR3 length.</span></p>
-
-<p class=MsoNormal><span lang=EN-GB>&nbsp;</span></p>
-
-</div>
-
-</body>
-
-</html>
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=Generator content="Microsoft Word 14 (filtered)">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+.MsoChpDefault
+	{font-family:"Calibri","sans-serif";}
+.MsoPapDefault
+	{margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;}
+div.WordSection1
+	{page:WordSection1;}
+p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
+	{mso-style-priority:1;
+	mso-style-unhide:no;
+	mso-style-qformat:yes;
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;
+	mso-bidi-font-family:"Times New Roman";}
+-->
+</style>
+
+</head>
+
+<body lang=EN-US>
+
+<div class=WordSection1>
+
+<p class=MsoNormalCxSpFirst style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><b><u><span style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>CDR3 characteristics tab</span></u></b></p>
+
+<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>This tab gives information on the
+different characteristics of the CDR3.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><b><span lang=EN-GB style='font-size:
+12.0pt;font-family:"Times New Roman","serif"'>Graphs</span></b></p>
+
+<p class=MsoNoSpacing style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>length distribution of CDR3</span></u></p>
+
+<p class=MsoNoSpacing style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><span style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>Graph visualizing for each donor the
+distribution of the CDR3 length in amino acids between all sequences.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>Amino acid composition of CDR3</span></u></p>
+
+<p class=MsoNoSpacing style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>Bar graph visualizing for each donor how
+frequent each amino acid is used in the CDR3 of all sequences. The red colour
+in the background indicate positively charged amino acids, and the blue colour
+in the background indicate negatively charged amino acids. The amino acids are
+ordered from hydrophilic (left) to hydrophobic (right). </span></p>
+
+<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><b><span lang=EN-GB style='font-size:
+12.0pt;font-family:"Times New Roman","serif"'>Table</span></b></p>
+
+<p class=MsoNoSpacing style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>Table showing for each donor the median
+CDR3 length.</span></p>
+
+<p class=MsoNormal><span lang=EN-GB>&nbsp;</span></p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/naive_circos.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_circos.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,59 +1,59 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft Word 14 (filtered)">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-.MsoChpDefault
-	{font-family:"Calibri","sans-serif";}
-.MsoPapDefault
-	{margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;}
-div.WordSection1
-	{page:WordSection1;}
--->
-</style>
-
-</head>
-
-<body lang=EN-US>
-
-<div class=WordSection1>
-
-<p class=MsoNormal><span style='font-size:12.0pt;line-height:115%;font-family:
-"Times New Roman","serif"'>Martin Krzywinski, Jacqueline Schein, &#304;nanç
-Birol, Joseph Connors, Randy Gascoyne, Doug Horsman, Steven J. Jones and Marco
-A. Marra (2009). Circos: An information aesthetic for comparative genomics. In <i>Genome
-Research 10.1101/gr.092759.109</i>.</span></p>
-
-<p class=MsoNormal><span style='font-size:12.0pt;line-height:115%;font-family:
-"Times New Roman","serif"'>Circos plot showing the V-D, V-J, and D-J gen usage.
-The thicker the line the more frequent this gene combination is used.</span></p>
-
-</div>
-
-</body>
-
-</html>
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=Generator content="Microsoft Word 14 (filtered)">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
+	{margin:0in;
+	margin-bottom:.0001pt;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+.MsoChpDefault
+	{font-family:"Calibri","sans-serif";}
+.MsoPapDefault
+	{margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+
+</head>
+
+<body lang=EN-US>
+
+<div class=WordSection1>
+
+<p class=MsoNormal><span style='font-size:12.0pt;line-height:115%;font-family:
+"Times New Roman","serif"'>Martin Krzywinski, Jacqueline Schein, &#304;nanç
+Birol, Joseph Connors, Randy Gascoyne, Doug Horsman, Steven J. Jones and Marco
+A. Marra (2009). Circos: An information aesthetic for comparative genomics. In <i>Genome
+Research 10.1101/gr.092759.109</i>.</span></p>
+
+<p class=MsoNormal><span style='font-size:12.0pt;line-height:115%;font-family:
+"Times New Roman","serif"'>Circos plot showing the V-D, V-J, and D-J gen usage.
+The thicker the line the more frequent this gene combination is used.</span></p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/naive_clonality.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_clonality.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,67 +1,67 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft Word 14 (filtered)">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-.MsoChpDefault
-	{font-family:"Calibri","sans-serif";}
-.MsoPapDefault
-	{margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;}
-div.WordSection1
-	{page:WordSection1;}
--->
-</style>
-
-</head>
-
-<body lang=EN-US>
-
-<div class=WordSection1>
-
-<p class=MsoNoSpacingCxSpFirst style='text-align:justify'><span
-style='font-size:12.0pt;font-family:"Times New Roman","serif"'>For each donor a
-subtab is provided containing information on the sequence overlap between
-replicates of the different replicates of one donor. Dependent on the settings
-of the Shared clonal types / clonality filter a clonality score is given.  The clonality
-score  is calculated according to the formula described by </span><a
-name="OLE_LINK13"></a><a name="OLE_LINK12"></a><a name="OLE_LINK11"><span
-lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif"'>Boyd
-et al, PMID: 20161664. </span></a></p>
-
-<p class=MsoNoSpacingCxSpLast style='text-align:justify'><span lang=EN-GB
-style='font-size:12.0pt;font-family:"Times New Roman","serif"'>For each
-individual replicate the number of reads is reported. In addition, the number
-of coincidences between the different replicates of the same donor are reported.
-</span></p>
-
-<p class=MsoNormal>&nbsp;</p>
-
-</div>
-
-</body>
-
-</html>
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=Generator content="Microsoft Word 14 (filtered)">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
+	{margin:0in;
+	margin-bottom:.0001pt;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+.MsoChpDefault
+	{font-family:"Calibri","sans-serif";}
+.MsoPapDefault
+	{margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+
+</head>
+
+<body lang=EN-US>
+
+<div class=WordSection1>
+
+<p class=MsoNoSpacingCxSpFirst style='text-align:justify'><span
+style='font-size:12.0pt;font-family:"Times New Roman","serif"'>For each donor a
+subtab is provided containing information on the sequence overlap between
+replicates of the different replicates of one donor. Dependent on the settings
+of the Shared clonal types / clonality filter a clonality score is given.  The clonality
+score  is calculated according to the formula described by </span><a
+name="OLE_LINK13"></a><a name="OLE_LINK12"></a><a name="OLE_LINK11"><span
+lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif"'>Boyd
+et al, PMID: 20161664. </span></a></p>
+
+<p class=MsoNoSpacingCxSpLast style='text-align:justify'><span lang=EN-GB
+style='font-size:12.0pt;font-family:"Times New Roman","serif"'>For each
+individual replicate the number of reads is reported. In addition, the number
+of coincidences between the different replicates of the same donor are reported.
+</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/naive_compare.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_compare.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,61 +1,61 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft Word 14 (filtered)">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-.MsoChpDefault
-	{font-family:"Calibri","sans-serif";}
-.MsoPapDefault
-	{margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;}
-div.WordSection1
-	{page:WordSection1;}
--->
-</style>
-
-</head>
-
-<body lang=EN-US>
-
-<div class=WordSection1>
-
-<p class=MsoNormalCxSpFirst style='text-align:justify'><span style='font-size:
-12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The tab allows
-you to compare the VD, VJ and DJ heatmaps of multiple donors to each other. </span></p>
-
-<p class=MsoNormal><span style='font-size:12.0pt;line-height:115%;font-family:
-"Times New Roman","serif"'>By ticking the include box of a donor, the three
-heatmaps of this donor is visualized underneath eachother. By clicking the
-include box of multiple replicates the heatmaps of these replicates are visualized
-next to each other allowing easy comparison of heatmaps. </span></p>
-
-<p class=MsoNormal>&nbsp;</p>
-
-</div>
-
-</body>
-
-</html>
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=Generator content="Microsoft Word 14 (filtered)">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
+	{margin:0in;
+	margin-bottom:.0001pt;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+.MsoChpDefault
+	{font-family:"Calibri","sans-serif";}
+.MsoPapDefault
+	{margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+
+</head>
+
+<body lang=EN-US>
+
+<div class=WordSection1>
+
+<p class=MsoNormalCxSpFirst style='text-align:justify'><span style='font-size:
+12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The tab allows
+you to compare the VD, VJ and DJ heatmaps of multiple donors to each other. </span></p>
+
+<p class=MsoNormal><span style='font-size:12.0pt;line-height:115%;font-family:
+"Times New Roman","serif"'>By ticking the include box of a donor, the three
+heatmaps of this donor is visualized underneath eachother. By clicking the
+include box of multiple replicates the heatmaps of these replicates are visualized
+next to each other allowing easy comparison of heatmaps. </span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/naive_downloads.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_downloads.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,197 +1,197 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft Word 14 (filtered)">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-.MsoChpDefault
-	{font-family:"Calibri","sans-serif";}
-.MsoPapDefault
-	{margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;}
-div.WordSection1
-	{page:WordSection1;}
--->
-</style>
-
-</head>
-
-<body lang=EN-US>
-
-<div class=WordSection1>
-
-<p class=MsoNormalCxSpFirst style='text-align:justify'><b><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Downloads
-tab</span></u></b></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Description</span></b></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-filtered dataset:</span></u><span style='font-size:12.0pt;line-height:115%;
-font-family:"Times New Roman","serif"'> <a name="OLE_LINK15"></a><a
-name="OLE_LINK14">Allows you to download information on V D and J gene usage,
-the junctions and the amino acid sequence of the sequences that passed the chosen
-filter settings. Note: this file contains only 1 sequences of a replicate
-sequence. </a></span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Gene
-frequencies</span></b></p>
-
-<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>The dataset used to generate the distribution
-of V gene families graph:</span></u><span style='font-size:12.0pt;font-family:
-"Times New Roman","serif"'> Downloads a table with information used to generate
-the distribution of V gene families graph.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>The dataset used to generate  the
-distribution of D gene families graph: </span></u><span style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>Downloads a table with information used
-to generate the distribution of D gene families graph.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-dataset used to generate the relative frequency of V gene usage graph:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the data used to generate the relative frequency of V gene usage
-graph. In addition information on the chromosomal order of the V genes can be
-found.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-dataset used to generate the relative frequency of D gene usage graph:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the data used to generate the relative frequency of D gene usage
-graph. In addition information on the chromosomal order of the D genes can be
-found.<u> </u></span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-dataset used to generate the relative frequency of J gene usage graph: </span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Downloads
-the data used to generate the relative frequency of J gene usage graph. In
-addition information on the chromosomal order of the J genes can be found.<u> </u></span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span lang=EN-GB
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif";
-color:black'>The dataset used to generate the relative frequency of the D
-reading frame graph</span></u><span lang=EN-GB style='font-size:12.0pt;
-line-height:115%;font-family:"Times New Roman","serif";color:black'>: Downloads
-the data used to generate the relative frequency of the D reading frame. </span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span lang=EN-GB
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif";
-color:black'>CDR3 characteristics</span></b></p>
-
-<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>The dataset used to generate the CDR3
-length frequency graph:</span></u><span style='font-size:12.0pt;font-family:
-"Times New Roman","serif"'> Downloads a table with information used for the
-length distribution of CDR3 plot. </span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-dataset used to generate the Amino Acid Composition in the CDR3 graph:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the frequency of the different amino acids in the CDR3 of all
-filtered sequences. This data set is used for the generation of the Amino Acid
-Composition in the CDR3 graph. In addition the order of amino acids based on hydrophobicity
-in included. </span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Heatmaps</span></b></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-data used to generate the VD heatmap for “donor name”:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the data set used for the generation of the VD heatmap. For each
-uploaded donor a separate download is generated.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-data used to generate the VJ heatmap for “donor name”:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the data set used for the generation of the VJ heatmap. For each
-uploaded donor a separate download is generated.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-data used to generate the DJ heatmap for “sample name”:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the data set used for the generation of the DJ heatmap. For each
-uploaded donor a separate download is generated.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Circos</span></b></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-data used to generate the VD circus plots for “donor name”:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the data set used for the generation of the VD heatmap. For each
-uploaded donor a separate download is generated.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-data used to generate the VJ circus plots for “donor name”:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the data set used for the generation of the VJ heatmap. For each
-uploaded donor a separate download is generated.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-data used to generate the DJ circus plots for “sample name”:</span></u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-Downloads the data set used for the generation of the DJ heatmap. For each
-uploaded donor a separate download is generated.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Clonality</span></b></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
-dataset used to calculate clonality score: </span></u><span style='font-size:
-12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Allows you to
-download information on V D and J gene usage, the junctions and the amino acid
-sequence of the sequences that passed the chosen filter settings. Note: this
-file contains all the replicate sequences form the different input files.</span></p>
-
-<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Sequences
-that are present in more than one replicate:</span></u><span style='font-size:
-12.0pt;line-height:115%;font-family:"Times New Roman","serif"'> Allows you to
-download a table containing all the sequences that were present in more than
-one replicate. It provides the concidence type, clonaltype, sequence name,
-replicate number, and the nucleotide sequence</span></p>
-
-<p class=MsoNormal>&nbsp;</p>
-
-</div>
-
-</body>
-
-</html>
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=Generator content="Microsoft Word 14 (filtered)">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+.MsoChpDefault
+	{font-family:"Calibri","sans-serif";}
+.MsoPapDefault
+	{margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+
+</head>
+
+<body lang=EN-US>
+
+<div class=WordSection1>
+
+<p class=MsoNormalCxSpFirst style='text-align:justify'><b><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Downloads
+tab</span></u></b></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Description</span></b></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+filtered dataset:</span></u><span style='font-size:12.0pt;line-height:115%;
+font-family:"Times New Roman","serif"'> <a name="OLE_LINK15"></a><a
+name="OLE_LINK14">Allows you to download information on V D and J gene usage,
+the junctions and the amino acid sequence of the sequences that passed the chosen
+filter settings. Note: this file contains only 1 sequences of a replicate
+sequence. </a></span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Gene
+frequencies</span></b></p>
+
+<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>The dataset used to generate the distribution
+of V gene families graph:</span></u><span style='font-size:12.0pt;font-family:
+"Times New Roman","serif"'> Downloads a table with information used to generate
+the distribution of V gene families graph.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>The dataset used to generate  the
+distribution of D gene families graph: </span></u><span style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>Downloads a table with information used
+to generate the distribution of D gene families graph.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+dataset used to generate the relative frequency of V gene usage graph:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the data used to generate the relative frequency of V gene usage
+graph. In addition information on the chromosomal order of the V genes can be
+found.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+dataset used to generate the relative frequency of D gene usage graph:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the data used to generate the relative frequency of D gene usage
+graph. In addition information on the chromosomal order of the D genes can be
+found.<u> </u></span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+dataset used to generate the relative frequency of J gene usage graph: </span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Downloads
+the data used to generate the relative frequency of J gene usage graph. In
+addition information on the chromosomal order of the J genes can be found.<u> </u></span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span lang=EN-GB
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif";
+color:black'>The dataset used to generate the relative frequency of the D
+reading frame graph</span></u><span lang=EN-GB style='font-size:12.0pt;
+line-height:115%;font-family:"Times New Roman","serif";color:black'>: Downloads
+the data used to generate the relative frequency of the D reading frame. </span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span lang=EN-GB
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif";
+color:black'>CDR3 characteristics</span></b></p>
+
+<p class=MsoNormalCxSpMiddle style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><u><span style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>The dataset used to generate the CDR3
+length frequency graph:</span></u><span style='font-size:12.0pt;font-family:
+"Times New Roman","serif"'> Downloads a table with information used for the
+length distribution of CDR3 plot. </span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+dataset used to generate the Amino Acid Composition in the CDR3 graph:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the frequency of the different amino acids in the CDR3 of all
+filtered sequences. This data set is used for the generation of the Amino Acid
+Composition in the CDR3 graph. In addition the order of amino acids based on hydrophobicity
+in included. </span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Heatmaps</span></b></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+data used to generate the VD heatmap for “donor name”:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the data set used for the generation of the VD heatmap. For each
+uploaded donor a separate download is generated.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+data used to generate the VJ heatmap for “donor name”:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the data set used for the generation of the VJ heatmap. For each
+uploaded donor a separate download is generated.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+data used to generate the DJ heatmap for “sample name”:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the data set used for the generation of the DJ heatmap. For each
+uploaded donor a separate download is generated.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Circos</span></b></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+data used to generate the VD circus plots for “donor name”:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the data set used for the generation of the VD heatmap. For each
+uploaded donor a separate download is generated.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+data used to generate the VJ circus plots for “donor name”:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the data set used for the generation of the VJ heatmap. For each
+uploaded donor a separate download is generated.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+data used to generate the DJ circus plots for “sample name”:</span></u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+Downloads the data set used for the generation of the DJ heatmap. For each
+uploaded donor a separate download is generated.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><b><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Clonality</span></b></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The
+dataset used to calculate clonality score: </span></u><span style='font-size:
+12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Allows you to
+download information on V D and J gene usage, the junctions and the amino acid
+sequence of the sequences that passed the chosen filter settings. Note: this
+file contains all the replicate sequences form the different input files.</span></p>
+
+<p class=MsoNormalCxSpMiddle style='text-align:justify'><u><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Sequences
+that are present in more than one replicate:</span></u><span style='font-size:
+12.0pt;line-height:115%;font-family:"Times New Roman","serif"'> Allows you to
+download a table containing all the sequences that were present in more than
+one replicate. It provides the concidence type, clonaltype, sequence name,
+replicate number, and the nucleotide sequence</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/naive_gene_freq.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_gene_freq.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,220 +1,220 @@
-<html xmlns:v="urn:schemas-microsoft-com:vml"
-xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 14">
-<meta name=Originator content="Microsoft Word 14">
-<link rel=File-List href="Gene%20frequencies%20tab_files/filelist.xml">
-<link rel=themeData href="Gene%20frequencies%20tab_files/themedata.thmx">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:-536870145 1073786111 1 0 415 0;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-style-parent:"";
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	mso-pagination:widow-orphan;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{mso-style-priority:1;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	mso-bidi-font-family:"Times New Roman";}
-p.msochpdefault, li.msochpdefault, div.msochpdefault
-	{mso-style-name:msochpdefault;
-	mso-style-unhide:no;
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Calibri","sans-serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	mso-bidi-font-family:"Times New Roman";}
-p.msopapdefault, li.msopapdefault, div.msopapdefault
-	{mso-style-name:msopapdefault;
-	mso-style-unhide:no;
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman","serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;}
-.MsoChpDefault
-	{mso-style-type:export-only;
-	mso-default-props:yes;
-	font-size:10.0pt;
-	mso-ansi-font-size:10.0pt;
-	mso-bidi-font-size:10.0pt;
-	mso-ascii-font-family:Calibri;
-	mso-hansi-font-family:Calibri;}
-.MsoPapDefault
-	{mso-style-type:export-only;
-	margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.WordSection1
-	{page:WordSection1;}
--->
-</style>
-<!--[if gte mso 10]>
-<style>
- /* Style Definitions */
- table.MsoNormalTable
-	{mso-style-name:"Table Normal";
-	mso-tstyle-rowband-size:0;
-	mso-tstyle-colband-size:0;
-	mso-style-noshow:yes;
-	mso-style-priority:99;
-	mso-style-parent:"";
-	mso-padding-alt:0in 5.4pt 0in 5.4pt;
-	mso-para-margin-top:0in;
-	mso-para-margin-right:0in;
-	mso-para-margin-bottom:10.0pt;
-	mso-para-margin-left:0in;
-	line-height:115%;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Calibri","sans-serif";}
-</style>
-<![endif]--><!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="1026"/>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <o:shapelayout v:ext="edit">
-  <o:idmap v:ext="edit" data="1"/>
- </o:shapelayout></xml><![endif]-->
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=WordSection1>
-
-<p class=MsoNoSpacing style='text-align:justify'><b><u><span lang=EN-GB
-style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
-EN-GB'>Gene frequencies tab</span></u></b></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>This tab gives
-information on the frequency of V, D and J gene usage. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><b><span lang=EN-GB
-style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
-EN-GB'>Graphs</span></b></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Distribution of
-V gene families<o:p></o:p></span></u></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><a name="OLE_LINK121"></a><a
-name="OLE_LINK123"></a><a name="OLE_LINK122"></a><span style='mso-bookmark:
-OLE_LINK121'><span lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif";
-mso-ansi-language:EN-GB'>Bar graph showing the frequency of V gene family usage
-in all uploaded donors. </span></span><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'><o:p></o:p></span></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Relative
-frequency of V gene usage<o:p></o:p></span></u></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><a name="OLE_LINK124"></a><a
-name="OLE_LINK126"></a><a name="OLE_LINK125"></a><span style='mso-bookmark:
-OLE_LINK124'><span lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif";
-mso-ansi-language:EN-GB'>Bar graph showing the frequency of V genes in all
-uploaded donors. The order of the V genes on the x-axis can be altered by
-altering the “<span style='color:black;background:white'>Order of V(D)J genes
-in graphs” filter on the main page of the Immune repertoire pipeline.</span></span></span><span
-lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif";
-color:black;background:white;mso-ansi-language:EN-GB'><o:p></o:p></span></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Relative
-frequency of D gene usage<o:p></o:p></span></u></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><span lang=EN-GB
-style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
-EN-GB'>Bar graph showing the frequency of D genes in all uploaded donors. The
-order of the D genes on the x-axis can be altered by altering the “<span
-style='color:black;background:white'>Order of V(D)J genes in graphs” filter on
-the main page of the Immune repertoire pipeline.<o:p></o:p></span></span></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Relative
-frequency of J gene usage<o:p></o:p></span></u></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><span lang=EN-GB
-style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
-EN-GB'>Bar graph showing the frequency of J genes in all uploaded donors. The
-order of the J genes on the x-axis can be altered by altering the “<span
-style='color:black;background:white'>Order of V(D)J genes in graphs” filter on
-the main page of the Immune repertoire pipeline.<o:p></o:p></span></span></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>D
-reading frame<o:p></o:p></span></u></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><span lang=EN-GB
-style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
-EN-GB'>Bar graph visualizing the frequency by which each D reading frame is
-used in each donor.</span></p>
-
-</div>
-
-</body>
-
-</html>
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 14">
+<meta name=Originator content="Microsoft Word 14">
+<link rel=File-List href="Gene%20frequencies%20tab_files/filelist.xml">
+<link rel=themeData href="Gene%20frequencies%20tab_files/themedata.thmx">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-536870145 1073786111 1 0 415 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-unhide:no;
+	mso-style-qformat:yes;
+	mso-style-parent:"";
+	margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;
+	mso-bidi-font-family:"Times New Roman";}
+p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
+	{mso-style-priority:1;
+	mso-style-unhide:no;
+	mso-style-qformat:yes;
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;
+	mso-bidi-font-family:"Times New Roman";}
+p.msochpdefault, li.msochpdefault, div.msochpdefault
+	{mso-style-name:msochpdefault;
+	mso-style-unhide:no;
+	mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Calibri","sans-serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;
+	mso-bidi-font-family:"Times New Roman";}
+p.msopapdefault, li.msopapdefault, div.msopapdefault
+	{mso-style-name:msopapdefault;
+	mso-style-unhide:no;
+	mso-margin-top-alt:auto;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman","serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;}
+.MsoChpDefault
+	{mso-style-type:export-only;
+	mso-default-props:yes;
+	font-size:10.0pt;
+	mso-ansi-font-size:10.0pt;
+	mso-bidi-font-size:10.0pt;
+	mso-ascii-font-family:Calibri;
+	mso-hansi-font-family:Calibri;}
+.MsoPapDefault
+	{mso-style-type:export-only;
+	margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-priority:99;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin-top:0in;
+	mso-para-margin-right:0in;
+	mso-para-margin-bottom:10.0pt;
+	mso-para-margin-left:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Calibri","sans-serif";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="1026"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+  <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US style='tab-interval:.5in'>
+
+<div class=WordSection1>
+
+<p class=MsoNoSpacing style='text-align:justify'><b><u><span lang=EN-GB
+style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
+EN-GB'>Gene frequencies tab</span></u></b></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>This tab gives
+information on the frequency of V, D and J gene usage. <o:p></o:p></span></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><b><span lang=EN-GB
+style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
+EN-GB'>Graphs</span></b></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Distribution of
+V gene families<o:p></o:p></span></u></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><a name="OLE_LINK121"></a><a
+name="OLE_LINK123"></a><a name="OLE_LINK122"></a><span style='mso-bookmark:
+OLE_LINK121'><span lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif";
+mso-ansi-language:EN-GB'>Bar graph showing the frequency of V gene family usage
+in all uploaded donors. </span></span><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Relative
+frequency of V gene usage<o:p></o:p></span></u></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><a name="OLE_LINK124"></a><a
+name="OLE_LINK126"></a><a name="OLE_LINK125"></a><span style='mso-bookmark:
+OLE_LINK124'><span lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif";
+mso-ansi-language:EN-GB'>Bar graph showing the frequency of V genes in all
+uploaded donors. The order of the V genes on the x-axis can be altered by
+altering the “<span style='color:black;background:white'>Order of V(D)J genes
+in graphs” filter on the main page of the Immune repertoire pipeline.</span></span></span><span
+lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif";
+color:black;background:white;mso-ansi-language:EN-GB'><o:p></o:p></span></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Relative
+frequency of D gene usage<o:p></o:p></span></u></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><span lang=EN-GB
+style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
+EN-GB'>Bar graph showing the frequency of D genes in all uploaded donors. The
+order of the D genes on the x-axis can be altered by altering the “<span
+style='color:black;background:white'>Order of V(D)J genes in graphs” filter on
+the main page of the Immune repertoire pipeline.<o:p></o:p></span></span></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Relative
+frequency of J gene usage<o:p></o:p></span></u></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><span lang=EN-GB
+style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
+EN-GB'>Bar graph showing the frequency of J genes in all uploaded donors. The
+order of the J genes on the x-axis can be altered by altering the “<span
+style='color:black;background:white'>Order of V(D)J genes in graphs” filter on
+the main page of the Immune repertoire pipeline.<o:p></o:p></span></span></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>D
+reading frame<o:p></o:p></span></u></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><span lang=EN-GB
+style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-ansi-language:
+EN-GB'>Bar graph visualizing the frequency by which each D reading frame is
+used in each donor.</span></p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/naive_heatmap.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_heatmap.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,57 +1,57 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft Word 14 (filtered)">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-.MsoChpDefault
-	{font-family:"Calibri","sans-serif";}
-.MsoPapDefault
-	{margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;}
-div.WordSection1
-	{page:WordSection1;}
--->
-</style>
-
-</head>
-
-<body lang=EN-US>
-
-<div class=WordSection1>
-
-<p class=MsoNormalCxSpFirst style='text-align:justify'><span style='font-size:
-12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>In this tab
-heatmaps are provided showing the frequency of different combinations V and D,
-D and J and V and J genes according together. For each donor a subtab with all
-three heatmaps is provided.</span></p>
-
-<p class=MsoNormal>&nbsp;</p>
-
-</div>
-
-</body>
-
-</html>
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=Generator content="Microsoft Word 14 (filtered)">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
+	{margin:0in;
+	margin-bottom:.0001pt;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+.MsoChpDefault
+	{font-family:"Calibri","sans-serif";}
+.MsoPapDefault
+	{margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+
+</head>
+
+<body lang=EN-US>
+
+<div class=WordSection1>
+
+<p class=MsoNormalCxSpFirst style='text-align:justify'><span style='font-size:
+12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>In this tab
+heatmaps are provided showing the frequency of different combinations V and D,
+D and J and V and J genes according together. For each donor a subtab with all
+three heatmaps is provided.</span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/naive_junction.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_junction.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,206 +1,206 @@
-<html xmlns:v="urn:schemas-microsoft-com:vml"
-xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 14">
-<meta name=Originator content="Microsoft Word 14">
-<link rel=File-List href="Junction%20analysis%20tab_files/filelist.xml">
-<link rel=themeData href="Junction%20analysis%20tab_files/themedata.thmx">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:-536870145 1073786111 1 0 415 0;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-unhide:no;
-	mso-style-qformat:yes;
-	mso-style-parent:"";
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	mso-pagination:widow-orphan;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{mso-style-priority:1;
-	mso-style-unhide:no;
-	mso-style-qformat:yes;
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	mso-bidi-font-family:"Times New Roman";}
-p.msochpdefault, li.msochpdefault, div.msochpdefault
-	{mso-style-name:msochpdefault;
-	mso-style-unhide:no;
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Calibri","sans-serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;
-	mso-bidi-font-family:"Times New Roman";}
-p.msopapdefault, li.msopapdefault, div.msopapdefault
-	{mso-style-name:msopapdefault;
-	mso-style-unhide:no;
-	mso-margin-top-alt:auto;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman","serif";
-	mso-fareast-font-family:"Times New Roman";
-	mso-fareast-theme-font:minor-fareast;}
-span.GramE
-	{mso-style-name:"";
-	mso-gram-e:yes;}
-.MsoChpDefault
-	{mso-style-type:export-only;
-	mso-default-props:yes;
-	font-size:10.0pt;
-	mso-ansi-font-size:10.0pt;
-	mso-bidi-font-size:10.0pt;
-	font-family:"Calibri","sans-serif";
-	mso-ascii-font-family:Calibri;
-	mso-hansi-font-family:Calibri;}
-.MsoPapDefault
-	{mso-style-type:export-only;
-	margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.WordSection1
-	{page:WordSection1;}
--->
-</style>
-<!--[if gte mso 10]>
-<style>
- /* Style Definitions */
- table.MsoNormalTable
-	{mso-style-name:"Table Normal";
-	mso-tstyle-rowband-size:0;
-	mso-tstyle-colband-size:0;
-	mso-style-noshow:yes;
-	mso-style-priority:99;
-	mso-style-parent:"";
-	mso-padding-alt:0in 5.4pt 0in 5.4pt;
-	mso-para-margin-top:0in;
-	mso-para-margin-right:0in;
-	mso-para-margin-bottom:10.0pt;
-	mso-para-margin-left:0in;
-	line-height:115%;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Calibri","sans-serif";}
-</style>
-<![endif]--><!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="1026"/>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <o:shapelayout v:ext="edit">
-  <o:idmap v:ext="edit" data="1"/>
- </o:shapelayout></xml><![endif]-->
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=WordSection1>
-
-<p class=MsoNormal style='text-align:justify'><b><u><span style='font-size:
-12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Junction
-analysis tab </span></u></b></p>
-
-<p class=MsoNormal style='text-align:justify'><b><span style='font-size:12.0pt;
-line-height:115%;font-family:"Times New Roman","serif"'>Tables:</span></b></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='font-size:12.0pt;
-line-height:115%;font-family:"Times New Roman","serif"'>The unique
-rearrangements are separated in sequences that contain <span class=GramE>both a</span>
-V, D and J gene and sequences that contain only a V and J gene.</span></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Productive mean
-tables<o:p></o:p></span></u></p>
-
-<p class=MsoNormal style='text-align:justify'><span class=GramE><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Reports
-for each donor the number of productive sequences and the mean number of
-deletions, N-nucleotides and P-nucleotides.</span></span><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-For explanation about the different deletions and N and P nucleotides see
-figure above. </span></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Unproductive
-mean table<o:p></o:p></span></u></p>
-
-<p class=MsoNormal style='text-align:justify'><span class=GramE><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Reports
-for each donor the number of unproductive sequences and the mean number of
-deletions, N-nucleotides and P-nucleotides.</span></span><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-For explanation about the different deletions and N and P nucleotides see
-figure above. </span></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Productive
-median table<o:p></o:p></span></u></p>
-
-<p class=MsoNormal style='text-align:justify'><span class=GramE><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Reports
-for each donor the number of productive sequences and the median number of
-deletions, N-nucleotides and P-nucleotides.</span></span><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-For explanation about the different deletions and N and P nucleotides see
-figure above. </span></p>
-
-<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
-justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Unproductive
-median table<o:p></o:p></span></u></p>
-
-<p class=MsoNormal style='text-align:justify'><span class=GramE><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Reports
-for each donor the number of unproductive sequences and the median number of
-deletions, N-nucleotides and P-nucleotides.</span></span><span
-style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
-For explanation about the different deletions and N and P nucleotides see
-figure above. </span></p>
-
-<p class=MsoNormal>&nbsp;</p>
-
-</div>
-
-</body>
-
-</html>
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 14">
+<meta name=Originator content="Microsoft Word 14">
+<link rel=File-List href="Junction%20analysis%20tab_files/filelist.xml">
+<link rel=themeData href="Junction%20analysis%20tab_files/themedata.thmx">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;
+	mso-font-charset:0;
+	mso-generic-font-family:swiss;
+	mso-font-pitch:variable;
+	mso-font-signature:-536870145 1073786111 1 0 415 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-unhide:no;
+	mso-style-qformat:yes;
+	mso-style-parent:"";
+	margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;
+	mso-bidi-font-family:"Times New Roman";}
+p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
+	{mso-style-priority:1;
+	mso-style-unhide:no;
+	mso-style-qformat:yes;
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;
+	mso-bidi-font-family:"Times New Roman";}
+p.msochpdefault, li.msochpdefault, div.msochpdefault
+	{mso-style-name:msochpdefault;
+	mso-style-unhide:no;
+	mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Calibri","sans-serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;
+	mso-bidi-font-family:"Times New Roman";}
+p.msopapdefault, li.msopapdefault, div.msopapdefault
+	{mso-style-name:msopapdefault;
+	mso-style-unhide:no;
+	mso-margin-top-alt:auto;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman","serif";
+	mso-fareast-font-family:"Times New Roman";
+	mso-fareast-theme-font:minor-fareast;}
+span.GramE
+	{mso-style-name:"";
+	mso-gram-e:yes;}
+.MsoChpDefault
+	{mso-style-type:export-only;
+	mso-default-props:yes;
+	font-size:10.0pt;
+	mso-ansi-font-size:10.0pt;
+	mso-bidi-font-size:10.0pt;
+	font-family:"Calibri","sans-serif";
+	mso-ascii-font-family:Calibri;
+	mso-hansi-font-family:Calibri;}
+.MsoPapDefault
+	{mso-style-type:export-only;
+	margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-priority:99;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin-top:0in;
+	mso-para-margin-right:0in;
+	mso-para-margin-bottom:10.0pt;
+	mso-para-margin-left:0in;
+	line-height:115%;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Calibri","sans-serif";}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="1026"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+  <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
+</head>
+
+<body lang=EN-US style='tab-interval:.5in'>
+
+<div class=WordSection1>
+
+<p class=MsoNormal style='text-align:justify'><b><u><span style='font-size:
+12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Junction
+analysis tab </span></u></b></p>
+
+<p class=MsoNormal style='text-align:justify'><b><span style='font-size:12.0pt;
+line-height:115%;font-family:"Times New Roman","serif"'>Tables:</span></b></p>
+
+<p class=MsoNormal style='text-align:justify'><span style='font-size:12.0pt;
+line-height:115%;font-family:"Times New Roman","serif"'>The unique
+rearrangements are separated in sequences that contain <span class=GramE>both a</span>
+V, D and J gene and sequences that contain only a V and J gene.</span></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Productive mean
+tables<o:p></o:p></span></u></p>
+
+<p class=MsoNormal style='text-align:justify'><span class=GramE><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Reports
+for each donor the number of productive sequences and the mean number of
+deletions, N-nucleotides and P-nucleotides.</span></span><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+For explanation about the different deletions and N and P nucleotides see
+figure above. </span></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Unproductive
+mean table<o:p></o:p></span></u></p>
+
+<p class=MsoNormal style='text-align:justify'><span class=GramE><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Reports
+for each donor the number of unproductive sequences and the mean number of
+deletions, N-nucleotides and P-nucleotides.</span></span><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+For explanation about the different deletions and N and P nucleotides see
+figure above. </span></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Productive
+median table<o:p></o:p></span></u></p>
+
+<p class=MsoNormal style='text-align:justify'><span class=GramE><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Reports
+for each donor the number of productive sequences and the median number of
+deletions, N-nucleotides and P-nucleotides.</span></span><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+For explanation about the different deletions and N and P nucleotides see
+figure above. </span></p>
+
+<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;text-align:
+justify;line-height:normal'><u><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif";mso-ansi-language:EN-GB'>Unproductive
+median table<o:p></o:p></span></u></p>
+
+<p class=MsoNormal style='text-align:justify'><span class=GramE><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Reports
+for each donor the number of unproductive sequences and the median number of
+deletions, N-nucleotides and P-nucleotides.</span></span><span
+style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>
+For explanation about the different deletions and N and P nucleotides see
+figure above. </span></p>
+
+<p class=MsoNormal>&nbsp;</p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/naive_overview.htm	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/naive_overview.htm	Thu Feb 25 13:36:15 2021 +0000
@@ -1,65 +1,65 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft Word 14 (filtered)">
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Calibri;
-	panose-1:2 15 5 2 2 2 4 3 2 4;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:10.0pt;
-	margin-left:0in;
-	line-height:115%;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:11.0pt;
-	font-family:"Calibri","sans-serif";}
-.MsoChpDefault
-	{font-family:"Calibri","sans-serif";}
-.MsoPapDefault
-	{margin-bottom:10.0pt;
-	line-height:115%;}
-@page WordSection1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.0in 1.0in 1.0in;}
-div.WordSection1
-	{page:WordSection1;}
--->
-</style>
-
-</head>
-
-<body lang=EN-US>
-
-<div class=WordSection1>
-
-<p class=MsoNormalCxSpFirst style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>Table showing the number and percentage of
-(unique) productive and unproductive sequences per sample and per replicate. </span></p>
-
-<p class=MsoNormalCxSpLast style='margin-bottom:0in;margin-bottom:.0001pt;
-text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
-font-family:"Times New Roman","serif"'>&nbsp;</span></p>
-
-<p class=MsoNoSpacing style='text-align:justify'><span lang=EN-GB
-style='font-size:12.0pt;font-family:"Times New Roman","serif"'>The definition
-of unique sequences is based on the clonal type definition filter setting
-chosen.</span></p>
-
-<p class=MsoNormal><span lang=EN-GB>&nbsp;</span></p>
-
-</div>
-
-</body>
-
-</html>
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=Generator content="Microsoft Word 14 (filtered)">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{margin-top:0in;
+	margin-right:0in;
+	margin-bottom:10.0pt;
+	margin-left:0in;
+	line-height:115%;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
+	{margin:0in;
+	margin-bottom:.0001pt;
+	font-size:11.0pt;
+	font-family:"Calibri","sans-serif";}
+.MsoChpDefault
+	{font-family:"Calibri","sans-serif";}
+.MsoPapDefault
+	{margin-bottom:10.0pt;
+	line-height:115%;}
+@page WordSection1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.0in 1.0in 1.0in;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+
+</head>
+
+<body lang=EN-US>
+
+<div class=WordSection1>
+
+<p class=MsoNormalCxSpFirst style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>Table showing the number and percentage of
+(unique) productive and unproductive sequences per sample and per replicate. </span></p>
+
+<p class=MsoNormalCxSpLast style='margin-bottom:0in;margin-bottom:.0001pt;
+text-align:justify;line-height:normal'><span lang=EN-GB style='font-size:12.0pt;
+font-family:"Times New Roman","serif"'>&nbsp;</span></p>
+
+<p class=MsoNoSpacing style='text-align:justify'><span lang=EN-GB
+style='font-size:12.0pt;font-family:"Times New Roman","serif"'>The definition
+of unique sequences is based on the clonal type definition filter setting
+chosen.</span></p>
+
+<p class=MsoNormal><span lang=EN-GB>&nbsp;</span></p>
+
+</div>
+
+</body>
+
+</html>
--- a/report_clonality/pure-min.css	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/pure-min.css	Thu Feb 25 13:36:15 2021 +0000
@@ -1,11 +1,11 @@
-/*!
-Pure v0.6.0
-Copyright 2014 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-https://github.com/yahoo/pure/blob/master/LICENSE.md
-*/
-/*!
-normalize.css v^3.0 | MIT License | git.io/normalize
-Copyright (c) Nicolas Gallagher and Jonathan Neal
-*/
+/*!
+Pure v0.6.0
+Copyright 2014 Yahoo! Inc. All rights reserved.
+Licensed under the BSD License.
+https://github.com/yahoo/pure/blob/master/LICENSE.md
+*/
+/*!
+normalize.css v^3.0 | MIT License | git.io/normalize
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+*/
 /*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{letter-spacing:-.31em;*letter-spacing:normal;*word-spacing:-.43em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-flex;-webkit-flex-flow:row wrap;display:-ms-flexbox;-ms-flex-flow:row wrap;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class *="pure-u"]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-2,.pure-u-1-3,.pure-u-2-3,.pure-u-1-4,.pure-u-3-4,.pure-u-1-5,.pure-u-2-5,.pure-u-3-5,.pure-u-4-5,.pure-u-5-5,.pure-u-1-6,.pure-u-5-6,.pure-u-1-8,.pure-u-3-8,.pure-u-5-8,.pure-u-7-8,.pure-u-1-12,.pure-u-5-12,.pure-u-7-12,.pure-u-11-12,.pure-u-1-24,.pure-u-2-24,.pure-u-3-24,.pure-u-4-24,.pure-u-5-24,.pure-u-6-24,.pure-u-7-24,.pure-u-8-24,.pure-u-9-24,.pure-u-10-24,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%;*width:4.1357%}.pure-u-1-12,.pure-u-2-24{width:8.3333%;*width:8.3023%}.pure-u-1-8,.pure-u-3-24{width:12.5%;*width:12.469%}.pure-u-1-6,.pure-u-4-24{width:16.6667%;*width:16.6357%}.pure-u-1-5{width:20%;*width:19.969%}.pure-u-5-24{width:20.8333%;*width:20.8023%}.pure-u-1-4,.pure-u-6-24{width:25%;*width:24.969%}.pure-u-7-24{width:29.1667%;*width:29.1357%}.pure-u-1-3,.pure-u-8-24{width:33.3333%;*width:33.3023%}.pure-u-3-8,.pure-u-9-24{width:37.5%;*width:37.469%}.pure-u-2-5{width:40%;*width:39.969%}.pure-u-5-12,.pure-u-10-24{width:41.6667%;*width:41.6357%}.pure-u-11-24{width:45.8333%;*width:45.8023%}.pure-u-1-2,.pure-u-12-24{width:50%;*width:49.969%}.pure-u-13-24{width:54.1667%;*width:54.1357%}.pure-u-7-12,.pure-u-14-24{width:58.3333%;*width:58.3023%}.pure-u-3-5{width:60%;*width:59.969%}.pure-u-5-8,.pure-u-15-24{width:62.5%;*width:62.469%}.pure-u-2-3,.pure-u-16-24{width:66.6667%;*width:66.6357%}.pure-u-17-24{width:70.8333%;*width:70.8023%}.pure-u-3-4,.pure-u-18-24{width:75%;*width:74.969%}.pure-u-19-24{width:79.1667%;*width:79.1357%}.pure-u-4-5{width:80%;*width:79.969%}.pure-u-5-6,.pure-u-20-24{width:83.3333%;*width:83.3023%}.pure-u-7-8,.pure-u-21-24{width:87.5%;*width:87.469%}.pure-u-11-12,.pure-u-22-24{width:91.6667%;*width:91.6357%}.pure-u-23-24{width:95.8333%;*width:95.8023%}.pure-u-1,.pure-u-1-1,.pure-u-5-5,.pure-u-24-24{width:100%}.pure-button{display:inline-block;zoom:1;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:#444;color:rgba(0,0,0,.8);border:1px solid #999;border:0 rgba(0,0,0,0);background-color:#E6E6E6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:hover,.pure-button:focus{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1a000000', GradientType=0);background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),color-stop(40%,rgba(0,0,0,.05)),to(rgba(0,0,0,.1)));background-image:-webkit-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:-moz-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1));background-image:-o-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000\9}.pure-button[disabled],.pure-button-disabled,.pure-button-disabled:hover,.pure-button-disabled:focus,.pure-button-disabled:active{border:0;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:alpha(opacity=40);-khtml-opacity:.4;-moz-opacity:.4;opacity:.4;cursor:not-allowed;box-shadow:none}.pure-button-hidden{display:none}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-form input[type=text],.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=color],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=text]:focus,.pure-form input[type=password]:focus,.pure-form input[type=email]:focus,.pure-form input[type=url]:focus,.pure-form input[type=date]:focus,.pure-form input[type=month]:focus,.pure-form input[type=time]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=week]:focus,.pure-form input[type=number]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=color]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129FEA}.pure-form input:not([type]):focus{outline:0;border-color:#129FEA}.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus,.pure-form input[type=checkbox]:focus{outline:thin solid #129FEA;outline:1px auto #129FEA}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=text][disabled],.pure-form input[type=password][disabled],.pure-form input[type=email][disabled],.pure-form input[type=url][disabled],.pure-form input[type=date][disabled],.pure-form input[type=month][disabled],.pure-form input[type=time][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=week][disabled],.pure-form input[type=number][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=color][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form textarea:focus:invalid,.pure-form select:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus,.pure-form input[type=checkbox]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=text],.pure-form-stacked input[type=password],.pure-form-stacked input[type=email],.pure-form-stacked input[type=url],.pure-form-stacked input[type=date],.pure-form-stacked input[type=month],.pure-form-stacked input[type=time],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=week],.pure-form-stacked input[type=number],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=color],.pure-form-stacked input[type=file],.pure-form-stacked select,.pure-form-stacked label,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned textarea,.pure-form-aligned select,.pure-form-aligned .pure-help-inline,.pure-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form input.pure-input-rounded,.pure-form .pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form .pure-help-inline,.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=text],.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=color],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=text],.pure-group input[type=password],.pure-group input[type=email],.pure-group input[type=url],.pure-group input[type=date],.pure-group input[type=month],.pure-group input[type=time],.pure-group input[type=datetime],.pure-group input[type=datetime-local],.pure-group input[type=week],.pure-group input[type=number],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=color]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0}.pure-form .pure-help-inline,.pure-form-message-inline,.pure-form-message{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-list,.pure-menu-item{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-link,.pure-menu-heading{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-separator{display:inline-block;*display:inline;zoom:1;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-allow-hover:hover>.pure-menu-children,.pure-menu-active>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;padding:.5em 0}.pure-menu-horizontal.pure-menu-scrollable::-webkit-scrollbar{display:none}.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-link,.pure-menu-disabled,.pure-menu-heading{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:hover,.pure-menu-link:focus{background-color:#eee}.pure-menu-selected .pure-menu-link,.pure-menu-selected .pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table td:first-child,.pure-table th:first-child{border-left-width:0}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0}
\ No newline at end of file
--- a/report_clonality/r_wrapper.sh	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/r_wrapper.sh	Thu Feb 25 13:36:15 2021 +0000
@@ -1,391 +1,391 @@
-#!/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
-cp $dir/pure-min.css $outputDir
-cp $dir/IGH_junctie_analyse.png $outputDir
-samples=`cat $outputDir/samples.txt`
-
-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)<br />" > $2
-echo "<table border = 1>" >> $2
-echo "<thead><tr><th>Donor/Replicate</th><th>All</th><th>Productive</th><th>Unique Productive</th><th>Unproductive</th><th>Unique Unproductive</th></tr></thead>" >> $2
-while IFS=, read sample all productive perc_prod productive_unique perc_prod_un unproductive perc_unprod unproductive_unique perc_unprod_un
-	do
-		echo "<tr><td>$sample</td>" >> $2
-		echo "<td>$all</td>" >> $2
-		if [[ "$productive" != "0" ]] ; then
-			echo "<td>$productive (${perc_prod}%)</td>" >> $2
-			echo "<td>$productive_unique (${perc_prod_un}%)</td>" >> $2
-			echo "<td>$unproductive (${perc_unprod}%)</td>" >> $2
-			echo "<td>$unproductive_unique (${perc_unprod_un}%)</td></tr>" >> $2
-		else
-			echo "<td colspan='4' style='background-color: red;'>No productive sequences!</td>" >> $2
-		fi
-done < $outputDir/productive_counting.txt
-echo "</table><br />" >> $2
-echo "Table showing the number and percentage of (unique) productive and unproductive sequences per donor and per replicate. <br />" >> $2
-echo "The definition of unique sequences is based on the clonal type definition filter setting chosen. " >> $2
-echo "</center></html>" >> $2
-
-echo "<html><head><title>Report on:" >> $outputFile
-
-mkdir $outputDir/circos
-cp -R $dir/circos/* $outputDir/circos/
-
-USECIRCOS="no"
-path_to_circos=$(which circos)
-if [ -x "$path_to_circos" ]; then
-	USECIRCOS="yes"
-fi
-
-echo "Using Circos: $USECIRCOS"
-sed -i "s%DATA_DIR%$outputDir/circos%" $outputDir/circos/circos.conf
-for sample in $samples; do #output the samples to a file and create the circos plots with the R script output
-	echo " $sample" >> $outputFile
-	
-	if [[ "$USECIRCOS" != "yes" ]]; then
-		continue
-	fi
-	
-	circos_file="$outputDir/${sample}_VJ_circos.txt"
-	sed -i -- 's%/%:%g' $circos_file
-	echo -e -n "labels$(cat ${circos_file})" > ${circos_file}
-	echo "Circos tools command:"
-	echo "cat \"${circos_file}\" | parse-table -configfile $dir/circos/parse-table.conf 2>&1 | make-conf -dir $outputDir/circos/"
-	cat "${circos_file}" | parse-table -configfile $dir/circos/parse-table.conf 2>&1 | make-conf -dir $outputDir/circos/
-
-	echo "Circos command:"
-	echo "circos -conf $outputDir/circos/circos.conf 2>&1"
-	circos -conf $outputDir/circos/circos.conf 2>&1
-	mv $outputDir/circos/circos.png $outputDir/circosVJ_${sample}.png
-	mv $outputDir/circos/circos.svg $outputDir/circosVJ_${sample}.svg
-	
-	
-	if [[ "$useD" == "true" ]] ; then
-		circos_file="$outputDir/${sample}_VD_circos.txt"
-		sed -i -- 's%/%:%g' $circos_file
-		echo -e -n "labels$(cat ${circos_file})" > ${circos_file}
-		cat "${circos_file}" | parse-table -configfile $dir/circos/parse-table.conf 2>&1 | make-conf -dir $outputDir/circos/
-		sed -i -- 's%/%:%g' $outputDir/circos/cells.txt
-		circos -conf $outputDir/circos/circos.conf 2>&1
-		mv $outputDir/circos/circos.png $outputDir/circosVD_${sample}.png
-		mv $outputDir/circos/circos.svg $outputDir/circosVD_${sample}.svg
-		
-		circos_file="$outputDir/${sample}_DJ_circos.txt"
-		sed -i -- 's%/%:%g' $circos_file
-		echo -e -n "labels$(cat ${circos_file})" > ${circos_file}
-		cat "${circos_file}" | parse-table -configfile $dir/circos/parse-table.conf 2>&1 | make-conf -dir $outputDir/circos/
-		sed -i -- 's%/%:%g' $outputDir/circos/cells.txt
-		circos -conf $outputDir/circos/circos.conf 2>&1
-		mv $outputDir/circos/circos.png $outputDir/circosDJ_${sample}.png
-		mv $outputDir/circos/circos.svg $outputDir/circosDJ_${sample}.svg
-	fi
-done
-echo "</title><script type='text/javascript' src='jquery-1.11.0.min.js'></script>" >> $outputFile
-echo "<link rel='stylesheet' type='text/css' href='pure-min.css'>" >> $outputFile
-echo "<script type='text/javascript' src='tabber.js'></script>" >> $outputFile
-echo "<script type='text/javascript' src='script.js'></script>" >> $outputFile
-echo "<link rel='stylesheet' type='text/css' href='style.css'></head>" >> $outputFile
-echo "<div class='tabber'><div class='tabbertab' title='Gene frequencies'>" >> $outputFile
-
-
-echo "<a href='VFPlot.pdf'><img src='VFPlot.png'/></a>" >> $outputFile
-if [[ "$useD" == "true" ]] ; then
-	echo "<a href='DFPlot.pdf'><img src='DFPlot.png'/></a>" >> $outputFile
-fi
-echo "<a href='VPlot.pdf'><img src='VPlot.png'/></a>" >> $outputFile
-if [[ "$useD" == "true" ]] ; then
-	echo "<a href='DPlot.pdf'><img src='DPlot.png'/></a>" >> $outputFile
-fi
-echo "<a href='JPlot.pdf'><img src='JPlot.png'/></a> <br />" >> $outputFile
-
-echo "<a href='DReadingFrame.pdf'><img src='DReadingFrame.png'/></a>" >> $outputFile
-
-cat $dir/naive_gene_freq.htm >> $outputFile
-
-echo "</div>" >> $outputFile
-
-echo "<div class='tabbertab' title='CDR3 Characteristics'>" >> $outputFile
-echo "<a href='CDR3LengthPlot.pdf'><img src='CDR3LengthPlot.png'/></a><br />" >> $outputFile
-echo "<a href='AAComposition.pdf'><img src='AAComposition.png'/></a>" >> $outputFile
-
-
-echo "<table class='pure-table pure-table-striped'>" >> $outputFile
-echo "<thead><tr><th>Donor</th><th>Median CDR3 Length</th></tr></thead>" >> $outputFile
-while read Sample median
-do
-	echo "<tr><td>$Sample</td><td>$median</td></tr>" >> $outputFile
-done < $outputDir/AAMedianBySample.txt
-echo "</table>" >> $outputFile
-
-cat $dir/naive_cdr3_char.htm >> $outputFile
-
-echo "</div>" >> $outputFile
-
-#Heatmaps
-
-count=1
-echo "<div class='tabbertab' title='Heatmaps'><div class='tabber'>" >> $outputFile
-for sample in $samples; do
-	echo "<div class='tabbertab' title='$sample'><table border='1'><tr>" >> $outputFile
-	if [[ "$useD" == "true" ]] ; then
-		echo "<td><a href='HeatmapVD_$sample.pdf'><img src='HeatmapVD_$sample.png'/></a></td>" >> $outputFile
-	fi
-	echo "<td><a href='HeatmapVJ_$sample.pdf'><img src='HeatmapVJ_$sample.png'/></a></td>" >> $outputFile
-	if [[ "$useD" == "true" ]] ; then
-		echo "<td><a href='HeatmapDJ_$sample.pdf'><img src='HeatmapDJ_$sample.png'/></a></td>" >> $outputFile
-	fi
-	echo "</tr></table></div>" >> $outputFile
-	count=$((count+1))
-done
-
-cat $dir/naive_heatmap.htm >> $outputFile
-
-echo "</div></div>" >> $outputFile
-
-echo "<div class='tabbertab' title='Compare Heatmaps'><table class='pure-table pure-table-striped'><thead><tr><th>ID</th><th>Include</th></tr></thead>" >> $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><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
-
-cat $dir/naive_compare.htm >> $outputFile
-
-echo "</div></div>" >> $outputFile
-
-
-#circos
-
-if [[ "$USECIRCOS" == "yes" ]]; then
-
-	echo "<div class='tabbertab' title='Circos'><div class='tabber'>" >> $outputFile
-	for sample in $samples; do
-		echo "<div class='tabbertab' title='$sample'><table border='1'><center>" >> $outputFile
-		if [[ "$useD" == "true" ]] ; then
-			echo "<tr><td>V-D</td><td><a href='circosVD_${sample}.svg'><img src='circosVD_${sample}.png' width='700' height='700'/></td></tr>" >> $outputFile
-		fi
-		echo "<tr><td>V-J</td><td><a href='circosVJ_${sample}.svg'><img src='circosVJ_${sample}.png' width='700' height='700'/></td></tr>" >> $outputFile
-		if [[ "$useD" == "true" ]] ; then
-			echo "<tr><td>D-J</td><td><a href='circosDJ_${sample}.svg'><img src='circosDJ_${sample}.png' width='700' height='700'/></td></tr>" >> $outputFile
-		fi
-		echo "<center></table></div>" >> $outputFile
-		count=$((count+1))
-	done
-	
-	cat $dir/naive_circos.htm >> $outputFile
-	
-	echo "</div></div>" >> $outputFile
-fi
-#echo "<div class='tabbertab' title='Interactive'><svg class='chart'></svg><script src='http://d3js.org/d3.v3.min.js'></script></div>" >> $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" && "${clonality_method}" != "none" ]] ; then
-	if [[ "${clonality_method}" == "boyd" ]] ; then
-		echo "<div class='tabbertab' title='Clonality'><div class='tabber'>" >> $outputFile
-	else
-		echo "<div class='tabbertab' title='Shared Clonal Types'><div class='tabber'>" >> $outputFile
-	fi
-	
-	for sample in $samples; do
-		echo "${clonality_method}"
-		
-		echo "<div class='tabbertab' title='$sample'><table class='pure-table pure-table-striped'>" >> $outputFile
-		
-		if [[ "${clonality_method}" == "boyd" ]] ; then
-			clonalityScore="$(cat $outputDir/lymphclon_clonality_${sample}.txt)"
-            echo "<tr><td>Clonality Score: </td><td>$clonalityScore</td></tr>" >> $outputFile
-		fi
-		
-		#replicate,reads,squared
-        echo "<tr><td>Replicate ID</td><td>Number of Sequences</td></tr>" >> $outputFile
-        while read replicate reads squared
-        do
-            echo "<tr><td>$replicate</td><td>$reads</td></tr>" >> $outputFile
-        done < $outputDir/ReplicateReads_$sample.txt
-        
-        #sum of reads and reads squared
-        while read readsSum squaredSum
-            do
-                echo "<tr><td>Sum</td><td>$readsSum</td></tr>" >> $outputFile
-        done < $outputDir/ReplicateSumReads_$sample.txt
-        
-        echo "<tr><td></td><td></td></tr>" >> $outputFile
-        
-        #overview
-        echo "<tr><td>Number of replicates containing the coincidence</td><td>Number of sequences shared between replicates</td></tr>" >> $outputFile
-        while read type count weight weightedCount
-        do
-            if [[ "$type" -eq "1" ]]; then
-                echo "<tr><td>$type</td><td>$count</td></tr>" >> $outputFile
-            else
-                echo "<tr><td><a href='coincidences_${sample}_${type}.txt'>$type</a></td><td>$count</td></tr>" >> $outputFile
-            fi
-        done < $outputDir/ClonalityOverView_$sample.txt
-        echo "</table></div>" >> $outputFile
-	done
-	
-	cat $dir/naive_clonality.htm >> $outputFile
-	
-	echo "</div></div>" >> $outputFile
-fi
-
-#hasJunctionData="$(if head -n 1 $inputFile | grep -qE '3V.REGION.trimmed.nt.nb'; then echo 'Yes'; else echo 'No'; fi)"
-
-#if [[ "$hasJunctionData" == "Yes" ]] ; then
-if [ -a "$outputDir/junctionAnalysisProd_mean_wD.txt" ] ; then
-	echo "<div class='tabbertab' title='Junction Analysis'>" >> $outputFile
-	echo "<img src='IGH_junctie_analyse.png' />" >> $outputFile
-	
-	echo "<center><p style='font-size: 20;'>Unique rearrangements with a V, D and J gene assigned</p></center>" >> $outputFile
-	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Productive mean</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.D</th><th>D.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
-	while read Sample unique VDEL P1 N1 P2 DELD DDEL P3 N2 P4 DELJ TotalDel TotalN TotalP median
-	do
-		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELD</td><td>$DDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>$median</td></tr>" >> $outputFile
-	done < $outputDir/junctionAnalysisProd_mean_wD.txt
-	echo "</tbody></table>" >> $outputFile
-	
-	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Unproductive mean</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.D</th><th>D.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
-	while read Sample unique VDEL P1 N1 P2 DELD DDEL P3 N2 P4 DELJ TotalDel TotalN TotalP median
-	do
-		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELD</td><td>$DDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>-</td></tr>" >> $outputFile
-	done < $outputDir/junctionAnalysisUnProd_mean_wD.txt
-	echo "</tbody></table>" >> $outputFile
-	
-	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Productive median</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.D</th><th>D.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
-	while read Sample unique VDEL P1 N1 P2 DELD DDEL P3 N2 P4 DELJ TotalDel TotalN TotalP median
-	do
-		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELD</td><td>$DDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>$median</td></tr>" >> $outputFile
-	done < $outputDir/junctionAnalysisProd_median_wD.txt
-	echo "</tbody></table>" >> $outputFile
-	
-	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Unproductive median</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.D</th><th>D.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
-	while read Sample unique VDEL P1 N1 P2 DELD DDEL P3 N2 P4 DELJ TotalDel TotalN TotalP median
-	do
-		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELD</td><td>$DDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>-</td></tr>" >> $outputFile
-	done < $outputDir/junctionAnalysisUnProd_median_wD.txt
-	echo "</tbody></table>" >> $outputFile
-	
-	# again for no-d
-	echo "<center><p style='font-size: 20;'>Unique rearrangements with only a V and J gene assigned</p></center>" >> $outputFile
-	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Productive mean</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N</th><th>P2</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
-	while read Sample unique VDEL P1 N1 P2 DELJ TotalDel TotalN TotalP median
-	do
-		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>$median</td></tr>" >> $outputFile
-	done < $outputDir/junctionAnalysisProd_mean_nD.txt
-	echo "</tbody></table>" >> $outputFile
-	
-	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Unproductive mean</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N</th><th>P2</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
-	while read Sample unique VDEL P1 N1 P2 DELJ TotalDel TotalN TotalP median
-	do
-		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>-</td></tr>" >> $outputFile
-	done < $outputDir/junctionAnalysisUnProd_mean_nD.txt
-	echo "</tbody></table>" >> $outputFile
-	
-	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Productive median</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N</th><th>P2</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
-	while read Sample unique VDEL P1 N1 P2 DELJ TotalDel TotalN TotalP median
-	do
-		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>$median</td></tr>" >> $outputFile
-	done < $outputDir/junctionAnalysisProd_median_nD.txt
-	echo "</tbody></table>" >> $outputFile
-	
-	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Unproductive median</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N</th><th>P2</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
-	while read Sample unique VDEL P1 N1 P2 DELJ TotalDel TotalN TotalP median
-	do
-		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>-</td></tr>" >> $outputFile
-	done < $outputDir/junctionAnalysisUnProd_median_nD.txt
-	echo "</tbody></table>" >> $outputFile
-	
-	cat $dir/naive_junction.htm >> $outputFile
-	
-	echo "</div>" >> $outputFile
-fi
-
-echo "<div class='tabbertab' title='Downloads'>" >> $outputFile
-echo "<table class='pure-table pure-table-striped'>" >> $outputFile
-echo "<thead><tr><th>Description</th><th>Link</th></tr></thead>" >> $outputFile
-echo "<tr><td>The filtered dataset</td><td><a href='allUnique.txt'>Download</a></td></tr>" >> $outputFile
-echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>Gene frequencies</td></tr>" >> $outputFile
-
-echo "<tr><td>The dataset used to generate the distribution of V gene families graph</td><td><a href='VFFrequency.txt'>Download</a></td></tr>" >> $outputFile
-if [[ "$useD" == "true" ]] ; then
-	echo "<tr><td>The dataset used to generate  the distribution of D gene families graph</td><td><a href='DFFrequency.txt'>Download</a></td></tr>" >> $outputFile
-fi
-
-echo "<tr><td>The dataset used to generate the relative frequency of V gene usage graph</td><td><a href='VFrequency.txt'>Download</a></td></tr>" >> $outputFile
-if [[ "$useD" == "true" ]] ; then
-	echo "<tr><td>The dataset used to generate the relative frequency of D gene usage graph</td><td><a href='DFrequency.txt'>Download</a></td></tr>" >> $outputFile
-fi
-echo "<tr><td>The dataset used to generate the relative frequency of J gene usage graph</td><td><a href='JFrequency.txt'>Download</a></td></tr>" >> $outputFile
-echo "<tr><td>The dataset used to generate the relative frequency of the D reading frame graph</td><td><a href='DReadingFrame.txt'>Download</a></td></tr>" >> $outputFile
-
-echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>CDR3 Characteristics</td></tr>" >> $outputFile
-echo "<tr><td>The dataset used to generate the CDR3 length frequency graph</td><td><a href='CDR3LengthPlot.txt'>Download</a></td></tr>" >> $outputFile
-echo "<tr><td>The dataset used to generate the Amino Acid Composition in the CDR3 graph</td><td><a href='AAComposition.txt'>Download</a></td></tr>" >> $outputFile
-
-echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>Heatmaps</td></tr>" >> $outputFile
-for sample in $samples; do
-	if [[ "$useD" == "true" ]] ; then
-		echo "<tr><td>The data used to generate the VD heatmap for $sample.</td><td><a href='HeatmapVD_$sample.txt'>Download</a></td></tr>" >> $outputFile
-	fi
-	echo "<tr><td>The data used to generate the VJ heatmap for $sample.</td><td><a href='HeatmapVJ_$sample.txt'>Download</a></td></tr>" >> $outputFile
-	if [[ "$useD" == "true" ]] ; then
-		echo "<tr><td>The data used to generate the DJ heatmap for $sample.</td><td><a href='HeatmapDJ_$sample.txt'>Download</a></td></tr>" >> $outputFile
-	fi
-done
-
-echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>Circos</td></tr>" >> $outputFile
-for sample in $samples; do
-	if [[ "$useD" == "true" ]] ; then
-		echo "<tr><td>The data used to generate the VD Circos plots for $sample.</td><td><a href='${sample}_VD_circos.txt'>Download</a></td></tr>" >> $outputFile
-	fi
-	echo "<tr><td>The data used to generate the VJ Circos plots for $sample.</td><td><a href='${sample}_VJ_circos.txt'>Download</a></td></tr>" >> $outputFile
-	if [[ "$useD" == "true" ]] ; then
-		echo "<tr><td>The data used to generate the DJ Circos plots for $sample.</td><td><a href='${sample}_DJ_circos.txt'>Download</a></td></tr>" >> $outputFile
-	fi
-done
-
-#echo "<tr><td>A frequency count of V Gene + J Gene + CDR3</td><td><a href='VJCDR3_count.txt'>Download</a></td></tr>" >> $outputFile
-
-echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>Clonality</td></tr>" >> $outputFile
-echo "<tr><td>The dataset used to calculate clonality score (Unique based on clonaltype, $clonalType)</td><td><a href='clonalityComplete.txt'>Download</a></td></tr>" >> $outputFile
-echo "<tr><td>Sequences that are present in more than one replicate</td><td><a href='clonaltypes_replicates.txt'>Download</a></td></tr>" >> $outputFile
-
-echo "</table>" >> $outputFile
-
-cat $dir/naive_downloads.htm >> $outputFile
-
-echo "</div></html>" >> $outputFile
+#!/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
+cp $dir/pure-min.css $outputDir
+cp $dir/IGH_junctie_analyse.png $outputDir
+samples=`cat $outputDir/samples.txt`
+
+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)<br />" > $2
+echo "<table border = 1>" >> $2
+echo "<thead><tr><th>Donor/Replicate</th><th>All</th><th>Productive</th><th>Unique Productive</th><th>Unproductive</th><th>Unique Unproductive</th></tr></thead>" >> $2
+while IFS=, read sample all productive perc_prod productive_unique perc_prod_un unproductive perc_unprod unproductive_unique perc_unprod_un
+	do
+		echo "<tr><td>$sample</td>" >> $2
+		echo "<td>$all</td>" >> $2
+		if [[ "$productive" != "0" ]] ; then
+			echo "<td>$productive (${perc_prod}%)</td>" >> $2
+			echo "<td>$productive_unique (${perc_prod_un}%)</td>" >> $2
+			echo "<td>$unproductive (${perc_unprod}%)</td>" >> $2
+			echo "<td>$unproductive_unique (${perc_unprod_un}%)</td></tr>" >> $2
+		else
+			echo "<td colspan='4' style='background-color: red;'>No productive sequences!</td>" >> $2
+		fi
+done < $outputDir/productive_counting.txt
+echo "</table><br />" >> $2
+echo "Table showing the number and percentage of (unique) productive and unproductive sequences per donor and per replicate. <br />" >> $2
+echo "The definition of unique sequences is based on the clonal type definition filter setting chosen. " >> $2
+echo "</center></html>" >> $2
+
+echo "<html><head><title>Report on:" >> $outputFile
+
+mkdir $outputDir/circos
+cp -R $dir/circos/* $outputDir/circos/
+
+USECIRCOS="no"
+path_to_circos=$(which circos)
+if [ -x "$path_to_circos" ]; then
+	USECIRCOS="yes"
+fi
+
+echo "Using Circos: $USECIRCOS"
+sed -i "s%DATA_DIR%$outputDir/circos%" $outputDir/circos/circos.conf
+for sample in $samples; do #output the samples to a file and create the circos plots with the R script output
+	echo " $sample" >> $outputFile
+	
+	if [[ "$USECIRCOS" != "yes" ]]; then
+		continue
+	fi
+	
+	circos_file="$outputDir/${sample}_VJ_circos.txt"
+	sed -i -- 's%/%:%g' $circos_file
+	echo -e -n "labels$(cat ${circos_file})" > ${circos_file}
+	echo "Circos tools command:"
+	echo "cat \"${circos_file}\" | parse-table -configfile $dir/circos/parse-table.conf 2>&1 | make-conf -dir $outputDir/circos/"
+	cat "${circos_file}" | parse-table -configfile $dir/circos/parse-table.conf 2>&1 | make-conf -dir $outputDir/circos/
+
+	echo "Circos command:"
+	echo "circos -conf $outputDir/circos/circos.conf 2>&1"
+	circos -conf $outputDir/circos/circos.conf 2>&1
+	mv $outputDir/circos/circos.png $outputDir/circosVJ_${sample}.png
+	mv $outputDir/circos/circos.svg $outputDir/circosVJ_${sample}.svg
+	
+	
+	if [[ "$useD" == "true" ]] ; then
+		circos_file="$outputDir/${sample}_VD_circos.txt"
+		sed -i -- 's%/%:%g' $circos_file
+		echo -e -n "labels$(cat ${circos_file})" > ${circos_file}
+		cat "${circos_file}" | parse-table -configfile $dir/circos/parse-table.conf 2>&1 | make-conf -dir $outputDir/circos/
+		sed -i -- 's%/%:%g' $outputDir/circos/cells.txt
+		circos -conf $outputDir/circos/circos.conf 2>&1
+		mv $outputDir/circos/circos.png $outputDir/circosVD_${sample}.png
+		mv $outputDir/circos/circos.svg $outputDir/circosVD_${sample}.svg
+		
+		circos_file="$outputDir/${sample}_DJ_circos.txt"
+		sed -i -- 's%/%:%g' $circos_file
+		echo -e -n "labels$(cat ${circos_file})" > ${circos_file}
+		cat "${circos_file}" | parse-table -configfile $dir/circos/parse-table.conf 2>&1 | make-conf -dir $outputDir/circos/
+		sed -i -- 's%/%:%g' $outputDir/circos/cells.txt
+		circos -conf $outputDir/circos/circos.conf 2>&1
+		mv $outputDir/circos/circos.png $outputDir/circosDJ_${sample}.png
+		mv $outputDir/circos/circos.svg $outputDir/circosDJ_${sample}.svg
+	fi
+done
+echo "</title><script type='text/javascript' src='jquery-1.11.0.min.js'></script>" >> $outputFile
+echo "<link rel='stylesheet' type='text/css' href='pure-min.css'>" >> $outputFile
+echo "<script type='text/javascript' src='tabber.js'></script>" >> $outputFile
+echo "<script type='text/javascript' src='script.js'></script>" >> $outputFile
+echo "<link rel='stylesheet' type='text/css' href='style.css'></head>" >> $outputFile
+echo "<div class='tabber'><div class='tabbertab' title='Gene frequencies'>" >> $outputFile
+
+
+echo "<a href='VFPlot.pdf'><img src='VFPlot.png'/></a>" >> $outputFile
+if [[ "$useD" == "true" ]] ; then
+	echo "<a href='DFPlot.pdf'><img src='DFPlot.png'/></a>" >> $outputFile
+fi
+echo "<a href='VPlot.pdf'><img src='VPlot.png'/></a>" >> $outputFile
+if [[ "$useD" == "true" ]] ; then
+	echo "<a href='DPlot.pdf'><img src='DPlot.png'/></a>" >> $outputFile
+fi
+echo "<a href='JPlot.pdf'><img src='JPlot.png'/></a> <br />" >> $outputFile
+
+echo "<a href='DReadingFrame.pdf'><img src='DReadingFrame.png'/></a>" >> $outputFile
+
+cat $dir/naive_gene_freq.htm >> $outputFile
+
+echo "</div>" >> $outputFile
+
+echo "<div class='tabbertab' title='CDR3 Characteristics'>" >> $outputFile
+echo "<a href='CDR3LengthPlot.pdf'><img src='CDR3LengthPlot.png'/></a><br />" >> $outputFile
+echo "<a href='AAComposition.pdf'><img src='AAComposition.png'/></a>" >> $outputFile
+
+
+echo "<table class='pure-table pure-table-striped'>" >> $outputFile
+echo "<thead><tr><th>Donor</th><th>Median CDR3 Length</th></tr></thead>" >> $outputFile
+while read Sample median
+do
+	echo "<tr><td>$Sample</td><td>$median</td></tr>" >> $outputFile
+done < $outputDir/AAMedianBySample.txt
+echo "</table>" >> $outputFile
+
+cat $dir/naive_cdr3_char.htm >> $outputFile
+
+echo "</div>" >> $outputFile
+
+#Heatmaps
+
+count=1
+echo "<div class='tabbertab' title='Heatmaps'><div class='tabber'>" >> $outputFile
+for sample in $samples; do
+	echo "<div class='tabbertab' title='$sample'><table border='1'><tr>" >> $outputFile
+	if [[ "$useD" == "true" ]] ; then
+		echo "<td><a href='HeatmapVD_$sample.pdf'><img src='HeatmapVD_$sample.png'/></a></td>" >> $outputFile
+	fi
+	echo "<td><a href='HeatmapVJ_$sample.pdf'><img src='HeatmapVJ_$sample.png'/></a></td>" >> $outputFile
+	if [[ "$useD" == "true" ]] ; then
+		echo "<td><a href='HeatmapDJ_$sample.pdf'><img src='HeatmapDJ_$sample.png'/></a></td>" >> $outputFile
+	fi
+	echo "</tr></table></div>" >> $outputFile
+	count=$((count+1))
+done
+
+cat $dir/naive_heatmap.htm >> $outputFile
+
+echo "</div></div>" >> $outputFile
+
+echo "<div class='tabbertab' title='Compare Heatmaps'><table class='pure-table pure-table-striped'><thead><tr><th>ID</th><th>Include</th></tr></thead>" >> $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><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
+
+cat $dir/naive_compare.htm >> $outputFile
+
+echo "</div></div>" >> $outputFile
+
+
+#circos
+
+if [[ "$USECIRCOS" == "yes" ]]; then
+
+	echo "<div class='tabbertab' title='Circos'><div class='tabber'>" >> $outputFile
+	for sample in $samples; do
+		echo "<div class='tabbertab' title='$sample'><table border='1'><center>" >> $outputFile
+		if [[ "$useD" == "true" ]] ; then
+			echo "<tr><td>V-D</td><td><a href='circosVD_${sample}.svg'><img src='circosVD_${sample}.png' width='700' height='700'/></td></tr>" >> $outputFile
+		fi
+		echo "<tr><td>V-J</td><td><a href='circosVJ_${sample}.svg'><img src='circosVJ_${sample}.png' width='700' height='700'/></td></tr>" >> $outputFile
+		if [[ "$useD" == "true" ]] ; then
+			echo "<tr><td>D-J</td><td><a href='circosDJ_${sample}.svg'><img src='circosDJ_${sample}.png' width='700' height='700'/></td></tr>" >> $outputFile
+		fi
+		echo "<center></table></div>" >> $outputFile
+		count=$((count+1))
+	done
+	
+	cat $dir/naive_circos.htm >> $outputFile
+	
+	echo "</div></div>" >> $outputFile
+fi
+#echo "<div class='tabbertab' title='Interactive'><svg class='chart'></svg><script src='http://d3js.org/d3.v3.min.js'></script></div>" >> $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" && "${clonality_method}" != "none" ]] ; then
+	if [[ "${clonality_method}" == "boyd" ]] ; then
+		echo "<div class='tabbertab' title='Clonality'><div class='tabber'>" >> $outputFile
+	else
+		echo "<div class='tabbertab' title='Shared Clonal Types'><div class='tabber'>" >> $outputFile
+	fi
+	
+	for sample in $samples; do
+		echo "${clonality_method}"
+		
+		echo "<div class='tabbertab' title='$sample'><table class='pure-table pure-table-striped'>" >> $outputFile
+		
+		if [[ "${clonality_method}" == "boyd" ]] ; then
+			clonalityScore="$(cat $outputDir/lymphclon_clonality_${sample}.txt)"
+            echo "<tr><td>Clonality Score: </td><td>$clonalityScore</td></tr>" >> $outputFile
+		fi
+		
+		#replicate,reads,squared
+        echo "<tr><td>Replicate ID</td><td>Number of Sequences</td></tr>" >> $outputFile
+        while read replicate reads squared
+        do
+            echo "<tr><td>$replicate</td><td>$reads</td></tr>" >> $outputFile
+        done < $outputDir/ReplicateReads_$sample.txt
+        
+        #sum of reads and reads squared
+        while read readsSum squaredSum
+            do
+                echo "<tr><td>Sum</td><td>$readsSum</td></tr>" >> $outputFile
+        done < $outputDir/ReplicateSumReads_$sample.txt
+        
+        echo "<tr><td></td><td></td></tr>" >> $outputFile
+        
+        #overview
+        echo "<tr><td>Number of replicates containing the coincidence</td><td>Number of sequences shared between replicates</td></tr>" >> $outputFile
+        while read type count weight weightedCount
+        do
+            if [[ "$type" -eq "1" ]]; then
+                echo "<tr><td>$type</td><td>$count</td></tr>" >> $outputFile
+            else
+                echo "<tr><td><a href='coincidences_${sample}_${type}.txt'>$type</a></td><td>$count</td></tr>" >> $outputFile
+            fi
+        done < $outputDir/ClonalityOverView_$sample.txt
+        echo "</table></div>" >> $outputFile
+	done
+	
+	cat $dir/naive_clonality.htm >> $outputFile
+	
+	echo "</div></div>" >> $outputFile
+fi
+
+#hasJunctionData="$(if head -n 1 $inputFile | grep -qE '3V.REGION.trimmed.nt.nb'; then echo 'Yes'; else echo 'No'; fi)"
+
+#if [[ "$hasJunctionData" == "Yes" ]] ; then
+if [ -a "$outputDir/junctionAnalysisProd_mean_wD.txt" ] ; then
+	echo "<div class='tabbertab' title='Junction Analysis'>" >> $outputFile
+	echo "<img src='IGH_junctie_analyse.png' />" >> $outputFile
+	
+	echo "<center><p style='font-size: 20;'>Unique rearrangements with a V, D and J gene assigned</p></center>" >> $outputFile
+	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Productive mean</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.D</th><th>D.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
+	while read Sample unique VDEL P1 N1 P2 DELD DDEL P3 N2 P4 DELJ TotalDel TotalN TotalP median
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELD</td><td>$DDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>$median</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysisProd_mean_wD.txt
+	echo "</tbody></table>" >> $outputFile
+	
+	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Unproductive mean</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.D</th><th>D.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
+	while read Sample unique VDEL P1 N1 P2 DELD DDEL P3 N2 P4 DELJ TotalDel TotalN TotalP median
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELD</td><td>$DDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>-</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysisUnProd_mean_wD.txt
+	echo "</tbody></table>" >> $outputFile
+	
+	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Productive median</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.D</th><th>D.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
+	while read Sample unique VDEL P1 N1 P2 DELD DDEL P3 N2 P4 DELJ TotalDel TotalN TotalP median
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELD</td><td>$DDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>$median</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysisProd_median_wD.txt
+	echo "</tbody></table>" >> $outputFile
+	
+	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Unproductive median</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N1</th><th>P2</th><th>DEL.D</th><th>D.DEL</th><th>P3</th><th>N2</th><th>P4</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
+	while read Sample unique VDEL P1 N1 P2 DELD DDEL P3 N2 P4 DELJ TotalDel TotalN TotalP median
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELD</td><td>$DDEL</td><td>$P3</td><td>$N2</td><td>$P4</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>-</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysisUnProd_median_wD.txt
+	echo "</tbody></table>" >> $outputFile
+	
+	# again for no-d
+	echo "<center><p style='font-size: 20;'>Unique rearrangements with only a V and J gene assigned</p></center>" >> $outputFile
+	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Productive mean</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N</th><th>P2</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
+	while read Sample unique VDEL P1 N1 P2 DELJ TotalDel TotalN TotalP median
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>$median</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysisProd_mean_nD.txt
+	echo "</tbody></table>" >> $outputFile
+	
+	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Unproductive mean</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N</th><th>P2</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
+	while read Sample unique VDEL P1 N1 P2 DELJ TotalDel TotalN TotalP median
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>-</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysisUnProd_mean_nD.txt
+	echo "</tbody></table>" >> $outputFile
+	
+	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Productive median</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N</th><th>P2</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
+	while read Sample unique VDEL P1 N1 P2 DELJ TotalDel TotalN TotalP median
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>$median</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysisProd_median_nD.txt
+	echo "</tbody></table>" >> $outputFile
+	
+	echo "<table class='pure-table pure-table-striped' id='junction_table'> <caption>Unproductive median</caption><thead><tr><th>Donor</th><th>Number of sequences</th><th>V.DEL</th><th>P1</th><th>N</th><th>P2</th><th>DEL.J</th><th>Total.Del</th><th>Total.N</th><th>Total.P</th><th>CDR3.Length</th><thead></tr><tbody>" >> $outputFile
+	while read Sample unique VDEL P1 N1 P2 DELJ TotalDel TotalN TotalP median
+	do
+		echo "<tr><td>$Sample</td><td>$unique</td><td>$VDEL</td><td>$P1</td><td>$N1</td><td>$P2</td><td>$DELJ</td><td>$TotalDel</td><td>$TotalN</td><td>$TotalP</td><td>-</td></tr>" >> $outputFile
+	done < $outputDir/junctionAnalysisUnProd_median_nD.txt
+	echo "</tbody></table>" >> $outputFile
+	
+	cat $dir/naive_junction.htm >> $outputFile
+	
+	echo "</div>" >> $outputFile
+fi
+
+echo "<div class='tabbertab' title='Downloads'>" >> $outputFile
+echo "<table class='pure-table pure-table-striped'>" >> $outputFile
+echo "<thead><tr><th>Description</th><th>Link</th></tr></thead>" >> $outputFile
+echo "<tr><td>The filtered dataset</td><td><a href='allUnique.txt'>Download</a></td></tr>" >> $outputFile
+echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>Gene frequencies</td></tr>" >> $outputFile
+
+echo "<tr><td>The dataset used to generate the distribution of V gene families graph</td><td><a href='VFFrequency.txt'>Download</a></td></tr>" >> $outputFile
+if [[ "$useD" == "true" ]] ; then
+	echo "<tr><td>The dataset used to generate  the distribution of D gene families graph</td><td><a href='DFFrequency.txt'>Download</a></td></tr>" >> $outputFile
+fi
+
+echo "<tr><td>The dataset used to generate the relative frequency of V gene usage graph</td><td><a href='VFrequency.txt'>Download</a></td></tr>" >> $outputFile
+if [[ "$useD" == "true" ]] ; then
+	echo "<tr><td>The dataset used to generate the relative frequency of D gene usage graph</td><td><a href='DFrequency.txt'>Download</a></td></tr>" >> $outputFile
+fi
+echo "<tr><td>The dataset used to generate the relative frequency of J gene usage graph</td><td><a href='JFrequency.txt'>Download</a></td></tr>" >> $outputFile
+echo "<tr><td>The dataset used to generate the relative frequency of the D reading frame graph</td><td><a href='DReadingFrame.txt'>Download</a></td></tr>" >> $outputFile
+
+echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>CDR3 Characteristics</td></tr>" >> $outputFile
+echo "<tr><td>The dataset used to generate the CDR3 length frequency graph</td><td><a href='CDR3LengthPlot.txt'>Download</a></td></tr>" >> $outputFile
+echo "<tr><td>The dataset used to generate the Amino Acid Composition in the CDR3 graph</td><td><a href='AAComposition.txt'>Download</a></td></tr>" >> $outputFile
+
+echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>Heatmaps</td></tr>" >> $outputFile
+for sample in $samples; do
+	if [[ "$useD" == "true" ]] ; then
+		echo "<tr><td>The data used to generate the VD heatmap for $sample.</td><td><a href='HeatmapVD_$sample.txt'>Download</a></td></tr>" >> $outputFile
+	fi
+	echo "<tr><td>The data used to generate the VJ heatmap for $sample.</td><td><a href='HeatmapVJ_$sample.txt'>Download</a></td></tr>" >> $outputFile
+	if [[ "$useD" == "true" ]] ; then
+		echo "<tr><td>The data used to generate the DJ heatmap for $sample.</td><td><a href='HeatmapDJ_$sample.txt'>Download</a></td></tr>" >> $outputFile
+	fi
+done
+
+echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>Circos</td></tr>" >> $outputFile
+for sample in $samples; do
+	if [[ "$useD" == "true" ]] ; then
+		echo "<tr><td>The data used to generate the VD Circos plots for $sample.</td><td><a href='${sample}_VD_circos.txt'>Download</a></td></tr>" >> $outputFile
+	fi
+	echo "<tr><td>The data used to generate the VJ Circos plots for $sample.</td><td><a href='${sample}_VJ_circos.txt'>Download</a></td></tr>" >> $outputFile
+	if [[ "$useD" == "true" ]] ; then
+		echo "<tr><td>The data used to generate the DJ Circos plots for $sample.</td><td><a href='${sample}_DJ_circos.txt'>Download</a></td></tr>" >> $outputFile
+	fi
+done
+
+#echo "<tr><td>A frequency count of V Gene + J Gene + CDR3</td><td><a href='VJCDR3_count.txt'>Download</a></td></tr>" >> $outputFile
+
+echo "<tr><td colspan='2' style='background-color:#E0E0E0;'>Clonality</td></tr>" >> $outputFile
+echo "<tr><td>The dataset used to calculate clonality score (Unique based on clonaltype, $clonalType)</td><td><a href='clonalityComplete.txt'>Download</a></td></tr>" >> $outputFile
+# echo "<tr><td>Sequences that are present in more than one replicate</td><td><a href='clonaltypes_replicates.txt'>Download</a></td></tr>" >> $outputFile
+
+echo "</table>" >> $outputFile
+
+cat $dir/naive_downloads.htm >> $outputFile
+
+echo "</div></html>" >> $outputFile
--- a/report_clonality/script.js	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/script.js	Thu Feb 25 13:36:15 2021 +0000
@@ -1,36 +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();
-})
+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();
+})
--- a/report_clonality/style.css	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/style.css	Thu Feb 25 13:36:15 2021 +0000
@@ -1,109 +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;
-}
+/* $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;
+}
--- a/report_clonality/tabber.js	Thu Aug 08 07:40:36 2019 -0400
+++ b/report_clonality/tabber.js	Thu Feb 25 13:36:15 2021 +0000
@@ -1,40 +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);};}}
+/* 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