2021-12-24 單細(xì)胞入門

Seurat應(yīng)用筆記 數(shù)據(jù)為Seurat官網(wǎng)示范數(shù)據(jù)

library(Seurat)
library(dplyr)
library(magrittr)

每次重新進(jìn)入R都要重新library包

每次得到什么中間結(jié)果可以

save.image("保存路徑")

或者直接點(diǎn)environment左上方的保存按鈕
(當(dāng)然可以一開始用setwd設(shè)定好工作位置足淆,然后調(diào)用save.image的時(shí)候就可以直接用“文件名+.RData”的形式),就可以對每次的數(shù)據(jù)分開保存。
load的作用就是把一個(gè)RData類型文件載入到environment中埃篓,這樣變量就全部在當(dāng)前環(huán)境下雕崩,可以直接使用

setwd("運(yùn)行環(huán)境位置")

單細(xì)胞數(shù)據(jù)文件分類:
由單細(xì)胞得的10x數(shù)據(jù),怎么處理?
code1:

matrix <- Read10X_h5("filtered_gene_bc_matrices_h5.h5")

該函數(shù)直接讀取10x的h5文件枣抱,并且得到一個(gè)matrix矩陣

code2:

matrix <- Read10X("data/matrix_dir")

默認(rèn)讀取運(yùn)行環(huán)境中的 data/matrix_dir目錄下包含文件布疙,如果要讀取運(yùn)行環(huán)境之外的文件蚊惯,就要從頭什么盤開始輸入位置。

包括matrix.mtx, genes.tsv, and barcodes.tsv 把他們都放到matrix中

導(dǎo)入文件后用Seurat包處理

pbmc <-CreateSeuratObject(raw.data = matrix,min.cells = 3,
min.genes = 200, project = "NAME")

創(chuàng)建一個(gè)叫做"pbmc"的東西拐辽,是SeuratObject拣挪。

其中命名raw.data為以上matrix(有的代碼中命名不同,或者一開始導(dǎo)入的時(shí)候不以matrix形式導(dǎo)入俱诸,而以counts形式菠劝,總之這里raw.data = matrix可寫“你要?jiǎng)?chuàng)建的文件的名字”=“你前面導(dǎo)入東西的名字”);基因至少在min.cells個(gè)細(xì)胞中表達(dá)睁搭;每個(gè)細(xì)胞中至少表達(dá)min.genes個(gè)基因赶诊,可以自己設(shè)定;project的命名自己定義就好园骆。

之后Seurat將數(shù)據(jù)保存在不同的slot中舔痪,如pbmc@raw.data, pbmc@data, pbmc@meta.data, pbmc@ident,其中raw.data存放的是每個(gè)細(xì)胞中每個(gè)gene的原始UMI數(shù)據(jù)锌唾,data存放的是gene的表達(dá)量锄码,meta.data存放的是每個(gè)細(xì)胞的統(tǒng)計(jì)數(shù)據(jù)如UMI數(shù)目,gene數(shù)目等晌涕,ident此時(shí)存放的是project信息滋捶。

由于技術(shù)原因,一個(gè)GEM(單細(xì)胞測試的油包水滴)中可能會(huì)包含2個(gè)或多個(gè)細(xì)胞余黎,也可能不包含細(xì)胞重窟,這時(shí)候可以通過觀察每個(gè)barcode中的基因數(shù)目或UMI數(shù)目來判斷。

處理篩掉異常GEM的方法:

  1. 可以計(jì)算每個(gè)barcode中的線粒體基因含量等惧财,從而更加仔細(xì)的觀察數(shù)據(jù)的質(zhì)量巡扇。
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^mt-")

mt-開頭的是線粒體基因扭仁,這里將其進(jìn)行標(biāo)記并統(tǒng)計(jì)其分布頻率

VlnPlot(object = pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)
plot1 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "percent.mt")+ NoLegend()
plot2 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")+ NoLegend()
CombinePlots(plots = list(plot1, plot2))

以上對 pbmc 對象做小提琴圖,分別為基因數(shù)厅翔,細(xì)胞數(shù)和線粒體占比

以上根據(jù)圖片中基因數(shù)和線粒體數(shù)乖坠,分別設(shè)置過濾參數(shù),這里基因數(shù)200-2500知给,線粒體百分比為小于 5%(常用的過濾參數(shù))

作圖瓤帚,直觀地看一下數(shù)據(jù)的質(zhì)量。要輸入代碼plot或者Combineplot涩赢,才可以在右邊出現(xiàn)圖

標(biāo)準(zhǔn)化

pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)

鑒定高變基因戈次,之后就關(guān)注這些基因進(jìn)行研究

pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)
top10 <- head(VariableFeatures(pbmc), 10)

使用默認(rèn)參數(shù),用vst方法選取2000個(gè)高變基因筒扒。

然后選取top10變化的

plot3 <- VariableFeaturePlot(pbmc)
plot4 <- LabelPoints(plot = plot3, points = top10, repel = TRUE,xnudge=0,ynudge=0)
plot3+plot4

得到圖怯邪,看到變化最大的前2000個(gè)和10個(gè)的圖

接下來進(jìn)行數(shù)據(jù)歸一化
1.線性姜維
有一堆細(xì)胞,但是你需要將這些細(xì)胞進(jìn)行分群花墩,但是你又不知道這些細(xì)胞如果進(jìn)行分群的話是按照什么依據(jù)進(jìn)行分群悬秉,就要先使用PCA 降維找到細(xì)胞分群的主要特點(diǎn),這也就是我們常說的主成分分析

all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc,features = all.genes,vars.to.regress = "percent.mt")
pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))

數(shù)據(jù)歸一化冰蘑,對所有基因進(jìn)行標(biāo)準(zhǔn)化和泌,默認(rèn)只是標(biāo)準(zhǔn)化高變基因( 2000 ),速度更快祠肥,不影響 PCA 和分群武氓,但影響熱圖的繪制。

線性降維(PCA)仇箱,默認(rèn)用前面得到的2000個(gè)高變基因集县恕,但也可通過 features 參數(shù)自己指定 需要挺長時(shí)間的,從1%開始加載

定義可視化細(xì)胞和功能的幾種有用的方式PCA剂桥,包括VizDimReduction忠烛,DimPlot,和DimHeatmap 得到一堆positive negative基因

VizDimLoadings(object = pbmc, dims = 1:2, reduction = "pca")
DimPlot(pbmc, reduction = "pca")+ NoLegend()
DimHeatmap(pbmc, dims = 1:2, cells = 500, balanced = TRUE)

以上三行得到三個(gè)圖权逗,定義可視化細(xì)胞和功能美尸,還不知道有啥用?

鑒定數(shù)據(jù)集的可用維度斟薇,確定哪些主成分所代表的基因可以進(jìn)入下游分析用于后續(xù)細(xì)胞分類火惊。

這里可以使用JackStraw做重抽樣分析”伎眩可以用JackStrawPlot可視化看看哪些主成分可以進(jìn)行下游分析。

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

第一步需要一定計(jì)算時(shí)間最后得到圖JackStrawPlot和Elbowplot尸疆,后者比較直觀椿猎。

第二行惶岭,得到JackStrawPlot。是彩色的犯眠,虛線以上的為可用維度按灶,dim是展示多少個(gè)】疬郑可以調(diào)節(jié)dim鸯旁,畫出不同數(shù)量的 pca 查看。

也就是:基于每個(gè)主成分對方差解釋率的排名量蕊。建議嘗試選擇多個(gè)主成分個(gè)數(shù)做下游分析铺罢,對整體影響不大;在選擇此參數(shù)時(shí)残炮,建議選擇偏高的數(shù)字( “寧濫勿缺”韭赘,為了獲取更多的稀有分群);有些亞群很罕見势就,如果沒有先驗(yàn)知識(shí)泉瞻,很難將這種大小的數(shù)據(jù)集與背景噪聲區(qū)分開來。

第三行苞冯,得到Elbowplot袖牙,點(diǎn)圖。比較直觀地看到舅锄,前面的幾個(gè)點(diǎn)分得比較開鞭达。

image.png

之后就可以決定選取多少主成分用于細(xì)胞分類。從上到下巧娱,從p-value最小的開始選擇top few碉怔。

尊重官網(wǎng)的建議,這里選取top 10

  1. 非線性降維( UMAP/tSNE)
    TSNE降維與PCA降維并不相同禁添,TSNE降維主要是非線性降維撮胧。
    TSNE優(yōu)勢:使得相似的對象有更高的概率被選擇,而不相似的對象有較低的概率被選擇老翘。它將多維數(shù)據(jù)映射到適合于人類觀察的兩個(gè)或多個(gè)維度芹啥,廣泛應(yīng)用于圖像處理。
    一般情況下铺峭,在進(jìn)行細(xì)胞分群時(shí):先進(jìn)行PCA主成分分析墓怀,再進(jìn)行TSNE降維分析進(jìn)行細(xì)胞分群,這樣的分群結(jié)果可靠度更高卫键。

Seurat 提供了幾種非線性降維的方法進(jìn)行數(shù)據(jù)可視化(在低維空間把相似的細(xì)胞聚在一起)傀履,比如 UMAP 和 t-SNE,運(yùn)行 UMAP 需要先安裝'umap-learn'包莉炉,兩種方法都可以使用钓账,但不要混用碴犬,這樣,后面的結(jié)算結(jié)果會(huì)將先前的聚類覆蓋掉梆暮,只能保留一個(gè)服协。

2.1 umap
umap優(yōu)于tsne:
UMAP 與 t-SNE 均是非線性降維,多用于數(shù)據(jù)可視化
UMAP 結(jié)構(gòu)與t-SNE一致
UMAP 計(jì)算更快
UMAP 能更好地反映高緯結(jié)構(gòu)啦粹,比t-SNE有著更好的連續(xù)性
這種連續(xù)性反映到單細(xì)胞分析中就是能更好滴可視化細(xì)胞的分化狀態(tài)(UMAP better represents the multi-branched continuous trajectory of hematopoietic development)

umap安裝包如下:

install(packages = 'umap-learn')

基于PCA 空間中的歐氏距離計(jì)算 nearest neighbor graph偿荷,優(yōu)化任意兩個(gè)細(xì)胞間的距離權(quán)重(輸入上一步得到的 PC 維數(shù))

pbmc <- FindNeighbors(pbmc, dims = 1:10)
pbmc <- FindClusters(pbmc, resolution = 0.5)

resolution 參數(shù)決定下游聚類分析得到的分群數(shù),對于 3K 左右的細(xì)胞唠椭,設(shè)為 0.4-1.2 能得到較好的結(jié)果(官方說明)跳纳;如果數(shù)據(jù)量增大,該參數(shù)也應(yīng)該適當(dāng)增大泪蔫;增加的值會(huì)導(dǎo)致更多的群集棒旗。

使用 Idents()函數(shù)可查看不同細(xì)胞的分群;查看每一類有多少個(gè)細(xì)胞

head(Idents(pbmc), 8)
table(pbmc@active.ident) 

得到前8個(gè)細(xì)胞分群的table

pbmc <- RunUMAP(object = pbmc, dims = 1:10)
DimPlot(object = pbmc, reduction = "umap")
umapplot<-UMAPPlot(pbmc,label = TRUE, pt.size = 1.5)+ NoLegend()

這里用 DimPlot()函數(shù)繪制散點(diǎn)圖撩荣。如果只做tsne铣揉,參數(shù)reduction = "tsne";如果不設(shè)定reduction餐曹,默認(rèn)先從搜索 umap逛拱, 然后 tsne, 再然后 pca;

也可以直接使用這 3 個(gè)函數(shù) PCAPlot()台猴、 TSNEPlot()朽合、UMAPPlot(); cols饱狂, pt.size 分別調(diào)整分組顏色和點(diǎn)的大胁懿健;

image.png

2.2 TSNE

pbmc <- RunTSNE(pbmc, dims = 1:10)
DimPlot(object = pbmc, reduction = "tsne")
tsneplot<-TSNEPlot(pbmc,label = TRUE, pt.size = 1.5)+ NoLegend()
image.png

做完以上降維處理保存數(shù)據(jù)

saveRDS(pbmc, file = "pbmc_tutorial.rds")
save(pbmc,file="pbmc.RData")
load(file = "pbmc.RData")

保存在了工作路徑下文件夾中休讳,并且下次用的時(shí)候直接load就好

尋找差異表達(dá)的特征(聚類生物標(biāo)志物)

尋找某個(gè)聚類和其他所有聚類顯著表達(dá)的基因

cluster1.markers <- FindMarkers(object = pbmc, ident.1 = 1, min.pct = 0.25)
head(x = cluster1.markers, n = 5)

find all markers distinguishing cluster 5 from clusters 0 and 3

cluster5.markers <- FindMarkers(object = pbmc, ident.1 = 5, ident.2 = c(0,3), min.pct = 0.25)
write.table(as.data.frame(cluster5.markers), file="cluster1vs2.xls", sep="\t", quote = F)

find markers for every cluster compared to all remaining cells, report only the positive ones

pbmc.markers <- FindAllMarkers(object = pbmc, only.pos = TRUE, min.pct = 0.25, thresh.use = 0.25)

pbmc.markers <- FindAllMarkers(object = pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25, return.thresh = 0.01)
library(dplyr)
top10 <- pbmc.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)
DoHeatmap(object = pbmc, features = top10$gene) + NoLegend()

畫圖

VlnPlot(object = pbmc, features = c("MS4A1", "CD79A"))
FeaturePlot(object = pbmc, features = c("MS4A1", "GNLY", "CD3E", "CD14", "FCER1A", "FCGR3A", "LYZ", "PPBP", "CD8A"))

you can plot raw UMI counts as well

VlnPlot(object = pbmc, features.plot = c("NKG7", "PF4"), use.raw = TRUE, y.log = TRUE)
FeaturePlot(object = pbmc, features = c("hbaa1","hbaa2","ighv1-4","cd79a","cd79b","cd4-1","cd8a","cd8b","itga2b"), cols = c("grey", "blue"), reduction = "tsne")

將單元類型標(biāo)識(shí)分配給集群

new.cluster.ids <- c("1", "3", "4", "2", "5", "6", "7", "8")
names(x = new.cluster.ids) <- levels(x = pbmc)
pbmc <- RenameIdents(object = pbmc, new.cluster.ids)
DimPlot(object = pbmc, label = TRUE, pt.size = 1.5) + NoLegend()

氣泡圖

markers.to.plot <- c("cd74a", "cd74b")
DotPlot(pbmc, features = markers.to.plot) + RotatedAxis()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讲婚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子俊柔,更是在濱河造成了極大的恐慌筹麸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雏婶,死亡現(xiàn)場離奇詭異物赶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)留晚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門酵紫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事奖地∽次希” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵鹉动,是天一觀的道長。 經(jīng)常有香客問我宏邮,道長泽示,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任蜜氨,我火速辦了婚禮械筛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘飒炎。我一直安慰自己埋哟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布郎汪。 她就那樣靜靜地躺著赤赊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪煞赢。 梳的紋絲不亂的頭發(fā)上抛计,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音照筑,去河邊找鬼吹截。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凝危,可吹牛的內(nèi)容都是我干的波俄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蛾默,長吁一口氣:“原來是場噩夢啊……” “哼懦铺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起趴生,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤阀趴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后苍匆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刘急,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年浸踩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叔汁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖据块,靈堂內(nèi)的尸體忽然破棺而出码邻,到底是詐尸還是另有隱情,我是刑警寧澤另假,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布像屋,位于F島的核電站,受9級(jí)特大地震影響边篮,放射性物質(zhì)發(fā)生泄漏己莺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一戈轿、第九天 我趴在偏房一處隱蔽的房頂上張望凌受。 院中可真熱鬧,春花似錦思杯、人聲如沸胜蛉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽誊册。三九已至,卻和暖如春杈湾,著一層夾襖步出監(jiān)牢的瞬間解虱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工漆撞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留殴泰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓浮驳,卻偏偏與公主長得像悍汛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子至会,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • 今天下午去參加了三元思維的IP會(huì)离咐。龍先生首先講了一下2021年發(fā)生的重要的大事,2022年會(huì)繼續(xù)延續(xù)的事奉件。我對他講...
    小楊梅Yami閱讀 243評(píng)論 0 1
  • 明天就是致知班最后一天學(xué)習(xí)了宵蛀,今天小組內(nèi)我還要再寫一次家書。 兩天前日更的時(shí)候我就開始做準(zhǔn)備了县貌,所以即便500字的...
    陪你今生來世閱讀 306評(píng)論 1 4
  • 投射我兒能適應(yīng)大學(xué)生活术陶,越來越會(huì)調(diào)節(jié)自己的情緒和壓力,情緒平和穩(wěn)定煤痕,對自己的未來有清晰的目標(biāo)梧宫,并為此不斷努力接谨。 投...
    花開生兩面閱讀 123評(píng)論 0 0
  • 遇到這樣一些人,她們叫人做事總是趾高氣昂的塘匣,對待我們這些新進(jìn)來的同事脓豪,態(tài)度傲慢荒叼。我對此趟济,內(nèi)心很不滿意抵拘。已經(jīng)有過兩次...
    再見Sarah1992閱讀 177評(píng)論 0 0
  • 武法友閱讀 137評(píng)論 0 0