簡體   English   中英

無法使用PyFITS從擬合文件讀取原始數據

[英]Cannot read raw data from a fits file using PyFITS

我正在嘗試使用Python 2.7的pyFITS模塊打開.fits文件並從中讀取數據。 下面是我正在嘗試從文件中獲取數據的代碼片段:

location = raw_input("Locaiton of FITS file: ") """user input location for the file"""
hdulist = pyfits.open(location) """opens the .fits file (works properly)"""

print(repr(hdulist[0].header)) """printed values shown below, works properly"""
pyfits.getdata(location, hdulist[0].header['TOTVALS']) """does NOT work"""

我知道文件正在正確打開; 當我運行print(repr(hdulist[0].header)) ,控制台顯示

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 69
    warnings.warn(u'Output verification result:')
UserWarning: Output verification result:

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 73
    warnings.warn(line, VerifyWarning)
VerifyWarning: Card 'CRDER1' is not FITS standard (invalid value string: nan).  Fixed 'CRDER1' card to meet the FITS standard.

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 74
    warnings.warn(u'Note: PyFITS uses zero-based indexing.\n')
UserWarning: Note: PyFITS uses zero-based indexing.


Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 69
    warnings.warn(u'Output verification result:')
UserWarning: Output verification result:

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 73
    warnings.warn(line, VerifyWarning)
VerifyWarning: Card 'CRDER2' is not FITS standard (invalid value string: nan).  Fixed 'CRDER2' card to meet the FITS standard.

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 74
    warnings.warn(u'Note: PyFITS uses zero-based indexing.\n')
UserWarning: Note: PyFITS uses zero-based indexing.


Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 69
    warnings.warn(u'Output verification result:')
UserWarning: Output verification result:

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 73
    warnings.warn(line, VerifyWarning)
VerifyWarning: Card 'CSYSER1' is not FITS standard (invalid value string: nan).  Fixed 'CSYSER1' card to meet the FITS standard.

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 74
    warnings.warn(u'Note: PyFITS uses zero-based indexing.\n')
UserWarning: Note: PyFITS uses zero-based indexing.


Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 69
    warnings.warn(u'Output verification result:')
UserWarning: Output verification result:

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 73
    warnings.warn(line, VerifyWarning)
VerifyWarning: Card 'CSYSER2' is not FITS standard (invalid value string: nan).  Fixed 'CSYSER2' card to meet the FITS standard.

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\pyfits\verify.py", line 74
    warnings.warn(u'Note: PyFITS uses zero-based indexing.\n')
UserWarning: Note: PyFITS uses zero-based indexing.

然后打印

SIMPLE  =                    T / file does conform to FITS standard             
BITPIX  =                   32 / number of bits per data pixel                  
NAXIS   =                    2 / number of data axes                            
NAXIS1  =                 4096 / length of data axis 1                          
NAXIS2  =                 4096 / length of data axis 2                          
EXTEND  =                    T / FITS dataset may contain extensions            
COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy
COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H 
DATE    = '2014-01-27T07:17:01'                                                 
DATE-OBS= '2014-01-27T06:34:10.00'                                              
TELESCOP= 'SDO/HMI'                                                             
INSTRUME= 'HMI_SIDE1'                                                           
WAVELNTH= 6173.0                                                                
CAMERA  =                    1                                                  
BUNIT   = 'Gauss'                                                               
ORIGIN  = 'SDO/JSOC-SDP'                                                        
CONTENT = 'MAGNETOGRAM'                                                         
QUALITY =                 1024                                                  
QUALLEV1=           1073741824                                                  
HISTORY Polynomial Coefficients used for Doppler velocity correction: 8.071746e+
HISTORY 01 5.340511e-03 -2.036568e-06 -7.976842e-10                             
COMMENT De-rotation: ON; Un-distortion: ON; Re-centering: ON; Re-sizing: OFF; co
COMMENT rrection for cosmic-ray hits; dpath=/home/jsoc/cvs/Development/JSOC/proj
COMMENT /lev1.5_hmi/apps/; linearity=1 with coefficients updated on 2014/01/15; 
COMMENT smooth=1; propagate eclipse bit from level 1; use of larger crop radius 
COMMENT look-up tables                                                          
BLD_VERS= '-802'                                                                
HCAMID  =                    2                                                  
SOURCE  = 'hmi.lev1_nrt[:#57580483,#57580411,#57580338,#57580272,#57580184,#575'
TOTVALS =             12841850                                                  
DATAVALS=             12841850    

...remaining values omitted...

當我嘗試pyfits.getdata(location, hdulist[0].header['TOTVALS'])時,就會出現問題。 返回的錯誤消息是

Traceback (most recent call last):
  File "C:\Users\User\Desktop\openFITS.py", line 34, in <module>
    pyfits.getdata(location,hdulist[0].header['TOTVALS'])
  File "C:\Python27\lib\site-packages\pyfits\convenience.py", line 181, in getdata
    hdu = hdulist[extidx]
  File "C:\Python27\lib\site-packages\pyfits\hdu\hdulist.py", line 166, in __getitem__
    return super(HDUList, self).__getitem__(idx)
IndexError: list index out of range

print(len(hdulist))返回1; 因此我知道索引0不應超出范圍。 因此,問題是為什么我似乎無法從hdulist的標頭“ TOTVALS”中獲取原始數據,即使其他一切似乎都工作正常。

在此先感謝您的幫助!

您打印的標題顯示TOTVALS值為12841850。

您正在嘗試從12841850th HDU返回數據。 請參閱: http : //pyfits.readthedocs.org/en/v3.2.0/api_docs/api_files.html#getdata

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM