Bashでシーケンシングデータを扱う
このトピックを終えたら
ターミナルでFASTA/FASTQファイルを開いて、配列数を数えて、特定の配列を検索できるようになります。マウスなしでキーボードだけでデータを扱う初めての体験です。
ターミナルとは?
研究室でピペットを使って試薬を精密に扱うように、ターミナルはコンピュータのデータを精密に扱うツールです。クリックの代わりにコマンドを入力します。
Google Colabでは、セルの先頭に!を付けるとBashコマンドを実行できます。
ファイルを作成して確認する
まず、練習用のFASTAファイルを作りましょう。
# 練習用FASTAファイルを作成echo ">BRCA1_humanATGGATTTATCTGCTCTTCGCGTTGAAGAAGTACAAAATGTC>TP53_humanATGGAGGAGCCGCAGTCAGATCCTAGCGTGAGTTTGCTGTGA>EGFR_humanATGCGACCCTCCGGGACGGCCGGGGCAGCGCTCCTGGCGCTG" > genes.fasta
# ファイルの内容を確認cat genes.fasta# 行数を数えるwc -l genes.fastawcはWord Countの略です。-lオプションは行数のみを数えます。
grep: 配列を検索する
grepはファイルから特定のパターンを見つけるコマンドです。論文でキーワードを検索するのと同じです。
# FASTAヘッダー(>)の行のみを出力echo ">BRCA1_humanATGGATTTATCTGCTCTTCGCGTTGAAGAAGTACAAAATGTC>TP53_humanATGGAGGAGCCGCAGTCAGATCCTAGCGTGAGTTTGCTGTGA>EGFR_humanATGCGACCCTCCGGGACGGCCGGGGCAGCGCTCCTGGCGCTG" > genes.fasta
grep ">" genes.fasta# 配列数を数える(ヘッダー行 = 配列数)grep -c ">" genes.fasta-cオプションはマッチした行の数だけを出力します。
# 特定の遺伝子を検索grep "BRCA1" genes.fastaFASTQ形式を理解する
実際のシーケンシング装置から出てくるデータはFASTQ形式です。FASTAと違い、品質スコア(quality score)が含まれています。
# FASTQファイルを作成(4行で1セット)echo "@read_001ATGCGATCGATCGATCGATCG+IIIIIIIIIIIIIIIIIIIII@read_002GCTAGCTAGCTAGCTAGCTAG+IIIIIIIIIIIIIIIIIIIII@read_003NNNNNATCGATCGATCGATCG+!!!!!IIIIIIIIIIIIIIIII" > reads.fastq
cat reads.fastqFASTQの4行構造:
@で始まるリードID- 塩基配列
+(区切り線)- 品質スコア(高いほど良い、
I=最高、!=最低)
awk: データを加工する
awkはテキストデータを列(column)単位で処理するツールです。スプレッドシートで特定の列だけを選択するのに似ています。
# タブ区切りデータを作成echo "BRCA1 chr17 43044295 43170245TP53 chr17 7661779 7687538EGFR chr7 55019017 55211628" > gene_locations.tsv
# 遺伝子名(1列目)のみを出力awk '{print $1}' gene_locations.tsv# 遺伝子の長さを計算(4列目 - 3列目)awk '{print $1, $4 - $3, "bp"}' gene_locations.tsvパイプ(|): コマンドをつなげる
パイプ(|)はあるコマンドの出力を次のコマンドの入力に接続します。実験で試薬Aの生成物を試薬Bに入れるのと同じです。
# FASTAからヘッダーだけを抽出して数を数えるecho ">BRCA1_humanATGGATTTATCTGCTCTTCGCGTTGAAGAAGTACAAAATGTC>TP53_humanATGGAGGAGCCGCAGTCAGATCCTAGCGTGAGTTTGCTGTGA>EGFR_humanATGCGACCCTCCGGGACGGCCGGGGCAGCGCTCCTGGCGCTG" > genes.fasta
grep ">" genes.fasta | wc -lやってみよう(Faded Example)
空欄を埋めて、FASTQファイルのリード数を数えるコマンドを完成させてください。
FASTQではリードIDは@で始まります。
# @で始まる行の数を数えるには?grep "" test.fastq
よくあるエラーと解決法
Q: command not foundが出ます
Colabでは!プレフィックスが必要です:!grep ">" genes.fasta
Q: 文字化けします
ファイルのエンコーディングの問題です。file genes.fastaでエンコーディングを確認し、UTF-8でなければiconv -f EUC-KR -t UTF-8 input.txt > output.txtで変換します。
Q: Permission deniedが出ます
ファイルに実行権限がない場合に発生します。chmod +x script.shで権限を付与してください。
次の記事では、Pythonでこのデータをより精密に分析する方法を学びます。