如何为每次迭代打印搜索序列的第一个结果?
How can I print the first result of a search sequence for each iteration?
如何打印第一次出现的蛋白质序列?对于这个查询,我得到了四个结果,我只想要第一个。
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';
那个 while
循环应该是这样的
while ( $seq_obj = $stream_obj->next_seq ) {
# do something with the sequence object
print $seq_obj->display_id, "\t", $seq_obj->length, "\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";
}
应该打印所有序列。要获得第一个,只需不要遍历所有结果(这就是我理解你的问题的方式):
将 while (){} 替换为:
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 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';
那个 while
循环应该是这样的
while ( $seq_obj = $stream_obj->next_seq ) {
# do something with the sequence object
print $seq_obj->display_id, "\t", $seq_obj->length, "\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";
}
应该打印所有序列。要获得第一个,只需不要遍历所有结果(这就是我理解你的问题的方式):
将 while (){} 替换为:
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";