Unix 折りたたみコマンドが予期せず動作します。

Unix 折りたたみコマンドが予期せず動作します。

だから私は次のようなfasta(生物学)ファイルを持っています:

>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATCAAATAATTTCATTCGCGTCAGAACACCTGGTTTCACGACC
ATAAATAATTTACCAGTGAATCGAGGCTCAATTATAGATCCTCGGACGCGAGTTCTCGGTTGACGAGTGG
GATTCGAATTATTTTTCACCGAAAATTTTAGTCGACGAGTTCAGATAAATTTGTTCGGGATAAAATCATC
TGAGTAGGTCGGGCTTCTGAATTTCGTATTCTTGCGAGCAATGAATTTTAAATAATCATCGGACATACCA
ATTTTTGGAACAATAATGTTCCGAACATCCCGAAAATATAGGAAGAGCCCGGATAGATAAAAATAAACAC

各行の長さは最大70文字です。通常、最大50文字の長さでフォーマットするには、次のようにします。

Fold -50 input.fasta > output.fasta # -b と -w args も試みる

しかし、どういうわけかこれはうまくいきません。ファイルは私が見た他の多くのファイルと同じように見えます。これで出力は次のようになります。

>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATCAAATAATTTCATTCGCGTCA
GAACACCTGGTTTCACGACC
ATAAATAATTTACCAGTGAATCGAGGCTCAATTATAGATCCTCGGACGCG
AGTTCTCGGTTGACGAGTGG
GATTCGAATTATTTTTCACCGAAAATTTTAGTCGACGAGTTCAGATAAAT
TTGTTCGGGATAAAATCATC
TGAGTAGGTCGGGCTTCTGAATTTCGTATTCTTGCGAGCAATGAATTTTA
AATAATCATCGGACATACCA
ATTTTTGGAACAATAATGTTCCGAACATCCCGAAAATATAGGAAGAGCCC

押し出された20文字をカットして下に正しく配置しますが、次の行に接続せずに最大50文字に縮小します。

以前に作成されたfastaファイルに戻りましたが、折りたたみコマンドはまだうまくいきました。新しいファイルの一部をコピーして別のファイルに貼り付けても問題は解決しません。

私が知らないエンコーディングの問題があるようです。誰でも助けることができますか?

乾杯、

編集:良い答えです。ありがとうございます!

ベストアンサー1

あなたの問題はファイルエンコーディングとは関係ありません。このfoldユーティリティは非常にプリミティブであり、特定の長さの行を切断しますが、接続しません。

fastaヘッダー行を保存するように注意することもできます(つまり、縮小しないでください)。


awk -v W=50 '
    /^>/ { if (seq != "") print seq; print; seq = ""; next }
    {
        seq = seq $1
        while (length(seq) > W) {
            print substr(seq, 1,W)
            seq = substr(seq, 1+W)
        }
    }
    END { if (seq != "") print seq }' file.fa

このawkコマンドは、ヘッダー行を変更せずにシーケンスを50文字に再フォーマットします。幅50はW変数で調整可能で、正の整数に設定できます。

コードの最初のブロックはヘッダー行を処理し、前のシーケンスで累積されたシーケンスビット(出力が残っている場合)を出力し、未変更のヘッダー行を出力に渡します。

2番目のブロックは一連の行を累積し、累積シーケンスが十分に長い場合は、累積シーケンスを適切なチャンクとして出力できます。

最後のブロック(END)は、入力の終わりに達すると残りのシーケンスを出力します。

シーケンスの2つのコピーを含むファイルに対してこのコマンドを実行すると、

>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATCAAATAATTTCATTCGCGTCA
GAACACCTGGTTTCACGACCATAAATAATTTACCAGTGAATCGAGGCTCA
ATTATAGATCCTCGGACGCGAGTTCTCGGTTGACGAGTGGGATTCGAATT
ATTTTTCACCGAAAATTTTAGTCGACGAGTTCAGATAAATTTGTTCGGGA
TAAAATCATCTGAGTAGGTCGGGCTTCTGAATTTCGTATTCTTGCGAGCA
ATGAATTTTAAATAATCATCGGACATACCAATTTTTGGAACAATAATGTT
CCGAACATCCCGAAAATATAGGAAGAGCCCGGATAGATAAAAATAAACAC
>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATCAAATAATTTCATTCGCGTCA
GAACACCTGGTTTCACGACCATAAATAATTTACCAGTGAATCGAGGCTCA
ATTATAGATCCTCGGACGCGAGTTCTCGGTTGACGAGTGGGATTCGAATT
ATTTTTCACCGAAAATTTTAGTCGACGAGTTCAGATAAATTTGTTCGGGA
TAAAATCATCTGAGTAGGTCGGGCTTCTGAATTTCGTATTCTTGCGAGCA
ATGAATTTTAAATAATCATCGGACATACCAATTTTTGGAACAATAATGTT
CCGAACATCCCGAAAATATAGGAAGAGCCCGGATAGATAAAAATAAACAC

W30に変更すると

>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATC
AAATAATTTCATTCGCGTCAGAACACCTGG
TTTCACGACCATAAATAATTTACCAGTGAA
TCGAGGCTCAATTATAGATCCTCGGACGCG
AGTTCTCGGTTGACGAGTGGGATTCGAATT
ATTTTTCACCGAAAATTTTAGTCGACGAGT
TCAGATAAATTTGTTCGGGATAAAATCATC
TGAGTAGGTCGGGCTTCTGAATTTCGTATT
CTTGCGAGCAATGAATTTTAAATAATCATC
GGACATACCAATTTTTGGAACAATAATGTT
CCGAACATCCCGAAAATATAGGAAGAGCCC
GGATAGATAAAAATAAACAC
>m64093_191209_130050/133911/ccs_64
TTCAGGCTGTGTTCCATTTGATTTAAAATC
AAATAATTTCATTCGCGTCAGAACACCTGG
TTTCACGACCATAAATAATTTACCAGTGAA
TCGAGGCTCAATTATAGATCCTCGGACGCG
AGTTCTCGGTTGACGAGTGGGATTCGAATT
ATTTTTCACCGAAAATTTTAGTCGACGAGT
TCAGATAAATTTGTTCGGGATAAAATCATC
TGAGTAGGTCGGGCTTCTGAATTTCGTATT
CTTGCGAGCAATGAATTTTAAATAATCATC
GGACATACCAATTTTTGGAACAATAATGTT
CCGAACATCCCGAAAATATAGGAAGAGCCC
GGATAGATAAAAATAAACAC

あなたも正しいかもしれません。 。 。興味があるFASTX ツールキットCSHLから。私はこれを直接使用したことがありませんが、「FASTAフォーマッタ(FASTAファイルのシーケンスライン幅の変更)」が含まれているようです。これらのツールの最新バージョンは2014年(非常に古いバージョン)なので、特定のUnixディストリビューションでパッケージを提供しない限り(パッケージリポジトリを確認する)、提供されたプリコンパイルされたバイナリの1つを使用するのではなく、ソースから直接コンパイルすることをお勧めします。

おすすめ記事