text: user1771: I am preprocessing scRNA-seq data. What is the best practice in use to run both ComBat for batch effects removal, data imputation (to mitigate dropout) and library size normalization?
  I thought that library size should be run first, since it is per-cell normalization, then ComBat batch effects removal. On the original paper - Johnson et al. (2007) - it is stated that:
  
  We assume that the data have been normalized and expression values have been estimated for all genes and samples.
  
  However, I want to apply it to scRNA-seq data. Does this statement still hold? Additionally, I plan to apply imputation (e.g. with MAGIC) in the end. Is there any problem you can spot?
  Update
  I attach the PCA regarding an example Mus Musculus dataset in which different colors represent different mice. It seems clear to me that the first two principal components are affected by batches (mouse id).
  
  Update 2
  I rerun the PCA on raw counts data (the first PCA was on log-transformed data) and I obtain a different description of the dataset, in which batch effects seem not to be prevalent.
  
  
  user163: MAGIC assumes input data has been both library-size normalized, and either log or sqrt transformed prior to imputation (see also: MAGIC tutorial). Additionally, any graph-based methods (MAGIC, PHATE, t-SNE, UMAP, spectral clustering, Louvain, etc etc) will give flawed results if your data contains a batch effect, since the neighbourhood graph would reflect that structure of your batch effect, and worse, imputation would further reinforce this batch effect.
  Thus I would recommend the following pipeline:
  
  Library-size normalization
  Square root (or log) transform
  Batch effect removal
  Imputation
  
  Regarding your update, the reason you don't see the batch effect in the raw counts data is simply that the batch effect is not visible in the most highly expressed genes. Prior to transformation, the principal source of variation in your data is simply the expression of the most highly expressed genes - this is essentially masking the source of the batch effect, not removing it. I recommend never working with raw molecule counts in scRNAseq, as the raw counts data hides much of the heterogenity in your dataset, which is precisely what you are looking in doing single-cell RNA-seq.
  
original_text: 1771: <p>I am preprocessing scRNA-seq data. What is the best practice in use to run both ComBat for batch effects removal, data imputation (to mitigate dropout) and library size normalization?</p>
  
  <p>I thought that library size should be run first, since it is per-cell normalization, then ComBat batch effects removal. On the original paper - <a href="https://academic.oup.com/biostatistics/article/8/1/118/252073" rel="nofollow noreferrer">Johnson et al. (2007)</a> - it is stated that:</p>
  
  <blockquote>
    <p>We assume that the data have been normalized and expression values have been estimated for all genes and samples.</p>
  </blockquote>
  
  <p>However, I want to apply it to scRNA-seq data. Does this statement still hold? Additionally, I plan to apply imputation (e.g. with <a href="https://www.biorxiv.org/content/early/2017/02/25/111591" rel="nofollow noreferrer">MAGIC</a>) in the end. Is there any problem you can spot?</p>
  
  <h3>Update</h3>
  
  <p>I attach the PCA regarding an example Mus Musculus dataset in which different colors represent different mice. It seems clear to me that the first two principal components are affected by batches (mouse id).</p>
  
  <p><a href="https://i.stack.imgur.com/TeZGZ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/TeZGZ.png" alt="pca"></a></p>
  
  <h3>Update 2</h3>
  
  <p>I rerun the PCA on raw counts data (the first PCA was on log-transformed data) and I obtain a different description of the dataset, in which batch effects seem not to be prevalent.</p>
  
  <p><a href="https://i.stack.imgur.com/OfSUZ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/OfSUZ.png" alt="pca_raw"></a></p>
   163: <p>MAGIC assumes input data has been both library-size normalized, and either log or sqrt transformed prior to imputation (see also: <a href="http://nbviewer.jupyter.org/github/KrishnaswamyLab/magic/blob/master/python/tutorial_notebooks/bonemarrow_tutorial.ipynb" rel="nofollow noreferrer">MAGIC tutorial</a>). Additionally, any graph-based methods (MAGIC, PHATE, t-SNE, UMAP, spectral clustering, Louvain, etc etc) will give flawed results if your data contains a batch effect, since the neighbourhood graph would reflect that structure of your batch effect, and worse, imputation would further reinforce this batch effect.</p>
  
  <p>Thus I would recommend the following pipeline:</p>
  
  <ul>
  <li>Library-size normalization</li>
  <li>Square root (or log) transform</li>
  <li>Batch effect removal</li>
  <li>Imputation</li>
  </ul>
  
  <p>Regarding your <strong>update</strong>, the reason you don't see the batch effect in the raw counts data is simply that the batch effect is not visible in the most highly expressed genes. Prior to transformation, the principal source of variation in your data is simply the expression of the most highly expressed genes - this is essentially masking the source of the batch effect, not removing it. I recommend never working with raw molecule counts in scRNAseq, as the raw counts data hides much of the heterogenity in your dataset, which is precisely what you are looking in doing single-cell RNA-seq.</p>
  