1

私のfastaファイルが1行のシーケンスで終わっている場合、Bioperlによって返されるそのシーケンスには1つのヌクレオチドが欠落していることがわかりました。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 に答える