Deep Sky Memories

横浜の空で撮影した星たちの思い出

Galaxy Annotator v0.9 (スタイル設定機能強化版)をリリースしました

銀河専用アノテーションツール Galaxy Annotator について、当初から要望がありながら先延ばしになっていたスタイル設定機能の強化を一通り実装したバーション(v0.9)をリリースしました。

スクリプトの修正は galaxy-annotator.py のみです。

機能強化の内容ですが、まず style.jsonSVG 1.1 でスタイルシートに書ける設定(スタイルプロパティ)は、JSON の文法でですが、原則何でも指定できるようになりました。文字の透明度、文字の装飾、点線の設定等々。スタイルの文法チェックは一部を除いて行っておらずほぼ素通しですので、書き間違いにはご注意ください。*1


もう一つの機能強化は、個別の銀河毎のスタイル設定機能です。galaxies.json の銀河オブジェクト内に style.json と同じ書式でスタイル設定を記述すると、それがその銀河だけに優先して適用されるスタイル設定になります。

大きな銀河のラベルは大きな文字にしたい、銀河が密な領域で個々の銀河のラベルの配置(後述)を変えてラベルの衝突を避けたい、等の場合に手動になりますが galaxies.json の方で調整ができるようになりました。

もう一つの機能強化は、ラベルの配置設定機能です。marker のスタイル設定の label-position と label-vertical-align でラベルの配置を指定できるようになりました。百聞は一見に如かず、ということでこんな感じになります。

https://rna.sakura.ne.jp/share/galann/label-position-all.jpg

https://rna.sakura.ne.jp/share/galann/label-vertical-align-all.jpg

これをうまく使うとラベルの衝突や大きな銀河でラベルが銀河から離れすぎる問題にある程度対処できると思います。詳しい仕様は添付文書の「ラベルのレイアウト」を参照してください(リンク先は最新版)。

マーカーの大きさを自動調整する機能も追加しました。マーカーの大きさは size で視直径の何倍にするかを、min-r で最小の半径を設定できるのですが、小さな銀河に合わせて大きめの size を指定すると、写真の主題になる大きな銀河ではマーカーが大きくなりすぎる問題がありました。

銀河の大きさに合わせて size を賢く自動調整していい感じの大きさにしたいところですが、設定パラメータが分かりやすいように新たな設定項目 min-size, min-size-r を追加して、以下のような単純なルールで調整するようにしました。

  • min-size はマーカーの倍率の最小値。
  • マーカーの倍率は銀河の(長)半径に応じて、半径 min-r で size 倍、半径 min-size-r で min-size 倍になるようリニアに変化する。
  • min-size プロパティと min-size-r を省略した場合は銀河の半径によらず常に倍率ば size 倍。

最後にちょっとした機能追加ですが、desc のスタイルに line-height を追加しました。1.05 とか指定すると行の高さが 5% アップします。フォントによって行間が詰まり過ぎる場合に使ってください。

以上色々仕様が拡張しましたが、デフォルトでは今までと同じスタイル設定になるようにしたつもりです。バージョン 1.0 未満のベータ版みたいなものなので、互換性の維持は必ずしも約束できませんが、あまりに変なところがあったら直すかもしれません。

全部で700行にも満たない小さなスクリプトですが、かなり仕様が複雑になってきたので、なぐり書き状態のままでは品質の維持が難しくなってきました。ラベル配置のあたりは設定の組み合わせが45通りあってテストが大変でした… しばらくはモジュール化や自動テストの追加といった作業が続くと思います。

v1.0 に向けた目標ですが、コマンドの実行方法をもう少し簡略化する方法を考えたいと思います。導入方法についてはだいこもんさん(id:snct-astro)の記事のおかげで少しはわかりやすくなったとは思うのですが、*2

https://snct-astro.hatenadiary.jp/entry/2021/05/29/010041

本格的に色々試そうとすると、今は個々のコマンドの引数が多くて中間生成物の依存関係も把握しておく必要があり、なかなか扱いづらい面があります。

依存関係のある生成物をまとめて記述したプロジェクトファイルを用意すれば後は設定変更に合わせて必要な処理だけ再実行して最終生成物が自動的に更新される、みたいなことができれば、と思っています。このへんができると GUI 化も視野に入ってくるのですが…

あと、銀河以外の天体のアノテーションについても考えていますが、HyperLeda とは別のデータベースに対応する必要があるため、これはもう少し先になると思います。

*1:なお、SVG のショートハンドプロパティ(複数のプロパティをまとめて記述できるプロパティ)の font プロパティについては、描画には反映されますが、ラベルのレイアウトが崩れます。これはレイアウトのために font-size プロパティを使用するのですが、font プロパティから font-size 値を抽出していないからです。これは当面制限事項とさせてください。

*2:どうもありがとうございます。

皆既月食は見えませんでしたが… (2021/5/26)

5月26日の皆既月食、一応前の晩からベランダに赤道儀を設置して極軸を合わせておいたのですが、くもりの予報だったので連続写真の撮影は諦めて、なんとか雲の隙間から皆既中の月を撮れないかと粘ったのですが、ダメでした。

皆既の終わりの30分後の21:02頃から微かに雲の向こうに月の明かりが見えてきたので、さらに粘っていたら、21:20頃から雲越しに半分くらい欠けた月がぼんやりと姿をあらわしました。

雲はかなり厚く、8cm F6 + 2xテレコンでは暗すぎてどうにもならないので、テレコンを外し、雲越しでもひときわ輝いて見えるアリスタルコスと月の縁を使ってピント合わせ。少しでもハッキリ見えてきたところで連写、を繰り返してなんとか撮れたのがこれでした。

月食 (2021/5/26 21:28)
月食 (2021/5/26 21:28)
笠井 BLANCA-80EDT (D80mm f480mm F6 屈折), OLYMPUS EC-20 2x TELECONVERTER (合成F12) / Vixen SX2 / OLYMPUS OM-D E-M1 Mark II (ISO800, RAW) 露出 1/60s x 24/32コマをスタック処理 / AutoStakkert!3 3.0.14, RegiStax 6.1.0.8, Photoshop 2021, Lightroom Classic で画像処理

連続で100コマ以上連射した部分からスタックしようとしたのですが、雲の通過のせいか stabilization がうまくいかずそのままスタックするとブレたような画像になってしまったので、比較的画像が安定している連続32コマから24コマをスタックして、ピント合わせの時に見えていたアリスタルコスや虹の入江の形もなんとか見えるように仕上げられました。

月食の間はベランダに置いたタブレットと部屋の中のPCで、サイトロンジャパン×天文リフレクションズ共催のライブ配信「5.26皆既月食ライブリレー」を流していました。東北と北海道の方は結構晴れていたようでネット越しではありましたが皆既の赤い月を見ることができました。

部屋ではもう一台のPCで名取天文台の皆既月食オンライン観望会も流していました。こちらは YouTube にダイレクトに配信していたからか画質も良く、素晴らしい映像が楽しめました。*1

18:30頃からベランダに出たり入ったりしていたのですが、さすがに疲れてきたので20:00頃からは ASI290MC に付属の魚眼レンズを取り付けたものをカメラ三脚に据え付けてベランダに出して、部屋のPCから空の様子を監視できるようにしました。おかげで雲がわずかに薄くなってきたのにもすぐ気付けたというわけです。

というわけで残念な結果にはなりましたが、配信でワイワイ盛り上がりながら部分月食とはいえリアルでも月食が見れたので、まあこういうのも悪くないな、という一日でした。

*1:ライブリレーの方は仕組み上 zoom の会議室映像を YouTube に再配信する形だったので画質の方は悪くはないけどもう一つ… という感じでした。

Galaxy Annotator v0.8 (距離精度向上版)をリリースしました

銀河専用アノテーションツール Galaxy Annotator の距離表示機能ですが、やはり近距離の銀河の距離の精度が悪すぎるのが気になり出したので対応版(v0.8)をリリースしました。

スクリプトの修正は leda-votable-to-galaxy.py のみです。距離表示を使わない人はスキップして構いません。

元々距離表示は億光年単位の遠方の銀河の距離を表示するために作った機能なので、赤方偏移(視線速度)のみを元にして距離を計算するという仕様だったのですが、近距離の銀河ではデタラメの数字になってしまうのがやっぱり我慢できなくなりました。M33 が9100万光年になったり大マゼラン雲(PGC17223)が1400万光年になるのはいくらなんでも…

HyperLeda では mod0 という項目があり、ここに赤方偏移以外の方法で測定した距離*1が距離指数(distance modulus)の形で入っています。ここでの距離は光度距離なので光路距離に変換してあります。*2

これに伴い近距離の距離表示の不具合(100万光年未満の距離表示がゼロになる、距離に関わらず100万光年より下の桁が四捨五入されてしまう)を修正しました。

また、今まで遠方の銀河でも100万光年の桁まで表示するという変な丸め処理をしていたのですが、v0.8 からはシンプルに有効桁数(デフォルト3桁)より下の桁を四捨五入して丸めるようにしました。有効桁数は -p オプションで任意の桁を指定できます。

v0.7 までの計算方法と丸め処理は互換性オプションを指定すると v0.8 今でも利用できます。ただし不具合までは再現しません。

ということで、これで M33 は286万光年、大マゼラン雲は16.4万光年と表示されるようになりました。v0.8 で対応予定だったアノテーションのレイアウトやスタイル指定の機能追加は v0.9 以降でやります…

実は v0.8 での M33 のアノテーション処理の作例を貼ろうと思ったのですが肝心の名前と距離の表示が画面の外に出てしまって役に立たない事が判明。やはりレイアウト関係をなんとかしなくては…

とりあえずしし座4重銀河のサンプルを。

しし座4重銀河(NGC3189, NGC3193, NGC3187, NGC3185) (2021/3/14 20:45) (17等までの銀河をアノテーション処理(v0.8))しし座4重銀河(NGC3189, NGC3193, NGC3187, NGC3185) (2021/3/14 20:45) (17等までの銀河をアノテーション処理(v0.8))
笠井 BLANCA-80EDT (D80mm f480mm F6 屈折) / Vixen SX2, D30mm f130mm ガイド鏡 + ASI290MC + PHD2 2.6.9 による自動ガイド/ ASI290MM (ゲイン75) / 露出 2分 x 60コマ 総露出時間 2時間 / DeepSkyStacker 4.2.2, Photoshop 2021, RegiStax 6.1.0.8, Lightroom Classic で画像処理, GalaxyAnnotator v0.8 でアノテーション処理.

距離の精度改善で以下のように変わりました。

  • NGC3193: 6600万光年 → 1億900万光年
  • NGC3190: 6400万光年 → 7870万光年
  • NGC3185: 6000万光年 → 7830万光年

このくらいの距離の銀河でも結構差がありますね。

*1:複数の測定結果を加重平均したものです。

*2:近距離では光度距離も光路距離もほとんど差は出ませんが念の為。

Galaxy Annotator v0.7 (Windows 対応版)をリリースしました

銀河専用アノテーションツール Galaxy AnnotatorWindows の Anaconda 環境でうまく動かないという問題が報告されたので、対応修正版(v0.7)をリリースしました。

Windows の Anaconda 環境で python スクリプトの出力をリダイレクトすると UTF-16 で出力されてしまうようで、leda-votable-to-galaxy.py の出力が文字化けする(UTF-8 で保存されない)という問題がありました。

この問題に対応するため leda-votable-to-galaxy.py, leda-get-votable.py の出力先ファイルは第2引数で指定できるようにしました。今まで通り第2引数なしでリダイレクトで出力することも可能ですが、上記のように Windows 環境では文字化けすることがあるので第2引数の指定を推奨します。

また、Windows 環境では galaxy-annotator.py に文字化けしていない JSON ファイルを指定してもエラーになるため、これも対応修正を入れました。

いずれも Windows 側での環境設定で回避可能なようですが、簡単ではないようなので(特に Anaconda の標準環境である PowerShell では)対応することにしました。

なお、Windows では python スクリプトをそのままコマンドとして実行できないので以下のようにして実行します。

python leda-votable-to-galaxy.py wcs.fits votable.xml

Linux, macOSUnix 系のOSならスクリプトに実行パーミッションを付ければそのままコマンドとして実行できますが、混乱を避けるために README.md の例は全部上の形式に変更しました。

アノテーションのレイアウトやスタイル指定に関する要望もいただいているのですが、そのあたりは v0.8 で対応予定です。

Galaxy Annotator v0.6 (不具合修正版)をリリースしました

昨日公開した Galaxy Annotator の不具合修正版(v0.6)をリリースしました。

写野に等級データのない銀河があると、-m オプションを指定した leda-votable-to-galaxy.py がエラーで落ちるというものです。v0.6 でもデフォルトはエラーで止まる仕様ですが、どの天体でエラーになったか出力するようになりました。

そして -s オプションでエラーになる天体をスキップする(出力に含めないようにする)か、-i オプションでエラーになった天体もエラーを無視して出力するかを選べるようになりました。

エラーになるのはほとんどが小さくて暗い銀河ですし、赤方偏移データもない(距離が計算できない)場合が多いので、基本 -s オプションでスキップしても構わないと思います。表示したい銀河を個別に選びたい場合は -i オプションで全部出力してから、出力した JSON ファイルを手で編集することになります。写野が広いと大変ですが…

あと、等級のチェックの際に it (I magnitude)がなければ vt (V magunitude)を使っていたのですが、念の為それもなければ bt (B magunitude)も使うようにしました。


ところで、タイミングの悪いことに今朝から astrometry.net に障害が発生していて(画像のアップロードはできるものプレートソルブのジョブが開始しない)、Galaxy Annotator を試そうとした人が試せない*1という状況でした。今は復活していますがWebサービスだとこういうことがあるから困りますね。

wcs.fits はローカルにインストールした astrometry.net でも出力され、Galaxy Annotator でも利用できる事を確認しました。All Sky Plate Solver (ASPS) も wcs.fits を出力できるそうで、まだ試せていませんが、たぶんこれも利用できると思います。ASPS も中身は astrometry.net のコードを使っているようなので。*2

astrometry.net も ASPS もインデックス(星表データ)のダウンロードが大変でなかなかローカルにインストールするのもお勧めしづらい状況です。astrometry.net はインデックスを全部インストールしたら 30GB 越えました…

ASPS は機材の焦点距離等に合わせてインデックスを選別してインストールする機能があるのですが、ネットワークエラーでダウンロードに失敗するたびダイアログが出て処理が止まるので放置してるとインストールが終わりません…

あと、出力した SVG がブラウザ以外だと Inkscape ぐらいでしか開けないという問題ですが、PixInsight でも開けるそうです。*3

*1:過去に astrometry.net を使ってても wcs.fits をダウンロードして取ってある人は滅多にいないでしょうからね…

*2:ぐらすのちさん(id:fornax)の見せてくれたFITSヘッダを見る限り使えそうです。

*3:PixInsight は持っていないのですが、だいこもんさん(id:snct-astro)に教えていただきました。

WIKISKY.ORG で遠方銀河の距離を表示するスクリプトを作成しました

WIKISKY.ORG で銀河をクリックして表示される画面に何億光年等の距離情報を表示するための Greasemonkey スクリプトを作成しました。github で公開しています。

v1.0 のダウンロードはこちらから。

スクリプトが3つあるので全部 Greasemonkey にインストールしてください。インストール後は、WIKISKY.ORG で天体をクリックすると表示される個別天体画面に以下のように天体名の下に距離表示が出るようになります(ポップアップブロックの警告が出たら許可してください)。

https://rna.sakura.ne.jp/share/ltdv4wikisky-pgc169105.png

WIKISKY の個別天体画面がタブで開いた時に立て続けに二つタブが開いてすぐ閉じます(ちょっとウザい…)。一つは HyperLeda (のミラー)で、もう一つは Ned Wright's Javascript Cosmology Calculator です。HyperLeda から取得した赤方偏移データを Cosmology Calculator に渡して計算した光路距離を元のページに表示する、ということをやっています。

HyperLeda のサーバーが CORS (Cross-Origin Resource Sharing) に対応してくれればタブを開かずに XHR でデータを読み込めるのですが… Cosmology Calculator については JavaScript のみの実装なのでコードをコピーすればページを開かなくてもよいのですが、著作権の問題がある(OSSではない)のでこうしています。

天体写真に写った銀河の距離情報を一度に取得してアノテーションまでしたい!というニーズに対しては昨日のエントリで紹介した Galaxy Annotator を使ってください(要 Python)。

というか、本当は LightTravelDistanceViewerForWikisky (LTDV) の方を先に作っていて、それで表示した何億光年とかを書き込んだ天体写真を Twitter で見せびらかしていたら、だいこもんさん(id:snct-astro)に、アノテーションは自動じゃないのか、みたいに残念がられてしまったので Galaxy Annotator を作ったのでした…

LTDV は、これはこれで気軽に距離を調べられるので便利に使えると思います。ていうか、今 http://nova.astrometry.net/ が落ちてる(閲覧はできるが画像をアップロードしてもジョブが開始しない状態)ので…

遠方銀河のアノテーション用ツールを作成しました(距離表示付き)

先日、遠方の銀河の距離の調べ方について書きましたが、

これをなんとか自動化してアノテーション付き画像まで生成するツールを作りました。github で公開しています。

v0.5 のダウンロードはこちらから。

手順としては、元画像を用意して、

  1. astrometry.net に元画像をアップロードしてプレートソルブを行って wcs.fits (結果画像表示ページの右側にリンクがあります)をダウンロードする。
  2. 1 で得た wcs.fits から写野の範囲を取得し HyperLeda の SQL 機能で写野にある銀河のデータ(VOTABLE形式のXMLファイル)をまとめてダウンロードする。
  3. 2 で得たXMLファイルからアノテーション用データ(JSONファイル)を生成する。
    • オプションで視線速度データから距離を計算して説明文に追加する。
    • オプションで指定した等級より明るい銀河だけ抽出する。
  4. 3 で得たJSONファイル、スタイル設定ファイル、wcs.fits、元画像、からアノテーション付きの画像(SVGファイル)を生成する。
  5. 4 で得たSVGファイルをSVGエディタ(Incscape)で微調整し、PNGでエクスポート。
  6. 5 で得たPNGファイルを任意の画像編集ツールでJPEGに変換。

今回作ったのは 2〜4 を自動処理するスクリプトです。各ステップで中間ファイルを作るので、何か手違いがあっても前のステップに戻らずにやりなおせます。

手順や仕様の詳細は github の README.md を参照してください。

使用例を以下に。字が小さいので画像をクリックして拡大画像を見てください。

M64 (2021/5/3 21:42) (17.5等までの銀河をアノテーション)
M64 (2021/5/3 21:42) (17.5等までの銀河をアノテーション)
笠井 BLANCA-80EDT (D80mm f480mm F6 屈折) / Vixen SX2, D30mm f130mm ガイド鏡 + ZWO ASI290MC + PHD2 2.6.9dev4 による自動ガイド/ ZWO ASI290MM (ゲイン80) / 露出 2分 x 40コマ 総露出時間 80分 / DeepSkyStacker 4.2.2, RegiStax 6.1.0.8, Lightroom Classic で画像処理, GalaxyAnnotator v0.5 でアノテーション処理.

M64(NGC4826)の写真です。データ上には18等台の銀河もありましたが、写真では確認できなかったので17.5等まで絞り込んであります。最遠で22億光年の銀河(PGC1656969)が写ってますね。いや、マルで囲むとあるように見えますが、本当に写ってるのかなこれ…

しし座4重銀河(NGC3189, NGC3193, NGC3187, NGC3185) (2021/3/14 20:45) (17等までの銀河をアノテーション)
しし座4重銀河(NGC3189, NGC3193, NGC3187, NGC3185) (2021/3/14 20:45) (17等までの銀河をアノテーション)
笠井 BLANCA-80EDT (D80mm f480mm F6 屈折) / Vixen SX2, D30mm f130mm ガイド鏡 + ASI290MC + PHD2 2.6.9 による自動ガイド/ ASI290MM (ゲイン75) / 露出 2分 x 60コマ 総露出時間 2時間 / DeepSkyStacker 4.2.2, Photoshop 2021, RegiStax 6.1.0.8, Lightroom Classic で画像処理, GalaxyAnnotator v0.5 でアノテーション処理.

3月に撮った「しし座4重銀河」です。

以前の記事ではトリミングしていた部分も見てみました。なんと29億光年の銀河(2MASXJ10173306+2139538(PGC3753586))が写っている!?でも正直ノイズっぽいような… 27億光年の銀河(PGC1660919)も写っていて、これは確かに写っている?

ちなみに距離表示は赤方偏移データのみから計算しているため、メインの被写体(NGC3189, NGC3193, NGC3187, NGC3185)のように比較的近い銀河については精度が低いです。

NGC4302, NGC4298 (2021/3/14 23:01) (17等までの銀河をアノテーション)
NGC4302, NGC4298 (2021/3/14 23:01) (17等までの銀河をアノテーション)
笠井 BLANCA-80EDT (D80mm f480mm F6 屈折) / Vixen SX2, D30mm f130mm ガイド鏡 + ASI290MC + PHD2 2.6.9 による自動ガイド / ASI290MM (ゲイン75) / 露出 2分 x 60コマ 総露出時間 2時間 / DeepSkyStacker 4.2.2, Photoshop 2021, RegiStax 6.1.0.8, Lightroom Classic で画像処理, GalaxyAnnotator v0.5 でアノテーション処理.

20億光年の 2MASXJ12215059+1425578(PGC3787372) は写ってる気がしたので残したのですが、今見ると写ってない気が… 14億光年の PGC169089 も位置が少しズレてるようですが、近くに恒星もないのでこれはたぶん写っていると思います。

というわけで、個人的にはこの結果に満足しているのですが、他人の環境でちゃんと動くのかよくわかりませんので、何かあったら github に Issue を投げてください。軽い質問などはこのエントリのコメント欄でもいいです。

今回、天文計算ライブラリが一番充実している、という理由で初めて Pythonスクリプトを書きました。手慣れた RubyJavaScript で書きたかったのですが、Python の astropy に匹敵するライブラリがなくて…

Python は他人の書いたスクリプトを少しだけ手直しして使ったことはありますが、ほぼ初心者の状態から始めたので色々変なところがあるかもしれません。開発・実行環境は Anaconda を使いました。科学技術計算系のライブラリが最初からたくさん入っているので使いやすいです。

出力が SVG で、これは作りやすいしブラウザでも一応見れるので便利ですが、それ以外の編集ツールがこなれてなくて、事実上 Inkscape 以外では扱えないかも… GIMPPhotoshop もインポート機能はあるものの正しく読み込むことができませんでした。単体で PNG に出力できるようにしたかったのですが、よさそうなライブラリが Anaconda でうまくインストールできませんでした…

Python の環境を作らないと距離もわからないというのも不便なので、ブラウザで動く Greasemonkey スクリプトも作っています。WIKISKY.ORG で見つけた銀河の距離を表示するというもの。これについてはまた後ほど紹介します。