fastaファイルを線形化し、特殊文字を削除します。

fastaファイルを線形化し、特殊文字を削除します。

awkリモートコンピュータでfastaファイルを線形化しました。開いてみると、nanoファイルが線形化されていることがわかります。ただし、ファイルをローカルコンピュータにダウンロードし、メモ帳を使用して表示すると、結果ファイルは元の圧縮形式に戻ります。考えられる理由は何か教えてください。

順序は次のとおりです。

>P1
MPPRRSIVEVKVLDVQKRRVPNKHYVYIIRVTWSSGATEAIYRRYSKFFDLQMQMLDKFP
MEGGQKDPKQRIIPFLPGKILFRRSHIRDVAVKRLIPIDEYCKALIQLPPYISQCDEVLQ
FFETRPEDLNPPKEEHIGKKKSGNDPTSVDPMVLEQYVVVADYQKQESSEISLSVGQVVD
IIEKNESGWWFVSTAEEQGWVPATCLEGQDGVQDEFSLQPEEEEKYTVIYPYTARDQDEM
NLERGAVVEVVQKNLEGWWKIRYQGKEGWAPASYLKKNSGEPLPPKLGPSSPAHSGALDL
DGVSRHQNAMGREKELLNNQRDGRFEGRLVPDGDVKQRSPKMRQRPPPRRDMTIPRGLNL

>P2
MAEVRKFTKRLSKPGTAAELRQSVSEAVRGSVVLEKAKLVEPLDYENVITQRKTQIYSDP
LRDLLMFPMEDISISVIGRQRRTVQSTVPEDAEKRAQSLFVKECIKTYSTDWHVVNYKYE
DFSGDFRMLPCKSLRPEKIPNHVFEIDEDCEKDEDSSSLCSQKGGVIKQGWLHKANVNST
ITVTMKVFKRRYFYLTQLPDGSYILNSYKDEKNSKESKGCIYLDACIDVVQCPKMRRHAF
ELKMLDKYSHYLAAETEQEMEEWLIMLKKIIQINTDSLVQEKKDTVEAIQEEETSSQGKA
ENIMASLERSMHPELMKYGRETEQLNKLSRGDGRQNLFSFDSEVQRLDFSGIEPDVKPFE
EKCNKRFMVNCHDLTFNILGHIGDNAKGPPTNVEPFFINLALFDVKNNCKISADFHVDLN
PPSVREMLWGTSTQLSNDGNAKGFSPESLIHGIAESQLCYIKQGIFSVTNPHPEIFLVVR

次に、awk次のように線形化します。

 awk '/^>/ {printf("\n%s\n",$0);next; } { printf("%s",$0);}  END {printf("\n");}' < Sequences.fa > out3.fasta

出力は次のとおりです

 >P1
MPPRRSIVEVKVLDVQKRRVPNKHYVYIIRVTWSSGATEAIYRRYSKFFDLQMQMLDKFP^MMEGGQKDPKQRIIPFLPGKILFRRSHIRDVAVKRLIPIDEYCKALIQLPPYISQCDEVLQ^MFFETRPEDLNPPKEEHIGKKKSGNDPTSVDPM$
>P2
MAEVRKFTKRLSKPGTAAELRQSVSEAVRGSVVLEKAKLVEPLDYENVITQRKTQIYSDP^MLRDLLMFPMEDISISVIGRQRRTVQSTVPEDAEKRAQSLFVKECIKTYSTDWHVVNYKYE^MDFSGDFRMLPCKSLRPEKIPNHVFEIDEDCEK$

これで問題は、ローカルコンピュータにダウンロードしてメモ帳(Windowsコンピュータ)またはMEGAで表示したときに圧縮形式に戻ることです。その理由は何ですか?私が経験しているもう一つの問題は、キャレット(^)を順番に削除しようとしたときにsed 's/\^//g' out3.fasta>seq3.fastaそれを使用しても削除されないことです。 $は改行文字です。

ベストアンサー1

これをしないでください。回避できる場合は、Windowsでファイルを開かないでください。 Windowsの行末を使用するように変換するとファイルが破損するため、標準のバイオインフォマティクスツールでは使用できなくなります。ほとんどはDesigned for *用に設計されています。ニックスシステム。これが原因です質問あなたは余分なものを持っています^M

したがって、最初の回避策はWindowsシステムを含まないことです。必要に応じて行末を変更する必要があります。したがって、*nixや他のシステムではなく、Windows上でファイルが縮小されたように見え、Windowsシステムでも実行されない限り、ファイルに対して実行しようとするすべてのダウンストリーム処理が中断されることに注意してください。 GNUawkやその他のシステムでは、次のことができます。使用:

awk '{ if(/^>/){ print NR==1 ? $0"\r" : "\r\n"$0"\r"}else{ printf "%s",$0}} END{print "\r"}' Sequences.fa

またはPerlを使用して:

perl -ne 'chomp; if(/^>/){$.==1 ? print "$_\r\n" : print "\r\n$_\r\n"}else{s/\n//g; print}END{print "\r\n"}' Sequences.fa 

最後に、これを行う理由がほとんどないことに注意してください。 Fasta形式は複数行を受け入れ、ほとんどのシーケンスは実際には複数行に分割されます(通常60文字)。これは正常です。複数行のシーケンスも許可する fastq 型の人気以来、この 1 行シーケンスが拡散されることを見たことがありますが、主に短い読み出しに使用されるため、実際に複数行の項目を実際に見ることはほとんどありません。とにかく、fastaを処理するように設計されたすべてのプログラムは複数行のシーケンスに完全に適しているため、これはおそらく不要です。

おすすめ記事