FastQC 使い方 コマンドラインでテキスト形式の結果を活用する
バイオインフォ道場、くまぞうです。
バイオインフォマティクスの解析を行う際、一番最初に行うのはリードの品質チェックです。代表的なツールはFastQCで結果を視覚的に確認できて非常に便利ですが、たくさんデータを使う場合はコマンドライン(command line)を活用して結果を簡単にまとめる方が便利です。
FastQCについて
FastQCは、次世代シーケンサから得られたリードの品質をチェックするツールです。リード内の各ポジションでの品質評価や、N数・アダブターの混入の有無などをチェックすることが出来ます。FastQCから得た評価を基に、トリミング処理やリードの除外処理などを行なうことで解析データの品質管理を行います。
[browser-shot url=”https://www.bioinformatics.babraham.ac.uk/projects/fastqc/” width=”600″]
FastQCをコマンドラインで実行する
解析データでたくさんのFastqデータを使う場合は、FastQCをコマンドラインで実行する方が簡単です。ワイルドカードを使ってデータを指定することができるので、例えばフォルダ内の全てのデータについてFastQCを実行することも1回の操作で実行することができます。また、gz圧縮されたデータにも対応しているので、わざわざ一度解凍してから実行するという煩わしさもありません。
fastqc *.fastq.gz
必要に応じて、スレッド数や結果の出力先フォルダを指定することができます。(存在するフォルダを指定すること)
fastqc -t 4 -o fastqc_results/ *.fastq.gz
コマンドラインを使ったFastQC結果のまとめ方
HTML形式とテキスト形式の結果ファイルを利用する
FastQCの結果は、HTML形式とテキスト形式で出力されます。HTML形式では、結果をブラウザで視覚的に観ることができるので大変便利です。反面、全てのデータを目視で確認しなくてはならないので、データが多くなると面倒に感じることもしばしばです。しっかり目視することはとても大事なことですが、大量のデータをザッと確認したい場合は、テキスト形式の結果が便利で効率的です。さらに簡素化して判定結果だけで評価したい場合は、summary.txtで判定結果だけを得ることができます。
結果の格納先は、以下のようになります。デフォルト動作では、fastqデータと同じフォルダにfastqc結果フォルダが作成され、その中にそれぞれの結果が格納されます。ちなみにグラフ画像も別フォルダ(Images)に格納されます。
FASTQname_fastqc/fastqc_report.html # html形式の結果 FASTQname_fastqc/fastqc_data.txt # テキスト形式の結果 FASTQname_fastqc/summary.txt # テキスト形式の結果(結果の判定のみ) FASTQname_fastqc/Images # グラフイメージ(.png) FASTQname_fastqc/Icons # アイコン
HTML形式
テキスト形式
summary
テキスト形式の結果ファイルをコマンド処理で簡単に整理する
FastQCの結果で一番注目するであろう「Per base sequence quality」について、複数のデータを評価する場合に役立つコマンド処理を考えてみたいと思います。よく使うコマンドだけで構成しているので、用途に応じてカスタマイズも簡単です!
コマンド処理の流れ
コマンドとその意味
$ cat *_fastqc/fastqc_data.txt | grep "^Filename" -A36 | sed -e '/^File type/,/^>>Per/d' > all_fastqc.txt
- 複数のファイルを連結する:catコマンド
catコマンドは複数のファイルを連結(表示)するコマンドです。FastQCの結果が格納されるフォルダをワイルドカードで指定して、全てのテキスト結果を1つのデータに連結します。データにファイル名も記載されているので、そのまま連結します。 - 必要な部分だけを抜き出す:grepコマンド
「ファイル名」と「Per base sequence quality」を抜き出します。ファイル名の「Filename」を目印にして、grepで「36行分の連続領域」を抜き出します。grepでヒットした行数から下向きに複数行を抜き出すには-Aオプション
を使います。ちなみに、上向きに複数行を抜き出すには、-Bオプション
を使います。形式が決まっているファイルを扱う場合は便利です。キーワードにヒットした直下の行を取り出すときなどに便利です(grep keyword -A1
はよく使います。) - 不要な部分を削除する:sedコマンド
sedはデータ置換によく用いますが、行データの削除にも使えます。固定行やキーワードで範囲を指定できるので、覚えておくと大変役に立ちます。今回は、grepでざっくり取り出した連続領域内の不要行を削除します。ファイル名の直ぐ下の、「File type」で始まる行〜「>>Per base sequence quality」で始まる行までを削除しました。キーワードで指定したので、フォーマットの変更にもある程度対応可能です。
何度も使う処理はシェルスクリプトとしてまとめておくと便利
何度も使うコマンド処理や自動処理を作る場合は、シェルスクリプトにまとめておくと良いです。
#! /bin/bash # my_all_fastqc.sh cat *_fastqc/fastqc_data.txt | grep "^Filename" -A36 | sed -e '/^File type/,/^>>Per/d' > all_fastqc.txt
$ > chmod +x my_all_fastqc.sh $ > ./my_all_fastqc.sh
自動処理はテキストデータの方が扱いやすい
今回対象にしたFastQCの結果ファイルは形式が整っているので、いくつかのコマンドを組み合わせるだけで簡単に整理することができます。品質チェックで一番注目すべき点は「どこに問題があるか?」ということです。たくさんのデータを常に集中してチェックすることは難しいですが、問題のあるデータだけを取り出せば効率的にチェックすることが可能になります。テキストデータは一見面倒なデータですが、プログラムの処理には適している場合があります。他にも色々な自動処理で効率化に挑戦してみましょう!