changeset 3:71ed55a3515a draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/rseqc commit 37fb1988971807c6a072e1afd98eeea02329ee83
author iuc
date Tue, 14 Mar 2017 10:22:57 -0400
parents ebadf9ee2d08
children caaa120457bc
files .hgignore FPKM_count.xml README.txt RNA_fragment_size.xml RPKM_count.xml RPKM_saturation.xml bam2wig.xml bam_stat.xml clipping_profile.xml deletion_profile.xml geneBody_coverage.xml geneBody_coverage2.xml infer_experiment.xml inner_distance.xml insertion_profile.xml junction_annotation.xml junction_saturation.xml mismatch_profile.xml read_GC.xml read_NVC.xml read_distribution.xml read_duplication.xml read_hexamer.xml read_quality.xml rseqc_macros.xml samtoolshelper.py static/images/36mer.qual.heatmap.png static/images/36mer.qual.plot.png static/images/Aug_26.geneBodyCoverage.curves.png static/images/Aug_26.geneBodyCoverage.heatMap.png static/images/NVC_plot.png static/images/RelativeError.png static/images/clipping_good.png static/images/duplicate.png static/images/geneBody_coverage.png static/images/geneBody_workflow.png static/images/inner_distance.png static/images/junction.png static/images/junction_saturation.png static/images/logo.png static/images/mismatch_profile.png static/images/out.deletion_profile.png static/images/out.insertion_profile.R1.png static/images/out.insertion_profile.R2.png static/images/read_gc.png static/images/saturation.png static/images/saturation_eg.png test-data/hg19.HouseKeepingGenes_30.bed test-data/hg19.chrom.sizes test-data/hg19_RefSeq_chr1_1-100000.bed test-data/output.DupRate_plot.pdf test-data/output.DupRate_plot.r test-data/output.FPKM.xls test-data/output.GC.xls test-data/output.GC_plot.pdf test-data/output.GC_plot.r test-data/output.NVC.xls test-data/output.NVC_plot.pdf test-data/output.NVC_plot.r test-data/output.RNA_fragment_size.txt test-data/output.bamstats.txt test-data/output.clipping_profile.pdf test-data/output.clipping_profile.r test-data/output.clipping_profile.xls test-data/output.deletion_profile.pdf test-data/output.deletion_profile.r test-data/output.deletion_profile.txt test-data/output.geneBodyCoverage.curves.pdf test-data/output.geneBodyCoverage.r test-data/output.geneBodyCoverage.txt test-data/output.geneBodyCoverage2.curves.pdf test-data/output.geneBodyCoverage2.r test-data/output.geneBodyCoverage2.txt test-data/output.infer_experiment.txt test-data/output.inner_distance.txt test-data/output.inner_distance_freq.txt test-data/output.inner_distance_plot.pdf test-data/output.inner_distance_plot.r test-data/output.insertion_profile.pdf test-data/output.insertion_profile.r test-data/output.insertion_profile.xls test-data/output.junction.xls test-data/output.junctionSaturation_plot.pdf test-data/output.junctionSaturation_plot.r test-data/output.junction_plot.r test-data/output.mismatch_profile.pdf test-data/output.mismatch_profile.r test-data/output.mismatch_profile.xls test-data/output.pos.DupRate.xls test-data/output.qual.boxplot.pdf test-data/output.qual.heatmap.pdf test-data/output.qual.r test-data/output.read_distribution.txt test-data/output.saturation.pdf test-data/output.seq.DupRate.xls test-data/output.splice_events.pdf test-data/output.splice_junction.pdf test-data/output.tin.summary.txt test-data/output.tin.xls test-data/output2.geneBodyCoverage.curves.pdf test-data/output2.geneBodyCoverage.heatMap.pdf test-data/output2.geneBodyCoverage.r test-data/output2.geneBodyCoverage.txt test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq.gz test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.R2.fastq test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.bam test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.bigwig test-data/pairend_strandspecific_51mer_hg19_random.bam test-data/testwig.Forward.wig test-data/testwig.Reverse.wig test-data/testwig.wig tin.xml tool_dependencies.xml
diffstat 112 files changed, 6874 insertions(+), 966 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Thu Jul 18 11:01:08 2013 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-# use glob syntax
-syntax: regexp
-
-^test-data/.*
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FPKM_count.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,132 @@
+<tool id="rseqc_FPKM_count" name="FPKM Count" version="@WRAPPER_VERSION@">
+    <description>calculates raw read count, FPM, and FPKM for each gene</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[FPKM_count.py --version]]></version_command>
+
+    <command><![CDATA[
+        ln -sf '${input}' 'local_input.bam' &&
+        ln -sf '${input.metadata.bam_index}' 'local_input.bam.bai' &&
+        FPKM_count.py -i 'local_input.bam' -o output -r '${refgene}'
+
+        #if str($strand_type.strand_specific) == "pair"
+            -d
+            #if str($strand_type.pair_type) == "sd"
+                '1++,1--,2+-,2-+'
+            #else
+                '1+-,1-+,2++,2--'
+            #end if
+        #end if
+
+        #if str($strand_type.strand_specific) == "single"
+            -d
+            #if str($strand_type.single_type) == "s"
+                '++,--'
+            #else
+                '+-,-+'
+            #end if
+        #end if
+
+        @MULTIHITS@
+
+        $onlyexonic
+        --single-read="${singleread}"
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="refgene_param" />
+        <expand macro="strand_type_param" />
+        <expand macro="multihits_param" />
+        <param name="onlyexonic" type="boolean" value="false" truevalue="--only-exonic" falsevalue="" label="Only use exonic (UTR exons and CDS exons) reads, otherwise use all reads" help="(--only-exonic)"/>
+        <param name="singleread" type="select" label="How should read-pairs that only have one end mapped be counted?" help="(--single-read)">
+            <option value="1" selected="true">Treat it as a whole fragment (1)</option>
+            <option value="0.5">Treat it as a half fragment (0.5)</option>
+            <option value="0">Ignore it (0)</option>
+        </param>
+    </inputs>
+
+    <outputs>
+        <data format="xls" name="outputxls" from_work_dir="output.FPKM.xls"/>
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed"/>
+            <output name="outputxls" file="output.FPKM.xls"/>
+        </test>
+    </tests>
+
+    <help><![CDATA[
+FPKM_count.py
++++++++++++++
+
+Given a BAM file and reference gene model, this program will calculate the raw
+read count, FPM (fragments per million), and FPKM (fragments per million
+mapped reads per kilobase exon) for each gene in a BED file. For strand
+specific RNA-seq data, program will assign read to its parental gene according
+to strand rule, if you don't know the strand rule, run infer_experiment.py.
+Please note that chromosome ID, genome cooridinates should be concordant
+between BAM and BED files.
+
+Inputs
+++++++++++++++
+
+Input BAM/SAM file
+    Alignment file in BAM/SAM format.
+
+Reference gene model
+    Gene model in BED format.
+
+Strand sequencing type (default=none)
+    See Infer Experiment tool if uncertain.
+
+Options
+++++++++++++++
+
+Skip Multiple Hit Reads
+    Use Multiple hit reads or use only uniquely mapped reads.
+
+Minimum mapping quality
+    Minimum mapping quality (phred scaled) for an alignment to be called
+    "uniquely mapped". default=30
+
+Only use exonic reads
+    Renders program only used exonic (UTR exons and CDS exons) reads,
+    otherwise use all reads.
+
+Single Reads
+    How to count read-pairs that only have one end mapped. 0: ignore it. 0.5:
+    treat it as half fragment. 1: treat it as whole fragment. default=1
+
+Sample Output
+++++++++++++++
+
+======  =========  =========  =========  =========  ===========  ==========  ============  ============
+#chrom  st         end        accession  mRNA_size  gene_strand  Frag_count  FPM           FPKM
+======  =========  =========  =========  =========  ===========  ==========  ============  ============
+chr1    100652477  100715409  NM_001918  10815.0    ‘-‘          5498.0      191.73788949  17.728884835
+chr1    175913961  176176380  NM_022457  2789.0     ‘-‘          923.0       32.188809021  11.541344217
+chr1    150980972  151008189  NM_021222  2977.0     ‘+’          687.0       23.958517657  8.0478729115
+chr1    6281252    6296044    NM_012405  4815.0     ‘-‘          1396.0      48.684265866  10.11095864
+chr1    20959947   20978004   NM_032409  2660.0     ‘+’          509.0       17.750925018  6.6732800821
+chr1    32479294   32509482   NM_006559  2891.0     ‘+’          2151.0      75.014223408  25.947500314
+======  =========  =========  =========  =========  ===========  ==========  ============  ============
+
+@ABOUT@
+
+]]>
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,23 @@
+== RSeQC Galaxy Wrapper ==
+
+This is a Galaxy wrapper for the RSeQC RNA-Seq QC package.
+
+** Installation **
+
+Installation from a tool shed provides the necessary tool dependencies, R, numpy, and RSeQC.
+
+Otherwise, make sure that R and the RSeQC scripts are in the path and run under the Galaxy environment.
+Move the xml files to a subdirectory of your tools directory and add lines in tool_conf.xml to point to them.
+Restart the Galaxy server.
+
+Requires Python 2.7
+
+** Attribution **
+
+The RSeQC package and associated documentation can be found at: http://rseqc.sourceforge.net/
+
+The galaxy wrapper code was written by
+    Nilesh Kavthekar, School of Engineering and Applied Sciences, University of Pennsylvania, Class of 2016
+Modified by
+    Lance Parsons, Lewis-Sigler Institute for Integrative Genomics, Princeton University,
+    Bjorn Gruning, University of Freiburg, bjoern.gruening@gmail.com
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RNA_fragment_size.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,76 @@
+<tool id="rseqc_RNA_fragment_size" name="RNA fragment size" version="@WRAPPER_VERSION@">
+    <description>
+     calculates the fragment size for each gene/transcript
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[RNA_fragment_size.py --version]]></version_command>
+
+    <command><![CDATA[
+        ln -sf '${input}' 'input.bam' &&
+        ln -sf '$input.metadata.bam_index' 'input.bam.bai' &&
+        RNA_fragment_size.py -i 'input.bam' --refgene='${refgene}' --mapq=${mapq} --frag-num=${fragnum} > '${output}'
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="refgene_param" />
+        <expand macro="mapq_param" />
+        <param name="fragnum" type="integer" value="3" label="Minimum number of fragments (default: 3)" help="(--frag-num)" />
+    </inputs>
+
+    <outputs>
+        <data format="tabular" name="output" />
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed" />
+            <output name="output" file="output.RNA_fragment_size.txt" />
+        </test>
+    </tests>
+
+    <help><![CDATA[
+RNA_fragment_size.py
+++++++++++++++++++++
+
+Calculate fragment size for each gene/transcript. For each transcript, it will
+report : 1) Number of fragment that was used to estimate mean, median, std (see
+below). 2) mean of fragment size 3) median of fragment size 4) stdev of fragment
+size.
+
+Inputs
+++++++
+
+Input BAM/SAM file
+    Alignment file in BAM/SAM format.
+
+Reference gene model
+    Reference gene model in BED format. Must be strandard 12-column BED file.
+    [required]
+
+Minimum mapping quality
+    Minimum mapping quality for an alignment to be considered as "uniquely
+    mapped". default=30
+
+Minimum number of fragments
+    Minimum number of fragments. default=3
+
+@ABOUT@
+
+]]>
+
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- a/RPKM_count.xml	Thu Jul 18 11:01:08 2013 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-<tool id="RPKM_count" name="RPKM Count">
-	<description>calculates raw count and RPKM values for transcript at exon, intron, and mRNA level</description>
-	<requirements>
-		<requirement type="package" version="0.1.18">samtools</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> samtoolshelper.py RPKM_count.py -i $input -o output -r $refgene
-
-		#if $nx
-			-x
-		#end if
-		
-		#if str($strand_type.strand_specific) == "pair"
-			-d
-			#if str($strand_type.pair_type) == "sd"
-				'1++,1--,2+-,2-+'
-			#else
-				'1+-,1-+,2++,2--'
-			#end if
-		#end if
-
-		#if str($strand_type.strand_specific) == "single"
-			-d
-			#if str($strand_type.single_type) == "s"
-				'++,--'
-			#else
-				'+-,-+'
-			#end if
-		#end if
-
-		#if $skiphits
-			-u
-		#end if
-
-		#if $onlyexonic
-			-e
-		#end if
-
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam" label="input bam/sam file" />
-		<param name="refgene" type="data" format="bed" label="Reference gene model" />
-		<conditional name="strand_type">
-			<param name="strand_specific" type="select" label="Strand-specific?" value="None">
-				<option value="none">None</option>
-				<option value="pair">Pair-End RNA-seq</option>
-				<option value="single">Single-End RNA-seq</option>
-			</param>
-			<when value="pair">
-				<param name="pair_type" type="select" display="radio" label="Pair-End Read Type (format: mapped --> parent)" value="sd">
-					<option value="sd"> read1 (positive --> positive; negative --> negative), read2 (positive --> negative; negative --> positive)</option>
-					<option value="ds">read1 (positive --> negative; negative --> positive), read2 (positive --> positive; negative --> negative)</option>
-				</param>
-			</when>
-			<when value="single">
-				<param name="single_type" type="select" display="radio" label="Single-End Read Type (format: mapped --> parent)" value="s">
-					<option value="s">positive --> positive; negative --> negative</option>
-					<option value="d">positive --> negative; negative --> positive</option>
-				</param>
-			</when>
-			<when value="none"></when>
-		</conditional>
-		<param name="skiphits" type="boolean" value="false" label="Skip Multiple Hit Reads" />
-		<param name="onlyexonic" type="boolean" value="false" label="Only use exonic (UTR exons and CDS exons) reads, otherwise use all reads" />
-	</inputs>
-	<outputs>
-		<data format="xls" name="outputxls" from_work_dir="output_read_count.xls"/>
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<param name="refgene" value="hg19_RefSeq.bed" />
-			<output name="outputxls" file="rpkmctout_read_count.xls" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
-
------
-
-About RSeQC
-+++++++++++
-
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
-
-The RSeQC package is licensed under the GNU GPL v3 license.
-
-Inputs
-++++++++++++++
-
-Input BAM/SAM file
-	Alignment file in BAM/SAM format.
-
-Reference gene model
-	Gene model in BED format.
-
-Strand sequencing type (default=none)
-	See Infer Experiment tool if uncertain.
-
-Options
-++++++++++++++
-
-Skip Multiple Hit Reads
-	Use Multiple hit reads or use only uniquely mapped reads.
-
-Only use exonic reads 
-	Renders program only used exonic (UTR exons and CDS exons) reads, otherwise use all reads.
-	
-	</help>
-</tool>
--- a/RPKM_saturation.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/RPKM_saturation.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,108 +1,130 @@
-<tool id="RPKM_saturation" name="RPKM Saturation">
-	<description>calculates raw count and RPKM values for transcript at exon, intron, and mRNA level</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> RPKM_saturation.py -i $input -o output -r $refgene
+<tool id="rseqc_RPKM_saturation" name="RPKM Saturation" version="@WRAPPER_VERSION@">
+    <description>calculates raw count and RPKM values for transcript at exon, intron, and mRNA level</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[RPKM_saturation.py --version]]></version_command>
+
+    <command><![CDATA[
+        RPKM_saturation.py -i '${input}' -o output -r '${refgene}'
+
+        #if str($strand_type.strand_specific) == "pair"
+            -d
+            #if str($strand_type.pair_type) == "sd"
+                '1++,1--,2+-,2-+'
+            #else
+                '1+-,1-+,2++,2--'
+            #end if
+        #end if
 
-		#if str($strand_type.strand_specific) == "pair"
-			-d
-			#if str($strand_type.pair_type) == "sd"
-				'1++,1--,2+-,2-+'
-			#else
-				'1+-,1-+,2++,2--'
-			#end if
-		#end if
+        #if str($strand_type.strand_specific) == "single"
+            -d
+            #if str($strand_type.single_type) == "s"
+                '++,--'
+            #else
+                '+-,-+'
+            #end if
+        #end if
 
-		#if str($strand_type.strand_specific) == "single"
-			-d
-			#if str($strand_type.single_type) == "s"
-				'++,--'
-			#else
-				'+-,-+'
-			#end if
-		#end if
+        -l ${percentileFloor} -u ${percentileCeiling} -s ${percentileStep} -c ${rpkmCutoff}
+        ]]>
+    </command>
 
-		-l $percentileFloor -u $percentileCeiling -s $percentileStep -c $rpkmCutoff
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="refgene_param" />
+        <expand macro="strand_type_param" />
+        <param name="percentileFloor" type="integer" value="5" label="Begin sampling from this percentile (default=5)" help="(--percentile-floor)"/>
+        <param name="percentileCeiling" type="integer" value="100" label="End sampling at this percentile (default=100)" help="(--percentile-ceiling)" />
+        <param name="percentileStep" type="integer" value="5" label="Sampling step size (default=5)" help="(--percentile-step)" />
+        <param name="rpkmCutoff" type="text" value="0.01" label="Ignore transcripts with RPKM smaller than this number (default=0.01)" help="(--rpkm-cutoff)" />
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
 
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam" label="input bam/sam file" />
-		<param name="refgene" type="data" format="bed" label="Reference gene model" />
-		<conditional name="strand_type">
-			<param name="strand_specific" type="select" label="Strand-specific?" value="None">
-				<option value="none">None</option>
-				<option value="pair">Pair-End RNA-seq</option>
-				<option value="single">Single-End RNA-seq</option>
-			</param>
-			<when value="pair">
-				<param name="pair_type" type="select" display="radio" label="Pair-End Read Type (format: mapped --> parent)" value="sd">
-					<option value="sd"> read1 (positive --> positive; negative --> negative), read2 (positive --> negative; negative --> positive)</option>
-					<option value="ds">read1 (positive --> negative; negative --> positive), read2 (positive --> positive; negative --> negative)</option>
-				</param>
-			</when>
-			<when value="single">
-				<param name="single_type" type="select" display="radio" label="Single-End Read Type (format: mapped --> parent)" value="s">
-					<option value="s">positive --> positive; negative --> negative</option>
-					<option value="d">positive --> negative; negative --> positive</option>
-				</param>
-			</when>
-			<when value="none"></when>
-		</conditional>
-		<param name="percentileFloor" type="integer" value="5" label="Begin sampling from this percentile (default=5)" />
-		<param name="percentileCeiling" type="integer" value="100" label="End sampling at this percentile (default=100)" />
-		<param name="percentileStep" type="integer" value="5" label="Sampling step size (default=5)" />
-		<param name="rpkmCutoff" type="text" value="0.01" label="Ignore transcripts with RPKM smaller than this number (default=0.01)" />
-	</inputs>
-	<outputs>
-		<data format="xls" name="outputxls" from_work_dir="output.eRPKM.xls"/>
-		<data format="xls" name="outputrawxls" from_work_dir="output.rawCount.xls"/>
-		<data format="r" name="outputr" from_work_dir="output.saturation.r"/>
-		<data format="pdf" name="outputpdf" from_work_dir="output.saturation.pdf"/>
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<param name="refgene" value="hg19_RefSeq.bed" />
-			<output name="outputxls" file="rpkmsatout.eRPKM.xls" />
-			<output name="outputrawxls" file="rpkmsatout.rawCount.xls" />
-			<output name="outputr" file="rpkmsatout.saturation.r" />
-			<output name="outputpdf" file="rpkmsatout.saturation.pdf" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.saturation.pdf" />
+        <data format="xls" name="outputxls" from_work_dir="output.eRPKM.xls" label="${tool.name} on ${on_string} (RPKM xls)"/>
+        <data format="xls" name="outputrawxls" from_work_dir="output.rawCount.xls" label="${tool.name} on ${on_string} (Raw Count xls)"/>
+        <expand macro="rscript_output_data" filename="output.saturation.r" />
+    </outputs>
 
------
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_random.bam"/>
+            <param name="refgene" value="hg19.HouseKeepingGenes_30.bed"/>
+            <param name="rscript_output" value="true" />
+            <output name="outputxls">
+              <assert_contents>
+                <has_n_columns n="26" />
+                <has_line_matching expression="chr1\t16174358\t16266950\tNM_015001.*" />
+              </assert_contents>
+            </output>
+            <output name="outputrawxls">
+              <assert_contents>
+                <has_n_columns n="26" />
+                <has_line_matching expression="chr1\t16174358\t16266950\tNM_015001.*" />
+              </assert_contents>
+            </output>
+            <output name="outputr">
+              <assert_contents>
+                <has_text text="pdf('output.saturation.pdf')" />
+                <has_line_matching expression="S5=c\(\d+\.\d+\)" />
+              </assert_contents>
+            </output>
+            <output name="outputpdf" file="output.saturation.pdf" compare="sim_size" />
+        </test>
+    </tests>
 
-About RSeQC
-+++++++++++
+    <help><![CDATA[
+RPKM_saturation.py
+++++++++++++++++++
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+The precision of any sample statitics (RPKM) is affected by sample size (sequencing depth);
+\'resampling\' or \'jackknifing\' is a method to estimate the precision of sample statistics by
+using subsets of available data. This module will resample a series of subsets from total RNA
+reads and then calculate RPKM value using each subset. By doing this we are able to check if
+the current sequencing depth was saturated or not (or if the RPKM values were stable or not)
+in terms of genes' expression estimation. If sequencing depth was saturated, the estimated
+RPKM value will be stationary or reproducible. By default, this module will calculate 20
+RPKM values (using 5%, 10%, ... , 95%,100% of total reads) for each transcripts.
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+In the output figure, Y axis is "Percent Relative Error" or "Percent Error" which is used
+to measures how the RPKM estimated from subset of reads (i.e. RPKMobs) deviates from real
+expression level (i.e. RPKMreal). However, in practice one cannot know the RPKMreal. As a
+proxy, we use the RPKM estimated from total reads to approximate RPKMreal.
+
+.. image:: $PATH_TO_IMAGES/RelativeError.png
+   :height: 80 px
+   :width: 400 px
+   :scale: 100 %
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Reference gene model
-	Gene model in BED format.
+    Gene model in BED format.
 
 Strand sequencing type (default=none)
-	See Infer Experiment tool if uncertain.
+    See Infer Experiment tool if uncertain.
 
 Options
 ++++++++++++++
 
 Skip Multiple Hit Reads
-	Use Multiple hit reads or use only uniquely mapped reads.
+    Use Multiple hit reads or use only uniquely mapped reads.
 
-Only use exonic reads 
-	Renders program only used exonic (UTR exons and CDS exons) reads, otherwise use all reads.
+Only use exonic reads
+    Renders program only used exonic (UTR exons and CDS exons) reads, otherwise use all reads.
 
 Output
 ++++++++++++++
@@ -112,17 +134,35 @@
 3. output.saturation.r: R script to generate plot
 4. output.saturation.pdf:
 
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/saturation.png
+.. image:: $PATH_TO_IMAGES/saturation.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
 
 - All transcripts were sorted in ascending order according to expression level (RPKM). Then they are divided into 4 groups:
-	1. Q1 (0-25%): Transcripts with expression level ranked below 25 percentile.
-	2. Q2 (25-50%): Transcripts with expression level ranked between 25 percentile and 50 percentile.
-	3. Q3 (50-75%): Transcripts with expression level ranked between 50 percentile and 75 percentile.
-	4. Q4 (75-100%): Transcripts with expression level ranked above 75 percentile.
+    1. Q1 (0-25%): Transcripts with expression level ranked below 25 percentile.
+    2. Q2 (25-50%): Transcripts with expression level ranked between 25 percentile and 50 percentile.
+    3. Q3 (50-75%): Transcripts with expression level ranked between 50 percentile and 75 percentile.
+    4. Q4 (75-100%): Transcripts with expression level ranked above 75 percentile.
 - BAM/SAM file containing more than 100 million alignments will make module very slow.
 - Follow example below to visualize a particular transcript (using R console)::
-- output example
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/saturation_eg.png
+
+    pdf("xxx.pdf")     #starts the graphics device driver for producing PDF graphics
+    x &lt;- seq(5,100,5)  #resampling percentage (5,10,15,...,100)
+    rpkm &lt;- c(32.95,35.43,35.15,36.04,36.41,37.76,38.96,38.62,37.81,38.14,37.97,38.58,38.59,38.54,38.67, 38.67,38.87,38.68,  38.42,  38.23)  #Paste RPKM values calculated from each subsets
+    scatter.smooth(x,100*abs(rpkm-rpkm[length(rpkm)])/(rpkm[length(rpkm)]),type="p",ylab="Precent Relative Error",xlab="Resampling Percentage")
+    dev.off()          #close graphical device
 
-	</help>
+.. image:: $PATH_TO_IMAGES/saturation_eg.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
+
+@ABOUT@
+
+]]>
+    </help>
+
+    <expand macro="citations" />
+
 </tool>
--- a/bam2wig.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/bam2wig.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,124 +1,130 @@
-<tool id="bam2wig" name="BAM to Wiggle">
-	<description> 
-		converts all types of RNA-seq data from .bam to .wig 
-	</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="0.1.18">samtools</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> 
-		samtoolshelper.py /home/nilesh/RSeQC-2.3.3/scripts/bam2wig.py -i $input -s $chromsize -o outfile
+<tool id="rseqc_bam2wig" name="BAM to Wiggle" version="@WRAPPER_VERSION@">
+    <description>
+        converts all types of RNA-seq data from .bam to .wig
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[bam2wig.py --version]]></version_command>
+
+    <command><![CDATA[
+        ln -sf '${input}' 'input.bam' &&
+        ln -sf '${input.metadata.bam_index}' 'input.bam.bai' &&
+        bam2wig.py -i 'input.bam' -s '${chromsize}' -o outfile
 
-		#if str($strand_type.strand_specific) == "pair"
-			-d
-			#if str($strand_type.pair_type) == "sd"
-				'1++,1--,2+-,2-+'
-			#else
-				'1+-,1-+,2++,2--'
-			#end if
-		#end if
+        #if str($strand_type.strand_specific) == "pair"
+            -d
+            #if str($strand_type.pair_type) == "sd"
+                '1++,1--,2+-,2-+'
+            #else
+                '1+-,1-+,2++,2--'
+            #end if
+        #end if
 
-		#if str($strand_type.strand_specific) == "single"
-			-d
-			#if str($strand_type.single_type) == "s"
-				'++,--'
-			#else
-				'+-,-+'
-			#end if
-		#end if
+        #if str($strand_type.strand_specific) == "single"
+            -d
+            #if str($strand_type.single_type) == "s"
+                '++,--'
+            #else
+                '+-,-+'
+            #end if
+        #end if
 
-		#if $wigsum.wigsum_type
-			-t $wigsum.totalwig
-		#end if
+        #if str($wigsum_type.wigsum_type_selector) == "normalize":
+            -t ${wigsum.totalwig}
+        #end if
 
-		#if $skipmultihits
-			-u
-		#end if
-	</command>
-	<inputs>
-		<param name="input" type="data" label="Input .bam File" format="bam" />
-		<param name="chromsize" type="data" label="Chromosome size file (tab or space separated)" format="txt,tabular" />
-		<param name="skipmultihits" type="boolean" label="Skip Multiple Hit Reads/Only Use Uniquely Mapped Reads" value="false" />
-		<conditional name="wigsum">
-			<param name="wigsum_type" type="boolean" label="Specify wigsum?" value="false">
-			</param>
-			<when value="true">
-				<param name="totalwig" value="0" type="integer" label="specified wigsum" />
-			</when>
-			<when value="false"></when>
-		</conditional>
-		<conditional name="strand_type">
-			<param name="strand_specific" type="select" label="Strand-specific?" value="none">
-				<option value="none">none</option>
-				<option value="pair">Pair-End RNA-seq</option>
-				<option value="single">Single-End RNA-seq</option>
-			</param>
-			<when value="pair">
-				<param name="pair_type" type="select" display="radio" label="Pair-End Read Type (format: mapped --> parent)" value="sd">
-					<option value="sd"> read1 (positive --> positive; negative --> negative), read2 (positive --> negative; negative --> positive)</option>
-					<option value="ds">read1 (positive --> negative; negative --> positive), read2 (positive --> positive; negative --> negative)</option>
-				</param>
-			</when>
-			<when value="single">
-				<param name="single_type" type="select" display="radio" label="Single-End Read Type (format: mapped --> parent)" value="s">
-					<option value="s">positive --> positive; negative --> negative</option>
-					<option value="d">positive --> negative; negative --> positive</option>
-				</param>
-			</when>
-			<when value="none"></when>
-		</conditional>
-	</inputs>
-	<outputs> 
-		<data format="wig" name="output" from_work_dir="outfile.wig">
-			<filter>strand_type['strand_specific'] == 'none'</filter>
-		</data>
-		<data format="wig" name="outputfwd" from_work_dir="outfile_Forward.wig">
-			<filter>strand_type['strand_specific'] != 'none'</filter>
-		</data>
-		<data format="wig" name="outputrv" from_work_dir="outfile_Reverse.wig">
-			<filter>strand_type['strand_specific'] != 'none'</filter>
-		</data>
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<param name="chromsize" value="sample.hg19.chrom.sizes.txt" />
-			<param name="skipmultihits" value="false" />
-			<param name="wigsum.wigsum_type" value="false" />
-			<param name="strand_type.strand_specific" value="none" />
-			<output name="output" file="outfile.wig" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+        @MULTIHITS@
+        ]]>
+    </command>
+    <inputs>
+        <expand macro="bam_param" />
+        <param name="chromsize" type="data" label="Chromosome size file (tab or space separated)" format="txt,tabular" help="(--chromSize)"/>
+        <expand macro="multihits_param" />
+        <conditional name="wigsum_type">
+            <param name="wigsum_type_selector" type="select" label="Normalization">
+                <option value="normalize">Normalize to specified sum</option>
+                <option value="raw" selected="true">Do not normalize</option>
+            </param>
+            <when value="normalize">
+                <param name="totalwig" value="" type="integer" label="specified wigsum" help="(--wigsum)"/>
+            </when>
+            <when value="raw"/>
+        </conditional>
+        <expand macro="strand_type_param" />
+    </inputs>
+
+    <outputs>
+        <data format="wig" name="output" from_work_dir="outfile.wig">
+            <filter>strand_type['strand_specific'] == 'none'</filter>
+        </data>
+        <data format="wig" name="outputfwd" from_work_dir="outfile.Forward.wig" label="${tool.name} on ${on_string} (Forward Reads)">
+            <filter>strand_type['strand_specific'] != 'none'</filter>
+        </data>
+        <data format="wig" name="outputrv" from_work_dir="outfile.Reverse.wig" label="${tool.name} on ${on_string} (Reverse Reads)">
+            <filter>strand_type['strand_specific'] != 'none'</filter>
+        </data>
+    </outputs>
 
------
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="chromsize" value="hg19.chrom.sizes"/>
+            <output name="output" file="testwig.wig"/>
+        </test>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="chromsize" value="hg19.chrom.sizes"/>
+            <param name="multihits_type.multihits_type_selector" value="skipmultihits"/>
+            <param name="multihits_type.mapq" value="20"/>
+            <output name="output" file="testwig.wig"/>
+        </test>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="chromsize" value="hg19.chrom.sizes"/>
+            <param name="strand_specific" value="pair"/>
+            <param name="pair_type" value="sd"/>
+            <output name="outputfwd" file="testwig.Forward.wig"/>
+            <output name="outputrv" file="testwig.Reverse.wig"/>
+        </test>
+    </tests>
 
-About RSeQC
-+++++++++++
+    <help><![CDATA[
+bam2wig.py
+++++++++++
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
-
-The RSeQC package is licensed under the GNU GPL v3 license.
+Visualization is the most straightforward and effective way to QC your RNA-seq
+data. For example, change of expression or new splicing can be easily checked
+by visually comparing two RNA-seq tracks using genome browser such as UCSC_,
+IGB_ and IGV_.  `bam2wig.py` converts all types of RNA-seq data from BAM_
+format into wiggle_ format in one-stop.  wiggle_ files can then be easily
+converted into bigwig_.  Bigwig is indexed, binary format of wiggle file, and
+it's particular useful to display large, continuous dataset on genome
+browser.
 
 Inputs
 ++++++++++++++
 
 Input BAM file
-	Alignment file in BAM format (SAM is not supported). BAM file will be sorted and indexed using samTools.
+    Alignment file in BAM format (SAM is not supported). BAM file will be sorted and indexed using samTools.
 
 Chromosome size file
-	Tab or space separated text file with 2 columns: first column is chromosome name, second column is size of the chromosome. Chromosome names (such as "chr1") should be consistent between this file and BAM file.
+    Tab or space separated text file with 2 columns: first column is chromosome name, second column is size of the chromosome. Chromosome names (such as "chr1") should be consistent between this file and BAM file.
 
 Specified wigsum (default=none)
-	Specified wigsum. Wigsum of 100000000 equals to coverage achieved by 1 million 100nt reads. Ignore this option to disable normalization.
+    Specified wigsum. Wigsum of 100000000 equals to coverage achieved by 1 million 100nt reads. Ignore this option to disable normalization.
 
 Skip multiple Hit reads
-	skips multiple hit reads or only use uniquely mapped reads
+    skips multiple hit reads or only use uniquely mapped reads
 
 Strand-specific (default=none)
-	How read(s) were stranded during sequencing. If you are not sure about the strand rule, run infer_experiment.py
+    How read(s) were stranded during sequencing. If you are not sure about the strand rule, run infer_experiment.py
 
 Outputs
 ++++++++++++++
@@ -126,6 +132,17 @@
 If RNA-seq is not strand specific, one wig file will be generated, if RNA-seq
 is strand specific, two wig files corresponding to Forward and Reverse will be generated.
 
+@ABOUT@
 
-	</help>
-</tool>
\ No newline at end of file
+.. _UCSC: http://genome.ucsc.edu/index.html
+.. _IGB: http://bioviz.org/igb/
+.. _IGV: http://software.broadinstitute.org/software/igv/
+.. _BAM: http://genome.ucsc.edu/goldenPath/help/bam.html
+.. _wiggle: http://genome.ucsc.edu/goldenPath/help/wiggle.html
+.. _bigwig: http://genome.ucsc.edu/FAQ/FAQformat.html#format6.1
+]]>
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- a/bam_stat.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/bam_stat.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,46 +1,58 @@
-<tool id="bam_stat" name="BAM/SAM Mapping Stats">
-	<description>
-		reads mapping statistics for a provided BAM or SAM file.
-	</description>
-	<requirements>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>s
-	<command interpreter="python">
-		bam_stat.py -i $input -q $mapqual &amp;> $output
-	</command>
-	<inputs>
-		<param name="input" type="data" label="Input .bam/.sam File" format="bam,sam" />
-		<param label="Minimum mapping quality (default=30" type="integer" value="30" name="mapqual" />
-	</inputs>
-	<outputs>
-		<data format="txt" name="output" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<output name="bamstatout.txt"
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_bam_stat" name="BAM/SAM Mapping Stats" version="@WRAPPER_VERSION@">
+    <description>
+        reads mapping statistics for a provided BAM or SAM file.
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[bam_stat.py --version]]></version_command>
 
------
+    <command><![CDATA[
+        bam_stat.py -i '${input}' -q ${mapq} > '${output}'
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="mapq_param" />
+    </inputs>
 
-About RSeQC
+    <outputs>
+        <data format="txt" name="output" />
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <output name="output" file="output.bamstats.txt" />
+        </test>
+    </tests>
+
+    <help><![CDATA[
+bam_stat.py
 +++++++++++
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
-
-The RSeQC package is licensed under the GNU GPL v3 license.
+This program is used to calculate reads mapping statistics from provided BAM
+file.  This script determines "uniquely mapped reads" from `mapping quality
+<http://genome.sph.umich.edu/wiki/Mapping_Quality_Scores>`_,
+which quality the probability that a read is misplaced (Do NOT confused with
+sequence quality, sequence quality measures the probability that a base-calling
+was wrong) .
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Minimum mapping quality
-	Minimum mapping quality for an alignment to be called “uniquely mapped” (default=30)
+    Minimum mapping quality for an alignment to be called "uniquely mapped" (default=30)
 
 Output
 ++++++++++++++
@@ -50,6 +62,10 @@
 - Uniquely mapped Reads = {Reads map to '+'} + {Reads map to '-'}
 - Uniquely mapped Reads = {Splice reads} + {Non-splice reads}
 
+@ABOUT@
 
-	</help>
-</tool>
\ No newline at end of file
+]]>
+    </help>
+
+    <expand macro="citations" />
+</tool>
--- a/clipping_profile.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/clipping_profile.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,54 +1,85 @@
-<tool id="clipping_profile" name="Clipping Profile">
-	<description>
-	 estimates clipping profile of RNA-seq reads from BAM or SAM file
-	</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command>
-		clipping_profile.py -i $input -o output
-	</command>
-	<inputs>
-		<param name="input" type="data" label="Input .bam/.sam File" format="bam,sam" />
-	</inputs>
-	<outputs>
-		<data format="xls" name="outputxls" from_work_dir="output.clipping_profile.xls" />
-		<data format="r" name="outputr" from_work_dir="output.clipping_profile.r" />
-		<data format="pdf" name="outputpdf" from_work_dir="clipping_profile.pdf" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_StrandSpecific_51mer_Human_hg19.bam" />
-			<output name="outputxls" file="clipprofout.clipping_profile.xls" />
-			<output name="outputr" file="clipprofout.clipping_profile.r" />
-			<output name="outputpdf" file="clipping_profile.pdf" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_clipping_profile" name="Clipping Profile" version="@WRAPPER_VERSION@">
+    <description>
+     estimates clipping profile of RNA-seq reads from BAM or SAM file
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[clipping_profile.py --version]]></version_command>
+
+    <command><![CDATA[
+        clipping_profile.py -i '${input}' -o output -q ${mapq} -s "${layout}"
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="mapq_param" />
+        <expand macro="layout_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
 
------
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.clipping_profile.pdf" />
+        <expand macro="xls_output_data" filename="output.clipping_profile.xls" />
+        <expand macro="rscript_output_data" filename="output.clipping_profile.r" />
+    </outputs>
 
-About RSeQC
-+++++++++++
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <output name="outputpdf" file="output.clipping_profile.pdf" compare="sim_size" />
+            <output name="outputxls" file="output.clipping_profile.xls" />
+        </test>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="rscript_output" value="true" />
+            <output name="outputpdf" file="output.clipping_profile.pdf" compare="sim_size" />
+            <output name="outputxls" file="output.clipping_profile.xls" />
+            <output name="outputr" file="output.clipping_profile.r" />
+        </test>
+    </tests>
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+    <help><![CDATA[
+clipping_profile.py
++++++++++++++++++++
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+This program is used to estimate clipping profile of RNA-seq reads from BAM or SAM file.
+Note that to use this funciton, CIGAR strings within SAM/BAM file should have 'S' operation
+(This means your reads aligner should support clipped mapping).
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
+Minimum mapping quality
+    Minimum mapping quality for an alignment to be considered as "uniquely
+    mapped". default=30
+
+Sequencing layout
+    Denotes whether the sequecing was single-end (SE) or paired-end (PE).
 
 Sample Output
 ++++++++++++++
 
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/clipping_good.png
+.. image:: $PATH_TO_IMAGES/clipping_good.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
 
+@ABOUT@
 
-	</help>
-</tool>
\ No newline at end of file
+]]>
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deletion_profile.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,87 @@
+<tool id="rseqc_deletion_profile" name="Deletion Profile" version="@WRAPPER_VERSION@">
+    <description>
+     calculates the distributions of deleted nucleotides across reads
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[deletion_profile.py --version]]></version_command>
+
+    <command><![CDATA[
+        deletion_profile.py -i '${input}' -o output -l ${readlength} -n ${readnum} -q ${mapq}
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="readlength_param" />
+        <expand macro="readnum_param" />
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
+
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.deletion_profile.pdf" />
+        <expand macro="xls_output_data" filename="output.deletion_profile.txt" />
+        <expand macro="rscript_output_data" filename="output.deletion_profile.r" />
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="readlength" value="101" />
+            <param name="rscript_output" value="true" />
+            <output name="outputpdf" file="output.deletion_profile.pdf" compare="sim_size" />
+            <output name="outputxls" file="output.deletion_profile.txt" />
+            <output name="outputr" file="output.deletion_profile.r" />
+        </test>
+    </tests>
+
+    <help><![CDATA[
+deletion_profile.py
++++++++++++++++++++
+
+Calculate the distributions of deleted nucleotides across reads.
+
+Inputs
+++++++
+
+Input BAM/SAM file
+    Alignment file in BAM/SAM format.
+
+Alignment length of read
+    It is usually set to the orignial read length. For example, all these cigar
+    strings ("101M", "68M140N33M", "53M1D48M") suggest the read alignment
+    length is 101. [required]
+
+Number of aligned reads used
+    Number of aligned reads with deletions used to calculate the deletion
+    profile. default=1000000
+
+Minimum mapping quality
+    Minimum mapping quality for an alignment to be considered as "uniquely
+    mapped". default=30
+
+Sample Output
+++++++++++++++
+
+.. image:: $PATH_TO_IMAGES/out.deletion_profile.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
+
+@ABOUT@
+
+]]>
+
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- a/geneBody_coverage.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/geneBody_coverage.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,63 +1,126 @@
-<tool id="geneBody_coverage" name="Gene Body Converage (BAM)">
-	<description>
-		Read coverage over gene body.
-	</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python">
-		geneBody_coverage.py -i $input -r $refgene -o output
-	</command>
-	<inputs>
-		<param name="input" type="data" label="Input .bam file" format="bam" />
-		<param name="refgene" type="data" label="Reference Genome" format="bed" />
-	</inputs>
-	<outputs>
-		<data name="outputpdf" format="pdf" from_work_dir="output.geneBodyCoverage.pdf" />
-		<data name="outputr" format="r" from_work_dir="output.geneBodyCoverage_plot.r" />
-		<data name="outputtxt" format="txt" from_work_dir="output.geneBodyCoverage.txt" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<param name="refgene" value="hg19_RefSeq.bed" />
-			<output name="outputpdf" file="gbcout.geneBodyCoverage.pdf" />
-			<output name="outputr" file="gbcout.geneBodyCoverage_plot.r" />
-			<output name="outputtxt" file="gbcout.geneBodyCoverage.txt" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_geneBody_coverage" name="Gene Body Converage (BAM)" version="@WRAPPER_VERSION@">
+  <description>
+    Read coverage over gene body.
+  </description>
+
+  <macros>
+    <import>rseqc_macros.xml</import>
+  </macros>
+
+    <expand macro="requirements" />
+
+  <expand macro="stdio" />
+
+  <version_command><![CDATA[geneBody_coverage.py --version]]></version_command>
+
+  <command><![CDATA[
+    #import re
+    #set $input_list = []
+    #for $i, $input in enumerate($inputs):
+        #set $safename = re.sub('[^\w\-_]', '_', $input.element_identifier)
+        #if $safename in $input_list:
+            #set $safename = str($safename) + "." + str($i)
+        #end if
+        $input_list.append($safename)
+        ln -sf '${input}' '${safename}.bam' &&
+        ln -sf '${input.metadata.bam_index}' '${safename}.bam.bai' &&
+        echo '${safename}.bam' >> 'input_list.txt' &&
+    #end for
+    geneBody_coverage.py -i 'input_list.txt' -r '${refgene}' --minimum_length ${minimum_length} -o output
+    ]]>
+  </command>
+
+  <inputs>
+    <param name="inputs" type="data" label="Input .bam file(s)" format="bam" help="(--input-file)" multiple="true"/>
+    <expand macro="refgene_param" />
+    <param name="minimum_length" type="integer" value="100" label="Minimum mRNA length (default: 100)" help="Minimum mRNA length in bp, mRNA that are shorter than this value will be skipped (--minimum_length)." />
+    <expand macro="rscript_output_param" />
+  </inputs>
 
------
-
-About RSeQC
-+++++++++++
+  <outputs>
+    <data name="outputcurvespdf" format="pdf" from_work_dir="output.geneBodyCoverage.curves.pdf" label="${tool.name} on ${on_string} (Curves pdf)" />
+    <data name="outputheatmappdf" format="pdf" from_work_dir="output.geneBodyCoverage.heatMap.pdf" label="${tool.name} on ${on_string} (HeatMap pdf)">
+      <filter>len(inputs) >= 3</filter>
+    </data>
+    <expand macro="rscript_output_data" filename="output.geneBodyCoverage.r" />
+    <data name="outputtxt" format="txt" from_work_dir="output.geneBodyCoverage.txt" label="${tool.name} on ${on_string} (text)" />
+  </outputs>
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+  <!-- PDF Files contain R version, must avoid checking for diff -->
+  <tests>
+    <test>
+      <param name="inputs" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+      <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed" />
+      <param name="rscript_output" value="true" />
+      <output name="outputcurvespdf" file="output.geneBodyCoverage.curves.pdf" compare="sim_size" />
+      <output name="outputr" file="output.geneBodyCoverage.r" />
+      <output name="outputtxt" file="output.geneBodyCoverage.txt" />
+    </test>
+    <test>
+      <param name="inputs" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam,pairend_strandspecific_51mer_hg19_chr1_1-100000.bam,pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+      <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed" />
+      <param name="rscript_output" value="true" />
+      <output name="outputcurvespdf" file="output2.geneBodyCoverage.curves.pdf" compare="sim_size" />
+      <output name="outputheatmappdf" file="output2.geneBodyCoverage.heatMap.pdf" compare="sim_size" />
+      <output name="outputr" file="output2.geneBodyCoverage.r" />
+      <output name="outputtxt" file="output2.geneBodyCoverage.txt" />
+    </test>
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+  </tests>
+
+  <help><![CDATA[
+## geneBody_coverage.py
+
+Read coverage over gene body. This module is used to check if read coverage is uniform and if there is any 5\'/3\' bias. This module scales all transcripts to 100 nt and calculates the number of reads covering each nucleotide position. Finally, it generates plots illustrating the coverage profile along the gene body.
+
+If 3 or more BAM files were provided. This program generates a lineGraph and a heatmap. If fewer than 3 BAM files were provided, only lineGraph is generated. See below for examples.
 
-Inputs
-++++++++++++++
+When heatmap is generated, samples are ranked by the "skewness" of the coverage: Sample with best (worst) coverage will be displayed at the top (bottom) of the heatmap.
+Coverage skewness was measured by `Pearson’s skewness coefficients <http://en.wikipedia.org/wiki/Skewness#Pearson.27s_skewness_coefficients>`_
+
+.. image:: $PATH_TO_IMAGES/geneBody_workflow.png
+:width: 800 px
+:scale: 80 %
+
+
+## Inputs
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Reference gene model
-	Gene Model in BED format.
+    Gene Model in BED format.
 
+Minimum mRNA length
+    Minimum mRNA length (bp). mRNA that are shorter than this value will be skipped (default is 100).
+
+    ## Outputs
 
-Outputs
-++++++++++++++
+Text
+    Table that includes the data used to generate the plots
 
-Read coverage over gene body. This module is used to check if reads coverage is uniform and if there is any 5’/3’ bias. This module scales all transcripts to 100 nt and calculates the number of reads covering each nucleotide position. Finally, it generates a plot illustrating the coverage profile along the gene body. NOTE: this module requires lots of memory for large BAM files, because it load the entire BAM file into memory. We add another script "geneBody_coverage2.py" into v2.3.1 which takes bigwig (instead of BAM) as input. It only use 200M RAM, but users need to convert BAM into WIG, and then WIG into BigWig.
+R Script
+    R script file that reads the data and generates the plot
+
+PDF
+    The final plot, in PDF format
 
-Example output:
-	.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/geneBody_coverage.png
-
+Example plots:
+.. image:: $PATH_TO_IMAGES/Aug_26.geneBodyCoverage.curves.png
+:height: 600 px
+:width: 600 px
+:scale: 80 %
 
+.. image:: $PATH_TO_IMAGES/Aug_26.geneBodyCoverage.heatMap.png
+:height: 600 px
+:width: 600 px
+:scale: 80 %
 
-	</help>
-</tool>
\ No newline at end of file
+@ABOUT@
+
+    ]]>
+  </help>
+
+  <expand macro="citations" />
+
+</tool>
--- a/geneBody_coverage2.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/geneBody_coverage2.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,43 +1,61 @@
-<tool id="geneBody_coverage" name="Gene Body Converage (Bigwig)">
-	<description>
-		Read coverage over gene body.
-	</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python">
-		geneBody_coverage2.py -i $input -r $refgene -o output
-	</command>
-	<inputs>
-		<param name="input" type="data" label="Input bigwig file" format="bigwig" />
-		<param name="refgene" type="data" label="Reference Genome" format="bed" />
-	</inputs>
-	<outputs>
-		<data name="outputpdf" format="pdf" from_work_dir="output.geneBodyCoverage.pdf" />
-		<data name="outputr" format="r" from_work_dir="output.geneBodyCoverage_plot.r" />
-		<data name="outputtxt" format="txt" from_work_dir="output.geneBodyCoverage.txt" />
-	</outputs>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_geneBody_coverage2" name="Gene Body Converage (Bigwig)" version="@WRAPPER_VERSION@">
+    <description>
+        Read coverage over gene body
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[geneBody_coverage2.py --version]]></version_command>
+
+    <command><![CDATA[
+        geneBody_coverage2.py -i '${input}' -r '${refgene}' -o output
+        ]]>
+    </command>
+
+    <inputs>
+        <param name="input" type="data" label="Input bigwig file" format="bigwig" />
+        <expand macro="refgene_param" />
+    </inputs>
 
------
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.geneBodyCoverage.pdf" />
+        <data name="outputtxt" format="txt" from_work_dir="output.geneBodyCoverage.txt" label="${tool.name} on ${on_string} (text)" />
+        <expand macro="rscript_output_data" filename="output.geneBodyCoverage_plot.r" />
+    </outputs>
 
-About RSeQC
-+++++++++++
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bigwig" />
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed" />
+            <param name="rscript_output" value="true" />
+            <output name="outputpdf" file="output.geneBodyCoverage2.curves.pdf" compare="sim_size" />
+            <output name="outputr" file="output.geneBodyCoverage2.r" />
+            <output name="outputtxt" file="output.geneBodyCoverage2.txt" />
+        </test>
+    </tests>
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+    <help><![CDATA[
+geneBody_coverage2.py
++++++++++++++++++++++
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+Similar to geneBody_coverage.py. This module takes bigwig instead of BAM as input, and thus
+requires much less memory. The BigWig file could be arbitrarily large.
+
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Reference gene model
-	Gene Model in BED format.
+    Gene Model in BED format.
 
 
 Outputs
@@ -46,9 +64,16 @@
 Read coverage over gene body. This module is used to check if reads coverage is uniform and if there is any 5’/3’ bias. This module scales all transcripts to 100 nt and calculates the number of reads covering each nucleotide position. Finally, it generates a plot illustrating the coverage profile along the gene body. NOTE: this module requires lots of memory for large BAM files, because it load the entire BAM file into memory. We add another script "geneBody_coverage2.py" into v2.3.1 which takes bigwig (instead of BAM) as input. It only use 200M RAM, but users need to convert BAM into WIG, and then WIG into BigWig.
 
 Example output:
-	.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/geneBody_coverage.png
+    .. image:: $PATH_TO_IMAGES/geneBody_coverage.png
+        :height: 600 px
+        :width: 600 px
+        :scale: 80 %
 
+@ABOUT@
 
+]]>
+    </help>
 
-	</help>
-</tool>
\ No newline at end of file
+    <expand macro="citations" />
+
+</tool>
--- a/infer_experiment.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/infer_experiment.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,124 +1,141 @@
-<tool id="infer_experiment" name="Infer Experiment">
-	<description>speculates how RNA-seq were configured</description>
-	<requirements>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> infer_experiment.py -i $input -r $refgene 
-	
-		#if $sample_size.boolean
-			-s $sample_size.size
-		#end if
-	
-		> $output
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="Input BAM/SAM file" />
-		<param name="refgene" type="data" format="bed" label="Reference gene model in bed format" />
-		<conditional name="sample_size">
-			<param name="boolean" type="boolean" label="Modify usable sampled reads" value="false" />
-			<when value="true">
-				<param name="size" type="integer" label="Number of usable sampled reads (default = 200000)" value="200000" />
-			</when>
-		</conditional>
-	</inputs>
-	<outputs>
-		<data format="txt" name="output" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<param name="refgene" value="hg19_RefSeq.bed" />
-			<output name="output" file="inferexpout.txt" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_infer_experiment" name="Infer Experiment" version="@WRAPPER_VERSION@">
+    <description>speculates how RNA-seq were configured</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[infer_experiment.py --version]]></version_command>
+
+    <command><![CDATA[
+        infer_experiment.py -i '${input}' -r '${refgene}'
+            --sample-size ${sample_size}
+            --mapq ${mapq}
+            > '${output}'
+            ]]>
+    </command>
 
------
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="refgene_param" />
+        <expand macro="sample_size_param" />
+        <expand macro="mapq_param" />
+    </inputs>
+
+    <outputs>
+        <data format="txt" name="output" />
+    </outputs>
 
-About RSeQC
-+++++++++++
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed"/>
+            <output name="output" file="output.infer_experiment.txt"/>
+        </test>
+    </tests>
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+    <help><![CDATA[
+infer_experiment.py
++++++++++++++++++++
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+This program is used to speculate how RNA-seq sequencing were configured, especially how
+reads were stranded for strand-specific RNA-seq data, through comparing reads' mapping
+information to the underneath gene model.
+
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Reference gene model
-	Gene model in BED format.
+    Gene model in BED format.
 
 Number of usable sampled reads (default=200000)
-	Number of usable reads sampled from SAM/BAM file. More reads will give more accurate estimation, but make program little slower.
+    Number of usable reads sampled from SAM/BAM file. More reads will give more accurate estimation, but make program little slower.
 
+Outputs
++++++++
 
-Output
-++++++++++++++
-This program is used to speculate how RNA-seq sequencing were configured, especially how reads were stranded for strand-specific RNA-seq data, through comparing reads' mapping information to the underneath gene model. Generally, strand specific RNA-seq data should be handled differently in both visualization and RPKM calculation.
+For pair-end RNA-seq, there are two different
+ways to strand reads (such as Illumina ScriptSeq protocol):
 
-For pair-end RNA-seq, there are two different ways to strand reads:
+1. 1++,1--,2+-,2-+
 
-1) 1++,1--,2+-,2-+
-	- read1 mapped to '+' strand indicates parental gene on '+' strand
-	- read1 mapped to '-' strand indicates parental gene on '-' strand
-	- read2 mapped to '+' strand indicates parental gene on '-' strand
-	- read2 mapped to '-' strand indicates parental gene on '+' strand
-2) 1+-,1-+,2++,2--
-	- read1 mapped to '+' strand indicates parental gene on '-' strand
-	- read1 mapped to '-' strand indicates parental gene on '+' strand
-	- read2 mapped to '+' strand indicates parental gene on '+' strand
-    - read2 mapped to '-' strand indicates parental gene on '-' strand
+* read1 mapped to '+' strand indicates parental gene on '+' strand
+* read1 mapped to '-' strand indicates parental gene on '-' strand
+* read2 mapped to '+' strand indicates parental gene on '-' strand
+* read2 mapped to '-' strand indicates parental gene on '+' strand
+
+2. 1+-,1-+,2++,2--
+
+* read1 mapped to '+' strand indicates parental gene on '-' strand
+* read1 mapped to '-' strand indicates parental gene on '+' strand
+* read2 mapped to '+' strand indicates parental gene on '+' strand
+* read2 mapped to '-' strand indicates parental gene on '-' strand
 
 For single-end RNA-seq, there are also two different ways to strand reads:
 
-1) ++,--
-	-read mapped to '+' strand indicates parental gene on '+' strand
-	- read mapped to '-' strand indicates parental gene on '-' strand
-2) +-,-+
-	- read mapped to '+' strand indicates parental gene on '-' strand
-	- read mapped to '-' strand indicates parental gene on '+' strand
+1. ++,--
+
+* read mapped to '+' strand indicates parental gene on '+' strand
+* read mapped to '-' strand indicates parental gene on '-' strand
+
+2. +-,-+
+
+* read mapped to '+' strand indicates parental gene on '-' strand
+* read mapped to '-' strand indicates parental gene on '+' strand
+
 
 Example Output
 ++++++++++++++
 
 **Example1** ::
 
-	=========================================================
-	This is PairEnd Data ::
+    =========================================================
+    This is PairEnd Data ::
 
-	Fraction of reads explained by "1++,1--,2+-,2-+": 0.4992
-	Fraction of reads explained by "1+-,1-+,2++,2--": 0.5008
-	Fraction of reads explained by other combinations: 0.0000
-	=========================================================
+    Fraction of reads explained by "1++,1--,2+-,2-+": 0.4992
+    Fraction of reads explained by "1+-,1-+,2++,2--": 0.5008
+    Fraction of reads explained by other combinations: 0.0000
+    =========================================================
 
 *Conclusion*: We can infer that this is NOT a strand specific because 50% of reads can be explained by "1++,1--,2+-,2-+", while the other 50% can be explained by "1+-,1-+,2++,2--".
 
 **Example2** ::
 
-	============================================================
-	This is PairEnd Data 
+    ============================================================
+    This is PairEnd Data
 
-	Fraction of reads explained by "1++,1--,2+-,2-+": 0.9644 ::
-	Fraction of reads explained by "1+-,1-+,2++,2--": 0.0356	
-	Fraction of reads explained by other combinations: 0.0000
-	============================================================
-	
+    Fraction of reads explained by "1++,1--,2+-,2-+": 0.9644 ::
+    Fraction of reads explained by "1+-,1-+,2++,2--": 0.0356
+    Fraction of reads explained by other combinations: 0.0000
+    ============================================================
+
 *Conclusion*: We can infer that this is a strand-specific RNA-seq data. strandness of read1 is consistent with that of gene model, while strandness of read2 is opposite to the strand of reference gene model.
 
 **Example3** ::
 
-	=========================================================
-	This is SingleEnd Data ::
+    =========================================================
+    This is SingleEnd Data ::
 
-	Fraction of reads explained by "++,--": 0.9840 ::
-	Fraction of reads explained by "+-,-+": 0.0160
-	Fraction of reads explained by other combinations: 0.0000
-	=========================================================
+    Fraction of reads explained by "++,--": 0.9840 ::
+    Fraction of reads explained by "+-,-+": 0.0160
+    Fraction of reads explained by other combinations: 0.0000
+    =========================================================
 
 *Conclusion*: This is single-end, strand specific RNA-seq data. Strandness of reads are concordant with strandness of reference gene.
-	</help>
-</tool>
\ No newline at end of file
+
+@ABOUT@
+
+]]>
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- a/inner_distance.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/inner_distance.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,105 +1,113 @@
-<tool id="inner_distance" name="Inner Distance">
-	<description>calculate the inner distance (or insert size) between two paired RNA reads</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command> inner_distance.py -i $input -o output -r $refgene
+<tool id="rseqc_inner_distance" name="Inner Distance" version="@WRAPPER_VERSION@">
+    <description>calculate the inner distance (or insert size) between two paired RNA reads</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[inner_distance.py --version]]></version_command>
 
-		#if $bounds.hasLowerBound
-			-l $bounds.lowerBound
-		#end if
+    <command><![CDATA[
+        inner_distance.py -i '${input}' -o output -r '${refgene}'
+            --sample-size ${sample_size}
+            --lower-bound ${lowerBound}
+            --upper-bound ${upperBound}
+            --step ${step}
+            --mapq ${mapq}
+        ]]>
+    </command>
 
-		#if $bounds2.hasUpperBound
-			-u $bounds2.upperBound
-		#end if
+    <inputs>
+        <expand macro="bam_sam_param" />
+        <expand macro="refgene_param" />
+        <expand macro="sample_size_param" />
+        <param name="lowerBound" type="integer" value="-250" label="Lower bound (bp, default=-250)" help="Used for plotting histogram (--lower-bound)"/>
+        <param name="upperBound" type="integer" value="250" label="Upper bound (bp, default=250)" help="Used for plotting histogram (--upper-bound)"/>
+        <param name="step" type="integer" value="5" label="Step size of histogram (bp, default=5)" help="(--step)"/>
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
 
-		#if $steps.step
-			-s $steps.stepSize
-		#end if
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="input bam/sam file" />
-		<param name="refgene" type="data" format="bed" label="reference gene model" />
-		<conditional name="bounds">
-			<param name="hasLowerBound" type="boolean" label="Specify lower bound" value="false"/>
-			<when value="true">
-				<param name="lowerBound" type="integer" value="-250" label="Estimated Lower Bound (bp, default=-250)" />
-			</when>
-		</conditional>
-		<conditional name="bounds2">
-			<param name="hasUpperBound" type="boolean" label="Specify upper bound" value="false" />
-			<when value="true">
-				<param name="upperBound" type="integer" value="250" label="Estimated Upper Bound (bp, default=250)" />
-			</when>
-		</conditional>
-		<conditional name="steps">
-			<param name="step" type="boolean" label="Specify step size" value="false" />
-			<when value="true">
-				<param name="stepSize" type="integer" value="5" label="Step size (bp, default=5)" />
-			</when>
-		</conditional>
-	</inputs>
-	<outputs>
-		<data format="txt" name="outputtxt" from_work_dir="output.inner_distance.txt"/>
-		<data format="txt" name="outputfreqtxt" from_work_dir="output.inner_distance_freq.txt" />
-		<data format="pdf" name="outputpdf" from_work_dir="output.inner_distance_plot.pdf" />
-		<data format="r" name="outputr" from_work_dir="output.inner_distance_plot.r" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<param name="refgene" value="hg19_RefSeq.bed" />
-			<output name="outputpdf" file="innerdisout.inner_distance_plot.pdf" />
-			<output name="outputr" file="innerdisout.inner_distance_plot.r" />
-			<output name="outputfreqtxt" file="innerdisout.inner_distance_freq.txt" />
-			<output name="outputtxt" file="innerdisout.inner_distance.txt" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.inner_distance_plot.pdf" />
+        <data format="txt" name="outputtxt" from_work_dir="output.inner_distance.txt" label="${tool.name} on ${on_string} (text)"/>
+        <data format="txt" name="outputfreqtxt" from_work_dir="output.inner_distance_freq.txt" label="${tool.name} on ${on_string} (frequency text)" />
+        <expand macro="rscript_output_data" filename="output.inner_distance_plot.r" />
+    </outputs>
 
------
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed"/>
+            <param name="rscript_output" value="true" />
+            <output name="outputtxt" file="output.inner_distance.txt" />
+            <output name="outputfreqtxt" file="output.inner_distance_freq.txt" />
+            <output name="outputpdf" file="output.inner_distance_plot.pdf" compare="sim_size"/>
+            <output name="outputr" file="output.inner_distance_plot.r" />
+        </test>
+    </tests>
 
-About RSeQC
-+++++++++++
+    <help><![CDATA[
+inner_distance.py
++++++++++++++++++
+
+This module is used to calculate the inner distance (or insert size) between two paired RNA
+reads. The distance is the mRNA length between two paired fragments. We first determine the
+genomic (DNA) size between two paired reads: D_size = read2_start - read1_end, then
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+* if two paired reads map to the same exon: inner distance = D_size
+* if two paired reads map to different exons:inner distance = D_size - intron_size
+* if two paired reads map non-exonic region (such as intron and intergenic region): inner distance = D_size
+* The inner_distance might be a negative value if two fragments were overlapped.
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+NOTE: Not all read pairs were used to estimate the inner distance distribution. Those low
+quality, PCR duplication, multiple mapped reads were skipped.
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Reference gene model
-	Gene model in BED format.
+    Gene model in BED format.
 
 Estimated Upper/Lower Bounds (defaults=250 and -250)
-	Estimated upper/lower bounds of inner distance (bp).
+    Estimated upper/lower bounds of inner distance (bp).
 
 Step size (default=5)
-	Step size of histogram
+    Step size of histogram
 
 
 Output
 ++++++++++++++
 
 1. output.inner_distance.txt:
-- first column is read ID
--second column is inner distance. Could be negative value if PE reads were overlapped or mapping error (e.g. Read1_start < Read2_start, while Read1_end >> Read2_end due to spliced mapping of read1)
-- third column indicates how paired reads were mapped: PE_within_same_exon, PE_within_diff_exon,PE_reads_overlap
+    - first column is read ID
+    -second column is inner distance. Could be negative value if PE reads were overlapped or mapping error (e.g. Read1_start &lt; Read2_start, while Read1_end >> Read2_end due to spliced mapping of read1)
+    - third column indicates how paired reads were mapped: PE_within_same_exon, PE_within_diff_exon,PE_reads_overlap
 2. output..inner_distance_freq.txt:
-- inner distance starts
-- inner distance ends
-- number of read pairs
-- note the first 2 columns are left side half open interval
+    - inner distance starts
+    - inner distance ends
+    - number of read pairs
+    - note the first 2 columns are left side half open interval
 3. output.inner_distance_plot.r: R script to generate histogram
 4. output.inner_distance_plot.pdf: histogram plot
 
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/inner_distance.png
+.. image:: $PATH_TO_IMAGES/inner_distance.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
+
+@ABOUT@
 
-	</help>
+]]>
+    </help>
+
+    <expand macro="citations" />
+
 </tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/insertion_profile.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,88 @@
+<tool id="rseqc_insertion_profile" name="Insertion Profile" version="@WRAPPER_VERSION@">
+    <description>
+     calculates the distribution of inserted nucleotides across reads
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[insertion_profile.py --version]]></version_command>
+
+    <command><![CDATA[
+        insertion_profile.py -i '${input}' -o output -q ${mapq} -s "${layout}"
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="mapq_param" />
+        <expand macro="layout_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
+
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.insertion_profile.pdf" />
+        <expand macro="xls_output_data" filename="output.insertion_profile.xls" />
+        <expand macro="rscript_output_data" filename="output.insertion_profile.r" />
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="rscript_output" value="true" />
+            <output name="outputpdf" file="output.insertion_profile.pdf" compare="sim_size" />
+            <output name="outputxls" file="output.insertion_profile.xls" />
+            <output name="outputr" file="output.insertion_profile.r" />
+        </test>
+    </tests>
+
+    <help><![CDATA[
+insertion_profile.py
+++++++++++++++++++++
+
+Calculate the distributions of inserted nucleotides across reads. Note that to
+use this funciton, CIGAR strings within SAM/BAM file should have ‘I’ operation.
+
+Inputs
+++++++
+
+Input BAM/SAM file
+    Alignment file in BAM/SAM format.
+
+Minimum mapping quality
+    Minimum mapping quality for an alignment to be considered as "uniquely
+    mapped". default=30
+
+Sequencing layout
+    Denotes whether the sequecing was single-end (SE) or paired-end (PE).
+
+Sample Output
+++++++++++++++
+
+Read-1 insertion profile:
+
+.. image:: $PATH_TO_IMAGES/out.insertion_profile.R1.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
+
+Read-2 insertion profile:
+
+.. image:: $PATH_TO_IMAGES/out.insertion_profile.R2.png
+  :height: 600 px
+  :width: 600 px
+  :scale: 80 %
+
+@ABOUT@
+
+]]>
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- a/junction_annotation.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/junction_annotation.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,83 +1,107 @@
-<tool id="junction_annotation" name="Junction Annotation">
-	<description>compares detected splice junctions to reference gene model</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> junction_annotation.py -i $input -o output -r $refgene
+<tool id="rseqc_junction_annotation" name="Junction Annotation" version="@WRAPPER_VERSION@">
+    <description>compares detected splice junctions to reference gene model</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[junction_annotation.py --version]]></version_command>
 
-		#if $intron.hasIntron
-			-m $intron.min_Intron
-		#end if
+    <command><![CDATA[
+        junction_annotation.py
+            --input-file '${input}'
+            --refgene '${refgene}'
+            --out-prefix output
+            --min-intron ${min_intron}
+            --mapq ${mapq}
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_sam_param" />
+        <expand macro="refgene_param" />
+        <expand macro="min_intron_param" />
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
 
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="input bam/sam file" />
-		<param name="refgene" type="data" format="bed" label="reference gene model" />
-		<conditional name="intron">
-			<param name="hasIntron" type="boolean" label="Specify minimum intron length" value="false"/>
-			<when value="true">
-				<param name="min_Intron" type="integer" value="50" label="Minimum intron length (bp, default=50)" />
-			</when>
-		</conditional>
-	</inputs>
-	<outputs>
-		<data format="xls" name="outputxls" from_work_dir="output.junction.xls"/>
-		<data format="r" name="outputr" from_work_dir="output.junction_plot.r" />
-		<data format="pdf" name="outputpdf" from_work_dir="output.splice_events.pdf"/>
-		<data format="pdf" name="outputjpdf" from_work_dir="output.splice_junction.pdf" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<param name="refgene" value="hg19_RefSeq.bed" />
-			<output name="outputxls" file="junannout.junction.xls" />
-			<output name="outputr" file="junannout.junction_plot.r" />
-			<output name="outputpdf" file="junannout.splice_events.pdf" />
-			<output name="outputjpdf" file="junannout.splice_junction.pdf" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+    <outputs>
+        <data format="pdf" name="outputpdf" from_work_dir="output.splice_events.pdf" label="${tool.name} on ${on_string} (Splice Events pdf)"/>
+        <data format="pdf" name="outputjpdf" from_work_dir="output.splice_junction.pdf" label="${tool.name} on ${on_string} (Splice Junction pdf)" />
+        <expand macro="xls_output_data" filename="output.junction.xls" />
+        <expand macro="rscript_output_data" filename="output.junction_plot.r" />
+    </outputs>
 
------
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed" />
+            <param name="rscript_output" value="true" />
+            <output name="outputxls" file="output.junction.xls" />
+            <output name="outputr" file="output.junction_plot.r" />
+            <output name="outputpdf" file="output.splice_events.pdf" compare="sim_size" />
+            <output name="outputjpdf" file="output.splice_junction.pdf" compare="sim_size" />
+        </test>
+    </tests>
 
-About RSeQC
-+++++++++++
+    <help><![CDATA[
+junction_annotation.py
+++++++++++++++++++++++
+
+For a given alignment file (-i) in BAM or SAM format and a reference gene model (-r) in BED
+format, this program will compare detected splice junctions to reference gene model. splicing
+annotation is performed in two levels: splice event level and splice junction level.
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+* splice event: An RNA read, especially long read, can be spliced 2 or more times, each time is called a splicing event; In this sense, 100 spliced reads can produce >= 100 splicing events.
+* splice junction: multiple splicing events spanning the same intron can be consolidated into one splicing junction.
+
+All detected junctions can be grouped to 3 exclusive categories:
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+1. Annotated: The junction is part of the gene model. Both splice sites, 5' splice site
+   (5'SS) and 3'splice site (3'SS) can be annotated by reference gene model.
+2. complete_novel: Complete new junction. Neither of the two splice sites cannot be annotated by gene model
+3. partial_novel: One of the splice site (5'SS or 3'SS) is new, while the other splice site is annotated (known)
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Reference gene model
-	Gene model in BED format.
+    Gene model in BED format.
 
 Minimum intron length (default=50)
-	Minimum intron length (bp).
+    Minimum intron length (bp).
 
 
 Output
 ++++++++++++++
 
 1. output.junc.anno.junction.xls:
-- chrom ID
-- start position of junction (coordinate is 0 based)
-- end position of junction (coordinate is 1 based)
-- number of splice events supporting this junction
-- 'annotated', 'complete_novel' or 'partial_novel'.
+    - chrom ID
+    - start position of junction (coordinate is 0 based)
+    - end position of junction (coordinate is 1 based)
+    - number of splice events supporting this junction
+    - 'annotated', 'complete_novel' or 'partial_novel'.
 2. output.anno.junction_plot.r: R script to generate pie chart
 3. output.splice_junction.pdf: plot of splice junctions
 4. output.splice_events.pdf: plot of splice events
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/junction.png
 
-
+.. image:: $PATH_TO_IMAGES/junction.png
+   :height: 400 px
+   :width: 850 px
+   :scale: 80 %
 
+@ABOUT@
 
-	</help>
+]]>
+    </help>
+
+    <expand macro="citations" />
+
 </tool>
--- a/junction_saturation.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/junction_saturation.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,71 +1,110 @@
-<tool id="junction_saturation" name="Junction Saturation">
-	<description>detects splice junctions from each subset and compares them to reference gene model</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> junction_saturation.py -i $input -o output -r $refgene -m $intronSize -v $minSplice
+<tool id="rseqc_junction_saturation" name="Junction Saturation" version="@WRAPPER_VERSION@">
+    <description>detects splice junctions from each subset and compares them to reference gene model</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[junction_saturation.py --version]]></version_command>
 
-		#if $percentiles.specifyPercentiles
-			-l $percentiles.lowBound -u $percentiles.upBound -s $percentiles.percentileStep
-		#end if
+    <command><![CDATA[
+        junction_saturation.py
+            --input-file '${input}'
+            --refgene '${refgene}'
+            --out-prefix output
+            --min-intron ${min_intron}
+            --min-coverage ${min_coverage}
+            --mapq ${mapq}
+        #if str($percentiles_type.percentiles_type_selector) == "specify":
+            --percentile-floor ${percentiles_type.lowBound}
+            --percentile-ceiling ${percentiles_type.upBound}
+            --percentile-step ${percentiles_type.percentileStep}
+        #end if
+        ]]>
+    </command>
 
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="input bam/sam file" />
-		<param name="refgene" type="data" format="bed" label="reference gene model" />
-		<param name="intronSize" type="integer" label="Minimum intron size (bp, default=50)" value="50"/>
-		<param name="minSplice" type="integer" label="Minimum coverage (default=1)" value="1" />
-		<conditional name="percentiles">
-			<param name="specifyPercentiles" type="boolean" label="Specify sampling bounds and frequency" value="false"/>
-			<when value="true">
-				<param name="lowBound" type="integer" value="5" label="Lower Bound Sampling Frequency (bp, default=5)" />
-				<param name="upBound" type="integer" value="100" label="Upper Bound Sampling Frequency (bp, default=100)" />
-				<param name="percentileStep" type="integer" value="5" label="Sampling increment (default=5)" />
-			</when>
-		</conditional>
-	</inputs>
-	<outputs>
-		<data format="r" name="outputr" from_work_dir="output.junctionSaturation_plot.r"/>
-		<data format="pdf" name="outputpdf" from_work_dir="output.junctionSaturation_plot.pdf"/>
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<param name="refgene" value="hg19_RefSeq.bed" />
-			<output name="outputr" file="junsatout.junctionSaturation_plot.r" />
-			<output name="outputpdf" file="junsatout.junctionSaturation_plot.pdf" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+    <inputs>
+        <expand macro="bam_sam_param" />
+        <expand macro="refgene_param" />
+        <expand macro="min_intron_param" />
+        <param name="min_coverage" type="integer" label="Minimum number of supporting reads to call a junction (default=1)" value="1" help="(--min-coverage)" />
+        <expand macro="mapq_param" />
+        <conditional name="percentiles_type">
+            <param name="percentiles_type_selector" type="select" label="Sampling bounds and frequency">
+                <option value="default" selected="true">Default sampling bounds and frequency</option>
+                <option value="specify">Specify sampling bounds and frequency</option>
+            </param>
+            <when value="specify">
+                <param name="lowBound" type="integer" value="5" label="Lower Bound Sampling Frequency (bp, default=5)" help="(--percentile-floor)">
+                    <validator type="in_range" min="0" max="100" />
+                </param>
+                <param name="upBound" type="integer" value="100" label="Upper Bound Sampling Frequency (bp, default=100)" help="(--percentile-ceiling)">
+                    <validator type="in_range" min="0" max="100" />
+                </param>
+                <param name="percentileStep" type="integer" value="5" label="Sampling increment (default=5)" help="(--percentile-step)">
+                    <validator type="in_range" min="0" max="100" />
+                </param>
+            </when>
+            <when value="default"/>
+        </conditional>
+        <expand macro="rscript_output_param" />
+    </inputs>
 
------
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.junctionSaturation_plot.pdf" />
+        <expand macro="rscript_output_data" filename="output.junctionSaturation_plot.r" />
+    </outputs>
 
-About RSeQC
-+++++++++++
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed" />
+            <param name="rscript_output" value="true" />
+            <output name="outputr" file="output.junctionSaturation_plot.r" compare="sim_size">
+                <assert_contents>
+                    <has_line line="pdf('output.junctionSaturation_plot.pdf')" />
+                    <has_line line="x=c(5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100)" />
+                </assert_contents>
+            </output>
+            <output name="outputpdf" file="output.junctionSaturation_plot.pdf" compare="sim_size" />
+        </test>
+    </tests>
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+    <help><![CDATA[
+junction_saturation.py
+++++++++++++++++++++++
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+It's very important to check if current sequencing depth is deep enough to perform
+alternative splicing analyses. For a well annotated organism, the number of expressed genes
+in particular tissue is almost fixed so the number of splice junctions is also fixed. The fixed
+splice junctions can be predetermined from reference gene model. All (annotated) splice
+junctions should be rediscovered from a saturated RNA-seq data, otherwise, downstream
+alternative splicing analysis is problematic because low abundance splice junctions are
+missing. This module checks for saturation by resampling 5%, 10%, 15%, ..., 95% of total
+alignments from BAM or SAM file, and then detects splice junctions from each subset and
+compares them to reference gene model.
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Reference gene model
-	Gene model in BED format.
+    Gene model in BED format.
 
 Sampling Percentiles - Upper Bound, Lower Bound, Sampling Increment (defaults= 100, 5, and 5)
-	Sampling starts from the Lower Bound and increments to the Upper Bound at the rate of the Sampling Increment.
+    Sampling starts from the Lower Bound and increments to the Upper Bound at the rate of the Sampling Increment.
 
 Minimum intron length (default=50)
-	Minimum intron length (bp).
+    Minimum intron length (bp).
 
 Minimum coverage (default=1)
-	Minimum number of supportting reads to call a junction.
+    Minimum number of supportting reads to call a junction.
 
 Output
 ++++++++++++++
@@ -73,10 +112,18 @@
 1. output.junctionSaturation_plot.r: R script to generate plot
 2. output.junctionSaturation_plot.pdf
 
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/junction_saturation.png 
+.. image:: $PATH_TO_IMAGES/junction_saturation.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
 
 In this example, current sequencing depth is almost saturated for "known junction" (red line) detection because the number of "known junction" reaches a plateau. In other words, nearly all "known junctions" (expressed in this particular tissue) have already been detected, and continue sequencing will not detect additional "known junction" and will only increase junction coverage (i.e. junction covered by more reads). While current sequencing depth is not saturated for novel junctions (green).
 
+@ABOUT@
 
-	</help>
-</tool>
\ No newline at end of file
+]]>
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mismatch_profile.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,89 @@
+<tool id="rseqc_mismatch_profile" name="Mismatch Profile" version="@WRAPPER_VERSION@">
+    <description>
+     calculates the distribution of mismatches across reads
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[mismatch_profile.py --version]]></version_command>
+
+    <command><![CDATA[
+        mismatch_profile.py -i '${input}' -o output -l ${readlength} -n ${readnum} -q ${mapq}
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="readlength_param" />
+        <expand macro="readnum_param" />
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
+
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.mismatch_profile.pdf" />
+        <expand macro="xls_output_data" filename="output.mismatch_profile.xls" />
+        <expand macro="rscript_output_data" filename="output.mismatch_profile.r" />
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="readlength" value="101" />
+            <param name="rscript_output" value="true" />
+            <output name="outputpdf" file="output.mismatch_profile.pdf" compare="sim_size" />
+            <output name="outputxls" file="output.mismatch_profile.xls"/>
+            <output name="outputr" file="output.mismatch_profile.r"/>
+        </test>
+    </tests>
+
+    <help><![CDATA[
+mismatch_profile.py
++++++++++++++++++++
+
+Calculate the distribution of mismatches across reads.
+
+Note that the “MD” tag must exist in BAM file.
+
+Inputs
+++++++
+
+Input BAM/SAM file
+    Alignment file in BAM/SAM format.
+
+Alignment length of read
+    It is usually set to the orignial read length. For example, all these cigar
+    strings ("101M", "68M140N33M", "53M1D48M") suggest the read alignment
+    length is 101. [required]
+
+Number of aligned reads used
+    Number of aligned reads with deletions used to calculate the deletion
+    profile. default=1000000
+
+Minimum mapping quality
+    Minimum mapping quality for an alignment to be considered as "uniquely
+    mapped". default=30
+
+Sample Output
+++++++++++++++
+
+.. image:: $PATH_TO_IMAGES/mismatch_profile.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
+
+@ABOUT@
+
+]]>
+
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- a/read_GC.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/read_GC.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,53 +1,74 @@
-<tool id="read_GC" name="Read GC">
-	<description>determines GC% and read count</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> read_GC.py -i $input -o output
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="input bam/sam file" />
-	</inputs>
-	<outputs>
-		<data format="xls" name="outputxls" from_work_dir="output.GC.xls"/>
-		<data format="r" name="outputr" from_work_dir="output.GC_plot.r" />
-		<data format="pdf" name="outputpdf" from_work_dir="output.GC_plot.pdf" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<output name-"outputxls" file="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<output name="outputr" file="readgcout.GC_plot.r" />
-			<output name="outputpdf" file="readgcout.GC_plot.pdf" />
-		</test>
-	</tests>
-	<help>
-		.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_read_GC" name="Read GC" version="@WRAPPER_VERSION@">
+    <description>determines GC% and read count</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[read_GC.py --version]]></version_command>
+
+    <command><![CDATA[
+        read_GC.py
+            --input-file '${input}'
+            --out-prefix output
+            --mapq ${mapq}
+        ]]>
+    </command>
 
------
+    <inputs>
+        <expand macro="bam_sam_param" />
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
+
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.GC_plot.pdf" />
+        <expand macro="xls_output_data" filename="output.GC.xls" />
+        <expand macro="rscript_output_data" filename="output.GC_plot.r" />
+    </outputs>
 
-About RSeQC
-+++++++++++
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="rscript_output" value="true" />
+            <output name="outputxls" file="output.GC.xls" />
+            <output name="outputr" file="output.GC_plot.r" />
+            <output name="outputpdf" file="output.GC_plot.pdf" compare="sim_size" />
+        </test>
+    </tests>
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+    <help><![CDATA[
+read_GC.py
+++++++++++
 
-The RSeQC package is licensed under the GNU GPL v3 license.
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Output
 ++++++++++++++
 
 1. output.GC.xls: Two column, plain text file, first column is GC%, second column is read count
 2. output.GC_plot.r: R script to generate pdf file.
-3. output.GC_plot.pdf: graphical output generated from R script. 
+3. output.GC_plot.pdf: graphical output generated from R script.
+
+.. image:: $PATH_TO_IMAGES/read_gc.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
 
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/read_gc.png
+@ABOUT@
 
-	</help>
+]]>
+    </help>
+
+    <expand macro="citations" />
+
 </tool>
--- a/read_NVC.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/read_NVC.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,52 +1,69 @@
-<tool id="read_NVC" name="Read NVC">
-	<description>to check the nucleotide composition bias</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> read_NVC.py -i $input -o output
+<tool id="rseqc_read_NVC" name="Read NVC" version="@WRAPPER_VERSION@">
+    <description>to check the nucleotide composition bias</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[read_NVC.py --version]]></version_command>
+
+    <command><![CDATA[
+        read_NVC.py
+            --input-file '${input}'
+            --out-prefix output
+            ${nx}
+            --mapq ${mapq}
+    ]]>
+    </command>
 
-		#if $nx
-			-x
-		#end if
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="input bam/sam file" />
-		<param name="nx" type="boolean" label="Include N,X in NVC plot" value="false" />
-	</inputs>
-	<outputs>
-		<data format="xls" name="outputxls" from_work_dir="output.NVC.xls"/>
-		<data format="r" name="outputr" from_work_dir="output.NVC_plot.r" />
-		<data format="pdf" name="outputpdf" from_work_dir="output.NVC_plot.pdf" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<output name="outputxls" file="readnvcout.NVC.xls" />
-			<output name="outputr" file="readnvcout.NVC_plot.r" />
-			<output name="outputpdf" file="readnvcout.NVC_plot.pdf" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+    <inputs>
+        <expand macro="bam_sam_param" />
+        <param name="nx" type="boolean" value="false" truevalue="--nx" falsevalue="" label="Include N,X in NVC plot" help="(--nx)"/>
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
+
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.NVC_plot.pdf" />
+        <expand macro="xls_output_data" filename="output.NVC.xls" />
+        <expand macro="rscript_output_data" filename="output.NVC_plot.r" />
+    </outputs>
 
------
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="rscript_output" value="true" />
+            <output name="outputxls" file="output.NVC.xls" />
+            <output name="outputr" file="output.NVC_plot.r" />
+            <output name="outputpdf" file="output.NVC_plot.pdf" compare="sim_size" />
+        </test>
+    </tests>
 
-About RSeQC
+    <help><![CDATA[
+read_NVC.py
 +++++++++++
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+This module is used to check the nucleotide composition bias. Due to random priming, certain
+patterns are over represented at the beginning (5'end) of reads. This bias could be easily
+examined by NVC (Nucleotide versus cycle) plot. NVC plot is generated by overlaying all
+reads together, then calculating nucleotide composition for each position of read
+(or each sequencing cycle). In ideal condition (genome is random and RNA-seq reads is
+randomly sampled from genome), we expect A%=C%=G%=T%=25% at each position of reads.
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+NOTE: this program expect a fixed read length
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Include N,X in NVC plot
-	Plots N and X alongside A, T, C, and G in plot.
+    Plots N and X alongside A, T, C, and G in plot.
 
 Output
 ++++++++++++++
@@ -59,7 +76,16 @@
 3. output.NVC_plot.pdf: NVC plot.
 
 
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/NVC_plot.png
+.. image:: $PATH_TO_IMAGES/NVC_plot.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
+
+@ABOUT@
 
-	</help>
+]]>
+    </help>
+
+    <expand macro="citations" />
+
 </tool>
--- a/read_distribution.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/read_distribution.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,69 +1,96 @@
-<tool id="read_distribution" name="Read Distribution">
-	<description>calculates how mapped reads were distributed over genome feature</description>
-	<requirements>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> read_distribution.py -i $input -r $refgene > $output
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="input bam/sam file" />
-		<param name="refgene" type="data" format="bed" label="reference gene model" />
-	</inputs>
-	<outputs>
-		<data format="txt" name="output" />
-	</outputs>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_read_distribution" name="Read Distribution" version="@WRAPPER_VERSION@">
+    <description>calculates how mapped reads were distributed over genome feature</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[read_distribution.py --version]]></version_command>
+
+    <command><![CDATA[
+        read_distribution.py -i '${input}' -r '${refgene}' > '${output}'
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_sam_param" />
+        <expand macro="refgene_param" />
+    </inputs>
+
+    <outputs>
+        <data format="txt" name="output" />
+    </outputs>
 
------
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed"/>
+            <output name="output" file="output.read_distribution.txt"/>
+        </test>
+    </tests>
+
+    <help><![CDATA[
+read_distribution.py
+++++++++++++++++++++
 
-About RSeQC
-+++++++++++
+Provided a BAM/SAM file and reference gene model, this module will calculate how mapped
+reads were distributed over genome feature (like CDS exon, 5'UTR exon, 3' UTR exon, Intron,
+Intergenic regions). When genome features are overlapped (e.g. a region could be annotated
+as both exon and intron by two different transcripts) , they are prioritize as:
+CDS exons > UTR exons > Introns > Intergenic regions, for example, if a read was mapped to
+both CDS exon and intron, it will be assigned to CDS exons.
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+* "Total Reads": This does NOT include those QC fail,duplicate and non-primary hit reads
+* "Total Tags": reads spliced once will be counted as 2 tags, reads spliced twice will be counted as 3 tags, etc. And because of this, "Total Tags" >= "Total Reads"
+* "Total Assigned Tags": number of tags that can be unambiguously assigned the 10 groups (see below table).
+* Tags assigned to "TSS_up_1kb" were also assigned to "TSS_up_5kb" and "TSS_up_10kb", tags assigned to "TSS_up_5kb" were also assigned to "TSS_up_10kb". Therefore, "Total Assigned Tags" = CDS_Exons + 5'UTR_Exons + 3'UTR_Exons + Introns + TSS_up_10kb + TES_down_10kb.
+* When assign tags to genome features, each tag is represented by its middle point.
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+RSeQC cannot assign those reads that:
+
+* hit to intergenic regions that beyond region starting from TSS upstream 10Kb to TES downstream 10Kb.
+* hit to regions covered by both 5'UTR and 3' UTR. This is possible when two head-to-tail transcripts are overlapped in UTR regions.
+* hit to regions covered by both TSS upstream 10Kb and TES downstream 10Kb.
+
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Reference gene model
-	Gene model in BED format.
+    Gene model in BED format.
 
 Sample Output
 ++++++++++++++
 
-::
-
-	Total Read: 44,826,454 ::
-
-	Total Tags: 50,023,249 ::
-
-	Total Assigned Tags: 36,057,402 ::
+Output:
 
-	Group	Total_bases	Tag_count	Tags/Kb
-	CDS_Exons	33302033	20022538	601.24
-	5'UTR_Exons	21717577	4414913	203.29
-	3'UTR_Exons	15347845	3641689	237.28
-	Introns	1132597354	6312099	5.57
-	TSS_up_1kb	17957047	215220	11.99
-	TSS_up_5kb	81621382	392192	4.81
-	TSS_up_10kb	149730983	769210	5.14
-	TES_down_1kb	18298543	266157	14.55
-	TES_down_5kb	78900674	730072	9.25
-	TES_down_10kb	140361190	896953	6.39
+===============     ============        ===========         ===========
+Group               Total_bases         Tag_count           Tags/Kb
+===============     ============        ===========         ===========
+CDS_Exons           33302033            20002271            600.63
+5'UTR_Exons         21717577            4408991             203.01
+3'UTR_Exons         15347845            3643326             237.38
+Introns             1132597354          6325392             5.58
+TSS_up_1kb          17957047            215331              11.99
+TSS_up_5kb          81621382            392296              4.81
+TSS_up_10kb         149730983           769231              5.14
+TES_down_1kb        18298543            266161              14.55
+TES_down_5kb        78900674            729997              9.25
+TES_down_10kb       140361190           896882              6.39
+===============     ============        ===========         ===========
 
-Note:
-- "Total Reads": This does NOT include those QC fail,duplicate and non-primary hit reads
-- "Total Tags": reads spliced once will be counted as 2 tags, reads spliced twice will be counted as 3 tags, etc. And because of this, "Total Fragments" >= "Total Reads"
-- "Total Assigned Tags": number of tags that can be unambiguously assigned the 10 groups (above table).
-- Tags assigned to "TSS_up_1kb" were also assigned to "TSS_up_5kb" and "TSS_up_10kb", tags assigned to "TSS_up_5kb" were also assigned to "TSS_up_10kb". Therefore, "Total Assigned Tags" = CDS_Exons + 5'UTR_Exons + 3'UTR_Exons + Introns + TSS_up_10kb + TES_down_10kb.
-- When assigning tags to genome features, each tag is represented by its middle point.
-- RSeQC cannot assign those reads that: 1) hit to intergenic regions that beyond region starting from TSS upstream 10Kb to TES downstream 10Kb. 2) hit to regions covered by both 5'UTR and 3' UTR. This is possible when two head-to-tail transcripts are overlapped in UTR regions. 3) hit to regions covered by both TSS upstream 10Kb and TES downstream 10Kb.
+@ABOUT@
 
+]]>
+    </help>
 
-	</help>
+    <expand macro="citations" />
+
 </tool>
--- a/read_duplication.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/read_duplication.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,50 +1,63 @@
-<tool id="read_duplication" name="Read Duplication">
-	<description>determines reads duplication rate with sequence-based and mapping-based strategies</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> read_duplication.py -i $input -o output -u $upLimit
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="input bam/sam file" />
-		<param name="upLimit" type="integer" label="Upper Limit of Plotted Duplicated Times (default=500)" value="500" />
-	</inputs>
-	<outputs>
-		<data format="xls" name="outputxls" from_work_dir="output.dup.pos.DupRate.xls"/>
-		<data format="xls" name="outputseqxls" from_work_dir="output.dup.seq.DupRate.xls"/>
-		<data format="r" name="outputr" from_work_dir="output.DupRate_plot.r" />
-		<data format="pdf" name="outputpdf" from_work_dir="output.DupRate_plot.pdf" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_StrandSpecific_51mer_Human_hg19.bam" />
-			<output name="outputxls" file="readdupout.pos.DupRate.xls" />
-			<output name="outputseqxls" file="readdupout.seq.DupRate.xls" />
-			<output name="outputr" file="readdupout.DupRate_plot.r" />
-			<output name="outputpdf" file="readdupout.DupRate_plot.pdf" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_read_duplication" name="Read Duplication" version="@WRAPPER_VERSION@">
+    <description>determines reads duplication rate with sequence-based and mapping-based strategies</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[read_duplication.py --version]]></version_command>
+
+    <command><![CDATA[
+        read_duplication.py -i '${input}' -o output -u ${upLimit} -q ${mapq}
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_sam_param" />
+        <param name="upLimit" type="integer" label="Upper Limit of Plotted Duplicated Times (default=500)" value="500" help="(--up-limit)"/>
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
 
------
+    <outputs>
+        <expand macro="pdf_output_data" filename="output.DupRate_plot.pdf" />
+        <data format="xls" name="outputxls" from_work_dir="output.pos.DupRate.xls" label="${tool.name} on ${on_string} (Position xls)"/>
+        <data format="xls" name="outputseqxls" from_work_dir="output.seq.DupRate.xls" label="${tool.name} on ${on_string} (Sequence xls)"/>
+        <expand macro="rscript_output_data" filename="output.DupRate_plot.r" />
+    </outputs>
 
-About RSeQC
-+++++++++++
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam" />
+            <param name="rscript_output" value="true" />
+            <output name="outputxls" file="output.pos.DupRate.xls" />
+            <output name="outputseqxls" file="output.seq.DupRate.xls" />
+            <output name="outputr" file="output.DupRate_plot.r" />
+            <output name="outputpdf" file="output.DupRate_plot.pdf" compare="sim_size" />
+        </test>
+    </tests>
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+    <help><![CDATA[
+read_duplication.py
++++++++++++++++++++
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+Two strategies were used to determine reads duplication rate:
+
+* Sequence based: reads with exactly the same sequence content are regarded as duplicated reads.
+* Mapping based: reads mapped to the same genomic location are regarded as duplicated reads. For splice reads, reads mapped to the same starting position and splice the same way are regarded as duplicated reads.
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Upper Limit of Plotted Duplicated Times (default=500)
-	Only used for plotting.
+    Only used for plotting.
 
 Output
 ++++++++++++++
@@ -54,7 +67,16 @@
 3. output.DupRate_plot.r: R script to generate pdf file
 4. output.DupRate_plot.pdf: graphical output generated from R script
 
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/duplicate.png
+.. image:: $PATH_TO_IMAGES/duplicate.png
+   :height: 600 px
+   :width: 600 px
+   :scale: 80 %
+
+@ABOUT@
 
-	</help>
+]]>
+    </help>
+
+    <expand macro="citations" />
+
 </tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/read_hexamer.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,137 @@
+<tool id="rseqc_read_hexamer" name="Hexamer frequency" version="@WRAPPER_VERSION@">
+    <description>
+        calculates hexamer (6mer) frequency for reads, genomes, and mRNA sequences
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[read_hexamer.py --version]]></version_command>
+
+    <command><![CDATA[
+        #import re
+        #set $input_list = []
+        #for $i, $input in enumerate($inputs):
+
+            #set $safename = re.sub('[^\w\-_]', '_', $input.element_identifier)
+            #if $safename in $input_list:
+                #set $safename = str($safename) + "." + str($i)
+            #end if
+            $input_list.append($safename)
+
+            #if $input.is_of_type("fastq.gz", "fastqsanger.gz"):
+                gunzip -c '${input}' > "${safename}" &&
+            #else:
+                ln -sf '${input}' "${safename}" &&
+            #end if
+        #end for
+        read_hexamer.py -i '${ ','.join( [ $name for $name in $input_list ] ) }'
+        #if $refgenome:
+            -r '${refgenome}'
+        #end if
+        #if $refgene:
+            -g '${refgene}'
+        #end if
+        > '${output}'
+        ]]>
+    </command>
+
+    <inputs>
+        <param name="inputs" type="data" label="Read sequences in fasta or fastq format" format="fasta,fastq,fastqsanger,fastq.gz,fastqsanger.gz" help="(--input)" multiple="true" />
+        <param name="refgenome" type="data" label="Reference genome seqeunce (fasta)" format="fasta" optional="true" help="(--refgenome)" />
+        <param name="refgene" type="data" label="Reference mRNA sequence (fasta)" format="fasta" optional="true" help="(--refgene)" />
+    </inputs>
+
+    <outputs>
+        <data name="output" format="tabular" label="${tool.name} on ${on_string}" />
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="inputs" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq"/>
+            <output name="output">
+                <assert_contents>
+                    <has_line line="Hexamer&#009;pairend_strandspecific_51mer_hg19_chr1_1-100000_R1_fastq" />
+                    <has_line line="AAAAAA&#009;0.00217391304348" />
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="inputs" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq.gz" ftype="fastqsanger.gz"/>
+            <output name="output">
+                <assert_contents>
+                    <has_line line="Hexamer&#009;pairend_strandspecific_51mer_hg19_chr1_1-100000_R1_fastq_gz" />
+                    <has_line line="AAAAAA&#009;0.00217391304348" />
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="inputs" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq,pairend_strandspecific_51mer_hg19_chr1_1-100000.R2.fastq"/>
+            <output name="output">
+                <assert_contents>
+                    <has_line line="Hexamer&#009;pairend_strandspecific_51mer_hg19_chr1_1-100000_R1_fastq&#009;pairend_strandspecific_51mer_hg19_chr1_1-100000_R2_fastq" />
+                    <has_line line="AAAAAA&#009;0.00217391304348&#009;0.00534759358289" />
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <param name="inputs" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq,pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq"/>
+            <output name="output">
+                <assert_contents>
+                    <has_line line="Hexamer&#009;pairend_strandspecific_51mer_hg19_chr1_1-100000_R1_fastq&#009;pairend_strandspecific_51mer_hg19_chr1_1-100000_R1_fastq.1" />
+                    <has_line line="AAAAAA&#009;0.00217391304348&#009;0.00217391304348" />
+                </assert_contents>
+            </output>
+        </test>
+        <!-- Unable to test with collections at the moment (requires type="data_collection" on the input)
+        <test>
+            <param name="inputs">
+                <collection type="list">
+                    <element name="read_1" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq" />
+                    <element name="read_2" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.R2.fastq" />
+                </collection>
+            </param>
+            <output name="output" file="output.read_hexamer.2.txt" />
+        </test>
+        -->
+    </tests>
+
+    <help><![CDATA[
+read_hexamer.py
++++++++++++++++++++++
+
+Calculate hexamer (6mer) frequency. If ‘-r’ was specified, hexamer frequency
+is also calculated for the reference genome. If ‘-g’ was provided, hexamer
+frequency is also calculated for the mRNA sequences.
+
+Inputs
+++++++++++++++
+
+Input reads file
+    Read sequences in fasta or fastq format.
+
+Reference Genome
+    Reference genome sequence in fasta format.
+
+Reference Gene
+    Reference mRNA sequences in fasta format.
+
+
+Outputs
+++++++++++++++
+
+Tabular file of hexamer frequences in for each input.
+
+@ABOUT@
+
+]]>
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- a/read_quality.xml	Thu Jul 18 11:01:08 2013 -0500
+++ b/read_quality.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -1,58 +1,92 @@
-<tool id="read_quality" name="Read Quality">
-	<description>determines Phred quality score</description>
-	<requirements>
-		<requirement type="package" version="2.15.1">R</requirement>
-		<requirement type="package" version="2.3.7">rseqc</requirement>
-	</requirements>
-	<command interpreter="python"> read_quality.py -i $input -o output -r $reduce
-	</command>
-	<inputs>
-		<param name="input" type="data" format="bam,sam" label="input bam/sam file" />
-		<param name="reduce" type="integer" label="Ignore Phred scores less than this amount (only applies to 'boxplot', default=1000)" value="1000" />
-	</inputs>
-	<outputs>
-		<data format="r" name="outputr" from_work_dir="output.qual.r" />
-		<data format="pdf" name="outputpdf" from_work_dir="output.qual.heatmap.pdf" />
-		<data format="pdf" name="outputbxpdf" from_work_dir="output.qual.boxplot.pdf" />
-	</outputs>
-	<tests>
-		<test>
-			<param name="input" value="Pairend_nonStrandSpecific_36mer_Human_hg19.bam" />
-			<output name="outputr" file="readqualout.qual.r" />
-			<output name="outputpdf" file="readqualout.qual.heatmap.pdf" />
-			<output name="outputbxpdf" file="readqualout.qual.boxplot.pdf" />
-		</test>
-	</tests>
-	<help>
-.. image:: https://code.google.com/p/rseqc/logo?cct=1336721062
+<tool id="rseqc_read_quality" name="Read Quality" version="@WRAPPER_VERSION@">
+    <description>determines Phred quality score</description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[read_quality.py --version]]></version_command>
+
+    <command><![CDATA[
+        read_quality.py
+            --input-file '${input}'
+            --out-prefix output
+            -r ${reduce}
+            --mapq ${mapq}
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_sam_param" />
+        <param name="reduce" type="integer" label="Ignore Phred scores less than this amount (only applies to 'boxplot', default=1000)" value="1000" help="(--reduce)"/>
+        <expand macro="mapq_param" />
+        <expand macro="rscript_output_param" />
+    </inputs>
 
------
+    <outputs>
+        <data format="pdf" name="outputheatpdf" from_work_dir="output.qual.heatmap.pdf" label="${tool.name} on ${on_string} (Heatmap pdf)" />
+        <data format="pdf" name="outputboxpdf" from_work_dir="output.qual.boxplot.pdf" label="${tool.name} on ${on_string} (Boxplot pdf)" />
+        <expand macro="rscript_output_data" filename="output.qual.r" />
+    </outputs>
 
-About RSeQC
-+++++++++++
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_random.bam"/>
+            <param name="rscript_output" value="true" />
+            <output name="outputr" file="output.qual.r"/>
+            <output name="outputheatpdf" file="output.qual.heatmap.pdf" compare="sim_size" />
+            <output name="outputboxpdf" file="output.qual.boxplot.pdf" compare="sim_size" />
+        </test>
+    </tests>
 
-The RSeQC package provides a number of useful modules that can comprehensively evaluate high throughput sequence data especially RNA-seq data. “Basic modules” quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC bias, while “RNA-seq specific modules” investigate sequencing saturation status of both splicing junction detection and expression estimation, mapped reads clipping profile, mapped reads distribution, coverage uniformity over gene body, reproducibility, strand specificity and splice junction annotation.
+    <help><![CDATA[
+read_quality.py
++++++++++++++++
 
-The RSeQC package is licensed under the GNU GPL v3 license.
+According to SAM specification, if Q is the character to represent "base calling quality"
+in SAM file, then Phred Quality Score = ord(Q) - 33. Here ord() is python function that
+returns an integer representing the Unicode code point of the character when the argument
+is a unicode object, for example, ord('a') returns 97. Phred quality score is widely used
+to measure "reliability" of base-calling, for example, phred quality score of 20 means
+there is 1/100 chance that the base-calling is wrong, phred quality score of 30 means there
+is 1/1000 chance that the base-calling is wrong. In general: Phred quality score = -10xlog(10)P,
+here P is probability that base-calling is wrong.
 
 Inputs
 ++++++++++++++
 
 Input BAM/SAM file
-	Alignment file in BAM/SAM format.
+    Alignment file in BAM/SAM format.
 
 Ignore phred scores less than this number (default=1000)
-	To avoid making huge vector in R, nucleotide with certain phred score represented less than this number will be ignored. Increase this number save more memory while reduce precision. This option only applies to the 'boxplot'.
+    To avoid making huge vector in R, nucleotide with certain phred score represented less than this number will be ignored. Increase this number save more memory while reduce precision. This option only applies to the 'boxplot'.
 
 Output
 ++++++++++++++
 
 1. output.qual.r
 2. output.qual.boxplot.pdf
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/36mer.qual.plot.png
+    .. image:: $PATH_TO_IMAGES/36mer.qual.plot.png
+        :height: 600 px
+        :width: 600 px
+        :scale: 80 %
 3. output.qual.heatmap.pdf
-.. image:: http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/figure/36mer.qual.heatmap.png
-use different color to represent nucleotide density ("blue"=low density,"orange"=median density,"red"=high density")
+    .. image:: $PATH_TO_IMAGES/36mer.qual.heatmap.png
+        :height: 600 px
+        :width: 600 px
+        :scale: 80 %
+
+Heatmap: use different color to represent nucleotide density ("blue"=low density,"orange"=median density,"red"=high density")
 
-	</help>
+@ABOUT@
+
+]]>
+    </help>
+
+    <expand macro="citations" />
+
 </tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rseqc_macros.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,155 @@
+<macros>
+
+    <token name="@WRAPPER_VERSION@">2.6.4</token>
+
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="2.6.4">rseqc</requirement>
+        </requirements>
+    </xml>
+
+    <xml name="stdio">
+        <stdio>
+            <exit_code range="1:" level="fatal" description="An error occured during execution, see stderr and stdout for more information" />
+            <regex match="[Ee]rror" source="both" description="An error occured during execution, see stderr and stdout for more information" />
+        </stdio>
+    </xml>
+
+    <!-- Params -->
+    <xml name="bam_param">
+        <param name="input" type="data" label="Input .bam file" format="bam" help="(--input-file)"/>
+    </xml>
+
+    <xml name="bam_sam_param">
+        <param name="input" type="data" label="Input .bam/.sam file" format="bam,sam" help="(--input-file)"/>
+    </xml>
+
+    <xml name="refgene_param">
+        <param name="refgene" type="data" format="bed" label="Reference gene model" help="(--refgene)"/>
+    </xml>
+
+    <xml name="mapq_param">
+        <param name="mapq" type="integer" label="Minimum mapping quality" value="30" help="Minimum mapping quality for an alignment to be considered as &quot;uniquely mapped&quot; (--mapq)"/>
+    </xml>
+
+    <xml name="readlength_param">
+        <param name="readlength" type="integer" value="" label="Alignment length" optional="false" help="Alignment length of read, usually set to the orignial read length (--read-align-length)"/>
+    </xml>
+
+    <xml name="readnum_param">
+        <param name="readnum" type="integer" label="Number of aligned reads" value="1000000" help="Number of aligned reads with mismatches used to calculate the mismatch profile (--read-num)"/>
+    </xml>
+
+    <xml name="sample_size_param">
+        <param name="sample_size" type="integer" label="Number of reads sampled from SAM/BAM file (default = 200000)" value="200000" min="1" help="(--sample-size)"/>
+    </xml>
+
+    <xml name="min_intron_param">
+        <param name="min_intron" type="integer" value="50" label="Minimum intron length (bp, default=50)" help="(--min-intron)" />
+    </xml>
+
+    <xml name="layout_param">
+        <param name="layout" type="select" label="Sequencing layout" help="(--sequencing)">
+            <option value="SE" selected="true">Single-end</option>
+            <option value="PE">Paired-end</option>
+        </param>
+    </xml>
+
+    <xml name="strand_type_param">
+        <conditional name="strand_type">
+            <param name="strand_specific" type="select" label="Strand-specific?">
+                <option value="none" selected="true">None</option>
+                <option value="pair">Pair-End RNA-seq</option>
+                <option value="single">Single-End RNA-seq</option>
+            </param>
+            <when value="pair">
+                <param name="pair_type" type="select" display="radio" label="Pair-End Read Type (format: mapped --> parent)" help="(--strand)">
+                    <option value="sd" selected="true"> read1 (positive --> positive; negative --> negative), read2 (positive --> negative; negative --> positive)</option>
+                    <option value="ds">read1 (positive --> negative; negative --> positive), read2 (positive --> positive; negative --> negative)</option>
+                </param>
+            </when>
+            <when value="single">
+                <param name="single_type" type="select" display="radio" label="Single-End Read Type (format: mapped --> parent)" help="(--strand)">
+                    <option value="s" selected="true">positive --> positive; negative --> negative</option>
+                    <option value="d">positive --> negative; negative --> positive</option>
+                </param>
+            </when>
+            <when value="none"></when>
+        </conditional>
+    </xml>
+
+    <xml name="multihits_param">
+        <conditional name="multihits_type">
+            <param name="multihits_type_selector" type="select" label="Reads with multiple hits" help="(--skip-multi-hits)">
+                <option value="use_multihits" selected="true">Count Mutliple Hit Reads</option>
+                <option value="skip_multihits">Skip Multiple Hit Reads/Only Use Uniquely Mapped Reads</option>
+            </param>
+            <when value="skip_multihits">
+                <expand macro="mapq_param" />
+            </when>
+            <when value="use_multihits" />
+        </conditional>
+    </xml>
+
+    <xml name="rscript_output_param">
+        <param name="rscript_output" type="boolean" value="false" label="Output R-Script"
+            help="Output the R-Script used to generate the plots" />
+    </xml>
+
+
+    <!-- Output -->
+
+    <xml name="pdf_output_data" token_filename="output.pdf">
+        <data format="pdf" name="outputpdf" from_work_dir="@FILENAME@" label="${tool.name} on ${on_string} (pdf)" />
+    </xml>
+
+    <xml name="xls_output_data" token_filename="output.xls">
+        <data format="xls" name="outputxls" from_work_dir="@FILENAME@" label="${tool.name} on ${on_string} (xls)" />
+    </xml>
+
+    <xml name="rscript_output_data" token_filename="output.r">
+        <data format="txt" name="outputr" from_work_dir="@FILENAME@" label="${tool.name} on ${on_string} (rscript)">
+            <filter>rscript_output</filter>
+        </data>
+    </xml>
+
+    <!-- Command -->
+    <token name="@MULTIHITS@">
+<![CDATA[
+#if str($multihits_type.multihits_type_selector) == "skip_multihits"
+    --skip-multi-hits
+    --mapq=${multihits_type.mapq}
+#end if
+]]>
+    </token>
+
+    <token name="@ABOUT@">
+
+-----
+
+About RSeQC
++++++++++++
+
+The RSeQC_ package provides a number of useful modules that can comprehensively
+evaluate high throughput sequence data especially RNA-seq data. "Basic modules"
+quickly inspect sequence quality, nucleotide composition bias, PCR bias and GC
+bias, while "RNA-seq specific modules" investigate sequencing saturation status
+of both splicing junction detection and expression estimation, mapped reads
+clipping profile, mapped reads distribution, coverage uniformity over gene
+body, reproducibility, strand specificity and splice junction annotation.
+
+The RSeQC package is licensed under the GNU GPL v3 license.
+
+.. image:: $PATH_TO_IMAGES/logo.png
+
+.. _RSeQC: http://rseqc.sourceforge.net/
+
+
+    </token>
+
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.1093/bioinformatics/bts356</citation>
+        </citations>
+    </xml>
+</macros>
--- a/samtoolshelper.py	Thu Jul 18 11:01:08 2013 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-import sys
-import subprocess as sp
-import os
-
-# Creates the sorted and indexed bam/bai files that are requried for both bam2wig and RSEQC_count
-def samtools_sorted(bam):
-	sortedbam = bam + ".sorted"
-	indexedbam = ".".join([sortedbam,"bam.bai"])
-	sp.call(['samtools', 'sort', '-m 1000000000', bam, sortedbam])
-	sortedbam = sortedbam + '.bam'
-	sp.call(['samtools', 'index', sortedbam, indexedbam])
-	return sortedbam
-
-def main(args):
-	args[2] = samtools_sorted(args[2])
-	sp.call(args)
-
-
-if __name__ == "__main__":
-	main(sys.argv[1:])
\ No newline at end of file
Binary file static/images/36mer.qual.heatmap.png has changed
Binary file static/images/36mer.qual.plot.png has changed
Binary file static/images/Aug_26.geneBodyCoverage.curves.png has changed
Binary file static/images/Aug_26.geneBodyCoverage.heatMap.png has changed
Binary file static/images/NVC_plot.png has changed
Binary file static/images/RelativeError.png has changed
Binary file static/images/clipping_good.png has changed
Binary file static/images/duplicate.png has changed
Binary file static/images/geneBody_coverage.png has changed
Binary file static/images/geneBody_workflow.png has changed
Binary file static/images/inner_distance.png has changed
Binary file static/images/junction.png has changed
Binary file static/images/junction_saturation.png has changed
Binary file static/images/logo.png has changed
Binary file static/images/mismatch_profile.png has changed
Binary file static/images/out.deletion_profile.png has changed
Binary file static/images/out.insertion_profile.R1.png has changed
Binary file static/images/out.insertion_profile.R2.png has changed
Binary file static/images/read_gc.png has changed
Binary file static/images/saturation.png has changed
Binary file static/images/saturation_eg.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/hg19.HouseKeepingGenes_30.bed	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,30 @@
+chr1	100652477	100715409	NM_001918	0	-	100661810	100715376	0	11	9501,72,192,78,167,217,122,182,76,124,84,	0,19308,19523,23772,27895,29061,31704,43811,48514,53839,62848,
+chr1	175913961	176176380	NM_022457	0	-	175914288	176176114	0	20	345,45,161,125,118,117,82,109,144,136,115,58,77,60,69,120,77,98,60,673,	0,2369,42117,43462,44536,82746,98360,98884,101355,136326,140950,171798,190184,191662,204180,218043,218989,231084,239807,261746,
+chr1	150980972	151008189	NM_021222	0	+	150981108	151006710	0	8	175,93,203,185,159,95,159,1908,	0,9315,9970,16114,17018,18736,20289,25309,
+chr1	6281252	6296044	NM_012405	0	-	6285139	6295971	0	5	4070,218,170,89,268,	0,10709,12281,13693,14524,
+chr1	20959947	20978004	NM_032409	0	+	20960041	20977184	0	8	481,288,101,183,164,128,237,1078,	0,4387,6437,11035,12105,15050,15540,16979,
+chr1	32479294	32509482	NM_006559	0	+	32479596	32508225	0	9	684,125,117,147,134,202,68,59,1355,	0,16604,17830,19494,23216,24141,24858,25821,28833,
+chr1	27248212	27273362	NM_006600	0	+	27248339	27272672	0	9	208,78,204,66,117,195,84,119,742,	0,2367,19735,20031,20938,21149,23668,23846,24408,
+chr1	31404352	31538564	NM_014676	0	-	31406057	31532413	0	22	1837,193,122,126,138,129,130,268,237,297,144,139,152,102,94,271,167,179,109,69,374,102,	0,5137,9645,10492,13840,18627,20728,22208,33168,34476,35661,36848,43145,48556,49806,60884,63548,74347,75488,97290,127698,134110,
+chr1	36690016	36770957	NM_005119	0	+	36748164	36769618	0	12	90,103,168,903,705,173,112,85,188,199,144,1561,	0,34966,58117,61952,64644,66958,68182,69435,72167,76470,77137,79380,
+chr1	46092975	46152302	NM_021639	0	-	46093927	46124759	0	13	1105,103,125,159,141,194,73,287,130,115,1042,45,219,	0,2272,3178,6185,6792,12906,15123,27239,27886,31724,32880,58272,59108,
+chr1	44870959	45117396	NM_018150	0	+	44877769	45116447	0	15	243,742,133,46,102,43,44,133,97,87,56,79,109,75,1021,	0,6693,208877,217454,221009,227055,230257,230742,239410,239707,239933,240122,244373,244595,245416,
+chr1	54519273	54565416	NM_153035	0	+	54520095	54562146	0	5	158,144,142,194,3459,	0,780,15155,34996,42684,
+chr1	50906934	51425936	NM_007051	0	-	50907111	51425483	0	19	261,216,78,81,89,137,155,82,64,127,96,87,106,92,92,206,47,69,498,	0,34201,49325,50458,94106,98329,125814,141355,142389,143422,154858,214179,264523,297600,303421,346737,360368,416666,518504,
+chr1	77554666	77685132	NM_005482	0	-	77558058	77685087	0	11	3509,85,173,111,118,97,112,136,92,54,138,	0,33293,65467,72313,72612,74864,77737,80278,117658,121454,130328,
+chr1	94352589	94375012	NM_002061	0	-	94354545	94374719	0	7	2126,115,203,60,85,66,419,	0,7580,9584,10805,14551,17489,22004,
+chr1	112162404	112259317	NM_002884	0	+	112233982	112251857	0	8	152,84,69,57,141,144,116,4265,	0,71551,75558,77658,83553,84560,89366,92648,
+chr1	118472371	118503049	NM_006784	0	+	118475942	118502070	0	27	34,203,210,119,79,96,114,102,98,108,231,94,102,86,136,57,101,112,135,51,66,93,48,44,129,94,1135,	0,3539,4724,7020,8731,9728,11078,11375,12001,12688,13647,16337,18656,20002,20246,21085,22227,22548,22779,23197,23727,24258,24831,25566,27319,29161,29543,
+chr1	156219014	156252620	NM_015327	0	-	156220377	156252471	0	22	1447,139,75,91,160,60,159,176,76,176,600,138,209,69,126,79,90,90,157,124,99,223,	0,1634,2179,3190,3695,4225,9781,11227,12109,14171,16557,17317,18246,18891,19066,23096,24137,25373,27861,28701,29712,33383,
+chr1	180257351	180472022	NM_032360	0	-	180257497	180471401	0	8	301,31,90,106,83,97,65,843,	0,26475,109299,125149,141963,204052,207244,213828,
+chr1	183441505	183523328	NM_173156	0	+	183441755	183521066	0	22	279,32,118,133,172,72,151,136,163,157,71,61,120,427,145,383,372,81,160,171,146,2376,	0,40466,43503,45317,54225,55585,56521,57027,60793,61305,64774,66009,68613,69705,71982,72559,73595,76837,77393,78380,78674,79447,
+chr1	220141941	220220000	NM_004446	0	-	220142147	220219730	0	32	357,65,79,161,174,198,156,102,80,73,210,52,263,234,360,118,113,208,137,111,60,85,234,172,193,127,95,140,157,100,85,316,	0,458,3469,4638,9946,10818,11485,12156,12778,14172,14589,15606,18542,19990,28383,32538,36648,37506,38602,42346,49849,50395,51388,53747,55664,56532,61786,63787,64902,66314,71585,77743,
+chr1	229577043	229644088	NM_018230	0	-	229577650	229643996	0	26	744,89,65,81,119,136,159,134,252,100,123,225,95,164,92,158,148,148,71,156,171,135,108,104,119,274,	0,3617,7829,9228,11228,16864,19314,22246,23327,24123,25337,29283,34341,36300,42757,45074,46169,48658,54198,54595,56839,58387,59459,60702,64743,66771,
+chr1	1309109	1310818	NM_017900	0	-	1309180	1310136	0	4	173,446,86,285,	0,270,975,1424,
+chr1	9908333	9970316	NM_020248	0	-	9910775	9932122	0	6	2501,91,120,85,34,164,	0,22911,23693,29629,35429,61819,
+chr1	10093040	10241296	NM_006048	0	+	10093728	10240014	0	27	712,187,136,88,145,229,142,101,115,84,57,117,99,114,199,139,100,128,99,236,127,145,135,192,175,147,1344,	0,39045,62478,68125,69965,72533,84476,86530,88979,93811,96409,97517,97732,99386,102005,104084,111957,113980,116201,118343,125373,128159,135153,138155,145661,146433,146912,
+chr1	11126675	11159938	NM_002685	0	-	11126774	11159888	0	24	130,77,62,172,74,85,96,107,79,51,112,51,149,157,191,144,111,76,115,166,105,124,137,161,	0,1389,2026,2940,4281,5468,7612,10223,10746,10982,13092,13880,14145,14463,16069,20829,21181,21504,23935,24395,24874,29139,31401,33102,
+chr1	10535002	10690815	NM_004565	0	+	10535023	10690044	0	9	57,48,85,129,86,103,98,92,1228,	0,20328,61267,124292,143386,148073,149394,152326,154585,
+chr1	16576558	16678948	NM_018994	0	-	16577164	16641913	0	10	1722,117,57,97,111,154,135,117,267,199,	0,2224,3032,3571,5647,6542,44719,55739,65105,102191,
+chr1	16174358	16266950	NM_015001	0	+	16174562	16265922	0	15	287,321,477,161,201,152,126,114,114,101,8176,483,195,159,1160,	0,24952,28338,61457,63237,68264,71062,71540,73006,74385,80227,89299,89948,90854,91432,
+chr1	17866329	18024370	NM_018125	0	+	17907090	18023875	0	29	116,80,186,34,92,84,176,117,109,107,78,180,117,93,174,146,15,182,116,128,101,122,87,224,155,149,175,123,1028,	0,40718,47625,48611,62292,63673,67967,73223,76259,79504,82029,83161,84552,86121,87495,92486,94713,95000,98053,98727,100367,108719,114801,116044,116719,124612,147738,155323,157013,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/hg19.chrom.sizes	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,93 @@
+chr1	249250621
+chr2	243199373
+chr3	198022430
+chr4	191154276
+chr5	180915260
+chr6	171115067
+chr7	159138663
+chrX	155270560
+chr8	146364022
+chr9	141213431
+chr10	135534747
+chr11	135006516
+chr12	133851895
+chr13	115169878
+chr14	107349540
+chr15	102531392
+chr16	90354753
+chr17	81195210
+chr18	78077248
+chr20	63025520
+chrY	59373566
+chr19	59128983
+chr22	51304566
+chr21	48129895
+chr6_ssto_hap7	4928567
+chr6_mcf_hap5	4833398
+chr6_cox_hap2	4795371
+chr6_mann_hap4	4683263
+chr6_apd_hap1	4622290
+chr6_qbl_hap6	4611984
+chr6_dbb_hap3	4610396
+chr17_ctg5_hap1	1680828
+chr4_ctg9_hap1	590426
+chr1_gl000192_random	547496
+chrUn_gl000225	211173
+chr4_gl000194_random	191469
+chr4_gl000193_random	189789
+chr9_gl000200_random	187035
+chrUn_gl000222	186861
+chrUn_gl000212	186858
+chr7_gl000195_random	182896
+chrUn_gl000223	180455
+chrUn_gl000224	179693
+chrUn_gl000219	179198
+chr17_gl000205_random	174588
+chrUn_gl000215	172545
+chrUn_gl000216	172294
+chrUn_gl000217	172149
+chr9_gl000199_random	169874
+chrUn_gl000211	166566
+chrUn_gl000213	164239
+chrUn_gl000220	161802
+chrUn_gl000218	161147
+chr19_gl000209_random	159169
+chrUn_gl000221	155397
+chrUn_gl000214	137718
+chrUn_gl000228	129120
+chrUn_gl000227	128374
+chr1_gl000191_random	106433
+chr19_gl000208_random	92689
+chr9_gl000198_random	90085
+chr17_gl000204_random	81310
+chrUn_gl000233	45941
+chrUn_gl000237	45867
+chrUn_gl000230	43691
+chrUn_gl000242	43523
+chrUn_gl000243	43341
+chrUn_gl000241	42152
+chrUn_gl000236	41934
+chrUn_gl000240	41933
+chr17_gl000206_random	41001
+chrUn_gl000232	40652
+chrUn_gl000234	40531
+chr11_gl000202_random	40103
+chrUn_gl000238	39939
+chrUn_gl000244	39929
+chrUn_gl000248	39786
+chr8_gl000196_random	38914
+chrUn_gl000249	38502
+chrUn_gl000246	38154
+chr17_gl000203_random	37498
+chr8_gl000197_random	37175
+chrUn_gl000245	36651
+chrUn_gl000247	36422
+chr9_gl000201_random	36148
+chrUn_gl000235	34474
+chrUn_gl000239	33824
+chr21_gl000210_random	27682
+chrUn_gl000231	27386
+chrUn_gl000229	19913
+chrM	16571
+chrUn_gl000226	15008
+chr18_gl000207_random	4262
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/hg19_RefSeq_chr1_1-100000.bed	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,7 @@
+chr1	11873	14409	NR_046018	0	+	14409	14409	0	3	354,109,1189,	0,739,1347,
+chr1	14361	29370	NR_024540	0	-	29370	29370	0	11	468,69,152,159,198,136,137,147,99,154,50,	0,608,1434,2245,2496,2871,3244,3553,3906,10376,14959,
+chr1	17368	17436	NR_106918	0	-	17436	17436	0	1	68,	0,
+chr1	17368	17436	NR_107062	0	-	17436	17436	0	1	68,	0,
+chr1	34610	36081	NR_026818	0	-	36081	36081	0	3	564,205,361,	0,666,1110,
+chr1	34610	36081	NR_026820	0	-	36081	36081	0	3	564,205,361,	0,666,1110,
+chr1	69090	70008	NM_001005484	0	+	69090	70008	0	1	918,	0,
Binary file test-data/output.DupRate_plot.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.DupRate_plot.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,14 @@
+pdf('output.DupRate_plot.pdf')
+par(mar=c(5,4,4,5),las=0)
+seq_occ=c(1)
+seq_uniqRead=c(40)
+pos_occ=c(1)
+pos_uniqRead=c(40)
+plot(pos_occ,log10(pos_uniqRead),ylab='Number of Reads (log10)',xlab='Occurrence of read',pch=4,cex=0.8,col='blue',xlim=c(1,500),yaxt='n')
+points(seq_occ,log10(seq_uniqRead),pch=20,cex=0.8,col='red')
+ym=floor(max(log10(pos_uniqRead)))
+legend(300,ym,legend=c('Sequence-based','Mapping-based'),col=c('blue','red'),pch=c(4,20))
+axis(side=2,at=0:ym,labels=0:ym)
+axis(side=4,at=c(log10(pos_uniqRead[1]),log10(pos_uniqRead[2]),log10(pos_uniqRead[3]),log10(pos_uniqRead[4])), labels=c(round(pos_uniqRead[1]*100/sum(pos_uniqRead*pos_occ)),round(pos_uniqRead[2]*100/sum(pos_uniqRead*pos_occ)),round(pos_uniqRead[3]*100/sum(pos_uniqRead*pos_occ)),round(pos_uniqRead[4]*100/sum(pos_uniqRead*pos_occ))))
+mtext(4, text = "Reads %", line = 2)
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.FPKM.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,8 @@
+#chrom	st	end	accession	mRNA_size	gene_strand	Frag_count	FPM	FPKM
+chr1	11873	14409	NR_046018	1652.0	+	1.0	50000.0	30266.3438257
+chr1	14361	29370	NR_024540	1769.0	-	2.0	100000.0	56529.1124929
+chr1	17368	17436	NR_106918	68.0	-	0.0	0.0	0.0
+chr1	17368	17436	NR_107062	68.0	-	0.0	0.0	0.0
+chr1	34610	36081	NR_026818	1130.0	-	0.0	0.0	0.0
+chr1	34610	36081	NR_026820	1130.0	-	0.0	0.0	0.0
+chr1	69090	70008	NM_001005484	918.0	+	0.0	0.0	0.0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.GC.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,19 @@
+GC%	read_count
+60.78	3
+41.18	3
+47.06	5
+56.86	7
+29.41	1
+27.45	2
+37.25	2
+78.43	1
+58.82	1
+50.98	3
+49.02	2
+62.75	1
+68.63	1
+54.90	1
+52.94	3
+35.29	1
+43.14	2
+39.22	1
Binary file test-data/output.GC_plot.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.GC_plot.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,4 @@
+pdf("output.GC_plot.pdf")
+gc=rep(c(60.78,41.18,47.06,56.86,29.41,27.45,37.25,78.43,58.82,50.98,49.02,62.75,68.63,54.90,52.94,35.29,43.14,39.22),times=c(3,3,5,7,1,2,2,1,1,3,2,1,1,1,3,1,2,1))
+hist(gc,probability=T,breaks=100,xlab="GC content (%)",ylab="Density of Reads",border="blue",main="")
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.NVC.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,52 @@
+Position	A	C	G	T	N	X
+0	5	7	18	10	0	0	
+1	6	7	15	8	4	0	
+2	5	9	18	5	3	0	
+3	11	9	14	4	2	0	
+4	5	9	12	14	0	0	
+5	4	11	19	6	0	0	
+6	11	7	12	10	0	0	
+7	9	8	12	9	2	0	
+8	12	9	11	8	0	0	
+9	8	9	8	10	5	0	
+10	9	8	9	14	0	0	
+11	9	6	11	14	0	0	
+12	14	8	12	6	0	0	
+13	10	6	9	15	0	0	
+14	9	9	7	15	0	0	
+15	10	10	9	9	2	0	
+16	8	4	6	14	8	0	
+17	9	9	10	9	3	0	
+18	7	5	11	12	5	0	
+19	12	8	4	10	6	0	
+20	10	6	9	15	0	0	
+21	9	9	15	7	0	0	
+22	14	6	11	9	0	0	
+23	13	11	11	5	0	0	
+24	12	8	7	10	3	0	
+25	9	13	4	8	6	0	
+26	11	16	7	6	0	0	
+27	11	8	13	8	0	0	
+28	13	6	9	12	0	0	
+29	9	9	12	10	0	0	
+30	8	6	15	11	0	0	
+31	7	9	11	13	0	0	
+32	7	8	14	11	0	0	
+33	11	11	10	8	0	0	
+34	6	12	13	9	0	0	
+35	8	17	11	4	0	0	
+36	9	8	7	16	0	0	
+37	11	9	12	8	0	0	
+38	8	9	10	13	0	0	
+39	8	12	11	9	0	0	
+40	12	9	10	9	0	0	
+41	9	13	11	7	0	0	
+42	10	12	9	9	0	0	
+43	7	13	11	9	0	0	
+44	10	12	6	12	0	0	
+45	10	10	9	11	0	0	
+46	7	10	10	13	0	0	
+47	9	9	12	10	0	0	
+48	10	6	14	10	0	0	
+49	8	10	13	9	0	0	
+50	7	8	9	16	0	0	
Binary file test-data/output.NVC_plot.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.NVC_plot.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,17 @@
+position=c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50)
+A_count=c(5,6,5,11,5,4,11,9,12,8,9,9,14,10,9,10,8,9,7,12,10,9,14,13,12,9,11,11,13,9,8,7,7,11,6,8,9,11,8,8,12,9,10,7,10,10,7,9,10,8,7)
+C_count=c(7,7,9,9,9,11,7,8,9,9,8,6,8,6,9,10,4,9,5,8,6,9,6,11,8,13,16,8,6,9,6,9,8,11,12,17,8,9,9,12,9,13,12,13,12,10,10,9,6,10,8)
+G_count=c(18,15,18,14,12,19,12,12,11,8,9,11,12,9,7,9,6,10,11,4,9,15,11,11,7,4,7,13,9,12,15,11,14,10,13,11,7,12,10,11,10,11,9,11,6,9,10,12,14,13,9)
+T_count=c(10,8,5,4,14,6,10,9,8,10,14,14,6,15,15,9,14,9,12,10,15,7,9,5,10,8,6,8,12,10,11,13,11,8,9,4,16,8,13,9,9,7,9,9,12,11,13,10,10,9,16)
+N_count=c(0,4,3,2,0,0,0,2,0,5,0,0,0,0,0,2,8,3,5,6,0,0,0,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
+X_count=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
+total= A_count + C_count + G_count + T_count
+ym=max(A_count/total,C_count/total,G_count/total,T_count/total) + 0.05
+yn=min(A_count/total,C_count/total,G_count/total,T_count/total)
+pdf("output.NVC_plot.pdf")
+plot(position,A_count/total,type="o",pch=20,ylim=c(yn,ym),col="dark green",xlab="Position of Read",ylab="Nucleotide Frequency")
+lines(position,T_count/total,type="o",pch=20,col="red")
+lines(position,G_count/total,type="o",pch=20,col="blue")
+lines(position,C_count/total,type="o",pch=20,col="cyan")
+legend(41,ym,legend=c("A","T","G","C"),col=c("dark green","red","blue","cyan"),lwd=2,pch=20,text.col=c("dark green","red","blue","cyan"))
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.RNA_fragment_size.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,8 @@
+chrom	tx_start	tx_end	symbol	frag_count	frag_mean	frag_median	frag_std
+chr1	11873	14409	NR_046018	1	0	0	0
+chr1	14361	29370	NR_024540	14	66.5	51.0	41.1195990809
+chr1	17368	17436	NR_106918	0	0	0	0
+chr1	17368	17436	NR_107062	0	0	0	0
+chr1	34610	36081	NR_026818	0	0	0	0
+chr1	34610	36081	NR_026820	0	0	0	0
+chr1	69090	70008	NM_001005484	0	0	0	0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.bamstats.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,22 @@
+
+#==================================================
+#All numbers are READ count
+#==================================================
+
+Total records:                          40
+
+QC failed:                              0
+Optical/PCR duplicate:                  0
+Non primary hits                        0
+Unmapped reads:                         0
+mapq < mapq_cut (non-unique):           0
+
+mapq >= mapq_cut (unique):              40
+Read-1:                                 20
+Read-2:                                 20
+Reads map to '+':                       20
+Reads map to '-':                       20
+Non-splice reads:                       36
+Splice reads:                           4
+Reads mapped in proper pairs:           39
+Proper-paired reads map to different chrom:0
Binary file test-data/output.clipping_profile.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.clipping_profile.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,6 @@
+pdf("output.clipping_profile.pdf")
+read_pos=c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50)
+clip_count=c(16.0,12.0,11.0,8.0,7.0,6.0,1.0,1.0,1.0,1.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.0,1.0,1.0,2.0,3.0,4.0,4.0)
+nonclip_count= 40 - clip_count
+plot(read_pos, nonclip_count*100/(clip_count+nonclip_count),col="blue",main="clipping profile",xlab="Position of read",ylab="Non-clipped %",type="b")
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.clipping_profile.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,52 @@
+Position	Clipped_nt	Non_clipped_nt
+0	16.0	24.0
+1	12.0	28.0
+2	11.0	29.0
+3	8.0	32.0
+4	7.0	33.0
+5	6.0	34.0
+6	1.0	39.0
+7	1.0	39.0
+8	1.0	39.0
+9	1.0	39.0
+10	0	40.0
+11	0	40.0
+12	0	40.0
+13	0	40.0
+14	0	40.0
+15	0	40.0
+16	0	40.0
+17	0	40.0
+18	0	40.0
+19	0	40.0
+20	0	40.0
+21	0	40.0
+22	0	40.0
+23	0	40.0
+24	0	40.0
+25	0	40.0
+26	0	40.0
+27	0	40.0
+28	0	40.0
+29	0	40.0
+30	0	40.0
+31	0	40.0
+32	0	40.0
+33	0	40.0
+34	0	40.0
+35	0	40.0
+36	0	40.0
+37	0	40.0
+38	0	40.0
+39	0	40.0
+40	0	40.0
+41	0	40.0
+42	0	40.0
+43	0	40.0
+44	1.0	39.0
+45	1.0	39.0
+46	1.0	39.0
+47	2.0	38.0
+48	3.0	37.0
+49	4.0	36.0
+50	4.0	36.0
Binary file test-data/output.deletion_profile.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.deletion_profile.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,5 @@
+pdf("output.deletion_profile.pdf")
+pos=c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100)
+value=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
+plot(pos,value,type='b', col='blue',xlab="Read position (5'->3')", ylab='Deletion count')
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.deletion_profile.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,102 @@
+read_position	deletion_count
+0	0
+1	0
+2	0
+3	0
+4	0
+5	0
+6	0
+7	0
+8	0
+9	0
+10	0
+11	0
+12	0
+13	0
+14	0
+15	0
+16	0
+17	0
+18	0
+19	0
+20	0
+21	0
+22	0
+23	0
+24	0
+25	0
+26	0
+27	0
+28	0
+29	0
+30	0
+31	0
+32	0
+33	0
+34	0
+35	0
+36	0
+37	0
+38	0
+39	0
+40	0
+41	0
+42	0
+43	0
+44	0
+45	0
+46	0
+47	0
+48	0
+49	0
+50	0
+51	0
+52	0
+53	0
+54	0
+55	0
+56	0
+57	0
+58	0
+59	0
+60	0
+61	0
+62	0
+63	0
+64	0
+65	0
+66	0
+67	0
+68	0
+69	0
+70	0
+71	0
+72	0
+73	0
+74	0
+75	0
+76	0
+77	0
+78	0
+79	0
+80	0
+81	0
+82	0
+83	0
+84	0
+85	0
+86	0
+87	0
+88	0
+89	0
+90	0
+91	0
+92	0
+93	0
+94	0
+95	0
+96	0
+97	0
+98	0
+99	0
+100	0
Binary file test-data/output.geneBodyCoverage.curves.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.geneBodyCoverage.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,8 @@
+pairend_strandspecific_51mer_hg19_chr1_1_100000_bam <- c(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0)
+
+
+pdf("output.geneBodyCoverage.curves.pdf")
+x=1:100
+icolor = colorRampPalette(c("#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f"))(1)
+plot(x,pairend_strandspecific_51mer_hg19_chr1_1_100000_bam,type='l',xlab="Gene body percentile (5'->3')", ylab="Coverage",lwd=0.8,col=icolor[1])
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.geneBodyCoverage.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,2 @@
+Percentile	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	20	21	22	23	24	25	26	27	28	29	30	31	32	33	34	35	36	37	38	39	40	41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	58	59	60	61	62	63	64	65	66	67	68	69	70	71	72	73	74	75	76	77	78	79	80	81	82	83	84	85	86	87	88	89	90	91	92	93	94	95	96	97	98	99	100
+pairend_strandspecific_51mer_hg19_chr1_1_100000_bam	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	0.0	0.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	1.0	1.0	0.0	1.0	1.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	1.0	1.0	0.0	0.0	1.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0
Binary file test-data/output.geneBodyCoverage2.curves.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.geneBodyCoverage2.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,5 @@
+pdf('output.geneBodyCoverage.pdf')
+x=1:100
+y=c(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0)
+plot(x,y/7,xlab="percentile of gene body (5'->3')",ylab='average wigsum',type='s')
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.geneBodyCoverage2.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,101 @@
+percentile	count
+0	0.0
+1	0.0
+2	0.0
+3	0.0
+4	0.0
+5	0.0
+6	0.0
+7	0.0
+8	0.0
+9	0.0
+10	0.0
+11	0.0
+12	0.0
+13	0.0
+14	0.0
+15	0.0
+16	0.0
+17	0.0
+18	0.0
+19	0.0
+20	0.0
+21	0.0
+22	0.0
+23	0.0
+24	0.0
+25	1.0
+26	0.0
+27	0.0
+28	1.0
+29	0.0
+30	0.0
+31	0.0
+32	0.0
+33	0.0
+34	0.0
+35	0.0
+36	0.0
+37	0.0
+38	1.0
+39	1.0
+40	1.0
+41	0.0
+42	0.0
+43	1.0
+44	1.0
+45	1.0
+46	0.0
+47	0.0
+48	0.0
+49	0.0
+50	0.0
+51	0.0
+52	0.0
+53	0.0
+54	0.0
+55	0.0
+56	0.0
+57	0.0
+58	0.0
+59	0.0
+60	0.0
+61	0.0
+62	0.0
+63	0.0
+64	0.0
+65	0.0
+66	0.0
+67	0.0
+68	0.0
+69	0.0
+70	0.0
+71	0.0
+72	0.0
+73	0.0
+74	0.0
+75	0.0
+76	0.0
+77	0.0
+78	0.0
+79	1.0
+80	1.0
+81	1.0
+82	0.0
+83	1.0
+84	1.0
+85	1.0
+86	0.0
+87	0.0
+88	0.0
+89	0.0
+90	0.0
+91	0.0
+92	0.0
+93	0.0
+94	0.0
+95	0.0
+96	0.0
+97	0.0
+98	0.0
+99	0.0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.infer_experiment.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,6 @@
+
+
+This is PairEnd Data
+Fraction of reads failed to determine: 0.0000
+Fraction of reads explained by "1++,1--,2+-,2-+": 1.0000
+Fraction of reads explained by "1+-,1-+,2++,2--": 0.0000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.inner_distance.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,20 @@
+seq.11990047	235	sameTranscript=No,dist=genomic
+seq.14614493	31	sameTranscript=Yes,sameExon=Yes,dist=mRNA
+seq.24018133	2	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.10608403	158	sameTranscript=Yes,sameExon=No,dist=mRNA
+seq.10820209	146	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.1537155	33	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.25274725	17	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.26326595	211	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.28833653	55	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.25049090	61	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.23476912	69	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.28059536	225	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.13270875	200	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.2214586	132	sameTranscript=Yes,nonExonic=Yes,dist=genomic
+seq.31061198	-31	readPairOverlap
+seq.13539256	208	sameTranscript=No,dist=genomic
+seq.13835843	-7	sameTranscript=No,dist=genomic
+seq.5556605	88	sameTranscript=No,dist=genomic
+seq.20367385	17	sameTranscript=No,dist=genomic
+seq.17373919	146394	sameTranscript=No,dist=genomic
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.inner_distance_freq.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,100 @@
+-250	-245	0
+-245	-240	0
+-240	-235	0
+-235	-230	0
+-230	-225	0
+-225	-220	0
+-220	-215	0
+-215	-210	0
+-210	-205	0
+-205	-200	0
+-200	-195	0
+-195	-190	0
+-190	-185	0
+-185	-180	0
+-180	-175	0
+-175	-170	0
+-170	-165	0
+-165	-160	0
+-160	-155	0
+-155	-150	0
+-150	-145	0
+-145	-140	0
+-140	-135	0
+-135	-130	0
+-130	-125	0
+-125	-120	0
+-120	-115	0
+-115	-110	0
+-110	-105	0
+-105	-100	0
+-100	-95	0
+-95	-90	0
+-90	-85	0
+-85	-80	0
+-80	-75	0
+-75	-70	0
+-70	-65	0
+-65	-60	0
+-60	-55	0
+-55	-50	0
+-50	-45	0
+-45	-40	0
+-40	-35	0
+-35	-30	1
+-30	-25	0
+-25	-20	0
+-20	-15	0
+-15	-10	0
+-10	-5	1
+-5	0	0
+0	5	1
+5	10	0
+10	15	0
+15	20	2
+20	25	0
+25	30	0
+30	35	2
+35	40	0
+40	45	0
+45	50	0
+50	55	1
+55	60	0
+60	65	1
+65	70	1
+70	75	0
+75	80	0
+80	85	0
+85	90	1
+90	95	0
+95	100	0
+100	105	0
+105	110	0
+110	115	0
+115	120	0
+120	125	0
+125	130	0
+130	135	1
+135	140	0
+140	145	0
+145	150	1
+150	155	0
+155	160	1
+160	165	0
+165	170	0
+170	175	0
+175	180	0
+180	185	0
+185	190	0
+190	195	0
+195	200	1
+200	205	0
+205	210	1
+210	215	1
+215	220	0
+220	225	1
+225	230	0
+230	235	1
+235	240	0
+240	245	0
+245	250	0
Binary file test-data/output.inner_distance_plot.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.inner_distance_plot.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,11 @@
+out_file = 'output'
+pdf('output.inner_distance_plot.pdf')
+fragsize=rep(c(-248,-243,-238,-233,-228,-223,-218,-213,-208,-203,-198,-193,-188,-183,-178,-173,-168,-163,-158,-153,-148,-143,-138,-133,-128,-123,-118,-113,-108,-103,-98,-93,-88,-83,-78,-73,-68,-63,-58,-53,-48,-43,-38,-33,-28,-23,-18,-13,-8,-3,2,7,12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87,92,97,102,107,112,117,122,127,132,137,142,147,152,157,162,167,172,177,182,187,192,197,202,207,212,217,222,227,232,237,242,247),times=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,2,0,0,2,0,0,0,1,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,1,0,1,0,1,0,0,0))
+frag_sd = sd(fragsize)
+frag_mean = mean(fragsize)
+frag_median = median(fragsize)
+write(x=c("Name","Mean","Median","sd"), sep="	", file=stdout(),ncolumns=4)
+write(c(out_file,frag_mean,frag_median,frag_sd),sep="	", file=stdout(),ncolumns=4)
+hist(fragsize,probability=T,breaks=100,xlab="mRNA insert size (bp)",main=paste(c("Mean=",frag_mean,";","SD=",frag_sd),collapse=""),border="blue")
+lines(density(fragsize,bw=10),col='red')
+dev.off()
Binary file test-data/output.insertion_profile.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.insertion_profile.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,6 @@
+pdf("output.insertion_profile.pdf")
+read_pos=c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50)
+insert_count=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
+noninsert_count= 40 - insert_count
+plot(read_pos, insert_count*100/(insert_count+noninsert_count),col="blue",main="Insertion profile",xlab="Position of read",ylab="Insertion %",type="b")
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.insertion_profile.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,52 @@
+Position	Insert_nt	Non_insert_nt
+0	0	40.0
+1	0	40.0
+2	0	40.0
+3	0	40.0
+4	0	40.0
+5	0	40.0
+6	0	40.0
+7	0	40.0
+8	0	40.0
+9	0	40.0
+10	0	40.0
+11	0	40.0
+12	0	40.0
+13	0	40.0
+14	0	40.0
+15	0	40.0
+16	0	40.0
+17	0	40.0
+18	0	40.0
+19	0	40.0
+20	0	40.0
+21	0	40.0
+22	0	40.0
+23	0	40.0
+24	0	40.0
+25	0	40.0
+26	0	40.0
+27	0	40.0
+28	0	40.0
+29	0	40.0
+30	0	40.0
+31	0	40.0
+32	0	40.0
+33	0	40.0
+34	0	40.0
+35	0	40.0
+36	0	40.0
+37	0	40.0
+38	0	40.0
+39	0	40.0
+40	0	40.0
+41	0	40.0
+42	0	40.0
+43	0	40.0
+44	0	40.0
+45	0	40.0
+46	0	40.0
+47	0	40.0
+48	0	40.0
+49	0	40.0
+50	0	40.0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.junction.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,4 @@
+chrom	intron_st(0-based)	intron_end(1-based)	read_count	annotation
+chr1	17055	17232	1	annotated
+chr1	21768	22000	1	complete_novel
+chr1	12697	13220	1	partial_novel
Binary file test-data/output.junctionSaturation_plot.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.junctionSaturation_plot.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,12 @@
+pdf('output.junctionSaturation_plot.pdf')
+x=c(5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100)
+y=c(0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
+z=c(0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,3)
+w=c(0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,2)
+m=max(0,0,0)
+n=min(0,0,0)
+plot(x,z/1000,xlab='percent of total reads',ylab='Number of splicing junctions (x1000)',type='o',col='blue',ylim=c(n,m))
+points(x,y/1000,type='o',col='red')
+points(x,w/1000,type='o',col='green')
+legend(5,0, legend=c("All junctions","known junctions", "novel junctions"),col=c("blue","red","green"),lwd=1,pch=1)
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.junction_plot.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,8 @@
+pdf("output.splice_events.pdf")
+events=c(25.0,25.0,25.0)
+pie(events,col=c(2,3,4),init.angle=30,angle=c(60,120,150),density=c(70,70,70),main="splicing events",labels=c("partial_novel 25%","complete_novel 25%","known 25%"))
+dev.off()
+pdf("output.splice_junction.pdf")
+junction=c(33.3333333333,33.3333333333,33.3333333333)
+pie(junction,col=c(2,3,4),init.angle=30,angle=c(60,120,150),density=c(70,70,70),main="splicing junctions",labels=c("partial_novel 33%","complete_novel 33%","known 33%"))
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.mismatch_profile.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,1 @@
+Total reads used: 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.pos.DupRate.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,2 @@
+Occurrence	UniqReadNumber
+1	40
Binary file test-data/output.qual.boxplot.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.qual.heatmap.pdf	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,62 @@
+pdf('output.qual.boxplot.pdf')
+p0<-rep(c(33,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(119,2,3,2,5,6,8,6,2,3,11,16,6,26,11,13,25,39,7,40,33,33,58,51,116,87,55,256,54,323,263,140,812,654,1119)/1000)
+p1<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(105,2,2,2,4,8,6,21,3,1,1,8,13,13,16,16,14,29,32,18,50,30,57,66,73,97,105,60,253,57,330,270,142,801,630,1069)/1000)
+p2<-rep(c(33,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(109,1,1,3,2,7,11,14,13,2,4,3,8,14,21,27,17,14,26,39,11,37,28,74,64,55,86,106,62,234,56,326,269,147,787,645,1081)/1000)
+p3<-rep(c(33,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(108,1,6,4,2,9,12,7,3,3,9,14,13,24,20,8,24,46,14,43,28,59,67,75,88,107,51,285,56,293,239,139,802,660,1084)/1000)
+p4<-rep(c(33,35,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(97,1,1,3,9,8,11,5,4,2,4,10,16,19,24,7,8,35,43,19,49,29,51,67,51,93,107,43,306,65,345,223,123,789,661,1075)/1000)
+p5<-rep(c(33,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(96,3,2,5,11,6,8,2,7,2,12,17,15,16,12,11,25,31,12,32,36,59,70,69,74,99,56,277,59,343,249,111,845,650,1081)/1000)
+p6<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(86,2,4,2,6,12,8,10,1,7,7,9,11,14,26,14,9,14,53,17,34,41,55,71,76,76,117,62,238,62,339,229,155,798,607,1131)/1000)
+p7<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(76,1,4,4,6,11,9,13,5,5,6,6,17,19,20,17,8,19,45,15,30,33,60,68,58,76,99,59,291,54,349,251,129,818,602,1120)/1000)
+p8<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(74,1,2,3,1,5,6,6,7,7,2,4,11,11,16,24,13,9,24,48,19,33,39,63,67,68,78,104,66,284,62,329,240,147,749,649,1132)/1000)
+p9<-rep(c(33,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(98,1,2,2,6,11,19,10,5,3,8,18,19,24,14,5,18,53,21,41,39,56,79,64,70,93,57,291,42,334,259,143,795,616,1087)/1000)
+p10<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(71,3,3,4,3,5,6,7,2,3,5,13,14,6,17,21,12,27,40,16,34,39,46,64,78,103,103,63,279,37,314,239,118,805,674,1129)/1000)
+p11<-rep(c(33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(76,1,4,3,3,7,10,11,8,5,6,3,12,13,18,21,16,18,21,46,21,32,41,77,56,77,103,105,54,269,40,320,247,144,796,621,1098)/1000)
+p12<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(87,3,2,1,7,12,8,6,5,13,8,11,9,16,23,13,14,22,40,21,53,48,51,59,77,84,126,75,282,48,306,254,151,808,586,1074)/1000)
+p13<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(76,5,1,3,6,3,7,8,4,3,10,12,14,13,23,12,19,25,43,17,52,42,63,57,92,91,114,61,281,45,342,256,132,812,586,1073)/1000)
+p14<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(81,1,5,4,4,10,11,9,3,5,5,6,18,21,29,26,14,27,51,17,54,47,51,65,84,84,118,66,291,46,316,244,149,782,579,1080)/1000)
+p15<-rep(c(33,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(87,1,2,5,2,10,17,12,9,7,2,10,10,12,20,18,21,27,50,17,50,54,42,82,57,84,103,54,285,41,342,265,115,822,582,1085)/1000)
+p16<-rep(c(33,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(118,4,3,7,7,11,10,5,6,8,11,18,19,30,34,13,34,47,14,62,49,55,83,82,96,101,51,283,45,346,249,152,843,521,985)/1000)
+p17<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(73,2,5,6,7,9,11,7,5,4,11,19,13,15,33,18,17,42,57,25,46,65,67,94,68,93,117,67,279,53,306,295,132,844,504,993)/1000)
+p18<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(72,1,2,3,5,4,16,13,14,2,8,2,18,19,27,37,27,18,29,57,21,47,57,62,87,81,89,111,57,293,49,319,270,142,858,495,990)/1000)
+p19<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(78,1,1,5,3,3,13,10,13,5,7,5,14,15,24,30,23,23,24,57,19,72,49,70,70,72,91,124,60,298,52,347,270,147,841,486,980)/1000)
+p20<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(71,4,5,3,10,9,10,12,5,9,6,23,14,19,33,27,21,34,60,16,47,57,55,82,84,109,117,44,305,45,335,265,146,856,510,954)/1000)
+p21<-rep(c(33,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(80,5,4,5,4,6,10,7,4,11,14,19,18,32,25,29,32,75,19,58,56,66,81,79,102,133,52,332,44,306,260,152,879,486,917)/1000)
+p22<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(80,2,5,2,11,11,13,4,4,5,8,12,15,21,34,27,18,44,58,26,72,62,72,90,84,97,137,51,324,54,332,254,143,857,492,881)/1000)
+p23<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(78,3,4,1,9,9,3,8,9,9,5,12,20,19,37,30,23,38,69,29,64,51,71,95,92,99,133,52,320,51,340,275,152,868,467,856)/1000)
+p24<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(73,1,2,3,6,14,19,7,3,3,10,24,15,26,38,27,15,34,71,17,62,72,75,86,84,108,128,65,304,41,356,239,139,864,494,876)/1000)
+p25<-rep(c(33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(100,1,1,6,3,6,14,19,11,9,7,11,5,8,25,21,35,16,18,39,61,19,65,42,62,91,83,80,105,38,318,50,372,289,135,847,504,884)/1000)
+p26<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(72,1,1,4,2,12,10,17,11,5,3,3,21,25,29,34,34,19,38,55,20,55,59,82,96,99,106,133,45,299,71,339,265,157,822,474,882)/1000)
+p27<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(73,1,2,5,3,17,16,6,5,7,11,7,16,14,30,31,16,45,71,29,50,62,72,78,77,107,132,62,273,47,366,277,161,892,462,877)/1000)
+p28<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(91,3,2,2,7,10,6,9,9,6,11,15,17,19,33,20,10,30,54,20,68,48,73,84,72,114,131,60,321,60,356,270,159,874,496,840)/1000)
+p29<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(92,1,5,5,4,6,8,7,10,4,7,7,16,26,24,33,20,22,36,49,15,53,65,71,79,80,112,127,63,320,49,359,292,141,837,455,900)/1000)
+p30<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(105,1,2,5,4,2,15,8,13,8,6,7,19,24,21,30,22,17,35,53,13,52,61,45,93,74,87,120,60,302,41,331,272,131,877,513,931)/1000)
+p31<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(117,3,5,3,11,23,24,10,5,7,6,8,13,12,40,18,18,40,41,12,45,57,72,86,71,75,125,68,299,55,302,264,154,874,464,973)/1000)
+p32<-rep(c(33,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(120,1,7,3,4,9,13,19,8,5,3,10,17,25,13,19,18,23,33,49,25,41,51,72,74,56,95,112,60,291,58,281,267,145,916,463,993)/1000)
+p33<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(89,1,4,9,13,7,8,7,8,6,8,8,18,20,12,34,26,14,31,50,17,45,65,58,68,77,84,110,66,289,54,284,282,164,871,489,1003)/1000)
+p34<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(162,1,3,4,4,14,15,24,17,2,6,9,16,15,20,37,20,12,34,49,12,42,50,54,66,62,81,121,56,265,50,292,258,127,878,506,1015)/1000)
+p35<-rep(c(33,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(79,5,1,3,3,13,8,6,7,11,15,19,11,17,25,16,34,49,16,37,45,69,72,76,79,101,48,303,38,326,254,140,811,619,1043)/1000)
+p36<-rep(c(33,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(78,3,4,3,8,5,6,8,6,5,13,18,18,32,19,22,39,43,17,39,45,68,77,74,69,118,47,272,47,332,262,139,833,562,1068)/1000)
+p37<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(96,1,3,1,5,5,6,6,8,4,7,3,12,9,18,35,15,24,27,57,20,40,53,70,81,89,91,117,46,262,44,298,251,130,817,588,1059)/1000)
+p38<-rep(c(33,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(102,5,5,4,10,11,12,3,3,7,8,18,15,22,20,17,20,50,21,46,43,71,70,80,91,110,51,239,34,339,258,119,820,614,1058)/1000)
+p39<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(100,3,5,3,6,10,12,12,5,5,10,6,21,18,28,14,16,33,38,18,45,56,58,71,65,79,109,57,253,47,310,263,129,854,616,1017)/1000)
+p40<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(97,1,4,3,1,5,14,7,11,2,5,2,9,6,19,21,18,21,30,37,22,37,64,40,69,53,89,104,66,281,42,355,233,137,771,615,1095)/1000)
+p41<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(130,5,2,6,10,10,19,20,5,5,4,12,16,17,28,14,12,25,42,16,42,39,57,61,73,84,110,49,261,48,315,254,125,761,643,1028)/1000)
+p42<-rep(c(33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(108,2,1,2,1,5,4,12,13,7,6,7,3,6,14,19,20,22,15,22,52,14,50,45,57,67,72,78,119,51,272,45,284,226,127,831,604,1054)/1000)
+p43<-rep(c(33,35,36,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(124,2,2,1,2,5,13,17,10,1,6,4,14,11,19,31,14,14,24,30,12,42,41,54,64,74,82,112,68,250,49,308,261,142,775,557,1060)/1000)
+p44<-rep(c(33,35,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(106,1,1,4,4,10,9,9,7,9,6,8,8,16,21,12,18,24,50,14,43,43,56,55,100,87,109,51,261,51,308,217,139,759,562,1041)/1000)
+p45<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(120,3,3,2,9,7,12,9,6,4,1,10,9,15,26,11,16,22,35,16,26,45,50,60,56,67,74,62,247,50,282,243,123,747,618,1061)/1000)
+p46<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(116,1,2,3,2,10,15,10,1,2,6,6,10,9,13,8,14,29,26,12,31,42,59,41,57,88,92,58,257,43,304,236,133,707,612,1016)/1000)
+p47<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(130,1,2,4,2,6,8,18,21,3,5,5,7,12,15,17,7,7,23,43,9,28,32,44,42,56,68,83,54,225,38,289,181,133,713,594,991)/1000)
+p48<-rep(c(33,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(105,1,5,2,6,9,10,23,1,5,3,3,9,9,30,13,7,18,27,12,28,24,49,42,63,75,81,45,226,43,274,217,147,676,571,925)/1000)
+p49<-rep(c(33,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(99,3,1,3,5,5,16,3,3,6,7,4,13,15,11,3,10,34,16,20,37,46,41,52,66,85,35,201,45,253,201,119,685,497,913)/1000)
+p50<-rep(c(33,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(82,2,3,5,3,4,5,13,9,5,11,14,3,35,17,21,41,34,67,67,31,184,49,241,167,93,639,515,797)/1000)
+boxplot(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,xlab="Position of Read(5'->3')",ylab="Phred Quality Score",outline=F)
+dev.off()
+
+
+pdf('output.qual.heatmap.pdf')
+qual=c(119,0,0,0,2,3,2,5,6,8,6,2,0,3,11,16,6,26,11,13,25,39,7,40,33,33,58,51,116,87,55,256,54,323,263,140,812,654,1119,105,0,0,0,2,2,2,4,8,6,21,3,1,1,8,13,13,16,16,14,29,32,18,50,30,57,66,73,97,105,60,253,57,330,270,142,801,630,1069,109,0,1,0,1,3,2,7,11,14,13,2,4,3,8,14,21,27,17,14,26,39,11,37,28,74,64,55,86,106,62,234,56,326,269,147,787,645,1081,108,0,0,0,1,6,4,2,9,12,7,0,3,3,9,14,13,24,20,8,24,46,14,43,28,59,67,75,88,107,51,285,56,293,239,139,802,660,1084,97,0,1,0,1,0,3,9,8,11,5,4,2,4,10,16,19,24,7,8,35,43,19,49,29,51,67,51,93,107,43,306,65,345,223,123,789,661,1075,96,0,0,0,3,0,2,5,11,6,8,2,7,2,12,17,15,16,12,11,25,31,12,32,36,59,70,69,74,99,56,277,59,343,249,111,845,650,1081,86,0,0,0,2,4,2,6,12,8,10,1,7,7,9,11,14,26,14,9,14,53,17,34,41,55,71,76,76,117,62,238,62,339,229,155,798,607,1131,76,0,0,0,1,4,4,6,11,9,13,5,5,6,6,17,19,20,17,8,19,45,15,30,33,60,68,58,76,99,59,291,54,349,251,129,818,602,1120,74,0,0,1,2,3,1,5,6,6,7,7,2,4,11,11,16,24,13,9,24,48,19,33,39,63,67,68,78,104,66,284,62,329,240,147,749,649,1132,98,0,0,0,1,2,2,6,11,19,10,0,5,3,8,18,19,24,14,5,18,53,21,41,39,56,79,64,70,93,57,291,42,334,259,143,795,616,1087,71,0,0,0,3,3,4,3,5,6,7,2,3,5,13,14,6,17,21,12,27,40,16,34,39,46,64,78,103,103,63,279,37,314,239,118,805,674,1129,76,1,0,0,4,3,3,7,10,11,8,5,6,3,12,13,18,21,16,18,21,46,21,32,41,77,56,77,103,105,54,269,40,320,247,144,796,621,1098,87,0,0,0,3,2,1,7,12,8,6,5,13,8,11,9,16,23,13,14,22,40,21,53,48,51,59,77,84,126,75,282,48,306,254,151,808,586,1074,76,0,0,0,5,1,3,6,3,7,8,4,3,10,12,14,13,23,12,19,25,43,17,52,42,63,57,92,91,114,61,281,45,342,256,132,812,586,1073,81,0,0,0,1,5,4,4,10,11,9,3,5,5,6,18,21,29,26,14,27,51,17,54,47,51,65,84,84,118,66,291,46,316,244,149,782,579,1080,87,0,0,1,2,5,2,10,17,12,9,0,7,2,10,10,12,20,18,21,27,50,17,50,54,42,82,57,84,103,54,285,41,342,265,115,822,582,1085,118,0,0,0,0,4,3,7,7,11,10,5,6,8,11,18,19,30,34,13,34,47,14,62,49,55,83,82,96,101,51,283,45,346,249,152,843,521,985,73,0,0,0,2,5,6,7,9,11,7,5,4,11,19,13,15,33,18,17,42,57,25,46,65,67,94,68,93,117,67,279,53,306,295,132,844,504,993,72,0,0,1,2,3,5,4,16,13,14,2,8,2,18,19,27,37,27,18,29,57,21,47,57,62,87,81,89,111,57,293,49,319,270,142,858,495,990,78,0,0,1,1,5,3,3,13,10,13,5,7,5,14,15,24,30,23,23,24,57,19,72,49,70,70,72,91,124,60,298,52,347,270,147,841,486,980,71,0,0,0,4,5,3,10,9,10,12,5,9,6,23,14,19,33,27,21,34,60,16,47,57,55,82,84,109,117,44,305,45,335,265,146,856,510,954,80,0,0,0,5,4,5,4,6,10,7,4,0,11,14,19,18,32,25,29,32,75,19,58,56,66,81,79,102,133,52,332,44,306,260,152,879,486,917,80,0,0,0,2,5,2,11,11,13,4,4,5,8,12,15,21,34,27,18,44,58,26,72,62,72,90,84,97,137,51,324,54,332,254,143,857,492,881,78,0,0,0,3,4,1,9,9,3,8,9,9,5,12,20,19,37,30,23,38,69,29,64,51,71,95,92,99,133,52,320,51,340,275,152,868,467,856,73,0,0,0,1,2,3,6,14,19,7,3,3,10,24,15,26,38,27,15,34,71,17,62,72,75,86,84,108,128,65,304,41,356,239,139,864,494,876,100,0,1,1,6,3,6,14,19,11,9,7,11,5,8,25,21,35,16,18,39,61,19,65,42,62,91,83,80,105,38,318,50,372,289,135,847,504,884,72,0,0,1,1,4,2,12,10,17,11,5,3,3,21,25,29,34,34,19,38,55,20,55,59,82,96,99,106,133,45,299,71,339,265,157,822,474,882,73,0,0,0,1,2,5,3,17,16,6,5,7,11,7,16,14,30,31,16,45,71,29,50,62,72,78,77,107,132,62,273,47,366,277,161,892,462,877,91,0,0,0,3,2,2,7,10,6,9,9,6,11,15,17,19,33,20,10,30,54,20,68,48,73,84,72,114,131,60,321,60,356,270,159,874,496,840,92,0,0,1,5,5,4,6,8,7,10,4,7,7,16,26,24,33,20,22,36,49,15,53,65,71,79,80,112,127,63,320,49,359,292,141,837,455,900,105,0,0,1,2,5,4,2,15,8,13,8,6,7,19,24,21,30,22,17,35,53,13,52,61,45,93,74,87,120,60,302,41,331,272,131,877,513,931,117,0,0,0,3,5,3,11,23,24,10,5,7,6,8,13,12,40,18,18,40,41,12,45,57,72,86,71,75,125,68,299,55,302,264,154,874,464,973,120,0,1,0,7,3,4,9,13,19,8,5,3,10,17,25,13,19,18,23,33,49,25,41,51,72,74,56,95,112,60,291,58,281,267,145,916,463,993,89,0,0,1,4,9,13,7,8,7,8,6,8,8,18,20,12,34,26,14,31,50,17,45,65,58,68,77,84,110,66,289,54,284,282,164,871,489,1003,162,0,0,1,3,4,4,14,15,24,17,2,6,9,16,15,20,37,20,12,34,49,12,42,50,54,66,62,81,121,56,265,50,292,258,127,878,506,1015,79,0,0,0,5,1,3,3,13,8,6,0,7,11,15,19,11,17,25,16,34,49,16,37,45,69,72,76,79,101,48,303,38,326,254,140,811,619,1043,78,0,0,0,3,0,4,3,8,5,6,8,6,5,13,18,18,32,19,22,39,43,17,39,45,68,77,74,69,118,47,272,47,332,262,139,833,562,1068,96,0,0,1,3,1,5,5,6,6,8,4,7,3,12,9,18,35,15,24,27,57,20,40,53,70,81,89,91,117,46,262,44,298,251,130,817,588,1059,102,0,0,0,5,0,5,4,10,11,12,3,3,7,8,18,15,22,20,17,20,50,21,46,43,71,70,80,91,110,51,239,34,339,258,119,820,614,1058,100,0,0,0,3,5,3,6,10,12,12,5,5,10,6,21,18,28,14,16,33,38,18,45,56,58,71,65,79,109,57,253,47,310,263,129,854,616,1017,97,0,0,1,4,3,1,5,14,7,11,2,5,2,9,6,19,21,18,21,30,37,22,37,64,40,69,53,89,104,66,281,42,355,233,137,771,615,1095,130,0,0,0,5,2,6,10,10,19,20,5,5,4,12,16,17,28,14,12,25,42,16,42,39,57,61,73,84,110,49,261,48,315,254,125,761,643,1028,108,0,2,1,2,1,5,4,12,13,7,6,7,3,6,14,19,20,22,15,22,52,14,50,45,57,67,72,78,119,51,272,45,284,226,127,831,604,1054,124,0,2,2,0,1,2,5,13,17,10,1,6,4,14,11,19,31,14,14,24,30,12,42,41,54,64,74,82,112,68,250,49,308,261,142,775,557,1060,106,0,1,0,1,4,4,10,9,9,7,0,9,6,8,8,16,21,12,18,24,50,14,43,43,56,55,100,87,109,51,261,51,308,217,139,759,562,1041,120,0,0,0,3,3,2,9,7,12,9,6,4,1,10,9,15,26,11,16,22,35,16,26,45,50,60,56,67,74,62,247,50,282,243,123,747,618,1061,116,0,0,0,1,2,3,2,10,15,10,1,2,6,6,10,9,13,8,14,29,26,12,31,42,59,41,57,88,92,58,257,43,304,236,133,707,612,1016,130,0,0,1,2,4,2,6,8,18,21,3,5,5,7,12,15,17,7,7,23,43,9,28,32,44,42,56,68,83,54,225,38,289,181,133,713,594,991,105,0,1,0,0,5,2,6,9,10,23,1,5,3,3,9,9,30,13,7,18,27,12,28,24,49,42,63,75,81,45,226,43,274,217,147,676,571,925,99,0,0,0,0,3,1,3,5,5,16,3,3,6,7,4,13,15,11,3,10,34,16,20,37,46,41,52,66,85,35,201,45,253,201,119,685,497,913,82,0,0,0,0,0,0,0,0,0,2,0,3,5,3,4,5,13,9,5,11,14,3,35,17,21,41,34,67,67,31,184,49,241,167,93,639,515,797)
+mat=matrix(qual,ncol=51,byrow=F)
+Lab.palette <- colorRampPalette(c("blue", "orange", "red3","red2","red1","red"), space = "rgb",interpolate=c('spline'))
+heatmap(mat,Rowv=NA,Colv=NA,xlab="Position of Read",ylab="Phred Quality Score",labRow=seq(from=33,to=71),col = Lab.palette(256),scale="none" )
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.qual.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,62 @@
+pdf('output.qual.boxplot.pdf')
+p0<-rep(c(33,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(119,2,3,2,5,6,8,6,2,3,11,16,6,26,11,13,25,39,7,40,33,33,58,51,116,87,55,256,54,323,263,140,812,654,1119)/1000)
+p1<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(105,2,2,2,4,8,6,21,3,1,1,8,13,13,16,16,14,29,32,18,50,30,57,66,73,97,105,60,253,57,330,270,142,801,630,1069)/1000)
+p2<-rep(c(33,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(109,1,1,3,2,7,11,14,13,2,4,3,8,14,21,27,17,14,26,39,11,37,28,74,64,55,86,106,62,234,56,326,269,147,787,645,1081)/1000)
+p3<-rep(c(33,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(108,1,6,4,2,9,12,7,3,3,9,14,13,24,20,8,24,46,14,43,28,59,67,75,88,107,51,285,56,293,239,139,802,660,1084)/1000)
+p4<-rep(c(33,35,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(97,1,1,3,9,8,11,5,4,2,4,10,16,19,24,7,8,35,43,19,49,29,51,67,51,93,107,43,306,65,345,223,123,789,661,1075)/1000)
+p5<-rep(c(33,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(96,3,2,5,11,6,8,2,7,2,12,17,15,16,12,11,25,31,12,32,36,59,70,69,74,99,56,277,59,343,249,111,845,650,1081)/1000)
+p6<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(86,2,4,2,6,12,8,10,1,7,7,9,11,14,26,14,9,14,53,17,34,41,55,71,76,76,117,62,238,62,339,229,155,798,607,1131)/1000)
+p7<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(76,1,4,4,6,11,9,13,5,5,6,6,17,19,20,17,8,19,45,15,30,33,60,68,58,76,99,59,291,54,349,251,129,818,602,1120)/1000)
+p8<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(74,1,2,3,1,5,6,6,7,7,2,4,11,11,16,24,13,9,24,48,19,33,39,63,67,68,78,104,66,284,62,329,240,147,749,649,1132)/1000)
+p9<-rep(c(33,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(98,1,2,2,6,11,19,10,5,3,8,18,19,24,14,5,18,53,21,41,39,56,79,64,70,93,57,291,42,334,259,143,795,616,1087)/1000)
+p10<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(71,3,3,4,3,5,6,7,2,3,5,13,14,6,17,21,12,27,40,16,34,39,46,64,78,103,103,63,279,37,314,239,118,805,674,1129)/1000)
+p11<-rep(c(33,34,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(76,1,4,3,3,7,10,11,8,5,6,3,12,13,18,21,16,18,21,46,21,32,41,77,56,77,103,105,54,269,40,320,247,144,796,621,1098)/1000)
+p12<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(87,3,2,1,7,12,8,6,5,13,8,11,9,16,23,13,14,22,40,21,53,48,51,59,77,84,126,75,282,48,306,254,151,808,586,1074)/1000)
+p13<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(76,5,1,3,6,3,7,8,4,3,10,12,14,13,23,12,19,25,43,17,52,42,63,57,92,91,114,61,281,45,342,256,132,812,586,1073)/1000)
+p14<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(81,1,5,4,4,10,11,9,3,5,5,6,18,21,29,26,14,27,51,17,54,47,51,65,84,84,118,66,291,46,316,244,149,782,579,1080)/1000)
+p15<-rep(c(33,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(87,1,2,5,2,10,17,12,9,7,2,10,10,12,20,18,21,27,50,17,50,54,42,82,57,84,103,54,285,41,342,265,115,822,582,1085)/1000)
+p16<-rep(c(33,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(118,4,3,7,7,11,10,5,6,8,11,18,19,30,34,13,34,47,14,62,49,55,83,82,96,101,51,283,45,346,249,152,843,521,985)/1000)
+p17<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(73,2,5,6,7,9,11,7,5,4,11,19,13,15,33,18,17,42,57,25,46,65,67,94,68,93,117,67,279,53,306,295,132,844,504,993)/1000)
+p18<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(72,1,2,3,5,4,16,13,14,2,8,2,18,19,27,37,27,18,29,57,21,47,57,62,87,81,89,111,57,293,49,319,270,142,858,495,990)/1000)
+p19<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(78,1,1,5,3,3,13,10,13,5,7,5,14,15,24,30,23,23,24,57,19,72,49,70,70,72,91,124,60,298,52,347,270,147,841,486,980)/1000)
+p20<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(71,4,5,3,10,9,10,12,5,9,6,23,14,19,33,27,21,34,60,16,47,57,55,82,84,109,117,44,305,45,335,265,146,856,510,954)/1000)
+p21<-rep(c(33,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(80,5,4,5,4,6,10,7,4,11,14,19,18,32,25,29,32,75,19,58,56,66,81,79,102,133,52,332,44,306,260,152,879,486,917)/1000)
+p22<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(80,2,5,2,11,11,13,4,4,5,8,12,15,21,34,27,18,44,58,26,72,62,72,90,84,97,137,51,324,54,332,254,143,857,492,881)/1000)
+p23<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(78,3,4,1,9,9,3,8,9,9,5,12,20,19,37,30,23,38,69,29,64,51,71,95,92,99,133,52,320,51,340,275,152,868,467,856)/1000)
+p24<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(73,1,2,3,6,14,19,7,3,3,10,24,15,26,38,27,15,34,71,17,62,72,75,86,84,108,128,65,304,41,356,239,139,864,494,876)/1000)
+p25<-rep(c(33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(100,1,1,6,3,6,14,19,11,9,7,11,5,8,25,21,35,16,18,39,61,19,65,42,62,91,83,80,105,38,318,50,372,289,135,847,504,884)/1000)
+p26<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(72,1,1,4,2,12,10,17,11,5,3,3,21,25,29,34,34,19,38,55,20,55,59,82,96,99,106,133,45,299,71,339,265,157,822,474,882)/1000)
+p27<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(73,1,2,5,3,17,16,6,5,7,11,7,16,14,30,31,16,45,71,29,50,62,72,78,77,107,132,62,273,47,366,277,161,892,462,877)/1000)
+p28<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(91,3,2,2,7,10,6,9,9,6,11,15,17,19,33,20,10,30,54,20,68,48,73,84,72,114,131,60,321,60,356,270,159,874,496,840)/1000)
+p29<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(92,1,5,5,4,6,8,7,10,4,7,7,16,26,24,33,20,22,36,49,15,53,65,71,79,80,112,127,63,320,49,359,292,141,837,455,900)/1000)
+p30<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(105,1,2,5,4,2,15,8,13,8,6,7,19,24,21,30,22,17,35,53,13,52,61,45,93,74,87,120,60,302,41,331,272,131,877,513,931)/1000)
+p31<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(117,3,5,3,11,23,24,10,5,7,6,8,13,12,40,18,18,40,41,12,45,57,72,86,71,75,125,68,299,55,302,264,154,874,464,973)/1000)
+p32<-rep(c(33,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(120,1,7,3,4,9,13,19,8,5,3,10,17,25,13,19,18,23,33,49,25,41,51,72,74,56,95,112,60,291,58,281,267,145,916,463,993)/1000)
+p33<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(89,1,4,9,13,7,8,7,8,6,8,8,18,20,12,34,26,14,31,50,17,45,65,58,68,77,84,110,66,289,54,284,282,164,871,489,1003)/1000)
+p34<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(162,1,3,4,4,14,15,24,17,2,6,9,16,15,20,37,20,12,34,49,12,42,50,54,66,62,81,121,56,265,50,292,258,127,878,506,1015)/1000)
+p35<-rep(c(33,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(79,5,1,3,3,13,8,6,7,11,15,19,11,17,25,16,34,49,16,37,45,69,72,76,79,101,48,303,38,326,254,140,811,619,1043)/1000)
+p36<-rep(c(33,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(78,3,4,3,8,5,6,8,6,5,13,18,18,32,19,22,39,43,17,39,45,68,77,74,69,118,47,272,47,332,262,139,833,562,1068)/1000)
+p37<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(96,1,3,1,5,5,6,6,8,4,7,3,12,9,18,35,15,24,27,57,20,40,53,70,81,89,91,117,46,262,44,298,251,130,817,588,1059)/1000)
+p38<-rep(c(33,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(102,5,5,4,10,11,12,3,3,7,8,18,15,22,20,17,20,50,21,46,43,71,70,80,91,110,51,239,34,339,258,119,820,614,1058)/1000)
+p39<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(100,3,5,3,6,10,12,12,5,5,10,6,21,18,28,14,16,33,38,18,45,56,58,71,65,79,109,57,253,47,310,263,129,854,616,1017)/1000)
+p40<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(97,1,4,3,1,5,14,7,11,2,5,2,9,6,19,21,18,21,30,37,22,37,64,40,69,53,89,104,66,281,42,355,233,137,771,615,1095)/1000)
+p41<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(130,5,2,6,10,10,19,20,5,5,4,12,16,17,28,14,12,25,42,16,42,39,57,61,73,84,110,49,261,48,315,254,125,761,643,1028)/1000)
+p42<-rep(c(33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(108,2,1,2,1,5,4,12,13,7,6,7,3,6,14,19,20,22,15,22,52,14,50,45,57,67,72,78,119,51,272,45,284,226,127,831,604,1054)/1000)
+p43<-rep(c(33,35,36,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(124,2,2,1,2,5,13,17,10,1,6,4,14,11,19,31,14,14,24,30,12,42,41,54,64,74,82,112,68,250,49,308,261,142,775,557,1060)/1000)
+p44<-rep(c(33,35,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(106,1,1,4,4,10,9,9,7,9,6,8,8,16,21,12,18,24,50,14,43,43,56,55,100,87,109,51,261,51,308,217,139,759,562,1041)/1000)
+p45<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(120,3,3,2,9,7,12,9,6,4,1,10,9,15,26,11,16,22,35,16,26,45,50,60,56,67,74,62,247,50,282,243,123,747,618,1061)/1000)
+p46<-rep(c(33,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(116,1,2,3,2,10,15,10,1,2,6,6,10,9,13,8,14,29,26,12,31,42,59,41,57,88,92,58,257,43,304,236,133,707,612,1016)/1000)
+p47<-rep(c(33,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(130,1,2,4,2,6,8,18,21,3,5,5,7,12,15,17,7,7,23,43,9,28,32,44,42,56,68,83,54,225,38,289,181,133,713,594,991)/1000)
+p48<-rep(c(33,35,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(105,1,5,2,6,9,10,23,1,5,3,3,9,9,30,13,7,18,27,12,28,24,49,42,63,75,81,45,226,43,274,217,147,676,571,925)/1000)
+p49<-rep(c(33,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(99,3,1,3,5,5,16,3,3,6,7,4,13,15,11,3,10,34,16,20,37,46,41,52,66,85,35,201,45,253,201,119,685,497,913)/1000)
+p50<-rep(c(33,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71),times=c(82,2,3,5,3,4,5,13,9,5,11,14,3,35,17,21,41,34,67,67,31,184,49,241,167,93,639,515,797)/1000)
+boxplot(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,xlab="Position of Read(5'->3')",ylab="Phred Quality Score",outline=F)
+dev.off()
+
+
+pdf('output.qual.heatmap.pdf')
+qual=c(119,0,0,0,2,3,2,5,6,8,6,2,0,3,11,16,6,26,11,13,25,39,7,40,33,33,58,51,116,87,55,256,54,323,263,140,812,654,1119,105,0,0,0,2,2,2,4,8,6,21,3,1,1,8,13,13,16,16,14,29,32,18,50,30,57,66,73,97,105,60,253,57,330,270,142,801,630,1069,109,0,1,0,1,3,2,7,11,14,13,2,4,3,8,14,21,27,17,14,26,39,11,37,28,74,64,55,86,106,62,234,56,326,269,147,787,645,1081,108,0,0,0,1,6,4,2,9,12,7,0,3,3,9,14,13,24,20,8,24,46,14,43,28,59,67,75,88,107,51,285,56,293,239,139,802,660,1084,97,0,1,0,1,0,3,9,8,11,5,4,2,4,10,16,19,24,7,8,35,43,19,49,29,51,67,51,93,107,43,306,65,345,223,123,789,661,1075,96,0,0,0,3,0,2,5,11,6,8,2,7,2,12,17,15,16,12,11,25,31,12,32,36,59,70,69,74,99,56,277,59,343,249,111,845,650,1081,86,0,0,0,2,4,2,6,12,8,10,1,7,7,9,11,14,26,14,9,14,53,17,34,41,55,71,76,76,117,62,238,62,339,229,155,798,607,1131,76,0,0,0,1,4,4,6,11,9,13,5,5,6,6,17,19,20,17,8,19,45,15,30,33,60,68,58,76,99,59,291,54,349,251,129,818,602,1120,74,0,0,1,2,3,1,5,6,6,7,7,2,4,11,11,16,24,13,9,24,48,19,33,39,63,67,68,78,104,66,284,62,329,240,147,749,649,1132,98,0,0,0,1,2,2,6,11,19,10,0,5,3,8,18,19,24,14,5,18,53,21,41,39,56,79,64,70,93,57,291,42,334,259,143,795,616,1087,71,0,0,0,3,3,4,3,5,6,7,2,3,5,13,14,6,17,21,12,27,40,16,34,39,46,64,78,103,103,63,279,37,314,239,118,805,674,1129,76,1,0,0,4,3,3,7,10,11,8,5,6,3,12,13,18,21,16,18,21,46,21,32,41,77,56,77,103,105,54,269,40,320,247,144,796,621,1098,87,0,0,0,3,2,1,7,12,8,6,5,13,8,11,9,16,23,13,14,22,40,21,53,48,51,59,77,84,126,75,282,48,306,254,151,808,586,1074,76,0,0,0,5,1,3,6,3,7,8,4,3,10,12,14,13,23,12,19,25,43,17,52,42,63,57,92,91,114,61,281,45,342,256,132,812,586,1073,81,0,0,0,1,5,4,4,10,11,9,3,5,5,6,18,21,29,26,14,27,51,17,54,47,51,65,84,84,118,66,291,46,316,244,149,782,579,1080,87,0,0,1,2,5,2,10,17,12,9,0,7,2,10,10,12,20,18,21,27,50,17,50,54,42,82,57,84,103,54,285,41,342,265,115,822,582,1085,118,0,0,0,0,4,3,7,7,11,10,5,6,8,11,18,19,30,34,13,34,47,14,62,49,55,83,82,96,101,51,283,45,346,249,152,843,521,985,73,0,0,0,2,5,6,7,9,11,7,5,4,11,19,13,15,33,18,17,42,57,25,46,65,67,94,68,93,117,67,279,53,306,295,132,844,504,993,72,0,0,1,2,3,5,4,16,13,14,2,8,2,18,19,27,37,27,18,29,57,21,47,57,62,87,81,89,111,57,293,49,319,270,142,858,495,990,78,0,0,1,1,5,3,3,13,10,13,5,7,5,14,15,24,30,23,23,24,57,19,72,49,70,70,72,91,124,60,298,52,347,270,147,841,486,980,71,0,0,0,4,5,3,10,9,10,12,5,9,6,23,14,19,33,27,21,34,60,16,47,57,55,82,84,109,117,44,305,45,335,265,146,856,510,954,80,0,0,0,5,4,5,4,6,10,7,4,0,11,14,19,18,32,25,29,32,75,19,58,56,66,81,79,102,133,52,332,44,306,260,152,879,486,917,80,0,0,0,2,5,2,11,11,13,4,4,5,8,12,15,21,34,27,18,44,58,26,72,62,72,90,84,97,137,51,324,54,332,254,143,857,492,881,78,0,0,0,3,4,1,9,9,3,8,9,9,5,12,20,19,37,30,23,38,69,29,64,51,71,95,92,99,133,52,320,51,340,275,152,868,467,856,73,0,0,0,1,2,3,6,14,19,7,3,3,10,24,15,26,38,27,15,34,71,17,62,72,75,86,84,108,128,65,304,41,356,239,139,864,494,876,100,0,1,1,6,3,6,14,19,11,9,7,11,5,8,25,21,35,16,18,39,61,19,65,42,62,91,83,80,105,38,318,50,372,289,135,847,504,884,72,0,0,1,1,4,2,12,10,17,11,5,3,3,21,25,29,34,34,19,38,55,20,55,59,82,96,99,106,133,45,299,71,339,265,157,822,474,882,73,0,0,0,1,2,5,3,17,16,6,5,7,11,7,16,14,30,31,16,45,71,29,50,62,72,78,77,107,132,62,273,47,366,277,161,892,462,877,91,0,0,0,3,2,2,7,10,6,9,9,6,11,15,17,19,33,20,10,30,54,20,68,48,73,84,72,114,131,60,321,60,356,270,159,874,496,840,92,0,0,1,5,5,4,6,8,7,10,4,7,7,16,26,24,33,20,22,36,49,15,53,65,71,79,80,112,127,63,320,49,359,292,141,837,455,900,105,0,0,1,2,5,4,2,15,8,13,8,6,7,19,24,21,30,22,17,35,53,13,52,61,45,93,74,87,120,60,302,41,331,272,131,877,513,931,117,0,0,0,3,5,3,11,23,24,10,5,7,6,8,13,12,40,18,18,40,41,12,45,57,72,86,71,75,125,68,299,55,302,264,154,874,464,973,120,0,1,0,7,3,4,9,13,19,8,5,3,10,17,25,13,19,18,23,33,49,25,41,51,72,74,56,95,112,60,291,58,281,267,145,916,463,993,89,0,0,1,4,9,13,7,8,7,8,6,8,8,18,20,12,34,26,14,31,50,17,45,65,58,68,77,84,110,66,289,54,284,282,164,871,489,1003,162,0,0,1,3,4,4,14,15,24,17,2,6,9,16,15,20,37,20,12,34,49,12,42,50,54,66,62,81,121,56,265,50,292,258,127,878,506,1015,79,0,0,0,5,1,3,3,13,8,6,0,7,11,15,19,11,17,25,16,34,49,16,37,45,69,72,76,79,101,48,303,38,326,254,140,811,619,1043,78,0,0,0,3,0,4,3,8,5,6,8,6,5,13,18,18,32,19,22,39,43,17,39,45,68,77,74,69,118,47,272,47,332,262,139,833,562,1068,96,0,0,1,3,1,5,5,6,6,8,4,7,3,12,9,18,35,15,24,27,57,20,40,53,70,81,89,91,117,46,262,44,298,251,130,817,588,1059,102,0,0,0,5,0,5,4,10,11,12,3,3,7,8,18,15,22,20,17,20,50,21,46,43,71,70,80,91,110,51,239,34,339,258,119,820,614,1058,100,0,0,0,3,5,3,6,10,12,12,5,5,10,6,21,18,28,14,16,33,38,18,45,56,58,71,65,79,109,57,253,47,310,263,129,854,616,1017,97,0,0,1,4,3,1,5,14,7,11,2,5,2,9,6,19,21,18,21,30,37,22,37,64,40,69,53,89,104,66,281,42,355,233,137,771,615,1095,130,0,0,0,5,2,6,10,10,19,20,5,5,4,12,16,17,28,14,12,25,42,16,42,39,57,61,73,84,110,49,261,48,315,254,125,761,643,1028,108,0,2,1,2,1,5,4,12,13,7,6,7,3,6,14,19,20,22,15,22,52,14,50,45,57,67,72,78,119,51,272,45,284,226,127,831,604,1054,124,0,2,2,0,1,2,5,13,17,10,1,6,4,14,11,19,31,14,14,24,30,12,42,41,54,64,74,82,112,68,250,49,308,261,142,775,557,1060,106,0,1,0,1,4,4,10,9,9,7,0,9,6,8,8,16,21,12,18,24,50,14,43,43,56,55,100,87,109,51,261,51,308,217,139,759,562,1041,120,0,0,0,3,3,2,9,7,12,9,6,4,1,10,9,15,26,11,16,22,35,16,26,45,50,60,56,67,74,62,247,50,282,243,123,747,618,1061,116,0,0,0,1,2,3,2,10,15,10,1,2,6,6,10,9,13,8,14,29,26,12,31,42,59,41,57,88,92,58,257,43,304,236,133,707,612,1016,130,0,0,1,2,4,2,6,8,18,21,3,5,5,7,12,15,17,7,7,23,43,9,28,32,44,42,56,68,83,54,225,38,289,181,133,713,594,991,105,0,1,0,0,5,2,6,9,10,23,1,5,3,3,9,9,30,13,7,18,27,12,28,24,49,42,63,75,81,45,226,43,274,217,147,676,571,925,99,0,0,0,0,3,1,3,5,5,16,3,3,6,7,4,13,15,11,3,10,34,16,20,37,46,41,52,66,85,35,201,45,253,201,119,685,497,913,82,0,0,0,0,0,0,0,0,0,2,0,3,5,3,4,5,13,9,5,11,14,3,35,17,21,41,34,67,67,31,184,49,241,167,93,639,515,797)
+mat=matrix(qual,ncol=51,byrow=F)
+Lab.palette <- colorRampPalette(c("blue", "orange", "red3","red2","red1","red"), space = "rgb",interpolate=c('spline'))
+heatmap(mat,Rowv=NA,Colv=NA,xlab="Position of Read",ylab="Phred Quality Score",labRow=seq(from=33,to=71),col = Lab.palette(256),scale="none" )
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.read_distribution.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,16 @@
+Total Reads                   40
+Total Tags                    44
+Total Assigned Tags           38
+=====================================================================
+Group               Total_bases         Tag_count           Tags/Kb             
+CDS_Exons           918                 0                   0.00              
+5'UTR_Exons         1652                3                   1.81              
+3'UTR_Exons         2967                4                   1.35              
+Introns             14397               27                  1.88              
+TSS_up_1kb          4000                0                   0.00              
+TSS_up_5kb          20000               4                   0.20              
+TSS_up_10kb         35240               4                   0.11              
+TES_down_1kb        2000                0                   0.00              
+TES_down_5kb        12512               0                   0.00              
+TES_down_10kb       22752               0                   0.00              
+=====================================================================
Binary file test-data/output.saturation.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.seq.DupRate.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,2 @@
+Occurrence	UniqReadNumber
+1	40
Binary file test-data/output.splice_events.pdf has changed
Binary file test-data/output.splice_junction.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.tin.summary.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,2 @@
+Bam_file	TIN(mean)	TIN(median)	TIN(stdev)
+input.bam	8.87096774194	8.87096774194	0.0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.tin.xls	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,8 @@
+geneID	chrom	tx_start	tx_end	TIN
+NR_046018	chr1	11873	14409	0.0
+NR_024540	chr1	14361	29370	8.87096774194
+NR_106918	chr1	17368	17436	0.0
+NR_107062	chr1	17368	17436	0.0
+NR_026818	chr1	34610	36081	0.0
+NR_026820	chr1	34610	36081	0.0
+NM_001005484	chr1	69090	70008	0.0
Binary file test-data/output2.geneBodyCoverage.curves.pdf has changed
Binary file test-data/output2.geneBodyCoverage.heatMap.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output2.geneBodyCoverage.r	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,21 @@
+pairend_strandspecific_51mer_hg19_chr1_1_100000_bam <- c(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0)
+pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.1 <- c(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0)
+pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.2 <- c(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0)
+data_matrix <- matrix(c(pairend_strandspecific_51mer_hg19_chr1_1_100000_bam,pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.1,pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.2), byrow=T, ncol=100)
+rowLabel <- c("pairend_strandspecific_51mer_hg19_chr1_1_100000_bam","pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.1","pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.2")
+
+
+pdf("output.geneBodyCoverage.heatMap.pdf")
+rc <- cm.colors(ncol(data_matrix))
+heatmap(data_matrix, scale=c("none"),keep.dendro=F, labRow = rowLabel ,Colv = NA,Rowv = NA,labCol=NA,col=cm.colors(256),margins = c(6, 8),ColSideColors = rc,cexRow=1,cexCol=1,xlab="Gene body percentile (5'->3')", add.expr=x_axis_expr <- axis(side=1,at=c(1,10,20,30,40,50,60,70,80,90,100),labels=c("1","10","20","30","40","50","60","70","80","90","100")))
+dev.off()
+
+
+pdf("output.geneBodyCoverage.curves.pdf")
+x=1:100
+icolor = colorRampPalette(c("#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f"))(3)
+plot(x,pairend_strandspecific_51mer_hg19_chr1_1_100000_bam,type='l',xlab="Gene body percentile (5'->3')", ylab="Coverage",lwd=0.8,col=icolor[1])
+lines(x,pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.1,type='l',col=icolor[2])
+lines(x,pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.2,type='l',col=icolor[3])
+legend(0,1,fill=icolor[1:3], legend=c('pairend_strandspecific_51mer_hg19_chr1_1_100000_bam','pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.1','pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.2'))
+dev.off()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output2.geneBodyCoverage.txt	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,4 @@
+Percentile	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	20	21	22	23	24	25	26	27	28	29	30	31	32	33	34	35	36	37	38	39	40	41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	58	59	60	61	62	63	64	65	66	67	68	69	70	71	72	73	74	75	76	77	78	79	80	81	82	83	84	85	86	87	88	89	90	91	92	93	94	95	96	97	98	99	100
+pairend_strandspecific_51mer_hg19_chr1_1_100000_bam	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	0.0	0.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	1.0	1.0	0.0	1.0	1.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	1.0	1.0	0.0	0.0	1.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0
+pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.1	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	0.0	0.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	1.0	1.0	0.0	1.0	1.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	1.0	1.0	0.0	0.0	1.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0
+pairend_strandspecific_51mer_hg19_chr1_1_100000_bam.2	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	0.0	0.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	1.0	1.0	0.0	1.0	1.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	1.0	1.0	1.0	0.0	0.0	1.0	1.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0	0.0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,80 @@
+@seq.11990047/1
+ACGGCCGACTTGGATCACACTCTTGCAGGGCCATCAGGCACCAAAGGGATT
++
+hgffghhhhfhhchfhghhhhhhhggahh[chffhfhghhhhhhafehfeh
+@seq.14614493/1
+AGAGGAGGACGAGGACGACTGGGAATCGTAGGGGGCTCCATGACACCTTCC
++
+hhgghehehghgghhaffffcggchghhhhgfhfhahghhhghhghhhhhe
+@seq.24018133/1
+CGGGTGGATTTTCTGTGGGTTTGTTAAGTGGTCAGAAATTCTCAATTTTTT
++
+`aggggecfffa\\^Ua``\af`fffcffffafaffcffffec``fWfffe
+@seq.10608403/1
+GTATGGCCAGAGGGCAGGGCCGAGGGGTGTGGGCGGGAGGCCCGGCCTGGC
++
+_dd_]bfggfgcg[egdbdbdXc`cfggaagdgggf^ggfdfggggggggg
+@seq.10820209/1
+GTGCTGGCCCCAGTTTTCTAACCAGGTGTTGAATGAACTGGATGGACTCTG
++
+ghhccgfgghhhdhfhhghhhfffdf_hfhhhffhhhgdchhhhhgfhahh
+@seq.1537155/1
+GGGAGTGTGCAGAGACTGGAGGGGATGACAGTCACCCTCTGTTTTCTGTGG
++
+aag`hhhhhgghhhhhhfhhchgfacchhhhah]hhdcafhhhhffachhg
+@seq.25274725/1
+AGGGTGTGGGGCAAGGCAGTGAGTGAAGAGTTGGGATGAGTGAGTTAGGGC
++
+hhhhdhhhhhhffffcfdffff_fdffffffhchahhhhchgfhhfhfhhh
+@seq.26326595/1
+GGGAAGGGGGTGCTTCTGCATGGGAAGCACAGACAGCGCTGCCTCTCCCTT
++
+Wbfdf]ddggggdgggdfdfWggdggf]fffadfffffVfffgfgfdgggg
+@seq.28833653/1
+TGGGGCCAGGGGACTATGACACACCACTTGGCTTAGACTGAGGAGCTCTGT
++
+_cffafhdghhhhhhhhhhhghhaffhhhhdhfhhehhhhhhgghfhghhh
+@seq.25049090/1
+AGGGCGAGATTGATTGTTAATTGCTAGCATGAACCGCGTGGGCTTCTCAGG
++
+fdffbfdddb[_afffacdggafdbc[fcfcgggfgffccfgagggggfgc
+@seq.23476912/1
+GGCCTCTCCACCATGTGCTCCACCTCGTGCTGGACCTTAAGAGATACCAAT
++
+fgggggeggecfefffd^^aY]fdfcaggggfdefdggggggggggggggg
+@seq.28059536/1
+GGGATGAGGAGAGGGCAGGAAGGCATTTCCTGGGTAGTGGAGTGCTGTGTT
++
+B_bbea[_V[WZVY`\Pacaaebecd]]fddbaed[decbe]fd`fggggg
+@seq.13270875/1
+TGCCCCGAGTTTGTCAAGAATGTCCCAGTAACCAGGGGACACACAGTGAAG
++
+ffffafgagcggggfgfcfffccfcffg]ggggfgcgggggggggggggcf
+@seq.2214586/1
+GTGGGAGGGGCTGAAGTGAGAGCCCAACTTGGAAGCTTTTACTCCTGGGAG
++
+gghghghhhhhhhhhhffefafhfhhhhhgghhhghhehhhhehhhhhhhh
+@seq.31061198/1
+GAGGAGCTAGGGTTTCTCATAAAACTCCCTGATAGAAGACGACTTTTGATA
++
+cd\WaaaRcaacJdd[dff_f_ffcfddfff_dafffcd[cd\aW\eedcc
+@seq.13835843/1
+GGGGAGGCAGAGGTTGCAGTGAGCCGAGATCATGTCACTGCACTCCAGGCT
++
+ggcgafggfgggggggfgggagggagggefgdffffdadeggggggggegg
+@seq.13539256/1
+GTGGGGAAACCTAGAATTGCTGTAGAGAAAATGCCCTAGAGCAGCTCTAGA
++
+hfhhchfhhhfhghhhhhhhhghghhhgfhhhhhhhhhghhhhfhhhhfhh
+@seq.5556605/1
+GGGATGAGGCCAAATCTTTCTGAATCTGAGATAGCCTCTCAGCCTATGCAT
++
+hfhchhchhhehhhhhhhhdhh_hghchgfhdhhhhhhhhhchhghhhhhh
+@seq.32597077/1
+GAGAGACGGGGTTTCACCATGTTGGCCAGGATGGTCTTGATCTCTTGACCT
++
+dcba]fffcdfdWccf\``S_da_cdc_fdafggggfffcfcfcfddafff
+@seq.20367385/1
+TTAAGTGCACTCAAATAATGTGATTTTATGAGGCTATAGGAGAAAAAAATT
++
+fdddZ`dc[cdadJ_ddScad[[^\^ddadad__daa^a^\]QY\T^ZZZY
Binary file test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.R1.fastq.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.R2.fastq	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,80 @@
+@seq.11990047/2
+CCCGTGGGCAGAGCAAAGGAAGGGCACAGCGCCAGGCAGTGGTGCAGCTGC
++
+hfadfddd`]f[fa_fh]hhcagffhWhhhh]eeehhhha^hfhhhhghhf
+@seq.14614493/2
+TCCCCTCCCAAGGAAGTAGGTCTGAGCAGCTTGTCCTGGCTGTGTCCATGT
++
+hhhhhhhhhehhhhehehhhghhehfhahhdhfdhhfhhhdf]f_ffbdfa
+@seq.24018133/2
+TACCACTATTTTATGAACCAAGTATAACAAGATACTTGAAATGGAAACTAT
++
+fLffddhhhhag_gefafffhaefhfffffchffhhggahhhhRhhgccgh
+@seq.10608403/2
+GGGACCTGCTGTTCCATCGGCTCTCTCTTGCTGATGGACAAGGGGGCATCA
++
+hefchhhfda`]]b]a^aLa^[Za^WdWb[faff]fd]defQacffdRd]f
+@seq.10820209/2
+GCCCGGGGAAAACATGCATCACAGTTCATCTCGAGTCAGCAGGATTTTGAC
++
+ffcddeed]eaTfccfffffceee]ffdcdcee[efdaffffdSfhhdc]d
+@seq.1537155/2
+TNNATCAATCAGCAGGNNNCGTGCACTCTCTTTGAGCCACCACAGAAAACA
++
+VBBVT^WZ^^I[]V]YBBBIVS[W[eeKceccaccUfaffff_afghg`gd
+@seq.25274725/2
+GGCNCCTCCNTGCCCTNCTNAAAANNCAATCACAGCTCCCTAACAGTCCTG
++
+^UZB]]]Y]B][IS[[B]]BW][XBB\WaadddddhhghgffffaGVV[Se
+@seq.26326595/2
+CATGCGTGCCCTGCTCGANATCCAATCACAGCTCCCTAACACTCCTGAATC
++
+^K^K_YT[YVe_eLe[INBTYZUV^S`babhacfhhccghhahghhdaghW
+@seq.28833653/2
+CAGCAGCTATTTCCTGNTNACTCAANCAATGGCCCCATTTCCCTGGTGGAA
++
+fLdYfeYdddXbbabSBWBTY[[[]BdeedfffffghhhghdfgLfbfddg
+@seq.25049090/2
+CTNCCCTTANTCCGAANGCNGCTCNNCTGATTGGTTAATTTTTGCGTAGCT
++
+VVBNZT[]]BSHZWS[BZHBTQPOBBZUZO]bZ^^hfehffff[fcfd_]g
+@seq.23476912/2
+TNACTGATTNCTCTCCACTNTAGANNCTGAGAAGCCCACGCTGTTCATGCT
++
+`Ba_a^]^\Bbab\aa`b`BV]^VBBZV[Z`a^abffYfaa^e^dedbdd]
+@seq.28059536/2
+CGTNTGACTCTAGACCNTNNGAAGCCCACGCGGTTCATTCTAGCAAGTAAC
++
+ZXZBY`\`]][dcKcUBVBBWNVV]ghchfdcc]ecccLa`edecf_cfdf
+@seq.13270875/2
+TAGATTATCAACAGGGGAGAGATAGCATTTCCTGAAGGCTTCCTAGGTGCC
++
+eghggd_hhhfahhg\K^[[ffafchehg_ffWffhgceghhhhhffLfcY
+@seq.2214586/2
+GNNTGCANANATAGANNTTNCCACACTGCCTTGCACAGGAGCACTGCGGGG
++
+VBBSITZBVBTTRHXBBZYBVUUVHH[QV[chhghacKaa_eeeeghgghg
+@seq.31061198/2
+GNCGGAAAAAAAAATTNNNNAAAATNCGTCTGCTATCAGGGAGTTTTATGA
++
+VB[NV^\_]_`hfccXBBBBTUT[TBa_aLTRNQQaYcaeaKa^adcS\Vd
+@seq.13539256/2
+CCTATTTTTTTTTTTTTTTTTGACACAGGTTCTCTGTCACCCAGCCTGGGG
++
+hhhhhhhhhhhghhhghhghfccWKVVYZRd[_[aZQYZ^``WT`[L^^Q\
+@seq.13835843/2
+TCCATCTTTTTTTTTTTTTTTTTGACACAGGTTCTCTGTCACCCAGCCTGG
++
+ghhhggffhhhhhhhhhhhghhh]fMPLPVW^^WXUZ\WXL[VVJY`\Wbb
+@seq.5556605/2
+GCAGCTANGNCCATCNNNTTTGAAANCCAGATTTCGTTTTAAACCAGAGGA
++
+fLfLf]VBTBI]]]]BBB[^WW[]XBdede`eedeffhhehffhhhhahee
+@seq.20367385/2
+ATTTGGCAGAGAAGCAAACACCAGTCGGAGAGCTGGGGCCCTCCCAGCCCT
++
+W_\_^W___WdcfceVIW[T^aa\[aaacaQYYSZY`KK````^[GaQZ\Y
+@seq.17373919/2
+TTTTTGTTTTTTTTTTTTTTTGAGTCAGAATCTCGCTCTGTTGCCCAGGCT
++
+hgghhhhhhSfffffhgh`h__Wb`ZZZ_]PVPUSVYVQVaWWacaQa^BB
Binary file test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.bam has changed
Binary file test-data/pairend_strandspecific_51mer_hg19_chr1_1-100000.bigwig has changed
Binary file test-data/pairend_strandspecific_51mer_hg19_random.bam has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/testwig.Forward.wig	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,127 @@
+variableStep chrom=chr13
+variableStep chrom=chr12
+variableStep chrom=chr11
+variableStep chrom=chr10
+variableStep chrom=chr17
+variableStep chrom=chr16
+variableStep chrom=chr15
+variableStep chrom=chr14
+variableStep chrom=chr19
+variableStep chrom=chr18
+variableStep chrom=chr8
+variableStep chrom=chr3
+variableStep chrom=chr1
+12674	1.00
+12675	1.00
+12676	1.00
+12677	1.00
+12678	1.00
+12679	1.00
+12680	1.00
+12681	1.00
+12682	1.00
+12683	1.00
+12684	1.00
+12685	1.00
+12686	1.00
+12687	1.00
+12688	1.00
+12689	1.00
+12690	1.00
+12691	1.00
+12692	1.00
+12693	1.00
+12694	1.00
+12695	1.00
+12696	1.00
+12697	1.00
+13221	1.00
+13222	1.00
+13223	1.00
+13224	1.00
+13225	1.00
+13226	1.00
+13227	1.00
+13228	1.00
+13229	1.00
+13230	1.00
+13231	1.00
+13232	1.00
+13233	1.00
+13234	1.00
+13235	1.00
+13236	1.00
+13237	1.00
+13238	1.00
+13239	1.00
+13240	1.00
+13241	1.00
+13242	1.00
+13243	1.00
+13244	1.00
+13245	1.00
+13246	1.00
+13247	1.00
+13483	1.00
+13484	1.00
+13485	1.00
+13486	1.00
+13487	1.00
+13488	1.00
+13489	1.00
+13490	1.00
+13491	1.00
+13492	1.00
+13493	1.00
+13494	1.00
+13495	1.00
+13496	1.00
+13497	1.00
+13498	1.00
+13499	1.00
+13500	1.00
+13501	1.00
+13502	1.00
+13503	1.00
+13504	1.00
+13505	1.00
+13506	1.00
+13507	1.00
+13508	1.00
+13509	1.00
+13510	1.00
+13511	1.00
+13512	1.00
+13513	1.00
+13514	1.00
+13515	1.00
+13516	1.00
+13517	1.00
+13518	1.00
+13519	1.00
+13520	1.00
+13521	1.00
+13522	1.00
+13523	1.00
+13524	1.00
+13525	1.00
+13526	1.00
+13527	1.00
+13528	1.00
+13529	1.00
+13530	1.00
+13531	1.00
+13532	1.00
+13533	1.00
+variableStep chrom=chrY
+variableStep chrom=chrX
+variableStep chrom=chr9
+variableStep chrom=chrM
+variableStep chrom=chr22
+variableStep chrom=chr20
+variableStep chrom=chr21
+variableStep chrom=chr7
+variableStep chrom=chr6
+variableStep chrom=chr5
+variableStep chrom=chr4
+variableStep chrom=chr2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/testwig.Reverse.wig	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,1686 @@
+variableStep chrom=chr13
+variableStep chrom=chr12
+variableStep chrom=chr11
+variableStep chrom=chr10
+variableStep chrom=chr17
+variableStep chrom=chr16
+variableStep chrom=chr15
+variableStep chrom=chr14
+variableStep chrom=chr19
+variableStep chrom=chr18
+variableStep chrom=chr8
+variableStep chrom=chr3
+variableStep chrom=chr1
+14596	-1.00
+14597	-1.00
+14598	-1.00
+14599	-1.00
+14600	-1.00
+14601	-1.00
+14602	-1.00
+14603	-1.00
+14604	-1.00
+14605	-1.00
+14606	-1.00
+14607	-1.00
+14608	-1.00
+14609	-1.00
+14610	-1.00
+14611	-1.00
+14612	-1.00
+14613	-1.00
+14614	-1.00
+14615	-1.00
+14616	-1.00
+14617	-1.00
+14618	-1.00
+14619	-1.00
+14620	-1.00
+14621	-1.00
+14622	-1.00
+14623	-1.00
+14624	-1.00
+14625	-1.00
+14626	-1.00
+14627	-1.00
+14628	-1.00
+14629	-1.00
+14630	-1.00
+14631	-1.00
+14632	-1.00
+14633	-1.00
+14634	-1.00
+14635	-1.00
+14636	-1.00
+14637	-1.00
+14638	-1.00
+14639	-1.00
+14640	-1.00
+14641	-1.00
+14642	-1.00
+14643	-1.00
+14644	-1.00
+14645	-1.00
+14676	-1.00
+14677	-1.00
+14678	-1.00
+14679	-1.00
+14680	-1.00
+14681	-1.00
+14682	-1.00
+14683	-1.00
+14684	-1.00
+14685	-1.00
+14686	-1.00
+14687	-1.00
+14688	-1.00
+14689	-1.00
+14690	-1.00
+14691	-1.00
+14692	-1.00
+14693	-1.00
+14694	-1.00
+14695	-1.00
+14696	-1.00
+14697	-1.00
+14698	-1.00
+14699	-1.00
+14700	-1.00
+14701	-1.00
+14702	-1.00
+14703	-1.00
+14704	-1.00
+14705	-1.00
+14706	-1.00
+14707	-1.00
+14708	-1.00
+14709	-1.00
+14710	-1.00
+14711	-1.00
+14712	-1.00
+14713	-1.00
+14714	-1.00
+14715	-1.00
+14716	-1.00
+14717	-1.00
+14718	-1.00
+14719	-1.00
+14720	-1.00
+14721	-1.00
+14722	-1.00
+14723	-1.00
+14724	-1.00
+14725	-1.00
+14726	-1.00
+16455	-1.00
+16456	-1.00
+16457	-1.00
+16458	-1.00
+16459	-1.00
+16460	-1.00
+16461	-1.00
+16462	-1.00
+16463	-1.00
+16464	-1.00
+16465	-1.00
+16466	-1.00
+16467	-1.00
+16468	-1.00
+16469	-1.00
+16470	-1.00
+16471	-1.00
+16472	-1.00
+16473	-1.00
+16474	-1.00
+16475	-1.00
+16476	-1.00
+16477	-1.00
+16478	-1.00
+16479	-1.00
+16480	-1.00
+16481	-1.00
+16482	-1.00
+16483	-1.00
+16484	-1.00
+16485	-1.00
+16486	-1.00
+16487	-1.00
+16488	-1.00
+16489	-1.00
+16490	-1.00
+16491	-1.00
+16492	-1.00
+16493	-1.00
+16494	-1.00
+16495	-1.00
+16496	-1.00
+16497	-1.00
+16498	-1.00
+16499	-1.00
+16500	-1.00
+16501	-1.00
+16502	-1.00
+16503	-1.00
+16504	-1.00
+16506	-1.00
+16507	-1.00
+16508	-1.00
+16509	-1.00
+16510	-1.00
+16511	-1.00
+16512	-1.00
+16513	-1.00
+16514	-1.00
+16515	-1.00
+16516	-1.00
+16517	-1.00
+16518	-1.00
+16519	-1.00
+16520	-1.00
+16521	-1.00
+16522	-1.00
+16523	-1.00
+16524	-1.00
+16525	-1.00
+16526	-1.00
+16527	-1.00
+16528	-1.00
+16529	-1.00
+16530	-1.00
+16531	-1.00
+16532	-1.00
+16533	-1.00
+16534	-1.00
+16535	-1.00
+16536	-1.00
+16537	-1.00
+16538	-1.00
+16539	-1.00
+16540	-1.00
+16541	-1.00
+16542	-1.00
+16543	-1.00
+16544	-1.00
+16545	-1.00
+16546	-1.00
+16547	-1.00
+16548	-1.00
+16549	-1.00
+16550	-1.00
+16551	-1.00
+16552	-1.00
+16553	-1.00
+16554	-1.00
+16555	-1.00
+16556	-1.00
+17051	-1.00
+17052	-1.00
+17053	-1.00
+17054	-1.00
+17055	-1.00
+17233	-1.00
+17234	-1.00
+17235	-1.00
+17236	-1.00
+17237	-1.00
+17238	-1.00
+17239	-1.00
+17240	-1.00
+17241	-1.00
+17242	-1.00
+17243	-1.00
+17244	-1.00
+17245	-1.00
+17246	-1.00
+17247	-1.00
+17248	-1.00
+17249	-1.00
+17250	-1.00
+17251	-1.00
+17252	-1.00
+17253	-1.00
+17254	-1.00
+17255	-1.00
+17256	-1.00
+17257	-1.00
+17258	-1.00
+17259	-1.00
+17260	-1.00
+17261	-1.00
+17262	-1.00
+17263	-1.00
+17264	-1.00
+17265	-1.00
+17266	-1.00
+17267	-1.00
+17268	-1.00
+17269	-1.00
+17270	-1.00
+17271	-1.00
+17272	-1.00
+17273	-1.00
+17274	-1.00
+17275	-1.00
+17276	-1.00
+17277	-1.00
+17278	-1.00
+17555	-1.00
+17556	-1.00
+17557	-1.00
+17558	-1.00
+17559	-1.00
+17560	-1.00
+17561	-1.00
+17562	-1.00
+17563	-1.00
+17564	-1.00
+17565	-1.00
+17566	-1.00
+17567	-1.00
+17568	-1.00
+17569	-1.00
+17570	-1.00
+17571	-1.00
+17572	-1.00
+17573	-1.00
+17574	-1.00
+17575	-1.00
+17576	-1.00
+17577	-1.00
+17578	-1.00
+17579	-1.00
+17580	-1.00
+17581	-1.00
+17582	-1.00
+17583	-1.00
+17584	-1.00
+17585	-1.00
+17586	-1.00
+17587	-1.00
+17588	-1.00
+17589	-1.00
+17590	-1.00
+17591	-1.00
+17592	-1.00
+17593	-1.00
+17594	-1.00
+17595	-1.00
+17596	-1.00
+17597	-1.00
+17598	-1.00
+17599	-1.00
+17600	-1.00
+17601	-1.00
+17602	-1.00
+17603	-1.00
+17604	-1.00
+17605	-1.00
+20203	-1.00
+20204	-1.00
+20205	-1.00
+20206	-1.00
+20207	-1.00
+20208	-1.00
+20209	-1.00
+20210	-1.00
+20211	-1.00
+20212	-1.00
+20213	-1.00
+20214	-1.00
+20215	-1.00
+20216	-1.00
+20217	-1.00
+20218	-1.00
+20219	-1.00
+20220	-1.00
+20221	-1.00
+20222	-1.00
+20223	-1.00
+20224	-1.00
+20225	-1.00
+20226	-1.00
+20227	-1.00
+20228	-1.00
+20229	-1.00
+20230	-1.00
+20231	-1.00
+20232	-1.00
+20233	-1.00
+20234	-1.00
+20235	-1.00
+20236	-1.00
+20237	-1.00
+20238	-1.00
+20239	-1.00
+20240	-1.00
+20241	-1.00
+20242	-1.00
+20243	-1.00
+20244	-1.00
+20245	-1.00
+20246	-1.00
+20247	-1.00
+20248	-1.00
+20249	-1.00
+20250	-1.00
+20251	-1.00
+20252	-1.00
+20253	-1.00
+20400	-1.00
+20401	-1.00
+20402	-1.00
+20403	-1.00
+20404	-1.00
+20405	-1.00
+20406	-1.00
+20407	-1.00
+20408	-1.00
+20409	-1.00
+20410	-1.00
+20411	-1.00
+20412	-1.00
+20413	-1.00
+20414	-1.00
+20415	-1.00
+20416	-1.00
+20417	-1.00
+20418	-1.00
+20419	-1.00
+20420	-1.00
+20421	-1.00
+20422	-1.00
+20423	-1.00
+20424	-1.00
+20425	-1.00
+20426	-1.00
+20427	-1.00
+20428	-1.00
+20429	-1.00
+20430	-1.00
+20431	-1.00
+20432	-1.00
+20433	-1.00
+20434	-1.00
+20435	-1.00
+20436	-1.00
+20437	-1.00
+20438	-1.00
+20439	-1.00
+20440	-1.00
+20441	-1.00
+20442	-1.00
+20443	-1.00
+20444	-1.00
+20445	-1.00
+20446	-1.00
+20447	-1.00
+20448	-1.00
+20449	-1.00
+20450	-1.00
+20773	-1.00
+20774	-1.00
+20775	-1.00
+20776	-1.00
+20777	-1.00
+20778	-1.00
+20779	-1.00
+20780	-1.00
+20781	-1.00
+20782	-1.00
+20783	-1.00
+20784	-1.00
+20785	-1.00
+20786	-1.00
+20787	-1.00
+20788	-1.00
+20789	-1.00
+20790	-1.00
+20791	-1.00
+20792	-1.00
+20793	-1.00
+20794	-1.00
+20795	-1.00
+20796	-1.00
+20797	-1.00
+20798	-1.00
+20799	-1.00
+20800	-1.00
+20801	-1.00
+20802	-1.00
+20803	-1.00
+20804	-1.00
+20805	-1.00
+20806	-1.00
+20807	-1.00
+20808	-1.00
+20809	-1.00
+20810	-1.00
+20811	-1.00
+20812	-1.00
+20813	-1.00
+20814	-1.00
+20815	-1.00
+20816	-1.00
+20817	-1.00
+20818	-1.00
+20819	-1.00
+20849	-1.00
+20850	-1.00
+20851	-1.00
+20852	-1.00
+20853	-1.00
+20854	-1.00
+20855	-1.00
+20856	-1.00
+20857	-1.00
+20858	-1.00
+20859	-1.00
+20860	-1.00
+20861	-1.00
+20862	-1.00
+20863	-1.00
+20864	-1.00
+20865	-1.00
+20866	-1.00
+20867	-1.00
+20868	-1.00
+20869	-1.00
+20870	-1.00
+20871	-1.00
+20872	-1.00
+20873	-1.00
+20874	-1.00
+20875	-1.00
+20876	-1.00
+20877	-1.00
+20878	-1.00
+20879	-1.00
+20880	-1.00
+20881	-1.00
+20882	-1.00
+20883	-1.00
+20884	-1.00
+20885	-1.00
+20886	-1.00
+20887	-1.00
+20888	-1.00
+20889	-1.00
+20890	-1.00
+20891	-1.00
+20892	-1.00
+20893	-1.00
+20894	-1.00
+20895	-1.00
+20896	-1.00
+20897	-1.00
+20898	-1.00
+20899	-1.00
+21469	-1.00
+21470	-1.00
+21471	-1.00
+21472	-1.00
+21473	-2.00
+21474	-2.00
+21475	-2.00
+21476	-2.00
+21477	-2.00
+21478	-2.00
+21479	-2.00
+21480	-2.00
+21481	-2.00
+21482	-2.00
+21483	-2.00
+21484	-2.00
+21485	-2.00
+21486	-2.00
+21487	-2.00
+21488	-2.00
+21489	-2.00
+21490	-2.00
+21491	-2.00
+21492	-2.00
+21493	-2.00
+21494	-2.00
+21495	-2.00
+21496	-2.00
+21497	-2.00
+21498	-2.00
+21499	-2.00
+21500	-2.00
+21501	-2.00
+21502	-2.00
+21503	-2.00
+21504	-2.00
+21505	-2.00
+21506	-2.00
+21507	-2.00
+21508	-1.00
+21509	-1.00
+21510	-1.00
+21511	-1.00
+21512	-1.00
+21513	-1.00
+21514	-1.00
+21515	-1.00
+21516	-1.00
+21517	-1.00
+21526	-1.00
+21527	-1.00
+21528	-1.00
+21529	-1.00
+21530	-1.00
+21531	-1.00
+21543	-1.00
+21544	-1.00
+21545	-1.00
+21546	-1.00
+21547	-1.00
+21548	-1.00
+21549	-1.00
+21550	-1.00
+21551	-1.00
+21552	-1.00
+21553	-1.00
+21554	-1.00
+21555	-1.00
+21556	-1.00
+21557	-1.00
+21558	-1.00
+21559	-1.00
+21560	-1.00
+21561	-1.00
+21562	-1.00
+21563	-1.00
+21564	-1.00
+21565	-1.00
+21566	-1.00
+21567	-1.00
+21568	-1.00
+21569	-1.00
+21570	-1.00
+21571	-1.00
+21572	-1.00
+21573	-1.00
+21574	-1.00
+21575	-1.00
+21576	-1.00
+21577	-1.00
+21578	-1.00
+21579	-1.00
+21580	-1.00
+21581	-1.00
+21582	-1.00
+21583	-1.00
+21584	-1.00
+21585	-1.00
+21586	-1.00
+21587	-1.00
+21588	-1.00
+21589	-1.00
+21590	-1.00
+21591	-1.00
+21592	-1.00
+21593	-1.00
+21723	-1.00
+21724	-1.00
+21725	-1.00
+21726	-1.00
+21727	-1.00
+21728	-1.00
+21729	-1.00
+21730	-1.00
+21731	-1.00
+21732	-1.00
+21733	-1.00
+21734	-1.00
+21735	-1.00
+21736	-1.00
+21737	-1.00
+21738	-1.00
+21739	-1.00
+21740	-1.00
+21741	-1.00
+21742	-1.00
+21743	-1.00
+21744	-1.00
+21745	-1.00
+21746	-1.00
+21747	-1.00
+21748	-1.00
+21749	-1.00
+21750	-1.00
+21751	-1.00
+21752	-1.00
+21753	-1.00
+21754	-1.00
+21755	-1.00
+21756	-1.00
+21757	-1.00
+21758	-1.00
+21759	-1.00
+21760	-1.00
+21761	-1.00
+21762	-1.00
+21763	-1.00
+21764	-1.00
+21765	-1.00
+21766	-1.00
+21767	-1.00
+21768	-1.00
+21963	-1.00
+21964	-1.00
+21965	-1.00
+21966	-1.00
+21967	-1.00
+21968	-1.00
+21969	-1.00
+21970	-1.00
+21971	-1.00
+21972	-1.00
+21973	-1.00
+21974	-1.00
+21975	-1.00
+21976	-1.00
+21977	-1.00
+21978	-1.00
+21979	-1.00
+21980	-1.00
+21981	-1.00
+21982	-1.00
+21983	-1.00
+21984	-1.00
+21985	-1.00
+21986	-1.00
+21987	-1.00
+21988	-1.00
+21989	-1.00
+21990	-1.00
+21991	-1.00
+21992	-1.00
+21993	-1.00
+21994	-1.00
+21995	-1.00
+21996	-1.00
+21997	-1.00
+21998	-1.00
+21999	-1.00
+22000	-1.00
+22001	-2.00
+22002	-2.00
+22003	-2.00
+22004	-2.00
+22005	-2.00
+22006	-1.00
+22062	-1.00
+22063	-1.00
+22064	-1.00
+22065	-1.00
+22066	-1.00
+22067	-1.00
+22068	-1.00
+22069	-1.00
+22070	-1.00
+22071	-1.00
+22072	-1.00
+22073	-1.00
+22074	-1.00
+22075	-1.00
+22076	-1.00
+22077	-1.00
+22078	-1.00
+22079	-1.00
+22080	-1.00
+22081	-1.00
+22082	-1.00
+22083	-1.00
+22084	-1.00
+22085	-1.00
+22086	-1.00
+22087	-1.00
+22088	-1.00
+22089	-1.00
+22090	-1.00
+22091	-1.00
+22092	-1.00
+22093	-1.00
+22094	-1.00
+22095	-1.00
+22096	-1.00
+22097	-1.00
+22098	-1.00
+22099	-1.00
+22100	-1.00
+22101	-1.00
+22102	-1.00
+22103	-1.00
+22104	-1.00
+22105	-1.00
+22106	-1.00
+22107	-1.00
+22108	-1.00
+22109	-1.00
+22110	-1.00
+22111	-1.00
+22112	-1.00
+22343	-1.00
+22344	-1.00
+22345	-1.00
+22346	-1.00
+22347	-1.00
+22348	-1.00
+22349	-1.00
+22350	-1.00
+22351	-1.00
+22352	-1.00
+22353	-1.00
+22354	-1.00
+22355	-1.00
+22356	-1.00
+22357	-1.00
+22358	-1.00
+22359	-1.00
+22360	-1.00
+22361	-1.00
+22362	-1.00
+22363	-1.00
+22364	-1.00
+22365	-1.00
+22366	-1.00
+22367	-1.00
+22368	-1.00
+22369	-1.00
+22370	-1.00
+22371	-1.00
+22372	-1.00
+22373	-1.00
+22374	-1.00
+22375	-1.00
+22376	-1.00
+22377	-1.00
+22378	-1.00
+22379	-1.00
+22380	-1.00
+22381	-1.00
+22382	-1.00
+22383	-1.00
+22384	-1.00
+22385	-1.00
+22386	-1.00
+22387	-1.00
+22388	-1.00
+22389	-1.00
+22390	-1.00
+22434	-1.00
+22435	-1.00
+22436	-1.00
+22437	-1.00
+22438	-1.00
+22439	-1.00
+22440	-1.00
+22441	-1.00
+22442	-1.00
+22443	-1.00
+22444	-1.00
+22445	-1.00
+22446	-2.00
+22447	-2.00
+22448	-2.00
+22449	-3.00
+22450	-3.00
+22451	-3.00
+22452	-3.00
+22453	-3.00
+22454	-3.00
+22455	-3.00
+22456	-3.00
+22457	-3.00
+22458	-3.00
+22459	-3.00
+22460	-3.00
+22461	-3.00
+22462	-3.00
+22463	-3.00
+22464	-3.00
+22465	-3.00
+22466	-3.00
+22467	-3.00
+22468	-3.00
+22469	-3.00
+22470	-3.00
+22471	-3.00
+22472	-3.00
+22473	-3.00
+22474	-3.00
+22475	-3.00
+22476	-3.00
+22477	-3.00
+22478	-3.00
+22479	-3.00
+22480	-2.00
+22481	-2.00
+22482	-2.00
+22483	-2.00
+22484	-2.00
+22485	-2.00
+22486	-2.00
+22487	-2.00
+22488	-2.00
+22489	-2.00
+22490	-2.00
+22491	-1.00
+22492	-1.00
+22493	-1.00
+22494	-1.00
+22495	-1.00
+22496	-1.00
+22497	-1.00
+22498	-1.00
+22499	-1.00
+22544	-1.00
+22545	-1.00
+22546	-1.00
+22547	-1.00
+22548	-1.00
+22549	-1.00
+22550	-1.00
+22551	-1.00
+22552	-1.00
+22553	-1.00
+22554	-1.00
+22555	-1.00
+22556	-1.00
+22557	-1.00
+22558	-1.00
+22559	-1.00
+22560	-1.00
+22561	-1.00
+22562	-1.00
+22563	-1.00
+22564	-1.00
+22565	-1.00
+22566	-1.00
+22567	-1.00
+22568	-1.00
+22569	-1.00
+22570	-1.00
+22571	-1.00
+22572	-1.00
+22573	-1.00
+22574	-1.00
+22575	-1.00
+22576	-1.00
+22577	-1.00
+22578	-1.00
+22579	-1.00
+22580	-1.00
+22581	-1.00
+22582	-1.00
+22583	-1.00
+22584	-1.00
+22585	-1.00
+22586	-1.00
+22587	-1.00
+22588	-1.00
+22589	-1.00
+22590	-1.00
+22591	-1.00
+22710	-1.00
+22711	-1.00
+22712	-1.00
+22713	-1.00
+22714	-1.00
+22715	-1.00
+22716	-1.00
+22717	-1.00
+22718	-1.00
+22719	-1.00
+22720	-1.00
+22721	-1.00
+22722	-1.00
+22723	-1.00
+22724	-1.00
+22725	-1.00
+22726	-1.00
+22727	-1.00
+22728	-1.00
+22729	-1.00
+22730	-1.00
+22731	-1.00
+22732	-1.00
+22733	-1.00
+22734	-1.00
+22735	-1.00
+22736	-1.00
+22737	-1.00
+22738	-1.00
+22739	-1.00
+22740	-1.00
+22741	-1.00
+22742	-1.00
+22743	-1.00
+22744	-1.00
+22745	-1.00
+22746	-1.00
+22747	-1.00
+22748	-1.00
+22749	-1.00
+22750	-1.00
+22751	-1.00
+22752	-1.00
+22753	-1.00
+22754	-1.00
+22755	-1.00
+22756	-1.00
+22757	-1.00
+22758	-1.00
+22759	-1.00
+22760	-1.00
+23105	-1.00
+23106	-1.00
+23107	-1.00
+23108	-1.00
+23109	-1.00
+23110	-1.00
+23111	-1.00
+23112	-1.00
+23113	-1.00
+23114	-1.00
+23115	-1.00
+23116	-1.00
+23117	-1.00
+23118	-1.00
+23119	-1.00
+23120	-1.00
+23121	-1.00
+23122	-1.00
+23123	-1.00
+23124	-1.00
+23125	-1.00
+23126	-1.00
+23127	-1.00
+23128	-1.00
+23129	-1.00
+23130	-1.00
+23131	-1.00
+23132	-1.00
+23133	-1.00
+23134	-1.00
+23135	-1.00
+23136	-1.00
+23137	-1.00
+23138	-1.00
+23139	-1.00
+23140	-1.00
+23141	-1.00
+23142	-1.00
+23143	-1.00
+23144	-1.00
+23145	-1.00
+23146	-1.00
+23147	-1.00
+23148	-1.00
+23149	-1.00
+23150	-1.00
+23151	-1.00
+23152	-1.00
+23153	-1.00
+23154	-1.00
+23354	-1.00
+23355	-1.00
+23356	-1.00
+23357	-1.00
+23358	-1.00
+23359	-1.00
+23360	-1.00
+23361	-1.00
+23362	-1.00
+23363	-1.00
+23364	-1.00
+23365	-1.00
+23366	-1.00
+23367	-1.00
+23368	-1.00
+23369	-1.00
+23370	-1.00
+23371	-1.00
+23372	-1.00
+23373	-1.00
+23374	-1.00
+23375	-1.00
+23376	-1.00
+23377	-1.00
+23378	-1.00
+23379	-1.00
+23380	-1.00
+23381	-1.00
+23382	-1.00
+23383	-1.00
+23384	-1.00
+23385	-1.00
+23386	-1.00
+23387	-1.00
+23388	-1.00
+23389	-1.00
+23390	-1.00
+23391	-1.00
+23392	-1.00
+23393	-1.00
+23394	-1.00
+23395	-1.00
+23396	-1.00
+23397	-1.00
+23398	-1.00
+23399	-1.00
+23400	-1.00
+23401	-1.00
+23402	-1.00
+23403	-1.00
+23404	-1.00
+24395	-1.00
+24396	-1.00
+24397	-1.00
+24398	-1.00
+24399	-1.00
+24400	-1.00
+24401	-1.00
+24402	-1.00
+24403	-1.00
+24404	-1.00
+24405	-1.00
+24406	-1.00
+24407	-1.00
+24408	-1.00
+24409	-1.00
+24410	-1.00
+24411	-1.00
+24412	-1.00
+24413	-1.00
+24414	-1.00
+24415	-1.00
+24416	-1.00
+24417	-1.00
+24418	-1.00
+24419	-1.00
+24420	-1.00
+24421	-1.00
+24422	-1.00
+24423	-1.00
+24424	-1.00
+24425	-1.00
+24426	-1.00
+24427	-1.00
+24428	-1.00
+24429	-1.00
+24430	-1.00
+24431	-1.00
+24432	-1.00
+24433	-1.00
+24434	-1.00
+24435	-1.00
+24558	-1.00
+24559	-1.00
+24560	-1.00
+24561	-1.00
+24562	-1.00
+24563	-1.00
+24564	-1.00
+24565	-1.00
+24566	-1.00
+24567	-1.00
+24568	-1.00
+24569	-1.00
+24570	-1.00
+24571	-1.00
+24572	-1.00
+24573	-1.00
+24574	-1.00
+24575	-1.00
+24576	-1.00
+24577	-1.00
+24578	-1.00
+24579	-1.00
+24580	-1.00
+24581	-1.00
+24582	-1.00
+24583	-1.00
+24584	-1.00
+24585	-1.00
+24586	-1.00
+24587	-1.00
+24588	-1.00
+24589	-1.00
+24590	-1.00
+24591	-1.00
+24592	-1.00
+24593	-1.00
+24594	-1.00
+24595	-1.00
+24596	-1.00
+24597	-1.00
+24598	-1.00
+24599	-1.00
+24600	-1.00
+24601	-1.00
+24602	-1.00
+24603	-1.00
+24604	-1.00
+24605	-1.00
+24606	-1.00
+24607	-1.00
+24608	-1.00
+28411	-1.00
+28412	-1.00
+28413	-1.00
+28414	-1.00
+28415	-1.00
+28416	-1.00
+28417	-1.00
+28418	-1.00
+28419	-1.00
+28420	-1.00
+28421	-1.00
+28422	-1.00
+28423	-1.00
+28424	-1.00
+28425	-1.00
+28426	-1.00
+28427	-1.00
+28428	-1.00
+28429	-1.00
+28430	-1.00
+28431	-2.00
+28432	-2.00
+28433	-2.00
+28434	-2.00
+28435	-2.00
+28436	-2.00
+28437	-2.00
+28438	-2.00
+28439	-2.00
+28440	-2.00
+28441	-2.00
+28442	-2.00
+28443	-2.00
+28444	-2.00
+28445	-2.00
+28446	-2.00
+28447	-2.00
+28448	-2.00
+28449	-2.00
+28450	-2.00
+28451	-2.00
+28452	-2.00
+28453	-2.00
+28454	-2.00
+28455	-2.00
+28456	-2.00
+28457	-2.00
+28458	-2.00
+28459	-2.00
+28460	-1.00
+28461	-1.00
+28462	-1.00
+28463	-1.00
+28464	-1.00
+28465	-1.00
+28466	-1.00
+28467	-1.00
+28468	-1.00
+28469	-1.00
+28470	-1.00
+28471	-1.00
+28472	-1.00
+28473	-1.00
+28474	-1.00
+28475	-1.00
+28476	-1.00
+28477	-1.00
+40638	-1.00
+40639	-1.00
+40640	-1.00
+40641	-1.00
+40642	-1.00
+40643	-1.00
+40644	-1.00
+40645	-1.00
+40646	-1.00
+40647	-1.00
+40648	-2.00
+40649	-2.00
+40650	-2.00
+40651	-2.00
+40652	-2.00
+40653	-2.00
+40654	-2.00
+40655	-2.00
+40656	-2.00
+40657	-2.00
+40658	-2.00
+40659	-2.00
+40660	-2.00
+40661	-2.00
+40662	-2.00
+40663	-2.00
+40664	-2.00
+40665	-2.00
+40666	-2.00
+40667	-2.00
+40668	-2.00
+40669	-2.00
+40670	-2.00
+40671	-2.00
+40672	-2.00
+40673	-2.00
+40674	-2.00
+40675	-2.00
+40676	-2.00
+40677	-2.00
+40678	-2.00
+40679	-2.00
+40680	-3.00
+40681	-3.00
+40682	-3.00
+40683	-3.00
+40684	-3.00
+40685	-3.00
+40686	-3.00
+40687	-2.00
+40688	-2.00
+40689	-2.00
+40690	-2.00
+40691	-2.00
+40692	-2.00
+40693	-1.00
+40694	-1.00
+40695	-1.00
+40696	-1.00
+40697	-1.00
+40698	-1.00
+40699	-1.00
+40700	-1.00
+40701	-1.00
+40702	-1.00
+40703	-1.00
+40704	-1.00
+40705	-1.00
+40706	-1.00
+40707	-1.00
+40708	-1.00
+40709	-1.00
+40710	-1.00
+40711	-1.00
+40712	-1.00
+40713	-1.00
+40714	-1.00
+40715	-1.00
+40716	-1.00
+40717	-1.00
+40718	-1.00
+40719	-1.00
+40720	-1.00
+40721	-1.00
+40722	-1.00
+40723	-1.00
+40724	-1.00
+40725	-1.00
+40726	-1.00
+40727	-1.00
+40728	-1.00
+40729	-1.00
+40730	-1.00
+40895	-1.00
+40896	-1.00
+40897	-1.00
+40898	-1.00
+40899	-1.00
+40900	-1.00
+40901	-1.00
+40902	-1.00
+40903	-1.00
+40904	-1.00
+40905	-1.00
+40906	-1.00
+40907	-1.00
+40908	-1.00
+40909	-1.00
+40910	-1.00
+40911	-1.00
+40912	-1.00
+40913	-1.00
+40914	-1.00
+40915	-1.00
+40916	-1.00
+40917	-1.00
+40918	-1.00
+40919	-1.00
+40920	-1.00
+40921	-1.00
+40922	-1.00
+40923	-1.00
+40924	-1.00
+40925	-1.00
+40926	-1.00
+40927	-1.00
+40928	-1.00
+40929	-1.00
+40930	-1.00
+40931	-1.00
+40932	-1.00
+40933	-1.00
+40934	-1.00
+40935	-1.00
+40936	-1.00
+40937	-1.00
+40938	-1.00
+40939	-1.00
+40940	-1.00
+40941	-1.00
+40942	-1.00
+40943	-1.00
+40944	-1.00
+40945	-1.00
+57998	-1.00
+57999	-1.00
+58000	-1.00
+58001	-1.00
+58002	-1.00
+58003	-1.00
+58004	-1.00
+58005	-1.00
+58006	-1.00
+58007	-1.00
+58008	-1.00
+58009	-1.00
+58010	-1.00
+58011	-1.00
+58012	-1.00
+58013	-1.00
+58014	-1.00
+58015	-1.00
+58016	-1.00
+58017	-1.00
+58018	-1.00
+58019	-1.00
+58020	-1.00
+58021	-1.00
+58022	-1.00
+58023	-1.00
+58024	-1.00
+58025	-1.00
+58026	-1.00
+58027	-1.00
+58028	-1.00
+58029	-1.00
+58030	-1.00
+58031	-1.00
+58032	-1.00
+58033	-1.00
+58034	-1.00
+58035	-1.00
+58036	-1.00
+58037	-1.00
+58038	-1.00
+58039	-1.00
+58040	-1.00
+58041	-1.00
+58042	-1.00
+58043	-1.00
+58044	-1.00
+58045	-1.00
+58046	-1.00
+58047	-1.00
+58135	-1.00
+58136	-1.00
+58137	-1.00
+58138	-1.00
+58139	-1.00
+58140	-1.00
+58141	-1.00
+58142	-1.00
+58143	-1.00
+58144	-1.00
+58145	-1.00
+58146	-1.00
+58147	-1.00
+58148	-1.00
+58149	-1.00
+58150	-1.00
+58151	-1.00
+58152	-1.00
+58153	-1.00
+58154	-1.00
+58155	-1.00
+58156	-1.00
+58157	-1.00
+58158	-1.00
+58159	-1.00
+58160	-1.00
+58161	-1.00
+58162	-1.00
+58163	-1.00
+58164	-1.00
+58165	-1.00
+58166	-1.00
+58167	-1.00
+58168	-1.00
+58169	-1.00
+58170	-1.00
+58171	-1.00
+58172	-1.00
+58173	-1.00
+58174	-1.00
+58175	-1.00
+58176	-1.00
+58177	-1.00
+58178	-1.00
+58179	-1.00
+58180	-1.00
+58181	-1.00
+58182	-1.00
+58183	-1.00
+58184	-1.00
+58185	-1.00
+80866	-1.00
+80867	-1.00
+80868	-1.00
+80869	-1.00
+80870	-1.00
+80871	-1.00
+80872	-1.00
+80873	-1.00
+80874	-1.00
+80875	-1.00
+80876	-1.00
+80877	-1.00
+80878	-1.00
+80879	-1.00
+80880	-1.00
+80881	-1.00
+80882	-1.00
+80883	-1.00
+80884	-1.00
+80885	-1.00
+80886	-1.00
+80887	-1.00
+80888	-1.00
+80889	-1.00
+80890	-1.00
+80891	-1.00
+80892	-1.00
+80893	-1.00
+80894	-1.00
+80895	-1.00
+80896	-1.00
+80897	-1.00
+80898	-1.00
+80899	-1.00
+80900	-1.00
+80901	-1.00
+80902	-1.00
+80903	-1.00
+80904	-1.00
+80905	-1.00
+80906	-1.00
+80907	-1.00
+80908	-1.00
+80909	-1.00
+80910	-1.00
+80911	-1.00
+80912	-1.00
+80913	-1.00
+80914	-1.00
+80915	-1.00
+80916	-1.00
+87735	-1.00
+87736	-1.00
+87737	-1.00
+87738	-1.00
+87739	-1.00
+87740	-1.00
+87741	-1.00
+87742	-1.00
+87743	-1.00
+87744	-1.00
+87745	-1.00
+87746	-1.00
+87747	-1.00
+87748	-1.00
+87749	-1.00
+87750	-1.00
+87751	-1.00
+87752	-1.00
+87753	-1.00
+87754	-1.00
+87755	-1.00
+87756	-1.00
+87757	-1.00
+87758	-1.00
+87759	-1.00
+87760	-1.00
+87761	-1.00
+87762	-1.00
+87763	-1.00
+87764	-1.00
+87765	-1.00
+87766	-1.00
+87767	-1.00
+87768	-1.00
+87769	-1.00
+87770	-1.00
+87771	-1.00
+87772	-1.00
+87773	-1.00
+87774	-1.00
+87775	-1.00
+87776	-1.00
+87777	-1.00
+87778	-1.00
+87779	-1.00
+87780	-1.00
+87781	-1.00
+87782	-1.00
+87800	-1.00
+87801	-1.00
+87802	-1.00
+87803	-1.00
+87804	-1.00
+87805	-1.00
+87806	-1.00
+87807	-1.00
+87808	-1.00
+87809	-1.00
+87810	-1.00
+87811	-1.00
+87812	-1.00
+87813	-1.00
+87814	-1.00
+87815	-1.00
+87816	-1.00
+87817	-1.00
+87818	-1.00
+87819	-1.00
+87820	-1.00
+87821	-1.00
+87822	-1.00
+87823	-1.00
+87824	-1.00
+87825	-1.00
+87826	-1.00
+87827	-1.00
+87828	-1.00
+87829	-1.00
+87830	-1.00
+87831	-1.00
+87832	-1.00
+87833	-1.00
+87834	-1.00
+87835	-1.00
+87836	-1.00
+87837	-1.00
+87838	-1.00
+87839	-1.00
+87840	-1.00
+87841	-1.00
+94827	-1.00
+94828	-1.00
+94829	-1.00
+94830	-1.00
+94831	-1.00
+94832	-1.00
+94833	-1.00
+94834	-1.00
+94835	-1.00
+94836	-1.00
+94837	-1.00
+94838	-1.00
+94839	-1.00
+94840	-1.00
+94841	-1.00
+94842	-1.00
+94843	-1.00
+94844	-1.00
+94845	-1.00
+94846	-1.00
+94847	-1.00
+94848	-1.00
+94849	-1.00
+94850	-1.00
+94851	-1.00
+94852	-1.00
+94853	-1.00
+94854	-1.00
+94855	-1.00
+94856	-1.00
+94857	-1.00
+94858	-1.00
+94859	-1.00
+94860	-1.00
+94861	-1.00
+94862	-1.00
+94863	-1.00
+94864	-1.00
+94865	-1.00
+94866	-1.00
+94867	-1.00
+94868	-1.00
+94869	-1.00
+94870	-1.00
+94871	-1.00
+94872	-1.00
+94873	-1.00
+94874	-1.00
+94875	-1.00
+94876	-1.00
+94877	-1.00
+variableStep chrom=chrY
+variableStep chrom=chrX
+variableStep chrom=chr9
+variableStep chrom=chrM
+variableStep chrom=chr22
+variableStep chrom=chr20
+variableStep chrom=chr21
+variableStep chrom=chr7
+variableStep chrom=chr6
+variableStep chrom=chr5
+variableStep chrom=chr4
+variableStep chrom=chr2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/testwig.wig	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,1788 @@
+variableStep chrom=chr13
+variableStep chrom=chr12
+variableStep chrom=chr11
+variableStep chrom=chr10
+variableStep chrom=chr17
+variableStep chrom=chr16
+variableStep chrom=chr15
+variableStep chrom=chr14
+variableStep chrom=chr19
+variableStep chrom=chr18
+variableStep chrom=chr8
+variableStep chrom=chr3
+variableStep chrom=chr1
+12674	1.00
+12675	1.00
+12676	1.00
+12677	1.00
+12678	1.00
+12679	1.00
+12680	1.00
+12681	1.00
+12682	1.00
+12683	1.00
+12684	1.00
+12685	1.00
+12686	1.00
+12687	1.00
+12688	1.00
+12689	1.00
+12690	1.00
+12691	1.00
+12692	1.00
+12693	1.00
+12694	1.00
+12695	1.00
+12696	1.00
+12697	1.00
+13221	1.00
+13222	1.00
+13223	1.00
+13224	1.00
+13225	1.00
+13226	1.00
+13227	1.00
+13228	1.00
+13229	1.00
+13230	1.00
+13231	1.00
+13232	1.00
+13233	1.00
+13234	1.00
+13235	1.00
+13236	1.00
+13237	1.00
+13238	1.00
+13239	1.00
+13240	1.00
+13241	1.00
+13242	1.00
+13243	1.00
+13244	1.00
+13245	1.00
+13246	1.00
+13247	1.00
+13483	1.00
+13484	1.00
+13485	1.00
+13486	1.00
+13487	1.00
+13488	1.00
+13489	1.00
+13490	1.00
+13491	1.00
+13492	1.00
+13493	1.00
+13494	1.00
+13495	1.00
+13496	1.00
+13497	1.00
+13498	1.00
+13499	1.00
+13500	1.00
+13501	1.00
+13502	1.00
+13503	1.00
+13504	1.00
+13505	1.00
+13506	1.00
+13507	1.00
+13508	1.00
+13509	1.00
+13510	1.00
+13511	1.00
+13512	1.00
+13513	1.00
+13514	1.00
+13515	1.00
+13516	1.00
+13517	1.00
+13518	1.00
+13519	1.00
+13520	1.00
+13521	1.00
+13522	1.00
+13523	1.00
+13524	1.00
+13525	1.00
+13526	1.00
+13527	1.00
+13528	1.00
+13529	1.00
+13530	1.00
+13531	1.00
+13532	1.00
+13533	1.00
+14596	1.00
+14597	1.00
+14598	1.00
+14599	1.00
+14600	1.00
+14601	1.00
+14602	1.00
+14603	1.00
+14604	1.00
+14605	1.00
+14606	1.00
+14607	1.00
+14608	1.00
+14609	1.00
+14610	1.00
+14611	1.00
+14612	1.00
+14613	1.00
+14614	1.00
+14615	1.00
+14616	1.00
+14617	1.00
+14618	1.00
+14619	1.00
+14620	1.00
+14621	1.00
+14622	1.00
+14623	1.00
+14624	1.00
+14625	1.00
+14626	1.00
+14627	1.00
+14628	1.00
+14629	1.00
+14630	1.00
+14631	1.00
+14632	1.00
+14633	1.00
+14634	1.00
+14635	1.00
+14636	1.00
+14637	1.00
+14638	1.00
+14639	1.00
+14640	1.00
+14641	1.00
+14642	1.00
+14643	1.00
+14644	1.00
+14645	1.00
+14676	1.00
+14677	1.00
+14678	1.00
+14679	1.00
+14680	1.00
+14681	1.00
+14682	1.00
+14683	1.00
+14684	1.00
+14685	1.00
+14686	1.00
+14687	1.00
+14688	1.00
+14689	1.00
+14690	1.00
+14691	1.00
+14692	1.00
+14693	1.00
+14694	1.00
+14695	1.00
+14696	1.00
+14697	1.00
+14698	1.00
+14699	1.00
+14700	1.00
+14701	1.00
+14702	1.00
+14703	1.00
+14704	1.00
+14705	1.00
+14706	1.00
+14707	1.00
+14708	1.00
+14709	1.00
+14710	1.00
+14711	1.00
+14712	1.00
+14713	1.00
+14714	1.00
+14715	1.00
+14716	1.00
+14717	1.00
+14718	1.00
+14719	1.00
+14720	1.00
+14721	1.00
+14722	1.00
+14723	1.00
+14724	1.00
+14725	1.00
+14726	1.00
+16455	1.00
+16456	1.00
+16457	1.00
+16458	1.00
+16459	1.00
+16460	1.00
+16461	1.00
+16462	1.00
+16463	1.00
+16464	1.00
+16465	1.00
+16466	1.00
+16467	1.00
+16468	1.00
+16469	1.00
+16470	1.00
+16471	1.00
+16472	1.00
+16473	1.00
+16474	1.00
+16475	1.00
+16476	1.00
+16477	1.00
+16478	1.00
+16479	1.00
+16480	1.00
+16481	1.00
+16482	1.00
+16483	1.00
+16484	1.00
+16485	1.00
+16486	1.00
+16487	1.00
+16488	1.00
+16489	1.00
+16490	1.00
+16491	1.00
+16492	1.00
+16493	1.00
+16494	1.00
+16495	1.00
+16496	1.00
+16497	1.00
+16498	1.00
+16499	1.00
+16500	1.00
+16501	1.00
+16502	1.00
+16503	1.00
+16504	1.00
+16506	1.00
+16507	1.00
+16508	1.00
+16509	1.00
+16510	1.00
+16511	1.00
+16512	1.00
+16513	1.00
+16514	1.00
+16515	1.00
+16516	1.00
+16517	1.00
+16518	1.00
+16519	1.00
+16520	1.00
+16521	1.00
+16522	1.00
+16523	1.00
+16524	1.00
+16525	1.00
+16526	1.00
+16527	1.00
+16528	1.00
+16529	1.00
+16530	1.00
+16531	1.00
+16532	1.00
+16533	1.00
+16534	1.00
+16535	1.00
+16536	1.00
+16537	1.00
+16538	1.00
+16539	1.00
+16540	1.00
+16541	1.00
+16542	1.00
+16543	1.00
+16544	1.00
+16545	1.00
+16546	1.00
+16547	1.00
+16548	1.00
+16549	1.00
+16550	1.00
+16551	1.00
+16552	1.00
+16553	1.00
+16554	1.00
+16555	1.00
+16556	1.00
+17051	1.00
+17052	1.00
+17053	1.00
+17054	1.00
+17055	1.00
+17233	1.00
+17234	1.00
+17235	1.00
+17236	1.00
+17237	1.00
+17238	1.00
+17239	1.00
+17240	1.00
+17241	1.00
+17242	1.00
+17243	1.00
+17244	1.00
+17245	1.00
+17246	1.00
+17247	1.00
+17248	1.00
+17249	1.00
+17250	1.00
+17251	1.00
+17252	1.00
+17253	1.00
+17254	1.00
+17255	1.00
+17256	1.00
+17257	1.00
+17258	1.00
+17259	1.00
+17260	1.00
+17261	1.00
+17262	1.00
+17263	1.00
+17264	1.00
+17265	1.00
+17266	1.00
+17267	1.00
+17268	1.00
+17269	1.00
+17270	1.00
+17271	1.00
+17272	1.00
+17273	1.00
+17274	1.00
+17275	1.00
+17276	1.00
+17277	1.00
+17278	1.00
+17555	1.00
+17556	1.00
+17557	1.00
+17558	1.00
+17559	1.00
+17560	1.00
+17561	1.00
+17562	1.00
+17563	1.00
+17564	1.00
+17565	1.00
+17566	1.00
+17567	1.00
+17568	1.00
+17569	1.00
+17570	1.00
+17571	1.00
+17572	1.00
+17573	1.00
+17574	1.00
+17575	1.00
+17576	1.00
+17577	1.00
+17578	1.00
+17579	1.00
+17580	1.00
+17581	1.00
+17582	1.00
+17583	1.00
+17584	1.00
+17585	1.00
+17586	1.00
+17587	1.00
+17588	1.00
+17589	1.00
+17590	1.00
+17591	1.00
+17592	1.00
+17593	1.00
+17594	1.00
+17595	1.00
+17596	1.00
+17597	1.00
+17598	1.00
+17599	1.00
+17600	1.00
+17601	1.00
+17602	1.00
+17603	1.00
+17604	1.00
+17605	1.00
+20203	1.00
+20204	1.00
+20205	1.00
+20206	1.00
+20207	1.00
+20208	1.00
+20209	1.00
+20210	1.00
+20211	1.00
+20212	1.00
+20213	1.00
+20214	1.00
+20215	1.00
+20216	1.00
+20217	1.00
+20218	1.00
+20219	1.00
+20220	1.00
+20221	1.00
+20222	1.00
+20223	1.00
+20224	1.00
+20225	1.00
+20226	1.00
+20227	1.00
+20228	1.00
+20229	1.00
+20230	1.00
+20231	1.00
+20232	1.00
+20233	1.00
+20234	1.00
+20235	1.00
+20236	1.00
+20237	1.00
+20238	1.00
+20239	1.00
+20240	1.00
+20241	1.00
+20242	1.00
+20243	1.00
+20244	1.00
+20245	1.00
+20246	1.00
+20247	1.00
+20248	1.00
+20249	1.00
+20250	1.00
+20251	1.00
+20252	1.00
+20253	1.00
+20400	1.00
+20401	1.00
+20402	1.00
+20403	1.00
+20404	1.00
+20405	1.00
+20406	1.00
+20407	1.00
+20408	1.00
+20409	1.00
+20410	1.00
+20411	1.00
+20412	1.00
+20413	1.00
+20414	1.00
+20415	1.00
+20416	1.00
+20417	1.00
+20418	1.00
+20419	1.00
+20420	1.00
+20421	1.00
+20422	1.00
+20423	1.00
+20424	1.00
+20425	1.00
+20426	1.00
+20427	1.00
+20428	1.00
+20429	1.00
+20430	1.00
+20431	1.00
+20432	1.00
+20433	1.00
+20434	1.00
+20435	1.00
+20436	1.00
+20437	1.00
+20438	1.00
+20439	1.00
+20440	1.00
+20441	1.00
+20442	1.00
+20443	1.00
+20444	1.00
+20445	1.00
+20446	1.00
+20447	1.00
+20448	1.00
+20449	1.00
+20450	1.00
+20773	1.00
+20774	1.00
+20775	1.00
+20776	1.00
+20777	1.00
+20778	1.00
+20779	1.00
+20780	1.00
+20781	1.00
+20782	1.00
+20783	1.00
+20784	1.00
+20785	1.00
+20786	1.00
+20787	1.00
+20788	1.00
+20789	1.00
+20790	1.00
+20791	1.00
+20792	1.00
+20793	1.00
+20794	1.00
+20795	1.00
+20796	1.00
+20797	1.00
+20798	1.00
+20799	1.00
+20800	1.00
+20801	1.00
+20802	1.00
+20803	1.00
+20804	1.00
+20805	1.00
+20806	1.00
+20807	1.00
+20808	1.00
+20809	1.00
+20810	1.00
+20811	1.00
+20812	1.00
+20813	1.00
+20814	1.00
+20815	1.00
+20816	1.00
+20817	1.00
+20818	1.00
+20819	1.00
+20849	1.00
+20850	1.00
+20851	1.00
+20852	1.00
+20853	1.00
+20854	1.00
+20855	1.00
+20856	1.00
+20857	1.00
+20858	1.00
+20859	1.00
+20860	1.00
+20861	1.00
+20862	1.00
+20863	1.00
+20864	1.00
+20865	1.00
+20866	1.00
+20867	1.00
+20868	1.00
+20869	1.00
+20870	1.00
+20871	1.00
+20872	1.00
+20873	1.00
+20874	1.00
+20875	1.00
+20876	1.00
+20877	1.00
+20878	1.00
+20879	1.00
+20880	1.00
+20881	1.00
+20882	1.00
+20883	1.00
+20884	1.00
+20885	1.00
+20886	1.00
+20887	1.00
+20888	1.00
+20889	1.00
+20890	1.00
+20891	1.00
+20892	1.00
+20893	1.00
+20894	1.00
+20895	1.00
+20896	1.00
+20897	1.00
+20898	1.00
+20899	1.00
+21469	1.00
+21470	1.00
+21471	1.00
+21472	1.00
+21473	2.00
+21474	2.00
+21475	2.00
+21476	2.00
+21477	2.00
+21478	2.00
+21479	2.00
+21480	2.00
+21481	2.00
+21482	2.00
+21483	2.00
+21484	2.00
+21485	2.00
+21486	2.00
+21487	2.00
+21488	2.00
+21489	2.00
+21490	2.00
+21491	2.00
+21492	2.00
+21493	2.00
+21494	2.00
+21495	2.00
+21496	2.00
+21497	2.00
+21498	2.00
+21499	2.00
+21500	2.00
+21501	2.00
+21502	2.00
+21503	2.00
+21504	2.00
+21505	2.00
+21506	2.00
+21507	2.00
+21508	1.00
+21509	1.00
+21510	1.00
+21511	1.00
+21512	1.00
+21513	1.00
+21514	1.00
+21515	1.00
+21516	1.00
+21517	1.00
+21526	1.00
+21527	1.00
+21528	1.00
+21529	1.00
+21530	1.00
+21531	1.00
+21543	1.00
+21544	1.00
+21545	1.00
+21546	1.00
+21547	1.00
+21548	1.00
+21549	1.00
+21550	1.00
+21551	1.00
+21552	1.00
+21553	1.00
+21554	1.00
+21555	1.00
+21556	1.00
+21557	1.00
+21558	1.00
+21559	1.00
+21560	1.00
+21561	1.00
+21562	1.00
+21563	1.00
+21564	1.00
+21565	1.00
+21566	1.00
+21567	1.00
+21568	1.00
+21569	1.00
+21570	1.00
+21571	1.00
+21572	1.00
+21573	1.00
+21574	1.00
+21575	1.00
+21576	1.00
+21577	1.00
+21578	1.00
+21579	1.00
+21580	1.00
+21581	1.00
+21582	1.00
+21583	1.00
+21584	1.00
+21585	1.00
+21586	1.00
+21587	1.00
+21588	1.00
+21589	1.00
+21590	1.00
+21591	1.00
+21592	1.00
+21593	1.00
+21723	1.00
+21724	1.00
+21725	1.00
+21726	1.00
+21727	1.00
+21728	1.00
+21729	1.00
+21730	1.00
+21731	1.00
+21732	1.00
+21733	1.00
+21734	1.00
+21735	1.00
+21736	1.00
+21737	1.00
+21738	1.00
+21739	1.00
+21740	1.00
+21741	1.00
+21742	1.00
+21743	1.00
+21744	1.00
+21745	1.00
+21746	1.00
+21747	1.00
+21748	1.00
+21749	1.00
+21750	1.00
+21751	1.00
+21752	1.00
+21753	1.00
+21754	1.00
+21755	1.00
+21756	1.00
+21757	1.00
+21758	1.00
+21759	1.00
+21760	1.00
+21761	1.00
+21762	1.00
+21763	1.00
+21764	1.00
+21765	1.00
+21766	1.00
+21767	1.00
+21768	1.00
+21963	1.00
+21964	1.00
+21965	1.00
+21966	1.00
+21967	1.00
+21968	1.00
+21969	1.00
+21970	1.00
+21971	1.00
+21972	1.00
+21973	1.00
+21974	1.00
+21975	1.00
+21976	1.00
+21977	1.00
+21978	1.00
+21979	1.00
+21980	1.00
+21981	1.00
+21982	1.00
+21983	1.00
+21984	1.00
+21985	1.00
+21986	1.00
+21987	1.00
+21988	1.00
+21989	1.00
+21990	1.00
+21991	1.00
+21992	1.00
+21993	1.00
+21994	1.00
+21995	1.00
+21996	1.00
+21997	1.00
+21998	1.00
+21999	1.00
+22000	1.00
+22001	2.00
+22002	2.00
+22003	2.00
+22004	2.00
+22005	2.00
+22006	1.00
+22062	1.00
+22063	1.00
+22064	1.00
+22065	1.00
+22066	1.00
+22067	1.00
+22068	1.00
+22069	1.00
+22070	1.00
+22071	1.00
+22072	1.00
+22073	1.00
+22074	1.00
+22075	1.00
+22076	1.00
+22077	1.00
+22078	1.00
+22079	1.00
+22080	1.00
+22081	1.00
+22082	1.00
+22083	1.00
+22084	1.00
+22085	1.00
+22086	1.00
+22087	1.00
+22088	1.00
+22089	1.00
+22090	1.00
+22091	1.00
+22092	1.00
+22093	1.00
+22094	1.00
+22095	1.00
+22096	1.00
+22097	1.00
+22098	1.00
+22099	1.00
+22100	1.00
+22101	1.00
+22102	1.00
+22103	1.00
+22104	1.00
+22105	1.00
+22106	1.00
+22107	1.00
+22108	1.00
+22109	1.00
+22110	1.00
+22111	1.00
+22112	1.00
+22343	1.00
+22344	1.00
+22345	1.00
+22346	1.00
+22347	1.00
+22348	1.00
+22349	1.00
+22350	1.00
+22351	1.00
+22352	1.00
+22353	1.00
+22354	1.00
+22355	1.00
+22356	1.00
+22357	1.00
+22358	1.00
+22359	1.00
+22360	1.00
+22361	1.00
+22362	1.00
+22363	1.00
+22364	1.00
+22365	1.00
+22366	1.00
+22367	1.00
+22368	1.00
+22369	1.00
+22370	1.00
+22371	1.00
+22372	1.00
+22373	1.00
+22374	1.00
+22375	1.00
+22376	1.00
+22377	1.00
+22378	1.00
+22379	1.00
+22380	1.00
+22381	1.00
+22382	1.00
+22383	1.00
+22384	1.00
+22385	1.00
+22386	1.00
+22387	1.00
+22388	1.00
+22389	1.00
+22390	1.00
+22434	1.00
+22435	1.00
+22436	1.00
+22437	1.00
+22438	1.00
+22439	1.00
+22440	1.00
+22441	1.00
+22442	1.00
+22443	1.00
+22444	1.00
+22445	1.00
+22446	2.00
+22447	2.00
+22448	2.00
+22449	3.00
+22450	3.00
+22451	3.00
+22452	3.00
+22453	3.00
+22454	3.00
+22455	3.00
+22456	3.00
+22457	3.00
+22458	3.00
+22459	3.00
+22460	3.00
+22461	3.00
+22462	3.00
+22463	3.00
+22464	3.00
+22465	3.00
+22466	3.00
+22467	3.00
+22468	3.00
+22469	3.00
+22470	3.00
+22471	3.00
+22472	3.00
+22473	3.00
+22474	3.00
+22475	3.00
+22476	3.00
+22477	3.00
+22478	3.00
+22479	3.00
+22480	2.00
+22481	2.00
+22482	2.00
+22483	2.00
+22484	2.00
+22485	2.00
+22486	2.00
+22487	2.00
+22488	2.00
+22489	2.00
+22490	2.00
+22491	1.00
+22492	1.00
+22493	1.00
+22494	1.00
+22495	1.00
+22496	1.00
+22497	1.00
+22498	1.00
+22499	1.00
+22544	1.00
+22545	1.00
+22546	1.00
+22547	1.00
+22548	1.00
+22549	1.00
+22550	1.00
+22551	1.00
+22552	1.00
+22553	1.00
+22554	1.00
+22555	1.00
+22556	1.00
+22557	1.00
+22558	1.00
+22559	1.00
+22560	1.00
+22561	1.00
+22562	1.00
+22563	1.00
+22564	1.00
+22565	1.00
+22566	1.00
+22567	1.00
+22568	1.00
+22569	1.00
+22570	1.00
+22571	1.00
+22572	1.00
+22573	1.00
+22574	1.00
+22575	1.00
+22576	1.00
+22577	1.00
+22578	1.00
+22579	1.00
+22580	1.00
+22581	1.00
+22582	1.00
+22583	1.00
+22584	1.00
+22585	1.00
+22586	1.00
+22587	1.00
+22588	1.00
+22589	1.00
+22590	1.00
+22591	1.00
+22710	1.00
+22711	1.00
+22712	1.00
+22713	1.00
+22714	1.00
+22715	1.00
+22716	1.00
+22717	1.00
+22718	1.00
+22719	1.00
+22720	1.00
+22721	1.00
+22722	1.00
+22723	1.00
+22724	1.00
+22725	1.00
+22726	1.00
+22727	1.00
+22728	1.00
+22729	1.00
+22730	1.00
+22731	1.00
+22732	1.00
+22733	1.00
+22734	1.00
+22735	1.00
+22736	1.00
+22737	1.00
+22738	1.00
+22739	1.00
+22740	1.00
+22741	1.00
+22742	1.00
+22743	1.00
+22744	1.00
+22745	1.00
+22746	1.00
+22747	1.00
+22748	1.00
+22749	1.00
+22750	1.00
+22751	1.00
+22752	1.00
+22753	1.00
+22754	1.00
+22755	1.00
+22756	1.00
+22757	1.00
+22758	1.00
+22759	1.00
+22760	1.00
+23105	1.00
+23106	1.00
+23107	1.00
+23108	1.00
+23109	1.00
+23110	1.00
+23111	1.00
+23112	1.00
+23113	1.00
+23114	1.00
+23115	1.00
+23116	1.00
+23117	1.00
+23118	1.00
+23119	1.00
+23120	1.00
+23121	1.00
+23122	1.00
+23123	1.00
+23124	1.00
+23125	1.00
+23126	1.00
+23127	1.00
+23128	1.00
+23129	1.00
+23130	1.00
+23131	1.00
+23132	1.00
+23133	1.00
+23134	1.00
+23135	1.00
+23136	1.00
+23137	1.00
+23138	1.00
+23139	1.00
+23140	1.00
+23141	1.00
+23142	1.00
+23143	1.00
+23144	1.00
+23145	1.00
+23146	1.00
+23147	1.00
+23148	1.00
+23149	1.00
+23150	1.00
+23151	1.00
+23152	1.00
+23153	1.00
+23154	1.00
+23354	1.00
+23355	1.00
+23356	1.00
+23357	1.00
+23358	1.00
+23359	1.00
+23360	1.00
+23361	1.00
+23362	1.00
+23363	1.00
+23364	1.00
+23365	1.00
+23366	1.00
+23367	1.00
+23368	1.00
+23369	1.00
+23370	1.00
+23371	1.00
+23372	1.00
+23373	1.00
+23374	1.00
+23375	1.00
+23376	1.00
+23377	1.00
+23378	1.00
+23379	1.00
+23380	1.00
+23381	1.00
+23382	1.00
+23383	1.00
+23384	1.00
+23385	1.00
+23386	1.00
+23387	1.00
+23388	1.00
+23389	1.00
+23390	1.00
+23391	1.00
+23392	1.00
+23393	1.00
+23394	1.00
+23395	1.00
+23396	1.00
+23397	1.00
+23398	1.00
+23399	1.00
+23400	1.00
+23401	1.00
+23402	1.00
+23403	1.00
+23404	1.00
+24395	1.00
+24396	1.00
+24397	1.00
+24398	1.00
+24399	1.00
+24400	1.00
+24401	1.00
+24402	1.00
+24403	1.00
+24404	1.00
+24405	1.00
+24406	1.00
+24407	1.00
+24408	1.00
+24409	1.00
+24410	1.00
+24411	1.00
+24412	1.00
+24413	1.00
+24414	1.00
+24415	1.00
+24416	1.00
+24417	1.00
+24418	1.00
+24419	1.00
+24420	1.00
+24421	1.00
+24422	1.00
+24423	1.00
+24424	1.00
+24425	1.00
+24426	1.00
+24427	1.00
+24428	1.00
+24429	1.00
+24430	1.00
+24431	1.00
+24432	1.00
+24433	1.00
+24434	1.00
+24435	1.00
+24558	1.00
+24559	1.00
+24560	1.00
+24561	1.00
+24562	1.00
+24563	1.00
+24564	1.00
+24565	1.00
+24566	1.00
+24567	1.00
+24568	1.00
+24569	1.00
+24570	1.00
+24571	1.00
+24572	1.00
+24573	1.00
+24574	1.00
+24575	1.00
+24576	1.00
+24577	1.00
+24578	1.00
+24579	1.00
+24580	1.00
+24581	1.00
+24582	1.00
+24583	1.00
+24584	1.00
+24585	1.00
+24586	1.00
+24587	1.00
+24588	1.00
+24589	1.00
+24590	1.00
+24591	1.00
+24592	1.00
+24593	1.00
+24594	1.00
+24595	1.00
+24596	1.00
+24597	1.00
+24598	1.00
+24599	1.00
+24600	1.00
+24601	1.00
+24602	1.00
+24603	1.00
+24604	1.00
+24605	1.00
+24606	1.00
+24607	1.00
+24608	1.00
+28411	1.00
+28412	1.00
+28413	1.00
+28414	1.00
+28415	1.00
+28416	1.00
+28417	1.00
+28418	1.00
+28419	1.00
+28420	1.00
+28421	1.00
+28422	1.00
+28423	1.00
+28424	1.00
+28425	1.00
+28426	1.00
+28427	1.00
+28428	1.00
+28429	1.00
+28430	1.00
+28431	2.00
+28432	2.00
+28433	2.00
+28434	2.00
+28435	2.00
+28436	2.00
+28437	2.00
+28438	2.00
+28439	2.00
+28440	2.00
+28441	2.00
+28442	2.00
+28443	2.00
+28444	2.00
+28445	2.00
+28446	2.00
+28447	2.00
+28448	2.00
+28449	2.00
+28450	2.00
+28451	2.00
+28452	2.00
+28453	2.00
+28454	2.00
+28455	2.00
+28456	2.00
+28457	2.00
+28458	2.00
+28459	2.00
+28460	1.00
+28461	1.00
+28462	1.00
+28463	1.00
+28464	1.00
+28465	1.00
+28466	1.00
+28467	1.00
+28468	1.00
+28469	1.00
+28470	1.00
+28471	1.00
+28472	1.00
+28473	1.00
+28474	1.00
+28475	1.00
+28476	1.00
+28477	1.00
+40638	1.00
+40639	1.00
+40640	1.00
+40641	1.00
+40642	1.00
+40643	1.00
+40644	1.00
+40645	1.00
+40646	1.00
+40647	1.00
+40648	2.00
+40649	2.00
+40650	2.00
+40651	2.00
+40652	2.00
+40653	2.00
+40654	2.00
+40655	2.00
+40656	2.00
+40657	2.00
+40658	2.00
+40659	2.00
+40660	2.00
+40661	2.00
+40662	2.00
+40663	2.00
+40664	2.00
+40665	2.00
+40666	2.00
+40667	2.00
+40668	2.00
+40669	2.00
+40670	2.00
+40671	2.00
+40672	2.00
+40673	2.00
+40674	2.00
+40675	2.00
+40676	2.00
+40677	2.00
+40678	2.00
+40679	2.00
+40680	3.00
+40681	3.00
+40682	3.00
+40683	3.00
+40684	3.00
+40685	3.00
+40686	3.00
+40687	2.00
+40688	2.00
+40689	2.00
+40690	2.00
+40691	2.00
+40692	2.00
+40693	1.00
+40694	1.00
+40695	1.00
+40696	1.00
+40697	1.00
+40698	1.00
+40699	1.00
+40700	1.00
+40701	1.00
+40702	1.00
+40703	1.00
+40704	1.00
+40705	1.00
+40706	1.00
+40707	1.00
+40708	1.00
+40709	1.00
+40710	1.00
+40711	1.00
+40712	1.00
+40713	1.00
+40714	1.00
+40715	1.00
+40716	1.00
+40717	1.00
+40718	1.00
+40719	1.00
+40720	1.00
+40721	1.00
+40722	1.00
+40723	1.00
+40724	1.00
+40725	1.00
+40726	1.00
+40727	1.00
+40728	1.00
+40729	1.00
+40730	1.00
+40895	1.00
+40896	1.00
+40897	1.00
+40898	1.00
+40899	1.00
+40900	1.00
+40901	1.00
+40902	1.00
+40903	1.00
+40904	1.00
+40905	1.00
+40906	1.00
+40907	1.00
+40908	1.00
+40909	1.00
+40910	1.00
+40911	1.00
+40912	1.00
+40913	1.00
+40914	1.00
+40915	1.00
+40916	1.00
+40917	1.00
+40918	1.00
+40919	1.00
+40920	1.00
+40921	1.00
+40922	1.00
+40923	1.00
+40924	1.00
+40925	1.00
+40926	1.00
+40927	1.00
+40928	1.00
+40929	1.00
+40930	1.00
+40931	1.00
+40932	1.00
+40933	1.00
+40934	1.00
+40935	1.00
+40936	1.00
+40937	1.00
+40938	1.00
+40939	1.00
+40940	1.00
+40941	1.00
+40942	1.00
+40943	1.00
+40944	1.00
+40945	1.00
+57998	1.00
+57999	1.00
+58000	1.00
+58001	1.00
+58002	1.00
+58003	1.00
+58004	1.00
+58005	1.00
+58006	1.00
+58007	1.00
+58008	1.00
+58009	1.00
+58010	1.00
+58011	1.00
+58012	1.00
+58013	1.00
+58014	1.00
+58015	1.00
+58016	1.00
+58017	1.00
+58018	1.00
+58019	1.00
+58020	1.00
+58021	1.00
+58022	1.00
+58023	1.00
+58024	1.00
+58025	1.00
+58026	1.00
+58027	1.00
+58028	1.00
+58029	1.00
+58030	1.00
+58031	1.00
+58032	1.00
+58033	1.00
+58034	1.00
+58035	1.00
+58036	1.00
+58037	1.00
+58038	1.00
+58039	1.00
+58040	1.00
+58041	1.00
+58042	1.00
+58043	1.00
+58044	1.00
+58045	1.00
+58046	1.00
+58047	1.00
+58135	1.00
+58136	1.00
+58137	1.00
+58138	1.00
+58139	1.00
+58140	1.00
+58141	1.00
+58142	1.00
+58143	1.00
+58144	1.00
+58145	1.00
+58146	1.00
+58147	1.00
+58148	1.00
+58149	1.00
+58150	1.00
+58151	1.00
+58152	1.00
+58153	1.00
+58154	1.00
+58155	1.00
+58156	1.00
+58157	1.00
+58158	1.00
+58159	1.00
+58160	1.00
+58161	1.00
+58162	1.00
+58163	1.00
+58164	1.00
+58165	1.00
+58166	1.00
+58167	1.00
+58168	1.00
+58169	1.00
+58170	1.00
+58171	1.00
+58172	1.00
+58173	1.00
+58174	1.00
+58175	1.00
+58176	1.00
+58177	1.00
+58178	1.00
+58179	1.00
+58180	1.00
+58181	1.00
+58182	1.00
+58183	1.00
+58184	1.00
+58185	1.00
+80866	1.00
+80867	1.00
+80868	1.00
+80869	1.00
+80870	1.00
+80871	1.00
+80872	1.00
+80873	1.00
+80874	1.00
+80875	1.00
+80876	1.00
+80877	1.00
+80878	1.00
+80879	1.00
+80880	1.00
+80881	1.00
+80882	1.00
+80883	1.00
+80884	1.00
+80885	1.00
+80886	1.00
+80887	1.00
+80888	1.00
+80889	1.00
+80890	1.00
+80891	1.00
+80892	1.00
+80893	1.00
+80894	1.00
+80895	1.00
+80896	1.00
+80897	1.00
+80898	1.00
+80899	1.00
+80900	1.00
+80901	1.00
+80902	1.00
+80903	1.00
+80904	1.00
+80905	1.00
+80906	1.00
+80907	1.00
+80908	1.00
+80909	1.00
+80910	1.00
+80911	1.00
+80912	1.00
+80913	1.00
+80914	1.00
+80915	1.00
+80916	1.00
+87735	1.00
+87736	1.00
+87737	1.00
+87738	1.00
+87739	1.00
+87740	1.00
+87741	1.00
+87742	1.00
+87743	1.00
+87744	1.00
+87745	1.00
+87746	1.00
+87747	1.00
+87748	1.00
+87749	1.00
+87750	1.00
+87751	1.00
+87752	1.00
+87753	1.00
+87754	1.00
+87755	1.00
+87756	1.00
+87757	1.00
+87758	1.00
+87759	1.00
+87760	1.00
+87761	1.00
+87762	1.00
+87763	1.00
+87764	1.00
+87765	1.00
+87766	1.00
+87767	1.00
+87768	1.00
+87769	1.00
+87770	1.00
+87771	1.00
+87772	1.00
+87773	1.00
+87774	1.00
+87775	1.00
+87776	1.00
+87777	1.00
+87778	1.00
+87779	1.00
+87780	1.00
+87781	1.00
+87782	1.00
+87800	1.00
+87801	1.00
+87802	1.00
+87803	1.00
+87804	1.00
+87805	1.00
+87806	1.00
+87807	1.00
+87808	1.00
+87809	1.00
+87810	1.00
+87811	1.00
+87812	1.00
+87813	1.00
+87814	1.00
+87815	1.00
+87816	1.00
+87817	1.00
+87818	1.00
+87819	1.00
+87820	1.00
+87821	1.00
+87822	1.00
+87823	1.00
+87824	1.00
+87825	1.00
+87826	1.00
+87827	1.00
+87828	1.00
+87829	1.00
+87830	1.00
+87831	1.00
+87832	1.00
+87833	1.00
+87834	1.00
+87835	1.00
+87836	1.00
+87837	1.00
+87838	1.00
+87839	1.00
+87840	1.00
+87841	1.00
+94827	1.00
+94828	1.00
+94829	1.00
+94830	1.00
+94831	1.00
+94832	1.00
+94833	1.00
+94834	1.00
+94835	1.00
+94836	1.00
+94837	1.00
+94838	1.00
+94839	1.00
+94840	1.00
+94841	1.00
+94842	1.00
+94843	1.00
+94844	1.00
+94845	1.00
+94846	1.00
+94847	1.00
+94848	1.00
+94849	1.00
+94850	1.00
+94851	1.00
+94852	1.00
+94853	1.00
+94854	1.00
+94855	1.00
+94856	1.00
+94857	1.00
+94858	1.00
+94859	1.00
+94860	1.00
+94861	1.00
+94862	1.00
+94863	1.00
+94864	1.00
+94865	1.00
+94866	1.00
+94867	1.00
+94868	1.00
+94869	1.00
+94870	1.00
+94871	1.00
+94872	1.00
+94873	1.00
+94874	1.00
+94875	1.00
+94876	1.00
+94877	1.00
+variableStep chrom=chrY
+variableStep chrom=chrX
+variableStep chrom=chr9
+variableStep chrom=chrM
+variableStep chrom=chr22
+variableStep chrom=chr20
+variableStep chrom=chr21
+variableStep chrom=chr7
+variableStep chrom=chr6
+variableStep chrom=chr5
+variableStep chrom=chr4
+variableStep chrom=chr2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tin.xml	Tue Mar 14 10:22:57 2017 -0400
@@ -0,0 +1,144 @@
+<tool id="rseqc_tin" name="Transcript Integrity Number" version="@WRAPPER_VERSION@">
+    <description>
+        evaluates RNA integrity at a transcript level
+    </description>
+
+    <macros>
+        <import>rseqc_macros.xml</import>
+    </macros>
+
+    <expand macro="requirements" />
+
+    <expand macro="stdio" />
+
+    <version_command><![CDATA[tin.py --version]]></version_command>
+
+    <!-- Generate output files here because tin.py removes all instances of "bam"
+    in the filename -->
+    <command><![CDATA[
+        #import re
+        ln -sf '${input}' 'input.bam' &&
+        ln -sf '${input.metadata.bam_index}' 'input.bam.bai' &&
+        tin.py -i 'input.bam' --refgene='${refgene}' --minCov=${minCov}
+        --sample-size=${samplesize} ${subtractbackground}
+        ]]>
+    </command>
+
+    <inputs>
+        <expand macro="bam_param" />
+        <expand macro="refgene_param" />
+        <param name="minCov" type="integer" value="10" label="Minimum coverage (default=10)"
+            help="Minimum number of reads mapped to a transcript (--minCov)." />
+        <param name="samplesize" type="integer" value="100" label="Sample size (default=100)"
+            help="Number of equal-spaced nucleotide positions picked from mRNA.
+            Note: if this number is larger than the length of mRNA (L), it will
+            be halved until is's smaller than L. (--sample-size)." />
+        <param name="subtractbackground" type="boolean" value="false" falsevalue=""
+            truevalue="--subtract-background" label="Subtract background noise
+            (default=No)" help="Subtract background noise (estimated from
+            intronic reads). Only use this option if there are substantial
+            intronic reads (--subtract-background)." />
+    </inputs>
+
+    <outputs>
+        <data name="outputsummary" format="tabular" from_work_dir="input.summary.txt" label="TIN on ${on_string} (summary)" />
+        <data name="outputxls" format="xls" from_work_dir="input.tin.xls" label="TIN on ${on_string} (tin)" />
+    </outputs>
+
+    <!-- PDF Files contain R version, must avoid checking for diff -->
+    <tests>
+        <test>
+            <param name="input" value="pairend_strandspecific_51mer_hg19_chr1_1-100000.bam"/>
+            <param name="refgene" value="hg19_RefSeq_chr1_1-100000.bed"/>
+            <output name="outputsummary" file="output.tin.summary.txt"/>
+            <output name="outputxls" file="output.tin.xls"/>
+        </test>
+    </tests>
+
+    <help><![CDATA[
+## tin.py
+
+This program is designed to evaluate RNA integrity at transcript level. TIN
+(transcript integrity number) is named in analogous to RIN (RNA integrity
+number). RIN (RNA integrity number) is the most widely used metric to
+evaluate RNA integrity at sample (or transcriptome) level. It is a very
+useful preventive measure to ensure good RNA quality and robust,
+reproducible RNA sequencing. However, it has several weaknesses:
+
+* RIN score (1 <= RIN <= 10) is not a direct measurement of mRNA quality.
+  RIN score heavily relies on the amount of 18S and 28S ribosome RNAs, which
+  was demonstrated by the four features used by the RIN algorithm: the
+  “total RNA ratio” (i.e. the fraction of the area in the region of 18S and
+  28S compared to the total area under the curve), 28S-region height, 28S
+  area ratio and the 18S:28S ratio24. To a large extent, RIN score was a
+  measure of ribosome RNA integrity. However, in most RNA-seq experiments,
+  ribosome RNAs were depleted from the library to enrich mRNA through either
+  ribo-minus or polyA selection procedure.
+
+* RIN only measures the overall RNA quality of an RNA sample. However, in  real
+  situation, the degradation rate may differs significantly among
+  transcripts, depending on factors such as “AU-rich sequence”, “transcript
+  length”, “GC content”, “secondary structure” and the “RNA-protein
+  complex”. Therefore, RIN is practically not very useful in downstream
+  analysis such as adjusting the gene expression count.
+
+* RIN has very limited sensitivity to measure substantially degraded RNA
+  samples such as preserved clinical tissues. (ref:
+  http://www.illumina.com/documents/products/technotes/technote-truseq-rna-access.pdf).
+
+To overcome these limitations, we developed TIN, an algorithm that is able
+to measure RNA integrity at transcript level. TIN calculates a score (0 <=
+TIN <= 100) for each expressed transcript, however, the medTIN (i.e.
+meidan TIN score across all the transcripts) can also be used to measure
+the RNA integrity at sample level. Below plots demonstrated TIN is a
+useful metric to measure RNA integrity in both transcriptome-wise and
+transcript-wise, as demonstrated by the high concordance with both RIN and
+RNA fragment size (estimated from RNA-seq read pairs).
+
+
+## Inputs
+
+Input BAM/SAM file
+    Alignment file in BAM/SAM format.
+
+Reference gene model
+    Gene Model in BED format. Must be standard 12-column BED file.
+
+Minimum coverage
+    Minimum number of reads mapped to a tracript (default is 10).
+
+Sample size
+    Number of equal-spaced nucleotide positions picked from mRNA. Note: if
+    this number is larger than the length of mRNA (L), it will be halved until
+    it’s smaller than L (default is 100).
+
+Subtract background
+    Subtract background noise (estimated from intronic reads). Only use this
+    option if there are substantial intronic reads.
+
+
+## Outputs
+
+Text
+    Table that includes the gene identifier (geneID), chromosome (chrom),
+    transcript start (tx_start), transcript end (tx_end), and transcript
+    integrity number (TIN).
+
+Example output:
+
+------  -----  ----------  ---------  -------------
+geneID  chrom  tx_start    tx_end     TIN
+------  -----  ----------  ---------  -------------
+ABCC2   chr10   101542354  101611949  67.6446525761
+IPMK    chr10   59951277   60027694   86.383618429
+RUFY2   chr10   70100863   70167051   43.8967503948
+------  -----  ----------  ---------  -------------
+
+@ABOUT@
+
+]]>
+    </help>
+
+    <expand macro="citations" />
+
+</tool>
--- a/tool_dependencies.xml	Thu Jul 18 11:01:08 2013 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<tool_dependency>
-    
-    <package name="rseqc" version="2.3.7">
-        <install version = "1.0">
-            <actions>
-                <action type="download_by_url">https://sourceforge.net/projects/rseqc/files/RSeQC-2.3.7.tar.gz</action>
-                <action type="shell_command">python setup.py install --root $INSTALL_DIR/lib/rseqc</action>
-                <action type="set_environment">
-                    <environment_variable name="PYTHONPATH" action="prepend_to">$INSTALL_DIR/lib/rseqc/usr/local/lib/python2.7/site-packages</environment_variable>
-                </action>
-                <action type="set_environment">
-                    <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/lib/rseqc/usr/local/bin</environment_variable>
-                </action>
-            </actions>
-        </install>
-        <readme>
-        	RSeQC version 2.3.7, documentation available at http://dldcc-web.brc.bcm.edu/lilab/liguow/CGI/rseqc/_build/html/index.html#.
-        </readme>
-    </package>
-    
-</tool_dependency>