2017-07-29 3 views
-2

タンパク質配列の最初の出現はどのようにして印刷できますか?このクエリでは、4つの結果が得られ、最初のものだけが必要です。 whileループはこの繰り返しごとに検索順序の最初の結果を印刷するにはどうすればよいですか?

while ($seq_obj = $stream_obj->next_seq) { 

    # do something with the sequence object 
    print $seq_obj->display_id, "\t", $seq_obj->length, "\n"; 
} 
+1

これはコンパイルされません。質問の一部でない限り、構文エラーを修正せずに実行できるように十分なコードを投稿してください。これはあなたを助けようとしている人のための追加作業を作成します!また、 'use strict;'と 'use warnings;'をファイルの先頭に入れてください。 – bytepusher

+2

私は答えを投稿しました。それが役に立たない場合は、あなたが探しているものをもっと詳しく説明してください。これはパールフォーラムで、私は1つは遺伝学者ではない; – bytepusher

+2

@MTG:すでに投稿されている回答やコメントがないようにあなたの質問を編集しないでください。あなたの不正な形式のPerlコードを復元し、新しいコードを更新プログラムとして追加しました。 – Borodin

答えて

1

のようになります。私はあなたのスニペットで参照する主な問題は、それがコンパイルされないということであることを

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"; 
関連する問題