我发现如果我的fasta文件以单行序列结束,那么Bioperl返回的序列将缺少一个核苷酸。如果fasta文件以新行结束,则返回完整序列。不明白为什么?这是否要求fasta文件以空的新行结束?
这是我正在使用的代码
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
快达序列:
GI | 37423 | EMB | X04588.1 |用于细胞骨架原肌球蛋白TM30(nm)的人2.5kb mRNA CCCTTTAAATTTCCCTTTAAATTTCCCTTTAAATTTT
答案 0 :(得分:1)
您应该检查您的fasta文件是否有偶数行:wc -l file.fasta
。
要求对于fasta文件中的每一行,必须有当前行字符的结尾:$
。如果您使用vi
编辑器,请键入:set list
以显示这些隐藏的字符。或者,尝试:cat -A file.fasta
查看行结尾。
另外,要成为真正的fasta文件,标题行应以>
字符开头。
也许这不是线条的均匀性,而是文件中的最后一行是否包含换行符。如果这样:
cat -A fasta.file | awk 'END { print substr ($0, length, 1) }'
不返回美元符号($
),然后您可能在使用fasta文件时遇到问题。
要复制此问题,您可以使用以下命令从“正常”(甚至是带衬里的)fasta文件中删除最后一个换行符:
perl -i -pe 'chomp if eof' fasta.file
您可以使用以下命令在文件末尾添加换行符:
perl -i -ne 'chomp; print "$_\n"' fasta.file