前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Seurat的TransferData函数自动化迁移单细胞转录组亚群的注释信息

基于Seurat的TransferData函数自动化迁移单细胞转录组亚群的注释信息

作者头像
生信技能树
发布2024-04-13 20:50:04
660
发布2024-04-13 20:50:04
举报
文章被收录于专栏:生信技能树生信技能树

前面我们推荐了方法学:使用singleR基于自建数据库来自动化注释单细胞转录组亚群,广受好评,然后马上就有小伙伴留言说这个功能跟Seurat的TransferData函数类似,我就马不停蹄的尝试了一下:

同样的数据集

这个GSE206528的单细胞转录组数据集,很容易构建成为Seurat对象。仍然是走常规的单细胞转录组降维聚类分群代码,可以看 链接: https://pan.baidu.com/s/1bIBG9RciAzDhkTKKA7hEfQ?pwd=y4eh ,基本上大家只需要读入表达量矩阵文件到r里面就可以使用Seurat包做全部的流程。批量读取它的9个文件的代码如下所示:

代码语言:javascript
复制
dir='GSE206528_RAW/'
samples=list.files( dir )
samples 
sceList = lapply(samples,function(pro){ 
  # pro=samples[1] 
  print(pro)   
  ct=fread( file.path(dir,pro ) ,data.table = F)
  ct[1:4,1:4]
  rownames(ct)=ct[,1]
  ct=ct[,-1] 
  sce =CreateSeuratObject(counts =  ct ,
                          project =  pro  ,
                          min.cells = 5,
                          min.features = 300 )
  return(sce)
}) 
do.call(rbind,lapply(sceList, dim))
sce.all=merge(x=sceList[[1]],
              y=sceList[ -1 ],
              add.cell.ids = samples  ) 
names(sce.all@assays$RNA@layers)
sce.all[["RNA"]]$counts 
# Alternate accessor function with the same result
LayerData(sce.all, assay = "RNA", layer = "counts")
sce.all <- JoinLayers(sce.all)
dim(sce.all[["RNA"]]$counts )

使用TransferData函数

在前面的方法学:使用singleR基于自建数据库来自动化注释单细胞转录组亚群,我们拿到了 sce.singleR.Rdata 文件里面是一个已经降维聚类分群并且注释好的Seurat对象。这个文件会很小,因为细胞数量确实是不多,但是已经是有 fibro 和endo以及周细胞和SMC 信息,以及部分免疫细胞亚群信息。

核心流程就是 FindTransferAnchors 和 TransferData 函数,即可把两个Seurat对象关联起来,其中一个Seurat里面是有单细胞亚群注释信息,就可以迁移到另外一个对象里面,如下所示:

代码语言:javascript
复制
 
load(file = 'singleR/sce.singleR.Rdata')
sce.singleR
table(sce.singleR$paper)
sce.ref = sce.singleR 

source('scRNA_scripts/lib.R')
sce.all.int = readRDS('2-harmony/sce.all_int.rds')
sce.query = sce.all.int
 
sce.anchors <- FindTransferAnchors(reference = sce.ref, 
                                        query = sce.query, dims = 1:30,
                                        reference.reduction = "pca")
predictions <- TransferData(anchorset = sce.anchors, 
                            refdata = sce.ref$paper, dims = 1:30)
sce.query <- AddMetaData(sce.query, metadata = predictions)
table(sce.query$predicted.id )
DimPlot(sce.query,group.by = 'predicted.id',label = T,repel = F)
load('phe.Rdata')
gplots::balloonplot(table(sce.query$predicted.id,phe$celltype ))

可以看到的是,从效果的角度来说,跟前面我们推荐了方法学:使用singleR基于自建数据库来自动化注释单细胞转录组亚群,对比,不知道为什么Seurat的TransferData函数没办法区分SMC和周细胞,其实在UMAP图是还是可以看到清晰可见的界限。前面的singleR就没有遇到这个问题:

Seurat的TransferData函数没办法区分SMC和周细胞

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 同样的数据集
  • 使用TransferData函数
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档