Что означает, что карта установлена ​​в соответствии со стандартом FITS?

Я пытаюсь использовать файл FITS. У меня есть следующий код:

from astropy.io import fits
from astropy.wcs import WCS

hdul = fits.open(fitsfilename)[0]

wcs = WCS(hdul.header)

Это дает мне эти предупреждения:

ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Сообщения об ошибках проверки: [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта 'A_2_0' не соответствует стандарту FITS (недопустимая строка значения: '3.29341755408e-05'). Исправлена ​​карта 'A_2_0' для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Примечание: astropy.io.fits использует индексирование с нуля. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'A_1_1' не соответствует стандарту FITS (недопустимая строка значения: '1.51709339878e-05'). Исправлена ​​карта "A_1_1" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'A_0_2' не соответствует стандарту FITS (недопустимая строка значения: '5.17973753556e-06'). Исправлена ​​карта "A_0_2" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'B_2_0' не соответствует стандарту FITS (недопустимая строка значения: '2.97627426087e-06'). Исправлена ​​карта "B_2_0" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'B_1_1' не соответствует стандарту FITS (недопустимая строка значения: '2.71948126373e-05'). Исправлена ​​карта "B_1_1" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'B_0_2' не соответствует стандарту FITS (недопустимая строка значения: '1.66848449653e-05'). Исправлена ​​карта "B_0_2" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'AP_1_0' не соответствует стандарту FITS (недопустимая строка значения: '1.79541533196e-06'). Исправлена ​​карта 'AP_1_0' для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта 'AP_0_1' не соответствует стандарту FITS (недопустимая строка значения: '9.20624843151e-07'). Исправлена ​​карта "AP_0_1" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта 'AP_2_0' не соответствует стандарту FITS (недопустимая строка значения: '-3.29292923201e-05'). Исправлена ​​карта 'AP_2_0' для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'AP_1_1' не соответствует стандарту FITS (недопустимая строка значения: '-1.51738446887e-05'). Исправлена ​​карта "AP_1_1" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'AP_0_2' не соответствует стандарту FITS (недопустимая строка значения: '-5.18321445978e-06'). Исправлена ​​карта "AP_0_2" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта 'BP_1_0' не соответствует стандарту FITS (недопустимая строка значения: '8.99029048217e-07'). Исправлена ​​карта "BP_1_0" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'BP_0_1' не соответствует стандарту FITS (недопустимая строка значения: '1.15967736014e-06'). Исправлена ​​карта "BP_0_1" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта 'BP_2_0' не соответствует стандарту FITS (недопустимая строка значения: '-2.97837492348e-06'). Исправлена ​​карта "BP_2_0" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта 'BP_1_1' не соответствует стандарту FITS (недопустимая строка значения: '-2.71998518336e-05'). Исправлена ​​карта "BP_1_1" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'BP_0_2' не соответствует стандарту FITS (недопустимая строка значения: '-1.66872388359e-05'). Исправлена ​​карта "BP_0_2" для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'WCSR_PRJ' не соответствует стандарту FITS (недопустимая строка значения: '3.6679e-07'). Исправлена ​​карта WCSR_PRJ, соответствующая стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'WCSR_PIX' не соответствует стандарту FITS (недопустимая строка значения: '8.2565e-05'). Исправлена ​​карта WCSR_PIX, соответствующая стандарту FITS. [Astropy.io.fits.verify]

Что означает, что исправлена ​​карта A_2_0 для соответствия стандарту FITS? Что случилось с данными, на которые ссылается карта A_2_0? Меня также интересует значение ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Примечание: astropy.io.fits использует индексацию с нуля.

1 ответ

Решение

Как уже отмечалось в комментариях, io.fits имеет функциональные возможности для проверки правильности заголовков и даже исправит незначительные тривиальные ошибки форматирования (он старается записывать только правильные файлы FITS как можно лучше).

Хотя существуют варианты выполнения проверки во время записи файла, также есть некоторые случаи, когда он выполняет автоматическую проверку и во время чтения, особенно при анализе заголовков. Это давняя открытая проблема (это только один связанный пример; их несколько), что в настоящее время нет замечательного способа контроля проверки / исправлений во время чтения. Было бы неплохо иметь более простой способ заставить это замолчать или вообще отключить его. Я думаю, что это не будет слишком сложно исправить, просто никто не был достаточно мотивирован, я думаю. Хотя в настоящее время, если вы хотите заставить замолчать предупреждения, вы можете сделать это с помощью стандартной системы предупреждений Python.

С учетом этого, что касается значений самих предупреждений, я думаю, что это, вероятно, использование e вместо E в научной нотации (стандарт FITS восходит к тем временам FORTRAN, где последний, я думаю, был более распространенным). Было бы хорошо, если бы сообщение лучше объяснило, что именно оно исправляет.

Примечание "Примечание: astropy.io.fits использует индексацию с нуля". технически это только часть первого предупреждающего сообщения, и это происходит в основном по историческим причинам. Тот факт, что оно было добавлено к этому сообщению, даже немного ошибочно, поскольку в сообщении даже упоминаются какие-либо индексы (в прошлом оно могло бы что-то сказать о "Ошибка в карточке [N]", где N будет индекс карты). Причиной этого сообщения послужило напоминание пользователям, которые более привыкли к FORTRAN и / или IRAF, которые используют индексацию на основе 1, тогда как PyFITS/astropy.io.fits дает номера HDU и номера карт заголовков с использованием индексации на основе 0 как используется C и Python. В этот момент он, вероятно, может быть удален или, по крайней мере, исправлен, чтобы быть добавленным только к предупреждающим сообщениям, к которым это действительно относится.

Другие вопросы по тегам