From 24be76dc081e0ed0352aeb6e80ccfebe25944dbf Mon Sep 17 00:00:00 2001 From: Lee Katz - Aspen Date: Mon, 4 Nov 2024 10:46:30 -0500 Subject: [PATCH] another round of provenance --- .gitignore | 3 + paper/mra.md | 6 +- src/provenance/README.md | 10 ++ src/provenance/SME.acc | 28 ++++ src/provenance/chromosomes.insdc.tsv | 15 +- src/provenance/ncbi_ref.acc.gz | Bin 17925464 -> 17927300 bytes src/provenance/ncbi_ref.acc.more | 68 +++++++++ src/provenance/quick-ncbi-ref-check.sh | 25 ++++ src/provenance/sources.tsv | 187 ++++++++++++------------- src/provenance/unknown.tsv | 94 ------------- 10 files changed, 236 insertions(+), 200 deletions(-) create mode 100644 src/provenance/ncbi_ref.acc.more create mode 100644 src/provenance/quick-ncbi-ref-check.sh diff --git a/.gitignore b/.gitignore index f4453e3..2b2d2b5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ edirect share paper/paper.html paper/paper.doc +# pixi environments +.pixi +*.egg-info diff --git a/paper/mra.md b/paper/mra.md index 19ca283..d3ca356 100644 --- a/paper/mra.md +++ b/paper/mra.md @@ -47,7 +47,9 @@ Kalamari also contains a custom taxonomy and software for downloading and format ## Announcement -Public Health laboratories sequence microbial pathogens daily for genomic epidemiology, i.e., to track pathogen spread [@armstrong2019pathogen]. +Public Health laboratories sequence microbial pathogens daily for many applications including genomic epidemiology [@armstrong2019pathogen], +species identification [@lindsey2023rapid], +and metagenomic analysis [@huang2017metagenomics]. Relevant databases exist such as RefSeq [@o2016reference] or The Genome Taxonomy Database (GTDB) [@parks2022gtdb]. However, due to their so comprehensive nature, they are disadvantageous for our specific purposes: @@ -64,7 +66,7 @@ All chromosomes and plasmids are complete, i.e., no contig breaks, and obtained from trusted sources, e.g., FDA-ARGOS [@sichtig2019fda] or the NCTC 3000 collection [@dicks2023nctc3000], or provided and reviewed by a CDC subject matter expert. We obtained the list of plasmids from the Mob-Suite project [@robertsonMobsuite] -and clustered them at 97% average nucleotide identity (ANI) [@lindsey2023rapid]. +and clustered them at 97% average nucleotide identity using edlb_ani_mummer v1 with default options [@lindsey2023rapid]. For each cluster, the taxonomy identifier was raised to the lowest common tier of taxonomy. For example, if a cluster of plasmids were identified in both _Escherichia coli_ and _Salmonella enterica_, then taxonomy identifiers for all the plasmids in the cluster were changed to their common family, _Enterobacteriaceae_. As a result, any taxonomic signature from these plasmids diff --git a/src/provenance/README.md b/src/provenance/README.md index f5e1acf..9abc9af 100644 --- a/src/provenance/README.md +++ b/src/provenance/README.md @@ -57,6 +57,16 @@ _NOTE_ This command probably would have saved me time if I turned it into a batc datasets summary genome accession GCF_000006945.2 --report sequence --as-json-lines | dataformat tsv genome-seq --fields genbank-seq-acc ``` +Check the assemblies spreadsheet on whether or not it is retrospecitively part of NCBI references + +```bash +zcat assembly_summary_genbank.txt.gz | perl -F'\t' -lane 'print if($F[11] eq "Complete Genome" || $.==1);' > tmp.tsv +mv tmp.tsv assembly-complete.tsv +bash quick-ncbi-ref-check.sh Caulobacter vibrioides CP001340 +# If found, add to ncbi_ref.acc.more +# If not found, see if there is different reference to add +``` + ## Translate Translate certain entries into CDC, NCTC3000, FDA, or the NCBI list. diff --git a/src/provenance/SME.acc b/src/provenance/SME.acc index 573562a..f350fce 100644 --- a/src/provenance/SME.acc +++ b/src/provenance/SME.acc @@ -5,6 +5,8 @@ Betacoronavirus_coronavirus MT233526 2697049 694009 UNKNOWN Borreliella_burgdorferi AE000783 139 64895 UNKNOWN Burkholderia_pseudomallei BX571965 28450 111527 UNKNOWN Burkholderia_pseudomallei BX571966 28450 111527 UNKNOWN + +# A ton of Campy and related genomes from Jim Bono Campylobacter_coli CP028187 195 194 UNKNOWN Campylobacter_concisus CP012541 199 194 NCBI-REF Campylobacter_cuniculorum CP020867 374106 194 NCBI-REF @@ -22,6 +24,9 @@ Campylobacter_sputorum CP019683 202 194 UNKNOWN Campylobacter_subantarcticus CP007772 497724 194 UNKNOWN Campylobacter_volucris CP007774 1031542 194 UNKNOWN Campylobacter_ureolyticus CP012195 827 194 UNKNOWN +Arcobacter_ellisii CP032097 913109 28196 UNKNOWN +Arcobacter_cibarius CP043857 255507 28196 UNKNOWN +Helicobacter_pylori AE000511 210 209 UNKNOWN # We trust Segre's lab for Citrobacter Citrobacter_freundii CP007557 546 544 UNKNOWN @@ -86,8 +91,31 @@ Yersinia_massiliensis CP054048 33060 629 UNKNOWN Yersinia_pseudotuberculosis CP009712 502800 633 UNKNOWN +Salmonella_enterica_IIIa CP000880 9000014 28901 UNKNOWN +Salmonella_enterica_IIIb CP053583 9000015 28901 UNKNOWN +Salmonella_enterica_IV CP053579 59205 28901 UNKNOWN +Salmonella_enterica_IX CP054715 9000016 28901 UNKNOWN +Salmonella_enterica_VII CP053582 59208 28901 UNKNOWN +Salmonella_enterica_X CP053581 9000017 28901 UNKNOWN + + Neisseria_gonorrhoeae AE004969 485 482 UNKNOWN Neisseria_meningitidis AE002098 487 482 UNKNOWN # Gulvik Leptospira_biflexa CP000777 355278 145259 UNKNOWN +Leptospira_interrogans CP020414 173 171 UNKNOWN + +# Eukie hosts +Bos_taurus KC153975 9913 9903 UNKNOWN +Arripis_trutta AP006810 270544 163128 UNKNOWN +Brassica_oleracea JF920286 3712 3705 UNKNOWN +Gallus_gallus HQ857211 9031 9030 UNKNOWN +Humulus_lupulus NC_086845 3486 3484 UNKNOWN +Lactuca_sativa MK820672 75943 4235 UNKNOWN +Neomysis_japonica KR006340 1676841 223649 UNKNOWN +Pollachius_virens FR751399 8060 8059 UNKNOWN +Solanum_lycopersicum MF034192 4081 49274 UNKNOWN +Sus_scrofa FJ236999 9823 9822 UNKNOWN +Thunnus_alalunga AB101291 8235 8234 UNKNOWN +Vicia_faba KC189947 3906 3904 UNKNOWN diff --git a/src/provenance/chromosomes.insdc.tsv b/src/provenance/chromosomes.insdc.tsv index 227bbf5..52b3c51 100644 --- a/src/provenance/chromosomes.insdc.tsv +++ b/src/provenance/chromosomes.insdc.tsv @@ -2,15 +2,13 @@ scientificName nuccoreAcc taxid parent Acholeplasma_laidlawii CP000896 2148 2147 Acinetobacter_baumannii CP045110 509170 470 Acinetobacter_pittii CP002177 48296 909768 -Aeromonas_hydrophila CP000462 644 642 Agrobacterium_fabrum AE007869 1176649 1183400 Agrobacterium_fabrum AE007870 1176649 1183400 Alkaliphilus_transvaalensis CP000724 208226 114627 Aliivibrio_fischeri CP000021 668 511678 Aliivibrio_fischeri CP000020 668 511678 -Amycolatopsis_mediterranei CP002000 33910 1813 +Amycolatopsis_mediterranei CP002896 33910 1813 Aquifex_aeolicus AE000657 63363 2713 -Architeuthis_dux NC_011581 256136 34555 Arcobacter_bivalviorum CP031217 663364 2321115 Arcobacter_ellisii CP032097 913109 28196 Arcobacter_cibarius CP043857 255507 28196 @@ -26,14 +24,13 @@ Atlantibacter_hermannii CP042941 565 1903434 Bacillus_cereus AP007209 1396 86661 Bacillus_subtilis AL009126 1423 653685 Bacillus_thuringiensis AE017355 1428 86661 -Bacteroides_fragilis AP006841 817 816 -Bacteroides_thetaiotaomicron AE015928 818 816 +Bacteroides_fragilis CR626927 817 816 +Bacteroides_thetaiotaomicron CP040530 818 816 Bartonella_bacilliformis CP000524 774 773 Betacoronavirus_coronavirus MT233526 2697049 694009 -Bifidobacterium_adolenscentis CP028341 1680 1678 -Bifidobacterium_bifidum CP001840 1681 1678 -Bifidobacterium_longum AE014295 216816 1678 -Bordetella_bronchiseptica HE965806 518 517 +Bifidobacterium_bifidum CP058603 1681 1678 +Bifidobacterium_longum AP010888 216816 1678 +Bordetella_bronchiseptica LR134326 518 517 Borreliella_burgdorferi AE000783 139 64895 Bos_taurus KC153975 9913 9903 Brachybacterium_faecium CP001643 43669 43668 diff --git a/src/provenance/ncbi_ref.acc.gz b/src/provenance/ncbi_ref.acc.gz index 66a282af0119ae80bbd2f0847d9c62226548219b..038fe8635cb711fbcc4472c4188510f8e7719b1f 100644 GIT binary patch delta 8283 zcmcgw2~^Wpv#&+Hs7PEuK{V6_tjZ?)P8G#!SX6|72#6pMFd!nbCVwkj(~5$H$_|k# zpt3|nK(<5#0Sf^&><9soecu8kkh}ouv$fyX_s%=-JCnJ&cXH2N=Fa?PCXF}B1cRc> z1c79*py2(1?|%XiEQ8=%2m~Nl4#5ftRzkoR3PP|7g4GbLfj|g?wGaqHfP!Eh1nVK# z0KrBGL?94_U=swJArON=9D*$nNIA&`XNI|#Nzumggf5bT0L3Ib^ec0=$z z1bZOZ3&B1JWFU}*Kn?u!g_}0$T{qLSP5MISA|_aDd=E1db3mLEsDl4gwblTp_ps z0UiQ32;3pK2!RI#mmu(j;4%bW5L|)48v-8)d?E0Iz#oDD2nY}mAwVFw3c*hhT!SDG zf*=SW1lJ)TLGUvKzd&#Uf?x=4LU0R$5C}pcxDCOt5QISx4#95_+<_nhf=CFWAc%$_ z27*`!;vk5JAOQk01a~1wgy44w?m=)Lf+Pr%AxMGX0R#^rcmzQz1ZfbYLy!Rh1%k&A zWJ2%+f-DH0LXZtX4g|RnJcA$)f_w-HASi^O2m&euGzgwUPz=Ef2udI*h2SLwWe}7@ zPyxX!2>yVe5`roS=nzyxPy@kh2;M;O76JwYwGh-nP!B-^1dR|hLC_3A3k2^VXoa8+ z0wx6Q5OhHB9)eB?K0wd~K{o_F5cERO2SGms0}u>CFa*Ic1S1fPLNErwI0O?AOhPaP z0Skg@2xcIdg@6qK2ZA{W<{{uh!21O(y9Ji<`CC2<@Oe3(SMYfypBH`;W-);wi3w_U-0M!eNW-o0#%|G}|-4W_12Nhb_{3!PKg zcen1c+Q@?>VV!{F`2qKzcHM^T3*}7-KSy6N*mQO7(dq}3ACLW}EUy*T&Hkarel&EX zfO5iF>Bi0N8*g{q*{CQUeXXj|saxy!S63~c%beY$;HkX4>RZQUSywHK)6SYJAp4?3 zt5!R%$hx*LR#lLQT3fZ!Q6TH5rso$HhXPSw)6S@`X=7A)T13P<;wulMTAk;L*K(18 zhAlPUD_%GJ;X2m1!ogv+qCMHNeoM{AbF7J4v2YIL(?S0E93}nYf_XBi_R!pU*%9%> zWw%#VjQ+7I`ljIl$3dk^zDVKYn*1dfullDY%@r1gf4bVjO%ValZ~lgsdk&%*9&+67 z)L~a*^UWRh70Vrbx`GT1lD|`8MbGZXEAmzOr|p*3|E$S{;a@b#A9jE9i5zwJEUV%Z z!f)1pB)YeclteP+ggSMOt{F$Q9bcC~oO{1+6Do`Js^l57|8}dy3i>sZP!=uqa7KU?wv;yK9sd5`aVF*NgW&u7NuEyZ0>Zg z7LFz)Jh4^dcp+H}Ex*xnU~Oo^+;?0ZdjRh@D0Gi(u5A^t3u8*pqN`;}hb!O6$^ETt ze=a4W>X3st#b-{oG)Z>0hc`$?5o_G5>p&e^NdFTkta>3*Bd@o#y4Q zTGR4oOliA(41V43@U3FurGwHtO>c{Hs-EofS-Ipg(f780Jj0*fdC7r3d(7u&-}?M- zsCet2X!*i0a((v=5!1Nhuj$P5uSxrw@A3)3?)6nWqmC$qo<$e)1%uH&lqhGVYfF~8 zLvhh9R#ru>AH0i={BH2>j|_-wprkMkw;VRH9#G``}$CWEom$ z^z2n2pe@#3{0(ZQkHYi7|D*`{4{zB~EQm7jQFsx!9({B4Y!EL{KCtWs0K>y)edCWx}Pqt|~PetHc)=6~*|e;E^YJ)W?~#n}3tpimV$G zxj`z~Q1+(eL!xcRWKj|6wf5wI0nJSY-7O_#vjdq~R-6jEEhw7`PhX5{hk=`OSlEmG za*A}C%6TvG_57XUkZjl03&{DVq&?C0!stFBx@h6(oP?d}1GHvIyVOegcXv@XKBK`Z z%or=JeRfd@X7A5*Z-&St()*6bK@+XYkQl?p^`|@}OB0*5e>RQMF(k%F-X&gD1?mX9 zFE|W^9Zh>m8^cb!br#y?j^TOzHZDkZdc?nPSmJ1UH@1j)!B1CNNwHs6L@4c<>nKmIz z$A#!BW1TOCIY~U}K39ygFfuTnU>2BX=jJ7`$P)?NCk3R19VZohoYDP$XTw6v#!@&Y3)@6#Uoc*Sjv@6Y`aBc*{SXD& zgaLOVQ&U%>==xK~wa;YeBGyCOCmB^HN_zA;kfMD~V|=H&kH=q`2(MNca*ARp8FIvv=Y<%=>o~m<)M z(X2BO;d1+jBBNLsLylDP{00W`7aXnhsqMLD`F|~@O{FVlHjYKE)?R;ob_hv}!k@tB z9L{dqROcuWV;{Jbpj1~P^@p=9H`h5@pNjQ5f&XIAbl<_6g|$3FF)utl=JGOCbfJS| zKF1vOBD!mY_%?}#Py^HKMqg{6LM_-qB;I&!FsVtOqUw`foVu2u?(pBss*Gq@+1T*d z2jM#>+5q)&Tfgl0bvLm4Y|?%H+^MvY_0O)`Y*zP6951NNZp$C}_%k_&yb5yNf-BML zxTsuf)9=y37_su<4;~u6Tu+4b+MJY>IAgazy`@zC*Z2K}ThBXIa=ZOmYD~{K+6Zsm z4U)chyl+V~!cai6nna}kJ2w-?sE;5ik9~UU!mzFv!>|||S>NmrbtfBSv$`}l@NdF5 ztTXX(k>M${`McIu<2g^=_Eoxu{r+$s-TzQlwm~^wPc!D=N7RhdD~^5f-j1c<+gm4- zcGTE=E|lT^i)3zB`9-P&;RIF~k$;R@_*qOxXvr$oebnXZ4sO&enLFAdl7SA!8HdED zQkp|YqO9&3Q&ozN z(=ymzb>g++_wzC~N7Ows3ng>TmCP;c-pcTlf>&SJ_wTSJxaBbTrH zY7b3zl<&E$xUfoT>Mz)h6loiy!WbWwDf_xmGd=TI`*=ev=3vpbZffb}cPHq0sneQ8 z-ip!lPYt%c7_{>)>koCQJrqSt@Tjs=$IY!%ZE8=XC&sDnH1%n|xphe={7WNfwwFn@ zM$r3?cA=`maMhHc`^LX!q$Ln_7U>ZO;oBV#wt2qQ<#J^hf9)cw?MRp%mf zL}^dDyh%Mw*;I6Tp|fHkwv4(Ir>6m^%apvQ`RjL-Sa0x zA~@g32%gb*MlXfY_fn;pxHcR0pruzIb9ujL1`>1mfwtbxeuE9$7JH)u!j)c~>V6j5 zRcL9{J<3bDoip#`p5RL8OzwW8HNpOrX4qrsbg_`zLAtpTV zlYFXP$9@-e;;QCcJv6mw$)rLK8i#`|*sijE_Z_FeWOpI2W}ES+t#o zU|)6Ojb>@bTh_MkSOYI#;%PQ#{*RqBu0bNILmjcIoL1w_Bul*DYa`9=l*HTq9!hel zI#Xn9^3BwCL}cuu#X%)ho&KT=2ICgP)a8|H(Vu+yXyEXdKG^Gb^N+NGSa)7qXpxhM zxW4pvCHr>sU;X?Fbwq*HImvD^R}1M=@WvX~rd&i9j7{DPD}U_sCD39lw5?*&lpLHY zs&B_5+qLwsTptu_5`ThS1lkXL{&B_J<)fA|%5X@cUvzph@CQ9(rn8pb8h+}wkQP=4mx(M@#g1dE z7@K8l0#nBxAoQGc8GH))C-v*yi9US%6DU_?(igHev}*ZcXs|2ayoq{wPB<|Kf1!Ci zUsl-2%A5Y6t)6RGkw}lpNpxLf6nhz;hZ`u{x@sd%S7(guQNdgD zE-|KSr|c{vQgSjz^7{Py)jb*0EGJcAd?pSVu-sBzd&|)jOL!azDZWB1{>=7SCOHcDRjO$9;T>Zg&!Of8E5)ez>vw>db5>cZaP8R^R3B)Lk& z=6JLw>wD7OEbcETfQ~4f8RaNl=Z}$ipS@k2$ z_i+RLEAY)}u35>l-uU8{`qY<&LUGOcxW<oTux;Kp^?>phTP4Yd&W4V2PZWFI3P0BLT`^YX0^;P6!3k`C*p?=cZp5GiW zZK!A2>Bw2e=sNc`H|wTxu+2GciF@BpQml60P@cDPzvE)Xpf!>ks%&$gi{jYSHUr$7 zWMm*6gLhRgfHdb4@qDVQC(=!|@kCu2aC(!B%5=hUUf)VlA^e=@>dIMHkmIP$pJ-9i zgwMR85|`wMZto5oP3-8Vi&0H@6%7}MNEjMw<7O_!6 zB{|^|?p5!TQtf=}n^x+0MpG@K@g}B^y*bvSZw`A-NiNuxoogcEYqIUI@kN~7%KFuojgo9A@RUt~;?N=2d4rRhk z1)g({5_4o_4kJH!6PG^D1q>T?)x-7;<}s?)xhkBD6Zs(y)@R+9`LAiTdfs+!(0xBE zSBz6<)gWu^d>qrzojdWMHA=1J$$qa^_nhVHC7LqDi!x)=J$w(!QOg7gx7M?_ z?3`3F=pDEc)O@m1X(K5y_JJd!5z^}UW^jA?6x&_#sdc5bm8X4LLtS%yeXz9^PQ9U1 z?yc9cfUHfVsg=|mm2Ja_x%98Kw$5jy->?1h<5s8k%#1n5V#rh12M12_UCheFyh?R* z!EDaRb*K8!i^nQuB03{ya@A5m3J4bc9xwg^YEOf>(ORe9Czx>1goQ!+sf*injNye zQbU>6)6+$Ys4aT5Rw}iH+Y>p@>Kel-?XS0f{y4f#>rKF%$v7t98Iw3S=SCxN`s}9J zV`Fx-Ry>tG&_VhRuT&%?8@of_bbN|CmNI1hlE|s#rlibwa$ARIj~|v1ip~G#&IvUQ zws@!sS@KG`DT^Y>q_!aJ<43x1drz69TJ`UDLv~>jxJPOJ%>xWKf8OkQWSZ?UQ8z25 z9Q1gVIW~Q`Fr}O%K02HkQd8bqQb~NY>vTh#k?6gy=EUz9s-tQqoM%NyK%;R|$Tm!q zgQjl%o|!;KLN2e3n?FCzwMZKl9ybVHK6}s8#)i!DE+F;HPjtI8OBL`*A$LTabhu6k zt$@a)&i766Z+9}a)-vqW(+mB@RBw;Cf?;*&RcG<4?Z$~;!kYOtjZPMV-O)p5|yGCna6rP)Uhv z5x$yM?aR&?G&;`clkA!88SWY*Sg%8~ygAbaq=!}Vl<5)I^3b9OrdiR%_T6Z%*At{| zgy^T+R^8Idu-BP-dfm|dHU8Z9u~7uNMk*mn^9ha2w&rn$l~1~*$yF0>}Q zw54Fa(p2aCL}c*sWLuqgwf;JPsJEKFDhOcB`tlyz`i;%?=?~40TNpD3&DR9&4Zn42 zKqe)ABtep_JBSeGa9iFLu&?S2h3*vXSJE*1ITp9Rf-WvEsf(y>L<+fL{Uz%2?QVqI z;fL@MliZ-riK%fPnwGX5DXEC-Zf~Y@e&hAzTJA7Tyt5&)^`TN&|L>>N#_Cqayfg0! zH5th*-_P|CoaRWW$8ApTIr_&W(@2JhNkFKsy~Ez*1nDF3P<_5DC!gK0g@Fpn2;p6( z5x5p>>PEkNfauL1S1Y#HDP)~d+moC)Q#5W})FJ6TWy3dW*RF?~r@F?Z4O$K<1=BN4 zT6R`-yfAaBk#Ff?FOQQx`Di(YASQbRkE#8MeUbM}sG)p_!R?ru^&!>SJ<^wAu%%K> zleZH%9=7|2d+uzny>)h5JT9oPoT)Qn!_+bNcPFO+q(56uDzt{w;>`|sd=fnzx_5HJ z2Q`z~N%qOy^|2IcERp`ZaqKMysFsk3SxqJx?HX3qOhkB@8Pk0hXZ{+t1~ldrMv zd+C>v-CcgBKN7SJXlimPW_U#Lxa?!CA)j6KZ{l=qwC7WvIt6I!^y}&979wdi3?|p? zQizwv&vt&q&R$e`7pWB?yEUV-Yin9~TN@@j_01w*^w~$TEgo>|_hcIv9SzwqGcZ|z zt~-%8Tz0`LAYKM3MTpHsS~{q6Nf|q)64DWhZHt{Xc{CG^c)!CK(RO3W+R?fn;sbO_ znL0g0glCa^*f!pX`Pyd0G*!PPe(YrKT`z0(*2gXR%d~WuQ)V94>%+IAM-}JV#0yNa zM@%FKro<;4j29M0PWAY5 zM!8IwDoBGPoyw##!uTYQA+&E(l_2JpBzFpP%sSQVQQ#`KB{OBzABAHi6$kGgIm!-n|aR@5R=^@QuOfFivI$`q5hTt delta 5716 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