单细胞工具箱|Seurat官网标准流程(下)

简介: 单细胞工具箱|Seurat官网标准流程(下)


四 确定维度

如何确定使用多少PCA呢?以下2种方法科研作为参考

4.1 JackStrawPlot

使用JackStrawPlot()函数对PCA结果进行可视化,"重要"的PC 将会显示在虚线上方且P值较低,本示例中PC10-PC12后显著性下降较明显。较耗时。

# NOTE: This process can take a long time for big datasets, comment out for expediency. More
# approximate techniques such as those implemented in ElbowPlot() can be used to reduce
# computation time
pbmc <- JackStraw(pbmc, num.replicate = 100)
pbmc <- ScoreJackStraw(pbmc, dims = 1:20)
JackStrawPlot(pbmc, dims = 1:15)


4.2 Elbow图

展示每个主成分对数据方差的解释情况(百分比表示),并进行排序。发现第9个主成分是一个拐点,后续的主成分(PC)变化不大。

ElbowPlot(pbmc)

A:以上结果“供参考”;

B:Seurat官网鼓励用户使用不同数量的PC(10、15,甚至50)重复下游分析,虽然结果通常没有显著差异。

C:建议设置此参数时偏高一些,较少维度进行下游分析可能会对结果产生一些负面影响。


4.3 显著相关基因

这个也可以作为后面分析选择基因的一个参考。

#Returns a set of genes, based on the JackStraw analysis, that have statistically significant associations with a set of PCs.
?PCASigGenes
head(PCASigGenes(pbmc,pcs.use=2,pval.cut = 0.7))
[1] "PPBP"   "LYZ"    "S100A9" "IGLL5"  "GNLY"   "FTL"


五 聚类


基于PCA结果进行聚类;

大约3K细胞的单细胞数据集,将resolution参数设置在0.4-1.2之间,数据集增加resolution 值对应增加。这个参数的设置目前没有找到标准,有清楚的小伙伴欢迎后台告知,谢谢。

pbmc <- FindNeighbors(pbmc, dims = 1:10)
pbmc <- FindClusters(pbmc, resolution = 0.5)
# Look at cluster IDs of the first 5 cells
head(Idents(pbmc), 5)
head(pbmc@active.ident,5) #同上
AAACATACAACCAC-1 AAACATTGAGCTAC-1 AAACATTGATCAGC-1 AAACCGTGCTTCCG-1 AAACCGTGTATGCG-1                0                3                2                1                6
Levels: 0 1 2 3 4 5 6 7 8


5.1 查看指定cluster的cell

head(subset(as.data.frame(pbmc@active.ident),pbmc@active.ident=="2"))
          pbmc@active.identAAACATTGATCAGC-1                 2
AAACGCACTGGTAC-1                 2
AAAGCCTGTATGCG-1                 2
AAATCAACTCGCAA-1                 2
AAATGTTGCCACAA-1                 2
AACACGTGCAGAGG-1                 2


5.2 提取某一cluster细胞

subpbmc<-subset(x = pbmc,idents="2")
subpbmc
head(subpbmc@active.ident,5)
AAACATTGATCAGC-1 AAACGCACTGGTAC-1 AAAGCCTGTATGCG-1 AAATCAACTCGCAA-1 AAATGTTGCCACAA-1                2                2                2                2                2
Levels: 2

六 非线性降维聚类


建议使用与聚类分析相同的pc维度进行非线性降维度分析,如tSNE和UMAP,并可视化展示。

6.1 UMAP

# If you haven't installed UMAP, you can do so via reticulate::py_install(packages =
# 'umap-learn')
pbmc <- RunUMAP(pbmc, dims = 1:10)
# note that you can set `label = TRUE` or use the LabelClusters function to help label
# individual clusters
DimPlot(pbmc, reduction = "umap")

6.2 tSNE

pbmc <- RunTSNE(pbmc, dims = 1:10)
head(pbmc@reductions$tsne@cell.embeddings)
DimPlot(pbmc, reduction = "tsne")

6.3 比较

# note that you can set `label = TRUE` or use the LabelClusters function to help label
# individual clusters
plot1<-DimPlot(pbmc, reduction = "umap",label = TRUE)
plot2<-DimPlot(pbmc, reduction = "tsne",label = TRUE)
plot1 + plot2

可以看出,两者的降维可视化的结构是一致的,UMAP方法相对更加紧凑。


七 差异表达基因


Seurat可以通过FindMarkers函数 和 FindAllMarkers函数寻找不同cluster的差异表达基因。

min.pct参数:设定在两个细胞群中任何一个被检测到的百分比,通过此设定不检测很少表达基因来缩短程序运行时间。默认0.1

thresh.test参数:设定在两个细胞群中基因差异表达量。可以设置为0 ,程序运行时间会更长。

max.cells.per.ident参数:每个类群细胞抽样设置;也可以缩短程序运行时间。


7.1 特定cluster

是one-others的差异分析方法,由ident.1来制定cluster,本例就是cluster2与其余的cluster来做比较。

# find all markers of cluster 2
cluster2.markers <- FindMarkers(pbmc, ident.1 = 2, min.pct = 0.25)
head(cluster2.markers, n = 5)
##             p_val avg_log2FC pct.1 pct.2    p_val_adj
## IL32 2.593535e-91  1.2154360 0.949 0.466 3.556774e-87
## LTB  7.994465e-87  1.2828597 0.981 0.644 1.096361e-82
## CD3D 3.922451e-70  0.9359210 0.922 0.433 5.379250e-66
## IL7R 1.130870e-66  1.1776027 0.748 0.327 1.550876e-62
## LDHB 4.082189e-65  0.8837324 0.953 0.614 5.598314e-61


7.2 指定cluster

本例为cluster5  和 cluster0_cluster3的差异

# find all markers distinguishing cluster 5 from clusters 0 and 3
cluster5.markers <- FindMarkers(pbmc, ident.1 = 5, ident.2 = c(0, 3), min.pct = 0.25)
head(cluster5.markers, n = 5)
                     p_val avg_log2FC pct.1 pct.2     p_val_adjFCGR3A        8.331882e-208   4.261784 0.975 0.040 1.142634e-203
CFD           1.932644e-198   3.423863 0.938 0.036 2.650429e-194
IFITM3        2.710023e-198   3.876058 0.975 0.049 3.716525e-194
CD68          1.069778e-193   3.013656 0.926 0.035 1.467094e-189
RP11-290F20.3 4.218926e-190   2.722303 0.840 0.016 5.785835e-186


7.3 FindAllMarkers

每个cluster分别与其他所有cluster进行比较,展示各个cluster的前2个基因

# find markers for every cluster compared to all remaining cells, report only the positive ones
pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
pbmc.markers %>%
    group_by(cluster) %>%
    top_n(n = 2, wt = avg_log2FC)
# A tibble: 18 x 7# Groups:   cluster [9]
      p_val avg_log2FC pct.1 pct.2 p_val_adj cluster gene    
      <dbl>      <dbl> <dbl> <dbl>     <dbl> <fct>   <chr>  
1 1.88e-117       1.08 0.913 0.588 2.57e-113 0       LDHB    
2 5.01e- 85       1.34 0.437 0.108 6.88e- 81 0       CCR7    
3 0               5.57 0.996 0.215 0         1       S100A9  
4 0               5.48 0.975 0.121 0         1       S100A8  
5 1.93e- 80       1.27 0.981 0.65  2.65e- 76 2       LTB    
6 2.91e- 58       1.27 0.667 0.251 3.98e- 54 2       CD2    
7 0               4.31 0.939 0.042 0         3       CD79A  
8 1.06e-269       3.59 0.623 0.022 1.45e-265 3       TCL1A  
9 3.60e-221       3.21 0.984 0.226 4.93e-217 4       CCL5    
10 4.27e-176       3.01 0.573 0.05  5.85e-172 4       GZMK    
11 3.51e-184       3.31 0.975 0.134 4.82e-180 5       FCGR3A  
12 2.03e-125       3.09 1     0.315 2.78e-121 5       LST1    
13 3.17e-267       4.83 0.961 0.068 4.35e-263 6       GZMB    
14 1.04e-189       5.28 0.961 0.132 1.43e-185 6       GNLY    
15 1.48e-220       3.87 0.812 0.011 2.03e-216 7       FCER1A  
16 1.67e- 21       2.87 1     0.513 2.28e- 17 7       HLA-DPB1
17 7.73e-200       7.24 1     0.01  1.06e-195 8       PF4    
18 3.68e-110       8.58 1     0.024 5.05e-106 8       PPBP


?FindAllMarkers查看更多参数。

cluster0.markers <- FindMarkers(pbmc, ident.1 = 0, logfc.threshold = 0.25,

                               test.use = "roc",  # 检验的方式

                               only.pos = TRUE) #只输出pos的基因

其中test.use 可选参数有:wilcox(默认),bimod,roc,t,negbinom,poisson,LR,MAST,DESeq2。


7.4 可视化

可以通过seurat的内置函数查看重点基因的基本情况:

1)VlnPlot: 基因表达概率分布

VlnPlot(pbmc, features = c("MS4A1", "CD79A"))
# you can plot raw counts as well
VlnPlot(pbmc, features = c("NKG7", "PF4"), slot = "counts", log = TRUE)

2)FeaturePlot:在tSNE 或 PCA图中展示重点基因的表达

FeaturePlot(pbmc, features = c("MS4A1", "GNLY", "CD3E", "CD14", "FCER1A", "FCGR3A", "LYZ", "PPBP", 
    "CD8A"))

3)DoHeatmap()查看重点基因细胞和cluster的表达热图

top10 <- pbmc.markers %>%
    group_by(cluster) %>%
    top_n(n = 10, wt = avg_log2FC)
DoHeatmap(pbmc, features = top10$gene) + NoLegend()

此外,还建议使用RidgePlot()、CellScatter()和DotPlot()查看数据集的情况。

这也可以作为后续手动注释的一些参考。

相关文章
|
7月前
基因组组装:Hifiasm 使用教程
基因组组装:Hifiasm 使用教程
230 1
|
7月前
|
存储 人工智能 数据库
【AI大模型应用开发】【LangChain系列】2. 一文全览LangChain数据连接模块:从文档加载到向量检索RAG,理论+实战+细节
【AI大模型应用开发】【LangChain系列】2. 一文全览LangChain数据连接模块:从文档加载到向量检索RAG,理论+实战+细节
243 0
|
数据库
ArcGIS: 如何利用模型构建器(modelbuilder)进行植被指数情况的统计?
ArcGIS: 如何利用模型构建器(modelbuilder)进行植被指数情况的统计?
218 0
ArcGIS: 如何利用模型构建器(modelbuilder)进行植被指数情况的统计?
|
数据可视化 数据库
scRNA分析|使用CellChat完成细胞通讯分析-简单且可视化出众,代码自取
scRNA分析|使用CellChat完成细胞通讯分析-简单且可视化出众,代码自取
1499 0
|
7月前
|
机器学习/深度学习 数据可视化 算法
神经网络模型结构框架可视化的在线与软件绘图方法
神经网络模型结构框架可视化的在线与软件绘图方法
238 1
|
数据可视化 数据挖掘 C#
单细胞工具箱|Cell Ranger-V6.0 开启单细胞之旅(上)
单细胞工具箱|Cell Ranger-V6.0 开启单细胞之旅(上)
598 1
|
JSON 前端开发 数据可视化
SolidUI AI生成可视化,0.1.0版本模块划分以及源码讲解
SolidUI AI生成可视化,0.1.0版本模块划分以及源码讲解
110 0
|
数据采集 数据可视化 Serverless
单细胞工具箱|Seurat官网标准流程(上)
单细胞工具箱|Seurat官网标准流程
387 0
|
算法 Python
ArcGIS:如何利用模型构建(modelbuilder)进行公路选线?
ArcGIS:如何利用模型构建(modelbuilder)进行公路选线?
114 0