astroquery で検索し、fits画像を保存したい
astroquery
手始めにastroqueryで自分の欲しいデータや天体を調べる。使い方は python の astroquery を用いた宇宙天文カタログの検索と銀河を用いた簡単なプロット方法 を参照。
名前の変更
Skyviewは NGC は "N" だけでは判別できないのであるが、カタログによっては、NGCは省略してNだけの場合も多い。下記では、NをNGC, IをICに変更して名前のリストを生成している。
skyview
astroquery の skyview は、https://astroquery.readthedocs.io/en/latest/skyview/skyview.html にある画像を提供している。ここでは、X線はRosatのHRIの画像、可視はDSSの画像をダウンロードして、fitsに保存する例を示す。
サンプルコード
ここでは、http://vizier.u-strasbg.fr/viz-bin/VizieR-3?-source=J/ApJS/80/531/gxfluxes にあるAn X-ray catalog and atlas of galaxies. (Fabbiano+, 1992) を参考例として示す。
#!/usr/bin/env python
from astroquery.vizier import Vizier
v = Vizier(catalog="J/ApJS/80/531/gxfluxes",columns=['Name',"logLx","Bmag","dist","type"],row_limit=-1)
data = v.query_constraints()
sname = data[0]["Name"]
namelist = []
olist=["HRI","DSS"]
def save(p,name,obs):
for onep,oneo in zip(p,obs):
onep.writeto(name+"_"+oneo+".fits",overwrite=True)
for one in sname:
name=one.strip().split()[0]
name=name.replace("N","NGC").replace("I","IC")
namelist.append(name)
from astroquery.skyview import SkyView
for i,name in enumerate(namelist):
print(i,name)
try:
paths = SkyView.get_images(position=name, survey=olist)
save(paths,name,olist)
except:
print("..... ERROR ",i,name)
プロット方法
こうしてダウンロードしたfits画像をプロットする方法は、
pythonを用いて銀経銀緯で複数のfits画像を並べてプロットする方法 にまとめた。ds9などの天文ツールでもよいが、バッチ処理はds9だと面倒なことが多い。
応用編
超新星残骸のイメージを取得する方法
データベースは、https://vizier.u-strasbg.fr/viz-bin/VizieR?-source=VII/272 の A catalogue of Galactic supernova remnants (Green, 2014) A catalogue of Galactic supernova remnants (Green, 2014) が最新のようなので、これを用いる。
コードと注意点
基本的に上と同じであるが、SkyView の positon に与える名前はSIMBADかNEDで認識される名前である必要があるため、例えば、 G016.2-02.7 だけではダメで、その前に SNR をつけないといけない。
そのほかは、遠方銀河のX線と可視光の場合は、視直径がだいたい揃っているが、超新星残骸は系内天体なので、視直径のばらつきが大きいので、下記のままでは最適なイメージの自動取得とは言えない(どこかで改定予定。)。
#!/usr/bin/env python
from astroquery.vizier import Vizier
v = Vizier(catalog="VII/272/snrs",columns=["SNR","type","S","Names"],row_limit=-1)
#https://vizier.u-strasbg.fr/viz-bin/VizieR?-source=VII/272
#A catalogue of Galactic supernova remnants (Green, 2014) A catalogue of Galactic supernova remnants (Green, 2014)
data = v.query_constraints()
sname = data[0]["SNR"]
namelist = []
olist=["HRI","DSS","Fermi 5"]
def save(p,name,obs):
for onep,oneo in zip(p,obs):
onep.writeto(name+"_"+oneo+".fits",overwrite=True)
for one in sname:
name=one.strip().split()[0]
namelist.append(name)
from astroquery.skyview import SkyView
for i,name in enumerate(namelist):
print(i,name)
try:
paths = SkyView.get_images(position="SNR " + name, survey=olist)