Skip to main content

Why Plasmid Classifiers Fail on Short-Read Contigs

An anatomy of the errors in 150 genomes: what a better model could fix, and what the data cannot tell any model.

Bioinformatics
Plasmids
Resistance
Benchmark
Where plasmid-chromosome classification of short-read contigs goes wrong, measured on 9,371 contigs from 150 genomes of six taxa: the assembly graph, read depth, and the proteins behind Platon’s misses.
Author
Affiliation

Vahhab Piranfar

Independent researcher, Jersey City, NJ, USA

Published

November 10, 2026

There are dozens of tools that call a short-read contig plasmid or chromosome (1), and benchmarks agree that they do worse on plasmids that are poorly represented in databases (2). In a benchmark of twelve of them I measured how often they are wrong. This note asks why. In this data, the answer is mostly not that the tools are poorly built. The largest group of errors sits where a short-read assembly does not carry the information that would settle the question.

I split the problem along three lines a classifier could use: how a contig is connected in the assembly graph, how deep it is covered by reads, and which proteins it carries. Each one was measured against the true location of every contig.

The genomes and the answer key

The data are 150 public genomes (3), 25 from each of six taxa: Citrobacter spp., Enterobacter spp., Enterococcus faecalis, Enterococcus faecium, Klebsiella pneumoniae and Serratia spp. Each has Illumina reads and a complete genome deposited for the same isolate. The isolates were chosen to be distinct from one another.

I assembled the Illumina reads with Unicycler (4) and aligned every contig to its own isolate’s complete genome. A contig of at least 1 kb took the label of the replicon it matched (chromosome or plasmid, as named in the deposited genome) when the match was clear. That gives 9,371 labeled contigs: 2,241 plasmid and 7,130 chromosome. The twelve classifiers, geNomad (5), gplas2 and PlasmidEC (6), HyAsP (7), MOB-recon (8), PLASMe (9), PlaScope (10), Plasmer (11), PlasmidFinder (12), Platon (13), RFPlasmid (14) and plASgraph2 (15), are the same versions, settings and databases as in the benchmark.

Step 1: the assembly graph does not join a plasmid’s pieces

A plasmid of 100 kb usually breaks into many contigs. A natural idea, and the basis of several tools (15,16,17), is to find one piece that is clearly plasmid and follow the assembly graph to its neighbors. To test whether that can work, I removed the repeat segments from each graph (the segments where the graph branches) and asked what each labeled contig is still connected to.

Stacked bars of graph context for plasmid and chromosome contigs under two repeat definitions

What each labeled contig is still connected to after repeat segments are removed from the assembly graph, under a lenient and a strict definition of a repeat.

How to read it. Each bar is one set of contigs, split by what remains attached to them. Blue means the contig is still linked only to contigs of its own kind (the useful case). Red means it is linked to a contig of the other kind. Gray means it is linked to nothing.

With a lenient definition (a segment is a repeat only if the graph branches on both of its ends), 36% of plasmid contigs are still linked to chromosome contigs, and only 14% are linked to plasmid contigs alone: the graph leads in the wrong direction more often than the right one. With the strict definition (branching on either end), the wrong links disappear, and so do almost all the right ones: 89% of plasmid contigs are linked to nothing. Only 1% keep a link to another plasmid contig.

This is how short-read assemblers work. They stop a contig exactly where it runs into a repeat, such as an insertion sequence, and the same repeats occur on the plasmid and on the chromosome (18,19). Every path from one plasmid piece to the next passes through one of them. Following the graph cannot separate the two without information the reads do not carry.

Step 2: read depth decides one direction

A plasmid can be present in more copies per cell than the chromosome (20), so its contigs collect more reads. I divided each contig’s read depth by the depth of the isolate’s chromosome.

Histograms of relative read depth for plasmid and chromosome contigs on a log scale

Read depth of each contig relative to its isolate’s chromosome, for plasmid and chromosome contigs. Repeat segments are left out. The shaded band is chromosome-like depth, 0.8 to 1.25 times.

How to read it. The black outline is chromosome contigs and the blue fill is plasmid contigs, each scaled to sum to one. The horizontal axis is relative depth on a log scale: 1 means the same depth as the chromosome, 2 means twice as deep.

Chromosome contigs sit in a narrow peak: 87% fall between 0.8 and 1.25 times, and only 0.1% reach twice the chromosome’s depth. Plasmid contigs spread out: 21% are at twice the chromosome’s depth or more. So depth is close to proof in one direction: a contig twice as deep as the chromosome is almost certainly plasmid. In the other direction it says nothing. 35% of plasmid contigs have the depth of the chromosome, as expected for plasmids kept at about one copy per cell.

Five zones of difficulty

Graph shape and depth together split the contigs into zones that need no classifier to define.

Zone Contigs Plasmid Chromosome Share plasmid Tool majority wrong
Circular, or depth 2x or more 441 433 8 0.982 32
Chromosome-like depth (0.8-1.25x) 6,304 708 5,596 0.112 166
Depth < 0.8x 838 257 581 0.307 61
Depth 1.25-2x 874 624 250 0.714 47
Repeat segments 914 219 695 0.240 94
All 9,371 2,241 7,130 0.239 400

How to read it. “Share plasmid” is the fraction of contigs in the zone that are plasmid. It is also the precision you would get by calling every contig in that zone plasmid, with no tool at all. The last column counts the contigs on which more of the twelve tools were wrong than right.

  • Circular, or twice the chromosome’s depth. 433 of 441 contigs are plasmid. Calling all of them plasmid is right 98% of the time, yet the majority of the twelve tools was wrong on 32 of them. Any pipeline can take these for free.
  • Chromosome-like depth. This is where the problem lives: 6,304 contigs, of which only 11% are plasmid, and 166 of the 400 contigs the tools get wrong by majority.
  • Repeat segments. 914 contigs that are themselves repeats. They account for another 94 majority errors.

The tools in the hard zone

Dot plot of precision and recall per tool in the chromosome-like depth zone

Precision and recall of each tool, and of the majority of all twelve, on the 6,304 contigs at chromosome-like depth.
Tool Precision Recall False plasmid calls
Platon 0.891 0.770 67
MOB-recon 0.858 0.826 97
Majority of the 12 0.857 0.895 106
Plasmer 0.829 0.936 137
PlasmidFinder 0.769 0.099 21
HyAsP 0.752 0.668 156
plASgraph2 0.731 0.335 87
gplas2 * 0.586 0.873 437
PlasmidEC * 0.575 0.904 473
PLASMe 0.554 0.962 549
RFPlasmid * 0.486 0.855 641
geNomad 0.386 0.631 712
PlaScope * 0.296 0.544 917

How to read it. Each row is one tool. The blue circle is precision, the share of its plasmid calls that were right. The orange square is recall, the share of plasmid contigs it found. Rows are ordered by precision.

* PlaScope and PlasmidEC were run with their E. coli settings, gplas2 starts from PlasmidEC’s calls, and RFPlasmid used its Enterobacteriaceae model on every isolate, including the 50 Enterococcus. This cohort spans six taxa, so these four rows are not a fair test of those tools.

Platon was the most precise tool in this zone: 89% of its plasmid calls were right, and it found 77% of the plasmid contigs. MOB-recon and the majority vote came next. Because Platon is the most precise tool here, and because its method can be reproduced exactly, the rest of this note uses it as a lens: when the most precise tool misses, why does it miss?

How Platon decides

Platon (13) predicts the genes on each contig and looks each protein up in a table built from complete reference genomes. A protein matches if it is at least 90% identical over at least 80% of both lengths. Each table entry carries a score: positive if that protein is found mostly on plasmids, negative if mostly on chromosomes. A contig’s score is the sum of its proteins’ scores divided by the number of proteins it carries. Proteins that match nothing count as zero.

I repeated this lookup for all 620,476 proteins in the 150 assemblies, with Platon’s own versions of Prodigal (21) and DIAMOND (22) and its database (version 1.5.0), and checked it against Platon’s real calls. Of Platon’s 1,867 plasmid calls, 1,642 have a reproduced score of 0.7 or more, its strictest cut-off. None of its 7,504 chromosome calls do.

Why Platon misses plasmid contigs

In the chromosome-like depth zone, Platon missed 163 of 708 plasmid contigs. I sorted each one by what its proteins showed.

Stacked bars of the reasons behind Platon's calls in the chromosome-like depth zone

What the proteins of each contig showed, for the plasmid contigs Platon found, the ones it missed, and the chromosome contigs it called plasmid, all at chromosome-like depth.
Reason Contigs Share What it means
Proteins look chromosomal 108 66% The proteins Platon recognizes add up to a chromosome-leaning score.
No protein in the table 33 20% None of the contig’s proteins is in Platon’s table.
Plasmid proteins, score diluted 22 13% Plasmid-leaning proteins are present, but averaging over every protein keeps the score low.

How to read it. Each bar is one group of contigs. Dark blue means the contig carries proteins the table scores as plasmid and its score is high. Light blue means plasmid proteins are there but the average stays low. Orange means the proteins the table recognizes score as chromosomal. Gray means none of its proteins is in the table.

Two-thirds of the misses are orange. These plasmid contigs carry proteins that Platon recognizes, almost perfectly (median identity 99.3%), and the table says those proteins usually live on chromosomes.

Histograms of the share of chromosome-leaning proteins per contig for three groups

For each contig, the share of its recognized proteins that the table scores as chromosomal.

How to read it. Each contig counts once. A contig at 100% carries only proteins the table calls chromosomal; one at 0% carries only plasmid-leaning proteins.

Chromosome contigs sit at 100%, and the plasmid contigs Platon found sit near 0%. The missed plasmid contigs sit mostly with the chromosome: their median is 75%, and 83 of the 108 have at least half of their recognized proteins scored as chromosomal. Among the most common of these proteins are lactose operon genes (beta-galactosidase, lactose permease, the lactose repressor), ABC transporters, a cell division protein and transposases. Apart from the transposases, these are genes the table mostly sees on chromosomes, sitting in these isolates on a plasmid.

I tested one way the isolate itself could give this away: if the plasmid carries a copy of a chromosomal gene, the same gene might appear twice in the assembly. It does not, in most cases. Only 4.6% of these contigs have half or more of their proteins on a second contig of the same isolate, against 4.5% of chromosome contigs that Platon called plasmid.

A protein that is 99% identical to one usually found on chromosomes does not say where it sits now. Only its surroundings can, and in a short-read assembly the surroundings are what is missing: depth looks like the chromosome’s (this is the chromosome-like zone) and the graph link to the rest of the plasmid runs through a repeat (Step 1).

The gray part, 33 contigs whose proteins are not in the table at all, is the only part a better reader of proteins could reach. Even that is not a clean signal: 175 chromosome contigs in the same zone are also absent from the table. If all 33 were recovered, Platon’s recall in this zone would rise from 0.770 to 0.816.

One reference genome is probably wrong

While checking these contigs I found one isolate where the answer key itself looks wrong. The deposited genome of an E. faecalis isolate (BioSample SAMN39634310) has a 2.21 Mb chromosome and a 748 kb replicon labeled plasmid. Together they make about 2.96 Mb, the normal size of a whole E. faecalis genome, and the contigs from the “plasmid” carry chromosomal proteins at chromosomal depth. It is most likely part of the chromosome, and on those contigs Platon was right.

It is the only one of the 150 references with a short chromosome and a replicon this large; one Citrobacter genome has a 448 kb plasmid beside a normal 5.03 Mb chromosome. Without the E. faecalis isolate, Platon misses 152 plasmid contigs in the zone instead of 163, and 97 of them (64%) still carry proteins that look chromosomal. The conclusion does not depend on it.

By taxon

Taxon Isolates Plasmid contigs at chromosome-like depth Missed by Platon Proteins look chromosomal No protein in the table
Citrobacter spp. 25 114 29 19 6
Enterobacter spp. 25 43 14 10 2
Enterococcus faecalis 25 37 17 14 1
Enterococcus faecium 25 287 38 15 15
Klebsiella pneumoniae 25 208 54 47 4
Serratia spp. 25 19 11 3 5

How to read it. Each row is one taxon of 25 genomes. The third column counts plasmid contigs at chromosome-like depth; the last two split Platon’s misses among them by the reason above.

The K. pneumoniae misses are almost all of one kind: 47 of 54 carry proteins that look chromosomal. E. faecium has the most plasmid contigs at chromosome-like depth, 287, and the largest group of misses with no protein in the table, 15 of 38.

What this means for building a better tool

  • The easy fifth is already solved. Circular contigs and contigs twice as deep as the chromosome are plasmid 98% of the time. A pipeline should take these without asking any classifier.
  • The graph cannot carry the label. Nearly every plasmid contig is cut off by repeats, so methods that propagate a label along the graph hit the same wall.
  • In the hard zone, the limit is the data. Two-thirds of the most precise tool’s misses are plasmid contigs whose recognized proteins look chromosomal. A new model reading those proteins, at any depth of representation, reads the same proteins. The location is carried only by context that short reads do not provide.
  • For these contigs the honest answer is “unknown”, or long reads. A hybrid assembly resolves them directly; that is how the answer key here was built.

Limits

  • One collection of 150 genomes. The depth cut-offs (0.8, 1.25 and 2) were chosen while looking at these data, so the zone sizes need confirming in another cohort.
  • The analysis of misses uses Platon’s table as its lens. Other tools score proteins differently, and a gene the table scores as chromosomal may be common on plasmids in taxa the table under-represents.
  • Labels come from genomes deposited by others. One is probably wrong (see above); others may be too. Contigs without a clear label were left out.
  • The repeat definition is simple: a segment where the graph branches. A different definition changes the graph numbers, as the two bars in the first figure show.
  • Four of the twelve tools were run with settings for another taxon on part of this cohort.

Data

How to cite

Piranfar V. Why Plasmid Classifiers Fail on Short-Read Contigs [Internet]. Jersey City (NJ): Vahhab Piranfar; 2026 Nov 10. Available from: https://vahhabpiranfar.com/posts/why-plasmid-classifiers-fail/

References

1.
Connor CH, Wick RR, Gorrie CL, Winkler MA, Löhr IH, Ingle DJ, et al. Benchmarking of tools for resolving the plasmidome from short-read assemblies for Klebsiella pneumoniae [Preprint]. bioRxiv. 2025. doi:10.1101/2025.07.24.666686
2.
Teixeira M, Souque C, Worby CJ, Shea T, Commins N, Smith JT, et al. Circling in on plasmids: benchmarking plasmid detection and reconstruction tools for short-read data from diverse species. Brief Bioinform. 2025 Nov 1;26(6):bbaf589. doi:10.1093/bib/bbaf589
3.
Piranfar V. Prospective evaluation of PlasmidCall on 150 bacterial genomes across six taxa: assemblies, reference labels, classifier calls and evaluation evidence. Zenodo; 2026. doi:10.5281/zenodo.22086357
4.
Wick RR, Judd LM, Gorrie CL, Holt KE. Unicycler: Resolving bacterial genome assemblies from short and long sequencing reads. PLoS Comput Biol. 2017 Jun 8;13(6):e1005595. doi:10.1371/journal.pcbi.1005595
5.
Camargo AP, Roux S, Schulz F, Babinski M, Xu Y, Hu B, et al. Identification of mobile genetic elements with geNomad. Nat Biotechnol. 2024 Aug;42(8):1303-12. doi:10.1038/s41587-023-01953-y
6.
Paganini JA, Kerkvliet JJ, Vader L, Plantinga NL, Meneses R, Corander J, et al. PlasmidEC and gplas2: an optimized short-read approach to predict and reconstruct antibiotic resistance plasmids in Escherichia coli. Microb Genom. 2024 Feb 20;10(2):e001193. doi:10.1099/mgen.0.001193
7.
Müller R, Chauve C. HyAsP, a greedy tool for plasmids identification. Bioinformatics. 2019 Nov 1;35(21):4436-9. doi:10.1093/bioinformatics/btz413
8.
Robertson J, Nash JHE. MOB-suite: software tools for clustering, reconstruction and typing of plasmids from draft assemblies. Microb Genom. 2018 Aug 1;4(8):e000206. doi:10.1099/mgen.0.000206
9.
Tang X, Shang J, Ji Y, Sun Y. PLASMe: a tool to identify PLASMid contigs from short-read assemblies using transformer. Nucleic Acids Res. 2023 Aug 25;51(15):e83. doi:10.1093/nar/gkad578
10.
Royer G, Decousser JW, Branger C, Dubois M, Médigue C, Denamur E, et al. PlaScope: a targeted approach to assess the plasmidome from genome assemblies at the species level. Microb Genom. 2018 Sep 1;4(9):e000211. doi:10.1099/mgen.0.000211
11.
Zhu Q, Gao S, Xiao B, He Z, Hu S. Plasmer: an Accurate and Sensitive Bacterial Plasmid Prediction Tool Based on Machine Learning of Shared k-mers and Genomic Features. Microbiol Spectr. 2023 Jun 15;11(3):e04645-22. doi:10.1128/spectrum.04645-22
12.
Carattoli A, Zankari E, García-Fernández A, Voldby Larsen M, Lund O, Villa L, et al. In Silico Detection and Typing of Plasmids using PlasmidFinder and Plasmid Multilocus Sequence Typing. Antimicrob Agents Chemother. 2014 Jul;58(7):3895-903. doi:10.1128/AAC.02412-14
13.
Schwengers O, Barth P, Falgenhauer L, Hain T, Chakraborty T, Goesmann A. Platon: identification and characterization of bacterial plasmid contigs in short-read draft assemblies exploiting protein sequence-based replicon distribution scores. Microb Genom. 2020 Oct 1;6(10):e000398. doi:10.1099/mgen.0.000398
14.
van der Graaf-van Bloois L, Wagenaar JA, Zomer AL. RFPlasmid: predicting plasmid sequences from short-read assembly data using machine learning. Microb Genom. 2021 Nov 30;7(11):e000683. doi:10.1099/mgen.0.000683
15.
Sielemann J, Sielemann K, Brejová B, Vinař T, Chauve C. plASgraph2: using graph neural networks to detect plasmid contigs from an assembly graph. Front Microbiol. 2023 Oct 6;14:1267695. doi:10.3389/fmicb.2023.1267695
16.
Arredondo-Alonso S, Bootsma M, Hein Y, Rogers MRC, Corander J, Willems RJL, et al. gplas: a comprehensive tool for plasmid analysis using short-read graphs. Bioinformatics. 2020 Jun 1;36(12):3874-6. doi:10.1093/bioinformatics/btaa233
17.
Mane A, Faizrahnemoon M, Vinař T, Brejová B, Chauve C. PlasBin-flow: a flow-based MILP algorithm for plasmid contigs binning. Bioinformatics. 2023 Jun 30;39(Supplement_1):i288-96. doi:10.1093/bioinformatics/btad250
18.
Arredondo-Alonso S, Willems RJ, van Schaik W, Schürch AC. On the (im)possibility of reconstructing plasmids from whole-genome short-read sequencing data. Microb Genom. 2017 Oct 1;3(10):e000128. doi:10.1099/mgen.0.000128
19.
Partridge SR, Kwong SM, Firth N, Jensen SO. Mobile Genetic Elements Associated with Antimicrobial Resistance. Clin Microbiol Rev. 2018 Oct;31(4):e00088-17. doi:10.1128/CMR.00088-17
20.
Ramiro-Martínez P, de Quinto I, Lanza VF, Gama JA, Rodríguez-Beltrán J. Universal rules govern plasmid copy number. Nat Commun. 2025 Jul 2;16(1):6022. doi:10.1038/s41467-025-61202-5
21.
Hyatt D, Chen GL, LoCascio PF, Land ML, Larimer FW, Hauser LJ. Prodigal: prokaryotic gene recognition and translation initiation site identification. BMC Bioinformatics. 2010 Dec;11(1):119. doi:10.1186/1471-2105-11-119
22.
Buchfink B, Reuter K, Drost HG. Sensitive protein alignments at tree-of-life scale using DIAMOND. Nat Methods. 2021 Apr;18(4):366-8. doi:10.1038/s41592-021-01101-x