Git Product home page Git Product logo

galaxyannotator's Introduction

Galaxy Annotator v0.9.4

概要

天体写真上の銀河のアノテーションを行うツールです。以下を入力するとアノテーション付きの SVG 画像ファイルを出力します。

  • 銀河データファイル(JSON形式、後述)
  • スタイル設定ファイル(JSON形式、後述)
  • Astrometry.net の出力した wcs.fits (FITS形式)
  • Astrometry.net に入力した画像ファイル

最終出力は SVG 編集ツール(Inkscape等)で調整できます。

銀河データファイルは手で書いてもいいですが、同梱のツールで HyperLeda から取得できます。

動作環境

  • Python 3.6 以降
  • astropy
  • svgwrite

Anaconda 環境の場合 astropy は標準で入っています。svgwrite は 'conda install -c conda-forge svgwrite' でインストールしてください。

以下、コマンドライン操作についての記述は Linux 環境を例にしています。Windows, macOS 環境での操作については適宣読み替えてください。

アノテーション付き画像の生成

galaxy-annotator.py を使用します。

例:

python galaxy-annotator.py sample-galaxies.json sample-style.json test-data/test-wcs.fits test-data/test-in.jpg out.svg
  • sample-galaxies.json: 銀河データファイルです。
  • sample-style.json: スタイル設定ファイルです。
  • test-data/test-wcs.fits: test-data/test-in.jpg を Astrometry.net でプレートソルブした際に生成された wcs.fits です。
  • test-data/test-in.jpg: Astrometry.net に入力した元画像ファイルです。
  • out.svg: 出力先のSVGファイルです。

Web ではなくローカルにインストールした astrometry.net の solve-field コマンドでプレートソルブした場合は、拡張子 .wcs の出力ファイル(中身はFITS形式です)を第3引数に指定してください。

出力先のSVGファイルが既に存在する場合は以下のような上書き警告のプロンプトを表示します。

output file 'out.svg' exists. overwrite? > 

上書きする場合は yes をキャンセルする場合は no を入力してください。なお、コマンドラインで -f オプションを指定すると無警告で上書きします。

マーカーは銀河を囲む楕円形として描画されます。銀河の名前と説明文がその近くに描画されます。マーカーの色、名前や説明文のフォントや配置などはスタイル設定ファイルで指定できます(後述)。

出力されるSVG画像には元の画像(第4引数でしていしたもの)が埋め込まれます。SVGを扱うツールによっては元の画像が表示されない場合があります。

  • Inkscape では正しく表示でき、編集可能です。
  • Firefox, Chrome, Edge (Chromium版), PixInsight では正しく表示されました。
  • PixInsight でも正しく表示できるようです。
  • GIMP 2.8, Photoshop, eog (GNOMEの画像ビューア)では元画像が表示されませんでした。

ラスター画像(PNG)への変換

Inkscape で PNG にエクスポートできます。コマンドラインで変換も可能です。

inkscape out.svg -o out.png

Inkscape 以外のツールについては以下のような状況です。

  • cairosvg ではアノテーションのみの画像となって埋め込み画像が展開されませんでした。フォントは正常なようです。
  • svglib と reportlab.graphics による変換では renderPM.drawToFile() で Segmentation fault で落ちて出力に失敗しました。
  • ImageMagick の convert コマンドではアノテーションが一切描画されず埋め込み画像しか出力されませんでした。
  • SVGtoPNG (オンラインサービス https://svgtopng.com/ja/) では埋め込み画像が展開されませんでした。またサービス側にないフォントは使えません。

良いツール、または Python から使えるライブラリがあれば教えてください。

銀河データファイル

銀河データファイル(JSON)の書式は以下の通りです。これは同梱のスクリプトで HyperLeda のデータから生成することができます(後述)。

{
  "galaxies": [
    {
      "name": "PGC 1651721",
      "al2000": 12.9409511,
      "de2000": 21.5214739,
      "pa": 36.24,
      "logd25": 0.549,
      "logr25":  0.14,
      "descs": [
        "10億4200万光年"
      ]
    }
  ]
}
  • galaxies: 銀河のデータを記述したオブジェクトの配列です。
    • 銀河オブジェクト:
      • name: 銀河の名前です。

      • al2000: 銀河の赤経(J2000元期)です。単位は時。分以下は少数で表します。

      • de2000: 銀河の赤緯(J2000元期)です。単位は度。分以下は少数で表します。

      • pa: 銀河の長軸の傾きで、北から東向きに(反時計回りに)測った角度です。 単位は度。分以下は少数で表します。

      • logd25: 対数で表した銀河の視直径(長軸)です。 log(0.1分角単位の長軸の長さ)。視直径10分角なら2.0。

      • logr25: 対数で表した銀河の長軸と短軸の長さの比です。 log(長軸の長さ/短軸の長さ)。

      • descs: 説明文の行の配列です。配列要素は任意の文字列です。

al2000logr25 は HyperLeda の同名のカラムと同じものです。

上の銀河データファイルと sample-style.json で以下の出力が得られます。

銀河ごとのスタイルの指定

銀河オブジェクト内に設定項目 style を記述すると個別の銀河にだけ適用されるスタイルを指定出来ます。以下の例では NGC4826 のマーカーのサイズとラベルの配置と名前のフォントサイズを指定しています。スタイル設定の書式は後述するスタイル設定ファイルと同じです。

{
  "galaxies": [
    {
      "name": "NGC4826",
      "al2000": 12.9454673,
      "de2000": 21.6821044,
      "pa": 114.0,
      "logd25": 2.022,
      "logr25": 0.295,
      "descs": [
        "1440万光年"
      ],
      "style": {
        "marker": {
          "size": 1.1,
          "label-position": "middle-right",
          "label-vertical-align": "middle"
        },
        "name": {
          "font-size": 80
        }
      }
    },
    {
      "name": "PGC 1651721",
      "al2000": 12.9409511,
      "de2000": 21.5214739,
      "pa": 36.24,
      "logd25": 0.549,
      "logr25":  0.14,
      "descs": [
        "10億4200万光年"
      ]
    }
  ]
}

上の銀河データファイルと sample-style.json で以下の出力が得られます。

スタイル設定ファイル

スタイル設定ファイル(JSON)の書式は以下の通りです。

{
  "marker": {
    "stroke": "yellow",
    "stroke-width": 3,
    "stroke-opacity": 0.5,
    "size": 1.5,
    "min-r": 15,
    "x-margin": 4,
    "y-margin": 0
  },
  "name": {
    "font-size": 40,
    "font-family": "Ubuntu Mono",
    "fill": "yellow"
  },
  "desc": [
    {
      "font-family": "源真ゴシックP Light",
      "font-size": 40,
      "fill": "gray"
    }
  ]
}
  • marker: マーカー(銀河を囲む楕円)のスタイル設定です。
    • stroke: 線の色です。書式はCSSと同じです。
    • stroke-width: 線の太さです。単位はピクセルです。
    • stroke-opacity: 線の不透明度です。書式はCSSと同じです。
    • size: マーカーのサイズです。銀河の大きさ(logd25 から計算されるもの) の何倍かを指定します。
    • min-r: マーカーの最小半径です。単位はピクセルです。
    • x-margin: 名前ラベルとマーカーの間のX軸方向のマージンです。単位 はピクセルです。
    • y-margin: 名前ラベルとマーカーの間のY軸方向のマージンです。単位 はピクセルです。
  • name: 名前ラベルのスタイル指定です。
    • font-family: フォント名です。書式はCSSと同じです。
    • font-size: フォントサイズです。単位はピクセルです。
    • fill: 文字の色です。書式はCSSと同じです。
  • desc: 説明文のラベルのスタイル指定です。行毎のスタイルを指定するオ ブジェクトの配列です。
    • font-family: フォント名です。書式はCSSと同じです。
    • font-size: フォントサイズです。単位はピクセルです。
    • fill: 文字の色です。書式はCSSと同じです。

ラベルの配置について

マーカーに対するラベルの配置方法は設定項目 x-margin, y-margin, label-position, label-vertical-align で指定できます。詳細は、

を参照してください。

SVG のスタイルプロパティについて

スタイルプロパティを指定できるオブジェクトには、任意の SVG 1.1 のスタイルプロパティを指定することができます。SVG 1.1 のスタイルプロパティ名を名前、スタイルプロパティ値を値として指定します。値は通常文字列型(二重引用符でくくった値)として指定します。原則としてエラーチェックはせず、そのままSVGファイルのスタイルシートに出力します。

SVG 1.1 で値に長さ(<length>)を取りうるプロパティの値については、JSONの数値型で指定された値(例: 123)は px (ピクセル)単位の値(例: 123px)として出力します。JSONの文字列型で指定された値(例: '123')は単位識別子なしの値(例: 123)として出力するので注意してください。

font-size プロパティはマーカーラベルの位置計算に使うため特別で、必ず px 単位の数値を数値型で指定してください。数値型でない場合はエラーになります。

制限: font プロパティで指定したフォントサイズはマーカーラベルのレイアウトに反映されません。フォントサイズは必ず font-size プロパティで指定してください。

マーカーのサイズについて

markersize プロパティは銀河の視直径に対してマーカーを何倍の大きさで描画するかを指定しますが、銀河の大きさによらず一定の倍率で描画するとマーカーが大きくなりすぎる場合があります。

その場合は min-size, min-size-r プロパティを指定します。これらを指定するとマーカーのサイズは半径が min-r の銀河に対しては size 倍になりますが、半径が min-size-r の銀河に対しては min-size 倍になるように、倍率をリニアに変化させます。倍率は min-size が最小でそれ以下にはなりません。

銀河情報ファイルの生成

同梱のスクリプトを使って、HyperLeda のデータから銀河情報ファイルを生成する方法を説明します。

VOTABLE 形式(XML)のデータの取得

以下は leda-get-votable.py を使って wcs.fits から画像の写野を読み取ってその範囲に存在する銀河のデータを HyperLeda から取得する例です(現在はミラーサイトを使うようにしています)。

python leda-get-votable.py test-data/test-wcs.fits votable.xml

第1引数には Astrometry.net の出力した wcs.fits を指定します。結果は第2引数で指定した votable.xml に保存されます。第2引数を省略した場合は標準出力に表示されます。

保存先のファイルが既に存在する場合は galaxy-annotator.py と同様の上書き警告のプロンプトが表示されるので、上書きする場合は yes を、キャンセルする場合は no を入力してください。なお、-f オプションを指定すると無警告で上書きします。

写野が広く HyperLeda での検索対象となる銀河が多すぎて応答がなかなか返らない場合は、 -m オプションで最大等級を指定して検索対象を制限します。-m 10 なら 10 等までの銀河のデータだけを取得します。

VOTABLE 形式(XML)からの銀河情報ファイルの生成

以下は leda-votable-to-galaxy.py を使って、上で取得した votable.xml から銀河情報ファイルを生成する例です。

python leda-votable-to-galaxy.py votable.xml galaxies.json

結果は第2引数で指定した galaxies.json に保存されます。第2引数を省略した場合は標準出力に表示されます。

保存先のファイルが既に存在する場合は galaxy-annotator.py と同様の上書き警告のプロンプトが表示されるので、上書きする場合は yes を、キャンセルする場合は no を入力してください。なお、-f オプションを指定すると無警告で上書きします。

以下は -m オプションを指定して 17.5 等より明るい銀河のみを銀河情報ファイルに出力しています。

python leda-votable-to-galaxy.py -m 17.5 votable.xml galaxies-17_5.json

-m オプションを指定した場合、votable.xml に等級のデータがない天体があると以下のようにエラーになります。

python leda-votable-to-galaxy.py -m 17 -d -j M83-votable.xml M83-galaxies.json
no magnitude data for '6dFJ1335298-295039'.

等級データのない天体をスキップする場合は -s オプションを、等級データのない天体を出力に含める場合は -i オプションを指定してください。

python leda-votable-to-galaxy.py -m 17 -s -d -j M83-votable.xml M83-galaxies.json

銀河名が複数ある場合、銀河情報ファイルの name (銀河名)に出力される名前はデフォルトで、メシエ番号("M31"等)、NGC番号("NGC2903"等)、IC番号("IC815A"等)、PGC番号("PGC1399872"等)、objnameの表記+PGC番号("UGC02838(PGC13696)"等)の優先順位で選択されます。

銀河名の優先順位は --resolve-order オプションで変更できます。オプション引数には M,NGC,IC,PGC を優先順にカンマで区切って列挙した文字列を指定します。以下は NGC を最優先にして、NGC,IC番号がない場合には M,PGC番号があっても objname 表記を出力する例です。

python leda-votable-to-galaxy.py -m 17 -s -d -j --resolve-order NGC,IC M83-votable.xml M83-galaxies.json

距離情報を含んだ銀河情報ファイルの生成

leda-votable-to-galaxy.py-d オプションを指定すると距離情報(Gly (ギガ光年)表記の光路距離)を説明文として付加した銀河情報ファイルに出力します。以下は 17.5 等より明るい銀河のみを、距離情報付きで出力する例です。

python leda-votable-to-galaxy.py -m 17.5 -d votable.xml galaxies-17_5-d.json

以下は -j オプションを追加して距離情報を日本語表記(光年)で出力する例です。

python leda-votable-to-galaxy.py -m 17.5 -d -j votable.xml galaxies-17_5-d-ja.json

距離は有効桁数(デフォルトで3桁)の一つ下の桁を四捨五入した値で出力します。-p オプションで任意の有効桁数を指定できます。以下は4桁にする例です。

python leda-votable-to-galaxy.py -m 17.5 -d -j -p 4 votable.xml galaxies-17_5-d-ja-p4.json

距離情報は HyperLeda のデータに光度距離情報(mod0)があればそれを光路距離に変換して出力します。距離の近い銀河については通常この方式で計算されます。

光度距離情報がない銀河については赤方偏移から計算された視線速度情報(v)があればそこから宇宙モデルを元に光路距離を計算して出力します。距離の遠い銀河については通常この方式で計算されます。

光度距離情報も視線速度情報もない銀河については距離は出力しません。

光度距離情報がなく、視線速度がマイナスの銀河については距離が計算できないため、距離は出力せず、警告をコンソールに出力します。--show-negative-redshift オプションを指定するとこのような銀河について、距離のかわりに赤方偏移(z)の値を出力します。

距離情報の「光年」の意味について

距離情報として出力される値は「光路距離」です。光路距離は、天体から発した光が X 年かかって現在の地球に届いた場合の距離を X 光年とするもので、「光年」の一般的な定義の一つです。光が届くまでの間に宇宙そのものが膨張を続けているため、天体から光が発した時点での天体と地球の間の距離や、今現在の時点での天体と地球の間の距離とは異なる値になることに注意してください。

赤方偏移とは独立に測定された「光度距離」(光の明るさが距離の2乗に反比例して暗くなるものとして定義した距離)のデータのある近距離の銀河についてはそのデータ(mod0)を光路距離に変換したものを、光度距離データのない遠方の銀河については赤方偏移で測定された視線速度データ(v)を元に光路距離を算出したものを出力しています。

光路距離の計算には、宇宙モデルとしてはΛ-CDMモデルを、宇宙論パラメータとしては H0 = 67.3 km/s/Mpc、Ωm = 0.315、ΩΛ = 0.685 を使用しています(これらは国立天文台が一般向けに遠方天体の距離に言及する際に使用しているものです)。

更新履歴

  • v0.9.4: 仕様変更、機能追加版
    • leda-votable-to-galaxy.py が出力する name の仕様を変更
      • v0.9.3 以降の leda-get-votable.py で取得した votable.xml が必要になった。
      • 銀河名が複数ある場合はメシエ番号、NGC番号、IC番号、PCG番号、objnameの表記+ 括弧書きのPGC番号、の優先順位で選択して出力するようにした。
      • 名前の番号部分の冒頭の 0 を出力しないようにした。
    • leda-votable-to-galaxy.py に name に出力する銀河名の優先順位を指定する オプション --resolve-order オを追加した。
  • v0.9.3: 不具合修正、機能追加版
    • fixed: #17 写野に極が入る場合、leda-get-votable.py のSQLクエリの座 標範囲指定がおかしくなるはず
    • fixed: #16 写野が 0h を跨ぐ場合、leda-get-votable.py で写野内にあ るはずの銀河のデータが取得されない
    • leda-get-votable.py の -m オプションで取得する銀河データを最大等級 で制限できるようにした。
  • v0.9.2: 不具合修正版
    • fixed: #14 galaxy.json で style を指定すると NameError になることがある
    • fixed: galaxies.json で特定の銀河に指定したスタイルが意図しない銀河に影響する
    • いずれも galaxy-annotator.py の修正で、votable.xml の再取得や galaxies.json の再生成は必要ない。
  • v0.9.1: 不具合修正版
    • fixed: 元画像によってはうまくいかないことがある? #12
      • leda-votable-to-galaxy.py で votable に光度距離情報がなく視線速 度が負の銀河がある場合にエラーにならないようにした(警告表示のみ)。
      • leda-votable-to-galaxy.py に --show-negative-redshift オプショ ンを追加した。
  • v0.9: スタイル設定機能の強化
    • fixed: 大きな銀河のマーカーのサイズが大きすぎる #8
      • style.json の markermin-size プロパティと min-size-r プロパティを追加した。
        • min-size はマーカーの倍率の最小値。
        • マーカーの倍率が銀河の(長)半径に応じて、半径 min-rsize 倍、半径 min-size-rmin-size 倍にリニアに変化する。
        • min-size プロパティと min-size-r を省略した場合は銀河の半 径によらず常に倍率ば size 倍。
    • fixed: style.json で任意のスタイル付けプロパティが指定できるように してほしい #2
      • スタイルプロパティは何でも素通し。原則エラーチェックなし。
        • SVG 1.1 で長さ(length)を取りうるプロパティについてはJSONの数値 型で指定された値は px 単位の指定とみなす。
        • '128' のような文字列型の値は単位識別子なしの長さの指定とみなす。
        • font-size は数値型以外エラー。
        • font プロパティのフォントサイズ指定はラベルのレイアウトに反映 されない(制限)
    • fixed: 銀河毎に個別にスタイルを指定したい #9
      • 銀河オブジェクトの "style" プロパティ内にスタイル設定を指定すると個 別の図形の style 属性としてスタイルプロパティを設定するようにした。
    • desc のスタイルプロパティに line-height を追加した。複数行 desc を 描画するとフォントによって行間が詰まりすぎるため。
    • fixed 文字の表示位置を変更したい #3
      • marker のスタイルに label-position = ( top-left | top-middle | top-right | middle-left | middle-middle | middle-right | bottom-left | bottom-middle | bottom-right ) を追加。マーカーを 囲む矩形のどの点(頂点、辺の**、中心点)を基準にラベルを配置する かを指定するもの。
        • 文字が重ならないように文字列は -left は右寄せ、-right は左寄 せ。また、*-middle は**寄せ。
      • marker のスタイルに label-vertical-align = ( auto | baseline | top | middle | bottom ) を追加。ラベルの矩形(name, descs を囲む 矩形)のどの位置を label-position で指定した基準点に合わせるかを 指定するもの。
        • auto では top-middle, bottom-middle で文字がマーカーに重ならな いように、それぞれ bottom, top としてレイアウトする(他は baseline)。
      • 従来のラベルの配置は label-position = top-right, label-vertical-align' = auto (または baseline)。
  • v0.8: 不具合修正, 距離情報の精度向上
    • fixed: 100万光年未満の銀河の距離が「光年」または「0.000 Gly」になる #7
    • leda-votable-to-galaxy.py の仕様変更:
      • 近距離の銀河の距離の計算方法を改善(fixed #6)
        • 赤方偏移以外の方法で測定された距離情報(mod0)がある場合はそれを利 用するようにしました。
        • v0.7 以前と同じ計算方法にするには、互換性オプション --distance-calculation-compatibility を指定します。
      • leda-votable-to-galaxy.py: 距離の有効桁数を固定するようにしました。
        • 有効桁数を指定する -p オプションを追加。
        • v0.7 以前と同じ有効桁の扱い(遠い銀河でも100万光年の桁まで出す) を再現するには、互換性オプション --distance-precision-compatibility を指定します。
  • v0.7: Windows 環境への対応
    • Windows の Anaconda 環境で動作するようにした。
    • fixed: Windows の Anaconda 環境(PowerShell)でリダイレクトで保存したファイルの文字コードがUTF-8にならない #4
    • fixed: 日本語Windows環境で galaxy-annotator.py がJSON読み込みエラー #5
  • v0.6: bug fix
    • fixed: leda-votable-to-galaxy.py で -m オプションを指定すると TypeError: float() argument must be a string or a number, not 'NoneType' #1
  • v0.5: 最初のリリース

告知、開発状況等

Galaxy Annotator に関する告知や開発状況については https://rna.hatenablog.com/archive/category/galaxyannotator を参照してください。

ライセンス

MIT ライセンスです。

Copyright 2021-2024 Ryosuke Nanba <https://github.com/rnanba>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

galaxyannotator's People

Contributors

rnanba avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

galaxyannotator's Issues

galaxies.json で特定の銀河に指定したスタイルが意図しない銀河に影響する

v0.9.1 で galaxies.json で特定の銀河のスタイルでマーカーに指定した label-position が、後続の他の銀河のマーカーの名前のラベルの表示に影響を与える。

galaxies.json

{
  "galaxies": [
    {
      "name": "NGC4826",
      "al2000": 12.9454673,
      "de2000": 21.6821044,
      "pa": 114.0,
      "logd25": 2.022,
      "logr25": 0.295,
      "descs": [
        "1440万光年"
      ],
      "style": {
        "marker": {
          "label-position": "top-left"
        }
      }
    },
    {
      "name": "PGC 1651721",
      "al2000": 12.9409511,
      "de2000": 21.5214739,
      "pa": 36.24,
      "logd25": 0.549,
      "logr25":  0.14,
      "descs": [
        "10億4200万光年"
      ],
      "style": {
        "name": {
          "fill": "red"
        }
      }
    }
  ]
}

リポジトリのサンプル sample-style.json, test-data/test-wcs.fits, test-data/test-in.jpg を使用して、以下を実行する。

./galaxy-annotator.py galaxies.json sample-style.json test-data/test-wcs.fits test-data/test-in.jpg out.svg

期待値

NGC4826 のラベルは左上に表示され、PGC 1651721 のラベルは名前が赤くなる以外は style.json に従い右上に表示される。

expected-out

結果

PGC 1651721 のラベルの名前だけ左上に表示されてしまう。正確には右上用のラベルの基準位置にラベルの右端が揃えられてしまう(本来はラベルの左端を揃える)。

out

100万光年未満の銀河の距離が「光年」または「0.000 Gly」になる

leda-votable-to-galaxy.py の距離表示で、100万光年の桁以下を一律四捨五入しているので100万光年未満の銀河の距離が正しく表示されず「0.000 Gly」あるいは -j オプション使用時は「光年」になってしまう。

100万光年未満の銀河としては大マゼラン雲(PGC17223)があるが、視線速度から距離を計算すると1400万光年になるため実際にはこの不具合は発現しない。

プロジェクトファイルで引数を指定する機能が欲しい

各スクリプトに渡す引数を一括して管理できるプロジェクトファイルを用意し、それだけ指定したら自動的に足りないファイルをスクリプトで生成するスクリプトが欲しい。画像や中間ファイルの管理が煩雑で面倒。

写野に極が入る場合、leda-get-votable.py のSQLクエリの座標範囲指定がおかしくなるはず

leda-get-votable.py でSQLクエリのWHEREにしている赤経赤緯の範囲指定の計算で、写野に極が含まれる場合を考慮していない。

leda-get-votable.py では単純に四隅の座標の赤経・赤緯の min, max を取っているが、それだと写野に極がある場合は極付近等に範囲に入らない部分が出てくる。本来は赤経の範囲は 0h 〜 24h (全周)、赤緯の範囲は写野に北極がある場合は四隅の赤緯の最小値 〜 90度、写野に南極がある場合は -90度 〜 四隅の赤緯の最大値、になるはず。

大きな銀河のマーカーのサイズが大きすぎる

マーカーのサイズは style.jsonsize プロパティで銀河のサイズに対する倍率の形で指定するが、小さな銀河に合わせて大きめの size を指定すると(1.5など)、主題の大きな銀河のマーカーが大きくなりすぎてしまい、画面からはみ出てしまうことがある。マーカーが大きすぎるとラベルの位置も銀河から離れすぎてわかりづらくなる。

銀河毎に個別にスタイルを指定したい

style.json による一括指定とは別に銀河毎に個別のスタイル指定ができるようにして欲しい。画像の端で切れているラベルの位置調整や、ラベル同士で衝突して読めないラベルの位置やサイズの調整を SVG エディタを使わずにできてほしい。
SVGエディタでの調整は style.json を調整してSVGを再作成するとやり直しになってしまうので galaxies.json 等で記述できるのが望ましい。

galaxy.json で style を指定すると NameError になることがある

v0.9.1 で以下のような galaxies.json を指定すると NameError: name 's_label_position' is not defined. Did you mean: 'def_label_position'? が発生してエラーで終了する。

例1

galaxies.json:

{
  "galaxies": [
    {
      "name": "NGC4826",
      "al2000": 12.9454673,
      "de2000": 21.6821044,
      "pa": 114.0,
      "logd25": 2.022,
      "logr25": 0.295,
      "descs": [
        "1440万光年"
      ],
      "style": {
        "name": {
          "fill": "red"
        }
      }
    }
  ]
}

エラー:

Traceback (most recent call last):
  File "/archive/rna/tmp/GalaxyAnnotator/./galaxy-annotator.py", line 269, in <module>
    if not('text-anchor' in s['name']) and s_label_position:
                                           ^^^^^^^^^^^^^^^^
NameError: name 's_label_position' is not defined. Did you mean: 'def_label_position'?

例2

galaxies.json:

{
  "galaxies": [
    {
      "name": "NGC4826",
      "al2000": 12.9454673,
      "de2000": 21.6821044,
      "pa": 114.0,
      "logd25": 2.022,
      "logr25": 0.295,
      "descs": [
        "1440万光年"
      ],
      "style": {
        "desc": [
          {
            "fill": "red"
          }
        ]
      }
    }
  ]
}

エラー:

Traceback (most recent call last):
  File "/archive/rna/tmp/GalaxyAnnotator/./galaxy-annotator.py", line 275, in <module>
    if not('text-anchor' in desc) and s_label_position:
                                      ^^^^^^^^^^^^^^^^
NameError: name 's_label_position' is not defined. Did you mean: 'def_label_position'?

Anaconda3 の最新版の環境で leda-votable-to-galaxy.py が動作しない

Anaconda3-2023.07-2 をインストールした環境で leda-votable-to-galaxy.py が「ValueError: Use of bounds is incompatible with 'method=Brent'.」で異常終了する。

Traceback (most recent call last):
  File "/home/rna/Projects/GalaxyAnnotator/leda-votable-to-galaxy.py", line 100, in <module>
    z = z_at_value(cosmo.luminosity_distance, ld)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rna/anaconda3_2023/lib/python3.11/site-packages/astropy/cosmology/funcs.py", line 358, in z_at_value
    zs[...] = _z_at_scalar_value(func, fv * unit, zmin=zmn, zmax=zmx,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rna/anaconda3_2023/lib/python3.11/site-packages/astropy/cosmology/funcs.py", line 79, in _z_at_scalar_value
    res = minimize_scalar(f, method=method, bounds=(zmin, zmax),
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rna/anaconda3_2023/lib/python3.11/site-packages/scipy/optimize/_minimize.py", line 887, in minimize_scalar
    raise ValueError(message)
ValueError: Use of `bounds` is incompatible with 'method=Brent'.

日本語Windows環境で galaxy-annotator.py がJSON読み込みエラー

日本語Windowsで galaxy-annotator.py にサンプルの json ファイルを指定して実行すると以下のエラーが発生する。

Traceback (most recent call last):
  File ".\galaxy-annotator.py", line 20, in <module>
    galaxies = json.load(f)
  File "C:\Users\nanba\anaconda3\lib\json\__init__.py", line 293, in load
    return loads(fp.read(),
UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 212: illegal multibyte sequence

近距離の銀河の距離表示を mod0 で計算して欲しい

leda-votable-to-galaxy.py の -d オプションで、1億光年以下の近距離の銀河の距離表示の精度が悪いので、HyperLeda に mod0 がある銀河なら mod0 から計算できる光度距離を表示したほうがよいのではないか。mod0 は赤方偏移と独立に測定された距離を元にしているので精度がよいはず。

写野が 0h を跨ぐ場合、leda-get-votable.py で写野内にあるはずの銀河のデータが取得されない

M31付近を中望遠で撮った写真の wcs.fits を leda-get-votable.py に渡して銀河のデータを取得すると、M31 のデータが入っていなかった。

矩形の頂点の座標が、以下の時、

top-left: 1.6886829535187702, 30.367468713549176
bottom-right: 23.956642040157973, 39.29991228113341
bottom-left: 0.8618865859973092, 24.05345124489381
top-right: 0.8848739783242575, 47.058537285933326

HyperLeda に問い合わせるSQLクエリの WHERE が以下のようになっていた。

al2000<23.956642040157973 and al2000>0.8618865859973092 and de2000<47.058537285933326 and de2000>24.05345124489381 and objtype='G'

WHERE の赤経の範囲指定は、以下のようになるべき(最小値は bottom-right の赤経から 24h 引いた値)。

al2000<1.6886829535187702 and al2000>-0.04335795984202662

leda-votable-to-galaxy.py で -m オプションを指定すると TypeError: float() argument must be a string or a number, not 'NoneType'

leda-get-votable.py で取得したM83周辺のデータから17等以下の銀河を抽出するため -m 17 オプションを指定したところ以下のようにエラーが発生しました。

$ ./leda-votable-to-galaxy.py -m 17 -d -j work/M83-20210315-stretch-2-16bit-starless-wavelet+star-votable.xml > work/M83-20210315-stretch-2-16bit-starless-wavelet+star-galaxies.json
Traceback (most recent call last):
File "./leda-votable-to-galaxy.py", line 42, in
if float(it) > options.max_mag:
TypeError: float() argument must be a string or a number, not 'NoneType'

入力した votable: M83-20210315-stretch-2-16bit-starless-wavelet+star-votable.xml.txt

元画像によってはうまくいかないことがある?

wcs.fitsを得た元画像によって、votable.xmlを得る時に

WARNING: FITSFixedWarning: The WCS transformation has more axes (2) than the image it is associated with (0) [astropy.wcs.wcs]

と警告が出て、 leda-votable-to-galaxy.pyの実行時にエラーがでて上手くいかないことがありました、

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.