アメリエフの技術ブログ

Amelieff Staff Blog

pca, tsne, umapの座標を書き出す

シングルセル RNA解析ソフト Seurat で
しばしばPCA, tSNE, UMAPといった次元削減を行いますね。
Seuratを使って作図するときは DimPlot() 関数を使いますが、座標だけを知りたいときはこうします。

座標があれば、Rで細かな作図のアレンジをすることはもちろん、
csvに書き出せばエクセル、Loupe Browserなど他のソフトでも使えるようになります。

f:id:Fuku-I:20200409181058p:plain
エクセルで散布図としてプロット(イメージです)

Embeddings

座標を取り出すには Embeddings() 関数を使います。
日本語では 「包埋」。

取り出したマトリックスの列数は元の次元数に対応し、tSNE, UMAPは2で、PCAは数十個となります。

> embeds_u <- Embeddings(seurat_obj@reductions$umap)
> head(embeds_u)
                      UMAP_1     UMAP_2
AAACCTGAGACTAGAC-1 -7.163653  6.226910
AAACCTGAGCGTGAAT-1 -0.065422 -3.196421
AAACCTGCACGGCTAC-1  5.703184  7.593324
AAACGGGTCACAATGC-1  7.623787  6.151849
AAACGGGTCAGTCAGT-1 -2.568561 -8.758121
AAACGGGTCAGTGCAC-1 -6.955000  6.381600
> write.csv(embeds_u, "umap_embeds.csv",  row.names=TRUE)

Loupe Browserに取り込む際は、上記では行名となっているバーコード配列が1列目 'Barcode' となり必要です。

おまけ。この情報、どこに入っているんだ?

先ほど使った、座標が入っているこれ seurat_obj@reductions$umap
どうやって探してくるかといいますと、

seuratオブジェクトにはたくさんのスロット(データ入れ場)があります。

ちょっと確認してみます。
以下のスロット名が確認でき、次元削減の結果は seurat_obj@reductions に入っていそうだなと分かります。

> slotNames(seurat_obj)
 [1] "assays"       "meta.data"    "active.assay" "active.ident" "graphs"      
 [6] "neighbors"    "reductions"   "project.name" "misc"         "version"     
[11] "commands"     "tools"  

お役立てください。

amelieff.jp

「このcsv欲しい!」
受託解析を依頼される方、遠慮なくお知らせください。


参考文献:

https://satijalab.org/seurat

x and y coordinate of t-SNE plot · Issue #1520 · satijalab/seurat · GitHub