0

特定のタンパク質について Genbank にクエリを実行し、結果を fasta ファイルに出力するコードを BioPerl を使用して作成しようとしています。これまでのところ、コードは機能し、結果を画面に出力できますが、ファイルには出力できません。BioPerl Web サイトやその他のソース (CPAN、PerlMonks など) で多くの調査を行いましたが、問題を解決できるものは見つかりませんでした。ファイルから何かを読み取り、出力を新しいファイルに出力する方法は理解していますが (SeqIO を使用)、プログラムに読み取らせたいものがテキストまたは FASTA ファイルに保存されていないようですしかし、データベース クエリの結果です。ヘルプ?私は非常に初心者で、Perl/BioPerl とプログラミング全般に不慣れです。

これが私がこれまでに持っているコードです:

#!usr/bin/perl
use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;
use Bio::Seq;

$query = "Homo sapiens[ORGN] AND TFII-I[TITL]";

$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) 
{print $seq_obj->desc, "\t", $seq_obj->seq, "\n";
}

したがって、最後の行でやりたいことは、画面に出力する代わりに、fasta 形式のファイルに出力することです。

ありがとう、ジェイ

4

2 に答える 2

0

fasta seq を作成するためのデータがあると仮定すると (そうしているようです)、Bio::FASTASequenceモジュールの seq2file 関数を使用できますか? 私はそれを使用したことがなく、バイオインフォマティクスの専門家でもありません。オプションを見て、あなたに役立つかもしれないと思っただけです.

于 2013-10-13T17:35:57.380 に答える
0

あなたのコードは実際には非常に近く、ループで Bio::Seq オブジェクトを返しています。これらのオブジェクトを処理してファイルに書き込むことができる Bio::SeqIO オブジェクトを作成するだけで済みます ("myseqs.fasta" は例のファイル)。

#!usr/bin/env perl                                                                                                                                                               

use strict;
use warnings;
use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;
use Bio::SeqIO;

my $query = "Homo sapiens[ORGN] AND TFII-I[TITL]";

my $query_obj = Bio::DB::Query::GenBank->new(-db => 'protein', -query => $query);

my $gb_obj = Bio::DB::GenBank->new(-format => 'fasta');

my $stream_obj = $gb_obj->get_Stream_by_query($query_obj);
my $seq_out = Bio::SeqIO->new(-file => ">myseqs.fasta", -format => 'fasta');

while (my $seq_obj = $stream_obj->next_seq) {
    $seq_out->write_seq($seq_obj);
}

また、スクリプトの先頭にuse strict;andを追加したことに注意してください。use warnings;これは、ほとんどの「なぜこれが機能しないのですか?」を解決するのに役立ちます。診断メッセージを生成することで質問の種類を調べます。これらの行を含めることをお勧めします。

于 2013-10-13T21:08:30.960 に答える