ex604 - nibb-gitc/gitc2025mar-rnaseq GitHub Wiki

ex604

(発展問題: パッケージrglのインストールは環境によっては大変かもしれません。rglは解析する元データを3次元で可視化するために使用するので、必ずしも必須ではありません)

single cell RNA-seqデータの可視化に使用されているt-SNE、UMAPが何をしているかを解析する。これらのアルゴリズムが何をしているかを把握するために、シミュレートした(答えがわかっている)、そして低次元で可視化して理解しやすいデータを使う。 可視化するために、rglパッケージのplot3d関数をこの例では使う。

[注意] rglパッケージを呼び出す前にX11あるいはX-Quartzを起動しておく必要があります

load("~/Desktop/gitc/data/MS/simulated_3_cell_populations.RData")
source("~/Desktop/gitc/data/MS/multivariate_analysis_source.R")
library(rgl)
plot3d(x, col=x_colors)

raw data

このシミュレーションデータでは3つの細胞集団、3遺伝子のデータを想定しています。3遺伝子、つまり3次元でデータの分布を確認できます。 各細胞は以下の特徴を持たせてある:

  1. 黄色から赤で色付けされた集団: 黄色の状態を起点として赤の状態に向かって時間発展(例: 発生が進む、薬剤・刺激に反応)する細胞。赤に近づくにつれて遺伝子発現に多様性が現れる。
  2. マジェンタからシアンに色付けされた集団: 1と同様。
  3. 黒で色付けされた集団: 時間発展性はなく、遺伝子発現にランダムな多様性がある。

これら細胞集団の3遺伝子発現データをPCA, MDS, t-SNE, UMAPで2次元で可視化する。



library(edgeR)
library(Rtsne)
library(umap)

pca_result  <- PCA(t(x))
tSNE_result <- Rtsne(x, check_duplicates=FALSE, verbose=TRUE)
# 高次元データでの距離を低次元空間にどう変換するかはperplexity変数を調節する。
# デフォルトのperplexityは30。perplexityが小さい方が高次元データでの距離の違いに鋭敏になり、大きくなると影響を受けにくくなる。
# 原著では5-50の範囲が適切と述べている。クラスターを構成する細胞数よりは小さくすることが望ましい。
umap_result <- umap(x)

layout(matrix(1:4, ncol=2, byrow=TRUE))
plot.PCA(pca_result, "loadings", 1:2, col=x_colors, pch=16)
plotMDS(t(x), col=x_colors, pch=16)
plot(tSNE_result$Y[,1], tSNE_result$Y[,2], col=x_colors, pch=16, xlab="tSNE dim 1", ylab="tSNE dim 2")
plot(umap_result$layout[,1], umap_result$layout[,2], col=x_colors, pch=16, xlab="UMAP dim 1", ylab="UMAP dim 2")
⚠️ **GitHub.com Fallback** ⚠️