ArchR install備忘録

## シングルセルATAC-seqデータを処理・解析するためのRパッケージ, ArchRを, Apple M3 Mac, Sonoma 14.5に入れる時に行ったこと

scientific dataから2024年6月12に出版されたこちらの論文
```
[Ma, Y., Guo, S., Chen, Y. et al. 
Single-nucleus chromatin landscape dataset of mouse brain development and aging. Sci Data 11, 616 (2024).] 
https://doi.org/10.1038/s41597-024-03382-1
```
で行われているような解析を実行したい, というリクエストを頂いて, Rの環境を準備しようとした際に, ちょっと手間取ったので備忘録と皆さんにも参考になれば, ということで書いてみます.

今回のターゲットはArchR (https://www.archrproject.com/) という, scatac-seq解析ツール.
使用環境はM3 Mac & Sonoma 14.5, Command Line Tools for Xcode は16, R のversionは4.4.1 (2024-06-14), RStudioさんは2024.09.0+375です.

### 1. 公式ページのインストラクションに従う

まずはフツウに, 公式ページのインストラクションに従ってインストールしようとしてみます. 皆さんの環境によっては, すでに必要な状態が整えられていて, 他に何も必要ない可能性があるので, まずは公式ページ通りにしてみてください.
ちなみに私は今のMacを買ってから, 今日までR環境を全然ローカルに作っていなかったので(しばらくcloudで十分な作業しかしていなかった), 本当にdevtoolsを入れたりするところから始めました.

```R:devtoolsのインストール
if (!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")
```

```R:BiocManagerのインストール
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
```

そして, 私の環境では次を行った際にエラーが出ました.
```R:ArchRのインストール
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
```

```R:エラーメッセージ
ERROR: dependency ‘chromVAR’ is not available for package ‘ArchR’
```

ここで出たエラーは, ArchRが依存しているchromVARがない, という内容だったので, 当然こいつを入れに行きます.

chromVARはBioconductorで見つけることができます (https://www.bioconductor.org/packages/release/bioc/html/chromVAR.html). 
こちらもまずはフツウにインストラクションに従ってインストールしようとしてみます.
```R:chromVARのインストール
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("chromVAR")
```
chromVARはソースからのみインストール可能なため, C/C++/Fortranのコンパイラが使われながらインストールが進みます. 
私の環境ではApple clang version 16.0.0 (clang-1600.0.26.3)をC++コンパイラとして使用するところはエラーなく進みました.
が, gfortranを必要とするところでトラブル発生です.

```R:エラーメッセージ
ld: warning: search path '/opt/gfortran/lib/gcc/aarch64-apple-darwin20.0/12.2.0' not found
ld: library 'gfortran' not found
ERROR: compilation failed for package ‘chromVAR’
```

### 2. Rさんがgfortranを使えるようにする
このステップはArchRやchromVARの公式サイトを見たり, サポートを開発者にお願いしようとしてもうまくいかないところです(自分の環境の問題でArchRやchromVARのバグなわけではないから).

ということで調べながら環境構築します.
解決にあたり, 私は以下のstackoverflowの記事と, R bloggersの記事を参考にしました.
1. [stackoverflow](https://stackoverflow.com/questions/69639782/installing-gfortran-on-macbook-with-apple-m1-chip-for-use-in-r?newreg=13e6dc5afc364c8891abeabc32a55c7d)
2. [R bloggers](https://www.r-bloggers.com/2021/03/gfortran-support-for-r-on-macos-2/)

まずはターミナルで, 本当にgfortranがどこにもいないか調べてみたところ, いなさそうだったのでbrewで入れます.

```terminal:gfortranのインストール
brew install gcc
```
なんでgfortranじゃないの? という感じですが, その辺の経緯がR bloggerさんの記事の方に書かれています. 2021年1月から, gfortranはgccにマージされているそうです.

こうしてインストールしてからターミナルで確認すると, 

```terminal:gcc, gfortranのある場所を確認
% which gfortran
/opt/homebrew/bin/gfortran
% which gcc
/usr/bin/gcc
```

この情報を使って, Rがパッケージのコンパイルにこれらを使えるようにします.
ターミナルで以下の作業を行います.
```terminal:gcc, gfortranをRが見つけられるようにする
% mkdir ~/.R
% nano Makevars

 FC      = /opt/homebrew/bin/gfortran
 F77     = /opt/homebrew/bin/gfortran
 FLIBS   = -L/usr/bin/gcc
 
```
念の為書き直すと, `~/.R/Makevars`というファイルを作って, FC以下の3行を書き込み保存した, ということです.

### 3. もう一度 chromVAR -> ArchR という順序でインストール

準備が整ったところで, RStudioのSessionメニューから Restart R を選択して Rをリスタートします. 

```R:chromVARのインストール
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("chromVAR")
```
うまくいくと
```R:RStudio Consoleのメッセージ
* DONE (chromVAR)

The downloaded source packages are in ...
```
みたいな表示が出て完了します.

次に, 元々の目的のArchRのインストールを行います.

```R:ArchRのインストール
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
```
うまくいくと
```R:RStudio Consoleのメッセージ
                                                   / |
                                                 /    \
            .                                  /      |.
            \\\                              /        |.
              \\\                          /           `|.
                \\\                      /              |.
                  \                    /                |\
                  \\#####\           /                  ||
                ==###########>      /                   ||
                 \\##==......\    /                     ||
            ______ =       =|__ /__                     ||      \\\
        ,--' ,----`-,__ ___/'  --,-`-===================##========>
       \               '        ##_______ _____ ,--,__,=##,__   ///
        ,    __==    ___,-,__,--'#'  ==='      `-'    | ##,-/
        -,____,---'       \\####\\________________,--\\_##,/
           ___      .______        ______  __    __  .______      
          /   \     |   _  \      /      ||  |  |  | |   _  \     
         /  ^  \    |  |_)  |    |  ,----'|  |__|  | |  |_)  |    
        /  /_\  \   |      /     |  |     |   __   | |      /     
       /  _____  \  |  |\  \\___ |  `----.|  |  |  | |  |\  \\___.
      /__/     \__\ | _| `._____| \______||__|  |__| | _| `._____|
    
** testing if installed package keeps a record of temporary installation path
* DONE (ArchR)
```

こんな可愛らしい表示が出て完了します.

続けて公式サイトに従ってライブラリのロード, 追加パッケージのイストールを行なっていきます.

```R:ArchRのロード
library(ArchR)
ArchR::installExtraPackages()
```
最後は次のようなメッセージでした.
```R:RStudio Consoleのメッセージ
Successfully installed 5 packages. 0 packages failed installation.
```

とりあえずインストールまで出来たようです.
皆さんのご参考になれば幸いです.

### References 
1. Granja, J.M., Corces, M.R., Pierce, S.E. et al. ArchR is a scalable software package for integrative single-cell chromatin accessibility analysis. Nat Genet 53, 403–411 (2021). https://doi.org/10.1038/s41588-021-00790-6

2. Schep AN, Wu B, Buenrostro JD, Greenleaf WJ (2017). “chromVAR: inferring transcription-factor-associated accessibility from single-cell epigenomic data.” Nature Methods. doi:10.1038/nmeth.4401.