Home

バイオ やばいぉ・・・

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Comments (Close): -
  • TrackBack (Close): -

BioPerlでデータベースID検索

いままではデータベースからIDのわかっているタンパク質の配列などをとってこさせていましたが、
実際に検索する際には、IDなどはわかっていないので、検索することになります。

今回はキーワード検索した結果を一覧表示するプログラムです。

use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;
$query = "Homo sapiens[ORGN] AND CYP2C[TITL] AND 100:3000[SLEN]";
$query_obj = Bio::DB::Query::GenBank->new(-db => 'nucleotide', -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) {
$n++;
print $n, ". ",$seq_obj->display_id, " (",$seq_obj->length, ") ",
substr($seq_obj->desc,0,50), "...\n", ;
}


解説
01:use Bio::DB::GenBank;
02:use Bio::DB::Query::GenBank;
03:$query = "Homo sapiens[ORGN] AND CYP2C[TITL] AND 100:3000[SLEN]";
04:$query_obj = Bio::DB::Query::GenBank->new(-db => 'nucleotide', -query => $query );
05:$gb_obj = Bio::DB::GenBank->new;
06:$stream_obj = $gb_obj->get_Stream_by_query($query_obj);
07:while ($seq_obj = $stream_obj->next_seq) {
08:$n++;
09:print $n, ". ",$seq_obj->display_id, " (",$seq_obj->length, ") ",
10substr($seq_obj->desc,0,50), "...\n", ;
11:}

01:おまじない
02:おまじない
03:query="□□□□"で検索ワードを設定する。
  [ORGN]は生物種
[TITL]はタイトル
を指定しています。
04:
05:
06:
07:
08:
09:
10:
11:


では次に検索の対象をタンパク質に絞って、その一覧をfasta形式のファイルに出力してみます。

use Bio::SeqIO;
use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;
$query = "Homo sapiens[ORGN] AND TNFa[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);
$seqio_obj = Bio::SeqIO->new(-file => '>sequence.fas', -format => 'fasta' );
while ($seq_obj = $stream_obj->next_seq) {
$seqio_obj->write_seq($seq_obj);
}


解説
01:use Bio::SeqIO;
02:use Bio::DB::GenBank;
03:use Bio::DB::Query::GenBank;
04:$query = "Homo sapiens[ORGN] AND TNFa[TITL]";
05:$query_obj = Bio::DB::Query::GenBank->new(-db => 'protein', -query => $query );
06:$gb_obj = Bio::DB::GenBank->new;
07:$stream_obj = $gb_obj->get_Stream_by_query($query_obj);
08:$seqio_obj = Bio::SeqIO->new(-file => '>sequence.fas', -format => 'fasta' );
09:while ($seq_obj = $stream_obj->next_seq) {
10:$seqio_obj->write_seq($seq_obj);
11:}

01:~03:おまじない
04:
05:
06:
07:
08:
09
10:
11:09の{を閉じた。
スポンサーサイト

データベースから配列をとってこよう

まずは、Genbankのデータベースからタンパク質のデータを取ってくるという実習をしましょう。
それではテキストエディタを開いて下記をコピペ(コピーして貼り付け)してください。
use Bio::Perl;
$test_seq = get_sequence('genbank', "roa1_human");
write_sequence(">roa1_human.fasta",'fasta',$test_seq);

そしたらファイル名はtest1.plとしましょう。
またそのファイルは
XPの場合 C:\Documents and Settings\ユーザー名に置きましょう。
アクセス手順はマイコンピューター→Cドライブ→Documents and Settings→ユーザー名とクリックしていけばたどり着きます。
Vistaの場合 C:\Users\ユーザー名に置きましょう。
アクセス手順はコンピューター→ローカルディスク(C)→ユーザー→ユーザー名でたどり着きます。

そうしたらコマンドプロンプトを起動して、
perl test1.pl
を入力してエンターを押してください。
少しするとtest1.plのファイルがある場所にroa_human.fastaというファイルが作成されます。
そうしたら成功です。ちなみにファイルの中身はファイルの拡張子を.fastaから.txtに変更してテキストエディタでみることができます。
きっと以下のようなタンパク質のデータが並んでいると思います。
確認できたら以下の解説を読んで理解を深めましょう。
>P09651 RecName: Full=Heterogeneous nuclear ribonucleoprotein A1; Short=hnRNP core protein A1; AltName: Full=Helix-destabilizing protein; AltName: Full=Single-strand RNA-binding protein.
MSKSESPKEPEQLRKLFIGGLSFETTDESLRSHFEQWGTLTDCVVMRDPNTKRSRGFGFV
TYATVEEVDAAMNARPHKVDGRVVEPKRAVSREDSQRPGAHLTVKKIFVGGIKEDTEEHH
LRDYFEQYGKIEVIEIMTDRGSGKKRGFAFVTFDDHDSVDKIVIQKYHTVNGHNCEVRKA
LSKQEMASASSSQRGRSGSGNFGGGRGGGFGGNDNFGRGGNFSGRGGFGGSRGGGGYGGS
GDGYNGFGNDGGYGGGGPGYSGGSRGYGSGGQGYGNQGSGYGGSGSYDSYNNGGGRGFGG
GSGSNFGGGGSYNDFGNYNNQSSNFGPMKGGNFGGRSSGPYGGGGQYFAKPRNQGGYGGS
SSSSSYGSGRRF


ではtest1.plの解説をしてきます。

01:use Bio::Perl;
02:$test_seq = get_sequence('genbank', "roa1_human");
03:write_sequence(">roa1_human.fasta",'fasta',$test_seq);

01:C言語で言う#inculde
BioPerlを使ったプログラムを書きますよ~というおまじないだと思ってください。
BioPerlを使うときはいつでも書くと覚えておいてください。

02:Perl では、$○○ と、$で始まる単語は変数といいます。
変数は値(データ)を入れる(記憶する)入れ物です。

すなわち、$test_seq というのは変数、すなはち入れ物を用意したわけです。

その入れ物に何かを入れろ!という命令 =以下に来ています。

get_sequence(□□□□) は、名前の通り、sequence をとってこい(getしてこい)という命令です。

□□□□の部分には、sequenceを取ってくるデータベース名と、 そのデータベースのID(アクセッションナンバー)を記します。
今回の場合、 Genbankというデータベースの、 roa1_human というタンパク質のデータを取ってこいと命令しています。

つまりまとめると02:では、Genbankからroa1_human というタンパク質のデータを取ってきて、$test_seq という変数(入れ物)の中に入れろ、という命令をしています。

03:write_sequece(□□□□) という命令は、 データをファイルに出力しろという命令です。

□□□□には
どこに?どうなふうに?なにを?出力するかを書いていきます。
今回は
1. ">roa1_human.fasta" の部分で、出力するファイル名を指定しています。

2. 'fasta' で、fasta 形式で出力することを決めています。

3. $test_seq で、出力したいデータを決めています。

つまり03:をまとめるとGenbankからとってきたroa1_humanのデータをroa1_humanという名前でfasta形式でファイルに出力しろという命令をしたことになります。

ついでに指定できるデータベースの一例と出力形式の一例を示しておきます。
参考になったら私自身うれしいです^^
使えるデータベースの一例

"swissprot", "genbank", "embl"
$seq_object = get_sequence('swissprot',"ROA1_HUMAN");
$seq_object = get_sequence('embl',"AI129902");
$seq_object = get_sequence('genbank',"AI129902");

使える出力形式の一例

fasta, genbank, swissprot
write_sequence(">roa1_human.fasta",'fasta',$test_seq);
write_sequence(">roa1_human.gb",'genbank',$test_seq);
write_sequence(">roa1_human.sp",'EMBL',$test_seq);
*データベースの指定にシングルクオート(’’)をつかっていてIDにはダブルクオート(””)を使っています。その違いは、変数を展開するか、展開しないかが違います。ダブルクオートの場合が展開されるほうです。 
test1.plの例だと、変数を使っていないので、シングルクオートでもダブルクオートでもOKです。 
わかりにくかった場合は、引数に文字列そのものを渡す場合はシングルクオートを、変数を渡す時にはダブルクオート又はクオートなしにすればいいと思ってください。

Home

最新記事はRSSで
コメント
最新トラックバック
リンク
ブログで苗木 グリムス
blog parts

track feed

Powered by SEO Stats

ページランク

個人サイト検索 あったかNAVI

この日記のはてなブックマーク数

フィードメーター - バイオ やばいぉ・・・

tracker あわせて読みたいブログパーツ

Page Top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。