This program takes VCF files as input. It builds a PBWT through insertion of all haplotypes in the input VCF, then deletes haplotypes randomly until a user specified amount of haplotypes are left. The run time for all insertions and deletions are outputted. The number of u and v pointer updates per operation is also outputted. It is recommended for multiallelic sites to be removed from the input VCF. If multiallelic sites are not removed, the code will take 0 as 0 and any other allele as 1. Site 0 is the top most site in the vcf and haplotype 0 is the left most haplotype in the vcf. The algorithms used are presented in https://www.biorxiv.org/content/10.1101/2020.01.14.906487v1.

Compile with std=c++17 or higher. The following command may be used:
g++ -O3 -std=c++17 -o exedpbwt_fullindel.exe dpbwt_fullindel.cpp 

Sample Usage:
./exedpbwt_fullindel.exe -i example.vcf -o example_fullindelTime.txt -n 1 

options:
-i, input VCF file for the panel, default is panel.vcf
-n, number of haplotypes to keep in the d-PBWT. After insertion of every haplotype in the input panel, haplotypes will be deleted randomly until n haplotypes are left in the d-PBWT. Must be >= 0 and <= number of haplotypes in the input file.
-o output file for time and u and v pointers updated per operation, default is fullindel_dpbwt_time.txt.
-h, help
no parameters, help
