不同#

区分两个FITS文件的工具。包括用于区分整个FITS文件、单个hdu、FITS头文件或仅FITS数据的对象。

用于实现fitsdiff程序。

FITSDiff#

class astropy.io.fits.FITSDiff(a, b, ignore_hdus=[], ignore_keywords=[], ignore_comments=[], ignore_fields=[], numdiffs=10, rtol=0.0, atol=0.0, ignore_blanks=True, ignore_blank_cards=True)[源代码]#

基类:_BaseDiff

按文件名区分两个文件,或两个 HDUList 物体。

FITSDiff 对象具有以下diff属性:

  • diff_hdu_count :如果要比较的FITS文件具有不同数量的hdu,则包含每个文件中hdu数量的2元组。

  • diff_hdus :如果具有相同索引的任何HDU不同,则包含HDU索引和 HDUDiff 对象表示两个hdu之间的差异。

参数:
a : strHDUListPython:字符串或HDUList

磁盘上FITS文件的文件名,或 HDUList 对象。

b : strHDUListPython:字符串或HDUList

磁盘上FITS文件的文件名,或 HDUList 对象与第一个文件进行比较。

ignore_hdus : sequence ,可选Python:Sequence,可选

比较两个FITS文件或HDU列表时要忽略的HDU名称;这些HDU及其内容的存在将被忽略。通配符字符串也可以包含在列表中。

ignore_keywords : sequence ,可选Python:Sequence,可选

比较两个标头时要忽略的标头关键字;这些关键字及其值的存在将被忽略。通配符字符串也可以包含在列表中。

ignore_comments : sequence ,可选Python:Sequence,可选

在比较中应忽略其注释的标题关键字的列表。可能包含通配符字符串,如ignoreu关键字。

ignore_fields : sequence ,可选Python:Sequence,可选

要比较任何表数据时要忽略的任何表列的名称(不区分大小写)。

numdiffs : int ,可选PYTHON:int,可选

报告HDU数据差异时要输出的像素/表格值的数目。尽管两种方法的差异计数相同,但这允许控制保存在内存或输出中的不同值的数量。如果给定负值,则numdiffs被视为无限制(默认值:10)。

rtol : float ,可选Python:Float,可选

比较标题值、图像数组或表列中的两个浮点值时允许的相对差异(默认值:0.0)。满足表达式的值

\[\left | a-b\右|>\text{atol}+\text{rtol}\cdot\left | b\右|\]

被认为是不同的。用于比较的基本函数是 numpy.allclose .

在 2.0 版本加入.

atol : float ,可选Python:Float,可选

允许的绝对差。另请参见 rtol 参数。

在 2.0 版本加入.

ignore_blanks : bool ,可选可选的布尔

忽略头或数据中字符串值末尾的额外空白。不忽略额外的前导空格(默认值:True)。

ignore_blank_cards : bool ,可选可选的布尔

忽略所有空白卡片,即它们只包含空格(默认值:True)。

classmethod fromdiff(other, a, b)#

从现有的Diff对象返回特定子类的新Diff对象,传递它们共享的任何参数的值(例如ignore_keywords)。

例如::

>>> from astropy.io import fits
>>> hdul1, hdul2 = fits.HDUList(), fits.HDUList()
>>> headera, headerb = fits.Header(), fits.Header()
>>> fd = fits.FITSDiff(hdul1, hdul2, ignore_keywords=['*'])
>>> hd = fits.HeaderDiff.fromdiff(fd, headera, headerb)
>>> list(hd.ignore_keywords)
['*']
property identical#

True 如果所有的 .diff_* 此diff实例上的属性为空,表示未找到差异。

的任何子类 _BaseDiff 必须至少有一个 .diff_* 属性,当且仅当在要比较的两个对象之间发现某些差异时,该属性包含非空值。

report(fileobj=None, indent=0, overwrite=False)#

生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。

参数:
fileobj : file-like objectstr ,或 None ,可选PYTHON:类似文件的对象、PYTHON:STR或PYTHON:NONE,可选

如果 None ,此方法以字符串形式返回报表。否则它会返回 None 并将报告写入给定的类文件对象(该对象必须具有 .write() 方法),或指定路径下的新文件。

indent : intPython :整型

用于缩进报表的4个空格制表符的数目。

overwrite : bool ,可选可选的布尔

如果 True ,覆盖输出文件(如果存在)。引发 OSError 如果 False 并且输出文件存在。默认为 False .

返回:
report : strNonePYTHON:字符串或PYTHON:无

HDUDiff#

class astropy.io.fits.HDUDiff(a, b, ignore_keywords=[], ignore_comments=[], ignore_fields=[], numdiffs=10, rtol=0.0, atol=0.0, ignore_blanks=True, ignore_blank_cards=True)[源代码]#

基类:_BaseDiff

区分两个HDU对象,包括它们的头和数据(但仅当两个HDU包含相同类型的数据(图像、表或未知)时。

HDUDiff 对象具有以下diff属性:

  • diff_extnames :如果两个hdu具有不同的EXTNAME值,则包含一个不同扩展名的2元组。

  • diff_extvers :如果两个hdu具有不同的EXTVER值,则包含不同扩展版本的2元组。

  • diff_extlevels :如果两个hdu具有不同的EXTLEVEL值,则包含不同扩展级别的2元组。

  • diff_extension_types :如果两个hdu具有不同的XTENSION值,则包含不同扩展类型的2元组。

  • diff_headers :包含 HeaderDiff 两个hdu的标头的。这将始终包含一个对象——它可以通过 diff_headers.identical .

  • diff_data :包含 ImageDataDiffTableDataDiffRawDataDiff 适用于HDU中的数据,并且仅当两个HDU具有相同类型的非空数据时 (RawDataDiff 用于包含不确定类型的非空数据的hdu)。

参数:
a : HDUHDU

HDU对象。

b : HDUHDU

要与第一个HDU对象进行比较的HDU对象。

ignore_keywords : sequence ,可选Python:Sequence,可选

比较两个标头时要忽略的标头关键字;这些关键字及其值的存在将被忽略。通配符字符串也可以包含在列表中。

ignore_comments : sequence ,可选Python:Sequence,可选

在比较中应忽略其注释的标题关键字的列表。可能包含通配符字符串,如ignoreu关键字。

ignore_fields : sequence ,可选Python:Sequence,可选

要比较任何表数据时要忽略的任何表列的名称(不区分大小写)。

numdiffs : int ,可选PYTHON:int,可选

报告HDU数据差异时要输出的像素/表格值的数目。尽管两种方法的差异计数相同,但这允许控制保存在内存或输出中的不同值的数量。如果给定负值,则numdiffs被视为无限制(默认值:10)。

rtol : float ,可选Python:Float,可选

比较标题值、图像数组或表列中的两个浮点值时允许的相对差异(默认值:0.0)。满足表达式的值

\[\left | a-b\右|>\text{atol}+\text{rtol}\cdot\left | b\右|\]

被认为是不同的。用于比较的基本函数是 numpy.allclose .

在 2.0 版本加入.

atol : float ,可选Python:Float,可选

允许的绝对差。另请参见 rtol 参数。

在 2.0 版本加入.

ignore_blanks : bool ,可选可选的布尔

忽略头或数据中字符串值末尾的额外空白。不忽略额外的前导空格(默认值:True)。

ignore_blank_cards : bool ,可选可选的布尔

忽略所有空白卡片,即它们只包含空格(默认值:True)。

classmethod fromdiff(other, a, b)#

从现有的Diff对象返回特定子类的新Diff对象,传递它们共享的任何参数的值(例如ignore_keywords)。

例如::

>>> from astropy.io import fits
>>> hdul1, hdul2 = fits.HDUList(), fits.HDUList()
>>> headera, headerb = fits.Header(), fits.Header()
>>> fd = fits.FITSDiff(hdul1, hdul2, ignore_keywords=['*'])
>>> hd = fits.HeaderDiff.fromdiff(fd, headera, headerb)
>>> list(hd.ignore_keywords)
['*']
property identical#

True 如果所有的 .diff_* 此diff实例上的属性为空,表示未找到差异。

的任何子类 _BaseDiff 必须至少有一个 .diff_* 属性,当且仅当在要比较的两个对象之间发现某些差异时,该属性包含非空值。

report(fileobj=None, indent=0, overwrite=False)#

生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。

参数:
fileobj : file-like objectstr ,或 None ,可选PYTHON:类似文件的对象、PYTHON:STR或PYTHON:NONE,可选

如果 None ,此方法以字符串形式返回报表。否则它会返回 None 并将报告写入给定的类文件对象(该对象必须具有 .write() 方法),或指定路径下的新文件。

indent : intPython :整型

用于缩进报表的4个空格制表符的数目。

overwrite : bool ,可选可选的布尔

如果 True ,覆盖输出文件(如果存在)。引发 OSError 如果 False 并且输出文件存在。默认为 False .

返回:
report : strNonePYTHON:字符串或PYTHON:无

HeaderDiff#

class astropy.io.fits.HeaderDiff(a, b, ignore_keywords=[], ignore_comments=[], rtol=0.0, atol=0.0, ignore_blanks=True, ignore_blank_cards=True)[源代码]#

基类:_BaseDiff

差二 Header 物体。

HeaderDiff 对象具有以下diff属性:

  • diff_keyword_count :如果两个标头包含不同数量的关键字,则每个标头包含一个2元组的关键字计数。

  • diff_keywords :如果其中一个标头包含一个或多个根本不出现在另一个标头中的关键字,则包含一个由仅出现在标头a中的关键字列表和仅出现在标头b中的关键字列表组成的二元组。

  • diff_duplicate_keywords 如果一个关键字在两个关键字的头中都有一个重复的值,那么在这两个关键字中,至少有一个关键字在两个关键字中都被添加到一个关键字dict-tuple中,但是在两个关键字的头中,至少有一个关键字的个数dict-2。例如::

    {'HISTORY': (20, 19)}
    

    意味着头a包含20个历史卡,而头b只包含19个历史卡。

  • diff_keyword_values :如果两个标题之间的任何公共关键字具有不同的值,则它们将出现在此dict中。它的结构类似于 diff_duplicate_keywords ,关键字作为键,不同值的2元组作为值。例如::

    {'NAXIS': (2, 3)}
    

    表示NAXIS关键字在标头a中的值为2,在标头b中的值为3。这将排除与 ignore_keywords 名单。

  • diff_keyword_comments :喜欢 diff_keyword_values ,但包含关键字注释之间的差异。

HeaderDiff 对象还具有 common_keywords 属性,该属性列出两个标题中出现的所有关键字。

参数:
a : Header or strbytes标头或Python:字符串或字节

一个标题。

b : Header or strbytes标头或Python:字符串或字节

要与第一个标头进行比较的标头。

ignore_keywords : sequence ,可选Python:Sequence,可选

比较两个标头时要忽略的标头关键字;这些关键字及其值的存在将被忽略。通配符字符串也可以包含在列表中。

ignore_comments : sequence ,可选Python:Sequence,可选

在比较中应忽略其注释的标题关键字的列表。可能包含通配符字符串,如ignoreu关键字。

numdiffs : int ,可选PYTHON:int,可选

报告HDU数据差异时要输出的像素/表格值的数目。尽管两种方法的差异计数相同,但这允许控制保存在内存或输出中的不同值的数量。如果给定负值,则numdiffs被视为无限制(默认值:10)。

rtol : float ,可选Python:Float,可选

比较标题值、图像数组或表列中的两个浮点值时允许的相对差异(默认值:0.0)。满足表达式的值

\[\left | a-b\右|>\text{atol}+\text{rtol}\cdot\left | b\右|\]

被认为是不同的。用于比较的基本函数是 numpy.allclose .

在 2.0 版本加入.

atol : float ,可选Python:Float,可选

允许的绝对差。另请参见 rtol 参数。

在 2.0 版本加入.

ignore_blanks : bool ,可选可选的布尔

忽略头或数据中字符串值末尾的额外空白。不忽略额外的前导空格(默认值:True)。

ignore_blank_cards : bool ,可选可选的布尔

忽略所有空白卡片,即它们只包含空格(默认值:True)。

classmethod fromdiff(other, a, b)#

从现有的Diff对象返回特定子类的新Diff对象,传递它们共享的任何参数的值(例如ignore_keywords)。

例如::

>>> from astropy.io import fits
>>> hdul1, hdul2 = fits.HDUList(), fits.HDUList()
>>> headera, headerb = fits.Header(), fits.Header()
>>> fd = fits.FITSDiff(hdul1, hdul2, ignore_keywords=['*'])
>>> hd = fits.HeaderDiff.fromdiff(fd, headera, headerb)
>>> list(hd.ignore_keywords)
['*']
property identical#

True 如果所有的 .diff_* 此diff实例上的属性为空,表示未找到差异。

的任何子类 _BaseDiff 必须至少有一个 .diff_* 属性,当且仅当在要比较的两个对象之间发现某些差异时,该属性包含非空值。

report(fileobj=None, indent=0, overwrite=False)#

生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。

参数:
fileobj : file-like objectstr ,或 None ,可选PYTHON:类似文件的对象、PYTHON:STR或PYTHON:NONE,可选

如果 None ,此方法以字符串形式返回报表。否则它会返回 None 并将报告写入给定的类文件对象(该对象必须具有 .write() 方法),或指定路径下的新文件。

indent : intPython :整型

用于缩进报表的4个空格制表符的数目。

overwrite : bool ,可选可选的布尔

如果 True ,覆盖输出文件(如果存在)。引发 OSError 如果 False 并且输出文件存在。默认为 False .

返回:
report : strNonePYTHON:字符串或PYTHON:无

ImageDataDiff#

class astropy.io.fits.ImageDataDiff(a, b, numdiffs=10, rtol=0.0, atol=0.0)[源代码]#

基类:_BaseDiff

区分两个图像数据数组(实际上是来自主HDU或图像扩展HDU的任何数组,尽管数据单元被假定为“像素”)。

ImageDataDiff 对象具有以下diff属性:

  • diff_dimensions :如果两个数组包含不同数量的维度或任何维度中的不同大小,则包含每个数组形状的2元组。目前,对于尺寸不完全相同的图像,不会进行进一步的比较。

  • diff_pixels :如果这两个图像包含任何不同的像素,则包含一个数组索引的2元组列表,其中包含找到差异的数组索引的另一个包含不同值的2元组。例如,如果(0,0)处的像素包含不同的值,则如下所示:

    [(0, 0), (1.1, 2.2)]
    

    其中1.1和2.2是每个数组中该像素的值。此数组最多只包含 self.numdiffs 差异,以提高存储效率。

  • diff_total :数组之间找到的不同像素的总数。尽管 diff_pixels 不一定包含所有不同的像素值,这可以用来获取找到的差异总数的计数。

  • diff_ratio :包含的比率 diff_total 数组中的像素总数。

参数:
a : HDUHDU

HDU对象。

b : HDUHDU

要与第一个HDU对象进行比较的HDU对象。

numdiffs : int ,可选PYTHON:int,可选

报告HDU数据差异时要输出的像素/表格值的数目。尽管两种方法的差异计数相同,但这允许控制保存在内存或输出中的不同值的数量。如果给定负值,则numdiffs被视为无限制(默认值:10)。

rtol : float ,可选Python:Float,可选

比较标题值、图像数组或表列中的两个浮点值时允许的相对差异(默认值:0.0)。满足表达式的值

\[\left | a-b\右|>\text{atol}+\text{rtol}\cdot\left | b\右|\]

被认为是不同的。用于比较的基本函数是 numpy.allclose .

在 2.0 版本加入.

atol : float ,可选Python:Float,可选

允许的绝对差。另请参见 rtol 参数。

在 2.0 版本加入.

classmethod fromdiff(other, a, b)#

从现有的Diff对象返回特定子类的新Diff对象,传递它们共享的任何参数的值(例如ignore_keywords)。

例如::

>>> from astropy.io import fits
>>> hdul1, hdul2 = fits.HDUList(), fits.HDUList()
>>> headera, headerb = fits.Header(), fits.Header()
>>> fd = fits.FITSDiff(hdul1, hdul2, ignore_keywords=['*'])
>>> hd = fits.HeaderDiff.fromdiff(fd, headera, headerb)
>>> list(hd.ignore_keywords)
['*']
property identical#

True 如果所有的 .diff_* 此diff实例上的属性为空,表示未找到差异。

的任何子类 _BaseDiff 必须至少有一个 .diff_* 属性,当且仅当在要比较的两个对象之间发现某些差异时,该属性包含非空值。

report(fileobj=None, indent=0, overwrite=False)#

生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。

参数:
fileobj : file-like objectstr ,或 None ,可选PYTHON:类似文件的对象、PYTHON:STR或PYTHON:NONE,可选

如果 None ,此方法以字符串形式返回报表。否则它会返回 None 并将报告写入给定的类文件对象(该对象必须具有 .write() 方法),或指定路径下的新文件。

indent : intPython :整型

用于缩进报表的4个空格制表符的数目。

overwrite : bool ,可选可选的布尔

如果 True ,覆盖输出文件(如果存在)。引发 OSError 如果 False 并且输出文件存在。默认为 False .

返回:
report : strNonePYTHON:字符串或PYTHON:无

RawDataDiff#

class astropy.io.fits.RawDataDiff(a, b, numdiffs=10)[源代码]#

基类:ImageDataDiff

RawDataDiff 只是 ImageDataDiff 其中图像是一维的,数据被视为一维字节数组,而不是像素值。它用于比较两个未被识别为包含图像或表数据的非标准扩展hdu的数据。

ImageDataDiff 对象具有以下diff属性:

  • diff_dimensions :与 diff_dimensions 属性 ImageDataDiff 物体。尽管每个数组的“维数”只是表示数据中字节数的整数。

  • diff_bytes :就像 diff_pixels 属性 ImageDataDiff 对象,但重命名以反映细微的语义差异,即这些是原始字节而不是像素值。索引也是整数而不是元组。

  • diff_totaldiff_ratio 一样 ImageDataDiff .

参数:
a : HDUHDU

HDU对象。

b : HDUHDU

要与第一个HDU对象进行比较的HDU对象。

numdiffs : int ,可选PYTHON:int,可选

报告HDU数据差异时要输出的像素/表格值的数目。尽管两种方法的差异计数相同,但这允许控制保存在内存或输出中的不同值的数量。如果给定负值,则numdiffs被视为无限制(默认值:10)。

classmethod fromdiff(other, a, b)#

从现有的Diff对象返回特定子类的新Diff对象,传递它们共享的任何参数的值(例如ignore_keywords)。

例如::

>>> from astropy.io import fits
>>> hdul1, hdul2 = fits.HDUList(), fits.HDUList()
>>> headera, headerb = fits.Header(), fits.Header()
>>> fd = fits.FITSDiff(hdul1, hdul2, ignore_keywords=['*'])
>>> hd = fits.HeaderDiff.fromdiff(fd, headera, headerb)
>>> list(hd.ignore_keywords)
['*']
property identical#

True 如果所有的 .diff_* 此diff实例上的属性为空,表示未找到差异。

的任何子类 _BaseDiff 必须至少有一个 .diff_* 属性,当且仅当在要比较的两个对象之间发现某些差异时,该属性包含非空值。

report(fileobj=None, indent=0, overwrite=False)#

生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。

参数:
fileobj : file-like objectstr ,或 None ,可选PYTHON:类似文件的对象、PYTHON:STR或PYTHON:NONE,可选

如果 None ,此方法以字符串形式返回报表。否则它会返回 None 并将报告写入给定的类文件对象(该对象必须具有 .write() 方法),或指定路径下的新文件。

indent : intPython :整型

用于缩进报表的4个空格制表符的数目。

overwrite : bool ,可选可选的布尔

如果 True ,覆盖输出文件(如果存在)。引发 OSError 如果 False 并且输出文件存在。默认为 False .

返回:
report : strNonePYTHON:字符串或PYTHON:无

TableDataDiff#

class astropy.io.fits.TableDataDiff(a, b, ignore_fields=[], numdiffs=10, rtol=0.0, atol=0.0)[源代码]#

基类:_BaseDiff

区分两个表数据数组。数据最初是来自二进制表还是ASCII表并不重要——数据应该作为一个重新排列的形式传入。

TableDataDiff 对象具有以下diff属性:

  • diff_column_count :如果要比较的表具有不同的列数,则每个表中包含一个2元组的列计数。即使这些表有不同的列数,仍会尝试比较它们共有的列。

  • diff_columns :如果任何一个表包含与该表在名称或格式上唯一的列,则这将包含一个2元组的列表。第一个元素是列的列表(这些列是满的 Column 对象),它只出现在表a中。第二个元素是只出现在表b中的表的列表。它只列出具有不同列定义的列,与这些列中的数据无关。

  • diff_column_names :这就像 diff_columns ,但只列出两个表中唯一的列的名称,而不是完整的 Column 物体。

  • diff_column_attributes :列出两个表中都有但具有不同辅助属性(如TUNIT或TDISP)的列。格式是两个元组的列表:第一个是列名和属性的元组,第二个是不同值的元组。

  • diff_valuesTableDataDiff 逐列比较每个表中的数据。如果找到任何不同的数据,则会将其添加到此列表中。此列表的格式类似于 diff_pixels 属性对 ImageDataDiff 对象,尽管“index”由一个(columnu name,row)元组组成。例如::

    [('TARGET', 0), ('NGC1001', 'NGC1002')]
    

    显示表在“TARGET”列的第0行中包含不同的值。

  • diff_totaldiff_ratio 一样 ImageDataDiff .

TableDataDiff 对象还具有 common_columns 属性,该属性列出 Column 两个表中相同的列的对象,以及 common_column_names 属性,该属性包含这些列的一组名称。

参数:
a : HDUHDU

HDU对象。

b : HDUHDU

要与第一个HDU对象进行比较的HDU对象。

ignore_fields : sequence ,可选Python:Sequence,可选

要比较任何表数据时要忽略的任何表列的名称(不区分大小写)。

numdiffs : int ,可选PYTHON:int,可选

报告HDU数据差异时要输出的像素/表格值的数目。尽管两种方法的差异计数相同,但这允许控制保存在内存或输出中的不同值的数量。如果给定负值,则numdiffs被视为无限制(默认值:10)。

rtol : float ,可选Python:Float,可选

比较标题值、图像数组或表列中的两个浮点值时允许的相对差异(默认值:0.0)。满足表达式的值

\[\left | a-b\右|>\text{atol}+\text{rtol}\cdot\left | b\右|\]

被认为是不同的。用于比较的基本函数是 numpy.allclose .

在 2.0 版本加入.

atol : float ,可选Python:Float,可选

允许的绝对差。另请参见 rtol 参数。

在 2.0 版本加入.

classmethod fromdiff(other, a, b)#

从现有的Diff对象返回特定子类的新Diff对象,传递它们共享的任何参数的值(例如ignore_keywords)。

例如::

>>> from astropy.io import fits
>>> hdul1, hdul2 = fits.HDUList(), fits.HDUList()
>>> headera, headerb = fits.Header(), fits.Header()
>>> fd = fits.FITSDiff(hdul1, hdul2, ignore_keywords=['*'])
>>> hd = fits.HeaderDiff.fromdiff(fd, headera, headerb)
>>> list(hd.ignore_keywords)
['*']
property identical#

True 如果所有的 .diff_* 此diff实例上的属性为空,表示未找到差异。

的任何子类 _BaseDiff 必须至少有一个 .diff_* 属性,当且仅当在要比较的两个对象之间发现某些差异时,该属性包含非空值。

report(fileobj=None, indent=0, overwrite=False)#

生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。

参数:
fileobj : file-like objectstr ,或 None ,可选PYTHON:类似文件的对象、PYTHON:STR或PYTHON:NONE,可选

如果 None ,此方法以字符串形式返回报表。否则它会返回 None 并将报告写入给定的类文件对象(该对象必须具有 .write() 方法),或指定路径下的新文件。

indent : intPython :整型

用于缩进报表的4个空格制表符的数目。

overwrite : bool ,可选可选的布尔

如果 True ,覆盖输出文件(如果存在)。引发 OSError 如果 False 并且输出文件存在。默认为 False .

返回:
report : strNonePYTHON:字符串或PYTHON:无