Ошибка при использовании astWCS при попытке создать объект WCS

1

Я запускаю 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

Может ли кто-нибудь помочь с этой проблемой?

  • 0
    Какую версию Python вы используете?
  • 0
    @Alok, как указано в первой строке: python2.5. Конкретнее 2.5.4
Теги:
astronomy
fits

2 ответа

1
Лучший ответ

Просто выяснилось, что обновленная версия этой библиотеки исправила проблему, спасибо за помощь всем

0

Извините, мне следовало это видеть. Глядя на pastebin более подробно, единственная ошибка, о которой я могу думать, состоит в том, что по какой-то причине заголовок имеет в нем юникод. Он не может быть преобразован в char *, и вы получите ошибку. Я попытался найти что-то в заголовке, но все выглядит нормально. Можете ли вы сделать это и опубликовать вывод в другом пастебине?

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)

Или, если вы можете проверить заголовок вашего файла fits для "смешных" символов, избавление от них должно решить проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню