私の問題の解決策を見つけることができましたが、できませんでした。私はFITSのデータキューブを持っているので、PyFITSでそれを切り抜く必要があります。私のスクリプトでそれを行うと、最終的に2次元のフィット画像が表示されます。第1の次元はエネルギーであり、第2および第3は経度および緯度である。クロップFITSデータキューブ画像からPyFITS
私のスクリプトは以下の通りです:
#!/usr/bin/env python
import pyfits
import os
import sys
def CropFitsFile(src, dst, xs, xe, ys, ye):
fh = pyfits.open(src)
for eng in range(0,2):
img = fh[0].data[eng,ys:ye,xs:xe]
header = fh[0].header
newfh=pyfits.PrimaryHDU(data=img,header=header)
if os.path.exists(dst):
os.remove(dst)
newfh.writeto(dst)
if __name__ == "__main__":
CropFitsFile(
src=sys.argv[1],
dst=sys.argv[2],
xs=int(sys.argv[3]),
xe=int(sys.argv[4]),
ys=int(sys.argv[5]),
ye=int(sys.argv[6])
)
問題であり、正確には何?これは多かれ少なかれよく見えます。いくつかの小さなメモでは、 'pyfits'は非難され、代わりに' astropy.io.fits'を使うべきです(インポート以外のコードの変更は必要ありません)。また、 'wrtieto'メソッドには既に既存のファイルを上書きする機能が組み込まれています(' clobber'オプション)。そのために特別なコードは必要ありません。しかし、もう一度、質問がありましたか? – Iguananaut
こんにちはIguananaut、ご返信ありがとうございます。問題は、3Dデータキューブをトリミングする必要があることですが、コードを実行すると結果は2次元のフィットイメージになります。私はそれをどのように修正できるのか分かりません。私はpyropesをastropy.io.fitsで置き換えましたが、それと同じ問題です。あなたの助けをもう一度ありがとう –
それでも、それは3次元を持っていますが、サイズ1の最初の次元ですか? – Iguananaut