單細胞實戰(zhàn)(5):復現擬南芥單細胞文章中的數據(1)

前言

目前我的課題是植物方面的單細胞測序,所以打算選擇植物類的單細胞測序數據進行復現膜宋,目前選擇了王佳偉老師的《A Single-Cell RNA Sequencing Profiles the Developmental Landscape of Arabidopsis Root》,希望能夠得到好的結果

原始數據的下載

首先下載測序數據

prefetch SRR8485805 -O wang/
fastq-dump --split-files SRR8485805
mv SRR8485805_1.fastq data/WT_S1_L001_I1_001.fastq
mv SRR8485805_2.fastq data/WT_S1_L001_R1_001.fastq
mv SRR8485805_3.fastq data/WT_S1_L001_R2_001.fastq

下載基因組與注釋文件洽蛀,需要注意文獻中基因組使用的是TAIR10响巢,注釋文件是Araport11

將gff轉為gtf文件

gffread Araport11.gff3 -T -o Araport11.gtf

cellranger進行比對

下載cellranger2.2版本

curl -o cellranger-2.2.0.tar.gz "https://cf.10xgenomics.com/releases/cell-exp/cellranger-2.2.0.tar.gz?Expires=1603141363&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9jZi4xMHhnZW5vbWljcy5jb20vcmVsZWFzZXMvY2VsbC1leHAvY2VsbHJhbmdlci0yLjIuMC50YXIuZ3oiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE2MDMxNDEzNjN9fX1dfQ__&Signature=en6P4Wedmwc2aSEitfKsQp2PITVYKgRPZdzR-fEmjBl4R9yQY5QBQY05--1v8AzRD9WqfoCnddSzFvngrlwxzeCJtFyfHLa2a7ONnUT6NtrzU6RkIj1jwXpaN4NpixnCbEF-Ubj9UZX63W1rEreM0AMNdWiVneGx4bcTajl1KRWaoTNS970DSJ1wrw0g70JFQ0BAltou-qPAeZpD9Xe9EM35EdWRT6eFq~zOaCMRLTxlBjZaMItyDRH~Qecz-B5tLWcAjCKfy4o2hAWTopRRpy93LVV-x1ykxCiHpej5AuAODvUx0V73rZOkRlijcpA5d1rHV~eEdPiM1uoCOJMiSw__&Key-Pair-Id=APKAI7S6A5RYOXBWRPDA"
tar -zxvf cellranger-2.2.0.tar.gz

建立索引并比對

/datadisk02/ScRNAseq_data/cellranger-2.2.0/cellranger  mkref --genome=ref --fasta=TAIR10.fa --genes=Araport11.gtf
                 
/datadisk02/ScRNAseq_data/cellranger-2.2.0/cellranger count --id=WANG --transcriptome=ref --fastqs=data/ --sample=WT --force-cells=8000

比對結果還是可以的梅掠,與原文獻中差距很小

使用Seurat對數據進行分析

文獻中使用到的Seurat為V3版本,要注意cellrangeV2在filtered_gene_bc_matrices生成的文件是genes店归、barcodes以及matrix阎抒,但Seurat識別的是features,我們需要自行對genes文件改名

cd WANG/outs/filtered_gene_bc_matrices/ref
gzip genes.tsv
gzip matrix.mtx
gzip barcodes.tsv
mv genes.tsv.gz features.tsv.gz

創(chuàng)建Seurat對象

library(Seurat)
library(dplyr)
library(ggplot2)
library(magrittr)
library(gtools)
library(stringr)
library(Matrix)
library(tidyverse)
library(patchwork)
setwd("D://data/ScRNAcode/wang/")
##=======================1.創(chuàng)建Seurat對象========================
dir <- 'filtered_gene_bc_matrices/ref/'
counts <- Read10X(dir)
wang = CreateSeuratObject(counts, project = "zxz", min.cells=3, min.features = 200)
dim(wang)
[1] 23228  8000

數據質控與標準化

##=======================2.數據質控與標準化================================
##dir.create('QC')
##提取線粒體基因
wang[["percent.mt"]] <- PercentageFeatureSet(wang, pattern='^ATMG')
violin <- VlnPlot(wang,
                  features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), 
                  pt.size = 0.1, #不需要顯示點消痛,可以設置pt.size = 0
                  ncol = 3)
ggsave("QC/vlnplot-before-qc.pdf", plot = violin, width = 15, height = 6) 
ggsave("QC/vlnplot-before-qc.png", plot = violin, width = 15, height = 6) 
plot1 <- FeatureScatter(wang, feature1 = "nCount_RNA", feature2 = "percent.mt")
plot2 <- FeatureScatter(wang, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
pearplot <- CombinePlots(plots = list(plot1, plot2), nrow=1, legend="none") 
ggsave("QC/pearplot-before-qc.pdf", plot = pearplot, width = 12, height = 5) 
ggsave("QC/pearplot-before-qc.png", plot = pearplot, width = 12, height = 5)
##設置質控標準
wang<-subset(wang,subset=nFeature_RNA>500 & nFeature_RNA<5000 &percent.mt<0.5)
dim(wang)
[1] 23228  7626
## 繪制質量控制后的圖
violin <-VlnPlot(wang,
                 features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), 
                 pt.size = 0.1, 
                 ncol = 3)
ggsave("QC/vlnplot-after-qc.pdf", plot = violin, width = 15, height = 6) 
ggsave("QC/vlnplot-after-qc.png", plot = violin, width = 15, height = 6)
## 基因表達量標準化
## 它的作用是讓測序數據量不同的細胞的基因表達量具有可比性且叁。計算公式如下:
## 標準化后基因表達量 = log1p(10000*基因counts/細胞總counts)
wang <- NormalizeData(wang, normalization.method = "LogNormalize", scale.factor = 10000)

質控后細胞數目為7626,基因數為23228秩伞,原文獻中兩者的數據分別是7695與23161

數據降維與聚類

##=======================3.數據降維與聚類==================================
## 尋找高變基因
## dir.create("cluster")
wang <- FindVariableFeatures(wang,mean.cutoff=c(0.0125,3),dispersion.cutoff =c(1.5,Inf) )
top10 <- head(VariableFeatures(wang), 10)
plot1 <- VariableFeaturePlot(wang) 
plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE, size=2.5) 
plot <- CombinePlots(plots = list(plot1, plot2),legend="bottom")
## 橫坐標是某基因在所有細胞中的平均表達值逞带,縱坐標是此基因的方差。
## 紅色的點是被選中的高變基因纱新,黑色的點是未被選中的基因展氓,變異程度最高的10個基因在如圖中標注了基因名稱。
ggsave("cluster/VariableFeatures.pdf", plot = plot, width = 8, height = 6) 
ggsave("cluster/VariableFeatures.png", plot = plot, width = 8, height = 6)
## 數據縮放
scale.genes <-  rownames(wang)
wang <- ScaleData(wang, features = scale.genes)
## PCA降維并提取主成分
wang <- RunPCA(wang, features = VariableFeatures(wang),npcs = 100) 
plot1 <- DimPlot(wang, reduction = "pca") 
plot2 <- ElbowPlot(wang, ndims=40, reduction="pca") 
plotc <- plot1+plot2
ggsave("cluster/pca.pdf", plot = plotc, width = 8, height = 4) 
ggsave("cluster/pca.png", plot = plotc, width = 8, height = 4)
## 細胞聚類
## 此步利用 細胞-PC值 矩陣計算細胞之間的距離脸爱,
## 然后利用距離矩陣來聚類遇汞。其中有兩個參數需要人工選擇,
## 第一個是FindNeighbors()函數中的dims參數,需要指定哪些pc軸用于分析空入,選擇依據是之前介紹的cluster/pca.png文件中的右圖络它。
## 第二個是FindClusters()函數中的resolution參數,需要指定0.1-1.0之間的一個數值歪赢,用于決定clusters的相對數量化戳,數值越大cluters越多。
wang <- FindNeighbors(object = wang, dims = 1:100)
wang <- FindClusters(object = wang, resolution = 1.0)
table(wang@meta.data$seurat_clusters)
## 非線性降維
## tsne
wang <- RunTSNE(wang, dims =1:40)
embed_tsne <- Embeddings(wang, 'tsne')
write.csv(embed_tsne,'cluster/embed_tsne_new.csv')
plot1 = DimPlot(wang, reduction = "tsne" ,label = "T", pt.size = 1,label.size = 4)
ggsave("cluster/tSNE_cluster.pdf", plot = plot1, width = 8, height = 7)
ggsave("cluster/tSNE_cluster.png", plot = plot1, width = 8, height = 7)

## UMAP'
wang <- RunUMAP(wang,n.neighbors = 30,metric = 'correlation',min.dist = 0.3,dims = 1:40)
embed_umap <- Embeddings(wang, 'umap')
write.csv(embed_umap,'cluster/embed_umap_new.csv')
plot2 = DimPlot(wang, reduction = "umap",label = "T", pt.size = 1,label.size = 4) 
ggsave("cluster/UMAP_cluster_new.pdf", plot = plot2, width = 8, height = 7)
ggsave("cluster/UMAP_cluster_new.png", plot = plot2, width = 8, height = 7)

結果是有區(qū)別的埋凯,我的聚類比原文獻中要多一個点楼,而且數字不對應,所以我要用文獻中列出的某些基因的小提琴圖確定我的聚類

根據文獻對應自己數據聚類

原文獻中有所有聚類的特異基因白对,所以我根據列出的基因去匹配我的聚類結果

##==============================5.修改聚類標號=====================
##修改聚類號重新做圖
new.cluster.ids<-c("2",'1','4','5','13','3','12','21','8','6','11',
                   '9','7','10','6','15','22','14','17','19','16',
                   '20','18','23','24')
names(new.cluster.ids) <- levels(wang)
wang <- RenameIdents(wang, new.cluster.ids)
Idents(wang)<-factor(Idents(wang),levels=mixedsort(levels(Idents(wang))))
wang <- RunTSNE(wang, dims =1:40)
embed_tsne <- Embeddings(wang, 'tsne')
write.csv(embed_tsne,'cluster/embed_tsne-new.csv')
plot1 = DimPlot(wang, reduction = "tsne" ,label = "T", pt.size = 1,label.size = 4)
ggsave("cluster/tSNE_cluster-new.pdf", plot = plot1, width = 8, height = 7)
ggsave("cluster/tSNE_cluster-new.png", plot = plot1, width = 8, height = 7)

## UMAP
wang <- RunUMAP(wang,n.neighbors = 30,metric = 'correlation',min.dist = 0.3,dims = 1:40)
embed_umap <- Embeddings(wang, 'umap')
write.csv(embed_umap,'cluster/embed_umap-new.csv')
plot2 = DimPlot(wang, reduction = "umap",label = "T", pt.size = 1,label.size = 4) 
ggsave("cluster/UMAP_cluster.pdf", plot = plot2, width = 8, height = 7)
ggsave("cluster/UMAP_cluster.png", plot = plot2, width = 8, height = 7)

修改之后的聚類結果

一些基因的小提琴圖對應效果

結語

對于這次的數據重復盟步,基本符合預期結果,和文章的結果有點差距躏结,需要自己進一步研究問題出在哪里,下一次將繼續(xù)這篇文獻的數據復現狰域,主要是偽時間分析媳拴,目前的數據與代碼我已上傳github


轉載請注明:周小釗的博客>>>單細胞實戰(zhàn)(5):復現文章中的聚類圖(1)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市兆览,隨后出現的幾起案子屈溉,更是在濱河造成了極大的恐慌,老刑警劉巖抬探,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件子巾,死亡現場離奇詭異,居然都是意外死亡小压,警方通過查閱死者的電腦和手機线梗,發(fā)現死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怠益,“玉大人仪搔,你說我怎么就攤上這事◎呃危” “怎么了烤咧?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抢呆。 經常有香客問我煮嫌,道長,這世上最難降的妖魔是什么抱虐? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任昌阿,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘宝泵。我一直安慰自己好啰,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布儿奶。 她就那樣靜靜地躺著框往,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闯捎。 梳的紋絲不亂的頭發(fā)上椰弊,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音瓤鼻,去河邊找鬼秉版。 笑死耸携,一個胖子當著我的面吹牛桃漾,可吹牛的內容都是我干的豪筝。 我是一名探鬼主播礁击,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼赎瞎,長吁一口氣:“原來是場噩夢啊……” “哼夏漱!你這毒婦竟也來了焰宣?” 一聲冷哼從身側響起榆芦,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤沃粗,失蹤者是張志新(化名)和其女友劉穎粥惧,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體最盅,經...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡突雪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了涡贱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咏删。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖问词,靈堂內的尸體忽然破棺而出饵婆,到底是詐尸還是另有隱情,我是刑警寧澤戏售,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布侨核,位于F島的核電站,受9級特大地震影響灌灾,放射性物質發(fā)生泄漏搓译。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一锋喜、第九天 我趴在偏房一處隱蔽的房頂上張望些己。 院中可真熱鬧豌鸡,春花似錦、人聲如沸段标。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逼庞。三九已至蛇更,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赛糟,已是汗流浹背派任。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留璧南,地道東北人掌逛。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像司倚,于是被迫代替她去往敵國和親豆混。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內容