Linux の基本コマンド:重複した行に関する操作「uniq」 の使い方

スポンサーリンク

バイオインフォマティクスのデータ解析では、大量のテキストデータを効率的に処理する必要があります。その際、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

ここでは、

  1. sort expression_results.txt で並べ替え
  2. uniq -c でカウント
  3. sort -nr でカウント順(降順)にソート この結果、頻出する遺伝子がランキング形式で得られます。

4. uniq の制約と対策

4.1 uniq はソート済みのデータに対してのみ動作

ソートされていないデータでは正しく動作しません。したがって、sort と組み合わせて使用するのが基本です。

4.2 部分一致ではなく完全一致で比較する

例えば、塩基配列の部分一致を検出するには grepawk を使用する必要があります。

4.3 uniq は行単位での比較のみ対応

データの特定の列だけを対象に重複を削除したい場合は、cutawk と組み合わせます。

例えば、CSVファイルの 1列目の遺伝子名 だけを対象に重複を削除する場合:

cut -d',' -f1 gene_data.csv | sort | uniq

5. まとめ

バイオインフォマティクスにおいて、uniq コマンドはデータクレンジングや重複検出に非常に役立ちます。特に、次のような場面で活用できます。

重複遺伝子の削除
頻出する遺伝子の統計解析
SNP 変異の一意性チェック

ただし、uniq を使用する前にデータをソートすることが必須 である点には注意が必要です。また、特定の列のみを比較したい場合は cutawk との組み合わせが有効です!!

これらのコマンドを駆使することで、バイオインフォマティクスのデータ解析をより効率的に進めることができますよ〜!

タイトルとURLをコピーしました