fasta 파일의 각 단백질 시퀀스 끝에서 *를 제거하는 방법

fasta 파일의 각 단백질 시퀀스 끝에서 *를 제거하는 방법

특정 단백질의 여러 서열(아미노산 서열)이 포함된 fasta 파일이 있습니다. 시퀀스의 마지막 문자는 "*"로 표시되며 이는 실제로 정지 코돈을 나타냅니다. MUSCLE을 사용하여 다중 서열 정렬을 수행하려고 하는데 도구가 끝에 "*"가 있는 모든 서열을 거부합니다.

"*"를 제거하는 방법?

예를 들어 내 입력 파일은 다음과 같습니다.

>seq1
MSDGFHS*
>Seq2
MSDRFH*

나에게 필요한 것은:

>seq1
MSDGFHS
>Seq2
MSDRFH

답변1

그리고 sed. 예를 들어:

$ printf ">seq1\nMSDGFHS*\n>Seq2\nMSDRFH*\n" | sed -e 's/\*$//'
>seq1
MSDGFHS
>Seq2
MSDRFH

*이렇게 하면 줄 끝에 있는 모든 별표 문자( )가 제거됩니다.

sed의 -i옵션을 사용하여 원본 파일을 편집할 수 있습니다. 아니면 sedMUSCLE의 출력을 새로운 fasta 파일로 리디렉션하고 이를 MUSCLE의 입력으로 사용하는 것이 더 나은 옵션이 될 것입니다(일반적으로 다른 프로그램에서도 원본 파일을 사용해야 하는 경우 가장 좋습니다).아니요정보 영구 삭제 - 데이터가 삭제되면 복구할 수 있다는 보장이 없습니다. 특정 목적을 위해 파일의 임시 수정 버전을 사용하는 것처럼 항상 백업을 해 두는 것이 좋습니다.

답변2

데이터에 *지속하려는 다른 위치가 포함되어 있지 않은 경우 다음과 같이 약간의 tr작업을 수행해야 합니다.

$ tr -d '*' < file
>seq1
MSDGFHS
>Seq2
MSDRFH

답변3

vi일하다:

vi file.txt
:1,$s/\*$//
ZZ

이는 vi파일( )의 모든 줄을 지정하도록 지시하며, 1,$줄 끝( )에서 리터럴(정규식 메타 문자이므로 이스케이프됨)이 발견될 때마다 아무것도 없는 것으로 대체됩니다(예: 삭제).*$

현재 삭제된 주석에서 지적 했듯이 @roaima검색 및 바꾸기 명령은 다음과 같이 더 편리하게 작성할 수 있습니다.

:%s/\*//

답변4

사용행복하다(이전 Perl_6)

raku -pe 's/ \* $ //;' 

입력 예:

>seq1
MSDGFHS*
>Seq2
MSDRFH*

예제 출력:

>seq1
MSDGFHS
>Seq2
MSDRFH

이제 당신은 그것에 익숙해 져야합니다 s///.”삼중 고상선" 관용구. 위의 관용구는 Perl 프로그래밍 언어 계열의 구성원인 Raku에서 실행되는 관용구입니다. 이 -e플래그는 Raku에게 "한 줄" 프로그램(예를 들어 스크립트 파일 이름 대신)을 기대하도록 지시합니다. 이 플래그가 기본적으로 활성화되어 있는 경우 strict코드-p 를 한 줄씩 실행하여 $_각 줄 끝에 테마 변수를 자동으로 인쇄합니다.

두 개의 왼쪽 슬래시 문자 사이에서 정규식은 \*(백슬래시로 이스케이프 처리된) 리터럴 별표를 검색한 다음 $문자열 끝 너비가 0인 어설션을 검색합니다. 두 개의 오른쪽 슬래시 문자 사이에는 아무 것도 없으므로 줄 끝 별표는 아무 것도 없는 것으로 대체됩니다(즉, 삭제됨).

흥미로운 점은 Raku의 -ne비자동 인쇄 한 줄씩 플래그로 전환할 수 있으며 해당 s///관용구는 수정/삭제하기로 선택한 내용을 한 줄씩 반환한다는 것입니다(이와 같은 인쇄 문을 추가했다고 가정 say). :

raku -ne 's/ \* $ //.say;'  test.fasta
Nil
「*」
Nil
「*」

마지막으로, 생물정보학 툴킷을 별로 선호하지 않는다면 다음을 고려해 보세요.바이오펄또는바이오펄6.

https://raku.org

관련 정보