95c23a8a25292bec7fd5c853412f0d04d2d44145
angie
  Mon May 24 10:03:07 2021 -0700
Preserve older mappings in the case of duplicates -- but allow GenBank dot-version updates.  Also, subColumn is way faster than sed.

diff --git src/hg/utils/otto/sarscov2phylo/updateIdMapping.sh src/hg/utils/otto/sarscov2phylo/updateIdMapping.sh
index 710e664..e2c8d2b 100755
--- src/hg/utils/otto/sarscov2phylo/updateIdMapping.sh
+++ src/hg/utils/otto/sarscov2phylo/updateIdMapping.sh
@@ -52,41 +52,42 @@
 
 join -t$'\t' -a 1 -1 2 -o 1.1,1.2,1.3,2.2 \
     <(sort -k2,2 ~/chris_ncov/epiToPublicIdName.$today.txt) \
     <(sort $gbToDate $cncbToDate $cogUkToDate) \
 | sort -u adders - \
     > epiToPublicAndDate.$today
 
 # Look for duplicate ID swizzles relative to existing ncov-ingest mappings
 cut -f 1,2 epiToPublicAndDate.$today \
 | egrep $'\t''[A-Z][A-Z][0-9]+\.[0-9]+' \
 | sort > latestEpiToGb
 tail -n+2 ~/github/ncov-ingest/source-data/accessions.tsv \
 | tawk '{print $2, $1;}' \
 | sort > ncovEpiToGb
 wc -l latestEpiToGb ncovEpiToGb
-# Replace disagreeing IDs with ncov-ingest IDs.
+# But allow version updates (e.g. .1 --> .2)
 join -t$'\t' ncovEpiToGb latestEpiToGb \
-| tawk '$2 != $3 {print "s/"$3"/"$2"/;";}' \
-| sed -re 's/\./\\./;' \
-    > fix.sed
-sed -f fix.sed epiToPublicAndDate.$today > tmp
+| tawk '{ ncovNoDot = substr($2, 0, index($2, ".")-1);
+          latestNoDot = substr($3, 0, index($3, ".")-1);
+          if (ncovNoDot != latestNoDot) {print $3, $2;} }' \
+    > latestToNcov.sub
+subColumn -miss=/dev/null 2 epiToPublicAndDate.$today latestToNcov.sub tmp
 mv tmp epiToPublicAndDate.$today
 
 ln -sf epiToPublicAndDate.$today epiToPublicAndDate.latest
 
 # Now that mapping is updated, add GenBank accessions to 4th column of metadata
 zcat $nextmeta | cut -f 4 | grep ... | wc -l
 set +o pipefail
 zcat $nextmeta | head -1 > tmp
 set -o pipefail
 zcat $nextmeta \
 | tail -n+2 \
 | sort -t $'\t' -k3,3 \
 | join -t$'\t' -a 1 -1 3 - <(tawk '$2 ~ /^[A-Z][A-Z][0-9]+/' epiToPublicAndDate.latest) \
     -o 1.1,1.2,1.3,2.2,1.5,1.6,1.7,1.8,1.9,1.10,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20,1.21,1.22,1.23,1.24,1.25,1.26,1.27 \
 | sort \
     >> tmp
 wc -l tmp
-gzip -c tmp > $nextmeta
-rm tmp
+gzip tmp
+mv tmp.gz $nextmeta
 zcat $nextmeta | cut -f 4 | grep ... | wc -l