Ensembl API の使い方

2016 年 3 月 19 日 改訂

Ensembl API は,Ensembl のデータ取得行う方法の一つです.Perl のモジュール群 (スクリプトの集まり) を使います.インストールの手順はこちらに書きました.


Ensembl API のバージョンを調べる

以下のコマンドを,実行してください. versionCheck.pl.tar.gz からダウンロード&解凍できます.

use Bio::EnsEMBL::ApiVersion;
printf( "The API version used is %s\n", software_version() );



練習
まずは,「Ensembl API を極める:1-2. データベースに接続する」とこれ以降にある例題を一通りやった方が良いです.


データベースに接続する
#!/usr/bin/perl
use strict;
use warnings;
use Bio::EnsEMBL::Registry;
use Bio::EnsEMBL::ApiVersion;
print "Ens", software_version(), "\n";

my $registry = 'Bio::EnsEMBL::Registry';
$registry->load_registry_from_db(
    -host => asiadb.ensembl.org',
    -user => 'anonymous'
);

my @db_adaptors = @{ $registry->get_all_DBAdaptors() };
foreach my $db_adaptor (@db_adaptors) {
my $db_connection = $db_adaptor->dbc();
printf(
"species/group\t%s/%s\ndatabase\t%s\nhost:port\t%s:%s\n\n",
$db_adaptor->species(), $db_adaptor->group(),
$db_connection->dbname(), $db_connection->host(),
$db_connection->port()
);
}

ミラーサイトに接続
Ensembl API を用いる場合は,常に黒字の部分が必要です.

-host => 'asiadb.ensembl.org', 

の部分はアジアのミラーサイトに接続を意味します.ヨーロッパのサイトは,

-host => 'ensembldb.ensembl.org',

です.

途中でスクリプトが止まる
ヨーロッパのサイトからたくさんの遺伝子を処理する場合など,ネット接続の問題で途中でスクリプトがストップする場合があります.

[junINOUEb:Downloads]$ perl homology_compara.pl
The API version used is 84
Query geneID: ENSG00000157601
UNIVERSAL->import is deprecated and will be removed in a future perl at
/Users/junINOUEb/src/ens84/bioperl-live/Bio/Tree/TreeFunctionsI.pm line 94.
0 pan_troglodytes ENSPTRG00000013927 MX1-201
1 gorilla_gorilla ENSGGOG00000001560 MX1-201
2 pongo_abelii ENSPPYG00000011437 MX1-201
3 nomascus_leucogenys ENSNLEG00000008634 MX1-201
....
49 anas_platyrhynchos ENSAPLG00000015976 None
50 meleagris_gallopavo ENSMGAG00000014565 None
DBD::mysql::st execute failed: Lost connection to MySQL server during query at /Users/junINOUEb/src/ens84/ensembl/modules/Bio/EnsEMBL/DBSQL/
 TranscriptAdaptor.pm line 281.

DBD::mysql::st execute failed: Lost connection to MySQL server during query at /Users/junINOUEb/src/ens84/ensembl/modules/Bio/EnsEMBL/DBSQL/
 TranscriptAdaptor.pm line 281.

この場合は,以下のように set_reconnect_when_lost を行うと良いです.

my $registry = 'Bio::EnsEMBL::Registry'; 
$registry->load_registry_from_db( -host => 'asiadb.ensembl.org', -user => 'anonymous'
);
$registry->set_reconnect_when_lost;
あるいは,-host => 'asiadb.ensembl.org' に接続するだけでも問題が解消されることがあります.


Genome position をもとに配列を得る

slice_EnsAPI.pl.tar.gz
こちらを参照して作りました (2016 年 3 月).

[junINOUEb:Downloads]$ perl core1_db_status.pl
Slice: chromosome 12 1000000-1000050 (1)
GGATATATAGGGATAGAAGCTTGAATAGTCTGGACATATATTTGTATTGAA




geneID をもとにゲノム領域のアドレスを得る

一応以下のスクリプトでできます.ただし,この作業は BioMart で行ったほうがずっと早いです.

id2pos.pl.tar.gz

[inouejun:Downloads]$ perl id2pos.pl
The API version used is 83
Human, ENSG00000185960, chromosome X 624344-659411 (+1)
[inouejun:Downloads]$ perl id2pos.pl
The API version used is 67
Human, ENSG00000185960, chromosome X 585079-620146 (+1)




geneID をもとにトランスクリプト配列を得る
id2transcripts.pl.tar.gz (2016 年 3 月).複数のトランスクリプトが存在する場合が多いです.




最長のトランスクリプトを得る
id2transcripts_longest.tar.gz



geneID をもとに配列を得る
id2seq.tar.gz (2016 年 2 月),

Ensembl API によって,種名と gene ID から,その遺伝子配列とその前後の配列を得るスクリプトを書きました.種名はこちらを参照してください.(-1) の場合は,遺伝子が reverse 鎖にコードされていることを示しています.この場合は,配列とアノテーション共に reverse and complement された結果が出力されます.

[inouejun:id2seq]$ perl id2seq.pl
UNIVERSAL->import is deprecated and will be removed in a future perl at /Users/inouejun/src/bioperl-live/Bio/Tree/TreeFunctionsI.pm line 94.
Human, ENSG00000185960, chromosome X 624344-659411 (+1)

Annotation 情報 (.txt ファイルとして出力) を取得するスクリプトも入っていますが,うまく行かないので削除しています.試す場合は,=pod と =cut の 2 つの行をコメントアウトしてください.遺伝子によって exon か UTR の start サイトを得ることができずに,以下のようにエラーが出ることが多いです.どうもsoftware と detabase のバージョンが合わないために起きる問題のようです.こちらを参照してください.

[inouejun:EnsAPI]$ perl id2seq.pl
Human, ENSG00000125798, chromosome 20 22581005-22585455 (-1)
Can't call method "start" on an undefined value at id2seq.pl line 79.

ENSG00000185960 に関する同じ情報 (VISTA format) を Ensembl Web から得る場合は,以下の手順です.fromWebExportData ディレクトリに結果を保存しました.


以上,perldoc Bio::EnsEMBL::Gene (ターミナルに入力) および,Ensembl Core API Tutorial Ensembl API を極めるを参考にしました.

データベース化されている種の名前を得る
speciesName_compara.pl.tar.gz



geneID をもとに分類を得る
classification_compara.pl.tar.gz



geneID をもとにオーソログの gene ID を得る

homology_compara.pl.tar.gz (2016 年 3 月)

[junINOUEb:Downloads]$ perl homology_compara.pl
The API version used is 83
Query geneID: ENSG00000157601
0 pan_troglodytes ENSPTRG00000013927 MX1-201
1 gorilla_gorilla ENSGGOG00000001560 MX1-201
2 pongo_abelii ENSPPYG00000011437 MX1-201
3 nomascus_leucogenys ENSNLEG00000008634 MX1-201
4 macaca_mulatta ENSMMUG00000015329 MX1-201
5 papio_anubis ENSPANG00000023901 MX1-201
6 chlorocebus_sabaeus ENSCSAG00000008237 MX1-201
....
[junINOUEb:Downloads]$


エラ−メッセージ
Ensembl 83 で作成しました.fetch_by_source_stable_id()fetch_by_stable_id() に変更する必要があるようです.Ens83 で以下のようなメッセージが出ます (2016 年 3 月).

------------------ DEPRECATED ---------------------
Deprecated method call in file homology_compara.pl line 25.
Method Bio::EnsEMBL::Compara::DBSQL::MemberAdaptor::fetch_by_source_stable_id is deprecated.
MemberAdaptor::fetch_by_source_stable_id() is deprecated and will be removed in e84. Use fetch_by_stable_id() instead
Ensembl API version = 83
---------------------------------------------------



エラー対策

 



リンク
チュートリアル
Perl API Documentation

Ensembl による解説.まず Ensembl Core API Tutorial を読む必要があります.

Ensembl API を極める

日本語の解説.インストールが無事できたら,まずはこちらの例題をやってみると良いです.

Ensembl Perl API を利用する

日本語の解説.

Train online

動画とスライド.私の Mac では動画を見ることはできませんでした.スライドは役に立ちます.

 
解説集
Ensembl Core and OtherFeatures databases
EnsEMBL Core API Overview - Slice cnetered

Slice を中心とした模式図.

Ensembl REST API Endpoints

テキスト集.アウトファイルの例があって,目的とするスクリプトが探しやすい.


Doxygen perl module documentation

モジュールの説明.method 名で検索できる.以下の例では,「five_prime_utr」を調べている.

 
その他
メーリングリストとアーカイブ
BioMart Perl API