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 文件, fold 命令仍然正常工作。如果我複制新文件的一部分並將其粘貼到另一個文件中,問題仍然存在。
我認為可能存在我不知道的編碼問題。任何人都可以幫忙嗎?
乾杯,
編輯:很好的答案,謝謝!
您的問題與文件的編碼無關。該
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
變數進行調整,並且可以設置為任何正整數。程式碼中的第一個塊處理標題行,並將輸出前一個序列中累積的序列位(如果有任何剩餘要輸出),然後將標題行未經修改地傳遞到輸出。
第二個塊累積一行序列,如果它足夠長,可能會以適當的塊輸出累積的序列。
最後一個塊 (
END
) 在到達輸入末尾時輸出任何剩餘的序列。在包含兩個序列副本的文件上執行此命令將產生
>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
改為
W
30 給出>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
您可能還對CSHL的 FASTX-Toolkit感興趣。我自己從未使用過它,但它似乎包含一個“FASTA 格式化程序(更改 FASTA 文件中序列行的寬度)”。這些工具的最新版本來自 2014 年(相當舊),因此您可能希望自己從原始碼編譯它們,而不是使用提供的預編譯二進製文件之一,除非您的特定 Unix 發行版提供了一個包(檢查您的包儲存庫)。