생물정보학에서 multifasta 파일 헤더 이름 바꾸기

생물정보학에서 multifasta 파일 헤더 이름 바꾸기

이것은 표준 fasta 형식 파일이 아닌 내 file1.fa(seqID, \t, 시퀀스)입니다.

abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

이제 다음과 같이 표준 fasta 형식으로 변환하고 싶습니다.

>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef 
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig 
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

이와 같은 것을 시도했지만 ">"를 추가하는 방법을 모르겠습니다. 누구든지 도와줄 수 있습니까?

less -S file1.fa | sed 's/\t/\n/g' > file2.fa

답변1

sed 대신에 간단히 사용할 수도 있습니다 less. 파일을 편집할 수도 있습니다.제자리에출력을 새 파일로 리디렉션하지 않고.

귀하의 sed명령은 다음과 같습니다

sed -i'.bak' 's/\(.*\)\t/>\1\n/g' file1.fa

또는 편집하고 싶지 않은 경우제자리에당신은 그것을 사용할 수 있습니다 :

sed  's/\(.*\)\t/>\1\n/g' file1.fa > file2.fa

답변2

사용행복하다(이전 Perl_6)

raku -pe 's/^ (<:Ll>+) (\s) />$0\n/;'   

#OR

raku -pe 's/^ <((<:Ll>+) (\s))> <:Lu>+ />$0\n/;' 

이 답변은 Raku의 :Ll(유니코드 소문자) 및 :Lu(유니코드 대문자) 문자 클래스 정의를 사용합니다.

https://docs.raku.org/언어/regexes#Unicode_properties

원하는 경우 \S+공백이 아닌 문자 하나 이상을 나타내기 위해 간단히 바꿀 수 있습니다. \s보다 구체적인 토큰으로 변경할 수도 있습니다 \t.

두 번째 예에서 Raku의 <(... )>캡처 플래그는 Raku에게 일치하는 객체를 제외한 모든 항목을 삭제하도록 지시하므로 <:Lu>+대체 항목에 일치 항목(삭제 아님)이 있습니다.

입력 예:

abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

예제 출력:

>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK

https://docs.raku.org/언어/regexes
https://conf.raku.org/talk/156
https://raku.org

관련 정보