Apache batikによるSVG→PNG/JPEGへの変換方法
動作確認OSは、Solaris 9である。
概要
- 公式サイト
- 日本語版ドキュメント
BatikはJava技術に基づく、SVGフォーマットのイメージを、表示する、生成する、変換する、あるいは操作するといった様々な目的で利用する、アプリケーションのためのツールキットである。
ここでは、SVGファイルからPNG/JPEGファイルへのラスタライズのためのコマンドの使用方法、及び、JavaプログラムからのImage Transcoderの呼び出し方法について説明する。
インストールと問題点
インストール
アーカイブを展開して配備するだけ。ただし、Batikのzipファイルを解凍するのにunzipユーティリティを使用しないこと。これはディレクトリのアクセス権限を適切に設定しない。/home/apache/tools/[任意のディレクトリ] バイナリ版 $ jar xvf batik-1.7beta1.zip $ mv batik-1.7 batik-1.7lib (ソース版と区別するために、ディレクトリ名をbatik-1.7libに変更) ソース版 $ jar xvf batik-src-1.7beta1.zip
ターミナルの問題
プログラムの実行はSolarisのコンソール、または、「Reflection X」のコンソール上から行う必要がある。例えば「Tera Term Pro」を使用すると、実行時に下記エラーが出る。"Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ': 0.0' as the value of the DISPLAY variable."
解決方法(2007/09/28追記)
javaプログラム実行時に下記のオプションを指定すること。これは、batikがGraphics2D(2Dグラフィックス用の標準Java API)にイメージの生成を要求しており、Graphics2DがX11サーバーを必要とすることに起因している。JDK 1.4以降では、java.awt.headlessプロパティにtrueをセットすることで、いわゆるheadless(画面を出さない)で実行できるようになる。
java -Djava.awt.headless=true
SVGファイルのヘッダー記述
SVGファイルのヘッダー記述は次の通り。ヘッダー部を追加するのは構わないが、記述不足だと変換できないことがあるので注意すること。<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
使用方法
ラスタライズ(SVG→PNG/JPEG)のコマンド
バイナリ版とソース版で方法が異なる。- Batik - SVG Rasterizerドキュメント
- バイナリ版の例題の実行
apacheユーザーの場合
$ cd /home/apache/tools/batik-1.7lib $ java -Djava.awt.headless=true -jar batik-rasterizer.jar samples/GVT.svg ↓ samples/GVT.png
他のユーザーのディレクトリ上で行う場合
/home/apache/tools/batik-1.7lib/samples/testsディレクトリ以下のファイルが必要なので、自分のディレクトリにコピーしておく
$ cp -r /home/apache/tools/batik-1.7lib/samples/tests . $ java -Djava.awt.headless=true -jar /home/apache/tools/batik-1.7lib/batik-rasterizer.jar svgファイル ↓ PNG/JPEGファイル
java.lang.OutOfMemoryErrorが出るときは、Javaプログラム起動時のオプションで
メモリサイズを指定すること。
$ java -Djava.awt.headless=true -Xmn512m -Xmx1024m -Xms1024m -jar /home/apache/tools/batik-1.7lib/batik-rasterizer.jar svgファイル
apacheユーザーの場合
$ cd /home/apache/tools/batik-1.7 $ chmod +x build.sh $ build.sh svgrasterizer samples/GVT.svg ↓ samples/GVT.png
JavaプログラムからのImage Transcoderの呼び出し
下記サイトにチュートリアルが載っているが、そのままの方法ではうまくいかない。例題のソースを実行してもエラーが出るので、ソースの一部を変更した。イメージのサイズを変更する方法などについては、ドキュメントを参照のこと。- Image Transcoder Tutorialドキュメント
.profileの場合 CLASSPATH=.:〜 :/home/apache/tools/batik-1.7lib/batik.jar .cshrcの場合 setenv CLASSPATH .:〜 :/home/apache/tools/batik-1.7lib/batik.jar
batik-1.7ディレクトリ下でbuild.sh compileを実行し、ライブラリをコンパイルしておく。ライブラリは、classes/orgディレクトリ下に作成される。Javaプログラムのコンパイル時に必要である。
$ cd /home/apache/tools/batik-1.7 $ build.sh compile ↓ライブラリ作成 batik-1.7/classes/org/*
ソース /home/apache/tools/batik-1.7/sources-png/SaveAsPNG.java 第1引数:SVGパス名 第2引数:PNGパス名 コンパイル $ cd /home/apache/tools/batik-1.7/sources-png $ ant ↓ classファイルは、classesディレクトリ下に作成される classファイルは、実行用transディレクトリにコピーされる 実行 $ cd ../trans $ go.png (java -Djava.awt.headless=true SaveAsPNG /home/apache/public_html/trans/GVT.svg /home/apache/public_html/trans/GVT.png)
ソース /home/apache/tools/batik-1.7/sources-png/SaveAsJPEG.java 第1引数:SVGパス名 第2引数:JPEGパス名 コンパイル $ cd /home/apache/tools/batik-1.7/sources-jpg $ ant ↓ classファイルは、classesディレクトリ下に作成される classファイルは、実行用transディレクトリにコピーされる 実行 $ cd ../trans $ go.jpg (java -Djava.awt.headless=true SaveAsJPEG /home/apache/public_html/trans/GVT.svg /home/apache/public_html/trans/GVT.jpg)
チュートリアルのコードのままでは、実行時にエラーが出るので、以下の点を変更した。
TranscoderInput()の引数に、URIではなく、InputStreamを渡すようにする。
//String svgURI = new File(args[0]).toURL().toString(); //TranscoderInput input = new TranscoderInput(svgURI); ↓ 変更 InputStream istream = new FileInputStream(args[0]); TranscoderInput input = new TranscoderInput(istream);
また、サイズを指定しないと一部分しか変換されないことがあるので、addTranscodingHint()で幅、高さ、リージョンを指定する。
ソースは以下の通り(JPEGの場合は、PNGTranscoderの代わりにJPEGTranscoderを使用すること)。
import java.io.*; import java.awt.*; import org.apache.batik.transcoder.image.PNGTranscoder; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; public class SaveAsPNG { public static void main(String[] args) throws Exception { // Create the transcoder input. //String svgURI = new File(args[0]).toURL().toString(); //TranscoderInput input = new TranscoderInput(svgURI); //System.out.println(svgURI); InputStream istream = new FileInputStream(args[0]); TranscoderInput input = new TranscoderInput(istream); // Create the transcoder output. OutputStream ostream = new FileOutputStream(args[1]); TranscoderOutput output = new TranscoderOutput(ostream); // Create a PNG transcoder. PNGTranscoder t = new PNGTranscoder(); // Set width and height. int width = Integer.parseInt(args[2]); int height = Integer.parseInt(args[3]); Rectangle rect = new Rectangle(0, 0, width, height); t.addTranscodingHint(PNGTranscoder.KEY_WIDTH, new Float(rect.width)); t.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, new Float(rect.height)); // Set the region. t.addTranscodingHint(PNGTranscoder.KEY_AOI, rect); // Save the image. t.transcode(input, output); // Flush and close the stream. ostream.flush(); ostream.close(); System.exit(0); } }
RによるHeatmapグラフの作成
手順
距離関数Dist()で類似度を求め、hclust()でクラスタリングし、heatmap()のColv,Rowvオプションにdendrogram()を指定して出力する。プログラム例
library(amap) # Heatmapグラフ作成 # # ファイルの読み込み data <- read.table("test.txt", header=TRUE, row.names=1, sep="\t") # # PDFに出力する pdf() # # 距離関数で類似度のアルゴリズムとしてCosine係数を使用する # (method="pearson")は(1 - cosine)と同義である d1<-Dist(data, method="pearson") d2<-Dist(t(data), method="pearson") # # クラスタリングでAverage Linkageを使用する c1<-hclust(d1, method="average") c2<-hclust(d2, method="average") # # Heatmap PDFファイルの出力 heatmap(as.matrix(data), Colv=as.dendrogram(c2),Rowv=as.dendrogram(c1), scale="none", col=cm.colors(256), main="Cosine-Average", margin=c(8,10)) # # デバイスを閉じる dev.off()
関数の主な仕様
距離関数
距離関数にはamapライブラリのDist()と標準のdist()がある。標準のdist()は類似度を指定するmethodオプションにPearson's相関係数とCosine係数が無いので、Dist()を使用した方がよい。また、dist()は結果の距離行列が千倍程度(?)の値になる。- Dist()関数の使用例
Dist()は類似度をmethodオプションとして指定できる。
library(amap) Dist(data,method="peason")
methodオプションの名前はまぎらわしいので気をつけること。
"correlation" : Pearson's相関係数。(1 - peason)の値。 "pearson" : Cosine係数。(1 - cosine)の値。 "euclidean" : ユークリッド距離 "maximum" : 最大距離 "manhattan" : マンハッタン(シティーブロック)距離 "canberra" : キャンベラ距離 "binary" : バイナリー距離
クラスタリング関数
- hclust()関数の使用例
hclust()は階層的手法をmethodオプションとして指定できる。
c1<-hclust(d1, method="average")
"single" : 単連結法 (Single Linkage) "complete" : 完全連結法(Complete Linkage) "average" : 群平均法 (Average Linkage) "ward" : ウォード法(Ward's Minimum Variance)
ヒートマップ関数
- heatmap()関数の使用例
heatmap(as.matrix(data), Colv=as.dendrogram(c2),Rowv=as.dendrogram(c1), scale="none", col=cm.colors(256), main="Cosine-Average", margin=c(8,10))
Colv,Rowvオプションにdendrogram()の返り値を指定する。このオプションの指定が無い場合は、正方行列のデータからしかヒートマップを作成できない。縦、横のサイズが異なるデータにおいては、Colv,Rowvオプションの指定は必須である。
scaleオプションには"none"を指定すること。
MATLABによるフィッシャーの正確確率検定
- Fisher's exact test.
- fisher_exact()関数(霧笛作成)を使用する。
引数
data : データ値のベクトル(2 * 2) data = [a b; c d] alpha : 有意水準 both : 0 片側検定 1 両側検定
返り値
h : 0 帰無仮説は採択される → 2要因は独立でないとはいえない 1 帰無仮説は棄却される → 2要因は独立ではない p : 生起確率
プログラム例
- exact_test.m
- 参考URL
% --------------------------------------------------------------- % フィッシャーの正確確率検定 % Fisher's exact test. % % Web教材「統計学自習ノート」より、 % フィッシャーの正確確率検定(直接確率)「例題」の計算。 % http://aoki2.si.gunma-u.ac.jp/lecture/Cross/Fisher.html % --------------------------------------------------------------- function exact_test() % p 生起確率 % h : 0 帰無仮説は採択される → 2要因は独立でないとはいえない % : 1 帰無仮説は棄却される → 2要因は独立ではない data = [13 4; 6 14]; alpha = 0.01; % 有意水準 % 片側検定 [h,p] = fisher_exact(data,alpha,0) % 両側検定 [h,p] = fisher_exact(data,alpha,1) end
プログラム例−実行結果
>> exact_test p = 0.0059 h = 1 p = 0.0081 h = 1
fisher_exact()関数の実装
- fisher_exact.m
% --------------------------------------------------------------- % フィッシャーの正確確率検定 % Fisher's exact test. % 引数: % data : データ値のベクトル(2 * 2) % data = [a b; c d] % alpha : 有意水準 % both : 0 片側検定 % 1 両側検定 % 返り値: % h : 0 帰無仮説は採択される → 2要因は独立でないとはいえない % 1 帰無仮説は棄却される → 2要因は独立ではない % allp : 生起確率 % --------------------------------------------------------------- function [h,allp] = fisher_exact(data, alpha, both) h = 0; allp = 0.0; % +---------------+--------+ % | a b | sum_ab | % | c d | sum_cd | % +---------------+--------+ % | sum_ac sum_bd | | % +---------------+--------+ a = data(1,1); b = data(1,2); c = data(2,1); d = data(2,2); sum_ab = a + b; sum_cd = c + d; sum_ac = a + c; sum_bd = b + d; % 実際の観測値の正確な生起確率を得る p0 = get_exact_p(a,b,c,d); s0 = a*d - b*c; % aは 0〜小さい方の合計値まで推移 index = 0; if(sum_ab <= sum_ac) for a=0:sum_ab index = index + 1; b = sum_ab - a; c = sum_ac - a; d = sum_cd - c; % 正確な生起確率を得る p(index) = get_exact_p(a,b,c,d); s(index) = a*d - b*c; end else for a=0:sum_ac index = index + 1; b = sum_ab - a; c = sum_ac - a; d = sum_cd - c; % 正確な生起確率を得る p(index) = get_exact_p(a,b,c,d); s(index) = a*d - b*c; end end number = index; % 実際の観測値よりも極端な場合の生起確率の合計を求める for index=1:number % 片側検定では(sとs0が同符号でかつ | s | ≧ | s0 |)の生起確率の合計 if(both == 0) sflag = 0; % 同符号なら sflag = 1 if((s0 >= 0 && s(index) >= 0) || (s0 < 0 && s(index) < 0)) sflag = 1; end if((sflag == 1) && (abs(s(index)) >= abs(s0))) allp = allp + p(index); end % 両側検定では(| s | ≧ | s0 |)の生起確率の合計 else if(abs(s(index)) >= abs(s0)) allp = allp + p(index); end end end % 生起確率が有意水準以下 if(allp <= alpha) h = 1 end end % --------------------------------------------------------------- % 正確な生起確率を得る % 引数: % a, b, c, d : データ値(2 * 2) % 返り値: % p : 生起確率 % --------------------------------------------------------------- function p = get_exact_p(a,b,c,d) % prod(1:n)は nの階乗の計算 n = a + b + c + d; d1 = prod(1:a+b) * prod(1:c+d) * prod(1:a+c) * prod(1:b+d); d2 = prod(1:n) * prod(1:a) * prod(1:b) * prod(1:c) * prod(1:d); p = d1 / d2; end
MATLABによるカイ二乗検定
- Chi-square goodness-of-fit test.
- chi2gof()関数を使用する。詳細は、ヘルプ参照。
主な引数
x : データ値のベクトル 多次元にする方法が不明。とりあえず、一次元で計算する。 N = (行の数 * 列の数) 'ctrs' : ビンの中央値ベクトル 'frequency': 観測値ベクトル 'expected' : 期待値ベクトル 'nparams' : (N-1-正しい自由度)を指定すること 正しい自由度は以下の式で求められる。 正しい自由度 = (行の数-1) * (列の数-1) nparamsを設定しないとき、デフォルトの自由度は(N-1)となる。 このギャップをnparamsで調整するとよい。 'alpha' : 有意水準。デフォルトの有意水準は 0.05である。
返り値
h : 0 帰無仮説は採択される → 差はない 1 帰無仮説は棄却される → 差はないとは言えない p : 生起確率 st : STATS構造体 chi2stat カイ二乗値 df 自由度 edges ビンの境界ベクトル O 観測値(ビンごとのカウント) E 期待値(ビンごとのカウント)
プログラム例
- chi2_test.m
- 参考URL
% --------------------------------------------------------------- % カイ二乗検定 % Chi-square goodness-of-fit test. % % Web独習教材「ハンバーガーショップで学ぶ楽しい統計学」より、 % カイ二乗検定の計算。 % http://kogolab.jp/elearn/hamburger/chap3/sec0.html % --------------------------------------------------------------- function chi2_test() x = [0 1 2 3]; f = [435 165 265 135]; e = [420 180 280 120]; [h,p,st] = chi2gof(x,'ctrs',x,'frequency',f,'expected',e,... 'nparams',2,'alpha',0.05) end
プログラム例−実行結果
>> chi2_test h = 1 p = 0.0346 st = chi2stat: 4.4643 df: 1 edges: [-0.5000 0.5000 1.5000 2.5000 3.5000] O: [435 165 265 135] E: [420 180 280 120]
MATLABでファイルをインポートする方法
tab区切りtext fileのインポート
textscan()関数
テキストヘッダを含んだtab区切りtextファイルをインポートできる。文字列と数値が混在したデータを、セル配列に読み込める。% テキストファイルからデータを読み込む。 % タブをデリミッタとし、ヘッダーラインを head_num行、読み飛ばす。 % ファイルオープン fin = fopen(file_in); head_num = 1; in_cell = textscan(fin,... '%s %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %d %s %s %s %s %s %s %s %s',... 'delimiter', '\t', 'headerlines', head_num); fclose(fin); : % 同じデータタイプのセル配列を、単一行列に変換する場合(全ての行) oneline_val = cell2mat(in_cell(1, 2:21)); % セルの個々のデータにアクセスする場合 nc = in_cell{field_no}(line_no);
dlmread()関数
テキストヘッダを含んだtab区切りtextファイルから、数値データをインポートできる。データ部(ファイルの一部の領域)に文字列が混在したデータは読み込めない。そうでなければ、この関数を使用した方が記述が簡単である。% テキストファイルから数値データを読み込む。 % タブをデリミッタとし、(R行,C列)以降を読み込む。 % 左上を(0,0)とする。例えば、(0,2)なら1行3列目から。 % 読み込まれたデータのcolsは1列多い(?)ので、使用するときは気をつけること。 datas = dlmread(file_in, '\t', R, C); [rows, cols] = size(datas); for line_no = 1:rows values1 = datas(line_no,1:(end - 1)); : end % テキストファイルから数値データを読み込む。 % タブをデリミッタとし、range = [R1 C1 R2 C2]の範囲を読み込む。 % 左上を(0,0)とする。(R1,C1)は左上、(R2,C2)は右下の座標。 datas = dlmread(file_in, '\t', range);
fgetl()関数
fgetl()関数を使用して、ファイルから1行ずつ読み込むことができる。ヘッダー部や列の先頭の文字列のみを読み込むときに便利である。- 詳細
- 例
% ファイルオープン fin = fopen(file_in); % ヘッダー部読み込み rem = fgetl(fin); % トークンに分ける。ただし、この方法では1列多くなる。 % 列数が分かっている場合は、for k = 1:10 のように数を指定してループするとよい。 k = 1; while true [title{k}, rem] = strtok(rem, ' '); % ' '内はタブ等のdelimiter if isempty(title{k}), break; end k = k + 1; end % データ部読み込み line_no = 1; while(1) tline = fgetl(fin); if ~ischar(tline), break, end [token, rem] = strtok(tline, ' '); str1{line_no} = token(1:end); % 1列目の文字列 str2{line_no} = strtok(rem, ' '); % 2列目の文字列 line_no = line_no + 1; end fclose(fin);
xls fileのインポート
xlsread()関数
EXCELで変換したxlsファイルを読み込むことができる。ただし、1行が256列以上のデータはEXCELで読み込めないので、使用できない。データを文字列や数値ごとに出力してくれるので便利である。- 詳細
- 例
% xlsreadは、次の3項目を別々に出力する。 % datas : 数値データ % strs : 文字列データ % rowData : 圧縮されていないセルの内容 [datas, strs, rowData] = xlsread(file_in); [rows, cols] = size(datas); for line_no = 1:rows id = datas(line_no,1); end
PerlによるKEGGデータベースへのアクセス
環境変数の設定
環境変数HTTP_proxyを設定する。ただし、環境変数は、言語により大文字・小文字の区別があるので注意すること。
.cshrc setenv HTTP_proxy [プロキシのURI] .bashrc export HTTP_proxy=[プロキシのURI] .profile HTTP_proxy=[プロキシのURI] export HTTP_proxy
公式サイト
- Web API for Biology(WABI)
- Web API for Biology(WABI)チュートリアル(実例・ノウハウありのおすすめサイト)
KEGGデータベースへのアクセス(KEGG API使用)
KEGG APIメソッド
- 利用可能なメソッドの一覧は、KEGG API Japanese manualを参照のこと。
KEGG APIの使用例
- 大腸菌の b0002 遺伝子と最も相同性の高い遺伝子を、Smith-Waterman スコアの高い順に 5 個検索して表示するプログラム
Smith-Waterman.plの内容
#!/usr/bin/env perl use SOAP::Lite; $wsdl = 'http://soap.genome.jp/KEGG.wsdl'; $serv = SOAP::Lite -> service($wsdl); $start = 1; $max_results = 5; $top5 = $serv->get_best_neighbors_by_gene('eco:b0002', $start, $max_results); foreach $hit (@{$top5}) { print "$hit->{genes_id1}\t$hit->{genes_id2}\t$hit->{sw_score}\n"; }
eco.plの内容
#!/usr/bin/env perl use SOAP::Lite; $wsdl = 'http://soap.genome.jp/KEGG.wsdl'; $results = SOAP::Lite -> service($wsdl) -> list_pathways("eco"); foreach $path (@{$results}) { print "$path->{entry_id}\t$path->{definition}\n"; }
BioRubyによるKEGGデータベースへのアクセス
環境変数の設定
環境変数SOAP_USE_PROXY, http_proxyを設定する。ただし、環境変数は、言語により大文字・小文字の区別があるので注意すること。
.cshrc setenv SOAP_USE_PROXY on setenv http_proxy [プロキシのURI] .bashrc export SOAP_USE_PROXY=on export http_proxy=[プロキシのURI] .profile SOAP_USE_PROXY=on export SOAP_USE_PROXY http_proxy=[プロキシのURI] export http_proxy
公式サイト
KEGGデータベースへのアクセス(KEGG API使用)
BioRubyの使用方法
BioRubyシェルを起動して、BioRubyコマンド(xxx)を実行する方法% bioruby bioruby> xxx
ファイル(xxx.rb)を編集して、rubyから実行する方法
% ruby xxx.rb
データベース情報(メタ情報)の取得
対象データベース : SSDB, PATHWAY, GENES, LIGANDbioruby> keggdbs
例)リスト出力のプログラム list_databases.rbの内容
#!/usr/bin/env ruby #require 'pp' require 'bio' serv = Bio::KEGG::API.new list = serv.list_databases() #pp list list.each do |elem| print elem.entry_id,"\t",elem.definition,"\n" end
KEGG に含まれている生物種(org)のリスト
例)リスト出力のBioRubyシェルコマンド
結果はソートされる。 bioruby> keggorgs
例)リスト出力のプログラム list_organisms.rbの内容
結果はソートされない。 #!/usr/bin/env ruby #require 'pp' require 'bio' serv = Bio::KEGG::API.new list = serv.list_organisms() #pp list list.each do |elem| print elem.entry_id,"\t",elem.definition,"\n" end
KEGG に含まれている指定した生物(hsa)のパスウェイのリスト
例)リスト出力のBioRubyシェルコマンド
bioruby> keggpathways("hsa")
例)リスト出力のプログラム list_pathways.rbの内容
#!/usr/bin/env ruby #require 'pp' require 'bio' serv = Bio::KEGG::API.new list = serv.list_pathways("hsa") #pp list list.each do |elem| print elem.entry_id,"\t",elem.definition,"\n" end
DBGETシステムに対するメソッド
ゲノムネットのDBGETのコマンドをそのまま実行できる。コマンドとしても、rbファイル上でも、使用可能。- binfo(string)
- 返り値は"\n"区切りstring
指定したデータベースのエントリ数や更新日など詳しい最新情報を返す。
例)BioRubyシェル上でのメソッドの実行
結果をファイルに保存する。 bioruby> str = binfo('pathway') bioruby> savefile "binfo.txt", str
例)プログラムtest_binfo.rbの内容
#!/usr/bin/env ruby require 'bio' serv = Bio::KEGG::API.new str = serv.binfo('') puts str
データベースに対するキーワード検索することができる。データベース名とキーワード(100個以下)を指定する。
- 返り値は"\n"区切りstring
例)BioRubyシェル上でのメソッドの実行
結果を画面に出力する。 bioruby> str = bfind("gb E-cadherin human") bioruby> puts str
指定したdb:entry_idのデータベースエントリを返す。コマンドラインオプションを文字列で渡す。一度に取得できるエントリの数は100個以下。
- 返り値は"\n"区切りstring
例)BioRubyシェル上でのメソッドの実行
結果を画面に出力する。 bioruby> str = bget("eco:b0002 bsu:BG10065 cpd:C00209") bioruby> puts str
指定したentry_id(100個以下)に対応するdefinitionを返す。
- 返り値は"\n"区切りstring definition "\n"
例)BioRubyシェル上でのメソッドの実行
結果を画面に出力する。 bioruby> str = btit("hsa:1798 mmu:13478 dme:CG5287-PA cel:Y60A3A.14") bioruby> puts str
外部データベースのIDを、KEGGのIDに変換する。
対応データベース
外部データベース データベース名の prefix ---------------- ----------------------- NCBI GI ncbi-gi: NCBI GeneID ncbi-geneid: GenBank genbank: UniGene unigene: UniProt uniprot: OMIM omim:
例)プログラムtest_pconv.rbの内容
#!/usr/bin/env ruby require 'bio' serv = Bio::KEGG::API.new str = serv.bconv("ncbi-gi:10047086 ncbi-geneid:14751") puts str
LinkDB
- get_linkdb_by_entry(entry_id, db, start, max_results)
- 返り値はArrayOfLinkDBRelation
指定したentry_idから直接または間接的にリンクされているエントリの経路を、dbで指定したデータベースにたどれるまで検索する。
例)プログラムget_linkdb_by_entry.rbの内容
#!/usr/bin/env ruby #require 'pp' require 'bio' serv = Bio::KEGG::API.new list = serv.get_linkdb_by_entry('eco:b0002', 'pathway', 1, 10) #pp list list.each do |elem| print elem.entry_id1,"\t",elem.entry_id2,"\t",elem.type,"\t",elem.path,"\n" end
KEGG APIメソッド
データベース情報取得以外のKEGG APIのメソッドをBioRubyシェル上で実行するには、keggapiに続けて呼び出せばよい。- 利用可能なメソッドの一覧は、KEGG API Japanese manualを参照のこと。
- 返り値の型とその内部構造は、ppコマンドで確認できる。
例)BioRubyシェル上でのメソッドの実行
結果を画面に出力する。 bioruby> list = keggapi.get_genes_by_pathway("path:hsa05210") bioruby> pp list bioruby> puts list
BioRuby Tips
FixnumのPublicメソッドの一覧出力
$ ruby -e 'p 1.type; p 1.methods'
メソッドの返り値のチェック方法
ppクラスを使用して、メソッドの返り値の型とその内部構造をチェックできる。例)ppクラス使用例
test_pp.rbの内容 #!/usr/bin/env ruby require 'pp' require 'bio' serv = Bio::KEGG::API.new list = serv.get_elements_by_pathway('path:hsa05210') pp list