-5

私はこのコードを持っています

use warnings;
use Getopt::Long;
use Bio::SeqIO;

GetOptions("in=s" => \$file) or die("Error in command line arguments\n");
open $new3, ">", "sequences_tmp.tab";
$seqin = Bio::SeqIO->new(-file => $file, -format => "Fasta");
$seqout = Bio::SeqIO->new(-file => ">$new3", -format => "tab");

while ($seq = $seqin->next_seq()) {
    $seqout->width($seq->length);
    $obj = $seq->id ."\t".$seq->seq()."\n";
    $seqout->write_seq($obj);
}

close $new3;

この方法でシーケンスを印刷することを期待していますseq_id TAB sequence。ただし、このコードは空のファイルを出力します。何が起こっているか知っていますか?

4

2 に答える 2

0

変数は$obj私には役に立たないようです。これは文字列であり、シーケンス オブジェクトではありません。$seqシーケンスを再フォーマットするだけなので、メソッドに簡単に渡すことができますwrite_seq()

だから、ループ本体をまったく実行しているかどうか疑問に思っています。それを確認するためにデバッグ出力を印刷できます。ループ本体が実行されない場合は、入力ファイルに実際に FASTA 形式のシーケンスが含まれていることを確認してください。

use strict;また、スクリプトの上で宣言してください。多くの落とし穴を避けるのに役立ちます。

于 2014-06-12T16:18:26.507 に答える