Galaxyを利用したゲノム解析へ入門 環境構築と基本操作編

本当に誰でもできるのだろうか、ゲノム解析。解析ツールの基本操作まで手を動かし確認してみました。
2021.05.02

連休を利用してゲノム解析に入門してみました。といっても初歩の初歩です。実際にゲノム解析をやってみて、生物学の専門用語と、なにを行うときに計算量が多くスパコンが必要になるのかを知りたいのが目的です。現在の理解度は「HPCぼちぼち、生物わからん」でゲノム解析をやってみたまでが既に遠い道のりのように思えます。

幸いなことにぴったりな本がありましたのでご紹介します。

ゲノム解析が誰でもできるようになる本 — Docker×Galaxyで簡単ゲノム解析

「特技:ゲノム解析」を加えませんか?

・生物をよく知らない方
・解析ができない生物専攻の方

上記にいずれかに当てはまる方は、是非本書でバイオインフォマティクスを簡単に学んでみましょう。

やってみましょう。せっかくなのでEC2で環境用意して進めてみます。

書くこと・書かないこと

ゲノム解析が誰でもできるようになる本は、お手元の端末でGalaxyをDockerコンテナで実行し、試せるハンズオン形式で紹介されています。 当記事ではEC2(Ubuntu 20.04)での環境構築と、まったくの初学者である私がGalaxyを使うまでに調べたこと、本に書かれている内容とGalaxyのバージョンの違いにより手順どおりに実行できなかったことを記録に残します。

専門用語の説明はゲノム解析が誰でもできるようになる本をご参照ください。教科書的な小難しい説明をにひらたく説明してくれています。なんとなくわかるレベルで説明されているため、なんとなく知って気になった単語・用語は個々に調べればよいので必要十分です。

検証環境

項目
OS Ubuntu 20.04 LTS
AMI ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20210223
InstanceType t3a.large
EBS 30GB
Docker 20.10.6
Galaxy 20.05

セキュリティグループはSSHと、WEBブラウザでアクセス時にTCP 8080がインバウンドに必要になります。ソースは特定のIPからのみに制限しておきましょう。

Galaxyとは

WEBブラウザから利用できるWEBベースのデータ解析ツールです。CLIオンリーの世界かと思っていたのですがGUIでの解析ツールもあることが驚きでした。

galaxyproject/galaxy: Data intensive science for everyone.

Dockerインストール

今回検証に利用するEC2のOSはUbuntu 20.04です。Dockerをインストールしたときの手順を残します。本ではMacでの導入方法が紹介されています。

公式のドキュメントに沿って進めていけば困ることはありませんでした。

インストール手順

古いバージョンの削除。今回使用したUbuntuのAMIには該当するパッケージは含まれていませんでした。

$ sudo apt-get remove docker docker-engine docker.io containerd runc
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package docker-engine

Docker公式のGPGキーを追加します。

$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

安定版のリポジトリstableを指定しました。

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

やっとインストールです。

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io -y

Dockerインストール完了しました。

$ docker version
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:47:17 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version: dial unix /var/run/docker.sock: connect: permission denied

hello-worldで動作確認するとイメージのPullに失敗します。

$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

/var/run/docker.sockrootか、dockerグループしか権限がありませんでした。

$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 May  1 12:41 /var/run/docker.sock

dockerグループにubuntuユーザを追加します。一度ログアウト・ログインしてグループ追加を反映させます。

$ sudo usermod -g docker ubuntu
$ exit

sudoなしでdockerコマンドを使えるので動作確認完了です。

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
--- 省略 ---

Galaxy起動

Galaxyのイメージから実行してGalaxyを起動して、WEBブラウザからアクセスします。

$ docker run -d -p 8080:80 quay.io/galaxy/introduction-training

WEBブラウザでhttp://[PUBLIC_IP]:8080にアクセスします。Galaxyのトップページにアクセスできます。

上部メニューから管理画面を開きログインします。デフォルトパスワードが本を書かれたときとは変更になっているようでadminではなくpasswordでログインできます。

項目
Public Name or Email Address admin@galaxy.org
Password password

ディスクサイズ補足

GalaxyのDockerイメージを落としてくると約12GB消費するためEBSのサイズに注意してください。当初15GBのディスクサイズで作成し、容量不足でイメージを落とませんでした。30GBに拡張してから実行しました。最初から20GB以上のディスクサイズで作成しておきましょう。

# Befor pull image
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        30G  2.2G   27G   8% /

# After pull image
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        30G   14G   16G  47% /

Galaxy基本操作

ヒストリーに名前をつけて管理します。ヒストリーは解析結果の解析手順を自動記録でき、他のユーザにヒストリーを共有することもできます。

Unnamed historyをクリックしhanson1へ名前を変更しました。

チュートリアル用のテストデータをURL指定でアップロードします。テストデータは架空の黄色ブドウ球菌のミニチュアゲノムだそうですが、ぜんぜんピンとこないです。

アップロードアイコンをクリックします。

テストデータを提供しているURLから直接Galaxyへアップロードできるのは便利です。いったんローカルに落とさなくて済みますからね。

ヒストリーにアップロードしたファイルの情報が記録されました。アップデートしたファイルの内容は目のアイコンから確認できます。

下記の羅列が続いたデータを確認できました。

このファイルはFASTQ形式と呼ばれ、次世代シーケンサーなどから出力された塩基配列のデータを保存するデファクトスタンダートの形式です。

塩基配列とクオリティスコアが載っているテキストベースのファイル形式です。各行の意味は下記の通りです。

項目
赤線 配列ID
青線 塩基配列
緑線 クオリティスコア

ツールのインストール

本と異なる点はFastQCインストール済みで、Filter by qualityは検索してもできませんでした。検索のレイアウトも変わっていたため検索方法のキャプチャ載せておきます。ちなみにFilter by qualityもインストール済みで後々使用しました。

検索して表示されたfastqcをクリックすると展開されます。

FastQCツール実行

Toolsから検索します。

さきほどアップロードしたFASTQファイルがすでに選択されていました。そのまま実行します。

ヒストリーに実行結果が記録されました。Web pageと表示されている実行結果を確認してみます。

画面真ん中にデータが表示されます。

見切れてしまったのでグラフだけを載せます。クオリティスコアの確認しやすい。

Filter by qualityツール実行

クオリティの低いリードを除去できるツールです。

リードとは次世代シーケンサー(NGS)でDNAを読み取とるとDNAが断面化されます。断片化した塩基配列がリードと呼ばれています。 よくシュレッダーにかけたといった表現をみます。いまのところ一番イメージしやすく、しっくりきています。

Galaxy (ゲノムビッグデータ解析)におけるオンデマンド機能の活用より引用

こちらのツールも同様にアップロードしたFASTQファイルがすでに選択されていました。Quality cut-off value値を大きくするとより低クオリティのリードを削除します。

ヒストリーに実行結果が追記されました。実行結果を確認してみます。

目のアイコンの結果を確認するより

ヒストリーを展開して詳細を確認するものでした。全体の14%にあたるクオリティの低いリードが削除されたことを確認できます。

ちなみにQuality cut-off valueを50に設定して実行したところ、全部(100%)削除されてしまいました。グラフからクオリティスコアを確認すると上限が40でしたので当然の結果でした。

なぜクオリティの低いリードを取り除くのかというと

シーケンスクオリティが低いリードを事前に除いておくことによって、リファレンスゲノムマッピングやアセンブルの精度や計算コストを軽減することができる。またそれらの解析の精度を純粋に評価するためにも、シーケンスクオリティの問題を分けるのが重要なことである。

シーケンスクオリティが低いのリードを除く | ngstips2より引用

解析精度を高めるというのは想像に容やすいです。いくらスパコンを利用してゲノム解析するとはいえ計算量が膨大なだけに不要な計算は避けるということは大切なんですね。

おわりに

Dockerインストール手順で長くなってしまったのでGalaxyの基礎操作まででいったんまとめました。ゲノム解析が誰でもできるようになる本の1、2章の範囲です。3章からゲノム解析に入っていきます。いまのところ初学者の私には都度都度用語を調べたりと生物の弱さが光ります。

参考