Transcript Quantification: Why an Isoform’s Read Count Is an Estimate With Error Bars You Rarely See
RNA-Seq Quantification
Transcript Quantification: Why an Isoform’s Read Count Is an Estimate With Error Bars You Rarely See
A gene’s isoforms are built from overlapping exons, so most reads cannot be pinned to a single transcript — they are compatible with several. Quantifiers resolve that ambiguity by splitting reads probabilistically and reporting one clean number per isoform. That number is a point estimate of a quantity the data could not fully determine, and the uncertainty it hides is not small.
Modern RNA-seq quantification feels solved. Tools like Salmon and kallisto take raw reads and, in minutes, return a tidy table of transcripts per million for every isoform in the annotation. The numbers are precise to several decimal places and drop straight into a differential-expression pipeline. The speed and the tidiness together create an impression of exactness that the underlying measurement does not support — because for transcripts, unlike genes, the reads frequently cannot say which isoform they came from.
The root cause is biological. A gene expresses multiple isoforms through alternative splicing, and those isoforms are assembled from an overlapping set of exons. A read falling on an exon shared by three isoforms is genuinely compatible with all three; nothing in the read identifies its transcript of origin. A substantial fraction of sequenced reads multi-map — align equally well to multiple reference transcripts — because they arise from sequence shared between transcripts, creating ambiguity about the true locus of origin and hence uncertainty in transcript abundances.1 This is not a rare pathology; for genes with many isoforms it is the normal case.
How quantifiers resolve the ambiguity — and what they hide
The tools do something principled with this ambiguity rather than discarding it. They group reads into equivalence classes — sets of reads compatible with the same subset of transcripts — and then use the expectation–maximization (EM) algorithm to distribute the shared reads among the transcripts in proportions that best explain the whole dataset. Reads that map equally well to more than one transcript have their count divided among the mappings rather than discarded, and Salmon uses EM to estimate abundances while correcting for sample-specific biases.2 A transcript that also has some uniquely mapping reads gives the EM an anchor: the unique evidence pins down its abundance, which in turn informs how the shared reads should be divided.
The problem is what happens when a transcript has few or no unique reads. Then its abundance is inferred almost entirely from shared reads that could equally have come from its sibling isoforms, and the EM’s split — while optimal — is barely constrained by the data. The point estimate still comes out to a specific number, because EM always converges to one. But that number could shift substantially if the reads had fallen slightly differently. The estimate is soft, and nothing about the TPM value in the output column tells you how soft.
Why gene-level is steadier than transcript-level
This is the deep reason gene-level analysis is more robust than transcript-level, and it follows directly from where the ambiguity lives. A read that is ambiguous among the isoforms of one gene is nonetheless unambiguous about the gene — all those isoforms belong to the same gene, so summing them collapses the ambiguity. Reads can usually be assigned unambiguously to a gene even when they are compatible with multiple transcripts of that gene, so gene-level estimates are generally more precise than transcript-level ones.1 Aggregating to the gene converts a hard assignment problem into an easy one. Transcript-level resolution buys you biological detail — which isoform switched — at the cost of statistical certainty, and that trade is real, not a tooling artifact you can optimize away.
The uncertainty also breaks the statistics in a subtler way. Differential-expression tools built for gene counts assume a particular mean–variance relationship. Read-to-transcript ambiguity disrupts that mean–variance relationship and interferes with the empirical-Bayes dispersion estimation those tools rely on, so software designed for gene-level testing does not perform optimally on raw transcript counts.3 Feeding transcript counts straight into a gene-level tool is not just noisier — it violates an assumption the tool depends on, which is why transcript-level differential expression needs methods that model the extra ambiguity explicitly.
The uncertainty is recoverable — if you ask for it
The essential point is that this softness is measurable; the quantifiers can tell you how uncertain each estimate is, but only if you request it. Both tools support inferential replicates — bootstrap or Gibbs resamples of the quantification. Bootstrap sampling resamples the reads for each sample, mimicking technical replicates from resequencing, and repeats the quantification on each resample, producing a distribution of counts for every transcript.4 A transcript whose count is stable across those resamples is well-determined; one whose count swings wildly is not. The spread is the error bar — the very thing the single TPM omits.
A family of methods exists precisely to use this information. Sleuth propagates inferential-replicate uncertainty into differential testing; edgeR’s catchSalmon/catchKallisto import the bootstrap resamples, estimate the ambiguity-induced overdispersion per transcript, and divide it out to produce scaled counts that behave properly in a standard gene-level framework.3 Others take a different route and group together transcripts that are indistinguishable given their inferential uncertainty, quantifying those groups rather than forcing a false resolution between transcripts the data cannot separate.5 All of them share one premise: treat the estimate as a distribution, not a scalar.
A TPM is a point estimate of a quantity the reads may not fully determine. For a transcript with unique reads it is trustworthy; for one whose reads are all shared with its siblings it is a guess dressed as a measurement. The difference is invisible in the abundance table and visible in the inferential replicates — which is exactly why the replicates, not the point estimate, are what a careful transcript-level analysis is built on.
What to do with transcript-level estimates
- Generate inferential replicates at quantification time. Run Salmon/kallisto with bootstrap or Gibbs samples; without them you have thrown away the only signal that distinguishes a solid estimate from a soft one.4
- Don’t feed raw transcript counts to gene-level DE tools. Read-to-transcript ambiguity breaks their mean–variance assumption; use uncertainty-aware methods (Sleuth, edgeR with
catchSalmon, and similar).3 - Aggregate to the gene when the question allows. If you don’t specifically need isoform resolution, gene-level estimates are more precise because the within-gene ambiguity cancels.1
- Treat low-unique-read transcripts with suspicion. An isoform whose abundance rests almost entirely on shared reads is barely constrained regardless of how clean its TPM looks.1
- Consider quantifying transcript groups. Where isoforms are statistically inseparable, grouping them reports what the data can actually support instead of a false split.5
Transcript quantification is a small instance of a pattern this series keeps returning to: a pipeline that always emits a clean, specific number, whether or not the data determined it. The EM converges, the TPM prints, the table looks complete — and none of that reflects whether the reads could tell the isoforms apart. The honest version of the measurement is not the point estimate; it is the point estimate together with the spread of the inferential replicates, and reaching for the second is the difference between reporting what you measured and reporting what the algorithm had to guess.
The Takeaway
Isoforms share exons, so most reads can’t be pinned to one transcript — the quantifier splits them probabilistically and reports a clean number that hides how much it had to guess.
Why it misleads: a transcript with its own unique reads is well-determined; one whose reads are all shared with siblings gets the same tidy TPM but enormous uncertainty. The abundance table shows the number, never the spread — and read-to-transcript ambiguity also breaks the mean–variance assumption that gene-level DE tools depend on.
What to do: generate inferential replicates (bootstrap/Gibbs) at quantification time, use uncertainty-aware DE methods (Sleuth, edgeR’s catchSalmon), aggregate to the gene when you don’t need isoform resolution, and distrust isoforms resting on shared reads alone.
The hard limit: transcript detail costs statistical certainty — a real trade, not a tooling flaw. The honest measurement is the point estimate plus the spread of its replicates, never the point estimate alone.
References
- Tree-based differential testing using inferential uncertainty for RNA-Seq. PMC. 2024. (On multi-mapping, transcript ambiguity, and gene-level estimates being more precise.) pmc.ncbi.nlm.nih.gov/articles/PMC10793400
- Quantification of transcript abundance using Salmon. HBC Training, Introduction to RNA-Seq. (EM assignment; shared reads divided among mappings; bias correction.) hbctraining.github.io — Salmon quasi-alignment
- Baldoni PL, Chen Y, Smyth GK, et al. Dividing out quantification uncertainty allows efficient assessment of differential transcript expression with edgeR. Nucleic Acids Research. 2024;52(3):e13. ncbi.nlm.nih.gov/pmc/articles/PMC10853777
- Faster and more accurate assessment of differential transcript expression with Gibbs sampling and edgeR v4. bioRxiv. 2024. (Bootstrap/Gibbs inferential replicates in kallisto and Salmon.) biorxiv.org/content/10.1101/2024.06.25.600555
- Isoform-level quantification for single-cell RNA sequencing. Bioinformatics. 2022;38(5):1287–1294. (Terminus/equivalence-class grouping by inferential uncertainty.) academic.oup.com/bioinformatics/article/38/5/1287

