#!/usr/bin/bash

# runs vcfbub to flatten a multilevel vcf, then vcfwave to realign alleles to reference
# (this has been used to

# PROTIP:  run from inside docker to get the tools
# docker run -it --rm -v $(pwd)/:/data --user $(id -u):$(id -g) ghcr.io/pangenome/pggb:202402032147026ffe7f bash -c ./vcf-bubwave.sh

# From https://github.com/ComparativeGenomicsToolkit/cactus/blob/hprc-v1.1/doc/mc-pangenomes/hprc-v1.1-mc.md#vcf-postprocessing
INFILE=$1
OUTFILE=$2
JOBS=16
MAXLEN=100000
for chr in `bcftools view -h $INFILE | perl -ne 'if (/^##contig=<ID=([^,]+)/) { print "$1\n" }'`; do echo $chr; done | parallel -j ${JOBS} "bcftools view $INFILE -r {} | bgzip > $INFILE-{}.input.vcf.gz ; tabix -fp vcf $INFILE-{}.input.vcf.gz ; vcfbub --input $INFILE-{}.input.vcf.gz -l 0 -a ${MAXLEN} | vcfwave -t 2 -I 1000 | bgzip --threads 2 > ${INFILE}-{}.vcf.gz; rm -f $INFILE-{}.input.vcf.gz $INFILE-{}.input.vcf.gz.tbi"
bcftools concat ${INFILE}-*.vcf.gz | bcftools sort | bgzip --threads 16 > ${OUTFILE}
tabix -fp vcf ${OUTFILE}

