NCBIの "E-utilities" が結構便利な件
NCBIの一意的な遺伝子IDであるGI numberをもとにして、FASTA配列とかGenbank形式ファイルをプログラムで自動的に取ってこれないかな~
と思っていたところ "E-utilities" という便利なサービスを発見したので、そのサービス内容(一部)と提供サービスを組み込んだPerlプログラム例を紹介します。
"E-utilities"はNCBIが提供しているサービスで、"Entrez"という検索機能を利用して、URLを使って簡単にデータの取得ができるようにしているようです。
NCBIの色々な情報を取得できるようですが、今回は遺伝子のGI numberから対応配列のFASTAとGenbank形式ファイルを取得する方法だけです。
Perlプログラム例
#!/usr/bin/perl use strict; use warnings; use LWP::Simple; my @gi_ary = ("937574203", "229604949", "281306683"); my $db_type = "protein"; # 'protein' or 'nucleotide' my $retrieve_type = "fasta"; # 'fasta' or 'gb' my $gi_list = join ",", @gi_ary; # Assemble the epost URL my $base = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/'; my $url = $base . "epost.fcgi?db=$db_type&id=$gi_list"; # Post the epost URL my $output; while(not defined $output){ $output = get($url); } # Parse WebEnv and QueryKey my $web = $1 if ($output =~ /<WebEnv>(\S+)<\/WebEnv>/); my $key = $1 if ($output =~ /<QueryKey>(\d+)<\/QueryKey>/); # Assemble the efetch URL $url = $base . "efetch.fcgi?db=$db_type&query_key=$key&WebEnv=$web"; $url .= "&rettype=$retrieve_type&retmode=text"; # Post the efetch URL my $data; while(not defined $data){ $data = get($url); } # Output data print $data;
このプログラムを実行すると、@gi_aryに含まれる"937574203", "229604949", "281306683"の各GI numberのタンパク質FASTAファイルを出力します。
$db_typeでGI numberに対応する配列情報 ('protein' or 'nucleotide')
$retrieve_typeで出力するファイルの形式 ('fasta' or 'genbank') を決定します。
この情報を基にして、"E-utilitiez"のepost機能でデータ検索情報の取得、efetch機能でepostの検索情報から対象データの取得をしています。
最近は、このようにURLを介して簡易的にデータをやり取りする方法が増えているみたいですね。
結構便利なので、これから研究でプログラムを作るときに使えそう。
興味がある方はぜひお試しを(^^)