バイオインフォマティクスのデータ解析では、大量のテキストデータを効率的に処理する必要があります。その際、Linux の基本コマンドは強力なツールとなります。本記事では、GNU coreutils
に含まれる uniq
コマンド に焦点を当て、基本的な使い方から応用的な活用法までを詳しく解説します。
1. uniq コマンドとは?
uniq
は、ソート済みのファイル から重複した行を削除または検出するコマンドです。バイオインフォマティクスでは、ゲノム配列や遺伝子リストの重複データを処理する際に役立ちます。
基本構文
uniq [オプション] [入力ファイル] [出力ファイル]
入力ファイル
:重複を削除したいファイル(ソート済みである必要あり)出力ファイル
:結果を保存するファイル(省略すると標準出力)
2. 基本的な使い方
uniq
を使うには、事前にソート しておく必要があります。例えば、以下の genes.txt
ファイルがあるとします。
cat genes.txt
BRCA1
TP53
TP53
EGFR
EGFR
EGFR
MYC
2.1 重複行を削除
uniq
を単独で使うと、連続する重複行を削除できます。
uniq genes.txt
BRCA1
TP53
EGFR
MYC
しかし、この方法では 連続していない重複 は削除できません。例えば、次のような場合:
BRCA1
TP53
EGFR
TP53
MYC
このデータでは TP53
が2回出現していますが、間に EGFR
があるため uniq
では削除できません。
2.2 ソートしてから uniq を適用
全ての重複を適切に処理するには、まず sort
でデータを並べ替えます。
sort genes.txt | uniq
BRCA1
EGFR
MYC
TP53
2.3 重複行のカウント (-c)
各行の出現回数を調べるには -c
オプションを使用します。
sort genes.txt | uniq -c
1 BRCA1
3 EGFR
1 MYC
2 TP53
これは、特定の遺伝子がリスト内で何回出現するかを調べるのに便利です。
2.4 重複行のみを表示 (-d)
sort genes.txt | uniq -d
EGFR
TP53
このオプションは、一度しか出現しない行を除き、2回以上出現する行のみ を表示します。
2.5 一度しか出現しない行を表示 (-u)
sort genes.txt | uniq -u
BRCA1
MYC
このオプションは、重複していないユニークな行のみ を抽出します。
3. 応用編:バイオインフォマティクスでの活用
3.1 遺伝子リストのクリーンアップ
遺伝子リストが複数のデータソースから統合された場合、重複を削除するために uniq
を活用できます。
sort gene_list.txt | uniq > cleaned_gene_list.txt
3.2 変異データの重複フィルタリング
SNP(単一塩基多型)データのリストから、一度しか出現しない変異のみを取得する場合:
sort snp_data.txt | uniq -u > unique_snp.txt
3.3 解析結果の統計
バイオインフォマティクス解析の出力から、頻出する遺伝子をリストアップするには:
sort expression_results.txt | uniq -c | sort -nr > gene_frequencies.txt
ここでは、
sort expression_results.txt
で並べ替えuniq -c
でカウントsort -nr
でカウント順(降順)にソート この結果、頻出する遺伝子がランキング形式で得られます。
4. uniq の制約と対策
4.1 uniq はソート済みのデータに対してのみ動作
ソートされていないデータでは正しく動作しません。したがって、sort
と組み合わせて使用するのが基本です。
4.2 部分一致ではなく完全一致で比較する
例えば、塩基配列の部分一致を検出するには grep
や awk
を使用する必要があります。
4.3 uniq は行単位での比較のみ対応
データの特定の列だけを対象に重複を削除したい場合は、cut
や awk
と組み合わせます。
例えば、CSVファイルの 1列目の遺伝子名 だけを対象に重複を削除する場合:
cut -d',' -f1 gene_data.csv | sort | uniq
5. まとめ
バイオインフォマティクスにおいて、uniq
コマンドはデータクレンジングや重複検出に非常に役立ちます。特に、次のような場面で活用できます。
✅ 重複遺伝子の削除
✅ 頻出する遺伝子の統計解析
✅ SNP 変異の一意性チェック
ただし、uniq
を使用する前にデータをソートすることが必須 である点には注意が必要です。また、特定の列のみを比較したい場合は cut
や awk
との組み合わせが有効です!!
これらのコマンドを駆使することで、バイオインフォマティクスのデータ解析をより効率的に進めることができますよ〜!