1

現在、fits ファイルに少し問題があります。データはテーブル形式で、これまで使用したことのない形式です。私は python ユーザーであり、フィット画像を操作するために astropy.fits に大きく依存しています。情報をすばやく出力すると、次のようになります。

No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU      60   ()              
1                BinTableHDU     29   3072R x 2C   [1024E, 1024E]

BinTableHDU のヘッダーは次のとおりです。

XTENSION= 'BINTABLE'           /Written by IDL:  Mon Jun 22 23:28:21 2015       
BITPIX  =                    8 /                                                
NAXIS   =                    2 /Binary table                                    
NAXIS1  =                 8192 /Number of bytes per row                         
NAXIS2  =                 3072 /Number of rows                                  
PCOUNT  =                    0 /Random parameter count                          
GCOUNT  =                    1 /Group count                                     
TFIELDS =                    2 /Number of columns                               
TFORM1  = '1024E   '           /Real*4 (floating point)                         
TFORM2  = '1024E   '           /Real*4 (floating point)                         
TTYPE1  = 'COUNT_RATE'         /                                                
TUNIT1  = '1e-6cts/s/arcmin^2' /                                                
TTYPE2  = 'UNCERTAINTY'        /                                                
TUNIT2  = '1e-6cts/s/arcmin^2' /
HISTORY g000m90r1b120pm.fits created on 10/08/97. PI channel range:  8: 19      
PIXTYPE = 'HEALPIX '           / HEALPIX pixelisation                           
ORDERING= 'NESTED  '           / Pixel ordering scheme, either RING or NESTED   
NSIDE   =                  512 / Healpix resolution parameter                   
NPIX    =              3145728 / Total number of pixels                         
OBJECT  = 'FULLSKY '           / Sky coverage, either FULLSKY or PARTIAL        
FIRSTPIX=                    0 / First pixel # (0 based)                        
LASTPIX =              3145727 / Last pixel # (zero based)                      
INDXSCHM= 'IMPLICIT'           / indexing : IMPLICIT or EXPLICIT                
GRAIN   =                    0 / GRAIN = 0: No index,                           
COMMENT         GRAIN =1: 1 pixel index for each pixel,                         
COMMENT         GRAIN >1: 1 pixel index for Grain consecutive pixels            
BAD_DATA=         -1.63750E+30 / Sentinel value given to bad pixels             
COORDSYS= 'G       '           / Pixelization coordinate system                 
COMMENT         G = Galactic, E = ecliptic, C = celestial = equatorial          
END

「COUNT-RATE」というラベルの付いた TTYPE 内に保存されている適合画像にアクセスし、これを同じ次元の他のカウントレート配列に追加できる形式にしたいと思います。

私はfitsファイルを開くための私の通常の手順から始めました:

hdulist_RASS_SXRB_R1 = fits.open('/Users/.../RASS_SXRB_R1.fits')
hdulist_RASS_SXRB_R1.info()
image_XRAY_SKYVIEW_R1 = hdulist_RASS_SXRB_R1[1].data
image_XRAY_SKYVIEW_R1 = numpy.array(image_XRAY_SKYVIEW_R1)
image_XRAY_SKYVIEW_header_R1 = hdulist_RASS_SXRB_R1[1].header

しかし、これは で戻ってきIndexError: too many indices for arrayます。アストロピー ドキュメントのテーブル データへのアクセスについては、こちらを参照してください ( Accessing data stored as a table in a multi-extension FITS (MEF) file )

適合表からそのような画像にアクセスするための実証済みの方法を誰かが持っている場合、私は非常に感謝しています! どうもありがとう。

4

2 に答える 2

1

完全なトレースバックを見ないとわかりませんが、あなたが得ている例外はこれからだと思います:

image_XRAY_SKYVIEW_R1 = numpy.array(image_XRAY_SKYVIEW_R1)

numpy.array()配列を手動でラップする理由はありません。それはすでに Numpy 配列です。ただし、この場合は構造化配列です ( http://docs.scipy.org/doc/numpy/user/basics.rec.htmlを参照)。

@ Andromedae93の答えは正しいものです。ただし、これに関する一般的なドキュメントについては、http: //docs.astropy.org/en/stable/io/fits/index.html#working-with-table-dataを参照してください。

ただし、手動で を呼び出したり、HDUfits.openの属性にアクセスしたりする作業 (画像には問題ありません) の方法.dataはかなり低レベルであり、Numpy 構造化配列はテーブルを表すのには適していますが、それらを操作するのには適していません。

一般的には、Astropy の上位レベルのTableインターフェースを使用する方がよいでしょう。FITS テーブルは、 http : //docs.astropy.org/en/stable/io/unified.html#fits を使用して AstropyTableオブジェクトに直接読み込むことができます。Table.read()

同じものが FITS 画像に存在しない唯一の理由は、一般的な「画像」クラスがまだないためです。

于 2016-06-28T14:20:31.517 に答える
0

私は天体物理学でのインターンシップ中に astropy.io.fits を使用しました。これは、ファイル .fits を開いていくつかの操作を行う私のプロセスです。

# Opening the .fits file which is named SMASH.fits
field = fits.open(SMASH.fits)         

# Data fits reading  
tbdata = field[1].data 

さて、このような方法で tbdata は numpy.array になり、いろいろ作ることができます。

たとえば、次のようなデータがある場合:

ID, Name, Object
1, HD 1527, Star
2, HD 7836, Star
3, NGC 6739, Galaxy

1 つの条件に沿ってデータを印刷する場合:

Data_name = tbdata['Name']

あなたが得るでしょう:

HD 1527
HD 7836
NGC 6739

あなたのデータを正確にどうしたいのかわかりませんが、私はあなたを助けることができます ;)

于 2016-06-28T13:57:32.493 に答える