LoginSignup
2
1

More than 1 year has passed since last update.

AWS Batch でゲノムマッピングをしてみる

Last updated at Posted at 2022-01-08

初めに

BWA を Centos イメージにインストールして簡単に AWS Batch で動かしてみます。リファレンスファイルや FASTQ ファイルは S3 バケットに保存しておき、Batch ジョブでダウンロードします。

Docker イメージの作成

Centos イメージに BWA、AWS CLI v2 をインストールするイメージを作成します。

Dockerfile
FROM centos

RUN yum install -y git make gcc zlib-devel unzip \
 && git clone https://github.com/lh3/bwa.git \
 && cd bwa \
 && make \
 && cp bwa *.pl /usr/bin \
 && curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
 && unzip awscliv2.zip \
 && ./aws/install -i /usr/local/aws-cli -b /usr/bin \
 && rm -f awscliv2.zip

COPY run_bwa.sh /bwa/run_bwa.sh

CMD sh /bwa/run_bwa.sh

こちらはコンテナで実行するシェルスクリプトです。BWA でマッピングを行うためのコマンドを記述します。

run_bwa.sh
echo 'mapping START'
mkdir /fa_files
mkdir /fq_files
mkdir /sam_files

# リファレンスファイルのダウンロード
aws s3 cp s3://my-gwf-bucket/fa_files/chr5.fa /fa_files/chr5.fa
# インデックスの作成
bwa index /fa_files/chr5.fa

# FASTQ ファイルをダウンロード
aws s3 cp s3://my-gwf-bucket/fq_files/paired_1.fq /fq_files/paired_1.fq
aws s3 cp s3://my-gwf-bucket/fq_files/paired_2.fq /fq_files/paired_2.fq

# マッピング
bwa mem -t 8 -o /sam_files/output.sam /fa_files/chr5.fa /fq_files/paired_1.fq /fq_files/paired_2.fq
# 作成した SAM ファイルをアップロード
aws s3 cp /sam_files/output.sam s3://my-gwf-bucket/sam_files/output.sam

Docker イメージが完成したら ECR に Push します。

AWS Batch の手順

コンピューティング環境の作成

「マネージド型」を選択し、サービスロールは 「Batch service-linked role」 を選択します。

1.png

「オンデマンド」を選択し、最小 vCPU 、最大 vCPU、必要な vCPU はそれぞれデフォルトのままにします。

2.png

こちらもデフォルトのままにします。

3.png

EC2 設定のところで、矢印で示した「設定の追加」をクリックします。イメージタイプには「Amazon Linux2」を選択します。なぜか空白のままですが、問題ありません。

4.png

その後「コンピューティング環境の作成」をクリックします。

ジョブ定義の作成

「EC2」を選択し、ジョブの試行は「1」を入力します。
5.png

コンテナプロパティではイメージに ECR の URI を入力します。コマンドは Dockerfile の CMD で指定したコマンド sh /bwa/run_bwa.sh を入力します。

6.png

vCPU は「8」、メモリはデフォルトの「2048」を指定します。ジョブロールには S3 バケットに対するダウンロード・アップロード権限を付与したロールを指定します。実行ロールには ECR からイメージを Pull できる権限を付与したロールを指定します。

7.png

その後「作成」をクリックします。

ジョブキューの作成

ジョブキュー名を入力します。

8.png

コンピューティング環境の作成 で作成したコンピューティング環境を選択します。

9.png

その後「作成」をクリックします。

ジョブの送信

作成したジョブ定義から「新しいジョブを送信」をクリックします。

10.png

ジョブ定義、ジョブキューを指定します。

11.png

その後「送信」をクリックします。

注意点

ジョブの vCPU(コンテナに割り当てられる vCPU)が、コンピューティング環境で指定した EC2 インスタンスタイプの CPU を超えていると ジョブのステータスが RUNNABLE から動かなくなります。この記事ではインスタンスタイプを Optional にしていますので、任意の vCPU に対して AWS Batch により適切なインスタンスが起動し、ジョブは RUNNABLE で止まることはありません。

ジョブが成功したことを確認する

ジョブ送信後、ECS でコンテナタスクが実行されます。

13.png

インスタンスが起動しています。

12.png

タスクが終了するとインスタンスは削除されます。

14.png

ログを確認して、タスクが正常に完了したことを確認します。

image.png

S3 バケットに SAM ファイルがアップロードされていることを確認します。

15.png

参考記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1