单细胞聚类SC3

使用SC3的R包进行单细胞聚类

sc3安装过程见链接
SC3源码及其安装过程

提醒:
(1)本主使用R3.6.3版本的R包(推荐使用,这样问题最少)。
(2)第一次尝试使用,会报少了啥啥包的错误,使用install.package(“包名”)一个个安装。
(3)scater包安不上,使用如下代码进行安装:

//sacter安装不了的解决方法(如果BiocManager装了,直接第二句话代码)
if (!requireNamespace(“BiocManager”, quietly = TRUE))
install.packages(“BiocManager”)
BiocManager::install(“sacter”)
需要注意的是,刚开始打开Rstudio用上述代码是装不上去的,需要你跑一组数据(缺少是scater不影响正常跑,但是会少一点东西),然后再用上述代码安装就能装上去(ps:不要问我为什么,我也是尝试出来的)

本主数据样式:
在这里插入图片描述
行为基因,列为细胞,label为标签

由于作者给出的实例不是那么清楚,使用自己的数据集合跑还要探究一番,所以下面直接上正常安装后能直接跑起来的代码:

rm(list = ls())
library(SingleCellExperiment)
library(SC3)
library(ggplot2)
library(scater)
#只需要修改数据文件名和标签文件名就可以轻松的换一个数据集合,不用关心其他参数的配置,很方便。
pbmc <- read.table(file = "E:\\single_data\\Liu_ready.txt")
pbmc_label <-  read.table(file = "E:\\single_data\\Liu_ready_label.txt")
kp <- max(pbmc_label)
size_row <- nrow(pbmc )
pbmc <- t(pbmc)
pbmc_label  <- t(pbmc_label)
colnames(pbmc) <- paste0("cell_", 1:size_row)
sce <- SingleCellExperiment(
    assays = list(
        counts = as.matrix(pbmc),
        logcounts = log2(as.matrix(pbmc) + 1)
    )
)
# 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)
#开始聚类
a <- kp - 1
b <- kp + 1
sce <- sc3(sce, ks = a:b, biology = TRUE)

#画降维后的分布
sc3_n_clusters <- paste0("sc3_", as.character(kp),"_clusters")
sc3_n_log2_outlier_score <- paste0("sc3_", as.character(kp), "_log2_outlier_score")
#sc3_n_clusters = "sc3_3_clusters"
#sc3_n_log2_outlier_score = "sc3_3_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 = kp, 
    show_pdata = c(
        "cell_type1", 
        "log10_total_features",
        sc3_n_clusters, 
        sc3_n_log2_outlier_score
    )
)
#聚类对角性质的度量,对角线全部为红色 则为最好
sc3_plot_silhouette(sce, k = size_row)
#绘制相关聚类的基因表达量图谱
sc3_plot_expression(
    sce, k = kp, 
    show_pdata = c(
        "cell_type1", 
        "log10_total_features",
        sc3_n_clusters, 
        sc3_n_log2_outlier_score
    )
)
#计算簇内稳定性
sc3_plot_cluster_stability(sce, k = kp)
#并绘制了最低p值的50个基因的基因表达谱
sc3_plot_de_genes(sce, k = kp)

col_data <- colData(sce)
head(col_data[ , grep("sc3_", colnames(col_data))])
rezult_labels <- colData(sce)[[sc3_n_clusters, exact = FALSE]]
rezult_labels
pbmc_label
library("mclust")
if (require("mclust")) {
    adjustedRandIndex(pbmc_label, rezult_labels)
}

也可以将上述代码写成函数,使用for循环,直接可以顺序的跑多个数据集合。

运行效果:
(1)
在这里插入图片描述
(2)
在这里插入图片描述
关注收藏哦~

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值