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 시스템에서도 수행되지 않는 한 파일에 대해 수행하려는 모든 다운스트림 처리가 중단된다는 점을 기억하십시오. GNU awk
및 기타 시스템에서는 다음을 수행할 수 있습니다. 사용:
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 형식의 인기 이후로 이 한 줄 시퀀스가 확산되는 것을 본 적이 있지만, 주로 짧은 읽기에 사용되기 때문에 실제로 여러 줄 항목을 실제로 보는 경우는 거의 없습니다. 어쨌든 fasta를 처리하도록 설계된 모든 프로그램은 여러 줄 시퀀스에 완벽하게 적합하므로 이 모든 것이 아마도 불필요할 것입니다.
답변2
사용행복하다(이전 Perl_6)
raku -ne '(/^ \> /) ?? "\n$_".put !! .print;'
위 설명에서 언급한 대로 로컬 Windows 머신에서 WSL(Linux용 Windows 하위 시스템)을 사용해 볼 수 있습니다. nano
로컬에서 실행할 수도 있습니다 !
이 답변은 Fasta 시퀀스를 "선형화"하기 위한 Raku 코드를 제공합니다. 현재 일부 크로스 플랫폼 Raku 개발이 진행 중이므로 향후 Raku가 유용할 수 있습니다. 바라보다:https://www.rakudo.org/downloads
입력 예:
>P1
MPPRRSIVEVKVLDVQKRRVPNKHYVYIIRVTWSSGATEAIYRRYSKFFDLQMQMLDKFP
MEGGQKDPKQRIIPFLPGKILFRRSHIRDVAVKRLIPIDEYCKALIQLPPYISQCDEVLQ
FFETRPEDLNPPKEEHIGKKKSGNDPTSVDPMVLEQYVVVADYQKQESSEISLSVGQVVD
IIEKNESGWWFVSTAEEQGWVPATCLEGQDGVQDEFSLQPEEEEKYTVIYPYTARDQDEM
NLERGAVVEVVQKNLEGWWKIRYQGKEGWAPASYLKKNSGEPLPPKLGPSSPAHSGALDL
DGVSRHQNAMGREKELLNNQRDGRFEGRLVPDGDVKQRSPKMRQRPPPRRDMTIPRGLNL
>P2
MAEVRKFTKRLSKPGTAAELRQSVSEAVRGSVVLEKAKLVEPLDYENVITQRKTQIYSDP
LRDLLMFPMEDISISVIGRQRRTVQSTVPEDAEKRAQSLFVKECIKTYSTDWHVVNYKYE
DFSGDFRMLPCKSLRPEKIPNHVFEIDEDCEKDEDSSSLCSQKGGVIKQGWLHKANVNST
ITVTMKVFKRRYFYLTQLPDGSYILNSYKDEKNSKESKGCIYLDACIDVVQCPKMRRHAF
ELKMLDKYSHYLAAETEQEMEEWLIMLKKIIQINTDSLVQEKKDTVEAIQEEETSSQGKA
ENIMASLERSMHPELMKYGRETEQLNKLSRGDGRQNLFSFDSEVQRLDFSGIEPDVKPFE
EKCNKRFMVNCHDLTFNILGHIGDNAKGPPTNVEPFFINLALFDVKNNCKISADFHVDLN
PPSVREMLWGTSTQLSNDGNAKGFSPESLIHGIAESQLCYIKQGIFSVTNPHPEIFLVVR
출력 예(파일의 첫 번째 줄은 실제로 비어 있음):
>P1
MPPRRSIVEVKVLDVQKRRVPNKHYVYIIRVTWSSGATEAIYRRYSKFFDLQMQMLDKFPMEGGQKDPKQRIIPFLPGKILFRRSHIRDVAVKRLIPIDEYCKALIQLPPYISQCDEVLQFFETRPEDLNPPKEEHIGKKKSGNDPTSVDPMVLEQYVVVADYQKQESSEISLSVGQVVDIIEKNESGWWFVSTAEEQGWVPATCLEGQDGVQDEFSLQPEEEEKYTVIYPYTARDQDEMNLERGAVVEVVQKNLEGWWKIRYQGKEGWAPASYLKKNSGEPLPPKLGPSSPAHSGALDLDGVSRHQNAMGREKELLNNQRDGRFEGRLVPDGDVKQRSPKMRQRPPPRRDMTIPRGLNL
>P2
MAEVRKFTKRLSKPGTAAELRQSVSEAVRGSVVLEKAKLVEPLDYENVITQRKTQIYSDPLRDLLMFPMEDISISVIGRQRRTVQSTVPEDAEKRAQSLFVKECIKTYSTDWHVVNYKYEDFSGDFRMLPCKSLRPEKIPNHVFEIDEDCEKDEDSSSLCSQKGGVIKQGWLHKANVNSTITVTMKVFKRRYFYLTQLPDGSYILNSYKDEKNSKESKGCIYLDACIDVVQCPKMRRHAFELKMLDKYSHYLAAETEQEMEEWLIMLKKIIQINTDSLVQEKKDTVEAIQEEETSSQGKAENIMASLERSMHPELMKYGRETEQLNKLSRGDGRQNLFSFDSEVQRLDFSGIEPDVKPFEEKCNKRFMVNCHDLTFNILGHIGDNAKGPPTNVEPFFINLALFDVKNNCKISADFHVDLNPPSVREMLWGTSTQLSNDGNAKGFSPESLIHGIAESQLCYIKQGIFSVTNPHPEIFLVVR