18bbec9e1a2ecbd3430515d8818ce2361f960535 hiram Mon Feb 7 16:15:39 2022 -0800 better matching to historical NCBI assemblies no redmine diff --git src/hg/makeDb/doc/assemblyEquivalence/update.2022-01-18.txt src/hg/makeDb/doc/assemblyEquivalence/update.2022-01-18.txt index 0529366..4de8450 100644 --- src/hg/makeDb/doc/assemblyEquivalence/update.2022-01-18.txt +++ src/hg/makeDb/doc/assemblyEquivalence/update.2022-01-18.txt @@ -1,391 +1,416 @@ idKeys for Ensembl assemblies were calculated in: /hive/data/outside/ensembl/genomes/release-105/ New assemblies have been built for genbano, refseq and ucsc *AND* now including all virus and bacteria assemblies in both genbank and refseq. Should see a large jump in the size of the resulting table. Working in: mkdir /hive/data/inside/assemblyEquivalence/2022-01-18 cd /hive/data/inside/assemblyEquivalence/2022-01-18 mkdir ensembl refseq genbank ucsc ### XXX ### The refseq and genbank key setup takes a very long time ### since it now includes virus and bacteria ########### refseq keys ################## cd refseq find /hive/data/genomes/asmHubs/refseqBuild/GCF \ -maxdepth 4 -mindepth 4 -type d | while read buildDir do asmId=`basename "${buildDir}"` keySig="${buildDir}/idKeys/${asmId}.keySignature.txt" idKeysDir=`dirname "${keySig}"` if [ -s "${keySig}" ]; then idKeys="$idKeysDir/$asmId.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${keySig}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${asmId}" "${fullCount}" "${uniqueCount}" fi done | sort -k1,1 > refseq.keySignatures.txt ########### genbank keys ################## cd ../genbank find /hive/data/genomes/asmHubs/genbankBuild/GCA \ -maxdepth 4 -mindepth 4 -type d | while read buildDir do asmId=`basename "${buildDir}"` keySig="${buildDir}/idKeys/${asmId}.keySignature.txt" idKeysDir=`dirname "${keySig}"` if [ -s "${keySig}" ]; then idKeys="$idKeysDir/$asmId.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${keySig}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${asmId}" "${fullCount}" "${uniqueCount}" fi done | sort -k1,1 > genbank.keySignatures.txt ########### UCSC keys ################## cd ../ucsc ls -d /hive/data/genomes/* | while read dbDir do db=`basename "${dbDir}"` keySig="${dbDir}/bed/idKeys/${db}.keySignature.txt" idKeysDir=`dirname "${keySig}"` if [ -s "${keySig}" ]; then idKeys="$idKeysDir/$db.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${keySig}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${db}" "${fullCount}" "${uniqueCount}" fi done | sort -k1,1 > ucsc.keySignatures.txt cd /hive/data/inside/assemblyEquivalence/2022-01-18 ln -s /cluster/home/hiram/kent/src/hg/makeDb/doc/assemblyEquivalence/exact.sh . ########### Ensembl keys ################## cd ../ensembl # does not always work, use the wget instead # rsync -av --stats \ # rsync://ftp.ensembl.org/ensembl/pub/release-105/species_EnsemblVertebrates.txt \ # ./ wget --timestamping \ ftp://ftp.ensembl.org/pub/release-105/species_EnsemblVertebrates.txt # extract the GCx assembly names: awk -F$'\t' '{printf "%s_%s\n", $6,$5}' species_EnsemblVertebrates.txt \ | grep "^G" | sort > ensembl.v105.asmId.txt # compare this to the ones we have on hand here cut -f2 ../genbank/genbank.keySignatures.txt | sort > genbank.asmId.here.txt wc -l ensembl.v105.asmId.txt genbank.asmId.here.txt | sed -e 's/^/# /;' # 297 ensembl.v105.asmId.txt # 533554 genbank.asmId.here.txt comm -12 ensembl.v105.asmId.txt genbank.asmId.here.txt | wc -l # 289 # will need to catch up the assembly hubs for these missing 8: comm -23 ensembl.v105.asmId.txt genbank.asmId.here.txt # GCA_000001215.4_BDGP6.32 # GCA_000004035.1_Meug_1.0 # GCA_000090745.2_AnoCar2.0v2 # GCA_000224145.1_KH # GCA_000409795.2_ChlSab1.1 # GCA_002776525.2_ASM277652v2 # GCA_008746955.1_ASM874695v1 # GCA_900186095.1_CHOK1GS_HDv1 # checking the listings, it isn't clear all these are needed, appears to # be outdated versions at Ensembl, and perhaps only two new ones for # GCA_002776525.2_ASM277652v2 - assembly status: replaced GCA_002776525.3_ASM277652v3 # GCA_008746955.1_ASM874695v1 -> GCA_008746955.1_CAU_Wild1.0 # add a new find for this current one find -L /hive/data/outside/ensembl/genomes/release-105/idKeys -type f \ | grep keySignature.txt | while read K do idKeysDir=`dirname "${K}"` id=`basename "${K}" | sed -e 's/.keySignature.txt//;'` idKeys="$idKeysDir/$id.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${K}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${id}" "${fullCount}" "${uniqueCount}" done | sort -k1,1 > ensembl-105.keySignatures.txt find -L /hive/data/outside/ensembl/genomes/release-104/idKeys -type f \ | grep keySignature.txt | while read K do idKeysDir=`dirname "${K}"` id=`basename "${K}" | sed -e 's/.keySignature.txt//;'` idKeys="$idKeysDir/$id.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${K}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${id}" "${fullCount}" "${uniqueCount}" done | sort -k1,1 > ensembl-104.keySignatures.txt find -L /hive/data/outside/ensembl/genomes/release-103/idKeys -type f \ | grep keySignature.txt | while read K do idKeysDir=`dirname "${K}"` id=`basename "${K}" | sed -e 's/.keySignature.txt//;'` idKeys="$idKeysDir/$id.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${K}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${id}" "${fullCount}" "${uniqueCount}" done | sort -k1,1 > ensembl-103.keySignatures.txt find -L /hive/data/outside/ensembl/genomes/release-101/idKeys -type f \ | grep keySignature.txt | while read K do idKeysDir=`dirname "${K}"` id=`basename "${K}" | sed -e 's/.keySignature.txt//;'` idKeys="$idKeysDir/$id.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${K}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${id}" "${fullCount}" "${uniqueCount}" done | sort -k1,1 > ensembl-101.keySignatures.txt find /hive/data/outside/ensembl/genomes/release-100/idKeys -type f \ | grep keySignature.txt | while read K do idKeysDir=`dirname "${K}"` id=`basename "${K}" | sed -e 's/.keySignature.txt//;'` idKeys="$idKeysDir/$id.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${K}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${id}" "${fullCount}" "${uniqueCount}" done | sort -k1,1 > ensembl-100.keySignatures.txt find /hive/data/outside/ensembl/genomes/release-99/idKeys -type f \ | grep keySignature.txt | while read K do idKeysDir=`dirname "${K}"` id=`basename "${K}" | sed -e 's/.keySignature.txt//;'` idKeys="$idKeysDir/$id.idKeys.txt" fullCount=`cat $idKeys | wc -l` uniqueCount=`cut -f1 $idKeys | sort -u | wc -l` keySig=`cat "${K}"` printf "%s\t%s\t%d\t%d\n" "${keySig}" "${id}" "${fullCount}" "${uniqueCount}" done | sort -k1,1 > ensembl-99.keySignatures.txt # put them all together: sort -u ensembl-10?.keySignatures.txt \ ensembl-99.keySignatures.txt > ensembl.keySignatures.txt # something is odd with five of these. Their names changed between # versions but the sum stayed the same. Can't have this. # Find them via cut -f1 ensembl.keySignatures.txt | sort | uniq -c | sort -rn | head 2 2f66b2c181e8de7668a9d3657666aa9b 2 2e374245cf85b32eddf186cf50f28f82 2 298de0770996a131c6f90a49ebebebb8 2 0eec31acf1f1120af29d62874cdd9952 2 009e19516d917fa9cdae10de74e8c3de egrep -h "2f66b2c181e8de7668a9d3657666aa9b|2e374245cf85b32eddf186cf50f28f82|298de0770996a131c6f90a49ebebebb8|0eec31acf1f1120af29d62874cdd9952|009e19516d917fa9cdae10de74e8c3de" *.txt | cut -f2 | sort | uniq -c 5 Anolis_carolinensis.AnoCar2.0 3 Anolis_carolinensis.AnoCar2.0v2 2 Canis_familiaris.CanFam3.1 5 Canis_lupus_familiaris.CanFam3.1 2 Cyprinus_carpio_german_mirror.German_Mirror_carp_1.0 7 Cyprinus_carpio_germanmirror.German_Mirror_carp_1.0 2 Cyprinus_carpio_hebao_red.Hebao_red_carp_1.0 7 Cyprinus_carpio_hebaored.Hebao_red_carp_1.0 4 Drosophila_melanogaster.BDGP6.28 4 Drosophila_melanogaster.BDGP6.32 # Eliminate the older names: sort -u ensembl-10?.keySignatures.txt \ ensembl-99.keySignatures.txt \ | egrep -v -w "Anolis_carolinensis.AnoCar2.0|Canis_familiaris.CanFam3.1|Cyprinus_carpio_germanmirror.German_Mirror_carp_1.0|Cyprinus_carpio_hebaored.Hebao_red_carp_1.0|Drosophila_melanogaster.BDGP6.28" \ > ensembl.keySignatures.txt ########### Exact matches ################## cd /hive/data/inside/assemblyEquivalence/2022-01-18 ./exact.sh ~/kent/src/hg/makeDb/doc/assemblyEquivalence/exactTableTsv.pl \ | sort > table.2022-01-18.tsv +wc -l table.* + 317948 table.2022-01-18.tsv + 363928 table.2022-02-07.tsv ########### Near matches ################## mkdir /hive/data/inside/assemblyEquivalence/2022-01-18/notExact cd /hive/data/inside/assemblyEquivalence/2022-01-18/notExact sed -e 's/release-99/release-105/;' \ /cluster/home/hiram/kent/src/hg/makeDb/doc/assemblyEquivalence/runOne > runOne chmod +x runOne ### XXX ### this isn't going to work with the big jump in number of ### genbank/refseq assemblies time (~/kent/src/hg/makeDb/doc/assemblyEquivalence/allByAll.sh) > all.log 2>&1 -# real 17m52.128s +# real 107m11.347s sed -e 's/\tcount A .*//;' results/match.*.txt > notExact.table.2022-01-18.tsv -wc -l notExact.table.2022-01-18.tsv -# 1258 notExact.table.2022-01-18.tsv + + wc -l notExact.tab* + 1258 notExact.table.2022-01-18.tsv + 1239 notExact.table.2022-01-26.tsv + 1738 notExact.table.2022-02-07.tsv ########### Table contents to load ################## sort -u notExact.table.2022-01-18.tsv ../table.2022-01-18.tsv \ > hgFixed.asmEquivalent.tsv ### Compare to existing: hgsql -N -e 'select * from asmEquivalent;' hgFixed | sort \ > existing.2022-01-18.tsv +wc -l hgFixed* + 319206 hgFixed.asmEquivalent.tsv + 365666 hgFixed.asmEquivalent.tsv.2022-02-07 + + wc -l hgFixed.asmEquivalent.tsv existing.2022-01-18.tsv 319206 hgFixed.asmEquivalent.tsv 2594 existing.2022-01-18.tsv # since we have so many new ones, will have to count identicals sort existing.2022-01-18.tsv hgFixed.asmEquivalent.tsv | uniq -c \ | sort -rn | awk '$1 > 1' | wc -l -# 2290 +# 2308 sort existing.2022-01-18.tsv hgFixed.asmEquivalent.tsv | uniq -c \ | sort -rn | awk '$1 > 1' | sed -e 's/^ \+//;' | cut -d' ' -f2- \ | sort > same.as.before -wc -l same.as.before -# 2290 +wc -l same.as.b* + 2290 same.as.before + 2308 same.as.before.2022-02-07 # so why are there so many missing that used to be counted ? sort existing.2022-01-18.tsv same.as.before | uniq -c | awk '$1 > 1' | wc -l # 2290 sort existing.2022-01-18.tsv same.as.before | uniq -c | awk '$1 < 2' \ | sed -e 's/^ \+//;' | cut -d' ' -f2- | sort > why.gone.missing -wc -l why.gone.missing -# 304 why.gone.missing - - +wc -l why* + 304 why.gone.missing + 286 why.gone.missing.2022-02-07 ### How about the important ones: egrep "mm10|mm39|hg38|hg19" hgFixed.asmEquivalent.tsv GCA_000001405.28_GRCh38.p13 hg38 genbank ucsc 640 640 640 GCA_000001635.8_GRCm38.p6 mm10 genbank ucsc 239 239 239 GCA_000001635.9_GRCm39 mm39 genbank ucsc 61 61 61 GCF_000001405.39_GRCh38.p13 hg38 refseq ucsc 639 639 640 GCF_000001635.26_GRCm38.p6 mm10 refseq ucsc 239 239 239 GCF_000001635.27_GRCm39 mm39 refseq ucsc 61 61 61 Mus_musculus.GRCm39 mm39 ensembl ucsc 61 61 61 hg38 GCA_000001405.28_GRCh38.p13 ucsc genbank 640 640 640 hg38 GCF_000001405.39_GRCh38.p13 ucsc refseq 639 640 639 mm10 GCA_000001635.8_GRCm38.p6 ucsc genbank 239 239 239 mm10 GCF_000001635.26_GRCm38.p6 ucsc refseq 239 239 239 mm39 GCA_000001635.9_GRCm39 ucsc genbank 61 61 61 mm39 GCF_000001635.27_GRCm39 ucsc refseq 61 61 61 mm39 Mus_musculus.GRCm39 ucsc ensembl 61 61 61 ### most should be identical to before join hgFixed.asmEquivalent.tsv existing.2022-01-18.tsv | wc -l - 5057 + 5168 ### probably should *not* be losing any from before: join -v 2 hgFixed.asmEquivalent.tsv existing.2022-01-18.tsv | wc -l - 134 + 118 join -v 2 hgFixed.asmEquivalent.tsv existing.2022-01-18.tsv \ | cut -d' ' -f3 | sort | uniq -c - 6 ensembl - 76 genbank - 41 refseq - 11 ucsc + 4 ensembl + 74 genbank + 35 refseq + 5 ucsc + +join -v 2 hgFixed.asmEquivalent.tsv existing.2022-01-18.tsv | awk '$3 == "ucsc"' +croPor0 GCA_000768395.1_Cpor_2.0 ucsc genbank 21892 23365 23365 +melGal1 GCA_000146605.2_Turkey_2.01 ucsc genbank 5890 5891 5891 +neoSch1 GCA_002201575.1_ASM220157v1 ucsc genbank 7871 7872 7872 +neoSch1 GCF_002201575.1_ASM220157v1 ucsc refseq 7872 7872 7873 +vicPac2 GCA_000164845.3_Vicugna_pacos-2.0.2 ucsc genbank 276609 276611 276724 join -v 2 hgFixed.asmEquivalent.tsv existing.2022-01-18.tsv | cut -d' ' -f4 | sort | uniq -c - 30 ensembl - 35 genbank - 49 refseq - 20 ucsc + 29 ensembl + 32 genbank + 41 refseq + 16 ucsc + +The first time through this revealed that we need to include the 'historical' +assemblies from NCBI to match the older UCSC assemblies. + +Not sure what all these new ones are this time. -Examined a couple (canFam3, xenTro9) appeared to have moved to a more exact -match from genbank to refseq. # if not 0, investigate. Sometimes a new assembly is now an # exact match to something where it was a near match before to # a previous assembly of that organism. # In this case, it is the different names same idKeys that were eliminated # this time that weren't taken care of before: join -t$'\t' -v 2 hgFixed.asmEquivalent.tsv existing.2022-01-18.tsv \ | cut -f1-3 Anolis_carolinensis.AnoCar2.0 GCA_000090745.2_AnoCar2.0 ensembl Anolis_carolinensis.AnoCar2.0 GCF_000090745.1_AnoCar2.0 ensembl Anolis_carolinensis.AnoCar2.0 anoCar2 ensembl Canis_familiaris.CanFam3.1 GCF_000002285.3_CanFam3.1 ensembl Canis_familiaris.CanFam3.1 canFam3 ensembl Drosophila_melanogaster.BDGP6.28 GCF_000001215.4_Release_6_plus_ISO1_MT ensembl Drosophila_melanogaster.BDGP6.28 dm6 ensembl ### note previous comments: ### ### Showing 5 this time: ### ### This is because the nearMiss calculation is only taking place on the ### ### most recent Ensembl release, not all the past ones. These two assemblies ### ### have new version in ens105 release, thus these older Ensembl assemblies ### ### are not being checked for near miss. For now, going to leave these ### ### missing from the table. Can't maintain all older Ensembl equivalents. ### Esox_lucius.Eluc_V3 GCA_000721915.3_Eluc_V3 ensembl genbank 1018 1019 1018 ### GCA_000721915.3_Eluc_V3 Esox_lucius.Eluc_V3 genbank ensembl 1018 1018 1019 ### Sarcophilus_harrisii.DEVIL7.0 GCA_000189315.1_Devil_ref_v7.0 ensembl genbank 35974 35975 35974 ### Sarcophilus_harrisii.DEVIL7.0 GCF_000189315.1_Devil_ref_v7.0 ensembl refseq 35974 35975 35974 ### Sarcophilus_harrisii.DEVIL7.0 sarHar1 ensembl ucsc 35974 35975 35974 ### there should be some new ones join -v 1 hgFixed.asmEquivalent.tsv existing.2022-01-18.tsv | wc -l 316820 ### There should be no duplicate equivalents: cut -f1,2 hgFixed.asmEquivalent.tsv | sort | uniq -c | sort -rn | head 1 zonAlb1 Zonotrichia_albicollis.Zonotrichia_albicollis-1.0.1 1 zonAlb1 GCF_000385455.1_Zonotrichia_albicollis-1.0.1 1 zonAlb1 GCA_000385455.1_Zonotrichia_albicollis-1.0.1 1 xipMac1 GCA_000241075.1_Xiphophorus_maculatus-4.4.2 1 xenTro9 Xenopus_tropicalis.Xenopus_tropicalis_v9.1 ... etc ... #### To load up new table contents: hgLoadSqlTab hgFixed asmEquivalent ~/kent/src/hg/lib/asmEquivalent.sql \ hgFixed.asmEquivalent.tsv hgsql -N -e 'select * from asmEquivalent;' hgFixed \ | sort > updated.2022-01-18.tsv wc -l updated.2022-01-18.tsv existing.2022-01-18.tsv +wc -l updated* existing* 319206 updated.2022-01-18.tsv + 365666 updated.2022-02-07.tsv 2594 existing.2022-01-18.tsv + 302 existing.ensembl.list + 252 existing.ucsc.list # Previously: 2594 updated.2022-01-18.tsv 2546 existing.2022-01-18.tsv 2546 updated.2021-03-10.tsv 2344 existing.2021-03-10.tsv