听说你还缺PBMC单细胞数据

2022-04-18 14:58:19 浏览数 (1)

交流群有小伙伴表示他自己的单细胞项目还缺一些正常人的PBMC单细胞数据,但是不想耗费资金去招募志愿者抽血做单细胞了,所以求助。

以前我们会推荐 satijalab/seurat-data ,它内置了很多数据集,如果你还没有下面的seurat-data包和pbmc3k对象 ,就自己去下载:

代码语言:javascript复制
install.packages('devtools')
devtools::install_github('satijalab/seurat-data')
library(SeuratData) #加载seurat数据集  
getOption('timeout')
options(timeout=10000)
InstallData("pbmc3k")  
data("pbmc3k")  
sce <- pbmc3k.final  

但是因为它这个包仍然是在GitHub,所以很多人下载失败, 另外它数据也是在外网,很多人网络有问题无法下载。

但是我随时搜索到了一个包,TENxPBMCData ,蛮有意思的,安装和加载:

代码语言:javascript复制
# BiocManager::install('TENxPBMCData') # (286 KB)
library(TENxPBMCData)
args(TENxPBMCData) 

因为这个包,TENxPBMCData 并不大,所以它其实也是需要在线下载数据的。目前它有如下所示的10个数据:

  1. pbmc68k
  2. frozen_pbmc_donor_a
  3. frozen_pbmc_donor_b
  4. frozen_pbmc_donor_c
  5. pbmc33k
  6. pbmc3k
  7. pbmc6k
  8. pbmc4k
  9. pbmc8k
  10. pbmc5k-CITEseq

每个数据集都有自己的代号:

代码语言:javascript复制
function (dataset = c("pbmc4k", "pbmc68k", "frozen_pbmc_donor_a", 
    "frozen_pbmc_donor_b", "frozen_pbmc_donor_c", "pbmc33k", 
    "pbmc3k", "pbmc6k", "pbmc8k", "pbmc5k-CITEseq"), as.sparse = TRUE) 

我们任意选择一个数据集举例说明。

代码语言:javascript复制
tenx_pbmc4k <- TENxPBMCData(dataset = "pbmc4k")
tenx_pbmc4k
counts(tenx_pbmc4k)

可以看到,它是SingleCellExperiment对象格式,并不是我们常见的seurat对象哦。而且基因名字还不是常见的symbol,也是需要转换,代码如下所示:

代码语言:javascript复制

ct = as.data.frame( assay(tenx_pbmc4k))
ct[1:4,1:4]
colnames(ct) = 1:ncol(ct)

library(AnnoProbe) 
ag=annoGene(rownames(ct),
            ID_type = 'ENSEMBL',species = 'human'
)
head(ag)
ag=ag[!duplicated(ag$SYMBOL),]
ag=ag[!duplicated(ag$ENSEMBL),]

pos = match(ag$ENSEMBL,rownames(ct))
ct = ct[pos,]
rownames(ct) = ag$SYMBOL

可以看到,转换前后的差异:

代码语言:javascript复制
> ct[1:4,1:4]
                V1 V2 V3 V4
ENSG00000243485  0  0  0  0
ENSG00000237613  0  0  0  0
ENSG00000186092  0  0  0  0
ENSG00000238009  0  0  0  0 
Warning message:
In annoGene(rownames(ct), ID_type = "ENSEMBL", species = "human") :
  2.21% of input IDs are fail to annotate... 
> head(ag)
        SYMBOL       biotypes         ENSEMBL  chr  start    end
4  MIR1302-2HG         lncRNA ENSG00000243485 chr1  29554  31109
6      FAM138A         lncRNA ENSG00000237613 chr1  34554  36081
9        OR4F5 protein_coding ENSG00000186092 chr1  65419  71585
10  AL627309.1         lncRNA ENSG00000238009 chr1  89295 133723
11  AL627309.3         lncRNA ENSG00000239945 chr1  89551  91105
15  AL627309.2         lncRNA ENSG00000239906 chr1 139790 140339 
> ct[1:4,1:4]
            1 2 3 4
MIR1302-2HG 0 0 0 0
FAM138A     0 0 0 0
OR4F5       0 0 0 0
AL627309.1  0 0 0 0

接下来就使用我很久以前在《生信技能树》公众号的一个教程:这也能画?,提到了一个很无聊的R包,名字是:scRNAstat ,它可以4行代码进行单细胞转录组的降维聚类分群,其实完全没有技术含量, 就是把 Seurat 流程的一些步骤包装成为了4个函数:

  • basic_qc (查看数据质量)
  • basic_filter (进行一定程度的过滤)
  • basic_workflow (降维聚类分群)
  • basic_markers(检查各个亚群的标记基因)

代码如下所示;

代码语言:javascript复制

library(scRNAstat) 
library(Seurat)
library(ggplot2)
library(clustree)
library(cowplot)
library(dplyr)
sce = CreateSeuratObject(counts =  ct)
x='tenx_pbmc4k'
dir.create(x)
sce = basic_qc(sce=sce,org='human',
               dir = x)  
sce = basic_filter(sce)  
sce = basic_workflow(sce,dir = x)   
markers_figures <- basic_markers(sce,
                                 org='human',
                                 group='seurat_clusters',
                                 dir = x)

p_umap = DimPlot(sce,reduction = 'umap',  
                 group.by = 'seurat_clusters',
                 label.box = T,  label = T,repel = T)
p_umap markers_figures[[1]]

ggsave(paste0('umap_markers_for_',x,'.pdf'),width = 12)

得到如下所示的图表:

可以看到5群的B细胞,7群的plasma细胞。

而0,1,3,8,6,9,10都是T细胞,可以细分为CD4和CD8,或者细分为naive等,比如文章:https://onlinelibrary.wiley.com/doi/10.1002/ctm2.730,细分单细胞亚群需要更多的基因和生物学背景哦。

T细胞细分

其中2,4,11,12,14都是髓系,而且主要是单核细胞。第13比较奇怪哦,应该是某种DC细胞。

给出这样的生物学名字,需要对上面的基因有一些背景知识哦!需要背诵如下所示各个细胞亚群高表达量基因的列表:

代码语言:javascript复制
# T Cells (CD3D, CD3E, CD8A), 
# B cells (CD19, CD79A, MS4A1 [CD20]), 
# Plasma cells (IGHG1, MZB1, SDC1, CD79A), 
# Monocytes and macrophages (CD68, CD163, CD14),
# NK Cells (FGFBP2, FCG3RA, CX3CR1),  
# Photoreceptor cells (RCVRN), 
# Fibroblasts (FGF7, MME), 
# Endothelial cells (PECAM1, VWF). 
# epi or tumor (EPCAM, KRT19, PROM1, ALDH1A1, CD24).
#   immune (CD45 ,PTPRC), epithelial/cancer (EpCAM ,EPCAM), 
# stromal (CD10 ,MME,fibo or CD31 ,PECAM1,endo) 

其实这样的基础认知,也可以看基础10讲:

  • 01. 上游分析流程
  • 02.课题多少个样品,测序数据量如何
  • 03. 过滤不合格细胞和基因(数据质控很重要)
  • 04. 过滤线粒体核糖体基因
  • 05. 去除细胞效应和基因效应
  • 06.单细胞转录组数据的降维聚类分群
  • 07.单细胞转录组数据处理之细胞亚群注释
  • 08.把拿到的亚群进行更细致的分群
  • 09.单细胞转录组数据处理之细胞亚群比例比较

最基础的往往是降维聚类分群,参考前面的例子:人人都能学会的单细胞聚类分群注释

0 人点赞