eyecatch thumbnail

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

Profile picture
Takeru Yamada
2020.07.30

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 が撮像した画像をサンプルとして使います。 lir20151207052704picl2c_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

愛用品

  • Xiser Pro Trainer
    1日中踏み続けられる強靭なステッパーでおすすめです.
  • HHKB Professional 墨 x HHKB キートップセット 白
    ボディは墨色キートップは白色なのでめちゃめちゃ目に優しいのでおすすめです.
  • Apple Magic Mouse 2
    トラックパッドは指が攣りそうになりますけどマウスはその心配が無いのでおすすめです.
  • Apple MacMini
    ミニマルでパワフルなデスクトップ PC なので個人的に大好きなのでおすすめです.
  • iiyama Display 27inch FullHD
    鮮明すぎない画面で目も疲れにくいですし何より高さ調節できるのが最高なのでおすすめです.
  • KINTO UNITEA 550ml
    500ml の大容量でこの綺麗なデザインは他にみたことがないのでおすすめです.

関連記事