バイオインフォマティクスでは、Linuxのコマンドを使って大量のデータを効率よく処理することが求められます。特に、ゲノム配列データや遺伝子リストなどのテキストデータを扱う際には、テキスト処理コマンドを駆使することが不可欠です。
本記事では、GNU coreutils に含まれる comm
コマンドに焦点を当て、その基本的な使い方から応用例までを詳しく解説します。comm
は、ソート済みの2つのファイルを比較し、共通部分やユニークな部分を抽出するのに便利なコマンドです。
1. comm コマンドとは?
comm
は、2つのソート済みのファイルを比較し、それぞれのファイルにのみ存在する行、または両方のファイルに共通する行を出力するためのコマンドです。
基本的な構文
comm [OPTION] FILE1 FILE2
FILE1
:比較対象の1つ目のファイル(ソート済みである必要あり)FILE2
:比較対象の2つ目のファイル(ソート済みである必要あり)[OPTION]
:表示する列を制御するオプション
出力フォーマット
デフォルトでは、comm
の出力は3つの列に分かれます。
FILE1
にのみ存在する行FILE2
にのみ存在する行- 両方のファイルに共通する行
たとえば、以下の2つのファイルを比較する場合:
file1.txt
apple
banana
cherry
file2.txt
banana
cherry
date
次のように comm
を実行すると:
comm file1.txt file2.txt
出力は以下のようになります:
apple
banana
cherry
date
各列の意味:
apple
(1列目)→file1.txt
にのみ存在date
(2列目)→file2.txt
にのみ存在banana
とcherry
(3列目)→ 両方のファイルに共通
2. comm の基本オプション
comm
には、特定の列を非表示にするためのオプションがあります。
オプション | 説明 |
---|---|
-1 | 1列目を非表示(file1.txt にのみ存在する行を除外) |
-2 | 2列目を非表示(file2.txt にのみ存在する行を除外) |
-3 | 3列目を非表示(共通部分を除外) |
使用例
2つのファイルに共通する行のみを取得
comm -12 file1.txt file2.txt
-1
:1列目(file1のみの行)を非表示-2
:2列目(file2のみの行)を非表示
出力:
banana
cherry
file1.txt にのみ存在する行を取得
comm -23 file1.txt file2.txt
-2
:2列目(file2のみの行)を非表示-3
:3列目(共通の行)を非表示
出力:
apple
file2.txt にのみ存在する行を取得
comm -13 file1.txt file2.txt
-1
:1列目(file1のみの行)を非表示-3
:3列目(共通の行)を非表示
出力:
date
3. comm の応用例
3.1 遺伝子リストの比較
バイオインフォマティクスでは、異なる条件下で発現している遺伝子リストを比較することがよくあります。例えば、以下のような2つのリストがあるとします。
control_genes.txt(コントロール群の遺伝子)
BRCA1
TP53
MYC
EGFR
treatment_genes.txt(治療群の遺伝子)
TP53
MYC
KRAS
EGFR
共通の遺伝子(治療・コントロール両方で発現)を抽出
comm -12 control_genes.txt treatment_genes.txt
出力:
TP53
MYC
EGFR
治療群で新たに発現した遺伝子を抽出
comm -13 control_genes.txt treatment_genes.txt
出力:
KRAS
3.2 配列データのフィルタリング
ゲノム解析では、特定のリストにあるシーケンス ID を含む行を取り出すことがあります。
all_sequences.txt(すべてのシーケンス ID)
seq001
seq002
seq003
seq004
seq005
target_sequences.txt(ターゲットとするシーケンス ID)
seq002
seq004
ターゲットシーケンスのみを取得
comm -12 all_sequences.txt target_sequences.txt
出力:
seq002
seq004
3.3 sort と組み合わせた処理
comm
の前提条件として、比較対象のファイルは ソート済み である必要があります。そのため、未ソートのファイルに対して sort
を適用することがよくあります。
sort file1.txt > sorted_file1.txt
sort file2.txt > sorted_file2.txt
comm sorted_file1.txt sorted_file2.txt
また、パイプ (|
) を活用して、ソートと comm
を一度に実行することもできます。
comm <(sort file1.txt) <(sort file2.txt)
まとめ
comm
コマンドは、ソート済みの2つのファイルを比較し、共通部分やユニークな部分を簡単に抽出できる強力なツールです。
ポイントまとめ
comm
の出力は3列に分かれる(file1のみ, file2のみ, 両方共通)。- オプションを使うと特定の列を非表示にできる(
-1
,-2
,-3
)。 - ソート済みのファイルが必須。未ソートなら
sort
と組み合わせて使う。 - 遺伝子リストの比較やゲノムデータのフィルタリングに便利。
バイオインフォマティクスのデータ処理において、comm
はシンプルながら非常に有用なコマンドです!!ぜひ活用してみてくださいね〜!