天文データ形式であるfitsファイルを、機械学習などでよく用いられるndarrayのバイナリファイルに変換します。
.fits→.npy
fits_to_npy.py
import numpy as np
import argparse
from astropy.io import fits
parser = argparse.ArgumentParser(description='convert fits to npy')
parser.add_argument('--source_path', type=str, required=True)
parser.add_argument('--file_name', type=str, required=True)
args = parser.parse_args()
fits_data = fits.open(args.source_path)
image_data = np.array(fits_data[1].data)
image_data = image_data[..., np.newaxis]
np.save(args.file_name, image_data)
実行例
python fits_to_npy.py --file_name=aia.npy --source_path=aia.lev1_euv_12s.2015-01-01T000049Z.211.image_lev1.fits
fitsファイルの読み込みにはastropy.io
を使っています。
また、機械学習ではwidth*height*channel
というデータ構造がとられることが多いため、12行目でチャンネルの次元を追加しています。opencv
などで画像化する分にはこの行はあってもなくても変わらないと思います。