單細胞實戰(zhàn)(4):STAR與cellranger結(jié)果比較

前言

本次主要使用Seurat比較STAR與Cellranger的輸出結(jié)果胶台,只會進行簡單的聚類工作臣咖。

數(shù)據(jù)讀入

> library(Seurat)
> library(dplyr)
> library(magrittr)
> library(gtools)
> library(stringr)
> library(Matrix)
> setwd("D://data/ScRNAcode")
##讀入STAR數(shù)據(jù)
> matrix.dir="STAR/"
> barcode.path <- paste0(matrix.dir,"barcodes.tsv")
> features.path <- paste0(matrix.dir,"features.tsv")
> matrix.path <- paste0(matrix.dir, "matrix.mtx")
> STARmatrix <- readMM(file = matrix.path)
> feature.names = read.delim(features.path,
+                            header = FALSE,
+                            stringsAsFactors = FALSE)
> barcode.names = read.delim(barcode.path,
+                            header = FALSE,
+                            stringsAsFactors = FALSE)
> colnames(STARmatrix) = barcode.names$V1
> rownames(STARmatrix) = feature.names$V2
> STARmatrix<-as.matrix(STARmatrix)
> STARmatrix[1:6,1:6]
##創(chuàng)建seurat對象
##創(chuàng)建STAR的Seurat對象
> STAR <- CreateSeuratObject(STARmatrix,project = "zsz",
                           min.cells = 3, min.features = 200)
##創(chuàng)建Cellranger的Seurat對象
> dir="cellranger/"
> counts <- Read10X(data.dir = dir)
> RANGER <- CreateSeuratObject(counts, project = "zsz", 
                             min.cells=3, min.features = 200)

數(shù)據(jù)比較

> ##數(shù)據(jù)比較
> dim(STARmatrix)
[1] 33538  2048
> dim(counts)
[1] 33538  2112
> dim(STAR)
[1] 13350  2046
> dim(RANGER)
[1] 13314  2105
> fivenum(apply(STARmatrix,1,function(x) sum(x>0)))
MIR1302-2HG     IGFBPL1  AL008723.2       FXYD7      MT-CO1 
          0           0           0          29        2047 
> fivenum(apply(counts,1,function(x) sum(x>0)))
MIR1302-2HG     FAM221B   LINC01638        DGKE      MT-CO1 
          0           0           0          29        2108 
> pdf("box.pdf",height = 9,width = 9)
> boxplot(apply(STARmatrix,1,function(x) sum(x>0) ),main = "STAR",col = "lightgray")
> boxplot(apply(counts,1,function(x) sum(x>0) ),main = "Cellranger",col = "lightgray")
> dev.off()
RStudioGD 
        2 
> pdf("hist.pdf",height = 9,width = 9)
> hist(apply(STARmatrix,2,function(x) sum(x>0) ),col = "lightgray",
+      breaks=20,xlim=c(0,4000),ylim=c(0,800),
+      labels=F,main="STAR",
+      xlab="genes",ylab="cells")
> abline(v=median(apply(STARmatrix,2,function(x) sum(x>0))),col='red')
> hist(apply(counts,2,function(x) sum(x>0) ),col = "lightgray",
+      breaks=20,xlim=c(0,4000),ylim=c(0,800),
+      labels=F,main="Cellranger",
+      xlab="genes",ylab="cells")
> abline(v=median(apply(counts,2,function(x) sum(x>0))),col='red')
> dev.off()              

根據(jù)箱線圖踏幻,直方圖和矩陣的基本信息,可以看到STAR與cellranger的結(jié)果差距很小

質(zhì)量控制與聚類比較

> pdf("qc.pdf",height = 9,width = 9)
> VlnPlot(STAR,
+         features = c("nFeature_RNA", "nCount_RNA"), 
+         pt.size = 0.1,
+         ncol = 2)
> VlnPlot(RANGER,
+         features = c("nFeature_RNA", "nCount_RNA"), 
+         pt.size = 0.1, 
+         ncol = 2)
> dev.off()
RStudioGD 
        2 
> STAR<-subset(STAR,subset=nFeature_RNA>500 & nFeature_RNA<2000)
> STAR <- NormalizeData(STAR, normalization.method = "LogNormalize", scale.factor = 10000)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
> table(STAR@meta.data$orig.ident)

 zsz 
1896 
> STAR <- FindVariableFeatures(STAR, selection.method = "vst", nfeatures = 2000)
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
> top10 <- head(VariableFeatures(STAR), 10) 
> top10
 [1] "S100A9"  "S100A8"  "IGLC2"   "IGKC"    "LYZ"     "IGLC3"   "CCL3"    "NFKBIA"  "PTGDS"   "S100A12"
 
 > RANGER<-subset(RANGER,subset=nFeature_RNA>500 & nFeature_RNA<2000)
> RANGER<- NormalizeData(RANGER, normalization.method = "LogNormalize", scale.factor = 10000)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
> table(RANGER@meta.data$orig.ident)

 zsz 
1895 
> RANGER <- FindVariableFeatures(RANGER, selection.method = "vst", nfeatures = 2000)
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
> top10 <- head(VariableFeatures(RANGER), 10) 
> top10
 [1] "S100A9"  "S100A8"  "IGLC2"   "IGKC"    "LYZ"     "CCL3"    "NFKBIA"  "IGLC3"   "PTGDS"   "S100A12"
 
> scale.genes <-  rownames(STAR)
> STAR <- ScaleData(STAR, features = scale.genes)
> STAR <- RunPCA(STAR, features = VariableFeatures(STAR)) 
> plot1 <- ElbowPlot(STAR, ndims=30, reduction="pca") 
> scale.genes <-  rownames(RANGER)
> RANGER <- ScaleData(RANGER, features = scale.genes)
> RANGER <- RunPCA(RANGER, features = VariableFeatures(RANGER)) 
> plot2 <- ElbowPlot(RANGER, ndims=30, reduction="pca") 
> plotc <- plot1+plot2
> ggsave("pca.pdf", plot = plotc, width = 8, height = 4)
> STAR <- FindNeighbors(STAR, dims = 1:10) 
> STAR <- FindClusters(STAR, resolution = 0.8)
> table(STAR@meta.data$seurat_clusters)
  0   1   2   3   4   5   6   7   8   9 
368 310 290 217 184 129 119 112  92  75
> metadata <- STAR@meta.data
> cell_cluster <-data.frame(cell_ID=rownames(metadata),
cluster_ID=metadata$seurat_clusters)
> STAR <- RunUMAP(STAR, dims = 1:20)
> embed_tsne <- Embeddings(STAR, 'umap')
> plot1 = DimPlot(STAR, reduction = "umap" ,label = "T", pt.size = 1,label.size = 4)
> RANGER <- FindNeighbors(RANGER, dims = 1:10) 
> RANGER <- FindClusters(RANGER, resolution = 0.8)
> table(RANGER@meta.data$seurat_clusters)
  0   1   2   3   4   5   6   7   8   9 
375 300 290 212 195 128 122 108  91  74 
> metadata <- RANGER@meta.data
> cell_cluster <- data.frame(cell_ID=rownames(metadata), cluster_ID=metadata$seurat_clusters)
> RANGER <- RunUMAP(RANGER,n.neighbors = 30,dims = 1:20)
> embed_umap <- Embeddings(RANGER, 'umap')
> plot2 = DimPlot(RANGER, reduction = "umap" ,label = "T", pt.size = 1,label.size = 4)
> plotc <- plot1+plot2
> ggsave("umap.pdf", plot = plotc, width = 8, height = 4)

可以看到兩種分析方法umap與tsne聚類效果不太相同泽论,但是基本的聚類與分群是一致的

結(jié)語

就結(jié)果而言艾少,兩種分析方法的結(jié)果不完全相同,但也基本一致翼悴,本次筆記中用到的數(shù)據(jù)和代碼已上傳github缚够,在ScRNAseq_code/compare文件夾下,大家需要的可以下載試試


轉(zhuǎn)載請注明:周小釗的博客>>>單細胞實戰(zhàn)(4):STAR與cellranger結(jié)果比較

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹦赎,一起剝皮案震驚了整個濱河市谍椅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌古话,老刑警劉巖雏吭,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異陪踩,居然都是意外死亡思恐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門膊毁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人基跑,你說我怎么就攤上這事婚温。” “怎么了媳否?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵栅螟,是天一觀的道長。 經(jīng)常有香客問我篱竭,道長力图,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任掺逼,我火速辦了婚禮吃媒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己赘那,他們只是感情好刑桑,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著募舟,像睡著了一般祠斧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拱礁,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天琢锋,我揣著相機與錄音,去河邊找鬼呢灶。 笑死吴超,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的填抬。 我是一名探鬼主播烛芬,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼飒责!你這毒婦竟也來了赘娄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤宏蛉,失蹤者是張志新(化名)和其女友劉穎遣臼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拾并,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡揍堰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年嗅义,在試婚紗的時候發(fā)現(xiàn)自己被綠了幽纷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片收恢。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡沛鸵,死狀恐怖栏妖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情错负,我是刑警寧澤崭庸,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布谊囚,位于F島的核電站,受9級特大地震影響执赡,放射性物質(zhì)發(fā)生泄漏镰踏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一沙合、第九天 我趴在偏房一處隱蔽的房頂上張望奠伪。 院中可真熱鬧,春花似錦、人聲如沸绊率。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滤否。三九已至脸狸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間藐俺,已是汗流浹背炊甲。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留欲芹,地道東北人卿啡。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像菱父,于是被迫代替她去往敵國和親颈娜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353