<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xml:lang="en">
  <teiHeader>
    <fileDesc>
      <titleStmt>
        <title>GTDB-Tk v2: memory friendly classification with the genome taxonomy database</title>
        <author>Pierre-Alain Chaumeil</author>
        <author>Aaron J. Mussig</author>
        <author>Philip Hugenholtz</author>
        <author>Donovan H. Parks</author>
      </titleStmt>
      <publicationStmt>
        <p>Tag layer of the DHSS Meta-Tagging Project. The article text is reproduced from the
           staged copy named in sourceDesc and is not altered; the tags are held separately in
           standOff so that overlapping and nested spans are preserved.</p>
      </publicationStmt>
      <sourceDesc>
        <bibl>
          <title>GTDB-Tk v2: memory friendly classification with the genome taxonomy database</title>
          <date>2022</date>
          <publisher>Bioinformatics</publisher>
          <idno type="DOI">10.1093/bioinformatics/btac672</idno>
          
          <idno type="record">chaumeil2022-gtdb-tk-v2-memory-friendly-classification-with</idno>
          <note type="staged-file">chaumeil2022-gtdb-tk-v2-memory-friendly-classification-with.txt, the project's staged copy</note>
          <note type="text-sha1">9e4afc21867b64d08ea4885878a6968ff6f47482</note>
          <note type="rights">open-access</note>
        </bibl>
      </sourceDesc>
    </fileDesc>
    <profileDesc>
      <textClass><keywords><term>biochemistry,-genetics-and-molecular-biology</term></keywords></textClass>
      <particDesc>
        <person xml:id="paper"><p>the paper's own words</p></person>
        <person xml:id="tagger"><p>the tag layer; a sentence written by the tagger about the
          paper, always anchored to a quotation but not itself a quotation</p></person>
      </particDesc>
    </profileDesc>
    <revisionDesc>
      <change when="2026-10-06"
              who="build_paper_edition.py">34 spans located by searching the stored text for the quote's exact words, allowing any whitespace between them</change>
    </revisionDesc>
  </teiHeader>
  <standOff>
    <spanGrp type="tags">
      <span xml:id="t0" from="#a5" to="#a6" type="contribution" ana="#contribution" resp="#paper">contribution</span>
      <span xml:id="t1" from="#a5" to="#a6" type="claim_type" ana="#claim_type" resp="#paper">method</span>
      <span xml:id="t2" from="#a3" to="#a4" type="phenomenon" ana="#phenomenon" resp="#paper">substantial memory requirements of the GTDB-Tk classification toolkit caused by the growing GTDB bacterial reference tree</span>
      <span xml:id="t3" from="#a1" to="#a2" type="concepts" ana="#concepts[0]" resp="#paper" cert="0.85">GTDB-Tk<term>GTDB-Tk</term></span>
      <span xml:id="t4" from="#a33" to="#a34" type="concepts" ana="#concepts[1]" resp="#paper" cert="0.9">divide-and-conquer approach<term>divide-and-conquer approach</term></span>
      <span xml:id="t5" from="#a23" to="#a24" type="concepts" ana="#concepts[2]" resp="#paper" cert="0.9">class-level subtrees<term>class-level subtrees</term></span>
      <span xml:id="t6" from="#a19" to="#a20" type="concepts" ana="#concepts[3]" resp="#paper" cert="0.9">backbone tree<term>backbone tree</term></span>
      <span xml:id="t7" from="#a31" to="#a32" type="concepts" ana="#concepts[4]" resp="#paper" cert="0.9">lowest common ancestor<term>lowest common ancestor</term></span>
      <span xml:id="t8" from="#a3" to="#a4" type="concepts" ana="#concepts[5]" resp="#paper" cert="0.9">bacterial reference tree<term>bacterial reference tree</term></span>
      <span xml:id="t9" from="#a9" to="#a10" type="concepts" ana="#concepts[6]" resp="#paper" cert="0.9">relative evolutionary divergence (RED)<term>relative evolutionary divergence (RED)</term></span>
      <span xml:id="t10" from="#a11" to="#a12" type="concepts" ana="#concepts[7]" resp="#paper" cert="0.9">maximum likelihood (ML) placement tool pplacer<term>maximum likelihood (ML) placement tool pplacer</term></span>
      <span xml:id="t11" from="#a15" to="#a16" type="concepts" ana="#concepts[8]" resp="#paper" cert="0.9">memory requirements<term>memory requirements</term></span>
      <span xml:id="t12" from="#a27" to="#a28" type="concepts" ana="#concepts[9]" resp="#paper" cert="0.9">query genomes<term>query genomes</term></span>
      <span xml:id="t13" from="#a37" to="#a38" type="concepts" ana="#concepts[10]" resp="#paper" cert="0.9">taxonomic rank<term>taxonomic rank</term></span>
      <span xml:id="t14" from="#a41" to="#a42" type="concepts" ana="#concepts[11]" resp="#paper" cert="0.9">GTDB reference packages<term>GTDB reference packages</term></span>
      <span xml:id="t15" from="#a51" to="#a52" type="concepts" ana="#concepts[12]" resp="#paper" cert="0.9">computing hardware<term>computing hardware</term></span>
      <span xml:id="t16" from="#a19" to="#a20" type="senses" ana="#senses[0]" resp="#tagger" cert="0.95">backbone tree — a tree containing one genome representative for each family</span>
      <span xml:id="t17" from="#a5" to="#a6" type="claim_relations" ana="#claim_relations[0]" resp="#tagger" cert="0.96">extends → GTDB-Tk (previous version)</span>
      <span xml:id="t18" from="#a45" to="#a46" type="concept_edges" ana="#concept_edges[0]" resp="#tagger" cert="0.99">divide-and-conquer approach —causes→ memory requirements<note>direction on the measure: reduces · strength of the relation: 0.96 · note: The sentence measures the reduction from approximately 320 GB to below 55 GB under the divide-and-conquer approach; the large quantified effect sets 0.96.</note><term>divide-and-conquer approach</term><term>memory requirements</term></span>
      <span xml:id="t19" from="#a17" to="#a18" type="concept_edges" ana="#concept_edges[1]" resp="#tagger" cert="0.98">class-level subtrees —part-of→ bacterial reference tree<note>strength of the relation: 0.95 · note: The sentence says the bacterial reference tree is divided into class-level subtrees, directly licensing part-of; 0.95 reflects categorical structure without using a perfect weight.</note><term>class-level subtrees</term><term>bacterial reference tree</term></span>
      <span xml:id="t20" from="#a13" to="#a14" type="concept_edges" ana="#concept_edges[2]" resp="#tagger" cert="0.99">maximum likelihood (ML) placement tool pplacer —causes→ memory requirements<note>strength of the relation: 0.97 · note: The sentence calls pplacer placement memory-intensive and measures approximately 320 GB of RAM, directly setting a high causal weight of 0.97.
Audit 2026-09-28: DOUBTFUL - read against its full span and kept, but the span writes &#x27;memory-intensive operation requiring ~320 GB of RAM&#x27;, not &#x27;memory requirements&#x27;.</note><term>maximum likelihood (ML) placement tool pplacer</term><term>memory requirements</term></span>
      <span xml:id="t21" from="#a5" to="#a6" type="concept_edges" ana="#concept_edges[3]" resp="#tagger" cert="0.99">GTDB-Tk —operationalised-as→ divide-and-conquer approach<note>strength of the relation: 0.97 · note: The contribution states that the GTDB-Tk update uses the divide-and-conquer approach and describes its two placements; this explicit implementation sets 0.97.
Audit 2026-09-28: DOUBTFUL - read against its span and kept, but GTDB-Tk USES a divide-and-conquer approach; operationalised-as is the wrong type.</note><term>GTDB-Tk</term><term>divide-and-conquer approach</term></span>
      <span xml:id="t22" from="#a17" to="#a18" type="content_tags" ana="#content_tags.findings[0]" resp="#tagger" cert="0.85">Here, we show that the memory requirements of GTDB-Tk are reduced by dividing the GTDB bacterial reference tree into class-level subtrees and demonstrate that taxonomic classifications are largely unimpacted by this change.</span>
      <span xml:id="t23" from="#a7" to="#a8" type="content_tags" ana="#content_tags.findings[1]" resp="#tagger" cert="0.85">This substantially reduces the memory requirements of GTDB-Tk while having minimal impact on classification.</span>
      <span xml:id="t24" from="#a45" to="#a46" type="content_tags" ana="#content_tags.findings[2]" resp="#tagger" cert="0.85">3.2 Reduced memory requirements The divide-and-conquer approach implemented in GTDB-Tk v2 reduced the maximum memory requirements from ∼320 GB to &lt;55 GB when run with the GTDB R07-RS207 reference trees.</span>
      <span xml:id="t25" from="#a21" to="#a22" type="content_tags" ana="#content_tags.findings[3]" resp="#tagger" cert="0.85">If the genome is assigned to a class within this backbone tree, it is then placed into a class-level subtree to obtain a more refined placement for the genome.</span>
      <span xml:id="t26" from="#a29" to="#a30" type="content_tags" ana="#content_tags.findings[4]" resp="#tagger" cert="0.85">A genome placed into a class-level subtree and assigned to a phylum belonging to one of the classes contained in the subtree is assigned the classification determined in the subtree.</span>
      <span xml:id="t27" from="#a35" to="#a36" type="content_tags" ana="#content_tags.findings[5]" resp="#tagger" cert="0.85">Only 12 genomes (0.07%) did not have identical classifications between GTDB-Tk v1 and the divide-and-conquer approach used in GTDB-Tk v2 ( Supplementary Table S1 ).</span>
      <span xml:id="t28" from="#a49" to="#a50" type="content_tags" ana="#content_tags.findings[6]" resp="#tagger" cert="0.85">4 Summary GTDB-Tk v2 requires only a sixth of the memory of GTDB-Tk v1 while providing almost identical classifications.</span>
      <span xml:id="t29" from="#a13" to="#a14" type="content_tags" ana="#content_tags.quantities[0]" resp="#tagger" cert="0.85">~320 GB RAM; reference tree of 62,291 genomes (printed &#x27;62 291&#x27;) — reported sample, observation, or event count</span>
      <span xml:id="t30" from="#a25" to="#a26" type="content_tags" ana="#content_tags.quantities[1]" resp="#tagger" cert="0.85">at most 10,540 genomes (printed &#x27;10 540&#x27;); 10% more than the Gammaproteobacteria — reported sample, observation, or event count</span>
      <span xml:id="t31" from="#a39" to="#a40" type="content_tags" ana="#content_tags.quantities[2]" resp="#tagger" cert="0.85">~60,000 genomes (printed &#x27;60 000&#x27;) dereplicated to 23,548 (printed &#x27;23 548&#x27;) — reported sample, observation, or event count</span>
      <span xml:id="t32" from="#a43" to="#a44" type="content_tags" ana="#content_tags.quantities[3]" resp="#tagger" cert="0.85">13 genomes (0.06%): 5 conflicting, 5 overclassified, 3 underclassified — reported sample, observation, or event count</span>
      <span xml:id="t33" from="#a47" to="#a48" type="content_tags" ana="#content_tags.quantities[4]" resp="#tagger" cert="0.85">22–35%; 1000; 1–64; &gt;40%; 5000 — reported sample, observation, or event count</span>
    </spanGrp>
  </standOff>
  <text>
    <body>
        <p><anchor xml:id="a0"/> Abstract. Abstract Summary <anchor xml:id="a1"/>The Genome Taxonomy Database (GTDB) and associated taxonomic classification toolkit (GTDB-Tk) have been widely adopted by the microbiology community.<anchor xml:id="a2"/> <anchor xml:id="a3"/>However, the growing size of the GTDB bacterial reference tree has resulted in GTDB-Tk requiring substantial amounts of memory (∼320 GB) which limits its adoption and ease of use.<anchor xml:id="a4"/> <anchor xml:id="a5"/>Here, we present an update to GTDB-Tk that uses a divide-and-conquer approach where user genomes are initially placed into a bacterial reference tree with family-level representatives followed by placement into an appropriate class-level subtree comprising species representatives.<anchor xml:id="a6"/> <anchor xml:id="a7"/>This substantially reduces the memory requirements of GTDB-Tk while having minimal impact on classification.<anchor xml:id="a8"/> Availability and implementation GTDB-Tk is implemented in Python and licenced under the GNU General Public Licence v3.0. Source code and documentation are available at: https://github.com/ecogenomics/gtdbtk . Supplementary information Supplementary data are available at Bioinformatics online. 1 Introduction The Genome Taxonomy Database (GTDB) and associated taxonomic classification toolkit (GTDB-Tk) has been used to assign taxonomic classifications to tens of thousands of bacterial and archaeal isolate genomes and metagenome-assemble genomes recovered from environmental and human-associated samples ( Almeida et al. , 2021 ; Chaumeil et al. , 2019 ; Nayfach et al. , 2021 ). <anchor xml:id="a9"/>These classifications are consistent with the GTDB framework and based on the same relative evolutionary divergence (RED) and average nucleotide identity (ANI) criteria for circumscribing taxa ( Parks et al. , 2020 , 2022 ).<anchor xml:id="a10"/> <anchor xml:id="a11"/>A primary step in assigning classifications is placing genomes into the GTDB bacterial or archaeal reference trees using the maximum likelihood (ML) placement tool pplacer ( Matsen et al. 2010 ).<anchor xml:id="a12"/> <anchor xml:id="a13"/>Unfortunately, ML placement with pplacer is a memory-intensive operation requiring ∼320 GB of RAM when using the GTDB R07-RS207 bacterial reference tree comprised of 62 291 genomes.<anchor xml:id="a14"/> Adding to this challenge is the lack of favourable alternatives to pplacer as the EPA-ng ML placement method requires more memory than pplacer and distance-based methods such as APPLES-2 have inferior performance ( Balaban et al. , 2022 ; Barbera et al. , 2019 ; Koning et al. , 2021). The GTDB bacterial reference tree has been growing rapidly in size with each GTDB release and is expected to grow by upwards of 30% per year for the next few years ( Parks et al. , 2022 ). <anchor xml:id="a15"/>Unfortunately, the size of this tree results in the memory requirements of GTDB-Tk being impractical.<anchor xml:id="a16"/> <anchor xml:id="a17"/>Here, we show that the memory requirements of GTDB-Tk are reduced by dividing the GTDB bacterial reference tree into class-level subtrees and demonstrate that taxonomic classifications are largely unimpacted by this change.<anchor xml:id="a18"/> 2 Materials and methods GTDB-Tk v2 divides the GTDB bacterial reference tree into class-level subtrees to reduce memory requirements. Placement of a genome with pplacer now consists of two steps. <anchor xml:id="a19"/>First, a genome is placed into a backbone tree consisting of a single genome representative for each family (see Supplementary Methods ).<anchor xml:id="a20"/> <anchor xml:id="a21"/>If the genome is assigned to a class within this backbone tree, it is then placed into a class-level subtree to obtain a more refined placement for the genome.<anchor xml:id="a22"/> <anchor xml:id="a23"/>The class-level subtrees were constructed in a greedy manner with the maximum size of a class-level subtree being set based on the number of species representatives in the largest class ( Gammaproteobacteria with 9582 genomes in GTDB R07-RS207).<anchor xml:id="a24"/> <anchor xml:id="a25"/>Each class-level subtree was formed by selecting the largest class in the reference tree and traversing towards the root until the subtree contained at most 10 540 genomes (10% more than the Gammaproteobacteria ).<anchor xml:id="a26"/> This subtree was then pruned from the reference tree and the procedure repeated until all classes were assigned to a class-level subtree. For GTDB R07-RS207, this resulted in seven class-level trees. <anchor xml:id="a27"/>Each class-level subtree was then expanded to contain a single genome from each phylum in order to allow query genomes to be placed as the most basal member of a class.<anchor xml:id="a28"/> Final taxonomic classifications use the same RED and ANI criterion as GTDB-Tk v1 (Chaumeil et al. , 2020) with the following additional rules: A genome not placed into a class-level subtree is assigned the classification determined in the backbone tree. <anchor xml:id="a29"/>A genome placed into a class-level subtree and assigned to a phylum belonging to one of the classes contained in the subtree is assigned the classification determined in the subtree.<anchor xml:id="a30"/> <anchor xml:id="a31"/>Otherwise, the genome is classified by taking the lowest common ancestor between the backbone and class-level subtree.<anchor xml:id="a32"/> <anchor xml:id="a33"/>3 Results Here, we demonstrate that the taxonomic classifications produced by the divide-and-conquer approach implemented in GTDB-Tk v2 are nearly equivalent to those produced by GTDB v1 while providing a substantial reduction in required memory.<anchor xml:id="a34"/> 3.1 Similarity of classifications on diverse sets of genomes The concordance between GTDB-Tk v1 and v2 classifications was first assessed using 16 710 bacterial genomes from the GEMs dataset ( Nayfach et al. , 2021 ) that represent novel taxa relative to GTDB R07-RS207 ( Table 1 ). <anchor xml:id="a35"/>Only 12 genomes (0.07%) did not have identical classifications between GTDB-Tk v1 and the divide-and-conquer approach used in GTDB-Tk v2 ( Supplementary Table S1 ).<anchor xml:id="a36"/> <anchor xml:id="a37"/>The majority of incongruence was due to genomes being over- (six genomes) or under-classified (four genomes) by a single taxonomic rank.<anchor xml:id="a38"/> Only two genomes had conflicting taxonomic assignments, and these were both relatively poor-quality genomes assigned as new classes in alternative phyla ( Supplementary Table S1 ). Table 1. Novelty of GEM genomes relative to GTDB R07-RS207 based on GTDB-Tk v1 classifications GTDB-Tk v2 classifications relative to GTDB-Tk v1 classifications Taxon novelty No. genomes Congruent Conflict a Underclassified b Overclassified c Novel phylum 3 2 0 0 1 Novel class 42 36 2 2 2 Novel order 144 143 0 0 1 Novel family 543 540 0 1 2 Novel genus 3222 3221 0 1 0 Novel species 12 756 12 756 0 0 0 Note : GTDB-Tk v2 predicts a different taxon (a), or less (b) or more (c) resolved classifications than GTDB-Tk v1 (see Supplementary Table S1 ). <anchor xml:id="a39"/>GTDB-Tk v1 and v2 classifications were further evaluated by dereplicating the ∼60 000 genomes introduced in GTDB R07-RS207 to 23 548 genomes by randomly selecting a single genome per species.<anchor xml:id="a40"/> <anchor xml:id="a41"/>These 23 548 genomes were then classified using the GTDB-Tk R06-RS202 reference package to further evaluate classifications on genomes with varying degrees of taxonomic novelty and to ensure results were robust with different GTDB reference packages ( Supplementary Table S2 ).<anchor xml:id="a42"/> <anchor xml:id="a43"/>Only 13 genomes (0.06%) had different GTDB-Tk v1 and GTDB-Tk v2 classifications with 5 having conflicting assignments, 5 being overclassified and 3 being underclassified ( Supplementary Table S3 ).<anchor xml:id="a44"/> 3.2 Reduced memory requirements <anchor xml:id="a45"/>The divide-and-conquer approach implemented in GTDB-Tk v2 reduced the maximum memory requirements from ∼320 GB to &lt;55 GB when run with the GTDB R07-RS207 reference trees.<anchor xml:id="a46"/> <anchor xml:id="a47"/>GTDB-Tk v2 also ran 22–35% faster when processing 1000 genomes with 1–64 CPUs ( Supplementary Fig. S1A ) and was &gt;40% faster when processing 5000 genomes using 32 CPUs ( Supplementary Fig. S1B ).<anchor xml:id="a48"/> <anchor xml:id="a49"/>4 Summary GTDB-Tk v2 requires only a sixth of the memory of GTDB-Tk v1 while providing almost identical classifications.<anchor xml:id="a50"/> More importantly, the divide-and-conquer approach used in GTDB-Tk v2 allows memory requirements to be controlled by tailoring the size of the largest subtree. <anchor xml:id="a51"/>This ensures GTDB-Tk can continue to be used on readily available computing hardware even as the size of the GTDB bacterial reference tree increases.<anchor xml:id="a52"/> Supplementary Material btac672_Supplementary_Data Click here for additional data file. Acknowledgements We thank Morgan Price for insightful advice on using FastTree with pplacer, Brian Kemish for his help in maintaining our computing infrastructure, Maria Chuvochina and Christian Rinke for helpful discussions, and the GTDB-Tk community for their bug reports and suggestions on features to improve GTDB-Tk. Funding This work was supported by UQ Strategic Funding and Australian Research Council Laureate Fellowship [FL150100038]. Conflict of Interest : none declared. Contributor Information Pierre-Alain Chaumeil, Australian Centre for Ecogenomics, School of Chemistry and Molecular Biosciences, The University of Queensland, St Lucia, QLD 4072, Australia; Research Computing Center, The University of Queensland, St Lucia, QLD 4072, Australia. Aaron J Mussig, Australian Centre for Ecogenomics, School of Chemistry and Molecular Biosciences, The University of Queensland, St Lucia, QLD 4072, Australia. Philip Hugenholtz, Australian Centre for Ecogenomics, School of Chemistry and Molecular Biosciences, The University of Queensland, St Lucia, QLD 4072, Australia. Donovan H Parks, Australian Centre for Ecogenomics, School of Chemistry and Molecular Biosciences, The University of Queensland, St Lucia, QLD 4072, Australia.<anchor xml:id="a53"/></p>
    </body>
  </text>
</TEI>
