第4章 生命科学データ解析を体験しよう
1 ヒトY染色体上のPAM配列を探せ!
これまでの章でLinuxコマンドの基本的な操作を学んできました.ここでは,実際の生命科学研究で遭遇するような,より実践的なデータ解析を体験していきます.
研究の現場では,公共データベースから大規模なデータをダウンロードし,そのデータが壊れていないかを確認し,目的に応じて加工・集計するという一連の作業が日常的に行われます.本章では,wgetやcurlといったコマンドでWeb上のデータを手元にもってくる方法から始め,gzipによるファイルの圧縮・解凍,そしてcut,sort,uniqといった強力なコマンドをパイプでつなぎ合わせ,膨大なテキストデータから意味のある情報を抽出するテクニックまでを学びます.一つひとつのコマンドはシンプルですが,これらを組み合わせることで驚くほど複雑なタスクをこなせるようになります.
まず本章の前半では,次のQuestionに挑戦してみましょう.
Question①
ヒトY染色体には,ゲノム編集技術CRISPR-Cas9の標的となりうるPAM配列(NGG:NはA,T,G,Cのいずれかの塩基)が,一体いくつ存在するだろうか?
この問いに答えるため,私たちは以下のステップで解析を進めます.( )内には,各ステップで使うコマンドを示しています.
- ❶公共データベースからヒトY染色体のゲノム配列データをダウンロードする(wget,curl)
- ❷ファイルが正しくダウンロードできたか確認する(md5sum,shasum)
- ❸ダウンロードした圧縮ファイルを解凍する(gunzip)
- ❹FASTA形式のファイルから配列部分だけを抽出した後,PAM配列のパターンを検索し(grep),数え上げる(wc)
1 公共データベースからデータを取得
wget,curl
世界中の研究機関がゲノム配列,遺伝子アノテーション,発現データなどをすでに無償で公開してくれています.代表的な例だとNCBI(米国立生物工学情報センター)のGenBankやSRA,UCSC Genome Browser,ヨーロッパEMBLのEnsembl Genome Browser,そして日本のDDBJなどがあります.これらのデータはWebブラウザを使ってマウス操作で一つひとつダウンロードすることも可能ですが,たくさんのファイルを扱う場合,この手作業は非効率的で間違いのもとにもなります.そこで活躍するのが,ColabのターミナルのようなCUIの画面から直接Web上のデータを取得するためのコマンドです.これらを使えば,ダウンロードの過程をスクリプトとして記録できるため,「いつ」「どこから」「どのバージョン」のデータを取得したのかが明確になり,研究の再現性を飛躍的に高めることができます.
ここでは,その代表的な2つのコマンド,wget(ダブルゲット)とcurl(カール)を学びましょう.
wget(web get)コマンドは,その由来の通りWebからファイルを取得することに特化した使いやすいコマンドです.引数としてURLを渡すだけで,そのURLにあるファイルをカレントディレクトリにダウンロードしてくれます.Webサイト上でダウンロードしたいファイルのリンクを調べ(通常は右クリックから「リンクのアドレスをコピー」などで取得できます),それをwgetコマンドの引数として渡します.
たとえば,UCSC Genome Browserのサイトから,ヒトゲノムのY染色体の配列ファイル(圧縮されています)をダウンロードしてみましょう.まず,UCSC Genome Browserを検索して,ホームページの「Downloads」メニューから「Genome Data」を選択,そして「Human」,最後に「Dec. 2013(GRCh38/hg38)」にある「Sequence data by chromosome」を順番にクリックしていきます.
そして出てくる染色体ごとの配列情報の下の方にある,chrY.fa.gzというファイルがY染色体(chrはchromosomeの意)の圧縮された(.gz)ゲノム情報になります.そのリンクにカーソルを合わせて右クリックするとそのファイルのリンクをコピーすることができるので,これをwgetコマンドの引数にします.
wgetの後にスペースを打ち込んでCtrl+V(貼りつけ)という要領ですね.URLは適宜変わるので,ここでは一例を示します.第2章と同じく,Colabのターミナルで実行してください.
Colab - ターミナル
実行すると,進行状況を示すプログレスバー,ダウンロード速度,残り時間などが表示され,完了するとchrY.fa.gzというファイルが作成されているはずです.
curlコマンド:Webからのデータ取得
さて,データをダウンロードするコマンドには,wgetコマンドのほかにcurl(client for URLs)コマンドがあります.このコマンドは,wgetコマンドよりもずっと多機能です.curlコマンドでファイルをダウンロードする場合,デフォルトではファイルの中身を標準出力(画面)に表示してしまうため,-o(output)オプションを使って保存先のファイル名を指定するのが一般的です.同じファイルをダウンロードするのであればファイル名をchrY.fa.gzとして,
Colab - ターミナル
curl -o chrY.fa.gz https://hgdownload.soe.ucsc.edu/goldenPath/hg38/chromosomes/chrY.fa.gz
という感じですね.
