Trajectory解析をやってみたくないでしょうか。Trajectory解析ができれば、細胞の分化経路や遷移状態を推定することができます。しかし、Trajectory解析に用いるMonocle3はインストールが難しいことで定評があり、なかなか手が出せない人も多いのが現状です。本記事ではまずMonocle3をインストールするために、Rのパッケージ管理ツールであるrenvとRバージョン管理ツールであるrigを使って、Monocle3をインストールするところまでやってみます。
Trajectory解析を行う土台ができますので是非挑戦してみましょう。
macOS Monterey (12.4), Quad-Core Intel Core i7, Memory 32GB, R 4.3.0, Monocle3 1.3.7, renv 1.0.11, rig 0.7.0
公共データを用いたSingle Cell RNA-seq解析に関する初心者向け技術書を販売中
プログラミング初心者でも始められるわかりやすい解説!
RとSeuratで始めるSingle Cell RNA-seq解析!
公共データを用いたシングルセル ダイナミクス解析に関する初心者向け技術書を販売中
シングルセルデータの高度な解析であるTrajectory解析、RNA Velocity解析、空間トランスクリプトーム解析が環境構築方法から詳しく解説されています!
Monocle 3とは?
Monocle 3 は、単一細胞トランスクリプトームデータ (scRNA-seq) の解析に特化したオープンソースのRパッケージです。主に、単一細胞遺伝子発現データのクラスタリングや分類、細胞の軌跡推定(擬似時間解析)、および差次的発現解析をサポートします。これにより、細胞の多様性や動的な発達過程を深く理解するための重要な洞察を得ることができます。
公式サイト:
https://cole-trapnell-lab.github.io/monocle3
論文:
Trajectory解析のイメージ
Hussein A et al., 2021
https://www.nature.com/articles/s41467-021-26282-z
Monocle3は細胞の軌跡推定(擬似時間解析)によって、発達や疾患、その他の動的プロセスにおいて、細胞が異なる状態へ移行する過程をモデル化や細胞の時間的な推移(擬似時間)を推定し、分化経路や転換点を特定することが可能であり、細胞がどのように成熟して機能的な状態に達するかを解析したり、疾患の進行過程を解明し、治療の標的となる転換点を特定可能です。
再現性あるR環境の構築に使うツール
renvとは?
renv
は、R のプロジェクトごとのパッケージ環境を管理するためのツールです。Rプロジェクトにおいて、各プロジェクトが独立したライブラリ環境を持つことを可能にし、依存関係のトラブルを回避します。プロジェクトの環境を固定できるため、異なるシステムやメンバー間でも同じ環境を使用可能なため再現性の確保に役立ちます。renvの特徴は以下のとおりです。
- プロジェクトごとの環境管理
- プロジェクト専用のパッケージライブラリを作成し、他のプロジェクトと分離された環境を提供します。
- グローバルな R ライブラリ (
.libPaths()
にあるデフォルトのライブラリ) とは独立した状態を作成。
- 依存関係の記録
- 使用しているパッケージとそのバージョンを
renv.lock
ファイルに記録します。 - これにより、同じ環境を他のシステムや開発者間で再現可能。
- 使用しているパッケージとそのバージョンを
- 環境の復元
- プロジェクトの
renv.lock
ファイルを使用して、正確なパッケージバージョンを復元可能。
- プロジェクトの
https://speakerdeck.com/black_tank_top/renv-version-control?slide=13
P.13より図を改変して引用させていただきました。
rigとは?
rig
は、Rのバージョン管理ツールであり、複数のRバージョンを簡単にインストール・切り替えできるようにするためのツールです。macOSだけでなく、Windows や Linux でも動くと公式ではいっています。
rigのGithub
主な特徴
- 複数バージョンの管理
- 必要なRのバージョンを複数インストールして、プロジェクトや環境ごとに切り替え可能。
- 使いやすいコマンド
- シンプルなコマンドライン操作でRのバージョン管理ができる。
- 必要なバージョンのRをワンコマンドでインストール。
今回みたくMonocle 3のためにR 4.3を使いたいといった、異なるプロジェクトで異なるRバージョンを使用する場合に有用です。
Monocle 3のインストールができない問題
まずはそのままこちらのインストール手順に従ってMonocle3を入れてみます。
https://cole-trapnell-lab.github.io/monocle3/docs/installation
BiocManagerをインストールしてみます。
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install(version = "3.14")
なにやらエラーが出てきました。
BiocManager::install(version = “3.14”) Error: Bioconductor version ‘3.14’ requires R version ‘4.1’; use version = ‘3.20’ with R version 4.4; see https://bioconductor.org/install
エラー文を読んでみると、R version ‘4.1’でないとBiocManagerの3.14使えないらしいことがわかりました。
ちなみに、素直にRのバージョンを4.1にしてBiocManagerのバージョン3.14を使うと、Trajectory解析解析のalign_cds を実行する際にmatrixStatsを1.2.0以上にしろと言われます。
cds <- align_cds(cds, alignment_group = "batch", residual_model_formula_str = "~ bg.300.loading + bg.400.loading + bg.500.1.loading + bg.500.2.loading + bg.r17.loading + bg.b01.loading + bg.b02.loading")
[matrixStats (>= 1.2.0)] useNames = NA is defunct. Instead, specify either useNames = TRUE or useNames = FALSE. See also ?matrixStats::matrixStats.options
BiocManagerのバージョンが3.14ではmatrixStatsのバージョンが1.1になってしまうのでこのままでは解析ができません。
そこでこのGithubのissueを参考にしました。
https://github.com/satijalab/seurat/issues/8183
こちらによれば、BiocManager::install(version = "3.18")
をすればmatrixStats (>= 1.2.0)が入るらしいので、こちらの方法を採用しようと思います。そして、Rのバージョンを合わせるために4.3.0でインストールを試みます。
Rのバージョン管理・パッケージ管理環境の構築
それでは早速再現性あるR環境の構築を行っていきましょう。まずはrigをダウンロードしていきます。
sudoコマンド実行を要求されるので、パソコンのpasswordを入れてください。
brew tap r-lib/rig
brew install --cask rig
rig available --all
コマンドでインストールできるバージョンがわかります。
(r-reticulate) koreedatatsuyanoMacBook-Pro:Desktop koreedatatsuya$ rig available --all
name version release date type
------------------------------------------
2.10.0 2.10.0 2009-10-26 release
2.10.1 2.10.1 2009-12-14 release
2.11.0 2.11.0 2010-04-22 release
.
.
.
4.1.0 4.1.0 2021-05-18 release
4.1.1 4.1.1 2021-08-10 release
4.1.2 4.1.2 2021-11-01 release
4.1.3 4.1.3 2022-03-10 release
4.2.0 4.2.0 2022-04-22 release
4.2.1 4.2.1 2022-06-23 release
4.2.2 4.2.2 2022-10-31 release
4.2.3 4.2.3 2023-03-15 release
4.3.0 4.3.0 2023-04-21 release
4.3.1 4.3.1 2023-06-16 release
4.3.2 4.3.2 2023-10-31 release
4.3.3 4.3.3 2024-02-29 release
4.4.0 4.4.0 2024-04-24 release
4.4.1 4.4.1 2024-06-14 release
4.4.2 4.4.2 2024-10-31 release
next 4.4.2 patched
devel 4.5.0 devel
こんな感じでインストールできるバージョンが出力されます。この中にRの4.3.0があるのでこちらをインストールしていきます。sudoコマンド実行を要求された場合、パソコンのpasswordを入れてください。
rig add 4.3.0
下記エラーが出てきますが、rig listを叩いてみると、4.3.0のインストールが成功しているようです。
[ERROR] command [“installer”, “-pkg”, “/tmp/rig/OYdTiDprbE.pkg”, “-target”, “/”] exited with code 1
(r-reticulate) koreedatatsuyanoMacBook-Pro:test koreedatatsuya$ rig list
* name version aliases
------------------------------------------
4.1 (R 4.1.0)
* 4.2 (R 4.2.0)
4.3-x86_64 (R 4.3.0)
rig default コマンドを実行して、 有効化するRのバージョンを4.3に切り替えていきましょう。nameで出力された値を使わないとエラーになるのでお気をつけください。
rig default 4.3-x86_64
R –version で確認してみると、4.3.0に切り替わっています。
WARNING: ignoring environment value of R_HOME
R version 4.3.0 (2023-04-21) -- "Already Tomorrow"
Copyright (C) 2023 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin20 (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
rig listで確認すると*の位置が4.3に移動しているのがわかります。
* name version aliases
------------------------------------------
4.1 (R 4.1.0)
4.2 (R 4.2.0)
* 4.3-x86_64 (R 4.3.0)
これで、Rのバージョン管理ができるようになりました。
次にrenvを入れていきましょう。今回はtestディレクトリを作り、そこをRの作業ディレクトリとしていきます。Rstudioでtestディレクトリ配下をワーキングディレクトリに設定してください。
> setwd("~/[ご自身の作業ディレクトリ]")
renvをインストールして使えるようにしていきます。Rコンソールで叩いてください。
install.packages("renv")
library(renv)
その後、作業ディレクトリでRターミナルで renv::init()
を叩いてください。これにてプロジェクトの初期化が行われます。
renv::init()
を実行した後に生成されるファイルとその役割を以下に解説します。
renv.lock
:renv
プロジェクトの依存関係を記録したファイルです。
プロジェクトで使用されているRパッケージの名前、バージョン、依存関係、インストール元(CRANやBioconductorなど)が記載されています。
プロジェクトの環境を固定するための重要なファイルで、再現性の確保に役立ちます。別の環境でこのファイルを使って同じパッケージセットを再現できます(renv::restore()
)。renv/
ディレクトリ:renv
専用のフォルダで、プロジェクトの依存パッケージや構成ファイルが含まれます。.Rprofile
Rセッションの開始時に読み込まれるスクリプトファイル。renv
プロジェクトが自動的に有効になるようにするコードが含まれています。
このファイルによって、プロジェクト内でRを起動すると、renv
環境がデフォルトで使用されるようになります。
作られたrenv環境をアクティベートしていきます。以下のコマンドを叩いてください。
source("renv/activate.R")
source(“renv/activate.R”) は、renv を使用したプロジェクトで必要な環境をセットアップし、そのプロジェクト専用のライブラリパスを有効化するためのコマンドです。これで、renv環境がアクティベートされました。
Monocle 3のインストール
それではrenv環境が整ったので、早速Monocle3をインストールしていきましょう。こちらを参考にしていきますが、BiocManager::install(version = “3.18”) でインストールすることにだけ気をつけてください。
https://cole-trapnell-lab.github.io/monocle3/docs/installation
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install(version = "3.18")
BiocManager::install(c('BiocGenerics', 'DelayedArray', 'DelayedMatrixStats',
'limma', 'lme4', 'S4Vectors', 'SingleCellExperiment',
'SummarizedExperiment', 'batchelor', 'HDF5Array',
'terra', 'ggrastr'))
install.packages("devtools")
devtools::install_github('cole-trapnell-lab/monocle3')
library(monocle3)
無事monocle3がインストールされました。
> sessionInfo()
R version 4.3.0 (2023-04-21)
Platform: x86_64-apple-darwin20 (64-bit)
Running under: macOS 14.6.1
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: Asia/Tokyo
tzcode source: internal
attached base packages:
[1] stats4 stats graphics grDevices utils datasets methods base
other attached packages:
**[1] monocle3_1.3.7** SingleCellExperiment_1.24.0 SummarizedExperiment_1.32.0
[4] GenomicRanges_1.54.1 GenomeInfoDb_1.38.8 IRanges_2.36.0
[7] S4Vectors_0.40.2 MatrixGenerics_1.14.0 matrixStats_1.4.1
[10] Biobase_2.62.0 BiocGenerics_0.48.1
パッケージ情報の更新を行う
無事monocle3がインストールされました。しかし、このままセッションを落とすとまた再度renv環境でインストールが必要になります。そのため再インストールしなくて済むように、renv.lockファイルに書き込む必要があります。それにはrenv::snapshot()
を使います。
先ほどのこちらのスクリプトを作業ディレクトリ(renv環境)配下に保存すると、renvがinstallしたパッケージ情報をrenv.lockに書き込んでくれます。
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install(version = "3.18")
BiocManager::install(c('BiocGenerics', 'DelayedArray', 'DelayedMatrixStats', 'limma', 'lme4', 'S4Vectors', 'SingleCellExperiment', 'SummarizedExperiment', 'batchelor', 'HDF5Array', 'terra', 'ggrastr'))
install.packages("devtools") devtools::install_github('cole-trapnell-lab/monocle3')
library(monocle3)
ファイル保存後、どのようなパッケージが保存されるのかを確認するにはrenv::status()
で確認します。上記のコードをmonocle3.R として保存して下記状態を作って確認してみます。
> renv::status()
The following package(s) are in an inconsistent state:
package installed recorded used
abind y n y
askpass y n y
assertthat y n y
base64enc y n y
batchelor y n y
beachmat y n y
beeswarm y n y
BH y n y
・
・
・
(以下、省略)
renv.lockに書き込まれるのはinstalledが「y」, recordedが「n」になっているものです。
それでは、renv::snapshot()
を実行します。Do you want to proceed? [Y/n]: はYを入力してください。
以下の表示が出れば成功です。
- Lockfile written to "~/Documents/rstudio/test_r_4_4_1/renv.lock".
この状態で、renv.lockファイルを見てください。多くのパッケージ情報が追記されたことがわかるかと思います。
ちなみにもう一度renv::status()を見てみると、No issues foundになっています。
> renv::status()
No issues found -- the project is in a consistent state.
作業ディレクトリを切り替えて renv 環境を切り替える
また、作業ディレクトリを切り替えて renv 環境を切り替えたいといったシチュエーションは多くあるでしょう。その際は以下の手順を踏みます。
作業ディレクトリを切り替える:
setwd("新しいプロジェクトのディレクトリ")
renv
を有効化する: プロジェクト内のrenv
環境を有効化するために、次のコマンドを実行します:source("renv/activate.R")
これにより、そのプロジェクトで管理されているパッケージ環境(ライブラリ)が使用されるようになります。
環境が正しく切り替わったか、.libPaths()
コマンドにて現在のライブラリパスを確認してみます。
.libPaths()
renv
有効化前
.libPaths()
[1] “/Users/koreedatatsuya/Library/R/x86_64/4.3/library” [2] “/Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library”
renv
有効化後
.libPaths()
[1] “/Users/koreedatatsuya/Documents/rstudio/test/renv/library/R-4.3/x86_64-apple-darwin20” [2] “/Users/koreedatatsuya/Library/Caches/org.R-project.R/R/renv/sandbox/R-4.3/x86_64-apple-darwin20/b06620f4”
確かに切り替わっていることが確認できますね!
Rstudioの右下画面「Packages」タブでも確認できます。
最後に
いかがだったでしょうか。Rのパッケージ管理を行うだけで研究の再現性がぐっと向上します。今回のMonocle3に限らず、普段のRの解析から取り入れるようにしてみてください!
参考
https://t-arae.blog/posts/2024/2024-09-14-rig-renv-intro
https://qiita.com/okiyuki99/items/688a00ca9a58e42e3bfa
公共データを用いたSingle Cell RNA-seq解析に関する初心者向け技術書を販売中
プログラミング初心者でも始められるわかりやすい解説!
RとSeuratで始めるSingle Cell RNA-seq解析!
公共データを用いたシングルセル ダイナミクス解析に関する初心者向け技術書を販売中
シングルセルデータの高度な解析であるTrajectory解析、RNA Velocity解析、空間トランスクリプトーム解析が環境構築方法から詳しく解説されています!