<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xml:lang="en">
  <teiHeader>
    <fileDesc>
      <titleStmt>
        <title>Normalization and variance stabilization of single-cell RNA-seq data using regularized negative binomial regression</title>
        <author>Christoph Hafemeister</author>
        <author>Rahul Satija</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>Normalization and variance stabilization of single-cell RNA-seq data using regularized negative binomial regression</title>
          <date>2019</date>
          <publisher>Genome biology</publisher>
          <idno type="DOI">10.1186/s13059-019-1874-1</idno>
          
          <idno type="record">hafemeister2019-normalization-and-variance-stabili</idno>
          <note type="staged-file">hafemeister2019-normalization-and-variance-stabili.txt, the project's staged copy</note>
          <note type="text-sha1">be76b92c9173be8657a8ccdb05ba1402d24e0d06</note>
          <note type="rights">cc-by</note>
        </bibl>
      </sourceDesc>
    </fileDesc>
    <profileDesc>
      <textClass><keywords><term>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">0 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" type="object_of_study" ana="#object_of_study" resp="#paper">
        <label>normalisation of single-cell RNA-seq counts - how to remove the effect of sequencing depth without removing the biology along with it</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t1" type="research_question" ana="#research_question" resp="#paper">
        <label>whether any single per-cell scaling factor can normalise genes of different abundance, and if not, what error model should replace it</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t2" type="contribution" ana="#contribution" resp="#paper">
        <label>regularized negative binomial regression - fit a GLM per gene with depth as covariate, pool parameters across genes of similar abundance, and take the Pearson residuals as normalised values</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t3" type="claim_type" ana="#claim_type" resp="#paper">
        <label>method</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t4" type="phenomenon" ana="#phenomenon" resp="#paper">
        <label>a preprocessing choice that decides what counts as biological signal - the same data yielding heterogeneity or not depending on how the error model is constrained</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t5" type="method" ana="#method" resp="#paper">
        <label>system-or-tool-building</label>
        <term>system-or-tool-building</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t6" type="mechanisms" ana="#mechanisms[0]" resp="#tagger" cert="0.95">
        <label>counts of low- and high-abundance genes respond differently to sequencing depth, so one factor per cell cannot correct both; dividing by depth leaves the high-abundance tiers still confounded and the variance contribution of the other tiers dampened</label>
        <term>abundance-dependent depth effect defeating a single scaling factor</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t7" type="mechanisms" ana="#mechanisms[1]" resp="#tagger" cert="0.95">
        <label>an unconstrained per-gene model has enough freedom to explain real cell-type differences as technical effects of depth, so the residuals it produces have had the biology subtracted along with the noise - even cell-type markers come out with low residual variance</label>
        <term>overfitting absorbing biological signal</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t8" type="mechanisms" ana="#mechanisms[2]" resp="#tagger" cert="0.95">
        <label>estimating each gene&#x27;s parameters independently makes them a function of that gene&#x27;s sampling noise; smoothing them against mean abundance replaces the noise with the population trend, and the estimates become reproducible across bootstraps</label>
        <term>pooling across genes as a constraint</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t9" type="mechanisms" ana="#mechanisms[3]" resp="#tagger" cert="0.95">
        <label>megakaryocytes carry little RNA, so they appear at low sequencing depth for reasons of biology rather than sampling; an unconstrained fit reads that as a negative slope between depth and the marker&#x27;s count, which cannot be true of any single cell type</label>
        <term>low RNA content masquerading as a depth relation</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t10" type="limitations" ana="#limitations[0]" resp="#tagger" cert="0.95">
        <label>the regularisation assumes the majority of genes do not vary biologically, which the authors say may be overly simplistic on a highly heterogeneous sample</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t11" type="limitations" ana="#limitations[1]" resp="#tagger" cert="0.95">
        <label>the kernel bandwidth is a user-adjustable parameter; robust over an order of magnitude and producing over- or under-smoothing at the extremes</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t12" type="limitations" ana="#limitations[2]" resp="#tagger" cert="0.95">
        <label>the batch extension requires all cell types to share a similar batch effect, which is an assumption about the experiment rather than a property of the model</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t13" type="limitations" ana="#limitations[3]" resp="#tagger" cert="0.85">
        <label>Pearson residuals are an intermediate rather than a model - an alternative would fit the count distribution directly, as GLM-PCA does, instead of passing residuals to methods that assume normal errors</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t14" type="transfers" ana="#transfers[0]" resp="#tagger" cert="0.95">
        <label>parameter regularisation by pooling across similar features, carried from bulk RNA-seq differential-expression error models into single-cell normalisation</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t15" type="transfers" ana="#transfers[1]" resp="#tagger" cert="0.95">
        <label>generalized linear models and Pearson residuals, carried from regression theory to serve as the normalised data values themselves rather than as a diagnostic</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t16" type="controls" ana="#controls[0]" resp="#tagger" cert="0.95">
        <label>a dataset with NO biological variation by construction - droplets that are technical replicates of one bulk RNA sample - run through the unregularised model to see whether the parameter heterogeneity persists when biology cannot explain it</label>
        <note>eliminates: true biological variation as the explanation of the parameter heterogeneity across genes - in a sample where every droplet is a technical replicate of one bulk RNA extract there is no biology left that could produce it · outcome: failed</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t17" type="controls" ana="#controls[1]" resp="#tagger" cert="0.95">
        <label>the same control dataset run through the FINISHED method, where a correct model must find no high-variance genes at all</label>
        <note>eliminates: residual technical variation as the source of the high-variance genes the finished method selects - run on a sample containing no biology, a correct model must find none, and does · outcome: held</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t18" type="controls" ana="#controls[2]" resp="#tagger" cert="0.95">
        <label>bootstrapping the fit over randomised subsets of cells, to separate real between-gene differences from sampling variation in the estimates</label>
        <note>eliminates: real between-gene differences as the explanation of the parameter spread - estimates that move when the cells are resampled are measuring the sample and not the gene · outcome: failed</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t19" type="controls" ana="#controls[3]" resp="#tagger" cert="0.95">
        <label>substituting a Poisson and an unconstrained NB error model into the same pipeline, so the regularisation step is tested rather than assumed</label>
        <note>eliminates: the generalised linear model framework itself as the source of the result - swapping only the error model shows the work is done by the regularisation, not by using a GLM · outcome: held</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t20" type="controls" ana="#controls[4]" resp="#tagger" cert="0.95">
        <label>checking what the high-residual-variance genes actually are, rather than reporting that some exist</label>
        <note>eliminates: residual technical noise as the explanation of the surviving high-variance genes - noise does not produce a list that is exclusively markers of known immune cell subsets · outcome: held</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t21" type="controls" ana="#controls[5]" resp="#tagger" cert="0.95">
        <label>repeating the whole analysis on five UMI datasets from plate- and droplet-based protocols rather than on the one dataset the method was developed against</label>
        <note>eliminates: the single development dataset, and the droplet protocol it came from, as the source of the result · outcome: held</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t22" type="concepts" ana="#concepts[0]" resp="#paper" cert="0.95">
        <label>normalization</label>
        <term>normalization</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t23" type="concepts" ana="#concepts[1]" resp="#paper" cert="0.95">
        <label>size factor</label>
        <term>size factor</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t24" type="concepts" ana="#concepts[2]" resp="#paper" cert="0.95">
        <label>Pearson residuals</label>
        <term>Pearson residuals</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t25" type="concepts" ana="#concepts[3]" resp="#paper" cert="0.95">
        <label>overfitting</label>
        <term>overfitting</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t26" type="concepts" ana="#concepts[4]" resp="#paper" cert="0.95">
        <label>regularization</label>
        <term>regularization</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t27" type="concepts" ana="#concepts[5]" resp="#paper" cert="0.95">
        <label>Chromium control dataset</label>
        <term>Chromium control dataset</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t28" type="concepts" ana="#concepts[6]" resp="#paper" cert="0.95">
        <label>kernel bandwidth</label>
        <term>kernel bandwidth</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t29" type="concepts" ana="#concepts[7]" resp="#paper" cert="0.95">
        <label>zero-inflated negative binomial</label>
        <term>zero-inflated negative binomial</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t30" type="concepts" ana="#concepts[8]" resp="#paper" cert="0.95">
        <label>Poisson</label>
        <term>Poisson</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t31" type="concepts" ana="#concepts[9]" resp="#paper" cert="0.95">
        <label>sequencing depth</label>
        <term>sequencing depth</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t32" type="concepts" ana="#concepts[10]" resp="#paper" cert="0.95">
        <label>PPBP</label>
        <term>PPBP</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t33" type="concepts" ana="#concepts[11]" resp="#paper" cert="0.95">
        <label>regularized NB</label>
        <term>regularized NB</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t34" type="senses" ana="#senses[0]" resp="#tagger" cert="0.95">
        <label>parameter heterogeneity across genes - READING 1: true biological variation in the distribution of single-cell gene expression</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t35" type="senses" ana="#senses[1]" resp="#tagger" cert="0.95">
        <label>parameter heterogeneity across genes - READING 2: irreproducible variation driven by overfitting. Resolved in favour of this one by a control dataset with no biological variation in it, where the heterogeneity persisted</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t36" type="senses" ana="#senses[2]" resp="#tagger" cert="0.95">
        <label>&quot;effectively normalized&quot; - UNDER LOG-NORMALIZATION: true only of the bottom three abundance tiers; high-abundance genes remain confounded with sequencing depth</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t37" type="senses" ana="#senses[3]" resp="#tagger" cert="0.95">
        <label>&quot;effectively normalized&quot; - UNDER PEARSON RESIDUALS: level and variance independent of sequencing depth across the full range of expression</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t38" type="claim_relations" ana="#claim_relations[0]" resp="#tagger" cert="0.95">
        <label>critiques → size-factor normalisation for single-cell data - including recent methods that compute the factor more cleverly, since the problem is the single factor and not its estimation</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t39" type="claim_relations" ana="#claim_relations[1]" resp="#tagger" cert="0.95">
        <label>critiques → unconstrained negative binomial and zero-inflated negative binomial error models as used in current statistical and deep-learning methods for scRNA-seq</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t40" type="claim_relations" ana="#claim_relations[2]" resp="#tagger" cert="0.95">
        <label>builds-on → regularisation of error-model parameters across genes of similar abundance, standard in bulk RNA-seq differential expression and not previously used for single-cell normalisation</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t41" type="claim_relations" ana="#claim_relations[3]" resp="#tagger" cert="0.95">
        <label>qualifies → SCnorm&#x27;s conclusion that gene groups need separate treatment - reached for non-UMI data by a method that ignores the zero values which dominate droplet-based assays</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t42" type="concept_edges" ana="#concept_edges[0]" resp="#tagger" cert="0.95">
        <label>size factor —distinct-from→ normalization</label>
        <term>size factor</term>
        <term>normalization</term>
        <note>differs in: whether one constant per cell can serve genes across the whole range of abundance · the relation itself is separately evidenced · strength of the relation: 0.95 · differs in (stated by the tagger, no quotation): whether one constant per cell can serve genes across the whole range of abundance · the relation stated: a single per-cell scaling factor introduces different effects on genes of different average abundance, so it is not normalization for all of them
Audit 2026-09-28: DOUBTFUL - read against its span and kept, but the span says a single size factor has distinct effects; distinct-from is loose.</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t43" type="concept_edges" ana="#concept_edges[3]" resp="#tagger" cert="0.95">
        <label>Poisson —distinct-from→ regularized NB</label>
        <term>Poisson</term>
        <term>regularized NB</term>
        <note>differs in: whether the error model can represent overdispersion without absorbing the biology · the relation itself is separately evidenced · strength of the relation: 0.95 · differs in (stated by the tagger, no quotation): whether the error model can represent overdispersion without absorbing the biology · the relation stated: the single-parameter Poisson cannot represent overdispersion and leaves residual variance above one for highly expressed genes; the unconstrained NB overfits in the other direction and flattens the markers</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t44" type="content_tags" ana="#content_tags.findings[0]" resp="#tagger" cert="0.95">
        <label>a single per-cell scaling factor cannot normalise genes of different abundance, whatever method computes the factor</label>
        <term>a single per-cell scaling factor cannot normalise genes of different abundance, whatever method computes the factor</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t45" type="content_tags" ana="#content_tags.findings[1]" resp="#tagger" cert="0.95">
        <label>log-normalisation effectively normalises only the bottom three abundance tiers; high-abundance genes stay confounded with depth</label>
        <term>log-normalisation effectively normalises only the bottom three abundance tiers; high-abundance genes stay confounded with depth</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t46" type="content_tags" ana="#content_tags.findings[2]" resp="#tagger" cert="0.95">
        <label>an unconstrained negative binomial model overfits and removes biological variation along with technical variation</label>
        <term>an unconstrained negative binomial model overfits and removes biological variation along with technical variation</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t47" type="content_tags" ana="#content_tags.findings[3]" resp="#tagger" cert="0.95">
        <label>the parameter heterogeneity persists in a dataset containing no biological variation, which is what identifies it as overfitting</label>
        <term>the parameter heterogeneity persists in a dataset containing no biological variation, which is what identifies it as overfitting</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t48" type="content_tags" ana="#content_tags.findings[4]" resp="#tagger" cert="0.95">
        <label>after normalisation the genes with high residual variance are exclusively markers of known immune cell subsets</label>
        <term>after normalisation the genes with high residual variance are exclusively markers of known immune cell subsets</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t49" type="content_tags" ana="#content_tags.findings[5]" resp="#tagger" cert="0.95">
        <label>both non-regularised models fit a negative depth-count slope for a megakaryocyte marker, which cannot be true of a single cell type</label>
        <term>both non-regularised models fit a negative depth-count slope for a megakaryocyte marker, which cannot be true of a single cell type</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t50" type="content_tags" ana="#content_tags.definitions[0]" resp="#tagger" cert="0.95">
        <label>removing the influence of technical effects in the underlying molecular counts while preserving true biological variation</label>
        <term>normalization</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t51" type="content_tags" ana="#content_tags.definitions[1]" resp="#tagger" cert="0.95">
        <label>response residuals divided by the expected standard deviation, effectively a variance-stabilizing transformation putting lowly and highly expressed genes on a common scale</label>
        <term>Pearson residuals</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t52" type="content_tags" ana="#content_tags.definitions[2]" resp="#tagger" cert="0.95">
        <label>droplets each representing a technical replicate of a bulk RNA sample - no biological variation in it by construction</label>
        <term>Chromium control dataset</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t53" type="content_tags" ana="#content_tags.quantities[0]" resp="#tagger" cert="0.85">
        <label>the unit residual variance expected for a gene with no biological heterogeneity</label>
        <term>1</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t54" type="content_tags" ana="#content_tags.statistics[0]" resp="#tagger" cert="0.95">
        <label>negative binomial</label>
        <term>negative binomial</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t55" type="content_tags" ana="#content_tags.statistics[1]" resp="#tagger" cert="0.95">
        <label>kernel bandwidth</label>
        <term>kernel bandwidth</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t56" type="content_tags" ana="#content_tags.statistics[2]" resp="#tagger" cert="0.85">
        <label>generalized linear model</label>
        <term>generalized linear model</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t57" type="content_tags" ana="#content_tags.variables[0]" resp="#tagger" cert="0.95">
        <label>sequencing depth</label>
        <term>sequencing depth</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
    </spanGrp>
  </standOff>
  <text>
    <body>
      <p><note type="rights">The full text of this article is not redistributable, so it is
      not included here. The evidence sentences are withheld with it; the tag layer and its
      grounding status remain. The article itself is at https://doi.org/10.1186/s13059-019-1874-1.</note></p>
    </body>
  </text>
</TEI>
