Anatomography Web API サンプルコード - Perl - バージョンおよびTreeの指定

はじめに

Anatomographyは、Elementと呼ばれる小さい単位のパーツをFMAのTreeを元に組み合わせて、より大きな概念のパーツを描画しています。
また、バージョンが変わると、Elementの作成単位や形状が異なるため、最終的に描画される形状が異なる場合があります。
AnatomographyはTreeとバージョンの両方を明示的に指定することで、より厳密に描画することができます。
(Treeおよびバージョンを明記しなくても、描画は可能ですが、バージョンアップに伴い、同じパーツの描画を指定しても、形状が異なったり、描画できなくなる場合があります)

サンプルコード

出力先ファイルは適宜変更して下さい。

#!/usr/bin/env perl
use strict;
use LWP::UserAgent;

# リクエスト先URL
my $serverURL = "http://lifesciencedb.jp/bp3d/API/";

# 描画リクエスト用のJSON文字列を作成
# Version 4.0、IS-A Treeにて描画
my $json = <<JSON;
{
	"Common":{
		"Version":"4.0",
		"TreeName":"isa"
	},
	"Part":[
		{
			"PartName":"anatomical entity",
			"PartColor":"F0D2A0",
			"PartOpacity":0.1
		},
		{
			"PartName":"bone organ",
			"PartColor":"FFFFFF"
		},
		{
			"PartName":"region of wall of heart",
			"PartColor":"FF0000"
		}
	]
}
JSON

# 出力
open OUT, ">4.0_IS-A.png";
binmode(OUT);
print OUT  &getImage($json);	# 作成したJSONを利用して描画リクエスト
close OUT;

# 描画リクエスト用のJSON文字列を作成
# 同じパーツをVersion 3.0、IS-A Treeにて描画
my $json = <<JSON;
{
	"Common":{
		"Version":"3.0",
		"TreeName":"isa"
	},
	"Part":[
		{
			"PartName":"anatomical entity",
			"PartColor":"F0D2A0",
			"PartOpacity":0.1
		},
		{
			"PartName":"bone organ",
			"PartColor":"FFFFFF"
		},
		{
			"PartName":"region of wall of heart",
			"PartColor":"FF0000"
		}
	]
}
JSON

# 出力
open OUT, ">3.0_IS-A.png";
binmode(OUT);
print OUT  &getImage($json);	# 作成したJSONを利用して描画リクエスト
close OUT;

# 描画リクエスト用のJSON文字列を作成
# 同じパーツをVersion 4.0、PART-OF Treeにて描画
# このパラメータでは何も描画できず、白い画像が返ってきます。
$json = <<JSON;
{
	"Common":{
		"Version":"4.0",
		"TreeName":"partof"
	},
	"Part":[
		{
			"PartName":"anatomical entity",
			"PartColor":"F0D2A0",
			"PartOpacity":0.1
		},
		{
			"PartName":"bone organ",
			"PartColor":"FFFFFF"
		},
		{
			"PartName":"region of wall of heart",
			"PartColor":"FF0000"
		}
	]
}
JSON

# 出力
open OUT, ">4.0_PART-OF_01.png";
binmode(OUT);
print OUT  &getImage($json);	# 作成したJSONを利用して描画リクエスト
close OUT;

# 描画リクエスト用のJSON文字列を作成 (Version 4.0、PART-OF Tree)
# 似たような概念をPART-OF Treeのパーツから選び、Version 4.0、PART-OF Treeにて描画
$json = <<JSON;
{
	"Common":{
		"Version":"4.0",
		"TreeName":"partof"
	},
	"Part":[
		{
			"PartName":"human body",
			"PartColor":"F0D2A0",
			"PartOpacity":0.1
		},
		{
			"PartName":"skeletal system",
			"PartColor":"FFFFFF"
		},
		{
			"PartName":"heart",
			"PartColor":"FF0000"
		}
	]
}
JSON

# 出力
open OUT, ">4.0_PART-OF_02.png";
binmode(OUT);
print OUT  &getImage($json);	# 作成したJSONを利用して描画リクエスト
close OUT;


# 生成したJSONをパラメータとしてimageに対してGETリクエストするサブルーチン
sub getImage () {
	my $json = shift;
	my $userAgent = LWP::UserAgent->new;
	my $request = HTTP::Request->new('GET', $serverURL."image?".$json);
	my $response = $userAgent->request($request);
	return $response->content;
}

出力画像(Version 4.0, IS-A Tree)


出力画像(Version 3.0, IS-A Tree)


出力画像(Version 4.0, PART-OF Tree, 1枚目, 何も描画されていない白い画像)


出力画像(Version 4.0, PART-OF Tree, 2枚目)


以下、各ステップに関する説明です。

バージョンおよびTreeの設定

	"Common":{
		"Version":"4.0",
		"TreeName":"isa"
	},
この例では、Versionを4.0、利用するTreeをIS-Aに指定しています。
2013年5月現在、バージョンには"2.0"、"3.0"、"4.0"が指定(各々2.0、3.0、4.0に該当)でき、指定をしない場合、最新版(4.0)と解釈されます。
利用するTreeは、"isa"、"partof"のいずれか(各々IS-A、PART-OFに該当)が指定できます。