使用astWCS尝试创建WCS对象时出错

时间:2010-01-12 10:24:59

标签: python astronomy fits

我正在运行python2.5并尝试使用astLib库来分析天文图像中的WCS信息。我尝试使用以下框架代码实现对象:

from astLib import astWCS

w = astWCS.WCS('file.fits') # error here

其中file.fits是指向有效拟合文件的字符串。

我尝试过使用传递pyfits头对象的备用方法,但这也失败了:

import pyfits
from astLib import astWCS

f = pyfits.open('file.fits')
header = f[0].header
f.close()

w = astWCS.WCS(header, mode='pyfits') # error here also

错误是这样的:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/astro/phrfbf/build/lib/python2.6/site-packages/astLib/astWCS.py", line 79, in __init__
    self.updateFromHeader()
  File "/home/astro/phrfbf/build/lib/python2.6/site-packages/astLib/astWCS.py", line 119, in updateFromHeader
    self.WCSStructure=wcs.wcsinit(cardstring)
  File "/home/astro/phrfbf/build/lib/python2.6/site-packages/PyWCSTools/wcs.py", line 70, in wcsinit
    return _wcs.wcsinit(*args)
TypeError: in method 'wcsinit', argument 1 of type 'char *'

当我在ipython中运行时,我在pastebin

上收到了完整的错误

我知道astWCS模块是WCStools的包装版本,但我更喜欢使用Python模块,因为我的代码的其余部分是Python

任何人都可以帮忙解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

刚刚发现这个库的更新版本修复了问题,感谢大家的帮助

答案 1 :(得分:0)

对不起,我应该看到了。更详细地看一下pastebin,我能想到的唯一错误是,由于某种原因,头部中包含unicode。它无法转换为char *,您将收到错误消息。我试着在标题中搜索一些东西,但一切看起来还不错。你能这样做并将输出发布在另一个pastebin中吗?

import pyfits

f = pyfits.open('file.fits')
header = f[0].header
f.close()

for x, i in enumerate(header.iteritems()):
    if len(str(i[1])) >= 70:
        print x, str(i[1])

cardlist = header.ascardlist() 
cardstring = "" 
for card in cardlist: 
    cardstring = cardstring + str(card)

print repr(cardstring)

或者,如果您可以检查您的适合文件的标题是否为“有趣”字符,那么摆脱它们应该可以解决问题。