macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

M1 macにバイオインフォマティクスのツールをインストールする

2022/03/20 文章修正

2022/03/24アンケート結果追記

 

 ご存じの通り、新しいmacはCPUがARMアーキテクチャに移行し、x86-64 darwin向けにコンパイルされたプログラムが実行できなくなりました(まだ販売されているintel macもありますが、選択肢は少なくなってきています)。Apple siliconのmacで動かすには、ソースコードからコンパイルする必要があります。しかしビルドにも現状は工夫が必要で、例えばCで書かれたbwaはこちらの質問スレッドの回答にあるように、命令セットを修正し、パッチ(参考)を当てることでコンパイルできるようです(以前にテスト済み)。

また、bwa(bwa0717-mac-aarch64.tar.gz)やbowite2(bowtie2-2.4.5-macos-arm64.zip)、seqkit(seqkit_darwin_arm64.tar.gz)のように、リリースにビルドずみのパッケージを用意してくれている開発者もいますが、まだ少数だと思います。また、複雑な処理を行う自動化されたパイプラインではたくさんの実装を組み合わせているものが多く、リリースからダウンロードするような方法では、インストールプロセスがスケールしません。最近の複雑化されたパイプラインを正確に、かつ短い時間で導入するには、brewやcondaのようなパッケージマネージャの力を借りる必要があります。

 

以前、M1 macにも導入可能なmambaforgeインストーラーを紹介しました。

この手順で、M1 macでもconda(mamba含む)を使えるようになります。しかし現状ではバイオインフォマティクス向け実装のほんとんどについてARM64 (aarch64) darwin向けのバイナリが準備されていないため、condaを実行してもエラーになります。

 

bowite2をインストールしてみましょう。M1チップのmacbook airを使っています。

mamba install -c bioconda bowtie2

Looking for: ['bowtie2']

 

bioconda/osx-arm64                                 352.0 B @ 487.0 B/s 404 failed  0.7s

anaconda/cloud/bioconda/osx-arm64                  114.0 B @ 154.0 B/s 404 failed  0.7s

bioconda/noarch                                      3.5MB @   3.5MB/s  1.1s

pkgs/main/osx-arm64                                522.2kB @ 415.5kB/s  0.5s

au-eoed/osx-arm64                                    1.6kB @ 857.0 B/s  0.8s

anaconda/pkgs/free/noarch                           10.1kB @   3.0kB/s  2.7s

conda-forge/noarch                                   7.6MB @   2.2MB/s  1.9s

pkgs/r/noarch                                      482.4kB @ 128.2kB/s  0.4s

conda-forge/osx-arm64                                2.0MB @ 422.9kB/s  0.9s

ursky/noarch                                       130.0 B @  23.0 B/s  0.9s

pkgs/main/noarch                                   804.6kB @ 122.4kB/s  1.0s

anaconda/pkgs/main/osx-arm64                         3.0MB @ 294.3kB/s  6.5s

ursky/osx-arm64                                    131.0 B @  11.0 B/s  1.0s

anaconda/pkgs/free/osx-arm64                       130.0 B @  10.0 B/s  0.8s

anaconda/cloud/conda-forge/osx-arm64                15.4MB @   1.2MB/s 12.4s

au-eoed/noarch                                     125.0 B @  10.0 B/s  0.5s

pkgs/r/osx-arm64                                   281.0 B @  22.0 B/s 404 failed  0.2s

anaconda/pkgs/main/noarch                            4.9MB @ 327.6kB/s  8.5s

anaconda/cloud/conda-forge/noarch                   54.2MB @   2.0MB/s 26.5s

anaconda/cloud/bioconda/noarch                      25.2MB @ 485.5kB/s 52.1s

 

Pinned packages:

  - python 3.9.*

 

 

Encountered problems while solving:

  - nothing provides requested bowtie2

 

見つからないためインストールできずに終了しました。

 

もちろん、全てのツールがこうなるわけではありません。導入できるものもあります。

#javaのpilon
mamba install -c bioconda/label/cf201901 pilon
#bbmap
mamba install -c bioconda/label/cf201901 bbmap
#picard-tools
mamba install -c bioconda/label/cf201901 picard
#igv
mamba install -c bioconda igv

kazuma$ pilon --help

Pilon version 1.23 Mon Nov 26 16:04:05 2018 -0500

 

    Usage: pilon --genome genome.fasta [--frags frags.bam] [--jumps jumps.bam] [--unpaired unpaired.bam]

                 [...other options...]

           pilon --help for option details 

 

 

 

別の方法として、動作は遅くなりますが、dockerに代表される仮想環境やエミュレータのRosetta2(apple)を使う手があります。RosettaはかつてpowerPCmacintelに移行した時にも活躍しましたね。Rosetta2も、intel mac向けのアプリをapple siliconのmacで動かす時に使われています。dockerも便利で、2022年3月現在、すでにM1 mac向けインストーラーのGeneralリリースが公開されています。ただし、dockerは処理によってはものすごく遅くなります(参考記事)。また、dockerがインストールできないなどのバグも聞きます。

 

そこで、ここではRosetta2を使ってM1 macでcondaを利用できるようにします。まず、M1 向けmambaforgeがあるなら、消すかリネームしておきます。(もしくは後で入れるintel mac向けmambaforgeのパスや名前を変える)

rm -rf ~/mambaforge/

#bashrcに書いているなら消す(viを立ち上げ、ddで行消し、:wqで閉じる)
vi ~/.bashrc

ターミナルは終了しておきます。

 

Rosetta2で実行する用に、Rosetta2専用のターミナルを用意します。ターミナルアプリをコピペして複製します(commnad+shift+U =>ターミナル)(参考記事)。

f:id:kazumaxneo:20220319232956p:plain

2つ目のターミナルにはRosettaを利用して開くにチェックを付けます。

f:id:kazumaxneo:20220319233134p:plain

(他のターミナルソフトウェアでも同じことができるはずです)

 

Rosettaチェックをつけた方のターミナルを起動します。マシンのアーキテクチャを表示するコマンドarchをタイプ。

$ arch

i386

写真のようにインテルCPUと出ればO.K。arm64と出るならRosettaが使われていません。

 

Rosetta2を使うので、あえてintel mac向けMambaforgeインストーラーをダウンロードします。間違ってM1向けMambaforgeインストーラーをダウンロードしないで下さい。condaは当然動作しますが、conda installを打った時にはM1向けバイナリを引っ張ってこようとするので、見つからなくて失敗します。

#Apple x86_64 (Intel chip)
wget -O Mambaforge3.sh https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-MacOSX-x86_64.sh

バッチモードでインストールします。-pでパスとprefixを指定できます(デフォルトは~/mambaforge/)。

bash Mambaforge3.sh -b

#アクティブにする
echo ". ~/mambaforge/etc/profile.d/conda.sh" >> ~/.bashrc && \
echo "conda activate base" >> ~/.bashrc
#アクティベート
source ~/.bashrc
  • -b  run install in batch mode (without manual intervention)

 

改めてbowtie2をインストールしてみましょう。

mamba install -c bioconda bowtie2

f:id:kazumaxneo:20220319234611p:plain

help

>bowtie2

$ bowtie2

 

No index, query, or output file specified!

Bowtie 2 version 2.4.5 by Ben Langmead (langmea@cs.jhu.edu, www.cs.jhu.edu/~langmea)

Usage: 

  bowtie2 [options]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r> | --interleaved <i> | -b <bam>} [-S <sam>]

 

  <bt2-idx>  Index filename prefix (minus trailing .X.bt2).

             NOTE: Bowtie 1 and Bowtie 2 indexes are not compatible.

  <m1>       Files with #1 mates, paired with files in <m2>.

             Could be gzip'ed (extension: .gz) or bzip2'ed (extension: .bz2).

  <m2>       Files with #2 mates, paired with files in <m1>.

             Could be gzip'ed (extension: .gz) or bzip2'ed (extension: .bz2).

  <r>        Files with unpaired reads.

             Could be gzip'ed (extension: .gz) or bzip2'ed (extension: .bz2).

  <i>        Files with interleaved paired-end FASTQ/FASTA reads

             Could be gzip'ed (extension: .gz) or bzip2'ed (extension: .bz2).

  <bam>      Files are unaligned BAM sorted by read name.

  <sam>      File for SAM output (default: stdout)

導入できました。

samtoolsもインストールしてみましょう。

mamba install -c bioconda samtools -y

f:id:kazumaxneo:20220319235655p:plain

> samtools

$ samtools

 

Program: samtools (Tools for alignments in the SAM format)

Version: 1.15 (using htslib 1.15)

 

Usage:   samtools <command> [options]

 

O.K

こんな感じで、正常に動作しているようです。x86-64 darwin向けのバイナリをRosetta2を使って動作させているのでネイティブ実行するより遅くなりますが、dockerを使うよりはずっと高速なのではないでしょうか?明日は簡単なベンチマークを取ってみます。

 

参考



2022/03/25

M1 Macを使っておられるかアンケートに答えていただいた結果です。

自分のツイッターアカウントはおそらく自分に似た属性の方とより多く繋がっていると思うので、結果はランダムサンプリングには全くなっていないことは断りを入れておきます(ネットワークの異なる場所で聞けば大きく異なる結果になる可能性が高い)。とはいえ、既に多くの方がM1のMacを使っていることが分かりました。