【生信實(shí)戰(zhàn)】scRNA單細(xì)胞/ST空間轉(zhuǎn)錄組細(xì)胞注釋完全指導(dǎo)手冊

隨著單細(xì)胞技術(shù)的發(fā)展和普及伶唯,越來越多的課題組開始使用單細(xì)胞技術(shù)進(jìn)行自己的課題研究恤左。然而蔓肯,在單細(xì)胞的注釋上遭铺,商業(yè)公司提供的流程化注釋往往難以滿足實(shí)際的需求丽柿,甚至得到牛頭不對馬嘴的結(jié)果。這期講帶大家實(shí)現(xiàn)全方位的單細(xì)胞注釋指南魂挂。

1. 引言

單細(xì)胞RNA測序(scRNA-seq)是一種先進(jìn)的分子生物學(xué)技術(shù)甫题,可以在單個細(xì)胞水平上評估基因表達(dá)。在過去的幾年里涂召,scRNA-seq在細(xì)胞注釋中扮演了重要角色坠非,它已經(jīng)成為揭示細(xì)胞異質(zhì)性和發(fā)展過程中轉(zhuǎn)錄組動態(tài)的有力工具。目前果正,常見的scRNA-seq注釋方法包括基于表達(dá)模式的細(xì)胞標(biāo)記麻顶、參考基因表達(dá)和聚類特征等。
然而舱卡,盡管scRNA-seq可以在單細(xì)胞的水平上揭示基因的表達(dá)辅肾,但是目前在細(xì)胞注釋上依然存在不小的挑戰(zhàn)。首先轮锥,技術(shù)本身的特點(diǎn)如擴(kuò)增偏差矫钓、噪音和低覆蓋率等,可能導(dǎo)致結(jié)果的偏差和不確定性舍杜。其次新娜,數(shù)據(jù)的處理和分析也是一個復(fù)雜而關(guān)鍵的步驟,如何準(zhǔn)確地鑒定和分類不同的細(xì)胞類型仍然是一個挑戰(zhàn)既绩。此外概龄,由于細(xì)胞的異質(zhì)性和動態(tài)性,以及在特定生理狀態(tài)下轉(zhuǎn)錄組的變化饲握,細(xì)胞狀態(tài)鑒定和動態(tài)分析也是進(jìn)一步研究的難點(diǎn)私杜。

2.常見注釋策略

細(xì)胞注釋按照是否有人工參與可以分為自動注釋人工注釋

2.1 自動注釋

最為常見的就是使用SingleR進(jìn)行救欧,其根據(jù)參考數(shù)據(jù)集的表達(dá)矩陣衰粹,和輸入數(shù)據(jù)表達(dá)矩陣的相似性來識別細(xì)胞類型。其使用非常的方便笆怠,是絕大多數(shù)商業(yè)公司提供的全自動流程方案铝耻。然而,缺點(diǎn)是顯而易見的蹬刷。首先瓢捉,SingleR包含的參考數(shù)據(jù)集有限频丘,難以滿足實(shí)際樣本的需求,參考的有限導(dǎo)致注釋出現(xiàn)牛頭不對馬腳的結(jié)果泡态。
另一類策略則是根據(jù)Marker基因進(jìn)行椎镣,這里常用的軟件有cellassignscCATCH等,他們的思路是類似的兽赁,首先需要我們輸入?yún)⒖嫉膍arker基因,marker基因可以從cell marker2.0冷守、sctype或已經(jīng)發(fā)表文獻(xiàn)等獲得刀崖。這里推薦大家使用scCATCH,其自帶了cell marker的數(shù)據(jù)庫對新手較為友好拍摇。通過marker基因進(jìn)行細(xì)胞分群的鑒定可以特異性的根據(jù)物種亮钦、組織的特點(diǎn),注釋到更為合理的結(jié)果充活。然而蜂莉,這也并非“萬全之策”,由于樣本之間混卵、組織之間甚至是批次之間映穗,分析策略之間等一系列因素的差異,適用于別人的marker不見得就一定適用于自己的樣本幕随。

2.2 人工注釋

人工注釋蚁滋,顧名思義,就是自己去注釋赘淮。如何自己去注釋呢辕录?手動注釋在很大程度上比較類似基于marker基因注釋的方法∩倚叮基于參考文獻(xiàn)和以往經(jīng)驗(yàn)得到的marker基因的表達(dá)豐度進(jìn)行走诞。

3.實(shí)戰(zhàn)

3.1 SingleR自動注釋

使用的數(shù)據(jù)是經(jīng)典的pbmc3k (https://cf.10xgenomics.com/samples/cell/pbmc3k/pbmc3k_filtered_gene_bc_matrices.tar.gz
安裝好 R并安裝R包
SeuratSingleR蛤高、tidyverse等蚣旱。
首先我們導(dǎo)入數(shù)據(jù),pbmc解壓出來的數(shù)據(jù)是包括三個文件barcodes.tsv genes.tsv matrix.mtx戴陡。首先是進(jìn)行導(dǎo)入數(shù)據(jù) -> 質(zhì)控處理 -> 標(biāo)準(zhǔn)化 -> 降緯 -> 分群

library(Seurat)
library(tidyverse)
library(SingleR)

pbmc <- Read10X('~/pbmc/filtered_gene_bc_matrices/hg19') #這里填寫解壓后的目錄
pbmc <- CreateSeuratObject(pbmc) #轉(zhuǎn)化為Seurat對象
Pattern = '^MT-' #線粒體基因的名字姻锁,根據(jù)實(shí)際去匹配,人是^MT-開頭猜欺,小鼠^mt-位隶,大鼠^Mt-
pbmc[["percent.mt"]] <- PercentageFeatureSet(object = pbmc, pattern = Pattern)
pbmc <- subset(x = pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 8000 & percent.mt <  15) #進(jìn)行細(xì)胞過濾,這里是要求每個細(xì)胞里面至少有200個的基因开皿,但不大于8000個基因涧黄,線粒體基因含量不大于15%篮昧。這里的過濾就根據(jù)實(shí)際來,沒有絕對的標(biāo)準(zhǔn)笋妥。
pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000) #進(jìn)行l(wèi)og歸一化
pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000) #尋找高變基因
all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc, features = all.genes) #根據(jù)基因數(shù)進(jìn)行數(shù)據(jù)的縮放
pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc)) #進(jìn)行PCA降緯懊昨,特征是我們前面找到的高變基因
pbmc <- FindNeighbors(pbmc, dims = 1:30) #尋找臨近的特征點(diǎn)
pbmc <- FindClusters(object = pbmc, verbose = T, resolution = 0.7) #分群,關(guān)鍵在于resolution調(diào)整分辨率春宣,在0~1之間酵颁,約大就分越多分群

這樣我們就得到就將細(xì)胞進(jìn)行了初步的分群,隨后開始導(dǎo)入SingleR的參數(shù)數(shù)據(jù)集月帝。
也有幾種方法躏惋,一種我們手動下載,一種是安裝``celldex```包導(dǎo)入嚷辅, 如 celldex::HumanPrimaryCellAtlasData簿姨,或者導(dǎo)入別人已經(jīng)有注釋的rds,方法也非常簡單。只需要

ref <- celldex::HumanPrimaryCellAtlasData() #用celldex包導(dǎo)入簸搞,第一次需要一點(diǎn)時間下載扁位,該數(shù)包還有其他更多的參考數(shù)據(jù)集,可以詳細(xì)看手冊
ref <- readRDS('pbmc.rds') #用別人注釋好的rds趁俊,需要先準(zhǔn)備域仇,沒有準(zhǔn)備的話用方法一
pbmc_anno <- SingleR(test = pbmc@assays$RNA@data, ref = ref, labels = ref$label.main, cluster = pbmc$seurat_clusters)  #這里我們選擇按照分群去注釋

這個時候我們可以看到,已經(jīng)注釋好了寺擂。主要有T細(xì)胞和B細(xì)胞殉簸,單核細(xì)胞和血小板等我們進(jìn)行一下可視化展示


image.png
pbmc <- RunUMAP(object = pbmc, dims = 1:30) #首先進(jìn)行UMAP降緯
pbmc$CellType <- pbmc_anno$labels[match(pbmc$seurat_clusters, row.names(pbmc_anno))] #加上SingleR的注釋結(jié)果
p1 <- DimPlot(pbmc, group.by = "seurat_clusters",reduction = "umap", label = T) 
p2 <- DimPlot(pbmc, group.by = "CellType",reduction = "umap", label = T) 
p1+p2
ggsave('CellAnnot_umap.png', height = 4.5, width = 12, dpi = 300)
CellAnnot_umap.png

我們對比一下官方給出的手動注釋結(jié)果,可以看到已經(jīng)是基本接近了沽讹。


image.png

3.2 scCATCH注釋

這是我個人更推薦的一種方法般卑,首先主要安裝 scCATCH包,我們接著上面的代碼爽雄。

library(scCATCH)
obj <- createscCATCH(data = pbmc@assays$RNA@data, cluster = as.character(pbmc$seurat_clusters) ) #創(chuàng)建CATCH對象
obj <- findmarkergene(obj, marker = cellmatch, if_use_custom_marker = F ,use_method = "2",logfc = 0.4, cell_min_pct = 0.25, pvalue = 0.05, cancer = 'Normal', species = 'Human', tissue = 'Blood') #這里需要注意的關(guān)鍵參數(shù)是marker我們使用了自帶的cellmatch蝠检, 指定好癌癥的類型,物種和組織挚瘟,我們可以通過unique(cellmatch$tissue)去查看自帶的組織等叹谁。
obj <- findcelltype(obj)
obj@celltype$cell_type

我們看看效果

marker <- tibble( cluster = parse_number(obj@celltype$cluster), cell_tpye =  obj@celltype$cell_type) 
pbmc$CellType <- marker$cell_tpye[match(pbmc$seurat_clusters,marker$cluster)]
p1 <- DimPlot(pbmc, group.by = "seurat_clusters",reduction = "umap", label = T) 
p2 <- DimPlot(pbmc, group.by = "CellType",reduction = "umap", label = T,label.size=2) 
p1+p2
ggsave('CellAnnot_umap2.png', height = 4.5, width = 12, dpi = 300)
CellAnnot_umap2.png

效果也是很不錯。那么如果我們需要參考別人的結(jié)果如何進(jìn)行呢乘盖?這里還是只需要借助scCATCH包即可焰檩。我們需要準(zhǔn)備以下樣式的表格,包含以下的行頭订框,比如我們使用pbmc3k提供的marker
celltype gene subtype1 subtype2 subtype3 pmid

Cluster ID Markers Cell Type
0 IL7R, CCR7 Naive CD4+ T
1 CD14, LYZ CD14+ Mono
2 IL7R, S100A4 Memory CD4+
3 MS4A1 B
4 CD8A CD8+ T
5 FCGR3A, MS4A7 FCGR3A+ Mono
6 GNLY, NKG7 NK
7 FCER1A, CST3 DC
8 PPBP Platelet

對應(yīng)代碼如下:

cell_marker <- tribble(
~celltype, ~gene,  ~subtype1,~subtype2,~subtype3, ~pmid,
  "T cell", "IL7R",  "Naive CD4+", NA, NA, NA,
  "T cell", "CCR7",  "Naive CD4+", NA, NA, NA,
  "Mono", "CD14",  "CD14+", NA, NA, NA,
  "Mono", "LYZ",  "CD14+", NA, NA, NA,
  "T cell", "IL7R",  "Memory CD4+", NA, NA, NA,
  "T cell", "S100A4",  "Memory CD4+", NA, NA, NA,
  "B cell", "MS4A1",  NA, NA, NA, NA,
  "T cell", "CD8A",  "CD8+", NA, NA, NA,
  "Mono", "FCGR3A",  "FCGR3A+", NA, NA, NA,
  "Mono", "MS4A7",  "FCGR3A+", NA, NA, NA,
  "NK", "GNLY",  NA, NA, NA, NA,
  "NK", "NKG7",  NA, NA, NA, NA,
  "DC", "FCER1A",  NA, NA, NA, NA,
  "DC", "CST3",  NA, NA, NA, NA,
  "Platelet", "PPBP",  NA, NA, NA, NA,
)
obj <- findmarkergene(obj, marker = cell_marker, if_use_custom_marker = T , use_method = "1",logfc = 0.4, cell_min_pct = 0.25, pvalue = 0.05)
obj <- findcelltype(obj)
marker <- tibble( cluster = parse_number(obj@celltype$cluster), cell_tpye =  obj@celltype$cell_type) 
pbmc$CellType <- marker$cell_tpye[match(pbmc$seurat_clusters,marker$cluster)]
p1 <- DimPlot(pbmc, group.by = "seurat_clusters",reduction = "umap", label = T) 
p2 <- DimPlot(pbmc, group.by = "CellType",reduction = "umap", label = T,label.size=2) 
p1+p2
ggsave('CellAnnot_umap3.png', height = 4.5, width = 12, dpi = 300)

CellAnnot_umap3.png

這樣我們就得到了一個和官方給到的注釋完美一致的了析苫。而我們?nèi)绻枰謩釉谛薷闹恍枰薷膍arker中的數(shù)據(jù)就實(shí)現(xiàn)了所謂的手動注釋了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市衩侥,隨后出現(xiàn)的幾起案子国旷,更是在濱河造成了極大的恐慌,老刑警劉巖茫死,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跪但,死亡現(xiàn)場離奇詭異,居然都是意外死亡峦萎,警方通過查閱死者的電腦和手機(jī)屡久,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爱榔,“玉大人被环,你說我怎么就攤上這事〈牝剑” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵丁鹉,是天一觀的道長妒潭。 經(jīng)常有香客問我,道長揣钦,這世上最難降的妖魔是什么雳灾? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮冯凹,結(jié)果婚禮上谎亩,老公的妹妹穿的比我還像新娘。我一直安慰自己宇姚,他們只是感情好匈庭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著浑劳,像睡著了一般阱持。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魔熏,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天衷咽,我揣著相機(jī)與錄音,去河邊找鬼蒜绽。 笑死镶骗,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的躲雅。 我是一名探鬼主播鼎姊,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了此蜈?” 一聲冷哼從身側(cè)響起即横,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裆赵,沒想到半個月后东囚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡战授,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年页藻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片植兰。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡份帐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出楣导,到底是詐尸還是另有隱情废境,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布筒繁,位于F島的核電站噩凹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏毡咏。R本人自食惡果不足惜驮宴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呕缭。 院中可真熱鬧堵泽,春花似錦、人聲如沸恢总。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽片仿。三九已至佳谦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滋戳,已是汗流浹背钻蔑。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奸鸯,地道東北人咪笑。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像娄涩,于是被迫代替她去往敵國和親窗怒。 傳聞我的和親對象是個殘疾皇子映跟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345

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