# HG changeset patch
# User iuc
# Date 1658584161 0
# Node ID 3b6cd808649840fcdc53ab9ea0158ae8cc2f296f
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/bcftools commit c45135e52ae5039e09272ac6f504d0ceb574aa70
diff -r 000000000000 -r 3b6cd8086498 README.md
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,68 @@
+# bcftools (v1.3)
+
+Copied from branch bcftools1.2:
+
+This aims to be a "faithful" rendering of the bcftool suite. I.e. options are
+presented essentially as closely to the command line version as is useful.
+
+This may not appeal to all, if you'd like to see smaller and more dedicated
+tools (e.g. "intersect", "union" and "complement" being separate tools instead
+of all of them included in the "isec" tool,) please feel free to file an issue.
+
+Updated for bcftools v1.3
+
+This was extended from the bcftools1.2 branch then greatly hand edited to
+group params and manage param innteractions.
+
+In the macros.xml there are macros and tokens to handle file input and output.
+These use the datatypes currently available in galaxy: Vcf and Bcf
+The macros take care of bgzip and indexing of inputs.
+
+The convert command was split into 2 tools, "convert to vcf" and "convert from vcf"
+
+## TODO:
+
+- stats needs a matplotlib tool dependency  and pdflatex for generating a pdf of plots
+- cnv needs a matplotlib tool dependency for generating images, then a means to consolidate those.
+- cnv needs an input.vcf for testing, runs with bcftools cnv -s "HG00101" -o 'HG00101/' -p 5 mpileup.vcf
+- roh needs a more useful input.vcf for testing
+- plugin color chrs
+- plugin frameshifts
+
+## Status
+
+The wrappers were automatically generated in bulk. That doesn't get them 100%
+of the way there (e.g. meaningful test cases), so the rest of the process is a
+bit slower.
+
+- [x] annotate
+- [x] call
+- [ ] cnv (needs real test data, needs plotting)
+- [x] concat
+- [x] consensus
+- [x] convert from vcf
+- [x] convert to vcf
+- [x] filter
+- [x] gtcheck
+- [x] isec
+- [x] merge
+- [x] norm
+- [x] query
+- [x] query list samples
+- [x] reheader
+- [x] roh
+- [x] stats (needs plotting)
+- [x] view
+- [ ] +color chrs
+- [x] +counts
+- [x] +dosage
+- [x] +fill an ac
+- [x] +fill tags
+- [x] +fixploidy
+- [ ] +frameshifts
+- [x] +impute info
+- [x] +mendelian
+- [x] +missing2ref
+- [x] +setgt
+- [x] +tag2tag
+- [x] +vcf2sex
diff -r 000000000000 -r 3b6cd8086498 bcftools_plugin_split_vep.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bcftools_plugin_split_vep.xml	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,112 @@
+
+
+    plugin Extracts fields from structured annotations such as INFO/CSQ
+    
+        split-vep
+        split_vep
+        macros.xml
+    
+    
+    
+    
+     '$output_file'
+]]>
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+        
+    
+    
+        
+    
+    
+        
+            
+            
+            
+            
+            
+            
+            
+        
+    
+    
+    
+
diff -r 000000000000 -r 3b6cd8086498 macros.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,723 @@
+
+  1.10
+  
+      
+          bcftools
+      
+  
+  
+    
+      bcftools
+      htslib
+      
+    
+  
+  
+      samtools
+  
+  
+      matplotlib
+  
+  
+    bcftools 2>&1 | grep 'Version:'
+  
+
+  
+    
+      10.1093/bioinformatics/btp352
+      
+    
+  
+  https://github.com/samtools/bcftools/wiki
+  http://samtools.github.io/bcftools/bcftools.html
+  
+  --threads \${GALAXY_SLOTS:-4}
+  
+  
+
+  
+  
+    
+  
+  
+ $input_vcf &&
+  bcftools index $input_vcf &&
+#elif $input_file.is_of_type('vcf_bgzip')
+  ln -s '$input_file' $input_vcf &&
+  #if $input_file.metadata.tabix_index:
+    ln -s '${input_file.metadata.tabix_index}' ${input_vcf}.tbi &&
+  #else
+    bcftools index $input_vcf &&
+  #end if
+#elif $input_file.is_of_type('bcf')
+  #set $input_vcf = 'input.bcf'
+  ln -s '$input_file' $input_vcf &&
+  #if $input_file.metadata.bcf_index:
+    ln -s '${input_file.metadata.bcf_index}' ${input_vcf}.csi &&
+  #else
+    bcftools index $input_vcf &&
+  #end if
+#end if
+]]>
+  
+  
+$input_vcf
+  
+
+  
+    
+  
+  
+ $input_vcf &&
+    bcftools index $input_vcf &&
+  #elif $input_file.is_of_type('vcf_bgzip')
+    ln -s '$input_file' $input_vcf &&
+    #if $input_file.metadata.tabix_index:
+      ln -s '${input_file.metadata.tabix_index}' ${input_vcf}.tbi &&
+    #else
+      bcftools index $input_vcf &&
+    #end if
+  #elif $input_file.is_of_type('bcf')
+    #set $input_vcf = 'input' + str($i) + '.bcf.gz'
+    ln -s '$input_file' $input_vcf &&
+    #if $input_file.metadata.bcf_index:
+      ln -s '${input_file.metadata.bcf_index}' ${input_vcf}.csi &&
+    #else
+      bcftools index $input_vcf &&
+    #end if
+  #end if
+  echo '$input_vcf' >> $vcfs_list_file &&
+  $input_vcfs.append($input_vcf)
+#end for
+]]>
+  
+  
+#echo ' '.join($input_vcfs)#
+  
+  
+$vcfs_list_file
+  
+
+  
+    
+        
+        
+    
+  
+
+  
+    
+        
+            
+            
+        
+        
+            
+                
+                    
+                    
+                
+            
+        
+        
+            
+        
+    
+  
+  
+
+  
+  
+#if $input_fa_ref is not None:
+  --fasta-ref $input_fa_ref
+#elif 'fasta_ref' in $section and $section.fasta_ref:
+  --fasta-ref '${section.fasta_ref}'
+#end if
+  
+
+  
+    
+  
+  
+  
+
+  
+  
+#if 'AF_file' in $section and $section.AF_file:
+  --AF-file '${section.AF_file}'
+#end if
+  
+
+  
+      
+  
+  
+#if 'estimate_AF' in $section and $section.estimate_AF:
+  --estimate-AF "${section.estimate_AF}"
+#end if
+  
+
+  
+    
+  
+  
+ $exons_path &&
+    tabix -s 1 -b 2 -e 3 $exons_path &&
+#end if
+]]>
+  
+  
+#if 'exons_file' in $section and $section.exons_file:
+  --exons $exons_path
+#end if
+  
+
+  
+    
+  
+  
+#if 'ploidy_file' in $section and $section.ploidy_file:
+  --ploidy "${section.ploidy_file}"
+#end if
+  
+
+  
+      
+  
+  
+      
+  
+  
+    
+      
+      
+      
+      
+      
+      
+    
+  
+  
+#if $section.collapse:
+  --collapse ${section.collapse}
+#end if
+  
+
+  
+    
+      ^([^ \t\n\r\f\v,]+(,[^ \t\n\r\f\v,]+)*)?$
+    
+  
+  
+#if $section.apply_filters:
+  --apply-filters '${section.apply_filters}'
+#end if
+  
+
+  
+    
+      
+      
+      
+    
+  
+  
+#if str($output_type) != "__none__":
+  --output-type '${output_type}'
+#end if
+  
+
+  
+      
+        
+          
+          
+          
+          
+        
+      
+  
+
+  
+    
+  
+
+  
+    
+        
+            value.strip()
+        
+        
+            not value or value.isdigit()
+        
+        
+            not value or value.isdigit()
+        
+        
+    
+  
+
+  
+    
+  
+
+  
+    
+        
+            
+            
+            
+        
+        
+        
+            
+            
+        
+        
+            
+            
+                
+    
+  
+
+  
+
+  
+  
+  
+
+  
+  
+  
+
+  
+
+  
+
+  
+
+  
+ $targets_path &&
+    tabix -s 1 -b 2 -e 2 $targets_path &&
+  #end if
+#elif $tgts_sec.targets_file:
+  #set $targets_path = 'targets_file.tab.gz'
+  bgzip -c "$section.targets_file" > $targets_path &&
+  tabix -s 1 -b 2 -e 2 $targets_path &&
+#end if
+]]>
+  
+
+  
+
+  
+
+  
+      
+          ^(\w+(,\w+)*)?$
+      
+      
+      
+      
+  
+  
+#set $samples_defined = False
+#if str($section.samples) != '':
+  #set $samples_defined = True
+  --samples '${section.invert_samples}${section.samples}'
+#end if
+#if $section.samples_file:
+  #set $samples_defined = True
+  --samples-file "${section.invert_samples_file}${section.samples_file}"
+#end if
+  
+
+  
+      
+  
+  
+#if $section.sample:
+  --sample '${section.sample}'
+#end if
+  
+
+  
+    "'" not in value and value[-1] != "\\"
+    
+      
+        
+        
+      
+    
+  
+
+  
+    
+      
+    
+  
+  
+#if $section.include:
+  --include '${section.include}'
+#end if
+  
+  
+  
+    
+      
+    
+  
+  
+#if $section.exclude:
+  --exclude '${section.exclude}'
+#end if
+  
+
+  
+    
+        ^([^,]+(,[^,]+)*)?$
+    
+  
+  
+#if $section.columns != '':
+  --columns '${section.columns}'
+#end if
+  
+
+  
+    
+  
+
+  
+    
+  
+  
+${section.vcf_ids}
+  
+
+  
+      BCF conversion.
+
+This Galaxy tool recommends using the compressed BCF format
+as piping is not implemented, and uncompressed data would
+use unnecessary amounts of space.
+  ]]>
+  
+      
+   als.tsv.gz && tabix -s1 -b2 -e2 als.tsv.gz
+      ]]>
+      
+  
+
+
+  
+Collapse
+--------
+
+Controls how to treat records with duplicate positions and defines compatible
+records across multiple input files. Here by "compatible" we mean records which
+should be considered as identical by the tools. For example, when performing
+line intersections, the desire may be to consider as identical all sites with
+matching positions (bcftools isec -c all), or only sites with matching variant
+type (bcftools isec -c snps  -c indels), or only sites with all alleles
+identical (bcftools isec -c none).
+
+
++------------+----------------------------------------------------------------+
+| Flag value | Result                                                         |
++============+================================================================+
+| none       | only records with identical REF and ALT alleles are compatible |
++------------+----------------------------------------------------------------+
+| some       | only records where some subset of ALT alleles match are        |
+|            | compatible                                                     |
++------------+----------------------------------------------------------------+
+| all        | all records are compatible, regardless of whether the ALT      |
+|            | alleles match or not. In the case of records with the same     |
+|            | position, only the first wil lbe considered and appear on      |
+|            | output.                                                        |
++------------+----------------------------------------------------------------+
+| snps       | any SNP records are compatible, regardless of whether the ALT  |
+|            | alleles match or not. For duplicate positions, only the first  |
+|            | SNP record will be considered and appear on output.            |
++------------+----------------------------------------------------------------+
+| indels     | all indel records are compatible, regardless of whether the    |
+|            | REF and ALT alleles match or not. For duplicate positions,     |
+|            | only the first indel record will be considered and appear on   |
+|            | output.                                                        |
++------------+----------------------------------------------------------------+
+| both       | abbreviation of "-c indels  -c snps"                           |
++------------+----------------------------------------------------------------+
+| id         | only records with identical ID column are compatible.          |
+|            | Supportedby bcftools merge only.                               |
++------------+----------------------------------------------------------------+
+  
+
+  
+      , >=, <=, <, !=
+
+-  regex operators "~" and its negation "!~"
+
+   ::
+
+      INFO/HAYSTACK ~ "needle"
+
+-  parentheses
+
+   ::
+
+      (, )
+
+-  logical operators
+
+   ::
+
+      && (same as &), ||,  |
+
+-  INFO tags, FORMAT tags, column names
+
+   ::
+
+      INFO/DP or DP
+      FORMAT/DV, FMT/DV, or DV
+      FILTER, QUAL, ID, REF, ALT[0]
+
+-  1 (or 0) to test the presence (or absence) of a flag
+
+   ::
+
+      FlagA=1 && FlagB=0
+
+-  "." to test missing values
+
+   ::
+
+      DP=".", DP!=".", ALT="."
+
+-  missing genotypes can be matched regardless of phase and ploidy (".|.", "./.", ".") using this expression
+
+   ::
+
+      GT="."
+
+-  TYPE for variant type in REF,ALT columns (indel,snp,mnp,ref,other)
+
+   ::
+
+      TYPE="indel" | TYPE="snp"
+
+-  array subscripts, "*" for any field
+
+   ::
+
+      (DP4[0]+DP4[1])/(DP4[2]+DP4[3]) > 0.3
+      DP4[*] == 0
+      CSQ[*] ~ "missense_variant.*deleterious"
+
+-  function on FORMAT tags (over samples) and INFO tags (over vector fields)
+
+   ::
+
+      MAX, MIN, AVG, SUM, STRLEN, ABS
+
+-  variables calculated on the fly if not present: number of alternate alleles; number of samples; count of alternate alleles; minor allele count (similar to AC but is always smaller than 0.5); frequency of alternate alleles (AF=AC/AN); frequency of minor alleles (MAF=MAC/AN); number of alleles in called genotypes
+
+   ::
+
+      N_ALT, N_SAMPLES, AC, MAC, AF, MAF, AN
+
+**Notes:**
+
+-  String comparisons and regular expressions are case-insensitive
+-  If the subscript "*" is used in regular expression search, the whole field
+   is treated as one string. For example, the regex ``STR[*]~"B,C"`` will be
+   true for the string vector INFO/STR=AB,CD.
+-  Variables and function names are case-insensitive, but not tag names. For
+   example, "qual" can be used instead of "QUAL", "strlen()" instead of
+   "STRLEN()" , but not "dp" instead of "DP".
+
+**Examples:**
+
+   ::
+
+      MIN(DV)>5
+      MIN(DV/DP)>0.3
+      MIN(DP)>10 & MIN(DV)>3
+      FMT/DP>10  & FMT/GQ>10 .. both conditions must be satisfied within one sample
+      FMT/DP>10 && FMT/GQ>10 .. the conditions can be satisfied in different samples
+      QUAL>10 |  FMT/GQ>10   .. selects only GQ>10 samples
+      QUAL>10 || FMT/GQ>10   .. selects all samples at QUAL>10 sites
+      TYPE="snp" && QUAL>=10 && (DP4[2]+DP4[3] > 2)
+      MIN(DP)>35 && AVG(GQ)>50
+      ID=@file       .. selects lines with ID present in the file
+      ID!=@~/file    .. skip lines with ID present in the ~/file
+      MAF[0]<0.05    .. select rare variants at 5% cutoff
+  ]]>
+
diff -r 000000000000 -r 3b6cd8086498 test-data/23andme.fa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/23andme.fa	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,14 @@
+>1
+CACGTNACGGCTGAAGTCCAAGGTAC
+CGTATCGAGTTCACAGTCGATAGCTC
+GATCGATAGCATCGCTAGCNNNACTA
+CGATCGATCGCTCTCCGTAACACTCA
+AAAACGATCGATCGACTGCTCTTTAG
+CGATGACTTTAGGGGAAAAA
+>2
+CGCTCAGCCGTACAGCCGAGCAGGAC
+ACGCTATTTTAGATCGACTGGCTNNG
+CGCTAGCTACGCTTTAGCACGAGAA
+>Y
+NNNGCATACGTGTCCATCACGATGAT
+AGCGATGATCGATC
diff -r 000000000000 -r 3b6cd8086498 test-data/annotate.hdr
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annotate.hdr	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,4 @@
+##INFO=
+##INFO=
+##INFO=
+##INFO=
diff -r 000000000000 -r 3b6cd8086498 test-data/annotate.tab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annotate.tab	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,18 @@
+3	3212016	CTT	C,CT	indel_3212016	.	.	.	1
+4	3258448	TACACACAC	T	indel_3258448	.	.	.	1
+4	4000000	T	C	id1	.	.	.	1
+4	4000001	T	C,A	id2	.	.	.	1
+2	3199812	G	GTT,GT	indel_3199812	.	.	.	1
+1	3000150	C	CT	indel_3000150	.	.	.	1
+1	3000150	C	T	snp_3000150	999	1,2	1e-10,2e-10	.
+1	3000151	C	T	snp_3000151	999	1	2e-10	.
+1	3062915	G	T,C	snp_3062915	999	1	2e-10	.
+1	3062915	GTTT	G	indel_3062915	.	.	.	1
+1	3106154	A	C	snp_3106154	999	1	2e-10	.
+1	3106154	C	CT	indel_3106154	.	.	.	1
+1	3106154	CAAA	C	indel_3106154	.	.	.	1
+1	3157410	GA	G	indel_3157410	.	.	.	1
+1	3162006	GAA	G	indel_3162006	.	.	.	1
+1	3177144	G	.	ref_3177144	999	1	2e-10	.
+1	3177144	G	T	snp_3177144	999	1	2e-10	0
+1	3184885	TAAAA	TA,T	indel_3184885	.	.	.	1
diff -r 000000000000 -r 3b6cd8086498 test-data/annotate.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annotate.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,39 @@
+##fileformat=VCFv4.1
+##INFO=
+##FORMAT=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##FILTER=
+##contig=
+##contig=
+##contig=
+##contig=
+##test=
+##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
+##readme=AAAAAA
+##readme=BBBBBB
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A	B
+1	3000150	.	C	T	59.2	PASS	AN=4;AC=2	GT:GQ	0/1:245	0/1:245
+1	3000151	.	C	T	59.2	PASS	AN=4;AC=2	GT:DP:GQ	0/1:32:245	0/1:32:245
+1	3062915	id3D	GTTT	G	12.9	q10	DP4=1,2,3,4;AN=4;AC=2;INDEL;STR=test	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20	0/1:409:35:-20,-5,-20
+1	3062915	idSNP	G	T,C	12.6	test	TEST=5;DP4=1,2,3,4;AN=3;AC=1,1	GT:TT:GQ:DP:GL	0/1:0,1:409:35:-20,-5,-20,-20,-5,-20	2:0,1:409:35:-20,-5,-20
+1	3106154	.	CAAA	C	342	PASS	AN=4;AC=2	GT:GQ:DP	0/1:245:32	0/1:245:32
+1	3106154	.	C	CT	59.2	PASS	AN=4;AC=2	GT:GQ:DP	0/1:245:32	0/1:245:32
+1	3157410	.	GA	G	90.6	q10	AN=4;AC=4	GT:GQ:DP	1/1:21:21	1/1:21:21
+1	3162006	.	GAA	G	60.2	PASS	AN=4;AC=2	GT:GQ:DP	0/1:212:22	0/1:212:22
+1	3177144	.	G	T	45	PASS	AN=4;AC=2	GT:GQ:DP	0/0:150:30	1/1:150:30
+1	3177144	.	G	.	45	PASS	AN=4;AC=0	GT:GQ:DP	0/0:150:30	0/0:150:30
+1	3184885	.	TAAAA	TA,T	61.5	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:12:10	1/2:12:10
+2	3199812	.	G	GTT,GT	82.7	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:322:26	1/2:322:26
+3	3212016	.	CTT	C,CT	79	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:91:26	1/2:91:26
+4	3258448	.	TACACACAC	T	59.9	PASS	AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	4000000	.	T	A,C	59.9	PASS	AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	4000001	.	T	A	59.9	PASS	AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
diff -r 000000000000 -r 3b6cd8086498 test-data/annotate2.tab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annotate2.tab	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,2 @@
+2	3000000	3199812	region_3000000_3199812
+1	3000150	3106154	region_3000150_3106154
diff -r 000000000000 -r 3b6cd8086498 test-data/annotate2.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annotate2.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,17 @@
+##fileformat=VCFv4.1
+##contig=
+##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A	B	C
+1	3000001	xx	C	T	11	PASS	FLAG;IINT=11;IFLT=1.1;ISTR=xxx	GT:FINT:FFLT:FSTR	0/0:11:1.1:xxx	0/0:11:1.1:x	0/0:11:1.1:x
+1	3000002	.	C	T	.	.	.	GT	.	.	.
+1	3000003	xx	C	T	11	q11	FLAG;IINT=.;IFLT=.;ISTR=.	GT:FINT:FFLT:FSTR	0/0:.:.:.	0/0:.:.:.	0/0:.:.:.
+1	3000004	xx	C	T	11	q11	FLAG;IINT=11;IFLT=1.1;ISTR=xxx	GT:FINT:FFLT:FSTR	0/0:11:1.1:x	0/0:11:1.1:xxx	0/0:11:1.1:xxx
diff -r 000000000000 -r 3b6cd8086498 test-data/annotate3.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annotate3.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,21 @@
+##fileformat=VCFv4.1
+##FILTER=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##FILTER=
+##FILTER=
+##FILTER=
+##FILTER=
+##contig=
+##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A	B
+1	3000000	id	C	.	20	.	AA=1;BB=2;X=3;Y=4	GT:X:PL:Y:AA	0/1:1:2:3:1	0/1:1:2:3:1
+1	3000001	id	C	.	20	PASS	AA=1;BB=2;X=3;Y=4	GT:X:PL:Y:AA	0/1:1:2:3:1	0/1:1:2:3:1
+1	3000002	id	C	.	20	fltY;fltA;fltB;fltX	BB=2;X=3;Y=4;AA=1	GT:Y:X:PL:AA	0/1:3:1:2:1	0/1:3:1:2:1
diff -r 000000000000 -r 3b6cd8086498 test-data/annots.bcf
Binary file test-data/annots.bcf has changed
diff -r 000000000000 -r 3b6cd8086498 test-data/annots.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annots.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,37 @@
+##fileformat=VCFv4.1
+##INFO=
+##FORMAT=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##FILTER=
+##contig=
+##contig=
+##contig=
+##contig=
+##test=
+##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
+##readme=AAAAAA
+##readme=BBBBBB
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A	B
+1	3000150	id1	C	T	99	PASS	STR=id1;AN=4;AC=0	GT:GQ	0|0:999	0|0:999
+1	3000151	id2	C	T	99	PASS	STR=id2;AN=4;AC=0	GT:DP:GQ	0|0:99:999	0|0:99:999
+1	3062915	idIndel	GTTT	G	99	PASS	DP4=1,2,3,4;AN=4;AC=0;INDEL;STR=testIndel	GT:GQ:DP:GL	0|0:999:99:-99,-9,-99	0|0:999:99:-99,-9,-99
+1	3062915	idSNP	G	T,C	99	PASS	STR=testSNP;TEST=5;DP4=1,2,3,4;AN=3;AC=0,0	GT:TT:GQ:DP:GL	0|0:9,9:999:99:-99,-9,-99,-99,-9,-99	0:9,9:999:99:-99,-9,-99
+1	3106154	id4	CAAA	C	99	PASS	STR=id4;AN=4;AC=0	GT:GQ:DP	0|0:999:99	0|0:999:99
+1	3106154	id5	C	CT	99	PASS	STR=id5;AN=4;AC=0	GT:GQ:DP	0|0:999:99	0|0:999:99
+1	3157410	id6	GA	GC,G	99	PASS	STR=id6;AN=4;AC=0	GT:GQ:DP	0|0:99:99	0|0:99:99
+1	3162006	id7	GAA	GG	99	PASS	STR=id7;AN=4;AC=0	GT:GQ:DP	0|0:999:99	0|0:999:99
+1	3177144	id8	G	T	99	PASS	STR=id8;AN=4;AC=0	GT:GQ:DP	0|0:999:99	0|0:999:99
+1	3177144	id9	G	.	99	PASS	STR=id9;AN=4;AC=0	GT:GQ:DP	0|0:999:99	0|0:999:99
+1	3184885	id10	TAAAA	TA,T	99	PASS	STR=id10;AN=4;AC=0,0	GT:GQ:DP	0|0:99:99	0|0:99:99
+2	3199812	id11	G	GTT,GT	99	PASS	STR=id11;AN=4;AC=0,0	GT:GQ:DP	0|0:999:99	0|0:999:99
+3	3212016	id12	CTT	C,CT	99	PASS	STR=id12;AN=4;AC=0,0	GT:GQ:DP	0|0:99:99	0|0:99:99
+4	3258448	id13	TACACACAC	T	99	PASS	STR=id13;AN=4;AC=0	GT:GQ:DP	0|0:999:99	0|0:999:99
diff -r 000000000000 -r 3b6cd8086498 test-data/annots2.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/annots2.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,17 @@
+##fileformat=VCFv4.1
+##FILTER=
+##contig=
+##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	B	A
+1	3000001	.	C	T	.	.	.	GT	.	.
+1	3000002	id	C	T	99	q99	FLAG;IINT=88,99;IFLT=8.8,9.9;ISTR=888,999	GT:FINT:FFLT:FSTR	1|1:88,99:8.8,9.9:888,999	0|1:77:7.7:77
+1	3000003	id	C	T	99	q99	FLAG;IINT=88,99;IFLT=8.8,9.9;ISTR=888,999	GT:FINT:FFLT:FSTR	1|1:88,99:8.8,9.9:888,999	0|1:77:7.7:77
+1	3000004	id	C	T	99	q99	FLAG;IINT=88,99;IFLT=8.8,9.9;ISTR=888,999	GT:FINT:FFLT:FSTR	1|1:88,99:8.8,9.9:888,999	0|1:77:7.7:77
diff -r 000000000000 -r 3b6cd8086498 test-data/check.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/check.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,38 @@
+##fileformat=VCFv4.1
+##INFO=
+##FORMAT=
+##INFO=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##FILTER=
+##contig=
+##contig=
+##contig=
+##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
+##readme=AAAAAA
+##readme=BBBBBB
+##INFO=
+##INFO=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A	B
+1	3062915	id3D	GTTT	G	12.9	q10	DP4=1,2,3,4;AN=4;AC=2	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20	0/1:409:35:-20,-5,-20
+1	3062915	idSNP	G	T,C	12.6	test	TEST=5;DP4=1,2,3,4;AN=4;AC=1,1	GT:TT:GQ:DP:GL	0/1:0,1:409:35:-20,-5,-20,-20,-5,-20	0/2:0,1:409:35:-20,-5,-20,-20,-5,-20
+1	3106154	.	CAAA	C	342	PASS	AN=4;AC=2	GT:GQ:DP	0/1:245:32	0/1:245:32
+1	3106154	.	G	A	59.2	PASS	AN=4;AC=1	GT:GQ:DP	0/1:245:32	0/0:245:32
+1	3157410	.	G	A	90.6	q10	AN=4;AC=4	GT:GQ:DP	1/1:21:21	1/1:21:21
+1	3162006	.	G	A	60.2	PASS	AN=4;AC=3	GT:GQ:DP	1/1:212:22	0/1:212:22
+1	3177144	.	GT	G	45	PASS	AN=4;AC=2	GT:GQ:DP	0/1:150:30	0/1:150:30
+1	3184885	.	TAAAA	TA,T	61.5	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:12:10	1/2:12:10
+2	3199812	.	G	GTT,GT	82.7	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:322:26	1/2:322:26
+3	3212016	.	CTT	C,CT	79	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:91:26	1/2:91:26
+4	3258448	.	TACACACAC	T	59.9	PASS	DP=62;AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	3258449	.	GCAAA	GA,G	59.9	PASS	DP=62;AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	3258450	.	AAAAGAAAAAG	A,AAAAAAG	59.9	PASS	DP=60;AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	3258451	.	AAA	AGT	59.9	PASS	AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	3258452	.	AAA	AGA	59.9	PASS	AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	3258453	.	AACA	AGA	59.9	PASS	AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	3258453	.	ACA	AAGA	59.9	PASS	AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
+4	3258454	.	AACA	AACA	59.9	PASS	AN=4;AC=2	GT:GQ:DP	0/1:325:31	0/1:325:31
diff -r 000000000000 -r 3b6cd8086498 test-data/cnv.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnv.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,192 @@
+##fileformat=VCFv4.2
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+#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
diff -r 000000000000 -r 3b6cd8086498 test-data/cnv_baf_only.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnv_baf_only.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,188 @@
+##fileformat=VCFv4.2
+##FORMAT=
+##FORMAT=
+#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
diff -r 000000000000 -r 3b6cd8086498 test-data/cnv_pairwise_summary.tab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnv_pairwise_summary.tab	Sat Jul 23 13:49:21 2022 +0000
@@ -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
diff -r 000000000000 -r 3b6cd8086498 test-data/cnv_summary.tab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnv_summary.tab	Sat Jul 23 13:49:21 2022 +0000
@@ -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
diff -r 000000000000 -r 3b6cd8086498 test-data/color_chrs.dat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/color_chrs.dat	Sat Jul 23 13:49:21 2022 +0000
@@ -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
diff -r 000000000000 -r 3b6cd8086498 test-data/color_chrs_unrelated.dat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/color_chrs_unrelated.dat	Sat Jul 23 13:49:21 2022 +0000
@@ -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
diff -r 000000000000 -r 3b6cd8086498 test-data/concat.1.a.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/concat.1.a.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,32 @@
+##fileformat=VCFv4.0
+##FILTER=
+##FILTER=
+##INFO=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##contig=
+##contig=
+##samtoolsVersion=0.2.0-rc10+htslib-0.2.0-rc10
+##samtoolsCommand=samtools mpileup -t INFO/DPR -C50 -pm3 -F0.2 -d10000 -ug -r 1:1-1000000 -b mpileup.2014-07-03//lists/chr1-pooled.list -f human_g1k_v37.fasta
+##ALT=
+##bcftools_callVersion=0.2.0-rc10-2-gcd94fde+htslib-0.2.0-rc10
+##bcftools_callCommand=call -vm -f GQ -S mpileup.2014-07-03//pooled/1/1:1-1000000.samples -
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A
+1	100	.	GTTT	G	1806	q10	XX=11;DP=35	GT:GQ:DP	0/1:409:35
+1	110	.	C	T,G	1792	Fail	DP=32	GT:GQ:DP	0/1:245:32
+1	110	.	CAAA	C	1792	Fail	DP=32	GT:GQ:DP	0/1:245:32
+1	120	.	GA	G	628	q10	DP=21	GT:GQ:DP	1/1:21:21
+1	130	.	G	T	1016	Fail	DP=22	GT:GQ:DP	0/1:212:22
+1	130	.	GAA	GG	1016	Fail	DP=22	GT:GQ:DP	0/1:212:22
+1	140	.	GT	G	727	PASS	DP=30	GT:GQ:DP	0/1:150:30
+1	150	.	TAAAA	TA,T	246	Fail	DP=10	GT:GQ:DP	1/2:12:10
+1	160	.	TAAAA	TA,T	246	Fail	DP=10	GT:GQ:DP	1/2:12:10
+2	100	.	GTTT	G	1806	q10	DP=35	GT:GQ:DP	0/1:409:35
+2	110	.	CAAA	C	1792	PASS	DP=32	GT:GQ:DP	0/1:245:32
+2	120	.	GA	G	628	q10	DP=21	GT:GQ:DP	1/1:21:21
+2	130	.	GAA	G	1016	PASS	DP=22	GT:GQ:DP	0/1:212:22
+2	140	.	GT	G	727	PASS	DP=30	GT:GQ:DP	0/1:150:30
+2	150	.	TAAAA	TA,T	246	PASS	DP=10	GT:GQ:DP	1/2:12:10
+2	160	.	TAAAA	TA,TC,T	246	PASS	DP=10	GT:GQ:DP	0/2:12:10
diff -r 000000000000 -r 3b6cd8086498 test-data/concat.1.b.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/concat.1.b.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,19 @@
+##fileformat=VCFv4.0
+##samtoolsVersion=0.2.0-rc10+htslib-0.2.0-rc10
+##samtoolsCommand=samtools mpileup -t INFO/DPR -C50 -pm3 -F0.2 -d10000 -ug -r 1:1-1000000 -b mpileup.2014-07-03//lists/chr1-pooled.list -f human_g1k_v37.fasta
+##ALT=
+##bcftools_callVersion=0.2.0-rc10-2-gcd94fde+htslib-0.2.0-rc10
+##bcftools_callCommand=call -vm -f GQ -S mpileup.2014-07-03//pooled/1/1:1-1000000.samples -
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##contig=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A
+3	142	.	GTTT	G	1806	q10	DP=35	GT:GQ:DP	0/1:409:35
+3	152	.	CAAA	C	1792	PASS	DP=32	GT:GQ:DP	0/1:245:32
+3	162	.	GA	G	628	q10	DP=21	GT:GQ:DP	1/1:21:21
+3	172	.	GAA	G	1016	PASS	DP=22	GT:GQ:DP	0/1:212:22
+3	182	.	GT	G	727	PASS	DP=30	GT:GQ:DP	0/1:150:30
+3	192	.	TAAAA	TA,T	246	PASS	DP=10	GT:GQ:DP	1/2:12:10
diff -r 000000000000 -r 3b6cd8086498 test-data/concat.2.a.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/concat.2.a.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,15 @@
+##fileformat=VCFv4.0
+##INFO=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##contig=
+##contig=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A
+2	140	.	A	G	727	PASS	DP=30	GT:GQ:DP	0/1:150:30
+2	160	.	TAAAA	TA,TC,T	246	PASS	DP=10	GT:GQ:DP	0/2:12:10
+1	110	.	C	T,G	1792	Fail	XX=11;DP=32	GT:GQ:DP	0/1:245:32
+1	130	.	GAA	GG	1016	PASS	DP=22	GT:GQ:DP	0/1:212:22
+1	130	.	G	T	1016	PASS	DP=22	GT:GQ:DP	0/1:212:22
diff -r 000000000000 -r 3b6cd8086498 test-data/concat.2.b.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/concat.2.b.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,24 @@
+##fileformat=VCFv4.0
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##contig=
+##contig=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A
+1	100	.	GTTT	G	1806	q10	DP=35	GT:GQ:DP	0/1:409:35
+1	110	.	CAAA	C	1792	PASS	DP=32	GT:GQ:DP	0/1:245:32
+1	120	.	GA	G	628	q10	DP=21	GT:GQ:DP	1/1:21:21
+1	130	.	G	T	1016	PASS	DP=22	GT:GQ:DP	0/1:212:22
+1	130	.	GAA	GG	1016	PASS	DP=22	GT:GQ:DP	0/1:212:22
+1	140	.	GT	G	727	PASS	DP=30	GT:GQ:DP	0/1:150:30
+1	150	.	TAAAA	TA,T	246	PASS	DP=10	GT:GQ:DP	1/2:12:10
+1	160	.	TAAAA	TA,T	246	PASS	DP=10	GT:GQ:DP	1/2:12:10
+2	100	.	GTTT	G	1806	q10	DP=35	GT:GQ:DP	0/1:409:35
+2	110	.	CAAA	C	1792	PASS	DP=32	GT:GQ:DP	0/1:245:32
+2	120	.	GA	G	628	q10	DP=21	GT:GQ:DP	1/1:21:21
+2	130	.	GAA	G	1016	PASS	DP=22	GT:GQ:DP	0/1:212:22
+2	140	.	GT	G	727	PASS	DP=30	GT:GQ:DP	0/1:150:30
+2	150	.	TAAAA	TA,T	246	PASS	DP=10	GT:GQ:DP	1/2:12:10
+2	160	.	TAAAA	TA,TC,T	246	PASS	DP=10	GT:GQ:DP	0/2:12:10
diff -r 000000000000 -r 3b6cd8086498 test-data/consensus.fa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/consensus.fa	Sat Jul 23 13:49:21 2022 +0000
@@ -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
diff -r 000000000000 -r 3b6cd8086498 test-data/consensus.tab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/consensus.tab	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,3 @@
+1	421	480
+2	1   60
+2	241   300
diff -r 000000000000 -r 3b6cd8086498 test-data/consensus.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/consensus.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,18 @@
+##fileformat=VCFv4.2
+##FORMAT=
+##INFO=
+##ALT=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NA001
+1	5	.	C	a	.	PASS	.	GT	0/1
+1	5	.	C	t	.	PASS	.	GT	0/1
+1	7	.	T	a	.	PASS	.	GT	.
+1	10	.	G	a	.	PASS	.	GT	0/1
+1	12	.	GACA	ga	.	PASS	.	GT	0/1
+1	16	.	T	taaa	.	PASS	.	GT	1/1
+1	19	.	A	c	.	PASS	.	GT	0/1
+1	61	.	C	a	.	PASS	.	GT	0/1
+2	61	.	AGAG	aa	.	PASS	.	GT	0/1
+2	119	.	AAA	t	.	PASS	.	GT	0/1
+2	179	.	G	gacgtacgt	.	PASS	.	GT	0/1
+2	200	.	A		.	PASS	END=210	GT	1/0
+2	481	.	T	c,a	.	PASS	.	GT	0/2
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.23andme
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.23andme	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,28 @@
+# rsid	chromosome	position	genotype
+rs001	1	2	AA
+rs002	1	10	AG
+rs003	1	14	AG
+rs004	1	24	TC
+rs005	1	44	CG
+rs006	1	53	GG
+rs007	1	60	GG
+rs008	1	62	CC
+rs009	1	75	AA
+rs010	1	80	GG
+rs011	1	89	TT
+rs012	1	96	--
+rs013	1	99	CC
+rs014	1	102	GG
+rs015	1	112	TT
+rs016	2	5	CC
+rs017	2	11	CT
+rs018	2	16	CC
+rs019	2	20	GG
+rs020	2	33	CT
+rs021	2	39	AA
+rs022	2	44	CC
+rs023	2	48	CC
+rs024	2	55	AA
+rs025	2	59	CT
+rs026	Y	12	T
+rs027	Y	20	C
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.gs.gt.gen
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.gs.gt.gen	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,32 @@
+X:2698560_G_A X:2698560_G_A 2698560 G A 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698630_A_G X:2698630_A_G 2698630 A G 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698758_CAA_C X:2698758_CAA_C 2698758 CAA C 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698769_AAG_A X:2698769_AAG_A 2698769 AAG A 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698789_C_G X:2698789_C_G 2698789 C G 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698822_A_C X:2698822_A_C 2698822 A C 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698831_G_A X:2698831_G_A 2698831 G A 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698889_T_C X:2698889_T_C 2698889 T C 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698923_G_A X:2698923_G_A 2698923 G A 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698953_A_AGG X:2698953_A_AGG 2698953 A AGG 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2698954_G_A X:2698954_G_A 2698954 G A 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0
+X:2699002_C_A X:2699002_C_A 2699002 C A 1 0 0 1 0 0 0.33 0.33 0.33 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2699025_T_C X:2699025_T_C 2699025 T C 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2699091_G_A X:2699091_G_A 2699091 G A 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2699187_T_C X:2699187_T_C 2699187 T C 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699188_G_C X:2699188_G_C 2699188 G C 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699189_T_C X:2699189_T_C 2699189 T C 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699217_C_T X:2699217_C_T 2699217 C T 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2699246_C_A X:2699246_C_A 2699246 C A 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0
+X:2699275_T_G X:2699275_T_G 2699275 T G 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699350_A_T X:2699350_A_T 2699350 A T 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699360_T_C X:2699360_T_C 2699360 T C 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699450_A_C X:2699450_A_C 2699450 A C 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699507_T_C X:2699507_T_C 2699507 T C 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2699555_C_A X:2699555_C_A 2699555 C A 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0
+X:2699645_G_T X:2699645_G_T 2699645 G T 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0
+X:2699676_G_A X:2699676_G_A 2699676 G A 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699728_C_T X:2699728_C_T 2699728 C T 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2699775_C_A X:2699775_C_A 2699775 C A 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
+X:2699898_C_CT X:2699898_C_CT 2699898 C CT 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0
+X:2699968_A_G X:2699968_A_G 2699968 A G 0.5 0.0 0.5 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0
+X:2699970_T_C X:2699970_T_C 2699970 T C 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.gs.gt.samples
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.gs.gt.samples	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,12 @@
+ID_1 ID_2 missing
+0 0 0
+NA00001 NA00001 0
+NA00002 NA00002 0
+NA00003 NA00003 0
+NA00004 NA00004 0
+NA00005 NA00005 0
+NA00006 NA00006 0
+NA00007 NA00007 0
+NA00008 NA00008 0
+NA00009 NA00009 0
+NA00010 NA00010 0
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.gvcf.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.gvcf.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,105 @@
+##fileformat=VCFv4.1
+##FILTER=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##FILTER=
+##FILTER=
+##FILTER=
+##FILTER=
+##FILTER=
+##FILTER=
+##FILTER=
+##contig=
+##SnvTheta=0.001
+##IndelTheta=0.0001
+##MaxDepth_1=114.18
+##MaxDepth_10=131.73
+##MaxDepth_11=117.27
+##MaxDepth_12=116.97
+##MaxDepth_13=102.24
+##MaxDepth_14=101.55
+##MaxDepth_15=95.22
+##MaxDepth_16=111.33
+##MaxDepth_17=112.59
+##MaxDepth_18=121.86
+##MaxDepth_19=111.12
+##MaxDepth_2=121.83
+##MaxDepth_20=111.24
+##MaxDepth_21=98.43
+##MaxDepth_22=76.23
+##MaxDepth_3=120.09
+##MaxDepth_4=124.50
+##MaxDepth_5=119.82
+##MaxDepth_6=122.22
+##MaxDepth_7=120.27
+##MaxDepth_8=120.45
+##MaxDepth_9=102.48
+##MaxDepth_M=7005.66
+##MaxDepth_X=61.05
+##MaxDepth_Y=37.17
+##FILTER=
+##gvcftools_version="0.16"
+##FILTER=
+##FORMAT=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	SAMPLE99
+22	1	.	N	.	0	LowGQX	END=9;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	.:.:0:0
+22	10	.	C	.	0	LowGQX	END=20;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:5:2:0
+22	21	.	C	.	0	LowGQX	END=26;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:10:4:0
+22	27	.	C	.	0	LowGQX	END=42;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:15:6:0
+22	43	.	G	.	0	LowGQX	END=50;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:21:8:0
+22	51	.	C	.	0	PASS	END=55;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:30:11:0
+22	56	.	G	.	0	PASS	END=72;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:42:15:0
+22	73	.	T	.	0	PASS	END=85;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:54:19:0
+22	86	.	G	C	23	LowGQX	SNVSB=0;SNVHPOL=2	GT:GQ:GQX:DP:DPF:AD	0/1:56:23:22:0:16,6
+22	87	.	T	.	0	PASS	END=101;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:69:24:0
+22	102	.	A	.	0	PASS	END=140;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:84:29:0
+22	141	.	G	.	0	PASS	END=185;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:90:31:0
+22	186	.	T	.	0	PASS	END=187;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:93:32:2
+22	188	.	T	.	0	PASS	END=204;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:102:35:0
+22	205	.	T	.	0	PASS	.	GT:GQX:DP:DPF	0/0:72:36:0
+22	206	.	T	.	0	PASS	END=231;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:87:30:0
+22	232	.	A	.	0	PASS	END=249;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:66:23:0
+22	250	.	G	.	0	PASS	END=257;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:87:30:0
+22	258	.	A	.	0	PASS	END=269;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:114:39:0
+22	270	.	G	.	0	PASS	END=279;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:150:51:0
+22	280	.	A	.	0	PASS	END=314;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:166:63:0
+22	315	.	C	.	0	PASS	END=316;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:220:74:0
+22	317	.	T	.	0	HighDepth	END=342;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:229:77:0
+22	343	.	T	.	0	HighDepth	END=377;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:241:81:0
+22	378	.	T	.	0	HighDepth	END=384;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:200:75:0
+22	385	.	G	.	0	PASS	END=388;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:217:73:0
+22	389	.	C	.	0	HighDepth	END=390;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:223:75:0
+22	391	.	T	.	0	PASS	.	GT:GQX:DP:DPF	0/0:223:75:1
+22	392	.	T	.	0	HighDepth	END=397;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:223:75:0
+22	398	.	T	.	0	PASS	END=420;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:178:60:0
+22	421	.	C	.	0	PASS	END=450;BLOCKAVG_min30p3a	GT:GQX:DP:DPF	0/0:142:54:0
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.hls.gt.hap
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.hls.gt.hap	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,35 @@
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0
+0 0 0 0 ? ? 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0* 1*
+0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+1 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0
+0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1
+0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 - 1 - 1 - 0 - 1 - 1 1 1 0 0 1 0 0 0 1
+0 - 1 - 0 - 0 - 0 - 0 0 0 0 0 1 0 0 0 0
+0 - 0 - 1 - 0 - 1 - 1 0 1 0 0 0 0 0 0 1
+0 - 0 - 0 - 0 - 0 - 0 0 0 0 0 0 0 0 0 0
+0 - 0 - 0 - 0 - 0 - 0 0 0 0 0 0 0 0 0 0
+0 - 0 - 1 - 0 - 1 - 1 0 1 0 0 0 0 0 0 1
+? - 0 - 0 - 1 - 0 - 0 1 0 0 0 0 0 1 1 0
+0 - 0 - 0 - 0 - 0 - 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.hls.gt.legend
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.hls.gt.legend	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,36 @@
+id position a0 a1
+X:2698560_G_A 2698560 G A
+X:2698630_A_G 2698630 A G
+X:2698758_CAA_C 2698758 CAA C
+X:2698769_AAG_A 2698769 AAG A
+X:2698770_AG_A 2698770 AG A
+X:2698770_AG_AAGG 2698770 AG AAGG
+X:2698789_C_G 2698789 C G
+X:2698822_A_C 2698822 A C
+X:2698831_G_A 2698831 G A
+X:2698889_T_C 2698889 T C
+X:2698923_G_A 2698923 G A
+X:2698953_A_AGG 2698953 A AGG
+X:2698954_G_A 2698954 G A
+X:2699002_C_A 2699002 C A
+X:2699025_T_C 2699025 T C
+X:2699091_G_A 2699091 G A
+X:2699187_T_C 2699187 T C
+X:2699188_G_C 2699188 G C
+X:2699189_T_C 2699189 T C
+X:2699217_C_T 2699217 C T
+X:2699246_C_A 2699246 C A
+X:2699275_T_G 2699275 T G
+X:2699350_A_T 2699350 A T
+X:2699360_T_C 2699360 T C
+X:2699450_A_C 2699450 A C
+X:2699507_T_C 2699507 T C
+X:2699555_C_A 2699555 C A
+X:2699645_G_T 2699645 G T
+X:2699676_G_A 2699676 G A
+X:2699728_C_T 2699728 C T
+X:2699775_C_A 2699775 C A
+X:2699898_C_CT 2699898 C CT
+X:2699968_A_G 2699968 A G
+X:2699970_T_C 2699970 T C
+X:2699990_C__2700054 2699990 C 
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.hls.gt.samples
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.hls.gt.samples	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,11 @@
+sample population group sex
+NA00001 NA00001 NA00001 2
+NA00002 NA00002 NA00002 2
+NA00003 NA00003 NA00003 2
+NA00004 NA00004 NA00004 2
+NA00005 NA00005 NA00005 2
+NA00006 NA00006 NA00006 2
+NA00007 NA00007 NA00007 2
+NA00008 NA00008 NA00008 2
+NA00009 NA00009 NA00009 2
+NA00010 NA00010 NA00010 2
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.hs.gt.hap
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.hs.gt.hap	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,35 @@
+X:2698560_G_A X:2698560_G_A 2698560 G A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698630_A_G X:2698630_A_G 2698630 A G 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698758_CAA_C X:2698758_CAA_C 2698758 CAA C 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698769_AAG_A X:2698769_AAG_A 2698769 AAG A 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
+X:2698770_AG_A X:2698770_AG_A 2698770 AG A 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
+X:2698770_AG_AAGG X:2698770_AG_AAGG 2698770 AG AAGG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698789_C_G X:2698789_C_G 2698789 C G 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698822_A_C X:2698822_A_C 2698822 A C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698831_G_A X:2698831_G_A 2698831 G A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698889_T_C X:2698889_T_C 2698889 T C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698923_G_A X:2698923_G_A 2698923 G A 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
+X:2698953_A_AGG X:2698953_A_AGG 2698953 A AGG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2698954_G_A X:2698954_G_A 2698954 G A 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0
+X:2699002_C_A X:2699002_C_A 2699002 C A 0 0 0 0 ? ? 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2699025_T_C X:2699025_T_C 2699025 T C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2699091_G_A X:2699091_G_A 2699091 G A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2699187_T_C X:2699187_T_C 2699187 T C 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0* 1*
+X:2699188_G_C X:2699188_G_C 2699188 G C 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+X:2699189_T_C X:2699189_T_C 2699189 T C 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+X:2699217_C_T X:2699217_C_T 2699217 C T 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2699246_C_A X:2699246_C_A 2699246 C A 1 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0
+X:2699275_T_G X:2699275_T_G 2699275 T G 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1
+X:2699350_A_T X:2699350_A_T 2699350 A T 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+X:2699360_T_C X:2699360_T_C 2699360 T C 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+X:2699450_A_C X:2699450_A_C 2699450 A C 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
+X:2699507_T_C X:2699507_T_C 2699507 T C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+X:2699555_C_A X:2699555_C_A 2699555 C A 0 - 1 - 1 - 0 - 1 - 1 1 1 0 0 1 0 0 0 1
+X:2699645_G_T X:2699645_G_T 2699645 G T 0 - 1 - 0 - 0 - 0 - 0 0 0 0 0 1 0 0 0 0
+X:2699676_G_A X:2699676_G_A 2699676 G A 0 - 0 - 1 - 0 - 1 - 1 0 1 0 0 0 0 0 0 1
+X:2699728_C_T X:2699728_C_T 2699728 C T 0 - 0 - 0 - 0 - 0 - 0 0 0 0 0 0 0 0 0 0
+X:2699775_C_A X:2699775_C_A 2699775 C A 0 - 0 - 0 - 0 - 0 - 0 0 0 0 0 0 0 0 0 0
+X:2699898_C_CT X:2699898_C_CT 2699898 C CT 0 - 0 - 1 - 0 - 1 - 1 0 1 0 0 0 0 0 0 1
+X:2699968_A_G X:2699968_A_G 2699968 A G ? - 0 - 0 - 1 - 0 - 0 1 0 0 0 0 0 1 1 0
+X:2699970_T_C X:2699970_T_C 2699970 T C 0 - 0 - 0 - 0 - 0 - 0 0 0 0 0 0 0 0 0 0
+X:2699990_C__2700054 X:2699990_C__2700054 2699990 C  0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.hs.gt.samples
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.hs.gt.samples	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,12 @@
+ID_1 ID_2 missing
+0 0 0
+NA00001 NA00001 0
+NA00002 NA00002 0
+NA00003 NA00003 0
+NA00004 NA00004 0
+NA00005 NA00005 0
+NA00006 NA00006 0
+NA00007 NA00007 0
+NA00008 NA00008 0
+NA00009 NA00009 0
+NA00010 NA00010 0
diff -r 000000000000 -r 3b6cd8086498 test-data/convert.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/convert.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,40 @@
+##fileformat=VCFv4.1
+##FILTER=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##contig=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	NA00001	NA00002	NA00003	NA00004	NA00005	NA00006	NA00007	NA00008	NA00009	NA00010
+X	2698560	.	G	A	102	.	.	GT:PL:GP	0|0:0,21,177:1,0,0	0|0:0,30,206:1,0,0	0|0:0,21,177:1,0,0	0|0:0,15,132:1,0,0	0|0:0,9,90:1,0,0	0|0:0,15,114:1,0,0	0|0:0,15,118:1,0,0	0|0:0,15,133:1,0,0	0|0:0,15,144:1,0,0	0|0:0,24,191:1,0,0
+X	2698630	.	A	G	537	.	.	GT:PL:GP	0|0:0,21,186:1,0,0	0|0:0,21,176:1,0,0	0|0:0,15,106:1,0,0	0|0:0,18,127:1,0,0	0|0:0,6,62:1,0,0	0|0:0,15,146:1,0,0	0|0:0,18,141:1,0,0	0|0:0,21,173:1,0,0	0|0:0,12,119:1,0,0	0|0:0,15,145:1,0,0
+X	2698758	.	CAA	C	999	.	.	GT:PL:GP	0|0:0,6,16:0.8292,0.1708,0	0|1:0,0,0:0.0278,0.5743,0.3979	0|0:0,0,0:0.6336,0.3664,0	0|0:0,3,8:0.8611,0.1389,0	0|0:0,0,8:0.7628,0.2372,0	0|0:0,9,18:1,0,0	0|0:0,9,23:1,0,0	0|0:0,9,15:0.9855,0.0145,0	0|0:0,6,10:1,0,0	0|0:0,21,33:1,0,0
+X	2698769	.	AAG	A	999	.	.	GT:PL:GP	1|0:17,0,7:0.0069,0.9931,0	1|1:0,0,0:0.0004,0.0892,0.9104	0|1:17,3,0:0.0045,0.9954,0.0001	1|0:11,0,2:0.0085,0.9915,0	1|0:11,0,15:0.0003,0.9997,0	0|0:0,15,40:1,0,0	0|0:0,9,23:1,0,0	0|0:0,15,25:0.8474,0.1526,0	0|0:0,15,34:1,0,0	0|0:0,33,56:1,0,0
+X	2698770	.	AG	A,AAGG	999	.	.	GT:PL:GP	0|0:0,12,103,12,103,103:0.925,0.0717,0,0.0033,0,0	0|1:0,3,21,3,21,21:0.4944,0.368,0.0018,0.1343,0.0013,0.0002	0|0:0,0,0,0,0,0:0.5458,0.4085,0,0.0457,0,0	0|0:0,3,36,3,36,36:0.8126,0.1758,0,0.0116,0,0	1|0:37,0,86,49,92,130:0,1,0,0,0,0	0|0:0,15,125,15,125,125:1,0,0,0,0,0	0|0:0,9,105,9,105,105:1,0,0,0,0,0	0|0:0,15,109,15,109,109:0.9964,0.0034,0,0.0002,0,0	0|0:0,15,137,15,137,137:1,0,0,0,0,0	0|0:0,33,215,33,215,215:1,0,0,0,0,0
+X	2698789	.	C	G	153	.	.	GT:PL:GP	0|0:0,21,152:1,0,0	0|0:0,21,131:1,0,0	0|0:0,12,113:1,0,0	0|0:0,12,104:1,0,0	0|0:0,21,137:1,0,0	0|0:0,15,118:0.9999,0.0001,0	0|0:0,15,111:1,0,0	0|0:0,24,152:1,0,0	0|0:0,18,147:1,0,0	0|0:0,33,183:1,0,0
+X	2698822	.	A	C	85.2	.	.	GT:PL:GP	0|0:0,21,167:1,0,0	0|0:0,21,171:1,0,0	0|0:0,21,158:1,0,0	0|0:0,18,154:1,0,0	0|0:0,15,135:1,0,0	0|0:0,15,132:1,0,0	0|0:0,21,168:1,0,0	0|0:0,21,175:1,0,0	0|0:0,15,142:1,0,0	0|0:0,21,172:1,0,0
+X	2698831	.	G	A	303	.	.	GT:PL:GP	0|0:0,15,129:1,0,0	0|0:0,27,179:1,0,0	0|0:0,24,196:1,0,0	0|0:0,21,158:1,0,0	0|0:0,18,154:1,0,0	0|0:0,12,112:1,0,0	0|0:0,24,162:1,0,0	0|0:0,21,168:1,0,0	0|0:0,9,95:1,0,0	0|0:0,21,164:1,0,0
+X	2698889	.	T	C	74.4	.	.	GT:PL:GP	0|0:0,27,193:1,0,0	0|0:0,45,255:1,0,0	0|0:0,21,190:1,0,0	0|0:0,36,254:1,0,0	0|0:0,30,226:1,0,0	0|0:0,36,253:1,0,0	0|0:0,18,156:1,0,0	0|0:0,9,87:1,0,0	0|0:0,9,98:1,0,0	0|0:0,24,205:1,0,0
+X	2698923	.	G	A	999	.	.	GT:PL:GP	1|0:62,0,133:0,1,0	0|1:164,0,91:0,1,0	0|1:35,0,73:0,1,0	1|0:91,0,108:0,1,0	1|0:67,0,71:0,1,0	0|0:0,30,187:1,0,0	0|0:0,9,73:1,0,0	0|0:0,12,99:1,0,0	0|0:0,18,153:1,0,0	0|0:0,18,138:1,0,0
+X	2698953	.	A	AGG	267	.	.	GT:PL:GP	0|0:0,27,111:1,0,0	0|0:0,33,124:1,0,0	0|0:0,12,62:1,0,0	0|0:0,15,86:1,0,0	0|0:0,12,58:1,0,0	0|0:0,15,69:1,0,0	0|0:0,6,34:1,0,0	0|0:0,18,83:1,0,0	0|0:0,18,80:1,0,0	0|0:0,15,74:1,0,0
+X	2698954	.	G	A	999	.	.	GT:PL:GP	1|0:69,0,139:0,1,0	1|1:199,24,0:0,0,1	0|1:15,0,82:0,1,0	1|0:32,0,76:0,1,0	1|0:16,0,80:0,1,0	0|0:0,15,131:1,0,0	0|0:0,6,58:1,0,0	0|1:99,0,39:0,1,0	0|0:0,18,163:1,0,0	0|0:0,15,136:1,0,0
+X	2699002	.	C	A	65.1	.	.	GT:PL:GP	0|0:0,18,144:1,0,0	0|0:0,12,115:1,0,0	.|.:0,12,120:1,0,0	0|0:0,15,131:1,0,0	0|0:0,6,29:1,0,0	0|0:0,9,95:1,0,0	0|0:0,9,79:1,0,0	0|0:0,24,188:1,0,0	0|0:0,15,124:1,0,0	0|0:0,9,93:1,0,0
+X	2699025	.	T	C	44.9	.	.	GT:PL:GP	0|0:0,24,189:1,0,0	0|0:0,12,98:1,0,0	0|0:0,15,130:1,0,0	0|0:0,15,113:1,0,0	0|0:0,6,63:1,0,0	0|0:0,24,198:1,0,0	0|0:0,12,92:1,0,0	0|0:0,24,197:1,0,0	0|0:0,9,97:1,0,0	0|0:0,12,108:1,0,0
+X	2699091	.	G	A	45	.	.	GT:PL:GP	0|0:0,18,162:1,0,0	0|0:0,21,153:1,0,0	0|0:0,12,101:1,0,0	0|0:0,12,97:1,0,0	0|0:0,24,188:1,0,0	0|0:0,24,194:1,0,0	0|0:0,15,127:1,0,0	0|0:0,21,169:1,0,0	0|0:0,15,129:1,0,0	0|0:0,21,171:1,0,0
+X	2699187	.	T	C	999	.	.	GT:PL:GP	0|0:0,24,200:1,0,0	0|0:0,24,191:1,0,0	1|0:48,0,85:0,1,0	0|0:0,15,145:1,0,0	0|1:58,0,45:0,1,0	1|0:61,0,50:0,1,0	1|0:22,0,51:0,1,0	0|0:0,27,211:1,0,0	0|0:0,9,96:0.9999,0.0001,0	0/1:23,0,160:0,1,0
+X	2699188	.	G	C	999	.	.	GT:PL:GP	0|0:0,24,194:1,0,0	0|0:0,24,167:1,0,0	1|0:48,0,78:0,1,0	0|0:0,15,131:1,0,0	0|1:63,0,40:0,1,0	1|0:50,0,44:0,1,0	1|0:22,0,48:0,1,0	0|0:0,27,212:1,0,0	0|0:0,9,87:0.9999,0.0001,0	0|1:23,0,154:0,1,0
+X	2699189	.	T	C	999	.	.	GT:PL:GP	0|0:0,24,199:1,0,0	0|0:0,24,176:1,0,0	1|0:44,0,87:0,1,0	0|0:0,15,136:1,0,0	0|1:62,0,46:0,1,0	1|0:61,0,46:0,1,0	1|0:22,0,49:0,1,0	0|0:0,27,212:1,0,0	0|0:0,9,93:0.9999,0.0001,0	0|1:23,0,164:0,1,0
+X	2699217	.	C	T	60.3	.	.	GT:PL:GP	0|0:0,18,158:1,0,0	0|0:0,18,119:1,0,0	0|0:0,21,152:1,0,0	0|0:0,21,162:1,0,0	0|0:0,12,102:1,0,0	0|0:0,18,144:1,0,0	0|0:0,12,108:1,0,0	0|0:0,18,146:1,0,0	0|0:0,12,98:1,0,0	0|0:0,18,155:1,0,0
+X	2699246	.	C	A	999	.	.	GT:PL:GP	1|0:128,0,15:0,0.9998,0.0002	1|1:147,21,0:0,0.0001,0.9999	0|1:130,0,5:0,0.9977,0.0023	1|1:237,33,0:0,0,1	1|0:45,0,75:0,1,0	0|1:145,0,49:0,1,0	0|0:0,15,109:1,0,0	0|1:13,0,63:0.0002,0.9998,0	0|0:0,30,178:0.9953,0.0047,0	1|0:120,0,57:0,1,0
+X	2699275	.	T	G	999	.	.	GT:PL:GP	0|0:0,18,165:0.9998,0.0002,0	0|0:0,18,152:1,0,0	1|0:0,9,95:0.0023,0.9977,0	0|0:0,33,239:1,0,0	0|1:125,0,40:0,1,0	1|1:205,27,0:0,0,1	1|0:69,0,43:0,1,0	0|0:0,15,139:1,0,0	0|0:0,30,219:1,0,0	0|1:96,0,54:0,1,0
+X	2699350	.	A	T	999	.	.	GT:PL:GP	0|0:0,27,206:1,0,0	0|0:0,15,139:1,0,0	1|0:54,0,25:0,1,0	0|0:0,12,117:0.9996,0.0004,0	0|1:79,0,73:0,1,0	1|0:48,0,82:0,1,0	1|0:68,0,45:0,1,0	0|0:0,30,216:1,0,0	0|0:0,27,224:1,0,0	0|1:48,0,80:0,1,0
+X	2699360	.	T	C	999	.	.	GT:PL:GP	0|0:0,21,184:1,0,0	0|0:0,15,133:1,0,0	1|0:53,0,21:0,1,0	0|0:0,12,114:0.9996,0.0004,0	0|1:20,0,66:0,1,0	1|0:40,0,93:0,1,0	1|0:52,0,66:0,1,0	0|0:0,30,220:1,0,0	0|0:0,21,191:1,0,0	0|1:20,0,83:0,1,0
+X	2699450	.	A	C	999	.	.	GT:PL:GP	0|0:0,12,124:1,0,0	0|0:0,6,55:0.9976,0.0024,0	1|0:99,0,42:0,1,0	0|0:0,21,186:0.9999,0.0001,0	0|1:64,0,100:0,1,0	1|0:38,0,177:0,1,0	1|0:16,0,103:0,1,0	0|0:0,24,202:1,0,0	0|0:0,12,119:1,0,0	0|1:75,0,115:0,1,0
+X	2699507	.	T	C	195	.	.	GT:PL:GP	0|0:0,15,133:1,0,0	0|0:0,12,122:1,0,0	0|0:0,6,60:1,0,0	0|0:0,18,123:1,0,0	0|0:0,15,145:1,0,0	0|0:0,21,173:1,0,0	0|0:0,21,178:1,0,0	0|0:0,24,200:1,0,0	0|0:0,12,125:1,0,0	0|0:0,24,189:1,0,0
+X	2699555	.	C	A	999	.	.	GT:PL:GP	0:0,156:1,0	1:58,19:0,1	1:51,0:0,1	0:0,91:1,0	1:89,0:0,1	1|1:132,15,0:0,0,1	1|0:99,0,68:0,1,0	0|1:101,0,101:0,1,0	0|0:0,18,161:0.9998,0.0002,0	0|1:118,0,72:0,1,0
+X	2699645	.	G	T	999	.	.	GT:PL:GP	0:0,95:1,0	1:49,0:0,1	0:0,58:1,0	0:0,64:1,0	0:0,113:1,0	0|0:0,18,158:1,0,0	0|0:0,18,146:1,0,0	0|1:68,0,136:0,1,0	0|0:0,30,210:1,0,0	0|0:0,27,186:1,0,0
+X	2699676	.	G	A	999	.	.	GT:PL:GP	0:0,84:1,0	0:0,87:1,0	1:35,0:0,1	0:0,28:1,0	1:114,0:0,1	1|0:99,0,72:0,1,0	1|0:48,0,89:0,1,0	0|0:0,18,155:1,0,0	0|0:0,24,191:1,0,0	0|1:99,0,61:0,1,0
+X	2699728	.	C	T	69.7	.	.	GT:PL:GP	0:0,58:1,0	0:0,64:1,0	0:0,33:1,0	0:0,69:1,0	0:0,81:1,0	0|0:0,27,183:1,0,0	0|0:0,45,220:1,0,0	0|0:0,30,161:1,0,0	0|0:0,15,110:1,0,0	0|0:0,21,156:1,0,0
+X	2699775	.	C	A	71.1	.	.	GT:PL:GP	0:0,62:1,0	0:0,101:1,0	0:0,130:1,0	0:0,141:1,0	0:0,54:1,0	0|0:0,30,203:1,0,0	0|0:0,39,208:1,0,0	0|0:0,30,177:1,0,0	0|0:0,18,132:1,0,0	0|0:0,15,103:1,0,0
+X	2699898	.	C	CT	999	.	.	GT:PL:GP	0:0,32:1,0	0:0,11:1,0	1:11,0:0,1	0:0,11:1,0	1:31,0:0,1	1|0:11,0,24:0.0438,0.9562,0	1|0:8,0,17:0,1,0	0|0:0,33,72:1,0,0	0|0:0,27,69:1,0,0	0|1:11,4,12:0.0003,0.9997,0
+X	2699968	.	A	G	999	.	.	GT:PL:GP	.:0,84:1,0	0:0,32:1,0	0:0,57:1,0	1:131,0:0,1	0:0,66:1,0	0|1:89,0,44:0,1,0	0|0:0,18,157:1,0,0	0|0:0,45,255:1,0,0	0|1:75,0,109:0,1,0	1|0:98,0,62:0,1,0
+X	2699970	.	T	C	55.3	.	.	GT:PL:GP	0:0,68:1,0	0:0,34:1,0	0:0,32:1,0	0:0,162:1,0	0:0,63:1,0	0|0:0,15,149:1,0,0	0|0:0,21,181:1,0,0	0|0:0,45,255:1,0,0	0|0:0,27,207:1,0,0	0|0:0,24,196:1,0,0
diff -r 000000000000 -r 3b6cd8086498 test-data/csq.fa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/csq.fa	Sat Jul 23 13:49:21 2022 +0000
@@ -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
+
diff -r 000000000000 -r 3b6cd8086498 test-data/csq.gff3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/csq.gff3	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,40 @@
+##gff-version   3
+#! This file shows which fields are used and required by `bcftools +csq`. It is a trimmed version 
+#! of the GFF3 format, see an example of the full format here
+#!      ftp://ftp.ensembl.org/pub/grch37/release-84/gff3/homo_sapiens/
+#!
+###
+1	.	gene	90	200	.	+	.	ID=gene:ENSG00000000001;Name=XYZ;biotype=protein_coding
+1	.	transcript	90	200	.	+	.	ID=transcript:ENST00000000001;Parent=gene:ENSG00000000001;biotype=protein_coding
+1	.	exon	90	110	.	+	.	Parent=transcript:ENST00000000001
+1	.	five_prime_UTR	90	98	.	+	.	Parent=transcript:ENST00000000001
+1	.	CDS	99	110	.	+	1	Parent=transcript:ENST00000000001
+1	.	exon	120	130	.	+	.	Parent=transcript:ENST00000000001
+1	.	CDS	120	130	.	+	1	Parent=transcript:ENST00000000001
+1	.	exon	140	150	.	+	.	Parent=transcript:ENST00000000001
+1	.	CDS	140	150	.	+	2	Parent=transcript:ENST00000000001
+1	.	exon	160	200	.	+	.	Parent=transcript:ENST00000000001
+1	.	CDS	160	171	.	+	0	Parent=transcript:ENST00000000001
+1	.	three_prime_UTR	172	200	.	+	.	Parent=transcript:ENST00000000001
+2	.	gene	80	200	.	-	.	ID=gene:ENSG00000000002;Name=ABC;biotype=protein_coding
+2	.	transcript	80	200	.	-	.	ID=transcript:ENST00000000002;Parent=gene:ENSG00000000002;biotype=protein_coding
+2	.	exon	80	110	.	-	.	Parent=transcript:ENST00000000002
+2	.	three_prime_UTR	80	98	.	-	.	Parent=transcript:ENST00000000002
+2	.	CDS	99	110	.	-	0	Parent=transcript:ENST00000000002
+2	.	exon	120	130	.	-	.	Parent=transcript:ENST00000000002
+2	.	CDS	120	130	.	-	2	Parent=transcript:ENST00000000002
+2	.	exon	140	150	.	-	.	Parent=transcript:ENST00000000002
+2	.	CDS	140	150	.	-	1	Parent=transcript:ENST00000000002
+2	.	exon	160	200	.	-	.	Parent=transcript:ENST00000000002
+2	.	CDS	160	171	.	-	1	Parent=transcript:ENST00000000002
+2	.	five_prime_UTR	172	200	.	-	.	Parent=transcript:ENST00000000002
+3	.	lincRNA_gene	20	50	.	-	.	ID=gene:ENSG00000000004;Name=mir-007;biotype=lincRNA
+3	.	lincRNA	20	50	.	-	.	ID=transcript:ENSG00000000004;Parent=gene:ENSG00000000004;biotype=lincRNA
+3	.	gene	100	200	.	-	.	ID=gene:ENSG00000000003;Name=QWRTY;biotype=protein_coding
+3	.	transcript	100	200	.	-	.	ID=transcript:ENST00000000003;Parent=gene:ENSG00000000003;biotype=protein_coding
+3	.	exon	100	110	.	-	.	Parent=transcript:ENST00000000003
+3	.	three_prime_UTR	100	105	.	-	.	Parent=transcript:ENST00000000003
+3	.	CDS	106	110	.	-	0	Parent=transcript:ENST00000000003
+3	.	exon	160	200	.	-	.	Parent=transcript:ENST00000000003
+3	.	CDS	160	171	.	-	0	Parent=transcript:ENST00000000003
+3	.	five_prime_UTR	172	200	.	-	.	Parent=transcript:ENST00000000003
diff -r 000000000000 -r 3b6cd8086498 test-data/csq.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/csq.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,40 @@
+##fileformat=VCFv4.2
+##FORMAT=
+##INFO=
+##contig=
+##contig=
+##contig=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	SmplAAA	SmplBBB
+1	90	.	C	T	.	.	EXP=5_prime_utr|XYZ|ENST00000000001|protein_coding	GT	1|0	1|1
+1	102	.	C	T	1	.	EXP=synonymous|XYZ|ENST00000000001|protein_coding|+|1Y|102C>T	GT	1|0	1|0
+1	103	.	G	A	1	.	EXP=missense|XYZ|ENST00000000001|protein_coding|+|2V>2I|103G>A	GT	1|0	0|0
+1	103	.	G	C	1	.	EXP=missense|XYZ|ENST00000000001|protein_coding|+|2V>2L|103G>C	GT	0|0	1|0
+1	107	.	G	A	1	.	EXP=missense|XYZ|ENST00000000001|protein_coding|+|3R>3Q|107G>A+108T>A	GT	1|0	1|0
+1	108	.	T	A	1	.	EXP=splice_region|XYZ|ENST00000000001|protein_coding,@107	GT	1|0	1|0
+1	121	.	ACG	A	.	.	EXP=inframe_deletion|XYZ|ENST00000000001|protein_coding|+|5TY>5I|121ACG>A+124TA>T,splice_region|XYZ|ENST00000000001|protein_coding	GT	1|0	1|0
+1	124	.	TA	T	.	.	EXP=@121	GT	1|0	1|0
+1	128	.	T	C	1	.	EXP=missense|XYZ|ENST00000000001|protein_coding|+|7V>6A|128T>C+129A>C,splice_region|XYZ|ENST00000000001|protein_coding	GT	1|0	0/0
+1	129	.	A	C	1	.	EXP=splice_region|XYZ|ENST00000000001|protein_coding,@128	GT	1|0	0/0
+1	140	.	TA	AACG	.	.	EXP=inframe_insertion|XYZ|ENST00000000001|protein_coding|+|8LR>7QRR|140TA>AACG+142C>CC,splice_region|XYZ|ENST00000000001|protein_coding	GT	1|0	0|0
+1	142	.	C	CC	.	.	EXP=splice_region|XYZ|ENST00000000001|protein_coding,@140	GT	1|0	0|0
+1	145	.	AC	TA	.	.	EXP=stop_gained|XYZ|ENST00000000001|protein_coding|+|10T>10*|145AC>TA	GT	1|0	0|0
+1	160	.	TA	T	.	.	EXP=*frameshift|XYZ|ENST00000000001|protein_coding|+|12YVRT>12SYV|160TA>T,splice_region|XYZ|ENST00000000001|protein_coding	GT	1|0	0|0
+1	190	.	C	T	.	.	EXP=3_prime_utr|XYZ|ENST00000000001|protein_coding	GT	1|0	0|0
+2	97	.	A	C	.	.	EXP=3_prime_utr|ABC|ENST00000000002|protein_coding	GT	1|0	0|0
+2	105	.	AC	A	.	.	EXP=@121	GT	1|0	0|0
+2	121	.	AC	A	.	.	EXP=frameshift|ABC|ENST00000000002|protein_coding|-|11VVRTY>11*|105AC>A+121AC>A,splice_region|ABC|ENST00000000002|protein_coding	GT	1|0	0|0
+2	126	.	C	CTT	.	.	EXP=@127	GT	1|0	0|0
+2	127	.	G	GG	.	.	EXP=inframe_insertion|ABC|ENST00000000002|protein_coding|-|9T>8TK|126C>CTT+127G>GG	GT	1|0	0|0
+2	144	.	TAC	T	.	.	EXP=@148	GT	1|0	0|0
+2	148	.	TA	T	.	.	EXP=inframe_deletion|ABC|ENST00000000002|protein_coding|-|5YV>5T|144TAC>T+148TA>T,splice_region|ABC|ENST00000000002|protein_coding	GT	1|0	0|0
+2	164	.	T	G	.	.	EXP=missense|ABC|ENST00000000002|protein_coding|-|3T>3P|164T>G	GT	1|0	0|0
+2	165	.	A	C	.	.	EXP=synonymous|ABC|ENST00000000002|protein_coding|-|2R|165A>C	GT	1|0	0|0
+2	169	.	A	G	.	.	EXP=@170	GT	1|0	0|0
+2	170	.	C	T	.	.	EXP=missense|ABC|ENST00000000002|protein_coding|-|1V>1T|169A>G+170C>T	GT	1|0	0|0
+2	199	.	G	T	.	.	EXP=5_prime_utr|ABC|ENST00000000002|protein_coding	GT	1|0	0|0
+3	20	.	T	A	.	.	EXP=non_coding|mir-007||lincRNA	GT	1|0	0|0
+3	109	.	ACGTACGT	A	1	.	EXP=splice_acceptor|QWRTY|ENST00000000003|protein_coding	GT	1|0	0|0
+3	113	.	A	T	.	.	EXP=splice_region|QWRTY|ENST00000000003|protein_coding	GT	1|0	0|0
+3	120	.	T	A	.	.	EXP=intron|QWRTY||protein_coding	GT	1|0	0|0
+3	152	.	T	A	.	.	EXP=splice_region|QWRTY|ENST00000000003|protein_coding	GT	1|0	0|0
+3	159	.	G	A	.	.	EXP=splice_donor|QWRTY|ENST00000000003|protein_coding	GT	1|0	0|0
diff -r 000000000000 -r 3b6cd8086498 test-data/fasta_indexes.loc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fasta_indexes.loc	Sat Jul 23 13:49:21 2022 +0000
@@ -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
diff -r 000000000000 -r 3b6cd8086498 test-data/filter.1.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filter.1.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,33 @@
+##fileformat=VCFv4.1
+##INFO=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##test=
+##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
+##contig=
+##contig=
+##INFO=
+##INFO=
+##readme=AAAAAA
+##readme=BBBBBB
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A
+1	1000	.	G	A	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	1001	.	G	A	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	1003	.	GT	G	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	1006	.	G	A	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	1007	.	G	A	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	2000	.	T	C	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	2001	.	T	C	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	2003	.	T	TC	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	2005	.	T	C	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+1	2006	.	T	C	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+2	1001	.	GT	G	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+2	1004	.	GT	G	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+2	1008	.	GT	G	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+2	2001	.	A	AT	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+2	2003	.	A	AT	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
+2	2006	.	A	AT	1806	.	DP=35;DP4=1,2,3,4;AN=2;AC=1	GT:GQ:DP:GL	0/1:409:35:-20,-5,-20
diff -r 000000000000 -r 3b6cd8086498 test-data/filter.2.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filter.2.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,36 @@
+##fileformat=VCFv4.1
+##INFO=
+##FORMAT=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##FILTER=
+##contig=
+##contig=
+##contig=
+##contig=
+##reference=file:///lustre/scratch105/projects/g1k/ref/main_project/human_g1k_v37.fasta
+##readme=AAAAAA
+##readme=BBBBBB
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+#CHROM	POS	ID	REF	ALT	QUAL	FILTER	INFO	FORMAT	A	B
+1	3000150	.	C	T	59.2	PASS	AN=4;AC=2	GT:GQ	0/1:245	0/1:245
+1	3000151	.	C	T	59.2	PASS	AN=4;AC=2	GT:DP:GQ	0/1:32:245	0/1:32:245
+1	3062915	id3D	GTTT	G	12.9	q10	DP4=1,2,3,4;AN=4;AC=2;INDEL;STR=test	GT:GQ:DP:GL	0/1:25:35:-20,-5,-20	0/1:45:11:-20,-5,-20
+1	3062915	idSNP	G	T,C	12.6	test	TEST=5;DP4=1,2,3,4;AN=3;AC=1,1	GT:TT:GQ:DP:GL	0/1:0,1:409:35:-20,-5,-20,-20,-5,-20	2:0,1:409:35:-20,-5,-20
+1	3106154	.	CAAA	C	342	PASS	AN=4;AC=2	GT:GQ:DP	0/1:245:32	0/1:25:300
+1	3106154	.	C	CT	59.2	PASS	AN=4;AC=2	GT:GQ:DP	0/1:25:12	0/1:245:310
+1	3157410	.	GA	G	90.6	q10	AN=4;AC=4	GT:GQ:DP	1/1:21:21	1/1:21:21
+1	3162006	.	GAA	G	60.2	PASS	AN=4;AC=2	GT:GQ:DP	0/1:212:22	0/1:212:22
+1	3177144	.	G	T	45	PASS	AN=4;AC=2	GT:GQ:DP	0/0:150:30	1/1:150:30
+1	3177144	.	G	.	45	PASS	AN=4;AC=0	GT:GQ:DP	0/0:150:30	0/0:150:30
+1	3184885	.	TAAAA	TA,T	61.5	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:12:10	1/2:12:20
+2	3199812	.	G	GTT,GT	82.7	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:322:20	1/2:322:10
+3	3212016	.	CTT	C,CT	79	PASS	AN=4;AC=2,2	GT:GQ:DP	1/2:91:26	1/2:91:26
+4	3258448	.	TACACACAC	T	59.9	PASS	AN=4;AC=2	GT	0/1	0/1
diff -r 000000000000 -r 3b6cd8086498 test-data/filter.3.vcf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filter.3.vcf	Sat Jul 23 13:49:21 2022 +0000
@@ -0,0 +1,42 @@
+##fileformat=VCFv4.2
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##INFO=
+##SAMPLE=\") quoting nonsense where double brackets would do just fine",softwareName=,softwareVer=<119,65>,softwareParam=<.>,MetadataResource=http://somewhere.com/path>
+##INFO=
+##INFO=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FORMAT=
+##FILTER=
+##contig=