前言

在做单细胞相关聚类分析的过程中,为了研究异质性,发现了一种专门用于单细胞转录组的聚类分析R包——SC3(single cell consensus clustering,单细胞一致性聚类)。该聚类算法发表于Nature Methods(2017),能够让单细胞RNA-seq基于转录组特征对细胞类型进行定量表征。这是一种用户友好的无监督聚类工具,它通过一致方法将多个聚类解决方案组合在一起,从而得到高精度和鲁棒性的分群结果。SC3包的官方具体使用教程见:http://www.bioconductor.org/packages/release/bioc/vignettes/SC3/inst/doc/SC3.html
SC3包源代码见Github:https://github.com/hemberg-lab/SC3

原文的SC3聚类流程如图所示:
(a)使用SC3框架进行聚类的概述(参见方法)。用Treutlein数据举例说明了一致步骤。
(b)用于设置SC3参数的已发布数据集。N是数据集中的细胞数;k为作者最初确定的簇数;单位:RPKM是每千碱基每百万次读的转录本,RPM是每百万次读的转录本,FPKM是每千碱基每百万次读的转录本片段,TPM是每百万次读的转录本片段。
( c)ARI>处d值的直方图。金标准数据集达到95。黑色竖线表示细胞总数N的d = 4-7%,分类准确率高。
(d) (b)中所示数据集的SC3聚类的100个实现。条对应点的中位数。红色和灰色分别对应有一致步长和无一致步长时的聚类。这条黑线对应的ARI=0。8。黑色虚线分隔了金和银标准数据集。

笔者主要想通过该包对单细胞转录组进行聚类数目的估计。在网上没有直接写SC3关于这个功能的帖子,故我去原文,官方教程以及代码研究了一下,该包主要通过随机矩阵理论(Random Matrix Theory,RMT) 确定聚类的数目。

安装SC3包

if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("SC3")

同时还需要安装如下包:

library(SingleCellExperiment)#安装方法和SC3一样
library(SC3)
library(ggplot2)
library(scater)

利用SC3实现聚类数目的估计

首先看一下源代码:

if (k_estimator) {object <- sc3_estimate_k(object)# Do not override cluster if user has set a kif (is.null(ks)){ks <- metadata(object)$sc3$k_estimation}

把该方法应用于自己的代码:
注意:在跑自己的数据之前,要先准备两个文件:(1)单细胞表达矩阵文件;(2)每个细胞的注释文件。

pbmc <- read.table("SC3/分组表达/exp_SCE_M.csv",stringsAsFactors=FALSE, header=TRUE, check.names=FALSE,row.names=1, sep=",")
ann<-read.table("SC3/ann/SCE_M.csv", header=T, row.names=1, sep=",")
#构建sce对象
sce <- SingleCellExperiment(assays = list(counts = as.matrix(pbmc),logcounts = log2(as.matrix(pbmc) + 1)),colData=ann)# define feature names in feature_symbol column
rowData(sce)$feature_symbol <- rownames(sce)
# remove features with duplicated names
sce <- sce[!duplicated(rowData(sce)$feature_symbol), ]
# define spike-ins
#isSpike(sce, "ERCC") <- grepl("ERCC", rowData(sce)$feature_symbol)#开始聚类(estimate k)
sce<-sc3_estimate_k(sce) #估计k值
ks<-metadata(sce)$sc3$k_estimation #调用k值
ks
a <- ks - 1
b <- ks + 1
sce <- sc3(sce, ks = a:b, biology = TRUE) #这一步会运行很久#主成分分析PCA
sce <- runPCA(sce)
plotPCA(sce, colour_by = "cell_type")#画降维后的分布
sc3_n_clusters <- paste0("sc3_", as.character(ks),"_clusters")
sc3_n_log2_outlier_score <- paste0("sc3_", as.character(ks), "_log2_outlier_score")
sc3_n_clusters
sc3_n_log2_outlier_score
plotPCA(sce, colour_by = sc3_n_clusters, size_by = sc3_n_log2_outlier_score
)#计算一致性矩阵
sc3_plot_consensus(sce, k = ks, show_pdata = c(#"cell_type", #"log10_total_features",sc3_n_clusters, sc3_n_log2_outlier_score)
)#计算簇内稳定性
sc3_plot_cluster_stability(sce, k = ks)

绘制的PCA结果和一致性矩阵结果如下图:


SC3包后续还可以进行基因表达矩阵热图的绘制; 提供调整p值< 0.01的所有差异表达基因的列表,并绘制p值最低的50个基因的基因表达谱;以及找到标记基因。

参考:
代码:https://blog.csdn.net/weixin_42889479/article/details/108943720
https://www.jianshu.com/p/65094dfd6922
https://www.jianshu.com/p/24f65dd2c88f
https://www.jianshu.com/p/ea81c3635a8b

单细胞转录组聚类分析R包——SC3的应用相关推荐

  1. 单细胞转录组分析R包安装

    下载了R语言和Rstudio以后,要进行单细胞转录组分析,首先要下载安装单细胞转录组分析所需的R包,这些包分为用install.package命令可以直接从CRAN下载安装的基础包.用BioManag ...

  2. 单细胞数据分析流程R包scCancer

    最近做单细胞数据分析时,发现了一个R包scCancer,发表在Briefings in Bioinformatic 论文主页: 简单尝试了一下,还是比较好用的,参数很简单,可以很方便的对数据进行分析, ...

  3. Slingshot|单细胞轨迹推断r包

    看Cross-tissue organization of the fibroblast lineage的时候发现作者使用了Slingshot这个r包来做拟时序分析,尝试使用了一下. 一.加载数据,转 ...

  4. 单细胞-拟时序分析-R包SCORPIUS

    注:代码转自生信技能树,仅做学习笔记.https://mp.weixin.qq.com/s/rho-EPb804bSd8w334BNQw 准备工作, 安装及加载R包,载入数据,查看数据类型. inst ...

  5. 一个R包完成单细胞基因集富集分析 (全代码)

    singleseqgset | 单细胞RNA-Seq基因集富集分析 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (Ch ...

  6. 这个R包自动注释单细胞数据的平均准确率为83%,使用后我的结果出现了点问题|附全代码...

    估计大家都有一个这样的感觉就是单细胞数据具有一定的数据依赖性,好多的marker在相同的组织中,别人的数据就表达的十分明显,在你的数据中就是不太显著,比如NK细胞的KLRF1.于是,细胞自动注释也就应 ...

  7. 一个R包玩转单细胞免疫组库分析,还能与Seurat无缝对接

    单细胞免疫组库数据分析 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析  ...

  8. Hemberg-lab单细胞转录组数据分析(九)- Scater包单细胞过滤

    往期系列 Hemberg-lab单细胞转录组数据分析(一) Hemberg-lab单细胞转录组数据分析(二) Hemberg-lab单细胞转录组数据分析(三) Hemberg-lab单细胞转录组数据分 ...

  9. Cicero:一个单细胞染色质可及性实验可视化R包

    本文可在http://xuzhougeng.top/免费阅读原文 Cicero是一个单细胞染色质可及性实验可视化R包.Cicero的主要功能就是使用单细胞染色质可及性数据通过分析共开放去预测基因组上顺 ...

  10. 【R语言】Splatter,一个用于简单模拟单细胞RNA测序数据的R包

    Splatter是一个用于模拟单细胞RNA测序数据的R包,本文概述并介绍Splatter的功能 一.参数功能 名称 功能 说明 可以通过splatEstimate函数估计 备注 nGenes -> ...

最新文章

  1. linux系统文件介绍
  2. 记一次PowerShell免杀实战
  3. FPGA学习之路—应用程序—原码二位乘法器及Verilog代码分析
  4. json为全局变量 vue_vue 设置全局变量、指定请求的 baseurl
  5. 实例56:python
  6. ListView中convertView和ViewHolder的工作原理
  7. RIDE在linux系统下运行,在linux上执行robotframework用例
  8. c语言变量定义数组,C语言中数组的定义和使用
  9. Python花式编程案例集锦(9):sorted()函数中消失的cmp参数
  10. ERROR 1820 (HY000): You must reset your password
  11. 【实习】T100开发学习笔记
  12. Android电池管理系统系统分析
  13. 【WinCE版凯立德】2012春季版地图下载
  14. 2021时间序列-对比学习必读的四篇论文
  15. [论文]鲁棒的对抗性强化学习
  16. 采购工作的基本内容和注意事项
  17. linux提取基因名称和序列,一种批量提取基因组基因信息并翻译比对分析序列的方法与流程...
  18. python在手机上可以画图吗_python简单画图教程!python怎么在屏幕上画图
  19. 如何选择适合你的兴趣爱好(四十八),手风琴
  20. java雪花_基于java实现的雪花算法

热门文章

  1. oracle中数据区域不存在,财政票据电子化系统出现oracle数据库中不存在顶级区划什么意思...
  2. MOOC哈工大2020C语言程序设计精髓编程题在线测试第十一周
  3. 11个在线学习网站,学习编码和更多内容!
  4. 获取SIM卡subId,SlotId,获取卡1卡2 subID,SlotId
  5. 三星手机将在MWC 2017首展可折叠手机
  6. 无后修改教学_如何在无后端的情况下将带有条带化的卡付款集成到您的Web应用程序中
  7. 万字详解 Linux 常用指令
  8. springboot中的事件
  9. 背包问题--贪心算法C#Demo解析
  10. 欧盟对谷歌开出50亿美元天价罚单 安卓系统或将收费