changeset 0:1fbe84e8a740 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/strelka commit 2e445e7c519b2b77498cb74c03ca6ed12b22423a"
author iuc
date Wed, 27 Jan 2021 14:48:23 +0000
parents
children 19481653a22f
files macros.xml strelka_germline.xml test-data/genome_test1.vcf test-data/hg98.fa test-data/hg98.fa.fai test-data/indels_test2.vcf.gz test-data/sample1.bam test-data/sample1.cram test-data/sample2.bam test-data/sample2.cram test-data/sample3.bam test-data/snvs_test2.vcf.gz test-data/test_fasta_indexes.loc test-data/variants_test2.vcf tool-data/fasta_indexes.loc.sample tool_data_table_conf.xml.sample tool_data_table_conf.xml.test
diffstat 17 files changed, 755 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,218 @@
+<?xml version="1.0"?>
+<macros>
+    <token name="@TOOL_VERSION@">2.9.10</token>
+    <token name="@GALAXY_VERSION@">galaxy0</token>
+    <token name="@DESCRIPTION@">small variant caller</token>
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="@TOOL_VERSION@">strelka</requirement>
+            <requirement type="package" version="1.9">samtools</requirement>
+        </requirements>
+    </xml>
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.1038/s41592-018-0051-x</citation>
+        </citations>
+    </xml>
+
+    <!-- 
+        command
+    -->
+
+    <token name="@INIT@"><![CDATA[
+        ##ln -s '$referenceFasta' './input_ref.fasta' &&
+        ##samtools faidx './input_ref.fasta' &&
+
+        ## Make all optional regions files available
+        ## Note: all of these must be tabixed
+        #set $reg_options = []
+        #for $i, $sites in enumerate($forced_regions):
+            #set $target_file = 'input_forcedgt_%d.vcf.gz' % $i
+            #if $sites.whitelist.ext == 'vcf':
+                bgzip -c '${sites.whitelist}' > $target_file &&
+                tabix -p vcf $target_file &&
+            #else:
+                ln -s '${sites.whitelist}' $target_file &&
+                ln -s '${sites.whitelist.metadata.tabix_index}' ${target_file}.tbi' &&
+            #end if
+            #if str($sites.use_whitelist_as) == 'indel_candidates':
+                #silent $reg_options.extend(['--indelCandidates', $target_file])
+            #else:
+                #silent $reg_options.extend(['--forcedGT', $target_file])
+            #end if
+        #end for
+        #if str($regions.restrict_to_region) == 'regions_from_file':
+            #silent $reg_options.append('--callRegions')
+            #set $target_file = 'input_callregions.bed.gz'
+            #if $regions.callRegions.ext == 'bed':
+                bgzip -c '$regions.callRegions' $target_file &&
+                tabix -p bed $target_file &&
+            else:
+                ln -s '$regions.callRegions' $target_file &&
+                ln -s '$regions.callRegions.tabix_index' ${target_file}.tbi &&
+            #end if
+            #silent $reg_options.append($target_file)
+        #end if
+        #set $region_spec = ' '.join($reg_options)
+        #if str($ref_cond.ref_sel) == 'history':
+            #set $reference_fasta_fn = 'input_ref.fasta'
+            ln -s '$ref_cond.ref' $reference_fasta_fn &&
+            samtools faidx $reference_fasta_fn &&
+        #else
+            #set $reference_fasta_fn = str($ref_cond.ref.fields.path)
+        #end if
+    ]]></token>
+    <token name="@CREATE@"><![CDATA[
+        --config='$config_file'
+        $optimization
+        #if str($expert_settings.evs.selector) == "disableEVS"
+            --disableEVS
+        #else
+            #if $expert_settings.evs.snvScoringModelFile
+                --snvScoringModelFile '$expert_settings.evs.snvScoringModelFile'
+            #end if
+            #if $expert_settings.evs.indelScoringModelFile
+                --indelScoringModelFile '$expert_settings.evs.indelScoringModelFile'
+            #end if
+            $expert_settings.evs.reportEVSFeatures
+        #end if
+        $region_spec
+        --referenceFasta '${reference_fasta_fn}'
+        --runDir results &&
+    ]]></token>
+    <token name="@RUN@"><![CDATA[
+        results/runWorkflow.py
+            -m local
+            -j \${GALAXY_SLOTS:-2}
+            -g \${GALAXY_MEMORY_MB:-8192}
+    ]]></token>
+
+    <!-- 
+        configfile - parser cannot handle indents
+    -->
+
+    <token name="@CONFIG@"><![CDATA[
+maxIndelSize = $strelka.maxIndelSize
+isWriteRealignedBam = 0 ## not inplemented
+extraVariantCallerArguments = ## not implemented
+    ]]></token>
+
+    <!--
+        input 
+    -->
+    
+    <xml name="input_required" token_ref="normalBam">
+        <conditional name="ref_cond">
+            <param name="ref_sel" type="select" label="Choose the source for the reference genome" help="(--referenceFasta)">
+                <option value="cached">Locally cached</option>
+                <option value="history">History</option>
+            </param>
+            <when value="cached">
+                <param name="ref" type="select" label="Reference genome" help="">
+                    <options from_data_table="fasta_indexes">
+                        <filter type="data_meta" column="dbkey" key="dbkey" ref="@REF@"/>
+                        <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="ref" type="data" format="fasta" label="Reference sequence" help="(--referenceFasta)"/>
+            </when>
+        </conditional>
+    </xml>
+    <xml name="regions_select">
+        <conditional name="regions">
+            <param name="restrict_to_region" type="select"
+            label="Call variants across">
+                <option value="genome">Whole reference</option>
+                <option value="regions_from_file">Regions specified in BED</option>
+            </param>
+            <when value="genome" />
+            <when value="regions_from_file">
+                <param argument="--callRegions" type="data" format="bed"
+                label="BED dataset with regions to examine"
+                help="Specify a set of regions to call. No VCF output will be provided outside of these regions. Note that the full genome may still be used to calculate certain input statistics (such as expected depth per chromosome)."/>
+            </when>
+        </conditional>
+        <repeat name="forced_regions" title="Whitelists of SNV/indel sites that should always be considered" default="0" min="0"
+        help="Add whitelisted SNVs/indels to list of considered/reported alleles explicitly">
+            <param name="whitelist" type="data" format="vcf"
+            label="Select file with candidate alleles"
+                help="" />
+            <param name="use_whitelist_as" type="select" display="radio"
+            label="Use this whitelist as"
+            help="An indel candidates list is used during the realignment and calling steps to increase the chances of detecting given indels if they exist in any sample. If the indel is NOT found despite these efforts, it will NOT be reported, however. With a list of 'SNV sites and/or indels of interest', on the other hand, indels in the list undergo that same treatment, but listed indels and SNPs are both guaranteed to be reported in the variants output, even if they are judged as not being present in any sample.">
+                <option value="indel_candidates">A list of indel candidates to be considered during realignment/calling (--indelCandidates)</option>
+                <option value="forced_gt_sites">A list of SNV sites/indels of interest that should always be reported (--forcedGT)</option>
+            </param>
+        </repeat>
+    </xml>
+    <xml name="calling_model">
+        <param name="optimization" type="select" label="Optimize variant calling for">
+            <option value="">Whole-genome sequencing (WGS) data (default mode)</option>
+            <option value="--exome">Whole-exome sequencing (WES) data (--exome)</option>
+            <yield />
+        </param>
+    </xml>
+    <xml name="calling_model_expert">
+        <section name="expert_settings" title="Expert configuration of calling model" expanded="false">
+            <yield />
+            <conditional name="evs">
+                <param name="selector" type="select" label="Configure empirical variant scoring (EVS) model">
+                    <option value="disableEVS">Don't use EVS, just simple threshold-based filtering (--disableEVS)</option>
+                    <option value="enableEVS" selected="true">Use EVS models (default)</option>
+                </param>
+                <when value="disableEVS" />
+                <when value="enableEVS">
+                    <param argument="--snvScoringModelFile" type="data" format="json" optional="true"
+                    label="Optional SNV scoring model to overwrite default model" />
+                    <param argument="--indelScoringModelFile" type="data" format="json" optional="true"
+                    label="Optional indel scoring model to overwrite default model" />
+                    <param argument="--reportEVSFeatures" type="boolean" truevalue="--reportEVSFeatures" falsevalue=""
+                    label="Report all empirical variant scoring features in VCF output"
+                    help="WARNING: Do not use this feature with Strelka Germline and more than one input sample or the tool run will fail!" />
+                </when>
+            </conditional>
+        </section>
+    </xml>
+    <xml name="input_output">
+        <param name="vcf_type" type="boolean" truevalue="compressed" falsevalue="decompressed"
+        label="Generate compressed variants output (vcf.gz)"
+        help="Default is uncompressed vcf" />
+    </xml>
+    <xml name="input_strelka">
+        <param argument="maxIndelSize" name="maxIndelSize" type="integer" value="49" label="Set maximum reported indel size" help=""/>
+    </xml>
+
+    <!--
+        Help
+    -->
+
+    <token name="@HELP_INPUT@">
+*Sequencing Data*
+
+The input sequencing reads are expected to come from a paired-end sequencing assay. Any input other than paired-end reads are ignored by default except to double-check for putative somatic variant evidence in the normal sample during somatic variant analysis. Read lengths above ~400 bases are not tested.
+
+*Alignment Files*
+
+All input sequencing reads should be mapped by an external tool and provided as input in `BAM &lt;https://samtools.github.io/hts-specs/SAMv1.pdf&gt;`_. or `CRAM &lt;https://samtools.github.io/hts-specs/CRAMv3.pdf&gt;`_ format.
+
+The following limitations apply to the input BAM/CRAM alignment records:
+
+- Alignments cannot contain the "=" character in the SEQ field.
+- RG (read group) tags are ignored -- each alignment file must represent one sample.
+- Alignments with basecall quality values greater than 70 will trigger a runtime error (these are not supported on the assumption that the high basecall quality indicates an offset error)
+
+*VCF Files*
+
+Input `VCF &lt;http://samtools.github.io/hts-specs/VCFv4.1.pdf&gt;`_ files are accepted for a number of roles as described below. All input VCF records are checked for compatibility with the given reference genome, in additional to role-specific checks described below. If any VCF record's REF field is not compatible with the reference genome a runtime error will be triggered. 'Compatible with the reference genome' means that each VCF record's REF base either (1) matches the corresponding reference genome base or the VCF record's REF base is 'N' or the reference genome base is any ambiguous IUPAC base code (all ambiguous base codes are converted to 'N' while importing the reference).
+    </token>
+    <token name="@HELP_STRELKA@">
+Strelka2 is a fast and accurate small variant caller optimized for analysis of germline variation in small cohorts (Strelka Germline) and somatic variation in tumor/normal sample pairs (Strelka Somatic).
+
+Strelka accepts input read mappings from BAM or CRAM files, and optionally candidate and/or forced-call alleles from VCF. It reports all small variant predictions in VCF 4.1 format. Germline variant reporting uses the gVCF conventions to represent both variant and reference call confidence. For best somatic indel performance, Strelka is designed to be run with the Manta structural variant and indel caller, which provides additional indel candidates up to a given maxiumum indel size (by default this is 49). By design, Manta and Strelka run together with default settings provide complete coverage over all indel sizes (in additional to all SVs and SNVs) for clinical somatic and germline analysis scenarios.
+    </token>
+    <token name="@HELP_REFERENCES@"><![CDATA[
+More information are available on `github <https://github.com/Illumina/strelka>`_.
+    ]]></token>
+</macros>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/strelka_germline.xml	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,250 @@
+<?xml version="1.0"?>
+<tool id="strelka_germline" name="Strelka Germline" version="@TOOL_VERSION@+@GALAXY_VERSION@">
+    <description>@DESCRIPTION@ for germline variation in small cohorts</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements"/>
+    <command detect_errors="exit_code"><![CDATA[
+    ## sanity check
+    #if len($bam) > 1 and str($expert_settings.evs.selector) == "enableEVS" and $expert_settings.evs.reportEVSFeatures
+        echo "Reporting of EVS features can only be used with a single input sample" 1>&2; exit 1
+    #else
+        ## initialize
+        #set $bam_inputs = []
+        #for $i, $s in enumerate($bam):
+            #set $target_file = 'input_sample_%d.%s' % ($i, $s.ext)
+            ln -s '$s' $target_file &&
+            #if $s.is_of_type('bam')
+                ln -s '$s.metadata.bam_index' ${target_file}.bai &&
+            #elif $s.is_of_type('cram')
+                ln -s '$s.metadata.cram_index' ${target_file}.crai &&
+            #end if
+            #silent $bam_inputs.extend(['--bam', $target_file])
+        #end for
+        #set $bam_spec = ' '.join($bam_inputs)
+        ## Strelka requires both the --ploidy vcf and the --noCompress bed
+        ## to be bgzipped and tabixed.
+        ## Same for the --callRegions bed, but that's handled inside
+        ## the shared INIT code.
+        #if $pl.ploidy
+            #if $pl.ploidy.ext == 'vcf'
+                ln -s '$pl.ploidy' input_ploidy.vcf &&
+                bgzip -c input_ploidy.vcf > input_ploidy.vcf.gz &&
+                tabix -p vcf input_ploidy.vcf.gz &&
+            #else
+                ## File is bgzipped and tabixed already
+                ## -> just symlink data and index
+                ln -s '$pl.ploidy' input_ploidy.vcf.gz &&
+                ln -s '$pl.ploidy.metadata.tabix_index' input_ploidy.vcf.gz.tbi &&
+            #end if
+        #end if
+        #if $oo.gvcf.emit_gvcfs == 'yes' and $oo.gvcf.noCompress
+            ln -s '$oo.gvcf.noCompress' input_nocompress.bed &&
+            bgzip -c input_nocompress.bed > input_nocompress.bed.gz &&
+            tabix -p bed input_nocompress.bed.gz &&
+        #end if
+        @INIT@
+
+        ## create workflow
+        configureStrelkaGermlineWorkflow.py
+            $bam_spec
+            #if str($pl.callContinuousVf)
+                --callContinuousVf '$pl.callContinuousVf'
+            #end if
+            #if $pl.ploidy
+                --ploidy input_ploidy.vcf.gz
+            #end if
+            #if $oo.gvcf.emit_gvcfs == 'yes' and $oo.gvcf.noCompress
+                --noCompress input_nocompress.bed.gz
+            #end if
+            $expert_settings.s_e_e
+            @CREATE@
+
+        ## run workflow
+        @RUN@
+
+        ## decompress results
+        #if $oo.vcf_type == "decompressed"
+            ## we decompress just the main variants file
+            ## per-sample gvcf files are always emitted as a collection of
+            ## compressed files.
+            && bgzip -d results/results/variants/variants.vcf.gz
+            && mv results/results/variants/variants.vcf results/results/variants/variants_out
+        #else
+            && mv results/results/variants/variants.vcf.gz results/results/variants/variants_out
+        #end if
+    #end if
+    ]]></command>
+    
+    <configfiles>
+        <configfile name="config_file">
+## parser cannot handle indents
+[StrelkaGermline]
+minMapq = $strelka.minMapq
+@CONFIG@
+        </configfile>
+    </configfiles>
+
+    <inputs>
+        <param argument="--bam" type="data" format="bam,cram" multiple="true" label="Select sample file(s)" help=""/>
+        <expand macro="input_required" ref="bam"/>
+        <expand macro="calling_model">
+            <option value="--rna">RNA sequencing data (--rna)</option>
+        </expand>
+        <expand macro="calling_model_expert">
+            <param name="s_e_e" type="select" label="Configure sequence error estimation for indels"
+            help="By default, indel error rates are estimated from a subsample of the input sequencing data for each sample. This step can be disabled so that the tool reverts to precomputed indel error rates reflecting an intermediate point between different sequencing assays. Alternatively, all data (from sufficiently large chromosomes) can be used to obtain the estimate, but this may greatly increase runtime.">
+                <option value="--disableSequenceErrorEstimation">Use default sequence error estimate (--disableSequenceErrorEstimation)</option>
+                <option value="" selected="true">Estimate sequence error rate from a subsample of the input data (default)</option>
+                <option value="--useAllDataForSequenceErrorEstimation">Estimate sequence error rate from the full input data (--useAllDataForSequenceErrorEstimation)</option>
+            </param>
+        </expand>
+        <expand macro="regions_select" />
+        <section name="pl" title="Ploidy configuration" expanded="false">
+            <param argument="--ploidy" type="data" format="vcf,vcf_bgzip" optional="true" label="Select ploidy file" help="Provide ploidy file in VCF. The VCF should include one sample column per input sample labeled with the same sample names found in the input BAM/CRAM RG header sections. Ploidy should be provided in records using the FORMAT/CN field, which are interpreted to span the range [POS+1, INFO/END]. Any CN value besides 1 (haploid regions) or 0 (regions expected to be absent) will be treated as 2."/>
+            <param argument="--callContinuousVf" type="text" value="" label="Call variants without ploidy assumption on this chromosome" help="For the specified chromosome the sequencing data will be treated as a pooled sample: variants on it will be called with continuous frequencies and scored using a simple Poisson noise model. May be applied to the mitochondrial genome, for example." />
+        </section>
+        <section name="oo" title="Output options" expanded="false">
+            <expand macro="input_output"/>
+            <conditional name="gvcf">
+                <param name="emit_gvcfs" type="select" label="Generate per-sample gVCFs?">
+                    <option value="no">No</option>
+                    <option value="yes">Yes</option>
+                </param>
+                <when value="no" />
+                <when value="yes">
+                    <param argument="--noCompress" type="data" format="bed" optional="true"
+                    label="In the gVCFs, do NOT block-compress sites that fall in these regions"
+                    help="If you have regions of special interest, for which you do not want site-information to be binned into blocks in the gVCF output, but would want to have calling statistics reported separately, you can specify those regions through a BED dataset here." />
+                </when>
+            </conditional>
+        </section>
+        <section name="strelka" title="Strelka run configuration" expanded="false">
+            <param argument="minMapq" name="minMapq" type="integer" value="20" label="Set minMapq" help="Don't use reads with MAPQ less than this value for variant calling."/>
+            <expand macro="input_strelka"/>
+        </section>
+    </inputs>
+    <outputs>
+        <data name="out_variants" format="vcf" from_work_dir="results/results/variants/variants_out" label="${tool.name} on ${on_string}, Variants, vcf">
+            <change_format>
+                <when input="oo.vcf_type" value="compressed" format="vcf_bgzip" />
+            </change_format>
+        </data>
+        <collection name="out_genome" type="list" label="${tool.name} on ${on_string}: Genome, vcf">
+            <discover_datasets pattern="genome\.(?P&lt;designation&gt;.+)\.vcf\.gz&#36;" format="vcf_bgzip" directory="results/results/variants/" />
+            <filter>oo['gvcf']['emit_gvcfs'] == 'yes'</filter>
+        </collection>
+   </outputs>
+    <tests>
+        <!-- #1; input bam, decompressed -->
+        <test expect_num_outputs="2">
+            <param name="bam" value="sample1.bam,sample2.bam,sample3.bam"/>
+            <conditional name="ref_cond">
+                <param name="ref_sel" value="history"/>
+                <param name="ref" value="hg98.fa" ftype="fasta"/>
+            </conditional>
+            <section name="expert_settings">
+                <param name="s_e_e" value="--disableSequenceErrorEstimation" />
+            </section>
+            <section name="oo">
+                <param name="vcf_type" value="decompressed"/>
+                <conditional name="gvcf">
+                    <param name="emit_gvcfs" value="yes" />
+                </conditional>
+            </section>
+            <output name="out_variants" ftype="vcf">
+                <assert_contents>
+                    <has_n_lines n="62"/>
+                    <has_line_matching expression="#CHROM&#009;POS&#009;.+"/>
+                    <has_line_matching expression="demo20&#009;3664&#009;.+"/>
+                </assert_contents>
+            </output>
+            <output_collection name="out_genome" type="list" count="3">
+                <element name="S1" ftype="vcf_bgzip" file="genome_test1.vcf" decompress="true" compare="diff" lines_diff="8" />
+            </output_collection>
+        </test>
+        <!-- #2; input cram, compressed -->
+        <test expect_num_outputs="1">
+            <param name="bam" value="sample1.cram,sample2.cram"/>
+            <conditional name="ref_cond">
+                <param name="ref_sel" value="history"/>
+                <param name="ref" value="hg98.fa" ftype="fasta"/>
+            </conditional>
+            <section name="expert_settings">
+                <param name="s_e_e" value="--disableSequenceErrorEstimation" />
+            </section>
+            <section name="oo">
+                <param name="vcf_type" value="compressed"/>
+            </section>
+            <output name="out_variants" ftype="vcf_bgzip" file="variants_test2.vcf" decompress="true" compare="diff" lines_diff="8" />
+        </test>
+        <!-- #3; input bam, no defaults -->
+        <test expect_num_outputs="2">
+            <param name="bam" value="sample1.cram,sample2.cram"/>
+            <conditional name="ref_cond">
+                <param name="ref_sel" value="history"/>
+                <param name="ref" value="hg98.fa" ftype="fasta"/>
+            </conditional>
+            <param name="optimization" value="--rna" />
+            <section name="oo">
+                <param name="vcf_type" value="decompressed"/>
+                <conditional name="gvcf">
+                    <param name="emit_gvcfs" value="yes" />
+                </conditional>
+            </section>
+            <section name="pl">
+                <param name="callContinuousVf" value="Chr1"/>
+            </section>
+            <section name="strelka">
+                <param name="minMapq" value="21"/>
+                <param name="maxIndelSize" value="51"/>
+            </section>
+            <output name="out_variants" ftype="vcf">
+                <assert_contents>
+                    <has_n_lines n="81"/>
+                    <has_line_matching expression="#CHROM&#009;POS&#009;.+"/>
+                    <has_line_matching expression="demo20&#009;3664&#009;.+"/>
+                </assert_contents>
+            </output>
+            <output_collection name="out_genome" type="list" count="2">
+                <element name="S1" ftype="vcf_bgzip">
+                    <assert_contents>
+                        <has_n_lines n="219"/>
+                        <has_line_matching expression="demo20&#009;4101&#009;.+"/>
+                    </assert_contents>
+                </element>
+            </output_collection>
+        </test>
+    </tests>
+    <help><![CDATA[
+.. class:: infomark
+
+**What it does**
+
+@HELP_STRELKA@
+
+The germline caller employs an efficient tiered haplotype model to improve accuracy and provide read-backed phasing, adaptively selecting between assembly and a faster alignment-based haplotyping approach at each variant locus. The germline caller also analyzes input sequencing data using a mixture-model indel error estimation method to improve robustness to indel noise.
+
+**Input**
+
+@HELP_INPUT@
+
+**Output**
+
+*Variants*
+
+This describes all potential variant loci across all samples. Note this file includes non-variant loci if they have a non-trivial level of variant evidence or contain one or more alleles for which genotyping has been forced. Please see the multi-sample variants VCF section below for additional details on interpreting this file.
+
+*Genome*
+
+This is the genome VCF output for sample N, which includes both variant records and compressed non-variant blocks. The sample index, N is 1-indexed and corresponds to the input order of alignment files on the configuration command-line.
+
+.. class:: infomark
+
+**References**
+
+@HELP_REFERENCES@
+    ]]></help>
+    <expand macro="citations"/>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/genome_test1.vcf	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,95 @@
+##fileformat=VCFv4.1
+##fileDate=.
+##source=strelka
+##source_version=2.9.10
+##startTime=.
+##cmdline=./configureStrelkaGermlineWorkflow.py --bam input_sample_0.bam --bam input_sample_1.bam --bam input_sample_2.bam --disableSequenceErrorEstimation --config=/tmp/tmpmywmzdlj/job_working_directory/000/7/configs/tmpzw3187cr --referenceFasta input_ref.fasta --runDir results
+##reference=file:///tmp/tmpmywmzdlj/job_working_directory/000/7/working/input_ref.fasta
+##contig=<ID=demo20,length=5000>
+##content=strelka germline small-variant calls
+##INFO=<ID=END,Number=1,Type=Integer,Description="End position of the region described in this record">
+##INFO=<ID=BLOCKAVG_min30p3a,Number=0,Type=Flag,Description="Non-variant multi-site block. Non-variant blocks are defined independently for each sample. All sites in such a block are constrained to be non-variant, have the same filter value, and have sample values {GQX,DP,DPF} in range [x,y], y <= max(x+3,(x*1.3)).">
+##INFO=<ID=SNVHPOL,Number=1,Type=Integer,Description="SNV contextual homopolymer length">
+##INFO=<ID=CIGAR,Number=A,Type=String,Description="CIGAR alignment for each alternate indel allele">
+##INFO=<ID=RU,Number=A,Type=String,Description="Smallest repeating sequence unit extended or contracted in the indel allele relative to the reference. RUs are not reported if longer than 20 bases">
+##INFO=<ID=REFREP,Number=A,Type=Integer,Description="Number of times RU is repeated in reference">
+##INFO=<ID=IDREP,Number=A,Type=Integer,Description="Number of times RU is repeated in indel allele">
+##INFO=<ID=MQ,Number=1,Type=Integer,Description="RMS of mapping quality">
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
+##FORMAT=<ID=GQX,Number=1,Type=Integer,Description="Empirically calibrated genotype quality score for variant sites, otherwise minimum of {Genotype quality assuming variant position,Genotype quality assuming non-variant position}">
+##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Filtered basecall depth used for site genotyping. In a non-variant multi-site block this value represents the average of all sites in the block.">
+##FORMAT=<ID=DPF,Number=1,Type=Integer,Description="Basecalls filtered from input prior to site genotyping. In a non-variant multi-site block this value represents the average of all sites in the block.">
+##FORMAT=<ID=MIN_DP,Number=1,Type=Integer,Description="Minimum filtered basecall depth used for site genotyping within a non-variant multi-site block">
+##FORMAT=<ID=AD,Number=.,Type=Integer,Description="Allelic depths for the ref and alt alleles in the order listed. For indels this value only includes reads which confidently support each allele (posterior prob 0.51 or higher that read contains indicated allele vs all other intersecting indel alleles)">
+##FORMAT=<ID=ADF,Number=.,Type=Integer,Description="Allelic depths on the forward strand">
+##FORMAT=<ID=ADR,Number=.,Type=Integer,Description="Allelic depths on the reverse strand">
+##FORMAT=<ID=FT,Number=1,Type=String,Description="Sample filter, 'PASS' indicates that all filters have passed for this sample">
+##FORMAT=<ID=DPI,Number=1,Type=Integer,Description="Read depth associated with indel, taken from the site preceding the indel">
+##FORMAT=<ID=PL,Number=G,Type=Integer,Description="Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification">
+##FORMAT=<ID=PS,Number=1,Type=Integer,Description="Phase set identifier">
+##FORMAT=<ID=SB,Number=1,Type=Float,Description="Sample site strand bias">
+##FILTER=<ID=IndelConflict,Description="Indel genotypes from two or more loci conflict in at least one sample">
+##FILTER=<ID=SiteConflict,Description="Site is filtered due to an overlapping indel call filter">
+##FILTER=<ID=LowGQX,Description="Locus GQX is below threshold or not present">
+##FILTER=<ID=HighDPFRatio,Description="The fraction of basecalls filtered out at a site is greater than 0.4">
+##FILTER=<ID=HighSNVSB,Description="Sample SNV strand bias value (SB) exceeds 10">
+##FILTER=<ID=HighDepth,Description="Locus depth is greater than 3x the mean chromosome depth">
+##Depth_demo20=79.00
+##FILTER=<ID=LowDepth,Description="Locus depth is below 3">
+##FILTER=<ID=NotGenotyped,Description="Locus contains forcedGT input alleles which could not be genotyped">
+##FILTER=<ID=PloidyConflict,Description="Genotype call from variant caller not consistent with chromosome ploidy">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NA12891
+demo20	1	.	T	.	.	LowGQX	END=899;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	.:.:0:0:0
+demo20	900	.	G	.	.	LowGQX;LowDepth	END=906;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:5:2:0:2
+demo20	907	.	T	.	.	LowGQX	END=931;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:7:4:0:3
+demo20	932	.	G	.	.	PASS	END=990;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:15:8:0:6
+demo20	991	.	C	G	75	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:71:9:9:1:5,4:1,4:4,0:2.8:PASS:72,0,123
+demo20	992	.	C	.	.	PASS	END=1084;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:24:14:0:9
+demo20	1085	.	T	.	.	PASS	.	GT:GQX:DP:DPF:MIN_DP	0/0:22:21:1:21
+demo20	1086	.	G	.	.	PASS	END=1148;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:54:22:1:19
+demo20	1148	.	C	CTAT	144	PASS	CIGAR=1M3I;RU=TAT;REFREP=1;IDREP=2;MQ=59	GT:GQ:GQX:DPI:AD:ADF:ADR:FT:PL	0/1:114:27:20:11,8:5,3:6,5:PASS:111,0,147
+demo20	1149	.	T	.	.	PASS	END=1270;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:39:19:0:14
+demo20	1271	.	A	G	268	PASS	SNVHPOL=4;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:126:30:18:0:8,10:7,6:1,4:-18.6:PASS:169,0,123
+demo20	1272	.	G	.	.	PASS	END=1507;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:39:20:1:14
+demo20	1508	.	A	G	312	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:172:30:22:1:10,12:4,6:6,6:-21.5:PASS:191,0,169
+demo20	1509	.	G	.	.	PASS	END=1582;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:27:17:0:10
+demo20	1583	.	A	.	.	PASS	END=1669;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:21:15:0:8
+demo20	1670	.	C	.	.	PASS	END=1705;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:45:19:0:16
+demo20	1706	.	C	T	608	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:54:30:19:0:0,19:0,8:0,11:-35.5:PASS:342,57,0
+demo20	1707	.	G	.	.	PASS	END=1743;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:54:21:0:19
+demo20	1744	.	C	T	312	PASS	SNVHPOL=3;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:159:30:21:0:9,12:5,6:4,6:-20.7:PASS:191,0,156
+demo20	1745	.	G	.	.	PASS	END=1845;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:40:21:1:16
+demo20	1846	.	C	T	165	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:116:30:24:1:16,8:13,5:3,3:-12.4:PASS:117,0,224
+demo20	1847	.	G	.	.	PASS	END=1872;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:60:23:1:21
+demo20	1873	.	C	T	122	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/0:60:60:21:0:21,0:15,0:6,0:0.0:PASS:0,63,360
+demo20	1874	.	C	.	.	PASS	END=2073;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:45:21:0:16
+demo20	2074	.	T	C	246	PASS	SNVHPOL=2;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:156:30:24:1:13,11:4,8:9,3:-9.7:PASS:158,0,191
+demo20	2075	.	A	.	.	PASS	END=2198;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:63:31:1:22
+demo20	2199	.	G	A	297	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:181:30:28:1:14,14:12,5:2,9:-14.3:PASS:183,0,189
+demo20	2200	.	C	.	.	PASS	END=2300;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:60:30:1:26
+demo20	2301	.	G	T	369	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:161:22:29:1:12,17:6,11:6,6:-21.0:PASS:219,0,158
+demo20	2302	.	T	.	.	PASS	END=2454;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:72:30:0:25
+demo20	2455	.	T	C	889	PASS	SNVHPOL=2;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:90:30:31:2:0,31:0,14:0,17:-51.4:PASS:370,93,0
+demo20	2456	.	G	.	.	PASS	END=2511;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:87:36:2:30
+demo20	2512	.	A	G	531	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:151:22:39:1:13,26:9,11:4,15:-28.4:PASS:300,0,148
+demo20	2513	.	T	.	.	PASS	END=2639;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:81:37:1:28
+demo20	2640	.	C	T	751	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:81:30:28:0:0,28:0,14:0,14:-47.3:PASS:370,84,0
+demo20	2641	.	T	.	.	PASS	END=2659;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:60:23:0:21
+demo20	2660	.	G	T	567	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:60:30:21:1:0,21:0,11:0,10:-36.2:PASS:321,63,0
+demo20	2661	.	G	.	.	PASS	END=3037;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:41:27:1:18
+demo20	3038	.	C	.	.	PASS	END=3053;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:27:20:1:17
+demo20	3054	.	G	C	214	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:140:22:20:0:10,10:6,6:4,4:-12.8:PASS:142,0,153
+demo20	3055	.	C	.	.	PASS	END=3365;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:51:25:1:18
+demo20	3366	.	G	T	753	PASS	SNVHPOL=4;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:75:30:26:0:0,26:0,15:0,11:-42.1:PASS:370,78,0
+demo20	3367	.	G	.	.	PASS	END=3536;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:60:28:0:21
+demo20	3537	.	C	T	191	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:128:22:31:1:21,10:8,6:13,4:-11.3:PASS:130,0,256
+demo20	3538	.	T	.	.	PASS	END=3664;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:54:29:1:19
+demo20	3664	.	TC	T	572	PASS	CIGAR=1M1D;RU=C;REFREP=4;IDREP=3;MQ=59	GT:GQ:GQX:DPI:AD:ADF:ADR:FT:PL	0/1:249:27:41:18,20:10,10:8,10:PASS:322,0,246
+demo20	3665	.	C	.	.	PASS	.	GT:GQX:DP:DPF:MIN_DP	0:249:19:0:19
+demo20	3666	.	C	.	.	PASS	END=4019;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:48:32:1:17
+demo20	4020	.	C	.	.	PASS	END=4059;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:24:12:1:9
+demo20	4060	.	C	.	.	PASS	END=4072;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:15:6:0:6
+demo20	4073	.	C	.	.	LowGQX	END=4091;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:7:4:0:3
+demo20	4092	.	T	.	.	LowGQX;LowDepth	END=4100;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	0/0:3:1:0:1
+demo20	4101	.	T	.	.	LowGQX	END=5000;BLOCKAVG_min30p3a	GT:GQX:DP:DPF:MIN_DP	.:.:0:0:0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/hg98.fa	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,85 @@
+>demo20
+TGCCTGCTTTGTGCCAGGTTCTGGGTTGGGAGGTGCTGGGGACAGGGAGATGAGTCAGAC
+CTgggaagatttcgtagaggaggtgacagtaagctggaacctgtgtaatgagcaggagtt
+gcccagtggagaaggggaaggtgttccaggcggaagaaacagcatatgcaaaggccccaa
+ggtaggaagggccctagtgtgtgcagaggacagggcatggggaggggaactaaggctgag
+gccaaggagaggaaatgactcacaccgtgagagaggagttgagaccagggaggCTGCTTG
+CTGTATGATGCAACTGAGAGGGTAGAACAAGGCTGGCACAGAGAAGGTGGGGAAGGAAAA
+GGAGAGACGAAGCTGAGATTTCAGCAGGGCCAAGTCAGCCGTGAGTGCCAGGCTGCGGAG
+CCCAGATTCTCTGGGCTGagaaagagcactctgtccagagtgtggaggggggcctggagg
+ggatgagactcaaagctgggaggccagagaggaggctgctagagttttctgggagagagt
+tactggggcctgaacTCCAGTGAGGCActtcccatttcacagaccaggaaactgaggccc
+aagagtgaggcaactggcccaagggcacacagccaggtaaggcagaacCTTCCTTCTTTG
+GAGCTCCCTTGGGTGGGAAGCTGTGGGCTCCCCTTCATAGCCCACCCTTTTGGCTGTATC
+TCCCTGCTGCCCTGGGCATATGCTCCCTTATTCTGTCCTCCCTTGAAGCTGACTGCTGGC
+CTTAAAGGGCCCCTGTTTCTTCCCTCTGGACTACATGAGATCGGGATAGTATTAATGACT
+AAAACCTACCAGGGGTTTCTAGGCCTGGCCTGGAAAAAGTGACTGTTGACAAACAAAGTG
+CAGAGATTTAAAATCTCCTCTGTCTCAATTAGTGGAATCCAGTTAGAGGTTTGAACTATG
+ATTCTACCAGAATCCAATCTCTCTGGGTAGCCAGGTACCCAGGATGGGGCTAAAATTCCA
+GATGGATAGGTTGTCAACACCAGTGAGGAACCAGGAGGCTACCACAGGGTGGGACTTCCT
+GGTTTGGCTTTACATCTGAACTTCAGGGATCCCAGATCCTGGATCTGGGGCACTTGTCCA
+GAGAAGGCTATTGCTCTCATGTCACAAATGAGATGACTAAGACCCCCAAATCAATTCCAG
+TTCACTCACAAGCATTTCCTGGGCAGTGGAGACCCCTGCCCCACCTGTTGGCACCCCCTC
+AGCTCCCCACAGGGAATTGGAGTCCAGCCAAGCATGAGGAGGCTGTTGGCCTCAAGGTGA
+GCAGGGATGGGCTGAACCTCACCCAGTAAGGCAAGGACAGAGCCAGGGTTGGCCTGAGAT
+TTCCAGCCACCCTTTCCAAGGCTCTGCTCACTGTTATTTTCCTTAGTCTacaacaatatc
+aataacaataacaacaataatatcaacaCAAAAAGTGAAATACTCACCATGTATTGTAGT
+GTTTCCAAGGTGTCATGTAATGCCAGGGGTAGTTTGGGGCCAGGAAAAATATTTTTGGGA
+GGCATAAGAATAGGATGGACTGATATTGATATGCAACAGTTTGATCTGGTCCTCCTCTGA
+ATATCTGGGCTGGTAATTTGTACCAGTTTCCCTCGCTTTtgtgcataggcactgtgctga
+acccttttgtatgcatgaactcatccgattctctgtgcaagaactctatgagattattat
+tcccgttttacaagtaagaaaaattgaggctctgagaagttaaataaatgacttgtatga
+agttccagtgctaattaataagtgaaggagccagggcttgaactccggcccatctgactg
+caaagccagtgcccttcctcctacacATCTTCCTTTGGATTTCCACCACTGAGCATATGT
+AAGGTTGGGCAAACAGCCTGCATGAACAATCGCTGCTTTTATATCATGCACAAGTTTGGT
+CTTTTCTGCCTGTGCCCATGTCCTTGTAACCTTCTGAACCAAACTCCCCAGTGCCTGGGA
+ACATCAGAAGACTTGACTCTCTTCTCCTTTCACTAGCCTCCACCTGACTGGGACAAAGCC
+ATGCAGAGAGCTAGTGCTCCCTTCCTGCTAGACTTCAAGGATGCCTGGTTCCTGTGCCCC
+ATCTCCATCCAGCCCTCTCTTCTACACCTGGTGACTGAGCCTCTCCTTCAGTTTCTCCAT
+CCAGAAGGGGGTGAAAGCAACTGCCTAGTGTCCTTCCCTGGTGATAGTGGAGCACGGGGG
+ACAGGGTGTTTGGGCAAAAGGTGCCCAAGGTGAGGTGCCCAACACAACCTCCTACTCAGA
+CGATTGAGCAGACATTCAGCCTCATCTGGGGACTGGGTTACCAGTGGGTTAGTGGGAGGC
+ATTGGGCCCAGGCCCTGTGCCTTGGGCTGAGCTACAAGAAACCCACACATGGGATGAATT
+CAGGCAGCTCAAGGCCAGGTCTGTGCATACGCCAGTAATAGGTTCAGGTTAATCCACATG
+TCGCGATTTGGAAGGTGTCTACTTTTCCTACCTGTAGCTTCCTTAGGCCTCAAACCCCTA
+CTCAGCTGGGTCTGCCAGACTGAGATGGAGCCAGGGTGGAATCTTCTGCCCTCAAATCCC
+TGTCAGCCCTGGTGGTGCCGGGAGCGCCATCACTATTGGGTCTTAAAGGCTTTCCAGCCT
+TCCACTATGGATCCAGGAGCAGCAGTAGCCCCTTTGGTCTTTCTCTCTCATCAGGACATC
+TCCACTCATGGTTCCAGTCAGAGCTTCTTGAAAGTAGTCCCACTCTGTTCAAAAGCCTCC
+CATGCCCCCTGCTAGCCTCAGGCTAAGAGCCCTTCTCCTTCGCACAGCCTTTGGACCTGT
+CTATTTTTATGGTCTGGAAACTTCAGGAACACTGATAGCTGAGCATCTGGCACATATTAT
+GCACTCAAAAACCATGTATTTCTTTCTCCTTCCCTTTGGGACCCGTAAACCAGGGactgg
+acatttttgcaagagacaggagctgtgactgtgcattcactgctgtatccccagcaccca
+gcactgggcctgccacacagtaagtgcttagtaaatgtttgttgactgagtgaTTGCAGC
+TGGGGCCAAGAATGCCTTGGACACCCCAAGTAGGCCGTGTTAGAAGGAGTCAGTGAGAGC
+CTGGGAGCCCAGCCCAGAATTGTTTTCTTGACCCAGAAGCCAGGGCCAGGGATGCCTCTT
+CACTTCTGTTTGGCCCTCTTGGGCTTAGGGGCAGGGGCATTAAGATGAgagaggtccttg
+gggtgcattgagtctaacctcccagttcctcccattctacagccaggaaaactgaggccc
+agggaggggtaggacaagcccaagAAAGTGGGGCTGGAGAATGAATCCTGGAGACCAAAC
+TTGTCAGTCTGGATTGCTGTTGCCCTCATCCTCGCCTCCAAAACCCatgggtaaactgag
+gccaagagaggggcaggggcatgcccaaggtcacccatggaatcaggggacagggcctgg
+attgggattgttgttgacgccattattactgtttattgttgtttctatttcacAGATGGT
+CGGGGAGGGTGGGGCCCGCAATGGCTCCCAGGCGCCCAGAGACCCTGGAGGGTGAGCAGG
+GTCTCCCCTCCCCTCTCCTGCCCGTCTTTAGCCACACTGGGGCGCACACCGCTCACTCAC
+CCGGGGCCGAGGCGTTAGCCCTTTCTTGCACCAGGTGCCGCAACAACACCAGCAGCTGGC
+GCAGGCTGTGCTGCTGGTCCTGCAGGAGGCTGGAGTTGTGCCTGACACCGCGCAGGCCGC
+GCTCGATGTTGGTGAGGGCGGCGCTCTGGCGGCTCAGCGTGTTCAGCAGCTTCGCCTTCT
+TGCTGAGGATGCTGGCCAGCTCCTCCTGCTGCTTGGTCTCCAGGGCCTGCAACCGCTTCT
+CGAGCGCGCTGCGGGGTAGGGGGCGCACAGAGGTGAGCCTGGCATCCTCGCGAAGCACGC
+ACCCCCGCGCGCCTCCCCGGCCCTGGAGTCCCTGCAGCCCGACGATGAGACTCAAGTGTG
+GTGGAACGTCCTGTGCCCACTGTAGGCACAGATTGAGGAGGGGAGAAAAGAGATACCCGG
+CCCTGGAGTAATATAGATTGAGGTTTAGTGGAAGAAAGAGGTGGTGTGGGAGGGACACCA
+GCAACTGGGTAGCTATTATCAAATCCCAACTGTGCTTGCTTTTTGACCCAGCAGTCTACT
+CTCAGGAGTTATCCTCTAGGGAGCATGGTCAAGAATGGCCCTGGGGACTTGCTTGTAATA
+GAAAAACAAACTAACCAACCAACCAAAAAAGATATAGCCTAGATGCCCAAAAGCCAGGAC
+TGGCTGAATCCGTTGCGTTTTGGCGTCCCTGGAAATGTTCCGCAGTCATGAAGGAGGAGG
+CATTTGCACAGAATTGGAAAGATGCCCAGGACTTGGGGCACATCAAGCCTAACCCCATGT
+GTGGCAAGAGAAGAAAGAAAGTATTAATGTAAATAAAGAGAAATGGGGTGAACATATAGG
+AGAAGGCTGGAAAGACCGCAGTGGTGCCTGTGTTTGGGAAGAATATGAAAGAAATTCCCT
+CAAGTGCTGTGACTTCTGCAGAGCAGGTTTGAGTGGATGAAGATGGAGAGGAGGAAGATG
+GGGGCAGGATGGAGGGCCCAACTTTCACTTTTATTTTGTACAGGTTCCTGTTGTCCGATG
+ATATTATAATAATCAAGAGACATTTTTTGTAATGGATTTAGAAGCAAAGAGGAGTTTTTC
+AAAAGAAAGCCTTAGACTCAGCTCTTTCTTTTTGGACATTTTATCCTCCAGATTTACTca
+catgtgtgtgaaatgagatatggaaatgttactcatcgtatcactggttggattagtaaa
+aggctggaagcaacctcaatatccattaactggggactggaggaataaaagcagggacca
+catatggtggagcattataa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/hg98.fa.fai	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,1 @@
+demo20	5000	8	60	61
Binary file test-data/indels_test2.vcf.gz has changed
Binary file test-data/sample1.bam has changed
Binary file test-data/sample1.cram has changed
Binary file test-data/sample2.bam has changed
Binary file test-data/sample2.cram has changed
Binary file test-data/sample3.bam has changed
Binary file test-data/snvs_test2.vcf.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test_fasta_indexes.loc	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,1 @@
+hg19	hg19	hg19	${__HERE__}/hg98.fa
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/variants_test2.vcf	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,62 @@
+##fileformat=VCFv4.1
+##fileDate=.
+##source=strelka
+##source_version=2.9.10
+##startTime=.
+##cmdline=./configureStrelkaGermlineWorkflow.py --bam input_sample_0.cram --bam input_sample_1.cram --disableSequenceErrorEstimation --config=/tmp/tmpmxn8erma/job_working_directory/000/4/configs/tmpx1j1a_0u --referenceFasta input_ref.fasta --runDir results
+##reference=file:///tmp/tmpmxn8erma/job_working_directory/000/4/working/input_ref.fasta
+##contig=<ID=demo20,length=5000>
+##content=strelka germline small-variant calls
+##INFO=<ID=END,Number=1,Type=Integer,Description="End position of the region described in this record">
+##INFO=<ID=BLOCKAVG_min30p3a,Number=0,Type=Flag,Description="Non-variant multi-site block. Non-variant blocks are defined independently for each sample. All sites in such a block are constrained to be non-variant, have the same filter value, and have sample values {GQX,DP,DPF} in range [x,y], y <= max(x+3,(x*1.3)).">
+##INFO=<ID=SNVHPOL,Number=1,Type=Integer,Description="SNV contextual homopolymer length">
+##INFO=<ID=CIGAR,Number=A,Type=String,Description="CIGAR alignment for each alternate indel allele">
+##INFO=<ID=RU,Number=A,Type=String,Description="Smallest repeating sequence unit extended or contracted in the indel allele relative to the reference. RUs are not reported if longer than 20 bases">
+##INFO=<ID=REFREP,Number=A,Type=Integer,Description="Number of times RU is repeated in reference">
+##INFO=<ID=IDREP,Number=A,Type=Integer,Description="Number of times RU is repeated in indel allele">
+##INFO=<ID=MQ,Number=1,Type=Integer,Description="RMS of mapping quality">
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
+##FORMAT=<ID=GQX,Number=1,Type=Integer,Description="Empirically calibrated genotype quality score for variant sites, otherwise minimum of {Genotype quality assuming variant position,Genotype quality assuming non-variant position}">
+##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Filtered basecall depth used for site genotyping. In a non-variant multi-site block this value represents the average of all sites in the block.">
+##FORMAT=<ID=DPF,Number=1,Type=Integer,Description="Basecalls filtered from input prior to site genotyping. In a non-variant multi-site block this value represents the average of all sites in the block.">
+##FORMAT=<ID=MIN_DP,Number=1,Type=Integer,Description="Minimum filtered basecall depth used for site genotyping within a non-variant multi-site block">
+##FORMAT=<ID=AD,Number=.,Type=Integer,Description="Allelic depths for the ref and alt alleles in the order listed. For indels this value only includes reads which confidently support each allele (posterior prob 0.51 or higher that read contains indicated allele vs all other intersecting indel alleles)">
+##FORMAT=<ID=ADF,Number=.,Type=Integer,Description="Allelic depths on the forward strand">
+##FORMAT=<ID=ADR,Number=.,Type=Integer,Description="Allelic depths on the reverse strand">
+##FORMAT=<ID=FT,Number=1,Type=String,Description="Sample filter, 'PASS' indicates that all filters have passed for this sample">
+##FORMAT=<ID=DPI,Number=1,Type=Integer,Description="Read depth associated with indel, taken from the site preceding the indel">
+##FORMAT=<ID=PL,Number=G,Type=Integer,Description="Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification">
+##FORMAT=<ID=PS,Number=1,Type=Integer,Description="Phase set identifier">
+##FORMAT=<ID=SB,Number=1,Type=Float,Description="Sample site strand bias">
+##FILTER=<ID=IndelConflict,Description="Indel genotypes from two or more loci conflict in at least one sample">
+##FILTER=<ID=SiteConflict,Description="Site is filtered due to an overlapping indel call filter">
+##FILTER=<ID=LowGQX,Description="Locus GQX is below threshold or not present">
+##FILTER=<ID=HighDPFRatio,Description="The fraction of basecalls filtered out at a site is greater than 0.4">
+##FILTER=<ID=HighSNVSB,Description="Sample SNV strand bias value (SB) exceeds 10">
+##FILTER=<ID=HighDepth,Description="Locus depth is greater than 3x the mean chromosome depth">
+##Depth_demo20=53.00
+##FILTER=<ID=LowDepth,Description="Locus depth is below 3">
+##FILTER=<ID=NotGenotyped,Description="Locus contains forcedGT input alleles which could not be genotyped">
+##FILTER=<ID=PloidyConflict,Description="Genotype call from variant caller not consistent with chromosome ploidy">
+##FILTER=<ID=NoPassedVariantGTs,Description="No samples at this locus pass all sample filters and have a variant genotype">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NA12891	NA12892
+demo20	991	.	C	G	38	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:71:9:9:1:5,4:1,4:4,0:2.8:PASS:72,0,123	0/0:33:33:12:0:12,0:9,0:3,0:0.0:PASS:0,36,258
+demo20	1148	.	C	CTAT	72	PASS	CIGAR=1M3I;RU=TAT;REFREP=1;IDREP=2;MQ=60	GT:GQ:GQX:DPI:AD:ADF:ADR:FT:PL	0/1:114:27:20:11,8:5,3:6,5:PASS:111,0,147	0/0:69:69:28:24,0:12,0:12,0:PASS:0,72,443
+demo20	1271	.	A	G	134	PASS	SNVHPOL=4;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:126:30:18:0:8,10:7,6:1,4:-18.6:PASS:169,0,123	0/0:75:75:26:0:26,0:18,0:8,0:0.0:PASS:0,78,370
+demo20	1508	.	A	G	156	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:172:30:22:1:10,12:4,6:6,6:-21.5:PASS:191,0,169	0/0:108:108:37:2:37,0:19,0:18,0:0.0:PASS:0,111,370
+demo20	1706	.	C	T	304	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:54:30:19:0:0,19:0,8:0,11:-35.5:PASS:342,57,0	0/0:90:90:31:2:31,0:7,0:24,0:0.0:PASS:0,93,370
+demo20	1744	.	C	T	156	PASS	SNVHPOL=3;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:159:30:21:0:9,12:5,6:4,6:-20.7:PASS:191,0,156	0/0:78:78:27:0:27,0:6,0:21,0:0.0:PASS:0,81,370
+demo20	1846	.	C	T	83	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:116:30:24:1:16,8:13,5:3,3:-12.4:PASS:117,0,224	0/0:60:60:21:0:21,0:14,0:7,0:0.0:PASS:0,63,370
+demo20	1873	.	C	T	122	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/0:60:60:21:0:21,0:15,0:6,0:0.0:PASS:0,63,360	0/1:155:30:23:0:13,10:8,7:5,3:-14.9:PASS:157,0,195
+demo20	2074	.	T	C	123	PASS	SNVHPOL=2;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:156:30:24:1:13,11:4,8:9,3:-9.7:PASS:158,0,191	0/0:75:75:26:0:26,0:14,0:12,0:0.0:PASS:0,78,370
+demo20	2199	.	G	A	149	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:181:30:28:1:14,14:12,5:2,9:-14.3:PASS:183,0,189	0/0:96:96:33:0:33,0:17,0:16,0:0.0:PASS:0,99,370
+demo20	2301	.	G	T	184	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:161:22:29:1:12,17:6,11:6,6:-21.0:PASS:219,0,158	0/0:75:75:26:1:26,0:15,0:11,0:0.0:PASS:0,78,370
+demo20	2455	.	T	C	445	PASS	SNVHPOL=2;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:90:30:31:2:0,31:0,14:0,17:-51.4:PASS:370,93,0	0/0:78:78:27:1:27,0:11,0:16,0:0.0:PASS:0,81,370
+demo20	2512	.	A	G	266	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:151:22:39:1:13,26:9,11:4,15:-28.4:PASS:300,0,148	0/0:69:69:24:2:24,0:8,0:16,0:0.0:PASS:0,72,370
+demo20	2640	.	C	T	375	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:81:30:28:0:0,28:0,14:0,14:-47.3:PASS:370,84,0	0/0:102:102:35:0:35,0:17,0:18,0:0.0:PASS:0,105,370
+demo20	2660	.	G	T	283	PASS	SNVHPOL=3;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:60:30:21:1:0,21:0,11:0,10:-36.2:PASS:321,63,0	0/0:87:87:30:0:30,0:15,0:15,0:0.0:PASS:0,90,370
+demo20	3054	.	G	C	107	PASS	SNVHPOL=2;MQ=58	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:140:22:20:0:10,10:6,6:4,4:-12.8:PASS:142,0,153	0/0:24:24:9:2:9,0:4,0:5,0:0.0:PASS:0,27,201
+demo20	3366	.	G	T	377	PASS	SNVHPOL=4;MQ=60	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	1/1:75:30:26:0:0,26:0,15:0,11:-42.1:PASS:370,78,0	0/0:75:75:26:0:26,0:13,0:13,0:0.0:PASS:0,78,370
+demo20	3537	.	C	T	95	PASS	SNVHPOL=2;MQ=59	GT:GQ:GQX:DP:DPF:AD:ADF:ADR:SB:FT:PL	0/1:128:22:31:1:21,10:8,6:13,4:-11.3:PASS:130,0,256	0/0:84:84:29:1:29,0:10,0:19,0:0.0:PASS:0,87,370
+demo20	3664	.	TC	T	286	PASS	CIGAR=1M1D;RU=C;REFREP=4;IDREP=3;MQ=59	GT:GQ:GQX:DPI:AD:ADF:ADR:FT:PL	0/1:249:27:41:18,20:10,10:8,10:PASS:322,0,246	0/0:70:70:25:25,0:10,0:15,0:PASS:0,73,493
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/fasta_indexes.loc.sample	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,29 @@
+#This is a sample file distributed with Galaxy that enables tools
+#to use a directory of Samtools indexed sequences data files.  You will need
+#to create these data files and then create a fasta_indexes.loc file
+#similar to this one (store it in this directory) that points to
+#the directories in which those files are stored. The fasta_indexes.loc
+#file has this format (white space characters are TAB characters):
+#
+# <unique_build_id>	<dbkey>	<display_name>	<file_base_path>
+#
+#So, for example, if you had hg19 Canonical indexed stored in
+#
+# /depot/data2/galaxy/hg19/sam/,
+#
+#then the fasta_indexes.loc entry would look like this:
+#
+#hg19canon	hg19	Human (Homo sapiens): hg19 Canonical	/depot/data2/galaxy/hg19/sam/hg19canon.fa
+#
+#and your /depot/data2/galaxy/hg19/sam/ directory
+#would contain hg19canon.fa and hg19canon.fa.fai files.
+#
+#Your fasta_indexes.loc file should include an entry per line for
+#each index set you have stored.  The file in the path does actually
+#exist, but it should never be directly used. Instead, the name serves
+#as a prefix for the index file.  For example:
+#
+#hg18canon	hg18	Human (Homo sapiens): hg18 Canonical	/depot/data2/galaxy/hg18/sam/hg18canon.fa
+#hg18full	hg18	Human (Homo sapiens): hg18 Full	/depot/data2/galaxy/hg18/sam/hg18full.fa
+#hg19canon	hg19	Human (Homo sapiens): hg19 Canonical	/depot/data2/galaxy/hg19/sam/hg19canon.fa
+#hg19full	hg19	Human (Homo sapiens): hg19 Full	/depot/data2/galaxy/hg19/sam/hg19full.fa
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_data_table_conf.xml.sample	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<tables>
+    <table name="fasta_indexes" comment_char="#">
+        <columns>value, dbkey, name, path</columns>
+        <file path="tool-data/fasta_indexes.loc" />
+    </table>
+</tables>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_data_table_conf.xml.test	Wed Jan 27 14:48:23 2021 +0000
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<tables>
+    <table name="fasta_indexes" comment_char="#">
+        <columns>value, dbkey, name, path</columns>
+        <file path="${__HERE__}/test-data/test_fasta_indexes.loc"/>
+    </table>
+</tables>
\ No newline at end of file