【问题标题】:What does it mean that a card is fixed to meet FITS standard?固定卡以符合 FITS 标准是什么意思?
【发布时间】:2019-01-09 14:02:39
【问题描述】:

我正在尝试使用 FITS 文件。我有以下代码:

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

hdul = fits.open(fitsfilename)[0]

wcs = WCS(hdul.header)

它给了我这些警告:

警告:验证警告:验证报告错误: [astropy.io.fits.verify] 警告:验证警告:卡“A_2_0”不是 FITS 标准(无效值字符串:'3.29341755408e-05')。固定的 'A_2_0' 卡符合 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:注意:astropy.io.fits 使用从零开始的 索引。 [astropy.io.fits.verify] 警告:验证警告:卡 'A_1_1' 不是 FITS 标准(无效值字符串: '1.51709339878e-05')。修复了“A_1_1”卡以满足 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'A_0_2' 不​​是 FITS 标准(无效值字符串:'5.17973753556e-06')。固定的 'A_0_2' 卡符合 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡“B_2_0”不是 FITS 标准(无效 值字符串:'2.97627426087e-06')。修复了“B_2_0”卡以满足 适合标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'B_1_1' 不是 FITS 标准(无效值字符串: '2.71948126373e-05')。修复了“B_1_1”卡以满足 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡“B_0_2”不是 FITS 标准(无效值字符串:'1.66848449653e-05')。固定的 'B_0_2' 卡符合 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡“AP_1_0”不是 FITS 标准(无效 值字符串:'1.79541533196e-06')。修复了“AP_1_0”卡以满足 适合标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'AP_0_1' 不是 FITS 标准(无效值字符串: '9.20624843151e-07')。修复了“AP_0_1”卡以满足 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡“AP_2_0”不是 FITS 标准(无效值字符串:'-3.29292923201e-05')。固定的 'AP_2_0' 卡符合 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡“AP_1_1”不是 FITS 标准(无效 值字符串:'-1.51738446887e-05')。修复了“AP_1_1”卡以满足 适合标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'AP_0_2' 不​​是 FITS 标准(无效值字符串: '-5.18321445978e-06')。修复了“AP_0_2”卡以满足 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'BP_1_0' 不是 FITS 标准(无效值字符串:'8.99029048217e-07')。固定的 'BP_1_0' 卡符合 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'BP_0_1' 不是 FITS 标准(无效 值字符串:'1.15967736014e-06')。修复了“BP_0_1”卡以满足 适合标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'BP_2_0' 不是 FITS 标准(无效值字符串: '-2.97837492348e-06')。修复了“BP_2_0”卡以满足 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'BP_1_1' 不是 FITS 标准(无效值字符串:'-2.71998518336e-05')。固定的 'BP_1_1' 卡符合 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'BP_0_2' 不​​是 FITS 标准(无效 值字符串:'-1.66872388359e-05')。修复了“BP_0_2”卡以满足 适合标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'WCSR_PRJ' 不是 FITS 标准(无效值字符串:'3.6679e-07')。 修复了 'WCSR_PRJ' 卡以满足 FITS 标准。 [astropy.io.fits.verify] 警告:验证警告:卡 'WCSR_PIX' 是 不适合标准(无效值字符串:'8.2565e-05')。固定的 'WCSR_PIX' 卡符合 FITS 标准。 [astropy.io.fits.verify]

Fixed 'A_2_0' card to meet FITS standard是什么意思?卡 A_2_0 所指的数据发生了什么变化?我也对 WARNING: VerifyWarning: Note: astropy.io.fits 使用从零开始的索引的含义感兴趣。

【问题讨论】:

  • 这不是解释,但感谢您的努力
  • 真的吗?因为该链接解释了正在发生的事情以及您可以针对这些警告采取哪些选项
  • 仔细看这里 --> docs.astropy.org/en/stable/io/fits/usage/… 在尝试关闭链接之前,它明确指出您的输入数据包含小写 e 无效,必须更改为 E 才能符合FITS标准
  • 好的,这很有用,谢谢。
  • 我建议您编辑您的第一个链接,因为它指向“使用 FITS 校验和关键字约定进行验证” - 这显然不是问题。

标签: python warnings astropy fits


【解决方案1】:

正如 cmets 中已经指出的,io.fits 具有针对 verifying the validity of headers 的功能,甚至可以修复轻微的格式错误(它尽最大努力只编写完全有效的 FITS 文件)。

虽然有一些选项可以在写出文件时执行验证,但也有一些情况下它也会在读取时执行自动验证,特别是在解析标题时。这是一个long standing open issue(这只是一个相关示例;有几个),目前没有很好的方法来控制读取时间验证/修复。有一种更简单的方法可以将其静音或完全禁用它可能会很好。我认为这不会太难解决,只是我猜没有人有足够的动力。虽然目前,如果您希望使警告静音,您可以使用标准的Python warnings system

除此之外,关于警告本身的含义,我认为这可能是在科学记数法中使用e 而不是E(FITS 标准可以追溯到 FORTRAN 时代,后者我认为更常见)。如果该消息能更准确地解释它正在修复的内容,那就太好了。

注释“注意:astropy.io.fits 使用从零开始的索引。”从技术上讲,它只是第一条警告消息的一部分,主要是出于历史原因。将它添加到此消息中的事实甚至是一个错误,因为该消息甚至提到了任何索引(过去它可能说过“卡 [N] 中的错误”,其中N 将是卡的索引)。此消息的原因只是为了提醒更习惯使用基于 1 的索引的 FORTRAN 和/或 IRAF 的用户,而 PyFITS/astropy.io.fits 使用基于 0 的索引提供 HDU 编号和标题卡编号由 C 和 Python 使用。在这一点上,它可能会被删除,或者至少固定为仅附加到它实际相关的警告消息中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2016-09-08
    • 2017-05-05
    相关资源
    最近更新 更多