pythonで大量に天文画像データを確認するためのコード

前記事 のスクリプト全体像

大量の2次元画像fitsファイルを確認したいときに使うスクリプト。
確認したいデータのディレクトリのファイルのリストを作ってくれて、
1枚ずつ表示してくれて、
オッケーかオッケーじゃないか聞いてくれて、
オッケーじゃないやつのファイル名のリストを作ってくれる。

defとか使えないのでmainだけのダサいスクリプトですが許してください。

使用するときには、確認したいデータのあるディレクトリのフルパスをdir_dataに突っ込んでください。
python2.7での使用を想定しています。
使えなかったり、変なところがあったらコメントください。

###使い方###
確認したいデータが/home/dir/にあるとき
python hoge.py(下のスクリプトのファイル名) 0
(確認を例えば9番目を終えたところで中断して、10番目から再開したいときは0を10にする)



#####################
dir_data='/home/dir/'
#####################

#--- packages ---#
import matplotlib.pyplot as plt
import scipy.optimize #今回不使用
import numpy as np
import os as os #今回不使用
import aplpy #今回不使用
import sys
import csv
import scipy #今回不使用
from astropy.utils.data import get_pkg_data_filename #たぶん不使用
from astropy.visualization import astropy_mpl_style 
from reproject import reproject_interp #今回不使用
from astropy.wcs import WCS #今回不使用
from astropy.io import fits 
from rebin import rebin #今回不使用
from glob import glob 
import datetime #今回不使用
plt.style.use(astropy_mpl_style)
#ここら辺は私がfitsファイルをいじる時に使っているパッケージを
#コピペしたので、使わないのも入っています。

#--- make file list ---#
#dir_dataの中のお尻に.fitsがついているデータを確認したいとき
list_data=glob(dir_data+'*.fits')
list_data.sort()

data_number=np.shape(list_data)[0]

print('data_number = ',data_number)#対象データ数を表示
nn=0
#--- start roop ---#
start_number=int(sys.argv[1])
for i in range(start_number,data_number):
    data_name=list_data[i].split('/')
    print('##################')
    print('                  ')
    print(nn, '/',data_number)
    print('                  ')
    print('##################')
    #--- read fits ---#
    #fitsファイルを開く
    data=fits.open(list_data[i])
    img=data[0].data
    head=data[0].header
    #--- plot ---#
    plt.ion()
    plt.imshow(img)
    plt.grid(False)
    plt.draw()
    confirm=True if raw_input('OK? (y or n): ')=='y' else False
    plt.pause(0.05)
    if confirm==True:
        pass
    if confirm==False:
        #confirm.csvというファイルを勝手に作成して、"n"になったファイル名を勝手に記録
        with open(dir_data+'confirm.csv','a') as f:
            a=[data_name[-1],nn]
            writer=csv.writer(f)
            writer.writerow(a)
        f.close()
    nn=nn+1

コメント

このブログの人気の投稿

TypeError: ufunc 'bitwise_xor' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

overleafで画像が表示されない!

エラー: ""C:\U" で始まる文字列の中で 8 進文字なしに '\U' が使われています