重命名生物信息学中的multifasta文件头

重命名生物信息学中的multifasta文件头

这是我的 file1.fa(seqID, \t, sequence),它不是标准的 fasta 格式文件。

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(Unicode 字母小写)和:Lu(Unicode 字母大写)字符类定义:

https://docs.raku.org/language/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/language/regexes
https://conf.raku.org/talk/156
https://raku.org

相关内容