首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bioperl读fasta序列

Bioperl读fasta序列
EN

Stack Overflow用户
提问于 2012-07-06 16:16:18
回答 1查看 477关注 0票数 1

我发现,如果我的fasta文件以单行序列结尾,那么Bioperl返回的序列将有一个核苷酸缺失。如果fasta文件以新行结尾,则返回完整序列。不明白为什么?这是fasta文件以空的新行结尾的要求吗?

这是我使用的代码

代码语言:javascript
复制
my $obj    = $db->get_Seq_by_id($id);
my $seq    = $obj->seq; # returns 36 or 35 nucleotides depending if last new line exists 
my $length = $obj->length; # returns 36 or 35

fasta序列:

细胞骨架肌球蛋白mRNA (Nm) cytoskeletal

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-08 10:56:40

您应该检查fasta文件是否有偶数行:wc -l file.fasta

对于fasta文件中的每一行,都必须有一个当前行字符的结尾:$。如果使用vi编辑器,请键入:set list以显示这些隐藏字符。或者,尝试:cat -A file.fasta查看行尾。

此外,要成为真正的fasta文件,您的头行应该以>字符开始。

也许这不是行的均匀度,而是文件中的最后一行是否包含换行符。如果是这样:

代码语言:javascript
复制
cat -A fasta.file | awk 'END { print substr ($0, length, 1) }'

不返回美元符号($),那么您可能在使用fasta文件时出现问题。

要复制这个问题,您可以从'good‘(甚至内联) fasta文件中删除最后一个换行符,如下所示:

代码语言:javascript
复制
perl -i -pe 'chomp if eof' fasta.file

您可以在文件末尾添加一个换行符,如下所示:

代码语言:javascript
复制
perl -i -ne 'chomp; print "$_\n"' fasta.file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11365995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档