scRNA in R (1)

这里是单细胞转录组R语言分析合集第一弹,用于整理和记录单细胞RNA转录组的分析方法框架,目前可能不会涉及到太多代码的部分,只是整理框架,用于给自己一个备忘查找的方案~

本篇为基础流程方案。基础流程即包括常见的从下游数据到降维聚类,细胞注释方案,对R中单细胞对象的操作,以及这一过程中”至少”需要展示的result figure

  1. 数据对象化,读入单样本/多样本的原始数据,merge后,将单细胞上游数据获取的表达转化为seurat对象或者anndata,以rds/h5ad的形式保存,不再采用其他多种格式例如SngleCellExperiment等;如果需要多种对象之间的转换,可用seurat_wrapper或者sceasy进行转换。原始数据在这一步结束后,以scRNA_raw.Rdata/rds的形式留存待用;
  2. QC,主要针对双细胞、线粒体基因、核糖体基因、血红蛋白(针对PBMC)、低表达基因、细胞周期等进行过滤,必要时可进行基因表达的插补,注意只有10X系列数据可以插补,同时需考虑时间和计算开销;
  3. 数据标准化和缩放,目前已经有SCTransform流程,但是因为很多工具还需要方便地提取log后数据的问题。主干分析流程不采用SCTransform,仍然使用log+scale;如需使用CCA进行整合则改为SCTransform,但仍需另配log+Scale。
  4. 线性降维和非线性降维、PC数挑选、聚类,最佳resolution选择,最终得到基础的降维聚类,在极大数量单细胞时,tsne也有很好的表现,因此主干中使用tsne和umap同时进行降维;
  5. 【如果需要】多样本去批次,对于merge的数据,使用harmony、CCA、RPCA(Seurat新出的,原理跟harmony相似)、liger(跨物种整合),fastMNN(快速整合)等,进行数据整合和批次效应去除,这部分细节和可调整空间很多,注意在处理批次之前,对单细胞的barcode进行处理,否则会出现duplicate id的问题;
  6. 差异基因分析,基于细胞注释、样本或其他条件进行差异分析,可用FindConservedMarkers、FindAllmarkers、COSG、Scibet等进行差异分析,这一步涉及到下面的细胞注释,因此通常这里只返回阳性的marker(only.pos =T),当然,实现上可以考虑增加一个+/- marker都返回的结果;
  7. 执行细胞注释,基于参考数据的scCATCH、SingleR,基于projection of reference data的Seurat等,基于参考分类器的garnett,以及基于marker的手动注释、富集注释和cellasign、cellid,注意两个最重要的细胞marker库:panglaodbcellmarker,以及目前比较好的网页工具toppgene和最新出来的Cell Taxonomy
  8. 基本流程的可视化内容,可用工具包括SCpubr、scRNAtoolVis和Scillus
    1. DimPlot绘制降维图,可取不同的reduction,包括PCA、UMAP、tsne和PHATE
    2. FeaturePlot在降维上直接绘制基因表达的结果,使用基础的FeaturePlot或者Nebulosa plots;
    3. 小提琴图,使用Vlnplot绘制QC结果,VlnPlot绘制marker基因在不同cluster里的表达
    4. dotplot,绘制不同的基因在不同cluster里的表达
    5. barplot,使用barplot绘制不同细胞类型在不同样本/条件里的丰度
    6. volcano plot,使用火山图绘制多细胞里的差异基因
    7. heatmap,绘制特定基因在不同细胞、组别内的mean expression,并添加注释信息