1

我发现如果我的 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

和fasta序列:

gi|37423|emb|X04588.1| 用于细胞骨架原肌球蛋白 TM30(nm) 的人 2.5 kb mRNA CCCTTTAAATTTCCCTTTAAATTTCCCTTTAAATTTT

4

1 回答 1

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
于 2012-07-08T10:56:40.540 回答