Что означает, что карта установлена ​​в соответствии со стандартом FITS? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь использовать файл 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», чтобы соответствовать Подходит стандарт. [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» для соответствия Подходит стандарт. [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» для удовлетворения Подходит стандарт. [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» для соответствия Подходит стандарт. [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» для соответствия Подходит стандарт. [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 Ответ

0 голосов
/ 10 января 2019

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

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

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

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

...