のようになります。私はあなたのスニペットで参照する主な問題は、それがコンパイルされないということであることを
use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;
$query = "LEGK";
$query_obj = Bio::DB::Query::GenBank->new(
-db => 'protein',
-query => $query
);
$gb_obj = Bio::DB::GenBank->new;
$stream_obj = $gb_obj->get_Stream_by_query($query_obj);
while ($seq_obj = $stream_obj->next_seq) {
# do something with the sequence object
print
">$query", ' ',
$seq_obj->display_id, ' ',
$seq_obj->desc, "\n",
$seq_obj->seq[, '\n';
。 use strict; use warnings;
をすべてのperlプログラムの先頭に置きます。 これは構文エラーを警告します。
私は[]
、ない[]
、()
を使用し、機能を呼び出すために、しかし、あなたはシーケンスオブジェクトを反復するが、その後、むしろ奇妙な呼び出しすべての$seq_obj->seq[,'\n'
との最初のを作っている、生物学について多くを知りません配列への参照を示します。第二に、seq
がシーケンス値を設定または取得するために使用されているようで、'\n'
がどのように有効な値になるかわかりません。
ので
while ($seq_obj = $stream_obj->next_seq) {
print join(' ', $seq_obj->display_id, $seq_obj->desc)."\n"; # or use 'say'
print $seq_obj->seq() . "\n";
}
は、すべてのシーケンスを印刷する必要があります。 (それは私があなたの質問を理解してみましょう)だけ最初、単純にすべての結果を反復処理していない取得するには:
しばらく置き換える(){}で:
my $first_seq_obj = $stream_obj->next_seq;
print join(' ', $first_seq_obj->display_id, $first_seq_obj->desc)."\n"; # or use 'say'
print $first_seq_obj->seq() . "\n";
これはコンパイルされません。質問の一部でない限り、構文エラーを修正せずに実行できるように十分なコードを投稿してください。これはあなたを助けようとしている人のための追加作業を作成します!また、 'use strict;'と 'use warnings;'をファイルの先頭に入れてください。 – bytepusher
私は答えを投稿しました。それが役に立たない場合は、あなたが探しているものをもっと詳しく説明してください。これはパールフォーラムで、私は1つは遺伝学者ではない; – bytepusher
@MTG:すでに投稿されている回答やコメントがないようにあなたの質問を編集しないでください。あなたの不正な形式のPerlコードを復元し、新しいコードを更新プログラムとして追加しました。 – Borodin