製作した分光器のデータは、デフォルトではテキストファイルに保存される。フォーマットは、
#Data from the TCD1304 linear CCD
#column 1 = pixelnumber , column 2 = pixelvalue
#Pixel 1-32 and 3679-3694 and are dummy pixels
#SH-period: 100 ICG-period: 2000000 Integration time: 50.0 µs
1 1027
2 411
3 561
・・・・
・・・・
3692 1030
3693 1034
3694 1030
というふうになっている。CSV ファイルの形式でコラムごとの値が ASCII 形式となっている。これをEXCEL や GNUplot などで処理するようにしている。これでは、波長のキャリブレーションなどが不便なので天文画像データの一般的なフォーマットである FITS 形式で保存できるようにした。
FITS フォーマットの詳細については、こちらの「FITS の手引き」を参考に。
また、PC側のソフトは Python で書かれているので、
www.astropy.orgのパッケージを使うことができる。ドキュメントは詳細に書かれているが、なにぶん英語であり、複雑なデータでもない。シンプルに取り込んだデータを FITS ファイルを生成するサンプルとして、
qiita.comを参考にした。
Anaconda3 の Python(Spyder3)では、最初から Astropy のパッケージがインストールされているので、
from astropy.io import fits
と記述するだけで使うことができる。
FITS ヘッダーを定義して、ファイル書き込みのところだけのソースは、
def savefile(self):
filename = filedialog.asksaveasfilename(defaultextension=".FITS", title="Save file as",
parent=self)
try:
# for i in range (3694):
for i in range (3694):
LineImage[i] = config.rxData16[i]
hdu = fits.PrimaryHDU(data = LineImage)
hdu.header['BITPIX'] = 16
hdu.header['NAXIS'] = 1
hdu.header['NAXIS1'] = 3695
hdu.writeto(filename,overwrite=True)
except IOError:
messagebox.showerror("By the great otter!","There's a problem saving the file.")
というふうに。
これを BASSproject で読み込んで波長をキャリブレーションすると
こんなふうに波長の表示できる。
このように生成した FITS ファイルだが、一次元画像のせいか、Header が間違っているのか FITS ファイルが処理できるいくつかの ソフトでは、読み込むことができなかった。Makalii では読み込むことはできて、ヘッダーも表示されるが、グラフを表示させようとすると、範囲を選択できず表示できない。2次元画像処理を前提にしているせいだろうか。
ちなみに、fv FITS Viewer
heasarc.nasa.govではこのようにきちんと表示される。
なんとか動いているようなので、あまり深追いせずに使えるソフトを使っていくことに。