Seurat4.0系列教程6:常用命令

Seurat 標(biāo)準(zhǔn)流程

標(biāo)準(zhǔn) Seurat 工作流采用原始的單細(xì)胞表達(dá)數(shù)據(jù)备燃,旨在數(shù)據(jù)中查找clusters。此過程包括數(shù)據(jù)標(biāo)準(zhǔn)化和高變基因選擇凌唬、數(shù)據(jù)歸一化并齐、高變基因的 PCA、共享近鄰圖形的構(gòu)建以及使用模塊優(yōu)化進(jìn)行聚類。最后况褪,我們使用 t-SNE 在二維空間中可視化我們的clusters撕贞。

pbmc.counts <- Read10X(data.dir = "~/Downloads/pbmc3k/filtered_gene_bc_matrices/hg19/")
pbmc <- CreateSeuratObject(counts = pbmc.counts)
pbmc <- NormalizeData(object = pbmc)
pbmc <- FindVariableFeatures(object = pbmc)
pbmc <- ScaleData(object = pbmc)
pbmc <- RunPCA(object = pbmc)
pbmc <- FindNeighbors(object = pbmc)
pbmc <- FindClusters(object = pbmc)
pbmc <- RunTSNE(object = pbmc)
DimPlot(object = pbmc, reduction = "tsne")

Seurat對象交互

自 Seurat v3.0 以來,對 Seurat 對象進(jìn)行了改進(jìn)窝剖,并增加了用戶交互的新方法麻掸。我們還為常見任務(wù)引入簡單的功能,例如取子集和合并赐纱,這些功能反映了標(biāo)準(zhǔn)的R 功能脊奋。

# Get cell and feature names, and total numbers
colnames(x = pbmc)
Cells(object = pbmc)
rownames(x = pbmc)
ncol(x = pbmc)
nrow(x = pbmc)
# Get cell identity classes
Idents(object = pbmc)
levels(x = pbmc)

# Stash cell identity classes
pbmc[["old.ident"]] <- Idents(object = pbmc)
pbmc <- StashIdent(object = pbmc, save.name = "old.ident")

# Set identity classes
Idents(object = pbmc) <- "CD4 T cells"
Idents(object = pbmc, cells = 1:10) <- "CD4 T cells"

# Set identity classes to an existing column in meta data
Idents(object = pbmc, cells = 1:10) <- "orig.ident"
Idents(object = pbmc) <- "orig.ident"

# Rename identity classes
pbmc <- RenameIdents(object = pbmc, `CD4 T cells` = "T Helper cells")
# Subset Seurat object based on identity class, also see ?SubsetData
subset(x = pbmc, idents = "B cells")
subset(x = pbmc, idents = c("CD4 T cells", "CD8 T cells"), invert = TRUE)

# Subset on the expression level of a gene/feature
subset(x = pbmc, subset = MS4A1 > 3)

# Subset on a combination of criteria
subset(x = pbmc, subset = MS4A1 > 3 & PC1 > 5)
subset(x = pbmc, subset = MS4A1 > 3, idents = "B cells")

# Subset on a value in the object meta data
subset(x = pbmc, subset = orig.ident == "Replicate1")

# Downsample the number of cells per identity class
subset(x = pbmc, downsample = 100)
# Merge two Seurat objects
merge(x = pbmc1, y = pbmc2)
# Merge more than two Seurat objects
merge(x = pbmc1, y = list(pbmc2, pbmc3))

數(shù)據(jù)訪問

在 Seurat 中訪問數(shù)據(jù)很簡單,使用明確定義的取子集代碼可以快速查找所需的數(shù)據(jù)疙描。

# View metadata data frame, stored in object@meta.data
pbmc[[]]

# Retrieve specific values from the metadata
pbmc$nCount_RNA
pbmc[[c("percent.mito", "nFeature_RNA")]]

# Add metadata, see ?AddMetaData
random_group_labels <- sample(x = c("g1", "g2"), size = ncol(x = pbmc), replace = TRUE)
pbmc$groups <- random_group_labels
# Retrieve or set data in an expression matrix ('counts', 'data', and 'scale.data')
GetAssayData(object = pbmc, slot = "counts")
pbmc <- SetAssayData(object = pbmc, slot = "scale.data", new.data = new.data)
# Get cell embeddings and feature loadings
Embeddings(object = pbmc, reduction = "pca")
Loadings(object = pbmc, reduction = "pca")
Loadings(object = pbmc, reduction = "pca", projected = TRUE)
# FetchData can pull anything from expression matrices, cell embeddings, or metadata
FetchData(object = pbmc, vars = c("PC_1", "percent.mito", "MS4A1"))

Seurat的可視化

Seurat有一個龐大的诚隙,基于ggplot2的繪圖庫。默認(rèn)情況下起胰,所有繪圖功能都將返回 ggplot2 繪圖久又,從而允許使用 ggplot2 輕松定制。

# Dimensional reduction plot for PCA or tSNE
DimPlot(object = pbmc, reduction = "tsne")
DimPlot(object = pbmc, reduction = "pca")

# Dimensional reduction plot, with cells colored by a quantitative feature
FeaturePlot(object = pbmc, features = "MS4A1")

# Scatter plot across single cells, replaces GenePlot
FeatureScatter(object = pbmc, feature1 = "MS4A1", feature2 = "PC_1")
FeatureScatter(object = pbmc, feature1 = "MS4A1", feature2 = "CD3D")

# Scatter plot across individual features, repleaces CellPlot
CellScatter(object = pbmc, cell1 = "AGTCTACTAGGGTG", cell2 = "CACAGATGGTTTCT")

VariableFeaturePlot(object = pbmc)

# Violin and Ridge plots
VlnPlot(object = pbmc, features = c("LYZ", "CCL5", "IL32"))
RidgePlot(object = pbmc, feature = c("LYZ", "CCL5", "IL32"))

# Heatmaps
DoHeatmap(object = pbmc, features = heatmap_markers)
DimHeatmap(object = pbmc, reduction = "pca", cells = 200)

# New things to try!  Note that plotting functions now return ggplot2 objects, so you can add themes, titles, and options
# onto them
VlnPlot(object = pbmc, features = "MS4A1", split.by = "groups")
DotPlot(object = pbmc, features = c("LYZ", "CCL5", "IL32"), split.by = "groups")
FeaturePlot(object = pbmc, features = c("MS4A1", "CD79A"), blend = TRUE)
DimPlot(object = pbmc) + DarkTheme()
DimPlot(object = pbmc) + labs(title = "2,700 PBMCs clustered using Seurat and viewed\non a two-dimensional tSNE")

Seurat 提供了許多預(yù)制的主題效五,可添加到 ggplot2 中地消,以便快速定制

主題 功能
DarkTheme 設(shè)置帶有白色文本的黑色背景
FontSize 為繪圖的各個元素設(shè)置字體大小
NoAxes 刪除軸和軸文本
NoLegend 刪除所有圖例元素
RestoreLegend 刪除后恢復(fù)圖例
RotatedAxis 旋轉(zhuǎn) x 軸標(biāo)簽
# Plotting helper functions work with ggplot2-based scatter plots, such as DimPlot, FeaturePlot, CellScatter, and
# FeatureScatter
plot <- DimPlot(object = pbmc) + NoLegend()

# HoverLocator replaces the former `do.hover` argument It can also show extra data throught the `information` argument,
# designed to work smoothly with FetchData
HoverLocator(plot = plot, information = FetchData(object = pbmc, vars = c("ident", "PC_1", "nFeature_RNA")))

# FeatureLocator replaces the former `do.identify`
select.cells <- FeatureLocator(plot = plot)

# Label points on a ggplot object
LabelPoints(plot = plot, points = TopCells(object = pbmc[["pca"]]), repel = TRUE)

不同assay之間切換

使用 Seurat,您可以輕松地在單細(xì)胞水平的不同assays 之間切換(例如來自 CITE-seq 的 ADT 計數(shù)畏妖,或整合/批次校正的數(shù)據(jù))脉执。大多數(shù)功能現(xiàn)在需要assays 參數(shù),但您可以設(shè)置默認(rèn)assay以避免重復(fù)語句戒劫。

cbmc <- CreateSeuratObject(counts = cbmc.rna)
# Add ADT data
cbmc[["ADT"]] <- CreateAssayObject(counts = cbmc.adt)
# Run analyses by specifying the assay to use
NormalizeData(object = cbmc, assay = "RNA")
NormalizeData(object = cbmc, assay = "ADT", method = "CLR")

# Retrieve and set the default assay
DefaultAssay(object = cbmc)
DefaultAssay(object = cbmc) <- "ADT"
DefaultAssay(object = cbmc)

# Pull feature expression from both assays by using keys
FetchData(object = cbmc, vars = c("rna_CD3E", "adt_CD3"))

# Plot data from multiple assays using keys
FeatureScatter(object = cbmc, feature1 = "rna_CD3E", feature2 = "adt_CD3")

Seurat v2.X與v3.X/v4.X命令的區(qū)別

Seurat v2.X Seurat v3.X/v4.X
object@data GetAssayData(object = object)
object@raw.data GetAssayData(object = object, slot = "counts")
object@scale.data GetAssayData(object = object, slot = "scale.data")
object@cell.names colnames(x = object)
rownames(x = object@data) rownames(x = object)
object@var.genes VariableFeatures(object = object)
object@hvg.info HVFInfo(object = object)
object@assays$assay.name object[["assay.name"]]
object@dr$pca object[["pca"]]
GetCellEmbeddings(object = object, reduction.type = "pca") Embeddings(object = object, reduction = "pca")
GetGeneLoadings(object = object, reduction.type = "pca") Loadings(object = object, reduction = "pca")
AddMetaData(object = object, metadata = vector, col.name = "name") object$name <- vector
object@meta.data$name object$name
object@idents Idents(object = object)
SetIdent(object = object, ident.use = "new.idents") Idents(object = object) <- "new.idents"
SetIdent(object = object, cells.use = 1:10, ident.use = "new.idents") Idents(object = object, cells = 1:10) <- "new.idents"
StashIdent(object = object, save.name = "saved.idents") object$saved.idents <- Idents(object = object)
levels(x = object@idents) levels(x = object)
RenameIdent(object = object, old.ident.name = "old.ident", new.ident.name = "new.ident") RenameIdents(object = object, "old.ident" = "new.ident")
WhichCells(object = object, ident = "ident.keep") WhichCells(object = object, idents = "ident.keep")
WhichCells(object = object, ident.remove = "ident.remove") WhichCells(object = object, idents = "ident.remove", invert = TRUE)
WhichCells(object = object, max.cells.per.ident = 500) WhichCells(object = object, downsample = 500)
WhichCells(object = object, subset.name = "name", low.threshold = low, high.threshold = high) WhichCells(object = object, expression = name > low & name < high)
FilterCells(object = object, subset.names = "name", low.threshold = low, high.threshold = high) subset(x = object, subset = name > low & name < high)
SubsetData(object = object, subset.name = "name", low.threshold = low, high.threshold = high) subset(x = object, subset = name > low & name < high)
MergeSeurat(object1 = object1, object2 = object2) merge(x = object1, y = object2)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末半夷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子迅细,更是在濱河造成了極大的恐慌巫橄,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茵典,死亡現(xiàn)場離奇詭異湘换,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)统阿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門彩倚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人砂吞,你說我怎么就攤上這事署恍。” “怎么了蜻直?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵盯质,是天一觀的道長袁串。 經(jīng)常有香客問我,道長呼巷,這世上最難降的妖魔是什么囱修? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任材义,我火速辦了婚禮嫌吠,結(jié)果婚禮上乓土,老公的妹妹穿的比我還像新娘诚欠。我一直安慰自己,他們只是感情好逝她,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布徘禁。 她就那樣靜靜地躺著缩幸,像睡著了一般集惋。 火紅的嫁衣襯著肌膚如雪孕似。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天刮刑,我揣著相機(jī)與錄音喉祭,去河邊找鬼。 笑死雷绢,一個胖子當(dāng)著我的面吹牛泛烙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翘紊,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蔽氨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了霞溪?” 一聲冷哼從身側(cè)響起孵滞,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤中捆,失蹤者是張志新(化名)和其女友劉穎鸯匹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泄伪,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡殴蓬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蟋滴。 大學(xué)時的朋友給我發(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
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留迷殿,地道東北人儿礼。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像庆寺,于是被迫代替她去往敵國和親蚊夫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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