changeset 12:b3fb23bbca8e draft

planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/lumpy commit 03ac2f3182f9e72db31297fa9e2fd5f0802343ea
author drosofff
date Sun, 18 Dec 2016 10:35:43 -0500
parents ecbc563571ea
children 02adb61c0246
files lumpy.xml test-data/output.vcf test-data/output_extended.vcf test-data/output_two.vcf
diffstat 4 files changed, 188 insertions(+), 72 deletions(-) [+]
line wrap: on
line diff
--- a/lumpy.xml	Mon Dec 12 13:45:08 2016 -0500
+++ b/lumpy.xml	Sun Dec 18 10:35:43 2016 -0500
@@ -1,4 +1,4 @@
-<tool id="lumpy" name="lumpy-sv" version="0.2.1">
+<tool id="lumpy" name="lumpy-sv" version="0.3.0">
     <description>find structural variants</description>
     <requirements>
         <requirement type="package" version="0.2.12">lumpy-sv</requirement>
@@ -9,101 +9,76 @@
         <exit_code range="1:" level="fatal" description="Tool exception" />
     </stdio>
     <command detect_errors="exit_code"><![CDATA[
+        #import re
+        #set one_sample_bam = re.sub('[^\w\-]', '_', str($analysis_type.input_file.element_identifier))
         #if $analysis_type.analysis_type_list == "one_sample":
-            ln -f -s '$analysis_type.input_file' input.bam &&
+            ln -f -s '$analysis_type.input_file' '$one_sample_bam' &&
         #else:
-            ln -f -s '$analysis_type.input_file' input.A.bam &&
-            ln -f -s '$analysis_type.input_fileB' input.B.bam &&
+            #set sample_a_bam = re.sub('[^\w\-]', '_', str($analysis_type.input_file.element_identifier))
+            #set sample_b_bam = re.sub('[^\w\-]', '_', str($analysis_type.input_fileB.element_identifier))
+            #if $sample_a_bam == $sample_b_bam:
+                #set sample_a_bam = "%s_a" % str($sample_a_bam)
+                #set sample_b_bam = "%s_b" % str($sample_b_bam)
+            #end if
+            ln -f -s '$analysis_type.input_file' '$sample_a_bam' &&
+            ln -f -s '$analysis_type.input_fileB' '$sample_b_bam' &&
         #end if
 
         #if $analysis_type.analysis_type_list == "one_sample":
 
             #if $seq_method.seq_method_list == "paired-end":
-                samtools view -b -F 1294 input.bam > "input.discordants.unsorted.bam" &&
-                samtools view -h input.bam | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools view -Sb - > "input.splitters.unsorted.bam" &&
-                samtools sort input.discordants.unsorted.bam > input.discordants.bam &&
-                samtools sort input.splitters.unsorted.bam > input.splitters.bam &&
-                samtools view input.bam
-                    |tail -n +1
+                samtools view -u -F 1294 '$one_sample_bam' | samtools sort -O bam -o input.discordants.bam &&
+                samtools view -h '$one_sample_bam' | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools sort -O bam -o input.splitters.bam &&
+                samtools view '$one_sample_bam'
                     |python $__tool_directory__/pairend_distro.py -r $analysis_type.readLength -X 4 -N $seq_method.additional_params.samplingValue -o input.lib.histo > meandev.txt &&
                 mean=\$(cat meandev.txt | sed s/mean:// | sed -r s/stdev:.+//) &&
                 stdev=\$(cat meandev.txt | sed -r s/mean:.+stdev://) &&
-                lumpy -mw $seq_method.additional_params.mw -tt $seq_method.additional_params.tt
+                lumpy $seq_method.additional_params.evidence $seq_method.additional_params.probability_curve -mw $seq_method.additional_params.mw -tt $seq_method.additional_params.tt
                     #if $output_format == "BEDPE":
                         -b
                     #end if
-                    -pe id:input.bam,bam_file:input.discordants.bam,histo_file:input.lib.histo,mean:"\$mean",stdev:"\$stdev",read_length:$analysis_type.readLength,min_non_overlap:$seq_method.additional_params.min_non_overlap,discordant_z:$seq_method.additional_params.discordant_z,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
-                    -sr id:input.bam,bam_file:input.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold > output.vcf &&
-                mv input.discordants.bam $discordants &&
-                mv input.splitters.bam $splits &&
-                mv input.lib.histo $histogram &&
-                mv output.vcf $vcf_call &&
-                rm input.discordants.unsorted.bam input.splitters.unsorted.bam meandev.txt
-            #end if
-            #if $seq_method.seq_method_list == "single-read":
-                samtools view -h input.bam | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools view -Sb - > "input.splitters.unsorted.bam" &&
-                lumpy -mw $seq_method.additional_params.mw -tt $seq_method.additional_params.tt
+                    -pe id:'$one_sample_bam',bam_file:input.discordants.bam,histo_file:input.lib.histo,mean:"\$mean",stdev:"\$stdev",read_length:$analysis_type.readLength,min_non_overlap:$seq_method.additional_params.min_non_overlap,discordant_z:$seq_method.additional_params.discordant_z,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
+                    -sr id:'$one_sample_bam',bam_file:input.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold > '$vcf_call'
+            #elif $seq_method.seq_method_list == "single-read":
+                samtools view -h '$one_sample_bam' | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools sort -O bam -o input.splitters.bam &&
+                lumpy $seq_method.additional_params.evidence $seq_method.additional_params.probability_curve -mw $seq_method.additional_params.mw -tt $seq_method.additional_params.tt
                     #if $output_format == "BEDPE":
                         -b
                     #end if
-                    -sr id:input.bam,bam_file:input.splitters.unsorted.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold > output.vcf &&
-                mv input.splitters.unsorted.bam $splits &&
-                mv output.vcf $vcf_call
+                    -sr id:'$one_sample_bam',bam_file:input.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold > '$vcf_call'
             #end if
-
         #else:
-
             #if $seq_method.seq_method_list == "paired-end":
-                samtools view -b -F 1294 input.A.bam > "input.A.discordants.unsorted.bam" &&
-                samtools view -b -F 1294 input.B.bam > "input.B.discordants.unsorted.bam" &&
-                samtools view -h input.A.bam | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools view -Sb - > "input.A.splitters.unsorted.bam" &&
-                samtools view -h input.B.bam | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools view -Sb - > "input.B.splitters.unsorted.bam" &&
-                samtools sort input.A.discordants.unsorted.bam > input.A.discordants.bam &&
-                samtools sort input.B.discordants.unsorted.bam > input.B.discordants.bam &&
-                samtools sort input.A.splitters.unsorted.bam > input.A.splitters.bam &&
-                samtools sort input.B.splitters.unsorted.bam > input.B.splitters.bam &&
-                samtools view  input.A.bam
-                    |tail -n +1
-                    |python $__tool_directory__/pairend_distro.py -r $analysis_type.readLength -X 4 -N $seq_method.additional_params.samplingValue -o input.A.lib.histo > meandevA.txt &&
-                samtools view  input.B.bam
-                    |tail -n +1
+                samtools view -u -F 1294 '$sample_a_bam' | samtools sort -O bam -o input.discordants.bam &&
+                samtools view -u -F 1294 '$sample_b_bam' | samtools sort -O bam -o input.B.discordants.bam &&
+                samtools view -h '$sample_a_bam' | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools sort -O bam -o input.splitters.bam &&
+                samtools view -h '$sample_b_bam' | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools sort -O bam -o input.B.splitters.bam &&
+                samtools view  '$sample_a_bam'
+                    |python $__tool_directory__/pairend_distro.py -r $analysis_type.readLength -X 4 -N $seq_method.additional_params.samplingValue -o input.lib.histo > meandevA.txt &&
+                samtools view  '$sample_b_bam'
                     |python $__tool_directory__/pairend_distro.py -r $analysis_type.readLengthB -X 4 -N $seq_method.additional_params.samplingValue -o input.B.lib.histo > meandevB.txt &&
                 meanA=\$(cat meandevA.txt | sed s/mean:// | sed -r s/stdev:.+//) &&
                 meanB=\$(cat meandevB.txt | sed s/mean:// | sed -r s/stdev:.+//) &&
                 stdevA=\$(cat meandevA.txt | sed -r s/mean:.+stdev://) &&
                 stdevB=\$(cat meandevB.txt | sed -r s/mean:.+stdev://) &&
-                lumpy -mw $seq_method.additional_params.mw -tt $seq_method.additional_params.tt
+                lumpy $seq_method.additional_params.evidence $seq_method.additional_params.probability_curve -mw $seq_method.additional_params.mw -tt $seq_method.additional_params.tt
                     #if $output_format == "BEDPE":
                         -b
                     #end if
-                    -pe id:inputA.bam,bam_file:input.A.discordants.bam,histo_file:input.A.lib.histo,mean:"\$meanA",stdev:"\$stdevA",read_length:$analysis_type.readLength,min_non_overlap:$seq_method.additional_params.min_non_overlap,discordant_z:$seq_method.additional_params.discordant_z,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
+                    -pe id:inputA.bam,bam_file:input.discordants.bam,histo_file:input.lib.histo,mean:"\$meanA",stdev:"\$stdevA",read_length:$analysis_type.readLength,min_non_overlap:$seq_method.additional_params.min_non_overlap,discordant_z:$seq_method.additional_params.discordant_z,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
                     -pe id:inputB.bam,bam_file:input.B.discordants.bam,histo_file:input.B.lib.histo,mean:"\$meanB",stdev:"\$stdevA",read_length:$analysis_type.readLengthB,min_non_overlap:$seq_method.additional_params.min_non_overlap,discordant_z:$seq_method.additional_params.discordant_z,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
-                    -sr id:inputA.bam,bam_file:input.A.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
-                    -sr id:inputB.bam,bam_file:input.B.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold > output.vcf &&
-                mv input.A.discordants.bam $discordants &&
-                mv input.B.discordants.bam $discordantsB &&
-                mv input.A.splitters.bam $splits &&
-                mv input.B.splitters.bam $splitsB &&
-                mv input.A.lib.histo $histogram &&
-                mv input.B.lib.histo $histogramB &&
-                mv output.vcf $vcf_call &&
-                rm input.A.discordants.unsorted.bam input.B.discordants.unsorted.bam input.A.splitters.unsorted.bam input.B.splitters.unsorted.bam meandevA.txt meandevB.txt
-            #end if
-            #if $seq_method.seq_method_list == "single-read":
-                samtools view -h input.A.bam | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools view -Sb - > "input.A.splitters.unsorted.bam" &&
-                samtools view -h input.B.bam | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools view -Sb - > "input.B.splitters.unsorted.bam" &&
-                lumpy -mw $seq_method.additional_params.mw -tt $seq_method.additional_params.tt
+                    -sr id:inputA.bam,bam_file:input.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
+                    -sr id:inputB.bam,bam_file:input.B.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold > '$vcf_call'
+            #elif $seq_method.seq_method_list == "single-read":
+                samtools view -h '$sample_a_bam' | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools sort -O bam -o input.splitters.bam &&
+                samtools view -h '$sample_b_bam' | python $__tool_directory__/extractSplitReads_BwaMem.py -i stdin | samtools sort -O bam -o input.B.splitters.bam &&
+                lumpy $seq_method.additional_params.evidence $seq_method.additional_params.probability_curve -mw $seq_method.additional_params.mw -tt $seq_method.additional_params.tt
                     #if $output_format == "BEDPE":
                         -b
                     #end if
-                    -sr id:input.A.bam,bam_file:input.A.splitters.unsorted.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
-                    -sr id:input.B.bam,bam_file:input.B.splitters.unsorted.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold > output.vcf &&
-                mv input.A.splitters.unsorted.bam $splits &&
-                mv input.B.splitters.unsorted.bam $splitsB &&
-                mv output.vcf $vcf_call
+                    -sr id:'$sample_a_bam',bam_file:input.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold
+                    -sr id:'$sample_b_bam',bam_file:input.B.splitters.bam,back_distance:$seq_method.additional_params.back_distance,weight:$seq_method.additional_params.weight,min_mapping_threshold:$seq_method.additional_params.min_mapping_threshold > '$vcf_call'
             #end if
-
-
         #end if
 
     ]]></command>
@@ -140,6 +115,8 @@
                     <param name="back_distance" value="10"  type="integer" label="back_distance" help="e.g. 10" />
                     <param name="weight" value="1"  type="integer" label="weight" help="e.g. 1" />
                     <param name="min_mapping_threshold" value="20"  type="integer" label="min_mapping_threshold" help="e.g. 20" />
+                    <param name="probability_curve" argument="-P" type="boolean" truevalue="-P" falsevalue="" checked="true" label="output probability curve for each variant"/>
+                    <param name="evidence" argument="-e" type="boolean" truevalue="-e" falsevalue="" checked="true" label="show evidence for each call"/>
                 </section>
             </when>
             <when value="single-read">
@@ -149,6 +126,8 @@
                     <param name="back_distance" value="10"  type="integer" label="back_distance" help="e.g. 10" />
                     <param name="weight" value="1"  type="integer" label="weight" help="e.g. 1" />
                     <param name="min_mapping_threshold" value="20"  type="integer" label="min_mapping_threshold" help="e.g. 20" />
+                    <param name="probability_curve" argument="-P" type="boolean" truevalue="-P" falsevalue="" checked="false" label="output probability curve for each variant"/>
+                    <param name="evidence" argument="-e" type="boolean" truevalue="-e" falsevalue="" checked="false" label="show evidence for each call"/>
                 </section>
             </when>
 
@@ -160,21 +139,21 @@
     </inputs>
 
     <outputs>
-        <data format="tabular" name="histogram" label="Lumpy on ${on_string}: Fragment size distribution">
+        <data format="tabular" name="histogram" label="Lumpy on ${on_string}: Fragment size distribution" from_work_dir="input.lib.histo">
             <filter>seq_method['seq_method_list'] == "paired-end"</filter>
         </data>
-        <data format="tabular" name="histogramB" label="Lumpy on ${on_string}: Fragment size distribution">
+        <data format="tabular" name="histogramB" label="Lumpy on ${on_string}: Fragment size distribution" from_work_dir="input.B.lib.histo">
             <filter>seq_method['seq_method_list'] == "paired-end"</filter>
             <filter>analysis_type['analysis_type_list'] == "two_sample"</filter>
         </data>
-        <data format="bam" name="splits" label="Lumpy on ${on_string}: Split Reads (Bam format)"/>
-        <data format="bam" name="splitsB" label="Lumpy on ${on_string}: Split Reads (Bam format)">
+        <data format="bam" name="splits" label="Lumpy on ${on_string}: Split Reads (Bam format)" from_work_dir="input.splitters.bam"/>
+        <data format="bam" name="splitsB" label="Lumpy on ${on_string}: Split Reads (Bam format)" from_work_dir="input.B.splitters.bam">
             <filter>analysis_type['analysis_type_list'] == "two_sample"</filter>
         </data>
-        <data format="bam" name="discordants" label="Lumpy on ${on_string}: Discordant Pairs (Bam format)">
+        <data format="bam" name="discordants" label="Lumpy on ${on_string}: Discordant Pairs (Bam format)" from_work_dir="input.discordants.bam">
             <filter>seq_method['seq_method_list'] == "paired-end"</filter>
         </data>
-        <data format="bam" name="discordantsB" label="Lumpy on ${on_string}: Discordant Pairs (Bam format)">
+        <data format="bam" name="discordantsB" label="Lumpy on ${on_string}: Discordant Pairs (Bam format)" from_work_dir="input.discordants.B.bam">
             <filter>seq_method['seq_method_list'] == "paired-end"</filter>
             <filter>analysis_type['analysis_type_list'] == "two_sample"</filter>
         </data>
@@ -187,7 +166,7 @@
 
     <tests>
         <test>
-            <param name="analysis_type" value="one_sample" />
+            <param name="analysis_type_list" value="one_sample" />
             <param name="input_file" value="sr.input.bam" ftype="bam"/>
             <param name="seq_method_list" value="single-read" />
             <param name="mw" value="4"/>
@@ -197,6 +176,31 @@
             <param name="min_mapping_threshold" value="20" />
             <output name="vcf_call" file="output.vcf" ftype="vcf"/>
         </test>
+        <test>
+            <param name="analysis_type_list" value="one_sample" />
+            <param name="input_file" value="sr.input.bam" ftype="bam"/>
+            <param name="seq_method_list" value="single-read" />
+            <param name="mw" value="4"/>
+            <param name="tt" value="0"/>
+            <param name="back_distance" value="10"/>
+            <param name="weight" value="1" />
+            <param name="min_mapping_threshold" value="20" />
+            <param name="evidence" value="true" />
+            <param name="probability_curve" value="true" />
+            <output name="vcf_call" file="output_extended.vcf" ftype="vcf" compare="sim_size"/>
+        </test>
+        <test>
+            <param name="analysis_type_list" value="two_sample" />
+            <param name="input_file" value="sr.input.bam" ftype="bam"/>
+            <param name="input_fileB" value="sr.input.bam" ftype="bam"/>
+            <param name="seq_method_list" value="single-read" />
+            <param name="mw" value="4"/>
+            <param name="tt" value="0"/>
+            <param name="back_distance" value="10"/>
+            <param name="weight" value="1" />
+            <param name="min_mapping_threshold" value="20" />
+            <output name="vcf_call" file="output_two.vcf" ftype="vcf"/>
+        </test>
    </tests>
 
     <help>
--- a/test-data/output.vcf	Mon Dec 12 13:45:08 2016 -0500
+++ b/test-data/output.vcf	Sun Dec 18 10:35:43 2016 -0500
@@ -30,7 +30,7 @@
 ##FORMAT=<ID=PE,Number=1,Type=Integer,Description="Number of paired-end reads supporting the variant">
 ##FORMAT=<ID=SR,Number=1,Type=Integer,Description="Number of split reads supporting the variant">
 ##FORMAT=<ID=BD,Number=1,Type=Integer,Description="Amount of BED evidence supporting the variant">
-#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	input.bam
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	sr_input_bam
 hg38_gold_U07000.1	14	1_1	N	[hg38_gold_U07000.1:1876[N	.	.	SVTYPE=BND;STRANDS=--:19;EVENT=1;MATEID=1_2;CIPOS=0,0;CIEND=0,2;CIPOS95=0,0;CIEND95=0,0;SU=19;SR=19	GT:SU:SR	./.:19:19
 hg38_gold_U07000.1	1876	1_2	N	[hg38_gold_U07000.1:14[N	.	.	SVTYPE=BND;STRANDS=--:19;SECONDARY;EVENT=1;MATEID=1_1;CIPOS=0,2;CIEND=0,0;CIPOS95=0,0;CIEND95=0,0;SU=19;SR=19	GT:SU:SR	./.:19:19
 hg38_gold_U07000.1	10	2_1	N	[hg38_gold_U07000.1:1897[N	.	.	SVTYPE=BND;STRANDS=--:19;EVENT=2;MATEID=2_2;CIPOS=-1,0;CIEND=-7,5;CIPOS95=0,1;CIEND95=-2,1;IMPRECISE;SU=19;SR=19	GT:SU:SR	./.:19:19
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output_extended.vcf	Sun Dec 18 10:35:43 2016 -0500
@@ -0,0 +1,75 @@
+##fileformat=VCFv4.2
+##source=LUMPY
+##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">
+##INFO=<ID=SVLEN,Number=.,Type=Integer,Description="Difference in length between REF and ALT alleles">
+##INFO=<ID=END,Number=1,Type=Integer,Description="End position of the variant described in this record">
+##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">
+##INFO=<ID=IMPRECISE,Number=0,Type=Flag,Description="Imprecise structural variation">
+##INFO=<ID=CIPOS,Number=2,Type=Integer,Description="Confidence interval around POS for imprecise variants">
+##INFO=<ID=CIEND,Number=2,Type=Integer,Description="Confidence interval around END for imprecise variants">
+##INFO=<ID=CIPOS95,Number=2,Type=Integer,Description="Confidence interval (95%) around POS for imprecise variants">
+##INFO=<ID=CIEND95,Number=2,Type=Integer,Description="Confidence interval (95%) around END for imprecise variants">
+##INFO=<ID=MATEID,Number=.,Type=String,Description="ID of mate breakends">
+##INFO=<ID=EVENT,Number=1,Type=String,Description="ID of event associated to breakend">
+##INFO=<ID=SECONDARY,Number=0,Type=Flag,Description="Secondary breakend in a multi-line variants">
+##INFO=<ID=SU,Number=.,Type=Integer,Description="Number of pieces of evidence supporting the variant across all samples">
+##INFO=<ID=PE,Number=.,Type=Integer,Description="Number of paired-end reads supporting the variant across all samples">
+##INFO=<ID=SR,Number=.,Type=Integer,Description="Number of split reads supporting the variant across all samples">
+##INFO=<ID=BD,Number=.,Type=Integer,Description="Amount of BED evidence supporting the variant across all samples">
+##INFO=<ID=EV,Number=.,Type=String,Description="Type of LUMPY evidence contributing to the variant call">
+##INFO=<ID=PRPOS,Number=.,Type=String,Description="LUMPY probability curve of the POS breakend">
+##INFO=<ID=PREND,Number=.,Type=String,Description="LUMPY probability curve of the END breakend">
+##ALT=<ID=DEL,Description="Deletion">
+##ALT=<ID=DUP,Description="Duplication">
+##ALT=<ID=INV,Description="Inversion">
+##ALT=<ID=DUP:TANDEM,Description="Tandem duplication">
+##ALT=<ID=INS,Description="Insertion of novel sequence">
+##ALT=<ID=CNV,Description="Copy number variable region">
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">
+##FORMAT=<ID=PE,Number=1,Type=Integer,Description="Number of paired-end reads supporting the variant">
+##FORMAT=<ID=SR,Number=1,Type=Integer,Description="Number of split reads supporting the variant">
+##FORMAT=<ID=BD,Number=1,Type=Integer,Description="Amount of BED evidence supporting the variant">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	sr_input_bam
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:22421:6659_2	hg38_gold_U07000.1	8	50	hg38_gold_U07000.1	1885	1932	0x17456f0	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:21503:6234_2	hg38_gold_U07000.1	13	52	hg38_gold_U07000.1	1885	1933	0x17451d0	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:14108:4338_2	hg38_gold_U07000.1	8	53	hg38_gold_U07000.1	1879	1932	0x1747410	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:22281:3587_2	hg38_gold_U07000.1	8	52	hg38_gold_U07000.1	1879	1944	0x174d920	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:9129:3504_2	hg38_gold_U07000.1	13	50	hg38_gold_U07000.1	1872	1932	0x1748e60	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:10154:5887_2	hg38_gold_U07000.1	10	41	hg38_gold_U07000.1	1872	1931	0x17499d0	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:9382:5932_2	hg38_gold_U07000.1	8	53	hg38_gold_U07000.1	1871	1921	0x174d580	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:22747:6442_2	hg38_gold_U07000.1	8	52	hg38_gold_U07000.1	1870	1933	0x1748cc0	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:6411:6050_2	hg38_gold_U07000.1	13	49	hg38_gold_U07000.1	1868	1932	0x17486a0	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:23865:5544_2	hg38_gold_U07000.1	13	56	hg38_gold_U07000.1	1868	1923	0x1748480	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:20349:5252_2	hg38_gold_U07000.1	13	51	hg38_gold_U07000.1	1868	1931	0x174ce80	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:22571:4203_2	hg38_gold_U07000.1	13	50	hg38_gold_U07000.1	1868	1926	0x1745050	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:16719:4051_2	hg38_gold_U07000.1	8	51	hg38_gold_U07000.1	1868	1932	0x1747b70	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:8961:3182_2	hg38_gold_U07000.1	15	51	hg38_gold_U07000.1	1868	1917	0x1744130	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:18427:2937_2	hg38_gold_U07000.1	8	41	hg38_gold_U07000.1	1868	1932	0x174b760	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:21139:5913_2	hg38_gold_U07000.1	12	50	hg38_gold_U07000.1	1868	1924	0x174d640	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:10523:5853_2	hg38_gold_U07000.1	8	50	hg38_gold_U07000.1	1868	1935	0x174de60	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:16433:5445_2	hg38_gold_U07000.1	13	51	hg38_gold_U07000.1	1868	1932	0x174d870	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:12490:4165_2	hg38_gold_U07000.1	13	58	hg38_gold_U07000.1	1868	1917	0x174d9f0	0	-	+	id:1	weight:1
+hg38_gold_U07000.1	14	1_1	N	[hg38_gold_U07000.1:1876[N	.	.	SVTYPE=BND;STRANDS=--:19;EVENT=1;MATEID=1_2;CIPOS=0,0;CIEND=0,2;CIPOS95=0,0;CIEND95=0,0;SU=19;SR=19;PRPOS=1;PREND=0.99996,3.98091e-05,1.58483e-09	GT:SU:SR	./.:19:19
+hg38_gold_U07000.1	1876	1_2	N	[hg38_gold_U07000.1:14[N	.	.	SVTYPE=BND;STRANDS=--:19;SECONDARY;EVENT=1;MATEID=1_1;CIPOS=0,2;CIEND=0,0;CIPOS95=0,0;CIEND95=0,0;SU=19;SR=19;PRPOS=0.99996,3.98091e-05,1.58483e-09;PREND=1	GT:SU:SR	./.:19:19
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:7043:5583_2	hg38_gold_U07000.1	13	56	hg38_gold_U07000.1	1899	1935	0x1742010	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:19472:2185_2	hg38_gold_U07000.1	0	56	hg38_gold_U07000.1	1898	1945	0x1744270	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:9324:6462_2	hg38_gold_U07000.1	0	51	hg38_gold_U07000.1	1898	1933	0x1748fd0	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:23764:6273_2	hg38_gold_U07000.1	13	48	hg38_gold_U07000.1	1898	1945	0x17490a0	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:7772:5906_2	hg38_gold_U07000.1	0	54	hg38_gold_U07000.1	1898	1942	0x1747240	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:6971:4906_2	hg38_gold_U07000.1	13	51	hg38_gold_U07000.1	1898	1935	0x1746170	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:10511:4776_2	hg38_gold_U07000.1	8	50	hg38_gold_U07000.1	1898	1934	0x174a840	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:19677:3538_2	hg38_gold_U07000.1	13	51	hg38_gold_U07000.1	1898	1940	0x174c190	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:22109:4922_2	hg38_gold_U07000.1	13	53	hg38_gold_U07000.1	1897	1933	0x1743ac0	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:14027:4470_2	hg38_gold_U07000.1	0	51	hg38_gold_U07000.1	1896	1933	0x174b500	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:22736:5607_2	hg38_gold_U07000.1	13	57	hg38_gold_U07000.1	1893	1945	0x174cf30	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:10768:5508_2	hg38_gold_U07000.1	13	56	hg38_gold_U07000.1	1893	1935	0x17480b0	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:14449:3437_2	hg38_gold_U07000.1	13	48	hg38_gold_U07000.1	1893	1933	0x174b150	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:18009:3360_2	hg38_gold_U07000.1	13	47	hg38_gold_U07000.1	1893	1925	0x1749390	0	+	-	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:16615:6513_2	hg38_gold_U07000.1	13	51	hg38_gold_U07000.1	1893	1931	0x174b860	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:19235:5076_2	hg38_gold_U07000.1	13	45	hg38_gold_U07000.1	1893	1932	0x174a790	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:14629:4828_2	hg38_gold_U07000.1	8	50	hg38_gold_U07000.1	1893	1932	0x174b360	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:22780:4994_2	hg38_gold_U07000.1	13	50	hg38_gold_U07000.1	1892	1924	0x174aaf0	0	-	+	id:1	weight:1
+	Evidence:	M00860:26:000000000-A6UGV:1:1101:12387:3929_2	hg38_gold_U07000.1	13	51	hg38_gold_U07000.1	1892	1931	0x174c000	0	-	+	id:1	weight:1
+hg38_gold_U07000.1	10	2_1	N	[hg38_gold_U07000.1:1897[N	.	.	SVTYPE=BND;STRANDS=--:19;EVENT=2;MATEID=2_2;CIPOS=-1,0;CIEND=-7,5;CIPOS95=0,1;CIEND95=-2,1;IMPRECISE;SU=19;SR=19;PRPOS=9.99999e-13,9.99999e-07;PREND=4.89496e-31,1.94872e-23,7.75799e-16,3.08851e-08,0.0308851,0.0775799,0.194872,0.489496,0.194872,0.0122956,1.94872e-09,4.89496e-17,1.22956e-24	GT:SU:SR	./.:19:19
+hg38_gold_U07000.1	1897	2_2	N	[hg38_gold_U07000.1:10[N	.	.	SVTYPE=BND;STRANDS=--:19;SECONDARY;EVENT=2;MATEID=2_1;CIPOS=-7,5;CIEND=-1,0;CIPOS95=-2,1;CIEND95=0,1;IMPRECISE;SU=19;SR=19;PRPOS=4.89496e-31,1.94872e-23,7.75799e-16,3.08851e-08,0.0308851,0.0775799,0.194872,0.489496,0.194872,0.0122956,1.94872e-09,4.89496e-17,1.22956e-24;PREND=9.99999e-13,9.99999e-07	GT:SU:SR	./.:19:19
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output_two.vcf	Sun Dec 18 10:35:43 2016 -0500
@@ -0,0 +1,37 @@
+##fileformat=VCFv4.2
+##source=LUMPY
+##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">
+##INFO=<ID=SVLEN,Number=.,Type=Integer,Description="Difference in length between REF and ALT alleles">
+##INFO=<ID=END,Number=1,Type=Integer,Description="End position of the variant described in this record">
+##INFO=<ID=STRANDS,Number=.,Type=String,Description="Strand orientation of the adjacency in BEDPE format (DEL:+-, DUP:-+, INV:++/--)">
+##INFO=<ID=IMPRECISE,Number=0,Type=Flag,Description="Imprecise structural variation">
+##INFO=<ID=CIPOS,Number=2,Type=Integer,Description="Confidence interval around POS for imprecise variants">
+##INFO=<ID=CIEND,Number=2,Type=Integer,Description="Confidence interval around END for imprecise variants">
+##INFO=<ID=CIPOS95,Number=2,Type=Integer,Description="Confidence interval (95%) around POS for imprecise variants">
+##INFO=<ID=CIEND95,Number=2,Type=Integer,Description="Confidence interval (95%) around END for imprecise variants">
+##INFO=<ID=MATEID,Number=.,Type=String,Description="ID of mate breakends">
+##INFO=<ID=EVENT,Number=1,Type=String,Description="ID of event associated to breakend">
+##INFO=<ID=SECONDARY,Number=0,Type=Flag,Description="Secondary breakend in a multi-line variants">
+##INFO=<ID=SU,Number=.,Type=Integer,Description="Number of pieces of evidence supporting the variant across all samples">
+##INFO=<ID=PE,Number=.,Type=Integer,Description="Number of paired-end reads supporting the variant across all samples">
+##INFO=<ID=SR,Number=.,Type=Integer,Description="Number of split reads supporting the variant across all samples">
+##INFO=<ID=BD,Number=.,Type=Integer,Description="Amount of BED evidence supporting the variant across all samples">
+##INFO=<ID=EV,Number=.,Type=String,Description="Type of LUMPY evidence contributing to the variant call">
+##INFO=<ID=PRPOS,Number=.,Type=String,Description="LUMPY probability curve of the POS breakend">
+##INFO=<ID=PREND,Number=.,Type=String,Description="LUMPY probability curve of the END breakend">
+##ALT=<ID=DEL,Description="Deletion">
+##ALT=<ID=DUP,Description="Duplication">
+##ALT=<ID=INV,Description="Inversion">
+##ALT=<ID=DUP:TANDEM,Description="Tandem duplication">
+##ALT=<ID=INS,Description="Insertion of novel sequence">
+##ALT=<ID=CNV,Description="Copy number variable region">
+##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+##FORMAT=<ID=SU,Number=1,Type=Integer,Description="Number of pieces of evidence supporting the variant">
+##FORMAT=<ID=PE,Number=1,Type=Integer,Description="Number of paired-end reads supporting the variant">
+##FORMAT=<ID=SR,Number=1,Type=Integer,Description="Number of split reads supporting the variant">
+##FORMAT=<ID=BD,Number=1,Type=Integer,Description="Amount of BED evidence supporting the variant">
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	sr_input_bam_a	sr_input_bam_b
+hg38_gold_U07000.1	14	1_1	N	[hg38_gold_U07000.1:1876[N	.	.	SVTYPE=BND;STRANDS=--:38;EVENT=1;MATEID=1_2;CIPOS=0,0;CIEND=0,0;CIPOS95=0,0;CIEND95=0,0;SU=38;SR=38	GT:SU:SR	./.:19:19	./.:19:19
+hg38_gold_U07000.1	1876	1_2	N	[hg38_gold_U07000.1:14[N	.	.	SVTYPE=BND;STRANDS=--:38;SECONDARY;EVENT=1;MATEID=1_1;CIPOS=0,0;CIEND=0,0;CIPOS95=0,0;CIEND95=0,0;SU=38;SR=38	GT:SU:SR	./.:19:19	./.:19:19
+hg38_gold_U07000.1	10	2_1	N	[hg38_gold_U07000.1:1897[N	.	.	SVTYPE=BND;STRANDS=--:38;EVENT=2;MATEID=2_2;CIPOS=0,0;CIEND=-7,5;CIPOS95=0,1;CIEND95=-1,1;IMPRECISE;SU=38;SR=38	GT:SU:SR	./.:19:19	./.:19:19
+hg38_gold_U07000.1	1897	2_2	N	[hg38_gold_U07000.1:10[N	.	.	SVTYPE=BND;STRANDS=--:38;SECONDARY;EVENT=2;MATEID=2_1;CIPOS=-7,5;CIEND=0,0;CIPOS95=-1,1;CIEND95=0,1;IMPRECISE;SU=38;SR=38	GT:SU:SR	./.:19:19	./.:19:19