typememo.jp

Python fits read – Python で fits ファイルを読み込む方法

2020.07.30

#tech#fits#python

Contents


はじめに

Python astropy を使った fits ファイルの読み込みについての紹介です。

astropy のインストール

astropy をインストールには、conda もしくは pip でインストールします。

▶ pip install astropy
# or
▶ conda install astropy

サンプルコード全文

本記事で実装したサンプルコードです。

import os
import matplotlib.pyplot as plt
from astropy.io import fits
# --------------------------------------------------
# Define
# --------------------------------------------------
r_dir = "$HOME/Downloads/"
r_file = "lir_20151207_052704_pic_l2c_v10.fit"
ext_number = 1 # extname: LIR-LEVEL2c
color_table = "gist_heat"
min_value = 210
max_value = 235
tick_interval = 5
# --------------------------------------------------
# Main
# --------------------------------------------------
def main():
# --------------------------------------------------
# Search file
# --------------------------------------------------
f_fits = os.path.expandvars(r_dir + r_file)
# --------------------------------------------------
# Read fits
# --------------------------------------------------
fits.info(f_fits)
img_fits = fits.getdata(f_fits, ext=ext_number)
plt.figure()
plt.imshow(img_fits,
cmap=color_table,
vmin=min_value,
vmax=max_value)
plt.colorbar(ticks=range(min_value,
max_value + 1,
tick_interval))
plt.show()
# --------------------------------------------------
# Run
# --------------------------------------------------
if __name__ == '__main__':
main()

astropy から fits モジュールをインポートする

from astropy.io import fits

fits ファイルを処理できるモジュールは astropy.io.fits です。 python でモジュールを使うためには import する必要があります。

適当な fits ファイルをダウンロードする

本記事では 金星探査機あかつき に搭載されている中間赤外カメラ LIR が撮像した画像をサンプルとして使います。 lir_20151207_052704_pic_l2c_v10.fit をダウンロードしてください。 ダウンロードしたら適当なディレクトリに保存してください。

本記事では、$HOME/Downloads/ に保存されていると仮定します。

fits ファイルを読み込む

import os
from astropy.io import fits
r_dir = "$HOME/Downloads/"
r_file = "lir_20151207_052704_pic_l2c_v10.fit"
def main():
...
f_fits = os.path.expandvars(r_dir + r_file)
img_fits = fits.getdata(f_fits, ext=ext_number)

fits ファイルを読み込むには fits.getdata() メソッドを使います。 詳細な使い方については、astropy 公式ドキュメント をご覧ください。

matplotlib で描画する

plt.figure()
plt.imshow(img_fits,
cmap=color_table,
vmin=min_value,
vmax=max_value)
plt.colorbar(ticks=range(min_value,
max_value + 1,
tick_interval))
plt.show()

読み込んだ fits データを描画するために、matplotlib ライブラリを使います。

プログラム実行後、次の画像が出力されていれば OK です。

figure-sample-fits-image

おわりに

python で fits ファイルを読み込む方法についての紹介でした。

参考文献は、サンプルコードの中に埋め込んであります。 astropymatplotlib ライブラリの詳しい使い方は、公式ドキュメントをお読みください。

IDL (Interactive Data Language) という解析ツールを使って、研究している方は、この際 python に乗り換えてみてはいかがでしょうか? 仕事の幅が格段に広がると思いますので、ぜひ検討してみてください。

最後まで、お読みいただきありがとうございました。

References


山田 武尊 / 立教大学(理学) / ACCESS CO LTD