バイオインフォマティクスのデータ解析では、大量のテキストデータを効率的に処理する必要があります。その際、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 との組み合わせが有効です!!
これらのコマンドを駆使することで、バイオインフォマティクスのデータ解析をより効率的に進めることができますよ〜!
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

