<p>Some people use imputation to differentiate between true zeros and dropout in single-cell data. Some approaches you can look into:</p>

<ul>
<li><a href="https://github.com/VCCRI/CIDR" rel="nofollow noreferrer">CIDR</a> which was published in Genome Biology, <a href="https://genomebiology.biomedcentral.com/articles/10.1186/s13059-017-1188-0" rel="nofollow noreferrer">here</a></li>
<li><a href="https://github.com/Vivianstats/scImpute" rel="nofollow noreferrer">scImpute</a> , published in Nature, <a href="https://www.nature.com/articles/s41467-018-03405-7" rel="nofollow noreferrer">here</a></li>
<li>Seurat (<a href="http://satijalab.org/seurat/seurat_spatial_tutorial_part2.html" rel="nofollow noreferrer">addImputedScore</a>) , i.e. the famous R package, also <a href="https://cran.r-project.org/web/packages/Seurat/index.html" rel="nofollow noreferrer">here</a></li>
<li><a href="https://github.com/mohuangx/SAVER/" rel="nofollow noreferrer">SAVER</a> which was reviewed in Frontiers of Genetics, <a href="https://www.frontiersin.org/articles/10.3389/fgene.2019.00317/full" rel="nofollow noreferrer">here</a></li>
</ul>

CC BY-SA 4.0
2017-06-13T15:21:16.947Z
2019-05-12T11:00:50.710Z
2019-05-12T11:00:50.710Z
burger
<p>Actually this is one of the main problems you have when analyzing scRNA-seq data, and there is no established method for dealing with this. Different (dedicated) algorithms deal with it in different ways, but mostly you rely on how good the error modelling of your software is (a great read is the <a href="http://dx.doi.org/10.1038/nbt.3711" rel="noreferrer">review</a> by Wagner, Regev &amp; Yosef, esp. the section on "False negatives and overamplification"). There are a couple of options:</p>

<ul>
<li>You can <strong>impute values</strong>, i.e. fill in the gaps on technical zeros. <a href="https://github.com/VCCRI/CIDR" rel="noreferrer">CIDR</a> and <a href="https://github.com/Vivianstats/scImpute" rel="noreferrer">scImpute</a> do it directly. <a href="http://biorxiv.org/content/early/2017/02/25/111591" rel="noreferrer">MAGIC</a> and <a href="https://genomebiology.biomedcentral.com/articles/10.1186/s13059-015-0805-z" rel="noreferrer">ZIFA</a> project cells into a lower-dimensional space and use their similarity there to decide how to fill in the blanks.</li>
<li>Some people straight up <strong>exclude genes</strong> that are expressed in very low numbers. I can't give you citations off the top of my head, but many trajectory inference algorithms like <a href="https://bioconductor.org/packages/release/bioc/html/monocle.html" rel="noreferrer">monocle2</a> and <a href="https://github.com/jw156605/SLICER" rel="noreferrer">SLICER</a> have heuristics to choose informative genes for their analysis.</li>
<li>If the method you use for analysis doesn't model gene expression explicitly but <strong>uses some other distance method</strong> to quantify similarity between cells (like cosine distance, euclidean distance, correlation), then the noise introduced by dropout can be covered by the signal of genes that are highly expressed. Note that this is dangerous, as genes that are highly expressed are not necessarily informative.</li>
<li><strong>ERCC spike</strong> ins can help you reduce technical noise, but I am not familiar with the Chromium protocol so maybe it doesn't apply there (?)</li>
</ul>

<p>since we are speaking about noise, you might consider using a protocol with unique molecular identifiers. They remove the amplification errors almost completely, at least for the transcripts that you capture...</p>

<p>EDIT: Also, I would highly recommend using something more advanced than PCA to do the analysis. Software like the above-mentioned Monocle or <a href="https://bioconductor.org/packages/release/bioc/html/destiny.html" rel="noreferrer">destiny</a> is easy to operate and increases the power of your analysis considerably.</p>

CC BY-SA 3.0
2017-06-13T16:03:16.817Z
2017-06-13T16:03:16.817Z
galicae
<p>In single-cell RNA-seq data we have an inflated number of 0 (or near-zero) counts due to low mRNA capture rate and other inefficiencies.</p>

<p>How can we decide which genes are 0 due to gene dropout (lack of measurement sensitivity), and which are genuinely not expressed in the cell?</p>

<p>Deeper sequencing does not solve this problem as shown on the below saturation curve of 10x Chromium data:</p>

<p><a href="https://i.sstatic.net/cBXmF.png" rel="noreferrer"><img src="https://i.sstatic.net/cBXmF.png" alt="enter image description here"></a></p>

<p>Also see <a href="https://academic.oup.com/biostatistics/article/doi/10.1093/biostatistics/kxx053/4599254" rel="noreferrer">Hicks et al. (2017)</a> for a discussion of the problem:</p>

<blockquote>
  <p>Zero can arise in two ways:</p>
  
  <ol>
  <li><p>the gene was not expressing any RNA (referred to as <em>structural zeros</em>) or</p></li>
  <li><p>the RNA in the cell was not detected due to limitations of current experimental protocols (referred to as <em>dropouts</em>)</p></li>
  </ol>
</blockquote>

CC BY-SA 3.0
2017-06-13T13:06:11.010Z
Possible duplicate of [What methods are available to find a cutoff value for non-expressed genes in RNA-seq?](https://bioinformatics.stackexchange.com/questions/687/what-methods-are-available-to-find-a-cutoff-value-for-non-expressed-genes-in-rna)
gringer
CC BY-SA 3.0
2017-06-13T13:08:21.437Z
I don't think this is a duplicate: this question is about distinguishing between zero counts and the linked question is about distinguishing between zero and non-zero counts.
Peter
CC BY-SA 3.0
2017-06-13T13:09:07.493Z
Definitely not a duplicate, this is a very different question.
Devon Ryan
CC BY-SA 3.0
2017-06-13T13:15:12.507Z
Sorry, I missed the "single cell" mention. Despite that, I expect that some answers are likely to overlap, even if the problem is different. See, for example, [Kristoffer's answer](https://bioinformatics.stackexchange.com/a/691/73).... er, which may have been posted in the wrong question.
gringer
CC BY-SA 3.0
2017-06-28T08:11:47.930Z
hey @Peter if the answers here are not satisfactory you could maybe add more info to the question or comment on the answers
galicae
<rna-seq><ngs>
How can we distinguish between true zero and dropout-zero counts in single-cell RNA-seq?
# How can we distinguish between true zero and dropout-zero counts in single-cell RNA-seq?

(Asked by: username_0 on 2017-06-13)

In single-cell RNA-seq data we have an inflated number of 0 (or near-zero) counts due to low mRNA capture rate and other inefficiencies.

How can we decide which genes are 0 due to gene dropout (lack of measurement sensitivity), and which are genuinely not expressed in the cell?

Deeper sequencing does not solve this problem as shown on the below saturation curve of 10x Chromium data:

[![enter image description here](https://i.sstatic.net/cBXmF.png)](https://i.sstatic.net/cBXmF.png)

Also see [Hicks et al. (2017)](https://academic.oup.com/biostatistics/article/doi/10.1093/biostatistics/kxx053/4599254) for a discussion of the problem:

> Zero can arise in two ways:
>
> 1. the gene was not expressing any RNA (referred to as *structural zeros*) or
> 2. the RNA in the cell was not detected due to limitations of current experimental protocols (referred to as *dropouts*)

**Tags:** rna-seq, ngs
> **Comments:**
> **username_1**: Possible duplicate of [What methods are available to find a cutoff value for non-expressed genes in RNA-seq?](https://bioinformatics.stackexchange.com/questions/687/what-methods-are-available-to-find-a-cutoff-value-for-non-expressed-genes-in-rna)  
> **username_0**: I don't think this is a duplicate: this question is about distinguishing between zero counts and the linked question is about distinguishing between zero and non-zero counts.  
> **username_2**: Definitely not a duplicate, this is a very different question.  
> **username_1**: Sorry, I missed the "single cell" mention. Despite that, I expect that some answers are likely to overlap, even if the problem is different. See, for example, [Kristoffer's answer](https://bioinformatics.stackexchange.com/a/691/73).... er, which may have been posted in the wrong question.  
> **username_3**: hey @Peter if the answers here are not satisfactory you could maybe add more info to the question or comment on the answers  

---

## 2 answers

### Answer by username_3 on 2017-06-13. Score: 15 | Accepted answer

Actually this is one of the main problems you have when analyzing scRNA-seq data, and there is no established method for dealing with this. Different (dedicated) algorithms deal with it in different ways, but mostly you rely on how good the error modelling of your software is (a great read is the [review](http://dx.doi.org/10.1038/nbt.3711) by Wagner, Regev & Yosef, esp. the section on "False negatives and overamplification"). There are a couple of options:

* You can **impute values**, i.e. fill in the gaps on technical zeros. [CIDR](https://github.com/VCCRI/CIDR) and [scImpute](https://github.com/Vivianstats/scImpute) do it directly. [MAGIC](http://biorxiv.org/content/early/2017/02/25/111591) and [ZIFA](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-015-0805-z) project cells into a lower-dimensional space and use their similarity there to decide how to fill in the blanks.
* Some people straight up **exclude genes** that are expressed in very low numbers. I can't give you citations off the top of my head, but many trajectory inference algorithms like [monocle2](https://bioconductor.org/packages/release/bioc/html/monocle.html) and [SLICER](https://github.com/jw156605/SLICER) have heuristics to choose informative genes for their analysis.
* If the method you use for analysis doesn't model gene expression explicitly but **uses some other distance method** to quantify similarity between cells (like cosine distance, euclidean distance, correlation), then the noise introduced by dropout can be covered by the signal of genes that are highly expressed. Note that this is dangerous, as genes that are highly expressed are not necessarily informative.
* **ERCC spike** ins can help you reduce technical noise, but I am not familiar with the Chromium protocol so maybe it doesn't apply there (?)

since we are speaking about noise, you might consider using a protocol with unique molecular identifiers. They remove the amplification errors almost completely, at least for the transcripts that you capture...

EDIT: Also, I would highly recommend using something more advanced than PCA to do the analysis. Software like the above-mentioned Monocle or [destiny](https://bioconductor.org/packages/release/bioc/html/destiny.html) is easy to operate and increases the power of your analysis considerably.


---

### Answer by username_4 on 2017-06-13. Score: 1

Some people use imputation to differentiate between true zeros and dropout in single-cell data. Some approaches you can look into:

* [CIDR](https://github.com/VCCRI/CIDR) which was published in Genome Biology, [here](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-017-1188-0)
* [scImpute](https://github.com/Vivianstats/scImpute) , published in Nature, [here](https://www.nature.com/articles/s41467-018-03405-7)
* Seurat ([addImputedScore](http://satijalab.org/seurat/seurat_spatial_tutorial_part2.html)) , i.e. the famous R package, also [here](https://cran.r-project.org/web/packages/Seurat/index.html)
* [SAVER](https://github.com/mohuangx/SAVER/) which was reviewed in Frontiers of Genetics, [here](https://www.frontiersin.org/articles/10.3389/fgene.2019.00317/full)


---

