fit头中的未定义值

时间:2017-11-28 08:30:27

标签: python undefined header-files astropy

感谢您花时间帮助我!以下是我面临的问题。假设我正在阅读拟合图像的标题。其中一个标题卡是未定义的对象,我不知道如何处理它。

 from astropy.io import fits as pf

 hdu = pf.open('myfitsfile')
 hdu.info()
 img_hd= hdu[0].header
 print(img_hd['IMAGEZPT'])
 <astropy.io.fits.card.Undefined object at 0x109b35a20>

我在数千张图像上迭代运行我的代码,几乎所有图像都有一些值。 e.g。

 hdu_base = pf.open(a_lof[38])
 img_hd= hdu_base[0].header
 print(img_hd['IMAGEZPT'])
 23.61687

我只想为此分配一些其他值并继续。所以,我试过

if img_hd['IMAGEZPT'] == None:
    img_hd['IMAGEZPT'] = base_ZPT #some value I know
    print(img_hd['IMAGEZPT'])

但正如预期的那样,由于未定义关键字,因此无效。所以'==无'不起作用。关键字存在,但它未定义。

任何帮助将不胜感激! 最好, 阿比

1 个答案:

答案 0 :(得分:0)

如果标题是AstroPy未定义

从astropy

导入未定义
from astropy.io.fits.card import Undefined, UNDEFINED

并像这样比较

if isinstance(img_hd['IMAGEZPT'], Undefined):

它将img_hd ['IMAGEZPT']实例的类型与未定义类型进行比较。

或者像那样

if img_hd['IMAGEZPT'] == UNDEFINED:

第二个选项应该更有效,因为它比较img_hd ['IMAGEZPT']的值而不是实例的类型。

如果HDU表中没有标题卡

只需替换

if img_hd['IMAGEZPT'] == None:

通过

if 'IMAGEZPT' not in img_hd:

in 关键字检查哈希表img_hd中是否存在条目'IMAGEZPT'。