どせいたんさき。

ナスダヨー

SIMBAD の API を使って天体の名前を変換する

目的

天体は慣用名やカタログ ID などことなる identifier を持つことがある.論文によって慣用名を優先したり,カタログ ID を優先したりする場合がある.

慣用名 PNG ID
NGC 7027 PN G084.9-03.4
Cat's Eye Nebula PN G096.4+29.9
Eskimo Nebula PN G197.8+17.3

使用している identifier が異なっていると大規模なサーベイデータ同士を照合するときなどに困る.できれば一種類の identifier に統一したい.

解決方法

SIMBAD が提供している WEB API を利用する.GET メソッドで query 情報を記載したスクリプトを送信することができる.たとえば,PN という名前で管理されている惑星状星雲のカタログ ID を知りたければ,以下のようなスクリプトを投げる.

format object "%IDLIST(PN) | %COO(A) | %COO(D)"
NGC 7027
Cat's Eye Nebula
Eskimo Nebula

一行目の format から始まる行が出力の書式を規定している.%IDLIST は identifier の一覧を返す.引数を与えると identifier を選択することができる. %IDLIST(1) なら慣用的に最もよく用いられている identifier を返す.今回は PNG ID で管理されているカタログ ID を知りたいので %IDLIST(PN) を指定する. %COO は coordinate を意味する.AD はそれぞれ right ascension, declination を指定するときに使用する.この query を投げると以下のような結果が得られる.

::script:::::::::::::::::::::::::::::::::::::::::::::::::::

format object "%IDLIST(PN) | %COO(A) | %COO(D)"
NGC 7027
Cat's Eye Nebula
Eskimo Nebula

::console::::::::::::::::::::::::::::::::::::::::::::::::::

C.D.S.  -  SIMBAD4 rel 1.223  -  2014.07.01CEST10:31:23
total execution time: 0.157 secs
simbatch done

::data:::::::::::::::::::::::::::::::::::::::::::::::::::::

PN G084.9-03.4 | 21 07 01.593 | +42 14 10.18
PN G096.4+29.9 | 17 58 33.423 | +66 37 59.52
PN G197.8+17.3 | 07 29 10.76590 | +20 54 42.4830

以下のような bash srcipt を用意すれば ./simbad_script.sh < object.lst と実行することで任意の天体の PNG ID を一括取得することができる*1

#!/bin/bash

dom="simbad.u-strasbg.fr"
url="http://${dom}/simbad/sim-script"
data='format object "%IDLIST(PN) | %COO(A) | %COO(D)"'
while read line
do
  data=$(echo -e "${data}%0A${line}")
done
wget -O - -q "${url}?script=${data}"

参考資料

*1:天体がカタログに属さない場合はその部分が空のデータが返される