先日、遠方の銀河の距離の調べ方について書きましたが、
これをなんとか自動化してアノテーション付き画像まで生成するツールを作りました。github で公開しています。
v0.5 のダウンロードはこちらから。
手順としては、元画像を用意して、
- astrometry.net に元画像をアップロードしてプレートソルブを行って wcs.fits (結果画像表示ページの右側にリンクがあります)をダウンロードする。
- 1 で得た wcs.fits から写野の範囲を取得し HyperLeda の SQL 機能で写野にある銀河のデータ(VOTABLE形式のXMLファイル)をまとめてダウンロードする。
- 2 で得たXMLファイルからアノテーション用データ(JSONファイル)を生成する。
- オプションで視線速度データから距離を計算して説明文に追加する。
- オプションで指定した等級より明るい銀河だけ抽出する。
- 3 で得たJSONファイル、スタイル設定ファイル、wcs.fits、元画像、からアノテーション付きの画像(SVGファイル)を生成する。
- 4 で得たSVGファイルをSVGエディタ(Incscape)で微調整し、PNGでエクスポート。
- アノテーションの位置調整、実際には写ってない銀河のマーカーを削除等。
- 5 で得たPNGファイルを任意の画像編集ツールでJPEGに変換。
今回作ったのは 2〜4 を自動処理するスクリプトです。各ステップで中間ファイルを作るので、何か手違いがあっても前のステップに戻らずにやりなおせます。
手順や仕様の詳細は github の README.md を参照してください。
使用例を以下に。字が小さいので画像をクリックして拡大画像を見てください。
M64(NGC4826)の写真です。データ上には18等台の銀河もありましたが、写真では確認できなかったので17.5等まで絞り込んであります。最遠で22億光年の銀河(PGC1656969)が写ってますね。いや、マルで囲むとあるように見えますが、本当に写ってるのかなこれ…
3月に撮った「しし座4重銀河」です。
以前の記事ではトリミングしていた部分も見てみました。なんと29億光年の銀河(2MASXJ10173306+2139538(PGC3753586))が写っている!?でも正直ノイズっぽいような… 27億光年の銀河(PGC1660919)も写っていて、これは確かに写っている?
ちなみに距離表示は赤方偏移データのみから計算しているため、メインの被写体(NGC3189, NGC3193, NGC3187, NGC3185)のように比較的近い銀河については精度が低いです。
20億光年の 2MASXJ12215059+1425578(PGC3787372) は写ってる気がしたので残したのですが、今見ると写ってない気が… 14億光年の PGC169089 も位置が少しズレてるようですが、近くに恒星もないのでこれはたぶん写っていると思います。
というわけで、個人的にはこの結果に満足しているのですが、他人の環境でちゃんと動くのかよくわかりませんので、何かあったら github に Issue を投げてください。軽い質問などはこのエントリのコメント欄でもいいです。
今回、天文計算ライブラリが一番充実している、という理由で初めて Python でスクリプトを書きました。手慣れた Ruby か JavaScript で書きたかったのですが、Python の astropy に匹敵するライブラリがなくて…
Python は他人の書いたスクリプトを少しだけ手直しして使ったことはありますが、ほぼ初心者の状態から始めたので色々変なところがあるかもしれません。開発・実行環境は Anaconda を使いました。科学技術計算系のライブラリが最初からたくさん入っているので使いやすいです。
出力が SVG で、これは作りやすいしブラウザでも一応見れるので便利ですが、それ以外の編集ツールがこなれてなくて、事実上 Inkscape 以外では扱えないかも… GIMP も Photoshop もインポート機能はあるものの正しく読み込むことができませんでした。単体で PNG に出力できるようにしたかったのですが、よさそうなライブラリが Anaconda でうまくインストールできませんでした…
Python の環境を作らないと距離もわからないというのも不便なので、ブラウザで動く Greasemonkey スクリプトも作っています。WIKISKY.ORG で見つけた銀河の距離を表示するというもの。これについてはまた後ほど紹介します。