06d7be056190c14b85e71bc12523f18ea6815b5e
markd
  Mon Dec 7 00:50:29 2020 -0800
BLAT mmap index support merge with master

diff --git src/hg/utils/otto/sarscov2phylo/addUnmappedPublic.sh src/hg/utils/otto/sarscov2phylo/addUnmappedPublic.sh
new file mode 100755
index 0000000..0fc4e17
--- /dev/null
+++ src/hg/utils/otto/sarscov2phylo/addUnmappedPublic.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+set -beEu -x -o pipefail
+
+#	Do not modify this script, modify the source tree copy:
+#	kent/src/hg/utils/otto/sarscov2phylo/addUnmappedPublic.sh
+
+usage() {
+    echo "usage: $0 releaseLabel"
+}
+
+if [ $# != 1 ]; then
+  usage
+  exit 1
+fi
+
+releaseLabel=$1
+
+echo "releaseLabel=$releaseLabel"
+
+# Inputs from previous script (extractUnmappedPublic.sh)
+alignedFa=unmapped.aligned.fasta
+renaming=unmapped.renaming
+
+ref2bit=/hive/data/genomes/wuhCor1/wuhCor1.2bit
+usherDir=~angie/github/usher
+usher=$usherDir/build/usher
+matToVcf=$usherDir/build/matToVcf
+find_parsimonious_assignments=~angie/github/strain_phylogenetics/build/find_parsimonious_assignments
+
+scriptDir=$(dirname "${BASH_SOURCE[0]}")
+
+source $scriptDir/util.sh
+
+# Make VCF -- first without masking, for hgTracks
+time cat <(twoBitToFa $ref2bit stdout) $alignedFa \
+| faToVcf stdin stdout \
+| vcfRenameAndPrune stdin $renaming stdout \
+| gzip -c \
+    > unmapped.vcf.gz
+# Use usher to add unmapped public sequences to tree of mapped subset and infer missing/ambig bases.
+time $usher -u -T 50 \
+    -v unmapped.vcf.gz \
+    -i public-$releaseLabel.notMasked.pb \
+    -o public-$releaseLabel.all.notMasked.pb \
+    >& usher.addUnmappedPublic.log
+$matToVcf -i public-$releaseLabel.all.notMasked.pb -v public-$releaseLabel.all.vcf
+ls -l public-$releaseLabel.all.vcf
+wc -l public-$releaseLabel.all.vcf
+bgzip -f public-$releaseLabel.all.vcf
+tabix -p vcf public-$releaseLabel.all.vcf.gz
+
+# Then with masking to collapse the tree & make protobuf for usher/hgPhyloPlace:
+time vcfFilter -excludeVcf=mask.vcf unmapped.vcf.gz \
+| gzip -c \
+    > unmapped.masked.vcf.gz
+time $usher -u -T 50 \
+    -v unmapped.masked.vcf.gz \
+    -i public-$releaseLabel.masked.pb \
+    -o public-$releaseLabel.all.masked.pb \
+    >& usher.addUnmappedPublic.log
+mv uncondensed-final-tree.nh public-$releaseLabel.all.nh
+
+# Parsimony scores on collapsed tree
+time $find_parsimonious_assignments --tree public-$releaseLabel.all.nh \
+    --vcf <(gunzip -c public-$releaseLabel.all.vcf.gz) \
+| tail -n+2 \
+| sed -re 's/^[A-Z]([0-9]+)[A-Z,]+.*parsimony_score=([0-9]+).*/\1\t\2/;' \
+| tawk '{print "NC_045512v2", $1-1, $1, $2;}' \
+| sort -k2n,2n \
+    > public-$releaseLabel.all.parsimony.bg
+bedGraphToBigWig public-$releaseLabel.all.parsimony.bg /hive/data/genomes/wuhCor1/chrom.sizes \
+    public-$releaseLabel.all.parsimony.bw
+
+# Make allele-frequency-filtered versions
+# Disregard pipefail just for this pipe because head prevents the cat from completing:
+set +o pipefail
+sampleCount=$(zcat public-$releaseLabel.all.vcf.gz | head | grep ^#CHROM | sed -re 's/\t/\n/g' \
+              | tail -n+10 | wc -l)
+set -o pipefail
+minAc001=$(( (($sampleCount + 999) / 1000) ))
+vcfFilter -minAc=$minAc001 -rename public-$releaseLabel.all.vcf.gz \
+    > public-$releaseLabel.all.minAf.001.vcf
+wc -l public-$releaseLabel.all.minAf.001.vcf
+bgzip -f public-$releaseLabel.all.minAf.001.vcf
+tabix -p vcf public-$releaseLabel.all.minAf.001.vcf.gz
+
+minAc01=$(( (($sampleCount + 99) / 100) ))
+vcfFilter -minAc=$minAc01 -rename public-$releaseLabel.all.minAf.001.vcf.gz \
+    > public-$releaseLabel.all.minAf.01.vcf
+wc -l public-$releaseLabel.all.minAf.01.vcf
+bgzip -f public-$releaseLabel.all.minAf.01.vcf
+tabix -p vcf public-$releaseLabel.all.minAf.01.vcf.gz
+
+#*** TODO: add colors... run nextclade?  run pangolin??
+#*** just use mutations in vcf and/or paths in tree??