單細(xì)胞分析入門(mén)——一套經(jīng)典的Seurat分析流程

前幾天看到周運(yùn)來(lái)老師的一句話搏明,放在這兒,與諸君共勉:

看到才能想到闪檬,想到才能做到星著,做到才能得到,得到才能失去粗悯,只有失去了才知道適不適合自己

好了虚循,切入正題,今天想給大家分享的是入門(mén)級(jí)的經(jīng)典的Seurat分析流程样傍,采用的數(shù)據(jù)為10X Genomics官方提供的外周血單個(gè)核細(xì)胞(peripheral blood mononuclear cell, PBMC)的測(cè)序數(shù)據(jù)横缔。放一個(gè)下載鏈接:點(diǎn)擊即可下載,建議電腦操作!铭乾。這里我們下載的實(shí)際上就是可以直接利用Seurat進(jìn)行分析的數(shù)據(jù)剪廉。經(jīng)過(guò)層層解壓,你會(huì)得到這三個(gè)文件:

文件內(nèi)容.jpg

當(dāng)然炕檩,這三個(gè)文件是什么斗蒋,可以看看我前面的文章我眼中的barcodes.tsv.gz/features.tsv.gz/matrix.mtx.gz捌斧。

下面就正式開(kāi)始利用Seurat包進(jìn)行分析。我個(gè)人將Seurat的上游分析分為幾個(gè)部分泉沾,分別是數(shù)據(jù)質(zhì)控捞蚂、特征選擇、降維聚類(lèi)跷究、差異基因篩選與可視化姓迅。
Seurat包目前已經(jīng)更新到4.0的版本了,還好它已經(jīng)托管到了CRAN下面俊马,可以直接用install.packages()進(jìn)行下載丁存。

install.packages('Seurat')
library(Seurat)
1. 首先使用Read10X()讀入數(shù)據(jù):
#保證那三個(gè)文件位于這個(gè)工作目錄下
pbmc <- Read10X(data.dir = 'C:/Users/DELL/Downloads/filtered_feature_bc_matrix')

當(dāng)然對(duì)于這個(gè)函數(shù),你?Read10X一下柴我,你可能會(huì)發(fā)現(xiàn)一些你以后可能會(huì)用到的參數(shù)解寝,例如其中的gene.columncell.column參數(shù),對(duì)著你的features.tsv和barcodes.tsv文件艘儒,看看它是啥意思聋伦。

2. 然后就是創(chuàng)建SeuratObject對(duì)象:
pbmc <- CreateSeuratObject(counts = pbmc, project = "pbmc3k", min.cells = 3, min.features = 200)

實(shí)際上在這里是有一小步的質(zhì)控的,就在于min.cellsmin.features兩個(gè)參數(shù)上界睁,這兩個(gè)參數(shù)的意思是:過(guò)濾掉表達(dá)基因種類(lèi)小于200個(gè)的細(xì)胞和被表達(dá)在不足3個(gè)細(xì)胞中的基因觉增。

3. 對(duì)線粒體基因進(jìn)行統(tǒng)計(jì)

看你自己項(xiàng)目的實(shí)際需求,比如你做單細(xì)胞核測(cè)序翻斟,一般來(lái)說(shuō)就應(yīng)該要做這一步逾礁,當(dāng)然你也可以用同樣的正則匹配去做核糖體基因等。

mt.genes <- grep(pattern = "^MT-", x = rownames(pbmc), value = T)

注意访惜,我們做的人的數(shù)據(jù)敞斋,人的線粒體基因一般是以MT開(kāi)頭的,我們?cè)趐bmc這個(gè)文件的行名中匹配這個(gè)模式疾牲,找打線粒體基因植捎,value這個(gè)參數(shù),設(shè)置為T(mén)就是返回線粒體基因的名稱阳柔,否則返回所在的行號(hào)焰枢。
對(duì)每個(gè)細(xì)胞計(jì)算其線粒體基因的含量,在這里我列出3中方法舌剂,當(dāng)然也只是在看教程而已:

pbmc[['percent.mt']] <- PercentageFeatureSet(object = pbmc, pattern = "^MT-")
pbmc <- PercentageFeatureSet(object = pbmc, pattern = "^MT-", col.name = "percent.mt")
pbmc <- PercentageFeatureSet(object = pbmc, features = mt.genes, col.name = "percent.mt")

你會(huì)發(fā)現(xiàn)济锄,其實(shí)我們也可以自己給它一個(gè)基因的集合,讓它去進(jìn)行計(jì)算霍转,特別是對(duì)于那些不太方便用正則表達(dá)式進(jìn)行展示的基因集合荐绝。

4. 數(shù)據(jù)質(zhì)控

這個(gè)部分需要根據(jù)你自己的數(shù)據(jù)選擇合適自己的參數(shù),這里我和官方文檔設(shè)置的一樣避消。

pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nCount_RNA < 2500 & percent.mt < 5)

核心意思在于過(guò)濾后只剩下:表達(dá)基因超過(guò)200種低滩,少于2500種和線粒體基因含量小于5%的細(xì)胞召夹。

5. 降維聚類(lèi)
pbmc <- NormalizeData(object = pbmc)
#=============findvariablefeatures==============#
pbmc <- FindVariableFeatures(object = pbmc, nfeatures = 2000)
#=================scale data=================#
pbmc <- ScaleData(object = pbmc, features = rownames(pbmc))
#=================PCA analysis===================#
pbmc <- RunPCA(object = pbmc, features = VariableFeatures(pbmc), verbose = F)

至于什么是NormalizeData和ScaleData,我在單細(xì)胞分析中的NormalizeData()與ScaleData()區(qū)別在哪兒恕沫?寫(xiě)過(guò)一點(diǎn)自己的感悟监憎。這里為什么ScaleData()是針對(duì)于全部的基因,官方也給出了解釋?zhuān)_實(shí)這樣會(huì)在這一步消耗更多的時(shí)間婶溯,特別是在大數(shù)據(jù)集的時(shí)候鲸阔,但是如果我們?cè)谶@里不對(duì)高變基因以外的基因進(jìn)行Scale,就會(huì)在繪制heatmap時(shí)出現(xiàn)不必要的麻煩迄委。
下一個(gè)重點(diǎn)在于我們選擇多少個(gè)主成分進(jìn)行下游的分析褐筛,Seurat給了兩種圖形顯示讓我們對(duì)我們的數(shù)據(jù)有直觀的感受。

pbmc <- JackStraw(pbmc, num.replicate = 100)
pbmc <- ScoreJackStraw(pbmc, dims = 1:20)
JackStrawPlot(pbmc, dims = 1:15)
ElbowPlot(pbmc)

進(jìn)行UMAP和TSNE聚類(lèi)分析叙身,兩者的差異在我的Literature Review(1): A short but comprehensive comparison about tSNE, UMAP and PCA這篇帖子里有過(guò)分享死讹,當(dāng)然在這里我都做了,結(jié)果會(huì)儲(chǔ)存在SeuratObject中的不同位置曲梗,彼此并不會(huì)相互影響,這也是SeuratObject的一個(gè)突出優(yōu)勢(shì)妓忍。

#=============UMAP & TSNE analysis================#
pbmc <- FindNeighbors(object = pbmc, reduction = "pca", dims = 1:10)
pbmc <- FindClusters(object = pbmc, resolution = 0.5)
pbmc <- RunUMAP(object = pbmc, dims = 1:10)
pbmc <- RunTSNE(object = pbmc, dims = 1:10)

注意虏两,這里FindClusters()函數(shù)中的resolution參數(shù)非常重要,這個(gè)值越大世剖,聚出來(lái)的cluster也就越多定罢。

6. 類(lèi)型注釋

一般來(lái)說(shuō),單細(xì)胞的上游分析旁瘫,最費(fèi)勁的地方就在于調(diào)整你的cluster數(shù)祖凫,聚出合適的類(lèi),進(jìn)行比較準(zhǔn)確的注釋酬凳。在這里我就直接套用官方的聚類(lèi)注釋結(jié)果惠况,直接進(jìn)行注釋了。

cluster_cell_type <- c("Naive CD4 T", "Memory CD4 T", "CD14+ Mono", "B", "CD8 T", "FCGR3A+ Mono", 
                     "NK", "DC", "Platelet")
names(cluster_cell_type) <- levels(pbmc)
pbmc <- RenameIdents(pbmc, cluster_cell_type)
pbmc[['cell_type']] <- pbmc@active.ident

注意宁仔,pbmc[[]]這種形式是直接在meta.data中添加元素(列)稠屠,是在細(xì)胞的水平上,這在我們前面的統(tǒng)計(jì)線粒體基因處也用到了翎苫。當(dāng)然有很多種不同的將注釋結(jié)果映射到每個(gè)細(xì)胞上的方法权埠,后面有時(shí)間再一起總結(jié)、學(xué)習(xí)煎谍!

#TSNE
DimPlot(object = pbmc, 
        reduction = 'tsne',
        cols = c('#FF0033','#CC3399','#993366','#009933', '#0066CC','#003399','#9966CC','#99CC33','#003399'),
        label = T,
        label.box = T,
        pt.size = 1)
#UMAP
DimPlot(object = pbmc, 
        reduction = 'umap',
        cols = c('#FF0033','#CC3399','#993366','#009933', '#0066CC','#003399','#9966CC','#99CC33','#003399'),
        label = T,
        label.box = T,
        pt.size = 1)
tSNE.png

UMAP.png

看來(lái)攘蔽,兩種不同的聚類(lèi)方式繪制出的圖還是很不一樣的哈!最后呐粘,我想說(shuō)满俗,Seurat最好的教程是它的官網(wǎng)Seurat转捕,沒(méi)有誰(shuí)比創(chuàng)造它的人更清楚它是怎么工作的了谋国,我們不過(guò)在重復(fù)它自己給出的教程罷了顿苇。

今天也是摸魚(yú)的一天!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纽什,一起剝皮案震驚了整個(gè)濱河市降盹,隨后出現(xiàn)的幾起案子与柑,更是在濱河造成了極大的恐慌,老刑警劉巖蓄坏,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件价捧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涡戳,警方通過(guò)查閱死者的電腦和手機(jī)结蟋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渔彰,“玉大人嵌屎,你說(shuō)我怎么就攤上這事』型浚” “怎么了宝惰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)再沧。 經(jīng)常有香客問(wèn)我尼夺,道長(zhǎng),這世上最難降的妖魔是什么炒瘸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任淤堵,我火速辦了婚禮,結(jié)果婚禮上顷扩,老公的妹妹穿的比我還像新娘拐邪。我一直安慰自己,他們只是感情好隘截,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布庙睡。 她就那樣靜靜地躺著,像睡著了一般技俐。 火紅的嫁衣襯著肌膚如雪乘陪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天雕擂,我揣著相機(jī)與錄音啡邑,去河邊找鬼。 笑死井赌,一個(gè)胖子當(dāng)著我的面吹牛谤逼,可吹牛的內(nèi)容都是我干的贵扰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼流部,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼戚绕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起枝冀,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舞丛,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后果漾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體球切,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年绒障,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吨凑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡户辱,死狀恐怖鸵钝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庐镐,我是刑警寧澤恩商,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站焚鹊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏韧献。R本人自食惡果不足惜末患,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锤窑。 院中可真熱鬧璧针,春花似錦、人聲如沸渊啰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绘证。三九已至隧膏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嚷那,已是汗流浹背胞枕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魏宽,地道東北人腐泻。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓决乎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親派桩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子构诚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容