kuroの覚え書き

96の個人的覚え書き

scRNA-seqやってみる(その2)

ちょっとごちゃごちゃしてきたので一旦整理すると

#Seuartパッケージのインストール
install.packages('Seurat')
library(Seurat)

#テストファイルの準備とdirectoryの移動
setwd("~/scrnaseqtest/immune_alignment_matrix/")

#data読み込み
ctrl.data <- read.table("immune_control_expression_matrix.txt", sep = '\t', row.names = 1)
stim.data <- read.table("immune_stimulated_expression_matrix.txt",  sep = "\t", row.names = 1)

#Seuratオブジェクトの作成
ctrl <- CreateSeuratObject(counts = ctrl.data, project = "IMMUNE_CTRL", min.cells = 5)
stim <- CreateSeuratObject(counts = stim.data, project = "IMMUNE_STIM", min.cells = 5)

#metadataの付与
ctrl@meta.data$ctrl <- "CTRL"
stim@meta.data$stim <- "STIM"

#フィルタリング
ctrl <- subset(ctrl, subset = nFeature_RNA > 500)
stim <- subset(stim, subset = nFeature_RNA > 500)

#正規化
ctrl <- NormalizeData(ctrl, scale.factor = 10000)
stim <- NormalizeData(stim, scale.factor = 10000)

#Z-Scoreの算出
ctrl <- ScaleData(ctrl)
stim <- ScaleData(stim)

#使用する遺伝子の選定
ctrl <- FindVariableFeatures(ctrl)
stim <- FindVariableFeatures(stim)

# 上位1000の変動遺伝子を取得
g.1 <- head(VariableFeatures(ctrl), 1000)
g.2 <- head(VariableFeatures(stim), 1000)

#g1、g2で共通して発現変動の大きい遺伝子をunique関数で抽出
genes.use <- unique(c(g.1, g.2))
scaled_genes <- rownames(GetAssayData(ctrl, slot = "scale.data"))
genes.use <- intersect(genes.use, scaled_genes)
scaled_genes <- rownames(GetAssayData(stim, slot = "scale.data"))
genes.use <- intersect(genes.use, scaled_genes)

とりあえずここまでは良さげ。

データを可視化していく。

CCA(Canonical Correlation Analysis)によるオブジェクトのマージ

# データセットをリストにまとめる
immune.list <- list(ctrl = ctrl, stim = stim)

# アンカーを見つける
anchors <- FindIntegrationAnchors(object.list = immune.list, anchor.features = genes.use)

# データセットの統合
immune.combined <- IntegrateData(anchorset = anchors, dims = 1:30)

# 統合データのスケーリングと主成分分析
immune.combined <- ScaleData(immune.combined)
immune.combined <- RunPCA(immune.combined)

PCAのプロットを出してみる

# 次元削減結果のプロット
p1 <- DimPlot(object = immune.combined, reduction = "pca", group.by = "stim", pt.size = 0.5)
p1

PC_1をy軸に取ったViolin plot

p2 <- VlnPlot(object = immune.combined, features = "PC_1", group.by = "stim")
p2

各次元の重要な遺伝子のヒートマップを表示

DimHeatmap(object = immune.combined, dims = 1:2, cells = 500, balanced = TRUE)

とりあえずできた気になっているが、自分のデータで意味のある解析ができるかというとかなり怪しい。