バイオインフォマティクスでは、大量のデータを効率的に処理する必要があります。その際、Linuxの基本コマンドを活用することで、データの前処理や解析を効率化できます。本記事では、Linux の sort コマンドに焦点を当て、基本的な使い方からバイオインフォマティクスでの応用例までを解説します。
1. sort コマンドの基本
sort コマンドは、行単位でテキストを並べ替えるために使用されます。一般的な使い方は次のとおりです。
1.1. シンプルなソート
以下のようなファイル sample.txt を用意します。
orange
banana
apple
grape
このファイルをソートするには、次のコマンドを実行します。
sort sample.txt
出力:
apple
banana
grape
orange
デフォルトでは、アルファベット順(辞書順)で並べ替えられます。
1.2. 数値でソート (-n)
例えば、次のような数値データがある場合:
100
5
20
3
デフォルトの sort では辞書順になるため、以下のように並べ替えられます。
sort sample_numbers.txt
出力:
100
20
3
5
期待した順番ではないですね。数値としてソートするには、-n オプションを使います。
sort -n sample_numbers.txt
出力:
3
5
20
100
1.3. 逆順ソート (-r)
降順でソートしたい場合は -r を追加します。
sort -nr sample_numbers.txt
出力:
100
20
5
3
1.4. 重複行を削除してソート (-u)
重複する行を削除しつつソートする場合は、-u オプションを使用します。
sort -u sample.txt
2. sort の応用編
バイオインフォマティクスでは、sort を組み合わせることで、ゲノムデータや遺伝子データの前処理を効率化できます。
2.1. タブ区切りデータのソート (-t と -k)
例えば、以下のようなタブ区切りのデータ genes.txt があるとします。
BRCA1 17 81195210
TP53 17 7579472
EGFR 7 55086724
MYC 8 128748315
このデータを 第3列(数値) に基づいてソートするには、次のように実行します。
sort -k3,3n -t$'\t' genes.txt
出力:
TP53 17 7579472
EGFR 7 55086724
BRCA1 17 81195210
MYC 8 128748315
オプションの説明:
-k3,3n→ 3列目を数値 (n) としてソート-t$'\t'→ タブ区切りを指定
2.2. sort と uniq を組み合わせる
次のような DNA シーケンスのリスト sequences.txt があるとします。
ATCG
GCTA
ATCG
GCGC
ATCG
GCTA
重複をカウントしつつユニークな配列を表示するには、sort と uniq -c を組み合わせます。
sort sequences.txt | uniq -c
出力:
3 ATCG
2 GCTA
1 GCGC
これは、DNA 配列の頻度解析に役立ちます。
2.3. BAM ファイルのソート
NGS(次世代シーケンス)データでは BAM(Binary Alignment/Map)ファイルをソートする必要があります。通常、samtools sort を使いますが、テキストとして処理する場合は sort でも可能です。
例えば、SAM ファイル(テキスト形式の BAM)alignments.sam を次のようにソートします。
sort -k3,3 -k4,4n alignments.sam
これは 染色体名(3列目)と位置(4列目) に基づいてソートします。
3. sort の高速化
大量のデータをソートする際は、sort のパフォーマンスを向上させる方法も重要です。
3.1. 並列処理 (--parallel)
複数の CPU コアを活用するには、以下のように --parallel=N を指定します。(N はスレッド数)
sort --parallel=4 large_file.txt
3.2. 一時ディレクトリ (-T)
ディスク I/O を最適化するために、一時ディレクトリを指定できます。
sort -T /tmp large_file.txt
まとめ
sort コマンドは、バイオインフォマティクスのデータ処理において非常に強力なツールです。本記事では、基本的な使い方から応用例までを紹介しました。
- 基本機能:辞書順、数値順、逆順、重複削除
- 応用編:
- タブ区切りのデータを特定の列でソート
- 重複配列の頻度解析
- BAM/SAM ファイルのソート
- 高速化:並列処理や一時ディレクトリの活用
特に、sort を uniq や samtools などと組み合わせることで、大量データの処理が効率化できます!!
バイオインフォマティクスのデータ解析において、ぜひ活用してみてくださいね〜!
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

