This is a test version of Biostars. For the public version, visit https://www.biostars.org.
scRNA datasets integration

Dear all,

I am currently working with multiple scRNA-seq datasets that show complex batch effects. My goal is to integrate them in order to study cell–cell communication between tumour and immune populations.

I would like to ask for your advice regarding the appropriate preprocessing strategy. Is it recommended to perform batch correction within each dataset before integrating all datasets together, or is it sufficient to carry out standard preprocessing steps (QC, doublet detection/removal, normalization, etc.) for each dataset and then directly perform dataset integration, letting the integration method handle batch effects?

Additionally, could you please share any references or recommended pipelines for integrating multiple scRNA-seq datasets?

Thank you very much in advance for your guidance.

Best regards, Manar

scrnaseq integration batch_correction

I am currently working with multiple scRNA-seq datasets that show complex batch effects.

It would be best to clarify if these are your own datasets (i.e. you had control over their generation) or a publicly available collection. This can be an important consideration.

They are public datasets

3 answers

The more I use scRNA-seq over the years, the more I grow sceptical over integrating datasets for anything beyond visualization. Remember that cell-cell communication is gene-by-gene (or at least ligand-pairs vs receptor pairs), so this is nothing that Harmony and such tools help with. After all, these all return low-dimensional space corrections, not per-gene corrections. I would consider to do the analysis per dataset, and then go for a method that integrates the results, for example checking consistency by meta-analysis. I hope it is needless to say that the sender and receiver cells must come from the same dataset and batch, otherwise it's a pointless analysis.

That means, do per dataset the full workflow from QC over all the cluster-fu and whatever else is needed to do the communication analysis. That is at least how I would do it. The goal in the end is to get robust findings, so ensuring consistency across datasets is imo better than merging datasets to increase power for a single analysis.

Integration is an iterative process; I would not perform batch correction (in the classical sense) on the count matrix. I would process the datasets routinely, then use tools like Harmony, scVItools, etc., to integrate them to obtain a low-dimensional representation, and use that representation for UMAP, clustering, etc. If you are using scanpy, using the Harmony and scvi tools is pretty straightforward; you can check out their websites. Try as many tools/ parameters as possible until you are satisfied with the result. Best.

Thanks for your answer. So do you recommend running QC, doublet detection, and normalisation, then integration directly?

In general, you should not perform separate batch correction before integration. Instead, do standard preprocessing for each dataset individually (QC, doublet removal, normalization, variable gene selection) and then apply an integration method like Seurat, Harmony, scVI, or fastMNN that models batch effects jointly across datasets. These tools are designed to correct technical variation during integration, and pre-correcting datasets independently can sometimes distort real biological signals or even worsen alignment. This is especially important in tumour-immune studies, where over-correction may remove true biological differences. The key is to preprocess separately, integrate jointly, and carefully check that batch effects are reduced while biological signals are preserved.

More AI gibberish that adds no actual information.

Log in to answer this question.