バイオインフォマティクスでは、大量のテキストデータ(DNA配列、タンパク質データ、ゲノムアノテーションなど)を扱うことが多く、Linuxの基本コマンドを使いこなすことが非常に重要です。
今回は、GNU coreutils に含まれる fold
コマンドに焦点を当て、その基本的な使い方とバイオインフォマティクスにおける応用例について解説します。
1. fold コマンドの基本
fold
は、長い行のテキストを指定した幅で折り返す(改行を挿入する)コマンドです。デフォルトでは、80文字ごとに改行が挿入されます。
1.1 基本的な構文
fold [オプション] [ファイル]
もしファイルを指定しなければ、標準入力(stdin)からデータを受け取ることができます。
1.2 fold の基本的な使用例
80文字ごとに改行(デフォルト動作)
echo "This is a long line that needs to be wrapped at a certain width." | fold
任意の幅(例えば50文字)で改行
echo "This is a long line that needs to be wrapped at a certain width." | fold -w 50
出力:
This is a long line that needs to be wrapped at a c
ertain width.
スペースを考慮して改行(単語を切らない)
echo "This is a long line that needs to be wrapped at a certain width." | fold -w 50 -s
出力:
This is a long line that needs to be wrapped at a
certain width.
オプション -s
を指定すると、単語の途中で折り返さず、スペース(空白)で区切られるようになります。
2. fold の応用(バイオインフォマティクス向け)
バイオインフォマティクスでは、DNAやタンパク質配列などの長い文字列データを扱うことが多く、fold
は特にFASTAファイルのフォーマット調整に役立ちます。
2.1 FASTA ファイルの整形
FASTAフォーマットでは、配列データが一行に長く記載されている場合がありますが、標準的なフォーマットでは60文字ごとに改行することが推奨されています。これを fold
を使って調整できます。
例:FASTAファイルの整形
入力ファイル (sequence.fasta
)
>sequence1
AGCTTGACTGATCGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC
コマンド
fold -w 60 sequence.fasta > formatted_sequence.fasta
出力 (formatted_sequence.fasta
)
>sequence1
AGCTTGACTGATCGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC
この方法で、配列部分のみ60文字ごとに改行され、FASTAフォーマットに適した形になります。
2.2 RNA・タンパク質配列のフォーマット調整
FASTAだけでなく、RNA配列やタンパク質配列でも fold
を活用できます。
例:RNA配列の整形
echo "AUGGCCUUUUUAGCGAUGGGAUUUUCCGAAAGGGAUUUUUCCCGGA" | fold -w 10
出力
AUGGCCUUUU
UAGCGAUGGG
AUUUUCCGAA
AGGGAUUUUU
CCCGGA
このように、視認性を向上させることができます。
3. fold の組み合わせ技
Linuxのパワフルな点は、複数のコマンドを組み合わせてより便利な処理ができることです。
3.1 fold + grep で特定の配列を検索
例えば、改行のある配列データの中から特定の配列(AGCTAG
)を含む行を抽出する場合:
fold -w 60 sequence.fasta | grep "AGCTAG"
この方法で、配列を適切な幅に整形した上で、特定の配列を検索することが可能になります。
3.2 fold + awk でカスタムフォーマット
例えば、配列データを整形しつつ行番号を追加する場合:
fold -w 60 sequence.fasta | awk '{print NR, $0}'
出力
1 >sequence1
2 AGCTTGACTGATCGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC
3 TAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC
このように、行番号を付与することで管理しやすくなります。
4. fold の制約と代替コマンド
4.1 fold の制約
fold
はバイト単位で処理を行うため、マルチバイト文字(日本語など)を含む場合は正しく動作しないことがあります。- 改行を挿入するだけの単純な機能なので、より高度なフォーマット変換には
awk
やsed
を組み合わせる必要があります。
4.2 fold の代替コマンド
fmt
:fold
と似ているが、単語ごとに改行を挿入し、より柔軟なテキスト整形が可能awk
: より高度なテキスト処理を行う場合に有用sed
: 文字列置換や整形に適している
例えば、fmt
を使って 50 文字ごとに単語単位で改行する場合:
fmt -w 50 sequence.fasta
5. まとめ
fold
は単純ながらも、バイオインフォマティクスにおいて長い配列データを整形するのに便利なコマンドです。特に以下の用途で活躍します:
- FASTAファイルのフォーマット調整
- RNA・タンパク質配列の整形
- grep や awk との組み合わせによるデータ解析
また、fmt
や awk
などの他のコマンドと併用することで、より柔軟なテキスト処理が可能になりますよ〜!!
Linuxの基本コマンドを活用し、より効率的にバイオインフォマティクスのデータ解析を進めていきましょう〜!