changeset 8:13fe14c56f6d draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/bcftools commit e648d86d550ddf2eb67237752320c390b3a780e5
author iuc
date Wed, 05 Jun 2019 13:19:54 -0400
parents bf1f4994f104
children 86737d0f7fab
files bcftools_cnv.xml macros.xml test-data/cnv.vcf test-data/cnv_baf_only.vcf test-data/cnv_pairwise_summary.tab test-data/cnv_summary.tab test-data/color_chrs.dat test-data/color_chrs_unrelated.dat test-data/fasta_indexes.loc test-data/mpileup.ref.fa.fai test-data/plugin_frameshifts.bed test-data/stats.a.vcf test-data/test-cache/23andme.fa test-data/test-cache/23andme.fa.fai test-data/test-cache/consensus.fa test-data/test-cache/consensus.fa.fai test-data/test-cache/csq.fa test-data/test-cache/csq.fa.fai test-data/test-cache/gvcf.fa test-data/test-cache/gvcf.fa.fai test-data/test-cache/mpileup.ref.fa test-data/test-cache/mpileup.ref.fa.fai test-data/test-cache/norm.fa test-data/test-cache/norm.fa.fai tool_data_table_conf.xml.test
diffstat 25 files changed, 907 insertions(+), 201 deletions(-) [+]
line wrap: on
line diff
--- a/bcftools_cnv.xml	Thu Feb 21 16:10:57 2019 -0500
+++ b/bcftools_cnv.xml	Wed Jun 05 13:19:54 2019 -0400
@@ -1,11 +1,13 @@
 <?xml version='1.0' encoding='utf-8'?>
-<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@">
-    <description>Copy number variation caller, requires Illumina's B-allele frequency (BAF) and Log R Ratio intensity (LRR)</description>
+<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@+galaxy1">
+    <description>Call copy number variation from VCF B-allele frequency (BAF) and Log R Ratio intensity (LRR) values</description>
     <macros>
         <token name="@EXECUTABLE@">cnv</token>
         <import>macros.xml</import>
     </macros>
-    <expand macro="requirements" />
+    <expand macro="requirements">
+        <expand macro="matplotlib_requirement" />
+    </expand>
     <expand macro="version_command" />
     <command detect_errors="aggressive"><![CDATA[
 @PREPARE_ENV@
@@ -16,59 +18,44 @@
 
 bcftools @EXECUTABLE@
 
---output-dir cnv_tmp
+#set $output_dir = 'cnv_tmp'
+--output-dir $output_dir
 
 ## General section
-#set $section = $sec_general
-#if $section.control_sample:
-  --control-sample "${section.control_sample}"
+#set $query_sample = str($query_sample).strip()
+#set $control_sample = str($control_sample).strip()
+#if $control_sample:
+  -c '$control_sample'
 #end if
-#if $section.query_sample:
-  --query-sample "${section.query_sample}"
+#if $query_sample:
+  -s '$query_sample'
 #end if
 @AF_FILE@
-
-#if $section.plot_threshold:
-  --plot-threshold "${section.plot_threshold}"
+#if str($plotting.generate_plots) != 'none':
+  -p ${plotting.plot_threshold}
 #end if
 
 ## HMM section
 #set $section = $sec_hmm
-#if $section.aberrant_query or $section.aberrant_control:
-  #set $query_val = #if $section.aberrant_query then $section.aberrant_query else '1.0'#
-  #set $control_val = #if $section.aberrant_control then $section.aberrant_control else '1.0'#
-  --aberrant "${query_val},${control_val}"
-#end if
-#if $section.BAF_weight:
-  --BAF-weight "${section.BAF_weight}"
-#end if
-#if $section.BAF_dev_query or $section.BAF_dev_control:
-  #set $query_val = #if $section.BAF_dev_query then $section.BAF_dev_query else '1.0'#
-  #set $control_val = #if $section.BAF_dev_control then $section.BAF_dev_control else '1.0'#
-  --BAF-dev "${query_val},${control_val}"
+--aberrant "${section.aberrant_query},${section.aberrant_control}"
+#if str($section.aberrant_optimization.do_optimize) == 'yes':
+  --optimize ${section.aberrant_optimization.lower_bound}
 #end if
-#if $section.LRR_weight:
-  --LRR-weight "${section.LRR_weight}"
-#end if
-#if $section.LRR_dev_query or $section.LRR_dev_control:
-  #set $query_val = #if $section.LRR_dev_query then $section.LRR_dev_query else '1.0'#
-  #set $control_val = #if $section.LRR_dev_control then $section.LRR_dev_control else '1.0'#
-  --LRR-dev "${query_val},${control_val}"
-#end if
-#if $section.LRR_smooth_win:
-  --LRR-smooth-win "${section.LRR_smooth_win}"
-#end if
-#if $section.optimize:
-  --optimize "${section.optimize}"
+--BAF-weight ${section.score_usage.baf_weight}
+--BAF-dev "${section.score_usage.baf_dev_query},${section.score_usage.baf_dev_control}"
+--LRR-weight ${section.score_usage.lrr_weight}
+#if str($section.score_usage.compute_on) == 'baf+lrr':
+  --LRR-dev "${section.score_usage.lrr_dev_query},${section.score_usage.lrr_dev_control}"
+  --LRR-smooth-win ${section.score_usage.lrr_smooth_win}
 #end if
 #if $section.same_prob:
-  --same-prob "${section.same_prob}"
+  --same-prob ${section.same_prob}
 #end if
 #if $section.err_prob:
-  --err-prob "${section.err_prob}"
+  --err-prob ${section.err_prob}
 #end if
 #if $section.xy_prob:
-  --xy-prob "${section.xy_prob}"
+  --xy-prob ${section.xy_prob}
 #end if
 
 ## Filter section
@@ -78,85 +65,172 @@
 
 ## Primary Input/Outputs
 @INPUT_FILE@
-&& mv $output_dir/cn.*.tab "$output_cn"
-&& mv $output_dir/dat.*.tab "$output_dat"
-&& mv $output_dir/summary.*.tab "$output_summary"
-## && python $output_dir/plot.*.py
+
+&& mv $output_dir/cn.*.tab '$output_cn'
+#if $control_sample:
+  && mv ${output_dir}/summary.tab '$output_summary'
+#else:
+  && mv ${output_dir}/summary.*.tab '$output_summary'
+#end if
+
+#if str($plotting.generate_plots) != 'none':
+  ## collect all generated plots and embed them in html as base-64 encoded data
+  && (echo '<html><body><head><title>Copy-number variation plots (bcftools cnv)</title><style type="text/css">
+  @media print {
+	img {
+		max-width:100% !important;
+		page-break-inside: avoid;
+	}
+  </style>' > $output_plots;
+  for plot in $output_dir/*.png; do
+    [ -f "\$plot" ] || break;
+    echo '<div><img src="data:image/png;base64,' >> $output_plots;
+    python -m base64 \$plot >> $output_plots;
+    echo '" /></div><hr>' >> $output_plots;
+  done;
+  echo '</body></html>' >> $output_plots;)
+#end if
+
 ]]>
     </command>
     <inputs>
-        <param name="output_dir" type="hidden" value="cnv_tmp"/>
         <expand macro="macro_input" />
+        <param argument="-s" name="query_sample" type="text" label="Query Sample" optional="True" help="The name (as used in the input) of the query sample in the input. Can be ommitted if, and only if, there is only one sample in the input." />
+        <param argument="-c" name="control_sample" type="text" label="Control Sample" optional="True" help="The name (as used in the input) of an optional control sample to compare against. Note: The pairwise calling mode represents the real strength of the tool as it helps to reduce the number of false calls and also allows one to distinguish between normal and novel copy number variation." />
+        <expand macro="macro_AF_file" />
+        <conditional name="plotting">
+            <param name="generate_plots" type="select" label="Plot results?">
+                <option value="all">Yes, plot results for all chromosomes</option>
+                <option value="some">Yes, but plot only chromosomes with above-threshold quality of CNV status estimate</option>
+                <option value="none">No, do not generate plots</option>
+            </param>
+            <when value="all">
+                <param name="plot_threshold" type="hidden" value="0" />
+            </when>
+            <when value="some">
+                <param argument="-p" name="plot_threshold" type="float" value="0"
+                label="Plot Threshold"
+                help="Plot aberrant chromosomes with quality at least 'float'" />
+            </when>
+            <when value="none" />
+        </conditional>
         <section name="sec_restrict" expanded="false" title="Restrict to">
-            <expand macro="macro_regions" />
-            <expand macro="macro_targets" />
-        </section>
-        <param name="reference_fasta" type="data" format="fasta" label="Reference Fasta" />
-        <section name="sec_general" expanded="true" title="General Options">
-            <param name="query_sample" type="text" label="Query Sample" optional="True" help="Query samply name" />
-            <param name="control_sample" type="text" label="Control Sample" optional="True" help="Optional control sample name to highlight differences" />
-            <expand macro="macro_AF_file" />
-            <param name="plot_threshold" type="float" label="Plot Threshold" optional="True" help="Plot aberrant chromosomes with quality at least 'float'" />
+            <expand macro="macro_restrict" />
+            <expand macro="macro_restrict" type="target" label_type="Target" />
         </section>
         <section name="sec_hmm" expanded="false" title="HMM Options">
-            <param name="err_prob" type="float" value="1e-4" label="Err Prob" optional="True" help="Uniform error probability" />
-            <param name="optimize" type="float" value="" min="0." max="1." label="Optimize" optional="True" >
+            <param argument="--aberrant" name="aberrant_query" type="float" value="1" min="0" max="1"
+            label="Estimated purity of the query sample"
+            help="Estimate of the fractional contribution of the desired query tissue to the (possibly control-contaminated) query sample (default: 1 = no contamination with control tissue)" />
+            <param argument="--aberrant" name="aberrant_control" type="float" value="1" min="0" max="1"
+            label="Estimated purity of the control sample"
+            help="Estimate of the fractional contribution of the desired control tissue to the (possibly query-contaminated) control sample (default: 1 = no contamination with query tissue)" />
+            <conditional name="aberrant_optimization">
+                <param name="do_optimize" type="select"
+                label="Adjust sample purity estimates based on data?"
+                help="Instead of treating your specified estimates of the sample purities as fixed values, the tool can use them as starting values for an iterative optimization that tries to estimate the sample purities from the data. Note: With estimate optimization enabled the final estimates will be reported as cell fraction (CF) estimates in the summary report.">
+                    <option value="no">No, leave sample purities as specified</option>
+                    <option value="yes">Yes, adjust purity estimates</option>
+                </param>
+                <when value="no" />
+                <when value="yes">
+                    <param argument="--optimize" name="lower_bound" type="float" value="0.3" min="1e-9" max="1"
+                    label="Lower bound for adjusted estimate"
+                    help="Constrains the final adjusted purity estimates not to be smaller than this value." />
+                </when>
+            </conditional>
+            <conditional name="score_usage">
+                <param name="compute_on" type="select" label="Use BAF and LRR annotations to call CNVs?"
+                help="Using LRR information in addition to BAF values is the default and helps in dealing with random noise in the data. However, the tool is also able to call CNVs from BAF values alone in case your input does not feature LRR information.">
+                    <option value="baf+lrr">Yes (requires input with both BAF and LRR subfields)</option>
+                    <option value="baf">No, use BAF values exclusively</option>
+                </param>
+                <when value="baf+lrr">
+                    <param argument="--BAF-weight" name="baf_weight" type="float" value="1" min="0" max="1"
+                    label="Baf Weight" help="relative contribution from BAF" />
+
+                    <param argument="--BAF-dev" name="baf_dev_query" type="float" value="0.04" min="0" max="1"
+                    label="Query sample BAF deviation"
+                    help="Expected BAF deviation in the query sample (default: 0.04)" />
+                    <param argument="--BAF-dev" name="baf_dev_control" type="float" value="0.04" min="0" max="1"
+                    label="Control sample BAF deviation"
+                    help="Expected BAF deviation in the control sample (default: 0.04)" />
+
+                    <param argument="--LRR-weight" name="lrr_weight" type="float" value="0.2" min="0" max="1"
+                    label="LRR Weight"
+                    help="Relative contribution from LRR. This option can have a big effect on the number of calls produced. With truly random noise (such as in simulated data), the value should be set high (1.0), but in the presence of systematic noise when LRR values are not informative, lower values result in cleaner calls (default: 0.2)." />
+                    <param argument="--LRR-dev" name="lrr_dev_query" type="float" value="0.2" min="0" max="1"
+                    label="Query sample LRR Deviation"
+                    help="Expected LRR deviation in the query sample (default: 0.2)" />
+                    <param argument="--LRR-dev" name="lrr_dev_control" type="float" value="0.2" min="0" max="1"
+                    label="Control sample LRR Deviation"
+                    help="Expected LRR deviation in the control sample (default: 0.2)" />
+                    <param argument="--LRR-smooth-win" name="lrr_smooth_win" type="integer" value="10"
+                    label="LRR Smoothing Window"
+                    help="Window of LRR moving average smoothing (default: 10)" />
+                </when>
+                <when value="baf">
+                    <param argument="--BAF-dev" name="baf_dev_query" type="float" value="0.04" min="0" max="1"
+                    label="Query sample BAF deviation"
+                    help="Expected BAF deviation in the query sample (default: 0.04)" />
+                    <param argument="--BAF-dev" name="baf_dev_control" type="float" value="0.04" min="0" max="1"
+                    label="Control sample BAF deviation"
+                    help="Expected BAF deviation in the control sample (default: 0.04)" />
+                    <param name="baf_weight" type="hidden" value="1" />
+                    <param name="lrr_weight" type="hidden" value="0" />
+                </when>
+            </conditional>
+            <param argument="--err-prob" name="err_prob" type="float" value="1e-4" label="Err Prob" help="Uniform error probability" />
+            <param argument="--same-prob" name="same_prob" type="float" value="0.5" min="0" max="1" label="Same Prob">
                 <help>
-                  Iteratively estimate the fraction of aberrant cells, down to the given fraction. 
-                  Lowering this value from the default 1.0 to say, 0.3, can help discover more events but also increases noise.
+                    The prior probability of the query and the control sample being the same. 
+                    Setting to 0 calls both independently, setting to 1 forces the same copy number state in both. (default: 0.5)
                 </help>
             </param>
-            <param name="same_prob" type="float" value="" min="0." max="1." label="Same Prob" optional="True">
-                <help>
-                    The prior probability of the query and the control sample being the same. 
-                    Setting to 0 calls both independently, setting to 1 forces the same copy number state in both.
-                </help>
-            </param>
-            <param name="xy_prob" type="float" min="0." max="1." label="Xy Prob" value="1e-9" optional="True">
+            <param argument="--xy-prob" name="xy_prob" type="float" min="0." max="1." label="Xy Prob" value="1e-9">
                 <help>
                     The HMM probability of transition to another copy number state. 
                     Increasing this value leads to smaller and more frequent calls. 
                 </help>
             </param>
-
-            <param name="aberrant_query" type="float" value="" min="0." max="1." label="Aberrant Query" optional="true" 
-                   help="Fraction of aberrant cells in query, defaults to 1." />
-            <param name="aberrant_control" type="float" value="" min="0." max="1." label="Aberrant Control" optional="true" 
-                   help="Fraction of aberrant cells in control, defaults to 1." />
-            <param name="BAF_weight" type="float" value="1." min="0." max="1." label="Baf Weight" optional="True" help="relative contribution from BAF" />
-
-            <param name="BAF_dev_query" type="float" value="" min="0." max="1." label="Baf Query Deviation" optional="true" 
-                   help="Expected BAF deviation in query, defaults to: 0.04" />
-            <param name="BAF_dev_control" type="float" value="" min="0." max="1." label="Baf Control Deviation" optional="true" 
-                   help="Expected BAF deviation in control, defaults to: 0.04" />
-
-            <param name="LRR_weight" type="float" label="LRR Weight" optional="True" >
-                <help>
-                    Relative contribution from LRR.  
-                    With noisy data, this option can have big effect on the number of calls produced. 
-                    In truly random noise (such as in simulated data), the value should be set high (1.0), i
-                    but in the presence of systematic noise when LRR are not informative, lower values result in cleaner calls (0.2).
-                </help>
-            </param>
-            <param name="LRR_dev_query" type="float" value="" min="0." max="1." label="LRR Query Deviation" 
-                   help="Expected LRR deviation in query, default is: 0.2" />
-            <param name="LRR_dev_control" type="float" value="" min="0." max="1." label="LRR Control Deviation" 
-                   help="Expected LRR deviation in control, default is: 0.2" />
-            <param name="LRR_smooth_win" type="integer" label="Lrr Smooth Win" value="10" optional="True" 
-                   help="Window of LRR moving average smoothing" />
-
         </section>
     </inputs>
     <outputs>
         <data name="output_cn" format="tabular" label="${input_file.name.rsplit('.',1)[0]}.cn"/>
-        <data name="output_dat" format="tabular" label="${input_file.name.rsplit('.',1)[0]}.dat"/>
         <data name="output_summary" format="tabular" label="${input_file.name.rsplit('.',1)[0]}.summary"/>
-        <!-- add plot output -->
-        <!-- script has png per chr, html of images or collect into pdf?
-        <data name="output_plots" format="" />
-         -->
+        <data name="output_plots" format="html" label="${input_file.name.rsplit('.',1)[0]}.plots">
+            <filter>plotting['generate_plots'] != 'none'</filter>
+        </data>
     </outputs>
-    <tests />
+    <tests>
+        <test expect_num_outputs="3">
+            <param name="input_file" ftype="vcf" value="cnv.vcf" />
+            <output name="output_summary" file="cnv_summary.tab" compare="re_match" />
+        </test>
+        <test expect_num_outputs="2">
+            <param name="input_file" ftype="vcf" value="cnv.vcf" />
+            <conditional name="plotting">
+                <param name="generate_plots" value="none" />
+            </conditional>
+            <output name="output_summary" file="cnv_summary.tab" compare="re_match" />
+        </test>
+        <test expect_num_outputs="3">
+            <param name="input_file" ftype="vcf" value="cnv.vcf" />
+            <param name="query_sample" value="test" />
+            <param name="control_sample" value="test" />
+            <output name="output_summary" file="cnv_pairwise_summary.tab" compare="re_match" />
+        </test>
+        <test expect_num_outputs="2">
+            <param name="input_file" ftype="vcf" value="cnv_baf_only.vcf" />
+            <conditional name="plotting">
+                <param name="generate_plots" value="none" />
+            </conditional>
+            <conditional name="score_usage">
+                <param name="compute_on" value="baf" />
+            </conditional>
+            <output name="output_summary" file="cnv_summary.tab" compare="re_match" />
+        </test>
+    </tests>
     <help><![CDATA[
 =====================================
  bcftools @EXECUTABLE@
--- a/macros.xml	Thu Feb 21 16:10:57 2019 -0500
+++ b/macros.xml	Wed Jun 05 13:19:54 2019 -0400
@@ -1,13 +1,5 @@
 <macros>
   <token name="@TOOL_VERSION@">1.9</token>
-  <xml name="stdio">
-    <stdio>
-      <exit_code range="1:" />
-      <exit_code range=":-1" />
-      <regex match="Error:" />
-      <regex match="Exception:" />
-    </stdio>
-  </xml>
   <xml name="requirements">
     <requirements>
       <requirement type="package" version="@TOOL_VERSION@">bcftools</requirement>
@@ -18,6 +10,9 @@
   <xml name="samtools_requirement">
       <requirement type="package" version="1.9">samtools</requirement>
   </xml>
+  <xml name="matplotlib_requirement">
+      <requirement type="package" version="3.1.0">matplotlib</requirement>
+  </xml>
   <xml name="version_command">
     <version_command>bcftools 2&gt;&amp;1 | grep 'Version:'</version_command>
   </xml>
@@ -111,16 +106,45 @@
 $vcfs_list_file
   </token>
 
+  <xml name="test_using_reference" token_select_from="history" token_ref="">
+    <conditional name="reference_source">
+        <param name="reference_source_selector" value="@SELECT_FROM@" />
+        <param name="fasta_ref" ftype="fasta" value="@REF@" />
+    </conditional>
+  </xml>
+
   <xml name="macro_fasta_ref">
-    <param name="fasta_ref" argument="--fasta-ref" type="data" format="data" optional="true" label="Reference sequence in FASTA format" />
+    <conditional name="reference_source">
+        <param name="reference_source_selector" type="select" label="Choose the source for the reference genome">
+            <option value="cached">Use a built-in genome</option>
+            <option value="history">Use a genome from the history</option>
+        </param>
+        <when value="cached">
+            <param name="fasta_ref" type="select" label="Reference genome">
+                <options from_data_table="fasta_indexes">
+                    <filter type="data_meta" column="1" key="dbkey" ref="input_file" />
+                    <validator type="no_options" message="A built-in reference genome is not available for the build associated with the selected input file" />
+                </options>
+            </param>
+        </when>
+        <when value="history">
+            <param name="fasta_ref" type="data" format="fasta" label="Reference genome" />
+        </when>
+    </conditional>
   </xml>
   <token name="@PREPARE_FASTA_REF@">
 <![CDATA[
 #set $input_fa_ref = None
 #if 'fasta_ref' in $section and $section.fasta_ref:
-  #set $input_fa_ref = 'ref.fa'
-  ln -s '$section.fasta_ref' $input_fa_ref &&
-  samtools faidx $input_fa_ref &&
+  #if 'reference_source_selector' in $section:
+    #if str($section.reference_source_selector) == "history":
+      #set $input_fa_ref = 'ref.fa'
+      ln -s '$section.fasta_ref' $input_fa_ref &&
+      samtools faidx $input_fa_ref &&
+    #else:
+      #set $input_fa_ref = str($section.fasta_ref.fields.path)
+    #end if
+  #end if
 #end if
 ]]>
   </token>
@@ -132,27 +156,6 @@
 #end if
   </token>
 
-  <xml name="macro_ref_fasta">
-    <conditional name="reference_source">
-       <param name="reference_source_selector" type="select" label="Choose the source for the reference genome">
-         <option value="cached">Locally cached</option>
-         <option value="history">History</option>
-       </param>
-       <when value="cached">
-         <param name="ref_file" type="select" label="Select reference genome">
-           <options from_data_table="fasta_indexes">
-             <!--<filter type="data_meta" key="dbkey" ref="input_bam" column="value"/>-->
-           </options>
-           <validator type="no_options" message="A built-in reference genome is not available for the build associated with the selected input file"/>
-         </param>
-       </when>
-       <when value="history"> <!-- FIX ME!!!! -->
-         <param name="ref_file" type="data" format="fasta" label="Using reference file" />
-       </when>
-     </conditional>
-  </xml>
-
-
   <xml name="macro_AF_file">
     <param name="AF_file" argument="--AF-file" type="data" format="tabular" optional="true" label="Allele frequencies file" help="Tab-delimited file containing the columns CHR,POS,REF,ALT,AF" />
   </xml>
@@ -268,25 +271,97 @@
       </data>
   </xml>
 
-  <xml name="macro_regions">
-    <conditional name="regions">
-        <param name="regions_src" type="select" label="Regions">
-            <option value="__none__">None</option>
-            <option value="regions">regions</option>
-            <option value="regions_file">regions-file</option>
+  <xml name="macro_invert_targets">
+    <param name="invert_targets_file" type="boolean" truevalue="^" falsevalue=""
+    label="Invert Targets"
+    help="inverts the query/filtering applied by the targets" />
+  </xml>
+
+  <xml name="macro_restriction_spec" token_type="region" token_label_type="Region">
+    <repeat name="@TYPE@s" title="@LABEL_TYPE@ Filter" default="1" min="1">
+        <param name="chrom" type="text" label="@LABEL_TYPE@ chromosome">
+            <validator type="expression" message="A chromosome identifier is required when specifying a @LABEL_TYPE@ filter">value.strip()</validator>
+        </param>
+        <param name="start" type="text" label="@LABEL_TYPE@ start position">
+            <validator type="expression" message="an integer number is required">not value or value.isdigit()</validator>
+        </param>
+        <param name="stop" type="text" label="@LABEL_TYPE@ end position">
+            <validator type="expression" message="an integer number is required">not value or value.isdigit()</validator>
+        </param>
+        <yield />
+    </repeat>
+  </xml>
+
+  <xml name="macro_restrictions_file" token_type="region" token_label_type="Region">
+    <param name="@TYPE@s_file" type="data" format="tabular" label="@LABEL_TYPE@s File" help="restrict to @LABEL_TYPE@s listed in a file" />
+  </xml>
+
+  <xml name="macro_restrict" token_type="region" token_label_type="Region" >
+    <conditional name="@TYPE@s">
+        <param name="@TYPE@s_src" type="select" label="@LABEL_TYPE@s">
+            <option value="__none__">Do not restrict to @LABEL_TYPE@s</option>
+            <option value="@TYPE@s">Specify one or more @LABEL_TYPE@(s) directly</option>
+            <option value="@TYPE@s_file">Operate on @LABEL_TYPE@s specified in a history dataset</option>
         </param>
         <when value="__none__"/>
-        <when value="regions">
-            <param name="regions" type="text" value="" optional="true" label="Restrict to comma-separated list of regions"
-                   help="Each region is specifed as: chr or chr:pos or chr:from-to">
-                 <validator type="regex" message="">^(\w+(:\d+(-\d+)?)?(,\w+(:\d+(-\d+)?)?)*)?$</validator>
-            </param>
+        <when value="@TYPE@s">
+            <expand macro="macro_restriction_spec" type="@TYPE@" label_type="@LABEL_TYPE@" />
+            <yield />
         </when>
-        <when value="regions_file">
-            <param name="regions_file" type="data" format="vcf,bed,tabular" optional="true" label="Regions file" help="Restrict to regions listed in a file" />
-        </when>
+        <when value="@TYPE@s_file">
+            <expand macro="macro_restrictions_file" type="@TYPE@" label_type="@LABEL_TYPE@" />
+            <yield />
+        </when>        
     </conditional>
   </xml>
+
+  <token name="@PARSE_INTERVALS@">
+<![CDATA[
+#set $components = []
+#for $i in $intervals:
+  #set $chrom = str($i.chrom).strip()
+  #set $start = str($i.start).strip()
+  #set $stop = str($i.stop).strip()
+  #if $start or $stop:
+    $components.append($chrom + ':' + ($start or '0') + '-' + $stop)
+  #else:
+    $components.append($chrom)
+  #end if
+#end for
+#set $intervals_spec = ','.join($components)
+]]>
+  </token>
+  
+  <token name="@REGIONS@">
+<![CDATA[
+#if $section.regions.regions_src == 'regions':
+  #set $intervals = $section.regions.regions
+  @PARSE_INTERVALS@
+  --regions '$intervals_spec'
+#elif $section.regions.regions_src == 'regions_file' and $section.regions.regions_file:
+  #if $regions_path is not None:
+    --regions-file '$regions_path'
+  #else:
+    --regions-file '$section.regions.regions_file'
+  #end if
+#end if
+]]>
+  </token>
+  
+  <token name="@TARGETS@">
+<![CDATA[
+#if $targets_path:
+  --targets-file "${section.targets.invert_targets_file}${targets_path}"
+#elif $section.targets.targets_src == 'targets':
+  #set $intervals = $section.targets.targets
+  @PARSE_INTERVALS@
+  --targets '${section.targets.invert_targets_file}$intervals_spec'
+#elif $section.targets.targets_src == 'targets_file' and $section.targets.targets_file:
+  --targets-file "${section.targets.invert_targets_file}${section.targets.targets_file}"
+#end if
+]]>
+  </token>
+
   <token name="@PREPARE_REGIONS_FILE@">
 <![CDATA[
 #set $regions_path = None
@@ -300,23 +375,7 @@
 #end if
 ]]>
   </token>
-  <token name="@REGIONS@">
-#if $section.regions.regions_src == 'regions' and $section.regions.regions != '':
-  --regions '$section.regions.regions'
-#elif $section.regions.regions_src == 'regions_file' and $section.regions.regions_file:
-  #if $regions_path is not None:
-    --regions-file '$regions_path'
-  #else:
-    --regions-file '$section.regions.regions_file'
-  #end if
-#end if
-  </token>
-  <xml name="macro_targets_file">
-            <param name="targets_file" type="data" format="tabular" label="Targets File" help="restrict to targets listed in a file" >
-              <yield/>
-            </param>
-            <param name="invert_targets_file" type="boolean" truevalue="^" falsevalue="" label="Invert Targets" help="inverts the query/filtering applied by the target file selection" />
-  </xml>
+
   <token name="@PREPARE_TARGETS_FILE@">
 <![CDATA[
 #set $targets_path = None
@@ -333,6 +392,7 @@
 #end if
 ]]>
   </token>
+
   <token name="@TARGETS_FILE@">
 <![CDATA[
 #if $targets_path is not None:
@@ -343,41 +403,6 @@
 ]]>
   </token>
 
-  <xml name="macro_targets">
-    <conditional name="targets">
-        <param name="targets_src" type="select" label="Targets">
-            <option value="__none__">None</option>
-            <option value="targets">targets</option>
-            <option value="targets_file">targets-file</option>
-        </param>
-        <when value="__none__"/>
-        <when value="targets">
-            <param name="targets" type="text" value="" optional="true" label="Restrict to comma-separated list of targets"
-                   help="Each target is specifed as: chr or chr:pos or chr:from-to">
-                 <validator type="regex" message="">^(\w+(:\d+(-\d+)?)?(,\w+(:\d+(-\d+)?)?)*)?$</validator>
-            </param>
-            <param name="invert_targets_file" type="boolean" truevalue="^" falsevalue="" label="Invert Targets" help="inverts the query/filtering applied by the targets" />
-        </when>
-        <when value="targets_file">
-            <expand macro="macro_targets_file">
-            </expand>
-        </when>
-    </conditional>
-  </xml>
-  <token name="@TARGETS@">
-<![CDATA[
-#if $targets_path:
-  --targets-file "${section.targets.invert_targets_file}${targets_path}"
-#else:
-  #if $section.targets.targets_src == 'targets' and $section.targets.targets != '':
-    --targets '${section.targets.invert_targets_file}${section.targets.targets}'
-  #elif $section.targets.targets_src == 'targets_file' and $section.targets.targets_file:
-    --targets-file "${section.targets.invert_targets_file}${section.targets.targets_file}"
-  #end if
-#end if
-]]>
-  </token>
-
   <xml name="macro_samples">
       <param argument="--samples" type="text" value="" optional="true" label="Samples"
              help="Comma separated list of samples to annotate (or exclude)">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnv.vcf	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,192 @@
+##fileformat=VCFv4.2
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=GC,Number=1,Type=Float,Description="GenCall score">
+##FORMAT=<ID=IA,Number=1,Type=Float,Description="Intensity of the A Allele">
+##FORMAT=<ID=IB,Number=1,Type=Float,Description="Intensity of the B Allele">
+##FORMAT=<ID=BAF,Number=1,Type=Float,Description="B Allele Frequency">
+##FORMAT=<ID=LRR,Number=1,Type=Float,Description="Log R Ratio">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	test
+10	135656	rs10904561	T	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.0415:0.5176:0.543:0.661:0.9477
+10	135708	rs7917054	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.2441:0.501:0.742:0.659:0.9604
+10	178434	rs7089889	T	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.1440:0.4833:0.836:0.827:0.8884
+10	188805	rs12146291	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.2144:0.4715:0.776:0.743:0.9610
+10	203471	rs10903451	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.4201:0.0000:0.619:0.022:0.9337
+10	252693	rs2379078	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.2673:0.0068:0.806:0.081:0.9018
+10	273344	rs2448378	A	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.7407:0.0000:0.497:0.012:0.9411
+10	279248	rs2496278	C	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.4228:0.6268:0.285:0.958:0.6772
+10	291134	rs10508201	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.1085:0.4723:0.317:0.444:0.9106
+10	293358	exm2249181	A	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0097:0.0044:1.507:0.061:0.3992
+10	313504	rs4880568	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.5836:0.9803:0.017:0.321:0.9547
+10	317501	rs2018975	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.3392:0:1.069:0.039:0.7852
+10	323283	rs3740304	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.1836:0.5588:1.053:1.110:0.8640
+10	326894	rs3125027	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0517:0.0005:1.300:0.026:0.8916
+10	327162	exm805022	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1197:0:0.995:0.015:0.5328
+10	329493	rs3815985	C	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0480:0.5187:0.824:0.794:0.9109
+10	338553	rs3125031	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.3387:0.4696:0.777:1.004:0.7901
+10	354301	rs35198327	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.1338:0.4929:0.903:0.996:0.8546
+10	375475	variant.11341	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0747:0.000199999999999978:1.132:0.012:0.4773
+10	377161	rs7070654	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1388:0:0.582:0.020:0.9458
+10	387060	rs7904155	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.0615:0.9945:0.080:1.883:0.8310
+10	390962	exm805090	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0087:9.9999999999989e-05:1.226:0.063:0.6950
+10	390983	exm805091	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.3606:0:0.398:0.035:0.4585
+10	394615	exm805105	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0170:0:1.345:0.020:0.4108
+10	402390	exm805131	G	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0341:0.0000:1.127:0.023:0.8735
+10	403792	exm805136	G	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1428:0.0000:0.908:0.019:0.8483
+10	410501	exm805166	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0189:0:1.162:0.050:0.4628
+10	413010	rs9787422	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0871:0.5334:0.908:0.961:0.8338
+10	423555	rs12245012	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1264:0.00149999999999995:1.658:0.040:0.8015
+10	423671	rs10904067	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.3622:0.5566:0.326:0.370:0.9306
+10	431161	exm2271240	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.0175:0.4838:0.935:1.004:0.8308
+10	435971	exm2249233	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.2716:0.0000:1.217:0.042:0.3992
+10	435990	exm805214	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1427:0:1.107:0.031:0.4295
+10	453567	rs4881254	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.1831:0.5079:1.032:1.425:0.8149
+10	462885	rs10904173	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.0930:0.4819:0.568:0.489:0.9332
+10	465046	exm805254	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1108:0:1.041:0.038:0.8704
+10	468599	rs12415961	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.1647:0.5021:1.192:0.825:0.8051
+10	486935	exm805280	G	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1369:0.0186:0.643:0.060:0.4804
+10	487973	rs4881313	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.0644:0.5628:0.747:0.992:0.8463
+10	521431	exm2271370	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.0436:0.9952:0.028:1.491:0.8545
+10	521723	rs4881336	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.2056:1:0.055:1.228:0.8344
+10	547567	rs816599	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.0079:1.0000:0.023:1.101:0.9490
+10	554186	rs12251997	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1537:0.00309999999999999:1.565:0.032:0.8228
+10	556129	rs10466270	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.0014:0.5142:0.709:0.732:0.9257
+10	566379	rs11252926	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0211:0.5024:0.559:0.493:0.9438
+10	588406	rs10904450	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0834:0.0006:1.837:0.066:0.8107
+10	592283	rs816646	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.3907:0.5006:0.268:0.158:0.8540
+10	601089	rs816650	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0897:0:1.053:0.009:0.9557
+10	615782	rs17221309	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.2800:0.00319999999999998:1.764:0.035:0.7820
+10	635857	rs7069611	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0450:0.0013:0.593:0.017:0.9595
+10	669358	rs7898821	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1257:0:1.694:0.067:0.7270
+10	673037	rs816563	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.1368:0.9065:0.167:0.495:0.4895
+10	680428	rs2124585	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.0590:0.5212:0.660:1.123:0.7133
+10	712617	rs17136372	A	C	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.0174:0.9992:0.028:0.975:0.9556
+10	738630	rs1750792	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0269:0:1.575:0.025:0.8126
+10	749238	rs553326	G	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1758:0.00229999999999997:0.955:0.019:0.9300
+10	754033	rs2265090	C	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1347:0:1.181:0.025:0.9176
+10	757222	rs10904546	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.3035:0.0000:1.975:0.056:0.8047
+10	766105	rs7906313	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1672:0.0116:0.960:0.062:0.9381
+10	776027	rs11253377	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.1474:0.9964:0.046:1.017:0.9087
+10	787896	rs1769242	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.2049:0.0000:0.965:0.029:0.9107
+10	800213	rs2254501	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.2422:0.9918:0.027:0.612:0.9374
+10	802445	rs1769215	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0188:0.00370000000000004:0.859:0.024:0.9303
+10	803721	rs2790381	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.0421:0.9798:0.029:0.485:0.9700
+10	811876	rs12414585	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0717:0.516:0.374:0.276:0.9351
+10	813426	rs11253424	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.5256:0:0.333:0.000:0.8993
+10	815149	rs7084027	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.3183:0.9944:0.037:1.547:0.8419
+10	820868	rs10752019	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0749:0.0118:1.349:0.070:0.8882
+10	833528	exm2271241	T	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:-0.0329:0.4896:0.569:0.681:0.9348
+10	834736	rs4881530	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0453:0.00249999999999995:1.578:0.040:0.8076
+10	836115	rs11253444	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:-0.1380:0.5199:0.596:0.670:0.9248
+10	838179	rs1536337	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0534:0.0000:1.318:0.095:0.7967
+10	858022	rs9124	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.5565:0:0.715:0.012:0.9397
+10	858924	exm805329	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0866:0:0.873:0.021:0.9056
+10	859047	exm805338	C	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1868:0:0.917:0.007:0.5296
+10	860687	exm805350	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1509:0:1.172:0.059:0.3777
+10	860726	exm805354	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0224:0.0000:2.255:0.138:0.3747
+10	860970	exm805360	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1069:0.0000:1.859:0.070:0.7352
+10	871110	exm805378	G	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0701:0.0000:1.373:0.002:0.4607
+10	871746	exm805386	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1743:0.00239999999999996:0.597:0.017:0.5312
+10	875350	exm805392	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1814:0:0.924:0.018:0.5191
+10	888899	exm805400	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0585:0.00470000000000004:1.182:0.028:0.5116
+10	888916	exm805401	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1408:0.0000:1.480:0.041:0.4128
+10	894838	rs12249828	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.2119:0.4839:1.145:1.256:0.8432
+10	903950	rs11253471	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:-0.0047:0.4747:0.562:0.549:0.9470
+10	909757	exm805413	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0614:0:1.538:0.027:0.4097
+10	909766	exm805415	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0578:0:1.502:0.023:0.4128
+10	910074	exm805420	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0503:0.0071:1.001:0.057:0.5002
+10	910081	exm805421	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1352:0.002:1.125:0.033:0.4254
+10	927331	rs11253489	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0370:0.5325:0.976:1.435:0.7729
+10	931618	exm805430	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0474:0:1.222:0.009:0.4871
+10	931631	exm805431	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0819:0.00390000000000001:0.827:0.023:0.5296
+11	135656	rs10904561	T	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.0415:0.5176:0.543:0.661:0.9477
+11	135708	rs7917054	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.2441:0.501:0.742:0.659:0.9604
+11	178434	rs7089889	T	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.1440:0.4833:0.836:0.827:0.8884
+11	188805	rs12146291	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.2144:0.4715:0.776:0.743:0.9610
+11	203471	rs10903451	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.4201:0.0000:0.619:0.022:0.9337
+11	252693	rs2379078	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.2673:0.0068:0.806:0.081:0.9018
+11	273344	rs2448378	A	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.7407:0.0000:0.497:0.012:0.9411
+11	279248	rs2496278	C	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.4228:0.6268:0.285:0.958:0.6772
+11	291134	rs10508201	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.1085:0.4723:0.317:0.444:0.9106
+11	293358	exm2249181	A	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0097:0.0044:1.507:0.061:0.3992
+11	313504	rs4880568	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.5836:0.9803:0.017:0.321:0.9547
+11	317501	rs2018975	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.3392:0:1.069:0.039:0.7852
+11	323283	rs3740304	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.1836:0.5588:1.053:1.110:0.8640
+11	326894	rs3125027	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0517:0.0005:1.300:0.026:0.8916
+11	327162	exm805022	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1197:0:0.995:0.015:0.5328
+11	329493	rs3815985	C	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0480:0.5187:0.824:0.794:0.9109
+11	338553	rs3125031	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.3387:0.4696:0.777:1.004:0.7901
+11	354301	rs35198327	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.1338:0.4929:0.903:0.996:0.8546
+11	375475	variant.11341	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0747:0.000199999999999978:1.132:0.012:0.4773
+11	377161	rs7070654	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1388:0:0.582:0.020:0.9458
+11	387060	rs7904155	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.0615:0.9945:0.080:1.883:0.8310
+11	390962	exm805090	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0087:9.9999999999989e-05:1.226:0.063:0.6950
+11	390983	exm805091	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.3606:0:0.398:0.035:0.4585
+11	394615	exm805105	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0170:0:1.345:0.020:0.4108
+11	402390	exm805131	G	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0341:0.0000:1.127:0.023:0.8735
+11	403792	exm805136	G	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1428:0.0000:0.908:0.019:0.8483
+11	410501	exm805166	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0189:0:1.162:0.050:0.4628
+11	413010	rs9787422	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0871:0.5334:0.908:0.961:0.8338
+11	423555	rs12245012	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1264:0.00149999999999995:1.658:0.040:0.8015
+11	423671	rs10904067	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.3622:0.5566:0.326:0.370:0.9306
+11	431161	exm2271240	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.0175:0.4838:0.935:1.004:0.8308
+11	435971	exm2249233	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.2716:0.0000:1.217:0.042:0.3992
+11	435990	exm805214	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1427:0:1.107:0.031:0.4295
+11	453567	rs4881254	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.1831:0.5079:1.032:1.425:0.8149
+11	462885	rs10904173	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.0930:0.4819:0.568:0.489:0.9332
+11	465046	exm805254	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1108:0:1.041:0.038:0.8704
+11	468599	rs12415961	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.1647:0.5021:1.192:0.825:0.8051
+11	486935	exm805280	G	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1369:0.0186:0.643:0.060:0.4804
+11	487973	rs4881313	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.0644:0.5628:0.747:0.992:0.8463
+11	521431	exm2271370	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.0436:0.9952:0.028:1.491:0.8545
+11	521723	rs4881336	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.2056:1:0.055:1.228:0.8344
+11	547567	rs816599	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.0079:1.0000:0.023:1.101:0.9490
+11	554186	rs12251997	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1537:0.00309999999999999:1.565:0.032:0.8228
+11	556129	rs10466270	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:0.0014:0.5142:0.709:0.732:0.9257
+11	566379	rs11252926	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0211:0.5024:0.559:0.493:0.9438
+11	588406	rs10904450	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0834:0.0006:1.837:0.066:0.8107
+11	592283	rs816646	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.3907:0.5006:0.268:0.158:0.8540
+11	601089	rs816650	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0897:0:1.053:0.009:0.9557
+11	615782	rs17221309	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.2800:0.00319999999999998:1.764:0.035:0.7820
+11	635857	rs7069611	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0450:0.0013:0.593:0.017:0.9595
+11	669358	rs7898821	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1257:0:1.694:0.067:0.7270
+11	673037	rs816563	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.1368:0.9065:0.167:0.495:0.4895
+11	680428	rs2124585	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:-0.0590:0.5212:0.660:1.123:0.7133
+11	712617	rs17136372	A	C	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.0174:0.9992:0.028:0.975:0.9556
+11	738630	rs1750792	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0269:0:1.575:0.025:0.8126
+11	749238	rs553326	G	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1758:0.00229999999999997:0.955:0.019:0.9300
+11	754033	rs2265090	C	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1347:0:1.181:0.025:0.9176
+11	757222	rs10904546	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.3035:0.0000:1.975:0.056:0.8047
+11	766105	rs7906313	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1672:0.0116:0.960:0.062:0.9381
+11	776027	rs11253377	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.1474:0.9964:0.046:1.017:0.9087
+11	787896	rs1769242	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.2049:0.0000:0.965:0.029:0.9107
+11	800213	rs2254501	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.2422:0.9918:0.027:0.612:0.9374
+11	802445	rs1769215	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0188:0.00370000000000004:0.859:0.024:0.9303
+11	803721	rs2790381	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:-0.0421:0.9798:0.029:0.485:0.9700
+11	811876	rs12414585	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0717:0.516:0.374:0.276:0.9351
+11	813426	rs11253424	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.5256:0:0.333:0.000:0.8993
+11	815149	rs7084027	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	1/1:0.3183:0.9944:0.037:1.547:0.8419
+11	820868	rs10752019	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0749:0.0118:1.349:0.070:0.8882
+11	833528	exm2271241	T	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:-0.0329:0.4896:0.569:0.681:0.9348
+11	834736	rs4881530	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0453:0.00249999999999995:1.578:0.040:0.8076
+11	836115	rs11253444	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:-0.1380:0.5199:0.596:0.670:0.9248
+11	838179	rs1536337	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0534:0.0000:1.318:0.095:0.7967
+11	858022	rs9124	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.5565:0:0.715:0.012:0.9397
+11	858924	exm805329	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0866:0:0.873:0.021:0.9056
+11	859047	exm805338	C	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1868:0:0.917:0.007:0.5296
+11	860687	exm805350	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1509:0:1.172:0.059:0.3777
+11	860726	exm805354	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0224:0.0000:2.255:0.138:0.3747
+11	860970	exm805360	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1069:0.0000:1.859:0.070:0.7352
+11	871110	exm805378	G	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0701:0.0000:1.373:0.002:0.4607
+11	871746	exm805386	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1743:0.00239999999999996:0.597:0.017:0.5312
+11	875350	exm805392	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1814:0:0.924:0.018:0.5191
+11	888899	exm805400	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0585:0.00470000000000004:1.182:0.028:0.5116
+11	888916	exm805401	T	C	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.1408:0.0000:1.480:0.041:0.4128
+11	894838	rs12249828	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.2119:0.4839:1.145:1.256:0.8432
+11	903950	rs11253471	A	G	.	.	.	GT:LRR:BAF:IA:IB:GC	0/1:-0.0047:0.4747:0.562:0.549:0.9470
+11	909757	exm805413	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0614:0:1.538:0.027:0.4097
+11	909766	exm805415	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0578:0:1.502:0.023:0.4128
+11	910074	exm805420	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0503:0.0071:1.001:0.057:0.5002
+11	910081	exm805421	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.1352:0.002:1.125:0.033:0.4254
+11	927331	rs11253489	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	1/0:0.0370:0.5325:0.976:1.435:0.7729
+11	931618	exm805430	G	A	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:0.0474:0:1.222:0.009:0.4871
+11	931631	exm805431	C	T	.	.	.	GT:LRR:BAF:IA:IB:GC	0/0:-0.0819:0.00390000000000001:0.827:0.023:0.5296
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnv_baf_only.vcf	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,188 @@
+##fileformat=VCFv4.2
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=BAF,Number=1,Type=Float,Description="B Allele Frequency">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	test
+10	135656	rs10904561	T	G	.	.	.	GT:BAF	0/1:0.5176
+10	135708	rs7917054	G	A	.	.	.	GT:BAF	1/0:0.501
+10	178434	rs7089889	T	G	.	.	.	GT:BAF	0/1:0.4833
+10	188805	rs12146291	A	G	.	.	.	GT:BAF	0/1:0.4715
+10	203471	rs10903451	A	G	.	.	.	GT:BAF	0/0:0.0000
+10	252693	rs2379078	T	C	.	.	.	GT:BAF	0/0:0.0068
+10	273344	rs2448378	A	C	.	.	.	GT:BAF	0/0:0.0000
+10	279248	rs2496278	C	A	.	.	.	GT:BAF	1/0:0.6268
+10	291134	rs10508201	T	C	.	.	.	GT:BAF	0/1:0.4723
+10	293358	exm2249181	A	C	.	.	.	GT:BAF	0/0:0.0044
+10	313504	rs4880568	C	T	.	.	.	GT:BAF	1/1:0.9803
+10	317501	rs2018975	C	T	.	.	.	GT:BAF	0/0:0
+10	323283	rs3740304	A	G	.	.	.	GT:BAF	0/1:0.5588
+10	326894	rs3125027	T	C	.	.	.	GT:BAF	0/0:0.0005
+10	327162	exm805022	C	T	.	.	.	GT:BAF	0/0:0
+10	329493	rs3815985	C	A	.	.	.	GT:BAF	1/0:0.5187
+10	338553	rs3125031	C	T	.	.	.	GT:BAF	1/0:0.4696
+10	354301	rs35198327	C	T	.	.	.	GT:BAF	1/0:0.4929
+10	375475	variant.11341	C	T	.	.	.	GT:BAF	0/0:0.000199999999999978
+10	377161	rs7070654	C	T	.	.	.	GT:BAF	0/0:0
+10	387060	rs7904155	G	A	.	.	.	GT:BAF	1/1:0.9945
+10	390962	exm805090	G	A	.	.	.	GT:BAF	0/0:9.9999999999989e-05
+10	390983	exm805091	G	A	.	.	.	GT:BAF	0/0:0
+10	394615	exm805105	G	A	.	.	.	GT:BAF	0/0:0
+10	402390	exm805131	G	C	.	.	.	GT:BAF	0/0:0.0000
+10	403792	exm805136	G	C	.	.	.	GT:BAF	0/0:0.0000
+10	410501	exm805166	C	T	.	.	.	GT:BAF	0/0:0
+10	413010	rs9787422	C	T	.	.	.	GT:BAF	1/0:0.5334
+10	423555	rs12245012	G	A	.	.	.	GT:BAF	0/0:0.00149999999999995
+10	423671	rs10904067	C	T	.	.	.	GT:BAF	1/0:0.5566
+10	431161	exm2271240	C	T	.	.	.	GT:BAF	1/0:0.4838
+10	435971	exm2249233	T	C	.	.	.	GT:BAF	0/0:0.0000
+10	435990	exm805214	G	A	.	.	.	GT:BAF	0/0:0
+10	453567	rs4881254	C	T	.	.	.	GT:BAF	1/0:0.5079
+10	462885	rs10904173	G	A	.	.	.	GT:BAF	1/0:0.4819
+10	465046	exm805254	G	A	.	.	.	GT:BAF	0/0:0
+10	468599	rs12415961	T	C	.	.	.	GT:BAF	0/1:0.5021
+10	486935	exm805280	G	C	.	.	.	GT:BAF	0/0:0.0186
+10	487973	rs4881313	T	C	.	.	.	GT:BAF	0/1:0.5628
+10	521431	exm2271370	C	T	.	.	.	GT:BAF	1/1:0.9952
+10	521723	rs4881336	C	T	.	.	.	GT:BAF	1/1:1
+10	547567	rs816599	A	G	.	.	.	GT:BAF	1/1:1.0000
+10	554186	rs12251997	C	T	.	.	.	GT:BAF	0/0:0.00309999999999999
+10	556129	rs10466270	A	G	.	.	.	GT:BAF	0/1:0.5142
+10	566379	rs11252926	C	T	.	.	.	GT:BAF	1/0:0.5024
+10	588406	rs10904450	A	G	.	.	.	GT:BAF	0/0:0.0006
+10	592283	rs816646	G	A	.	.	.	GT:BAF	1/0:0.5006
+10	601089	rs816650	C	T	.	.	.	GT:BAF	0/0:0
+10	615782	rs17221309	G	A	.	.	.	GT:BAF	0/0:0.00319999999999998
+10	635857	rs7069611	T	C	.	.	.	GT:BAF	0/0:0.0013
+10	669358	rs7898821	G	A	.	.	.	GT:BAF	0/0:0
+10	673037	rs816563	C	T	.	.	.	GT:BAF	1/1:0.9065
+10	680428	rs2124585	G	A	.	.	.	GT:BAF	1/0:0.5212
+10	712617	rs17136372	A	C	.	.	.	GT:BAF	1/1:0.9992
+10	738630	rs1750792	C	T	.	.	.	GT:BAF	0/0:0
+10	749238	rs553326	G	T	.	.	.	GT:BAF	0/0:0.00229999999999997
+10	754033	rs2265090	C	A	.	.	.	GT:BAF	0/0:0
+10	757222	rs10904546	A	G	.	.	.	GT:BAF	0/0:0.0000
+10	766105	rs7906313	T	C	.	.	.	GT:BAF	0/0:0.0116
+10	776027	rs11253377	C	T	.	.	.	GT:BAF	1/1:0.9964
+10	787896	rs1769242	T	C	.	.	.	GT:BAF	0/0:0.0000
+10	800213	rs2254501	G	A	.	.	.	GT:BAF	1/1:0.9918
+10	802445	rs1769215	C	T	.	.	.	GT:BAF	0/0:0.00370000000000004
+10	803721	rs2790381	C	T	.	.	.	GT:BAF	1/1:0.9798
+10	811876	rs12414585	G	A	.	.	.	GT:BAF	1/0:0.516
+10	813426	rs11253424	C	T	.	.	.	GT:BAF	0/0:0
+10	815149	rs7084027	A	G	.	.	.	GT:BAF	1/1:0.9944
+10	820868	rs10752019	C	T	.	.	.	GT:BAF	0/0:0.0118
+10	833528	exm2271241	T	G	.	.	.	GT:BAF	0/1:0.4896
+10	834736	rs4881530	G	A	.	.	.	GT:BAF	0/0:0.00249999999999995
+10	836115	rs11253444	A	G	.	.	.	GT:BAF	0/1:0.5199
+10	838179	rs1536337	T	C	.	.	.	GT:BAF	0/0:0.0000
+10	858022	rs9124	C	T	.	.	.	GT:BAF	0/0:0
+10	858924	exm805329	G	A	.	.	.	GT:BAF	0/0:0
+10	859047	exm805338	C	A	.	.	.	GT:BAF	0/0:0
+10	860687	exm805350	C	T	.	.	.	GT:BAF	0/0:0
+10	860726	exm805354	T	C	.	.	.	GT:BAF	0/0:0.0000
+10	860970	exm805360	A	G	.	.	.	GT:BAF	0/0:0.0000
+10	871110	exm805378	G	C	.	.	.	GT:BAF	0/0:0.0000
+10	871746	exm805386	G	A	.	.	.	GT:BAF	0/0:0.00239999999999996
+10	875350	exm805392	G	A	.	.	.	GT:BAF	0/0:0
+10	888899	exm805400	C	T	.	.	.	GT:BAF	0/0:0.00470000000000004
+10	888916	exm805401	T	C	.	.	.	GT:BAF	0/0:0.0000
+10	894838	rs12249828	C	T	.	.	.	GT:BAF	1/0:0.4839
+10	903950	rs11253471	A	G	.	.	.	GT:BAF	0/1:0.4747
+10	909757	exm805413	G	A	.	.	.	GT:BAF	0/0:0
+10	909766	exm805415	G	A	.	.	.	GT:BAF	0/0:0
+10	910074	exm805420	C	T	.	.	.	GT:BAF	0/0:0.0071
+10	910081	exm805421	C	T	.	.	.	GT:BAF	0/0:0.002
+10	927331	rs11253489	G	A	.	.	.	GT:BAF	1/0:0.5325
+10	931618	exm805430	G	A	.	.	.	GT:BAF	0/0:0
+10	931631	exm805431	C	T	.	.	.	GT:BAF	0/0:0.00390000000000001
+11	135656	rs10904561	T	G	.	.	.	GT:BAF	0/1:0.5176
+11	135708	rs7917054	G	A	.	.	.	GT:BAF	1/0:0.501
+11	178434	rs7089889	T	G	.	.	.	GT:BAF	0/1:0.4833
+11	188805	rs12146291	A	G	.	.	.	GT:BAF	0/1:0.4715
+11	203471	rs10903451	A	G	.	.	.	GT:BAF	0/0:0.0000
+11	252693	rs2379078	T	C	.	.	.	GT:BAF	0/0:0.0068
+11	273344	rs2448378	A	C	.	.	.	GT:BAF	0/0:0.0000
+11	279248	rs2496278	C	A	.	.	.	GT:BAF	1/0:0.6268
+11	291134	rs10508201	T	C	.	.	.	GT:BAF	0/1:0.4723
+11	293358	exm2249181	A	C	.	.	.	GT:BAF	0/0:0.0044
+11	313504	rs4880568	C	T	.	.	.	GT:BAF	1/1:0.9803
+11	317501	rs2018975	C	T	.	.	.	GT:BAF	0/0:0
+11	323283	rs3740304	A	G	.	.	.	GT:BAF	0/1:0.5588
+11	326894	rs3125027	T	C	.	.	.	GT:BAF	0/0:0.0005
+11	327162	exm805022	C	T	.	.	.	GT:BAF	0/0:0
+11	329493	rs3815985	C	A	.	.	.	GT:BAF	1/0:0.5187
+11	338553	rs3125031	C	T	.	.	.	GT:BAF	1/0:0.4696
+11	354301	rs35198327	C	T	.	.	.	GT:BAF	1/0:0.4929
+11	375475	variant.11341	C	T	.	.	.	GT:BAF	0/0:0.000199999999999978
+11	377161	rs7070654	C	T	.	.	.	GT:BAF	0/0:0
+11	387060	rs7904155	G	A	.	.	.	GT:BAF	1/1:0.9945
+11	390962	exm805090	G	A	.	.	.	GT:BAF	0/0:9.9999999999989e-05
+11	390983	exm805091	G	A	.	.	.	GT:BAF	0/0:0
+11	394615	exm805105	G	A	.	.	.	GT:BAF	0/0:0
+11	402390	exm805131	G	C	.	.	.	GT:BAF	0/0:0.0000
+11	403792	exm805136	G	C	.	.	.	GT:BAF	0/0:0.0000
+11	410501	exm805166	C	T	.	.	.	GT:BAF	0/0:0
+11	413010	rs9787422	C	T	.	.	.	GT:BAF	1/0:0.5334
+11	423555	rs12245012	G	A	.	.	.	GT:BAF	0/0:0.00149999999999995
+11	423671	rs10904067	C	T	.	.	.	GT:BAF	1/0:0.5566
+11	431161	exm2271240	C	T	.	.	.	GT:BAF	1/0:0.4838
+11	435971	exm2249233	T	C	.	.	.	GT:BAF	0/0:0.0000
+11	435990	exm805214	G	A	.	.	.	GT:BAF	0/0:0
+11	453567	rs4881254	C	T	.	.	.	GT:BAF	1/0:0.5079
+11	462885	rs10904173	G	A	.	.	.	GT:BAF	1/0:0.4819
+11	465046	exm805254	G	A	.	.	.	GT:BAF	0/0:0
+11	468599	rs12415961	T	C	.	.	.	GT:BAF	0/1:0.5021
+11	486935	exm805280	G	C	.	.	.	GT:BAF	0/0:0.0186
+11	487973	rs4881313	T	C	.	.	.	GT:BAF	0/1:0.5628
+11	521431	exm2271370	C	T	.	.	.	GT:BAF	1/1:0.9952
+11	521723	rs4881336	C	T	.	.	.	GT:BAF	1/1:1
+11	547567	rs816599	A	G	.	.	.	GT:BAF	1/1:1.0000
+11	554186	rs12251997	C	T	.	.	.	GT:BAF	0/0:0.00309999999999999
+11	556129	rs10466270	A	G	.	.	.	GT:BAF	0/1:0.5142
+11	566379	rs11252926	C	T	.	.	.	GT:BAF	1/0:0.5024
+11	588406	rs10904450	A	G	.	.	.	GT:BAF	0/0:0.0006
+11	592283	rs816646	G	A	.	.	.	GT:BAF	1/0:0.5006
+11	601089	rs816650	C	T	.	.	.	GT:BAF	0/0:0
+11	615782	rs17221309	G	A	.	.	.	GT:BAF	0/0:0.00319999999999998
+11	635857	rs7069611	T	C	.	.	.	GT:BAF	0/0:0.0013
+11	669358	rs7898821	G	A	.	.	.	GT:BAF	0/0:0
+11	673037	rs816563	C	T	.	.	.	GT:BAF	1/1:0.9065
+11	680428	rs2124585	G	A	.	.	.	GT:BAF	1/0:0.5212
+11	712617	rs17136372	A	C	.	.	.	GT:BAF	1/1:0.9992
+11	738630	rs1750792	C	T	.	.	.	GT:BAF	0/0:0
+11	749238	rs553326	G	T	.	.	.	GT:BAF	0/0:0.00229999999999997
+11	754033	rs2265090	C	A	.	.	.	GT:BAF	0/0:0
+11	757222	rs10904546	A	G	.	.	.	GT:BAF	0/0:0.0000
+11	766105	rs7906313	T	C	.	.	.	GT:BAF	0/0:0.0116
+11	776027	rs11253377	C	T	.	.	.	GT:BAF	1/1:0.9964
+11	787896	rs1769242	T	C	.	.	.	GT:BAF	0/0:0.0000
+11	800213	rs2254501	G	A	.	.	.	GT:BAF	1/1:0.9918
+11	802445	rs1769215	C	T	.	.	.	GT:BAF	0/0:0.00370000000000004
+11	803721	rs2790381	C	T	.	.	.	GT:BAF	1/1:0.9798
+11	811876	rs12414585	G	A	.	.	.	GT:BAF	1/0:0.516
+11	813426	rs11253424	C	T	.	.	.	GT:BAF	0/0:0
+11	815149	rs7084027	A	G	.	.	.	GT:BAF	1/1:0.9944
+11	820868	rs10752019	C	T	.	.	.	GT:BAF	0/0:0.0118
+11	833528	exm2271241	T	G	.	.	.	GT:BAF	0/1:0.4896
+11	834736	rs4881530	G	A	.	.	.	GT:BAF	0/0:0.00249999999999995
+11	836115	rs11253444	A	G	.	.	.	GT:BAF	0/1:0.5199
+11	838179	rs1536337	T	C	.	.	.	GT:BAF	0/0:0.0000
+11	858022	rs9124	C	T	.	.	.	GT:BAF	0/0:0
+11	858924	exm805329	G	A	.	.	.	GT:BAF	0/0:0
+11	859047	exm805338	C	A	.	.	.	GT:BAF	0/0:0
+11	860687	exm805350	C	T	.	.	.	GT:BAF	0/0:0
+11	860726	exm805354	T	C	.	.	.	GT:BAF	0/0:0.0000
+11	860970	exm805360	A	G	.	.	.	GT:BAF	0/0:0.0000
+11	871110	exm805378	G	C	.	.	.	GT:BAF	0/0:0.0000
+11	871746	exm805386	G	A	.	.	.	GT:BAF	0/0:0.00239999999999996
+11	875350	exm805392	G	A	.	.	.	GT:BAF	0/0:0
+11	888899	exm805400	C	T	.	.	.	GT:BAF	0/0:0.00470000000000004
+11	888916	exm805401	T	C	.	.	.	GT:BAF	0/0:0.0000
+11	894838	rs12249828	C	T	.	.	.	GT:BAF	1/0:0.4839
+11	903950	rs11253471	A	G	.	.	.	GT:BAF	0/1:0.4747
+11	909757	exm805413	G	A	.	.	.	GT:BAF	0/0:0
+11	909766	exm805415	G	A	.	.	.	GT:BAF	0/0:0
+11	910074	exm805420	C	T	.	.	.	GT:BAF	0/0:0.0071
+11	910081	exm805421	C	T	.	.	.	GT:BAF	0/0:0.002
+11	927331	rs11253489	G	A	.	.	.	GT:BAF	1/0:0.5325
+11	931618	exm805430	G	A	.	.	.	GT:BAF	0/0:0
+11	931631	exm805431	C	T	.	.	.	GT:BAF	0/0:0.00390000000000001
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnv_pairwise_summary.tab	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,6 @@
+# This file was produced by: bcftools cnv*
+# The command line was:	bcftools cnv .+ test .+ test *
+#
+# RG, Regions	*
+RG	10	135656	931631	2	2	21.7	92	27	92	27
+RG	11	135656	931631	2	2	21.7	92	27	92	27
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnv_summary.tab	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,7 @@
+# RG, Regions *
+# This file was produced by: bcftools cnv*
+# The command line was:	bcftools cnv *
+#
+# RG, Regions	*
+RG	10	135656	931631	2	22.6	92	27
+RG	11	135656	931631	2	22.6	92	27
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/color_chrs.dat	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,5 @@
+# SG, shared segment	[2]Chromosome	[3]Start	[4]End	[5]B:1	[6]B:2
+# SW, number of switches	[3]Sample	[4]Chromosome	[5]nHets	[5]nSwitches	[6]switch rate
+SG	1	1	999	A:1	C:1
+SW	A	1	0	0	0.000000
+SW	C	1	0	0	0.000000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/color_chrs_unrelated.dat	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,5 @@
+# SG, shared segment	[2]Chromosome	[3]Start	[4]End	[5]B:1	[6]B:2
+# SW, number of switches	[3]Sample	[4]Chromosome	[5]nHets	[5]nSwitches	[6]switch rate
+SG	1	1	999	A:1	-
+SW	A	1	0	0	0.000000
+SW	(null)	1	0	0	0.000000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fasta_indexes.loc	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,6 @@
+23andme	?	test genome	${__HERE__}/test-cache/23andme.fa
+consensus	?	test genome	${__HERE__}/test-cache/consensus.fa
+csq	?	test genome	${__HERE__}/test-cache/csq.fa
+gvcf	?	test genome	${__HERE__}/test-cache/gvcf.fa
+mpileup	?	test genome	${__HERE__}/test-cache/mpileup.ref.fa
+norm	?	test genome	${__HERE__}/test-cache/norm.fa
--- a/test-data/mpileup.ref.fa.fai	Thu Feb 21 16:10:57 2019 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-17	4200	14	60	61
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/plugin_frameshifts.bed	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,1 @@
+1	3106150	3106160
--- a/test-data/stats.a.vcf	Thu Feb 21 16:10:57 2019 -0500
+++ b/test-data/stats.a.vcf	Wed Jun 05 13:19:54 2019 -0400
@@ -3,6 +3,6 @@
 ##contig=<ID=1,assembly=b37,length=249250621>
 ##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
 #CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A	B	C
-1	1000	.	G	A	.	PASS	.	GT	0/0	0/1	1/1
-1	1001	.	G	A	.	PASS	.	GT	0/0	0/1	1/1
-1	1002	.	G	A	.	PASS	.	GT	0/0	0/1	1/1
+1	1000	.	G	A	.	PASS	.	GT	0|0	0|1	1|1
+1	1001	.	G	A	.	PASS	.	GT	0/0	0|1	1|1
+1	1002	.	G	A	.	PASS	.	GT	0|0	0|1	1|1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/23andme.fa	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,14 @@
+>1
+CACGTNACGGCTGAAGTCCAAGGTAC
+CGTATCGAGTTCACAGTCGATAGCTC
+GATCGATAGCATCGCTAGCNNNACTA
+CGATCGATCGCTCTCCGTAACACTCA
+AAAACGATCGATCGACTGCTCTTTAG
+CGATGACTTTAGGGGAAAAA
+>2
+CGCTCAGCCGTACAGCCGAGCAGGAC
+ACGCTATTTTAGATCGACTGGCTNNG
+CGCTAGCTACGCTTTAGCACGAGAA
+>Y
+NNNGCATACGTGTCCATCACGATGAT
+AGCGATGATCGATC
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/23andme.fa.fai	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,3 @@
+1	150	3	26	27
+2	77	162	26	27
+Y	40	245	26	27
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/consensus.fa	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,20 @@
+>1:2-501
+TACCATATGTGACATATAAAAAAGAACATAACCTACGTATCAACTAAAGTGGTTGTTTGC
+AGAAAAGGAAGACTTAAAAAGAGTCAGTACTAACCTACATAATATATACAATGTTCATTA
+AATAATAAAATGAGCTCATCATACTTAGGTCATCATAAATATATCTGAAATTCACAAATA
+TTGATCAAATGGTAAAATAGACAAGTAGATTTTAATAGGTTAAACAATTACTGATTCTCT
+TGAAAGAATAAATTTAATATGAGACCTATTTCATTATAATGAACTCACAAATTAGAAACT
+TCACACTGGGGGCTGGAGAGATGGCTCAGTAGTTAAGAACACTGACTGCTCTTCTGAAGG
+TCCTGAGTTCAAATCCCAGCAACCACATGGTGACTTACAACCATCTGTAATGACATCTGA
+TGCCCTCTGGTGTGTCTGAAGACAGCTACAGTGTACTTACATAAAATAATAAATAAATCT
+TTAAAAACAAAAAAAAAGAA
+>2
+GAAGATCTTTTCCTTATTAAGGATCTGAAGCTCTGTAGATTTGTATTCTATTAAACATGG
+AGAGATTAGTGATTTTCCATATTCTTTAAGTCATTTTAGAGTAATGTGTTCTTAAGATAA
+ATCAGAAAAACAAAAACTTGTGCTTTCCTGTTTGAAAAACAAACAGCTGTGGGGAATGGT
+GTCGGGACAGCCTTTTTATAAAATTTTTCTAAATAATGTTGAGGCTTTGATACGTCAAAG
+TTATATTTCAAATGGAATCACTTAGACCTCGTTTCTGAGTGTCAATGGCCATATTGGGGA
+TTTGCTGCTGCCAATGACAGCACACCCTGGGAATGCCCCAACTACTTACTACAAAGCAGT
+GTTACATGGAGAAGATCTTCAAGAGTCTTTTTGCTAGATCTTTCCTTGGCTTTTGATGTG
+ACTCCTCTCAATAAAATCCACAGTAATATAGTGAGTGGTCTCCTGCTCCAAACCAGTATT
+TCAGACACAGTTAATCCAGAC
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/consensus.fa.fai	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,2 @@
+1:2-501	500	9	60	61
+2	501	521	60	61
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/csq.fa	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,34 @@
+>1
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+>2
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+>3
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/csq.fa.fai	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,3 @@
+1	600	3	60	61
+2	600	616	60	61
+3	600	1229	60	61
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/gvcf.fa	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,9 @@
+>22
+NNNNNNNNCCTTGGCCAAGTCACTTCCTCCTTCAGGAACATTGCAGTGGGCCTAAGTGCC
+TCCTCTCGGGACTGGTATGGGGACGGTCATGCAATCTGGACAACATTCACCTTTAAAAGT
+TTATTGATCTTTTGTGACATGCACGTGGGTTCCCAGTAGCAAGAAACTAAAGGGTCGCAG
+GCCGGTTTCTGCTAATTTCTTTAATTCCAAGACAGTCTCAAATATTTTCTTATTAACTTC
+CTGGAGGGAGGCTTATCATTCTCTCTTTTGGATGATTCTAAGTACCAGCTAAAATACAGC
+TATCATTCATTTTCCTTGATTTGGGAGCCTAATTTCTTTAATTTAGTATGCAAGAAAACC
+AATTTGGAAATATCAACTGTTTTGGAAACCTTAGACCTAGGTCATCCTTAGTAAGATCTT
+CCCATTTATATAAATACTTGCAAGTAGTAGTGCCATAATT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/gvcf.fa.fai	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,1 @@
+22	460	4	60	61
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/mpileup.ref.fa	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,71 @@
+>17 17:1-4200
+AAGCTTCTCACCCTGTTCCTGCATAGATAATTGCATGACAATTGCCTTGTCCCTGCTGAA
+TGTGCTCTGGGGTCTCTGGGGTCTCACCCACGACCAACTCCCTGGGCCTGGCACCAGGGA
+GCTTAACAAACATCTGTCCAGCGAATACCTGCATCCCTAGAAGTGAAGCCACCGCCCAAA
+GACACGCCCATGTCCAGCTTAACCTGCATCCCTAGAAGTGAAGGCACCGCCCAAAGACAC
+GCCCATGTCCAGCTTATTCTGCCCAGTTCCTCTCCAGAAAGGCTGCATGGTTGACACACA
+GTGCCTGCGACAAAGCTGAATGCTATCATTTAAAAACTCCTTGCTGGTTTGAGAGGCAGA
+AAATGATATCTCATAGTTGCTTTACTTTGCATATTTTAAAATTGTGACTTTCATGGCATA
+AATAATACTGGTTTATTACAGAAGCACTAGAAAATGCATGTGGACAAAAGTTGGGATTAG
+GAGAGAGAAATGAAGACATATGTCCACACAAAAACCTGTTCATTGCAGCTTTCTACCATC
+ACCAAAAATTGCAAACAACCACACGCCCTTCAACTGGGGAACTCATCAACAACAAACTTG
+TGGTTTACCCACACAATGGAAGACCACTTAGCAACAAAAAGGACCAAACTCCTGGTACAT
+GCAACTGACAGATGAATCTCAAACGCATTCCTCCGTGTGAAAGAAGCCGGACTCACAGGG
+CAACACACTATCTGACTGTTTCATGGGAAAGTCTGGAAACGGCAACACCATTGAGACAGA
+AAACAGGTGAGTGGTTGCCTGGGGCCAGGGAACTTTCTGGGGTCATATTCTCTGTGTTGA
+TTCTGGTGGTGGAAACAAGACTGTCCCAGCCTGGGTGATACAGCGAGACCCCATCTCTAC
+CAAAAAATTAAAAATTAGCTGGGCATGGTGGTGCATGCCTGTAGTCCCAGCTATTCACAG
+TGCTGAGGTGGGAAGATGCTTGAGCCCAGGAGTTCAAGGCTGCAATGAGCTATGATTGCG
+CCACTGCACTTTGGCCTGGACAACAGAGCAAAACCCTGTCTCTAAAAAAAGAAAAGAAAA
+GAAAAACTCACTGGATATGAATGATACAGGTTGAGGATCCATTATCTGAAATGCTTGGAC
+CAGATGTTTTGAATTTTGGATTTTTTCATATTTTGTAATCTTTGCAGTATATTTACCAGT
+TCAGCATCCCTAACTCAAAAATTCAAAAATCTGAAATCCCAAACGCGCCAATAAGCATTC
+CCTTTGAGCGTCATGTCGGTGCTTGGAATGTTTGGGGTTTTGGATTTACAGCTTTGGGAC
+GCTCAACCTGTACCTCAATAAACCTGATTTTAAAAAAGTTTGGGGGGATTCCCCTAAGCC
+CGCCACCCGGAGACAGCGGATTTCCTTAGTTACTTACTATGCTCCTTGGCCATTTCTCTA
+GGTATTGGTATATTGTGTCTGCTGTGAACTGTCCTTGGCCTGTTTGGTGACGGGTGAGGA
+GCAGGGACAGAAGGGTCCTGCGTGCCCTGCCTTCACAAGCCCCTGGAAGGAAAGTTGTTT
+TGGGATCTCTGCACCCTCAGCCTGGACAACTTGTGCCCATCTGGTGACCCCTCACTCAGC
+CACCAGACTTCCACGACAGGCTCCAGCCTCGGCACCTTCAGCCATGGACAGTTCCGCCAG
+CGTTGCCCTCTGTTCTGCTGTTTTCTCTACCAGAAGTGCCCTTCCCTCCTCACCTGACCA
+CTCTGGGGAAATCCCTCAGCACCCTCCCTGAGCATACCCTACTCTGGCACAAGCCCACCC
+TGCAAAGCCCCTGAGGCCCGCCCTGTGGCGTCTCTCCCTCCCTTGCTGTCAGGACAGTGG
+TCCTGGCCACCGGGGCTCACGGAGCCGCCCTGTGCCGTGTACCTCTGAGCCCTCTGCACA
+GTGCCTTCTGCTTGCCTGTGGCTTTGAGAAGAAACCCCTTCTGGTTATACATAAGACAGC
+CAGAGAAGGGAGTTGCCCAGGGTGGCACAGCACGTTGCTGCCAGTTACTGCCATTTTCAC
+GGGCATGAAATGGAGATAACAACAGGAGCGACCGCACAGGCTGCTGAGCGCGTCACACGC
+AGCCATCGCGCAGCTCAGGGATATTACGTGTAACTCGACATGTCAGCGATTGTCACAGGC
+ACTGCTACTCCTGGGGTTTTCCATCAAACCCTCAAGAGCTGGGCCTGGGGTCAACTTCCG
+GCCTGGGGAAACTGGGGCAAGTATCACCAGAGATGAGCTTTATAAAAATAATGGTGCTAG
+CTGGGCATGGTGGCTTGCACCTGTAATCCCAGCACTTTGGGAGGCCGAGCTAGGAGGATC
+GTTTGAGTCCAGCAGTTTGAGACCAGCCTGGCCAATACGGCAAAACCCAGTCTCTACAAA
+AAATACAAAAAACAACTAGCCAGGCGTGGTGGTGCACACCTGTAGTCCCAGCTACTCAGG
+AGGCTGAGGGGGAAGGACTGCTTGAGCCCAGGAGTTTGAGGCTGCTGTGAGCTGTGATCG
+CATCACTGCATTCCAGCCCGGTGACAGAGTGAGTCACTGTCTCAAAAAAGAAAGGAAGAA
+ATAAAGAAAACAAATAAAAATAATAGTGCAGACAAAAGGCCTTGACCCATCTAGCTTTGG
+CCCTCAGCATCAACCGCTAGATACGTCCCTCCCTTTCTTCTGGGGCACAGGTCACACTCT
+CTTCCAGGTCTAGGATGCAGCTGAGGGGTGCCCCTCTTACCATCTAATCTGTGCCCTTAT
+TTCCTCTGCTTTAGTGAGGAAGAGGCCCCTGGTCCATGAAGGGGCCTTTCAGAGACGGGG
+ACCCCTGAGGAGCCCCGAGCAGCAGCCGTCGTGTCTCACCCAGGGTGTCTGAAACAGATG
+TGGAGGTCTCGGGTGAGGCGTGGCTCAGATACAGGGAGTGGCCCACAGCTCGGCCTGTCT
+TTGAAAGGCCACGTGACCTGGCCCACGGCTGGCAGGTGGGACCCAGCTGCAGGGGTCCAG
+CAGCACCCACAGCAGCCACCTGTGGCAGGGAGGAGCTTGTGGTACAGTGGACAGGCCCTG
+CCCAGATGGCCCCCCGCCTGCCTGTGGAAGTTGACCAGACCATCTGTCACAGCAGGTAAG
+ACTCTGCTTTCTGGGCAACCCAGCAGGTGACCCTGGAATTCCTGTCCATCTGGCAGGTGG
+GCATTGAAACTGGTTTAAAAATGTCACACCATAGGCCGGGCACAGTGGCTCACGCCTGTA
+ATCCCAGCCCTTTGGGAGGCCAGGGTGGGTGGATCACTTGAGGTCAGGAGTTCAAGACCA
+GCCTGGCCAACATGGTGAAACCCCGTCTACTAAAAATACAAAAATTAGCCTGGCGTGGTG
+GCGCATGCCTGTAATCCCAGCTACTTGGGAAGCTGAGGGATGAGAACTGCTTGAACCTGG
+GAGGCAGACGTTGCAGTGAGCTGAGATCACGCCACTGCACTCCAGCCTGGGCAACAGAGT
+AAGACTCTGTCTCAAAAAAAAAAAAATCACACCATTTTGGCTTCAGATTGCATATCCTCC
+TGCAAGGATATATACGCGTGAAATTCAAGTCAATGACAAATCAGAAGAAAAAACATATAT
+ATACGCAAACCAGTATCCTACTGTGTGTGTCGTTTGTTGTGTTTTCGACAGCTGTCCGTG
+TTATAATAATTCCTCTAGTTCAAATTTATTCATTTTTAACTTCATAGTACCACATTCTAC
+ACACTGCCCATGTCCCCTCAAGCTTCCCCTGGCTCCTGCAACCACAAATCTACTCTCTGC
+CTCTGTGGGTTGACCTATTCTGGACACGTCATAGAAATAGAGTCCTGCAACACGTGGCCG
+TCTGTGTCTGGCTTCTCTCGCTTAGCATCTTGTTTCCAAGGTCCTCCCACAGTGTAGCAT
+GCACCTGCTACACTCCTTCTTAGGGCTGATATTCCACGCACCTGCTACACTCCTTCTTAT
+GGCTGATATTCCACGCACCTGCTACACTCCTTCTTAGGGCTGATATTCCACACACCCGCT
+ACACTCCTTCTTAGGGCTGATATTCCACGCACCCGCTACACTCCTTCTTAGGGCTGATAT
+TCCACGCACCTGCTACACTCCTTCTTAGGGCTGATATTCCACGCACCTGCTACACTCCTT
+CTTAGGGCTGATATTCCACGCACCTGCTACACTCCTTCTTAGGGCTGATATTCCACGCAC
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/mpileup.ref.fa.fai	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,1 @@
+17	4200	14	60	61
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/norm.fa	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,26 @@
+>20 20:1339000-1339300
+AGGATGGGGCTCATTAATAGAGCTCCACTTGTCTCCAGAATCACTGGTGAGGAAGGGGAG
+TGTTGCCCCCACATTCGTGCACAGCAGGGATGGTTCACCGAACTCCACACCAGTCTCTGC
+AGAGCCTGTTGGGGAGAGGAGGGCTGTGGTTTCTTTGATGGTGTTCACCTGGAGTAGAGC
+AAGTATTGTCAAAAGGGTCATCCTCGGAGGTTGCAGTGAGCCGAGATCGCACCATTGCAC
+TGCAGCCTGGGAGACAGAGCAAGACTCCATCTCAAAAAAAAAAAAAAAAAAAAAGGCCAT
+C
+>1 1:10143-10443
+CTAACCCCTAACCCTAACCCTAACCCTAACCCTAACCTAACCCTAACCCTAACCCTAACC
+CTAACCCTAACCCTAACCCTAACCCTAACCCCTAACCCTAACCCTAAACCCTAAACCCTA
+ACCCTAACCCTAACCCTAACCCTAACCCCAACCCCAACCCCAACCCCAACCCCAACCCCA
+ACCCTAACCCCTAACCCTAACCCTAACCCTACCCTAACCCTAACCCTAACCCTAACCCTA
+ACCCTAACCCCTAACCCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC
+>2 1:1382388-1382602
+GGGCGTCTCATAGCTGGAGCAATGGCGAGCGCCTGGACAAGGGAGGGGAAGGGGTTCTTA
+TTACTGACGCGGGTAGCCCCTACTGCTGTGTGGTTCCCCTATTTTTTTTTTTTTCTTTTT
+GAGACGGAGTCTCGCTCTGTCACCCAGGCTGGAGTGCAGTGGCACAATCTCGGCTCACTG
+CAAGCTCCACCTCCTGGGTTCACGCCATTCTCCTG
+>3 madeup
+ACTGGACACGTGGACACACACACACACACACACACACACACAGTCAAACCACCTACCAGA
+>4 20:8917026-8917085
+TCCCCTCTTGACCTCTCTCTATTTTTTTTTTTTTTTCTGAGATGGATTTTTGCTCTTGTT
+>5 20:18724313-18724343
+GTCTCAAAAAAAAAAAAAAAAAAAAGAAAAG
+>21
+TTTATTATTATTATTATTAAATTGAATTTATTTAGTGTACATACATTCATGTGTATTGTG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-cache/norm.fa.fai	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,7 @@
+20	301	23	60	61
+1	300	347	60	61
+2	215	673	60	61
+3	60	902	60	61
+4	60	985	60	61
+5	31	1070	31	32
+21	60	1106	60	61
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_data_table_conf.xml.test	Wed Jun 05 13:19:54 2019 -0400
@@ -0,0 +1,7 @@
+<tables>
+    <!-- Locations of FASTA index ffiles for testing -->
+    <table name="fasta_indexes" comment_char="#">
+        <columns>value, dbkey, name, path</columns>
+        <file path="${__HERE__}/test-data/fasta_indexes.loc" />
+    </table>
+</tables>