其他
答读者问(十)整合后的表达矩阵,如何拆分出分组信息?
往期回顾
答读者问 (五)如何实现各物种基因的ID/symbol的转换
问题
粉丝提问:从GEO中下载了一个文件,作者提供的是所有文件整合在一起的表达矩阵,如何从中取出样本与分组信息并加入到Seurat对象之中呢?
怎么解决问题
我们先来看一下数据
library(data.table)
library(Seurat)
## Attaching SeuratObject
suppressWarnings(mycount <- fread('GSE172495_RNA_Matrix_PBMC.csv',sep=','))#用data.table中的fread读起来会快很多
mycount <- as.data.frame(mycount)
mynames<- mycount$V1
rownames(mycount) <- mynames
mycount <- mycount[,-1]
mycount[1:5,1:5]
## CAGCGTCGCAAT_350C GATTAAGTGTGN_350C AGATGCTGATTA_350C
## A1BG 0 0 0
## A1BG-AS1 0 0 0
## A1CF 0 0 0
## A2M 0 0 0
## A2M-AS1 0 0 0
## AGGAACCAAAGG_350C ACCCCTATTAAT_350C
## A1BG 0 0
## A1BG-AS1 0 0
## A1CF 0 0
## A2M 0 0
## A2M-AS1 0 0
看一下每个细胞的名称,其中暗藏玄机
mycellname <- colnames(mycount)
mycellname[1:5]
## [1] "CAGCGTCGCAAT_350C" "GATTAAGTGTGN_350C" "AGATGCTGATTA_350C"
## [4] "AGGAACCAAAGG_350C" "ACCCCTATTAAT_350C"
可以看出,这里细胞名中’_’后的就是样本名,那我们把这个字符串拆出来,并制作成metadata
samplename <- as.vector(lapply(mycellname, function(x){
as.character(strsplit(x,'_')[[1]][2])
}))
samplename <- as.data.frame(unlist(samplename))
rownames(samplename) <- colnames(mycount)
colnames(samplename)[1] <- 'sample'
head(samplename)
## sample
## CAGCGTCGCAAT_350C 350C
## GATTAAGTGTGN_350C 350C
## AGATGCTGATTA_350C 350C
## AGGAACCAAAGG_350C 350C
## ACCCCTATTAAT_350C 350C
## CCCAGTCACCTA_350C 350C
存入Seurat对象之中
pbmc <- CreateSeuratObject(counts = mycount)
pbmc <- AddMetaData(pbmc,metadata = samplename)
unique(pbmc$sample)#这就是存进去了
## [1] "350C" "459C" "851C" "865C" "866C" "868C" "A307C" "A311C" "350P"
## [10] "459P" "851P" "865P" "866P" "868P" "A307P" "A311P"
接下来就是走一遍单样本分析,就能查看了,这部分不懂的同学看看这两讲
手把手教你做单细胞测序(三)——单样本分析
手把手教你做单细胞测序(四)——多样本整合如何联系我们
答疑公约
笑一笑也就算了