不同#
区分两个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 :
str
或HDUList
Python:字符串或HDUList 磁盘上FITS文件的文件名,或
HDUList
对象。- b :
str
或HDUList
Python:字符串或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)。
- a :
- 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)#
生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。
- 参数:
- 返回:
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
:包含ImageDataDiff
,TableDataDiff
或RawDataDiff
适用于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)#
生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。
- 参数:
- 返回:
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
orstr
或bytes
标头或Python:字符串或字节 一个标题。
- b :
Header
orstr
或bytes
标头或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)。
- a :
- 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)#
生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。
- 参数:
- 返回:
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)#
生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。
- 参数:
- 返回:
RawDataDiff
#
- class astropy.io.fits.RawDataDiff(a, b, numdiffs=10)[源代码]#
-
RawDataDiff
只是ImageDataDiff
其中图像是一维的,数据被视为一维字节数组,而不是像素值。它用于比较两个未被识别为包含图像或表数据的非标准扩展hdu的数据。ImageDataDiff
对象具有以下diff属性:diff_dimensions
:与diff_dimensions
属性ImageDataDiff
物体。尽管每个数组的“维数”只是表示数据中字节数的整数。diff_bytes
:就像diff_pixels
属性ImageDataDiff
对象,但重命名以反映细微的语义差异,即这些是原始字节而不是像素值。索引也是整数而不是元组。diff_total
和diff_ratio
一样ImageDataDiff
.
- 参数:
- 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)#
生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。
- 参数:
- 返回:
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_values
:TableDataDiff
逐列比较每个表中的数据。如果找到任何不同的数据,则会将其添加到此列表中。此列表的格式类似于diff_pixels
属性对ImageDataDiff
对象,尽管“index”由一个(columnu name,row)元组组成。例如::[('TARGET', 0), ('NGC1001', 'NGC1002')]
显示表在“TARGET”列的第0行中包含不同的值。
diff_total
和diff_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)#
生成关于两个对象之间的差异(如果有)的文本报告,并将其作为字符串返回或将其写入类似文件的对象。
- 参数:
- 返回: