WCS

class astropy.wcs.WCS(header=None, fobj=None, key=' ', minerr=0.0, relax=True, naxis=None, keysel=None, colsel=None, fix=True, translate_units='', _do_set=True)[源代码]

基类:FITSWCSAPIMixin, WCSBase

WCS对象执行标准WCS转换,并更正 SIPdistortion paper 表查找转换,基于从FITS文件读取的WCS关键字和补充数据。

另请参见:https://docs.astropy.org/en/stable/wcs/

参数
标题HeaderPrimaryHDUImageHDU 、字符串、类似字典或无,可选Header、PrimaryHDU、ImageHDU、str、Dict-like或None,可选

如果 页眉 如果未提供或没有,则对象将初始化为默认值。

fobjHDUList ,可选HDUList,可选

当标题关键字指向 distortion paper 查找表存储在不同的扩展名中。

key可选的STR

要使用的特定WCS转换的名称。这可能是 ' ''A' -“Z”和对应于 ``"a" 部分 CTYPEia 卡。 key 仅在以下情况下提供 页眉 也提供。

minerr可选浮动

失真校正必须具有的最小值才能应用。如果 CQERRja 小于 矿工 ,则不应用相应的失真。

relaxbool或int,可选

允许程度:

  • True (默认):允许WCS标准的所有公认的非正式扩展。

  • False :只识别符合发布的WCS标准定义的关键字。

  • int :选择要接受的特定扩展的位字段。看见 astropy:relaxread 了解更多细节。

naxisint或sequence,可选

使用提取特定坐标轴 sub() . 如果提供了标题,并且 纳西族 不是 None纳西族 将传递给 sub() 以便从收割台选择特定轴。看到了吗 sub() 有关此参数的详细信息。

keyselstr序列,可选

用于选择wcslb考虑的关键字类型的标志序列。什么时候 None ,则只考虑标准图像标题关键字(并调用底层wcspih()C函数)。为了使用二进制表图像阵列或像素列表关键字, 按键选择 必须设置。

列表中的每个元素都应该是以下字符串之一:

  • “image”:图像标题关键字

  • “binary”:二进制表图像数组关键字

  • “pixel”:像素列表关键字

关键词如 EQUInaRFRQna 二进制表图像数组和像素列表(包括 WCSNnaTWCSna )由“二进制”和“像素”选择。

colselint序列,可选

表列号的序列,用于将WCS转换限制为只考虑与指定列有关的那些转换。如果 None 没有限制,没有限制。

fix可选的布尔

什么时候? True (默认),调用 fix 在结果对象上修复头中的任何非标准用法。 FITSFixedWarning 如果进行了任何更改,将发出警告。

translate_units可选的STR

指定要执行的非标准单位字符串的潜在不安全转换。默认情况下,不执行任何操作。看到了吗 WCS.fix 有关此参数的详细信息。仅在以下情况下有效 fixTrue .

加薪
MemoryError

内存分配失败。

ValueError

密钥无效。

KeyError

在FITS标题中找不到键。

ValueError

头中存在查找表失真,但是 fobj 未提供。

笔记

  1. astropy.wcs 支持任意 n 核心WCS的维度(WCSLIB处理的转换)。但是 distortion paper 查找表和 SIP 扭曲必须是二维的。因此,如果尝试创建一个WCS对象,其中核心WCS的维度数与2不同,并且该对象还包含 distortion paper 查阅表格或 SIP 变形,a ValueError 将引发异常。为了避免这种情况,请考虑使用 纳西族 kwarg从核心WCS中选择两个维度。

  2. 转换中的坐标轴数不是直接由 NAXIS 关键字,但不是从最高的:

    • NAXIS 关键字

    • WCSAXESa 关键字

    • 任何参数化WCS关键字中的最高轴数。keyvalue和关键字必须在语法上有效,否则将不考虑它。

    如果这些关键字类型都不存在,也就是说,如果报头只包含特定坐标表示的辅助WCS关键字,则不会为其构造坐标描述。

    轴数,设置为 naxis 成员,对于同一图像的不同坐标表示可能不同。

  3. 当标头包含重复的关键字时,在大多数情况下,将使用最后遇到的关键字。

  4. set 在构造之后立即调用,因此任何无效的关键字或转换都将由构造函数引发,而不是在随后调用转换方法时。

属性摘要

array_shape 

WCS应用到的数据的形状作为长度的元组 pixel_n_dim 在里面 (row, column) order(Python中数组的约定)。

axis_correlation_matrix 

返回一个 (world_n_dimpixel_n_dim )表示使用布尔值的矩阵表示给定的世界坐标是否依赖于给定的像素坐标。

axis_type_names 

每个坐标轴的世界名称

celestial 

只包含天轴的当前WCS的副本

cpdis1 

DistortionLookupTable

cpdis2 

DistortionLookupTable

det2im1 

A DistortionLookupTable 用于探测器图像平面校正的对象 x 轴。

det2im2 

A DistortionLookupTable 用于探测器图像平面校正的对象 y 轴。

has_celestial 

has_distortion 

返回 True 如果存在任何失真项。

has_spectral 

has_temporal 

is_celestial 

is_spectral 

is_temporal 

low_level_wcs 

返回对底层低级别WCS对象的引用。

pixel_axis_names 

描述每个像素轴名称的字符串的iterable。

pixel_bounds 

在其中定义WCS的边界(以像素坐标为单位),如具有 pixel_n_dim (min, max) 元组。

pixel_n_dim 

像素坐标系中的轴数。

pixel_scale_matrix 

pixel_shape 

WCS应用到的数据的形状作为长度的元组 pixel_n_dim 在里面 (x, y) 订单(如果是图像, x 是水平坐标和 y 是垂直坐标)。

serialized_classes 

指示Python对象是以序列化形式还是作为实际的Python对象给定的。

sip 

获取/设置 Sip object for performing SIP 失真校正。

spectral 

仅包含光谱轴的当前WCS的副本

temporal 

仅包含时间轴的当前WCS的副本

wcs 

A Wcsprm object to perform the basic wcslib WCS转换。

world_axis_names 

一个iterable字符串,用于描述每个世界轴的名称。

world_axis_object_classes 

提供有关为世界坐标构造高级对象的信息的词典。

world_axis_object_components 

一份清单 world_n_dim 元素提供有关为世界坐标构造高级对象的信息。

world_axis_physical_types 

描述每个世界轴的物理类型的字符串iterable。

world_axis_units 

给定每个轴的世界坐标单位的一种字符串。

world_n_dim 

世界坐标系中的轴数。

方法总结

all_pix2world(*args, **kwargs)

将像素坐标转换为世界坐标。

all_world2pix(*arg[, tolerance, maxiter, ...])

将世界坐标转换为像素坐标,使用数值迭代来反转全正向变换 all_pix2world 完全畸变模型。

array_index_to_world(*index_arrays)

将阵列索引转换为世界坐标(由Astropy对象表示)。

array_index_to_world_values(*index_arrays)

将数组索引转换为世界坐标。

calc_footprint([header, undistort, axes, center])

计算图像在天空中的足迹。

copy \()

返回对象的浅副本。

deepcopy \()

返回对象的深层副本。

det2im(*args)

使用将探测器坐标转换为图像平面坐标 distortion paper 表查找更正。

dropaxis \(Dropax)

从WCS中删除轴。

fix([translate_units, naxis])

从wcslib执行修复操作,并对其所做的任何更改发出警告。

footprint_contains(coord, **kwargs)

确定给定的SkyCoord是否包含在wcs示意图中。

footprint_to_file([filename, color, width, ...])

写出一个 ds9 样式区域文件。

get_axis_types \()

类似 self.wcsprm.axis_types 但以更友好的Python格式提供信息。

p4_pix2foc(*args)

使用将像素坐标转换为焦平面坐标 distortion paper 表查找更正。

pix2foc(*args)

使用将像素坐标转换为焦平面坐标 SIP 多项式失真约定和 distortion paper 表查找更正。

pixel_to_world(*pixel_arrays)

将像素坐标转换为世界坐标(由高级对象表示)。

pixel_to_world_values(*pixel_arrays)

将像素坐标转换为世界坐标。

printwcs \()

proj_plane_pixel_area \()

对于一个 天空的 WCS(参见 astropy.wcs.WCS.celestial), returns pixel area of the image pixel at the CRPIX location once it is projected onto the "plane of intermediate world coordinates" as defined in Greisen & Calabretta 2002, A&A, 395, 1061 .

proj_plane_pixel_scales \()

沿图像像素的每个轴计算像素比例 CRPIX 将其投影到中定义的“中间世界坐标平面”后的位置 Greisen & Calabretta 2002, A&A, 395, 1061 .

reorient_celestial_first \()

重新定位WCS,使天轴在前,光谱轴在后,其他轴在后。

sip_foc2pix(*args)

使用将焦平面坐标转换为像素坐标 SIP 多项式失真约定。

sip_pix2foc(*args)

使用将像素坐标转换为焦平面坐标 SIP 多项式失真约定。

slice(view[, numpy_order])

使用Numpy切片对WCS实例进行切片。

sub \(轴)

从中提取子图像的坐标描述 WCS 对象。

swapaxes(ax0, ax1)

交换WCS中的轴。

to_fits([relax, key])

生成一个 HDUList 对象中存储的所有信息。

to_header([relax, key])

生成 astropy.io.fits.Header 对象中存储的基本WCS和SIP信息。

to_header_string([relax])

相同的 to_header ,但返回包含头卡的字符串。

wcs_pix2world(*args, **kwargs)

只需执行基本操作,即可将像素坐标转换为世界坐标 wcslib 转变。

wcs_world2pix(*args, **kwargs)

将世界坐标转换为像素坐标,仅使用基本 wcslib WCS转换。

world_to_array_index(*world_objects)

将世界坐标(由天体对象表示)转换为数组索引。

world_to_array_index_values(*world_arrays)

将世界坐标转换为数组索引。

world_to_pixel(*world_objects)

将世界坐标(由Astropy对象表示)转换为像素坐标。

world_to_pixel_values(*world_arrays)

将世界坐标转换为像素坐标。

属性文档

array_shape
axis_correlation_matrix
axis_type_names

每个坐标轴的世界名称

返回
str列表

沿每个轴的名称列表。

celestial

只包含天轴的当前WCS的副本

cpdis1

DistortionLookupTable

预线性变换失真查找表, CPDIS1 .

cpdis2

DistortionLookupTable

预线性变换失真查找表, CPDIS2 .

det2im1

A DistortionLookupTable 用于探测器图像平面校正的对象 x 轴。

det2im2

A DistortionLookupTable 用于探测器图像平面校正的对象 y 轴。

has_celestial
has_distortion

返回 True 如果存在任何失真项。

has_spectral
has_temporal
is_celestial
is_spectral
is_temporal
low_level_wcs
pixel_axis_names

描述每个像素轴名称的字符串的iterable。

如果轴没有名称,则应返回空字符串(如果子类不重写此属性,则这是所有轴的默认行为)。请注意,这些名称仅用于显示目的,不是标准化的。

pixel_bounds
pixel_n_dim
pixel_scale_matrix
pixel_shape
serialized_classes
sip

获取/设置 Sip object for performing SIP 失真校正。

spectral

仅包含光谱轴的当前WCS的副本

temporal

仅包含时间轴的当前WCS的副本

wcs

A Wcsprm object to perform the basic wcslib WCS转换。

world_axis_names
world_axis_object_classes
world_axis_object_components
world_axis_physical_types
world_axis_units
world_n_dim

方法文件

all_pix2world(*args, **kwargs)[源代码]

将像素坐标转换为世界坐标。

按系列执行以下所有操作:

  • 探测器到图像平面校正(如果在FITS文件中有)

  • SIP 失真校正(如果在FITS文件中存在)

  • distortion paper 表格查找更正(如果在FITS文件中存在)

  • wcslib “核心”WCS改造

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 纳西族 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

对于非二维的转换,必须使用双参数形式。

ra_dec_order可选的布尔

什么时候? True 将确保世界坐标始终以( radec )对,而不考虑在中指定的轴的顺序 CTYPE 关键词。默认为 False .

返回
result数组

返回天空坐标,以度为单位。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

加薪
MemoryError

内存分配失败。

SingularMatrixError

线性变换矩阵是奇异的。

InconsistentAxisTypesError

坐标轴类型不一致或无法识别。

ValueError

参数值无效。

ValueError

坐标转换参数无效。

ValueError

x和y坐标阵列的大小不同。

InvalidTransformError

坐标转换参数无效。

InvalidTransformError

病态坐标变换参数。

笔记

结果的轴顺序由 CTYPEia FITS标题中的关键字,因此它可能不总是形式( radec )这个 latlnglattyplngtyp 成员可用于确定轴的顺序。

all_world2pix(*arg, tolerance=1.0e-4, maxiter=20, adaptive=False, detect_divergence=True, quiet=False)[源代码]

将世界坐标转换为像素坐标,使用数值迭代来反转全正向变换 all_pix2world 完全畸变模型。

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 纳西族 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

对于非二维的转换,必须使用双参数形式。

ra_dec_order可选的布尔

什么时候? True 将确保世界坐标始终以( radec )对,而不考虑在中指定的轴的顺序 CTYPE 关键词。默认为 False .

tolerance浮点,可选(默认值=1.0E-4)

溶液的耐受性。当迭代解算器估计“真解”在当前估计的许多像素范围内时,迭代终止,更具体地说,当在上一次迭代中找到的解的校正小于(在L2范数的意义上)时 tolerance .

maxiter整型,可选(默认值=20)

达到解决方案所允许的最大迭代次数。

quiet布尔值,可选(默认值=FALSE)

不要扔 NoConvergence 当方法在指定的最大迭代次数内未收敛到具有所需精度的解决方案时出现异常 maxiter 参数。相反,只需返回找到的解决方案。

返回
result数组

返回像素坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

其他参数
adaptive布尔值,可选(默认值=FALSE)

指定是否仅自适应地选择未收敛到下一次迭代所需精度范围内的解的点。对于HST和大多数其他仪器,建议使用默认值。

备注

这个 all_world2pix() 使用连续近似法的矢量化实现(请参见 Notes (下面的节)在其中迭代 all 输入点 不管 直到达到要求的精度为止 all 输入点。在某些情况下,可能 几乎全部 点已达到要求的精度,但只有少数输入数据点需要额外的迭代(这主要取决于给定仪器的几何畸变特性)。在这种情况下 adaptive = True 在这种情况下 all_world2pix() 将继续迭代 only 在尚未收敛到所需精度的点上。然而,对于HST的ACS/WFC探测器来说,它在所有HST仪器中具有最强的失真,测试表明启用此选项将导致大约50-100%的计算时间损失(取决于图像的具体情况、几何失真和要转换的输入点的数量)。因此,对于HST和可能的仪表,建议设置 adaptive = False . 错误设置的唯一危险是性能损失。

备注

什么时候? detect_divergenceTrueall_world2pix() 一旦检测到发散,将自动切换到自适应算法。

detect_divergence布尔值,可选(默认值=True)

指定是否对解决方案的收敛性执行更详细的分析。正常情况下 all_world2pix() 如果 tolerancemaxiter 参数太低。然而,对于某些几何畸变,使用的连续近似法的收敛条件可能会发生 all_world2pix() 可能不满足,在这种情况下,无论 tolerancemaxiter 设置。

什么时候? detect_divergenceFalse ,这些发散点将被检测为未达到要求的精度(没有进一步的细节)。另外,如果 adaptiveFalse 然后算法将不知道解(对于特定点)是发散的,并将继续迭代并尝试“改进”发散解。这可能导致 NaNInf 返回结果中的值(除了性能惩罚)。即使什么时候 detect_divergenceFalseall_world2pix() ,将在迭代过程结束时识别无效结果 (NaNInf )作为“分歧”的解决方案,并将提出 NoConvergence 除非 quiet 参数设置为 True .

什么时候? detect_divergenceTrueall_world2pix() 将检测当前对坐标的校正大于上一次迭代期间应用的校正的点 if 要求的准确度 尚未实现 . 在这种情况下,如果 adaptiveTrue ,这些点将被排除在进一步的迭代中,如果 adaptiveFalseall_world2pix() 会自动切换到自适应算法。因此,所报告的发散解将是立即计算的最新收敛解 之前 已检测到发散。

备注

当达到精度时,由于舍入误差(当 adaptiveFalse )而这样的增长将被忽略。

备注

基于我们使用HST ACS/WFC图像的测试,设置 detect_divergenceTrue 将导致大约5-20%的性能损失,较大的惩罚对应于 adaptive 设置为 True . 因为启用此功能的好处超过了较小的性能损失,尤其是在 adaptive = False ,建议设置 detect_divergenceTrue ,除非对特定仪器图像的畸变模型进行大量测试,表明数值方法在广泛的坐标范围内(甚至在图像本身之外)具有良好的稳定性。

备注

发散逆解的指数将在 divergent 凸起的属性 NoConvergence 异常对象。

加薪
NoConvergence

方法未在由设置的指定最大迭代次数内收敛到所需精度的解决方案 maxiter 参数。要关闭此异常,请设置 quietTrue . 未达到要求精度的点的索引(如有)将列在 slow_conv 凸起的属性 NoConvergence 异常对象。

NoConvergence 有关详细信息的文档。

MemoryError

内存分配失败。

SingularMatrixError

线性变换矩阵是奇异的。

InconsistentAxisTypesError

坐标轴类型不一致或无法识别。

ValueError

参数值无效。

ValueError

坐标转换参数无效。

ValueError

x和y坐标阵列的大小不同。

InvalidTransformError

坐标转换参数无效。

InvalidTransformError

病态坐标变换参数。

笔记

输入世界数组的轴顺序由 CTYPEia FITS标题中的关键字,因此它可能不总是形式( radec )这个 latlnglattyplngtyp 成员可用于确定轴的顺序。

使用不动点迭代近似法,我们从初始近似开始迭代,初始近似是使用无失真感知计算的 wcs_world2pix() (或等效物)。

这个 all_world2pix() 函数使用连续近似法的矢量化实现,因此在以下情况下它是高效的(>30x) all 需要从天空坐标转换为图像坐标的数据点在 once . 因此,建议尽可能将需要转换为的所有点的长数组作为输入传递 all_world2pix() 而不是打电话 all_world2pix() 对于每个数据点。另请参见 adaptive 参数。

实例

>>> import astropy.io.fits as fits
>>> import astropy.wcs as wcs
>>> import numpy as np
>>> import os
>>> filename = os.path.join(wcs.__path__[0], 'tests/data/j94f05bgq_flt.fits')
>>> hdulist = fits.open(filename)
>>> w = wcs.WCS(hdulist[('sci',1)].header, hdulist)
>>> hdulist.close()
>>> ra, dec = w.all_pix2world([1,2,3], [1,1,1], 1)
>>> print(ra)  
[ 5.52645627  5.52649663  5.52653698]
>>> print(dec)  
[-72.05171757 -72.05171276 -72.05170795]
>>> radec = w.all_pix2world([[1,1], [2,1], [3,1]], 1)
>>> print(radec)  
[[  5.52645627 -72.05171757]
 [  5.52649663 -72.05171276]
 [  5.52653698 -72.05170795]]
>>> x, y = w.all_world2pix(ra, dec, 1)
>>> print(x)  
[ 1.00000238  2.00000237  3.00000236]
>>> print(y)  
[ 0.99999996  0.99999997  0.99999997]
>>> xy = w.all_world2pix(radec, 1)
>>> print(xy)  
[[ 1.00000238  0.99999996]
 [ 2.00000237  0.99999997]
 [ 3.00000236  0.99999997]]
>>> xy = w.all_world2pix(radec, 1, maxiter=3,
...                      tolerance=1.0e-10, quiet=False)
Traceback (most recent call last):
...
NoConvergence: 'WCS.all_world2pix' failed to converge to the
requested accuracy. After 3 iterations, the solution is
diverging at least for one input point.
>>> # Now try to use some diverging data:
>>> divradec = w.all_pix2world([[1.0, 1.0],
...                             [10000.0, 50000.0],
...                             [3.0, 1.0]], 1)
>>> print(divradec)  
[[  5.52645627 -72.05171757]
 [  7.15976932 -70.8140779 ]
 [  5.52653698 -72.05170795]]
>>> # First, turn detect_divergence on:
>>> try:  
...   xy = w.all_world2pix(divradec, 1, maxiter=20,
...                        tolerance=1.0e-4, adaptive=False,
...                        detect_divergence=True,
...                        quiet=False)
... except wcs.wcs.NoConvergence as e:
...   print("Indices of diverging points: {0}"
...         .format(e.divergent))
...   print("Indices of poorly converging points: {0}"
...         .format(e.slow_conv))
...   print("Best solution:\n{0}".format(e.best_solution))
...   print("Achieved accuracy:\n{0}".format(e.accuracy))
Indices of diverging points: [1]
Indices of poorly converging points: None
Best solution:
[[  1.00000238e+00   9.99999965e-01]
 [ -1.99441636e+06   1.44309097e+06]
 [  3.00000236e+00   9.99999966e-01]]
Achieved accuracy:
[[  6.13968380e-05   8.59638593e-07]
 [  8.59526812e+11   6.61713548e+11]
 [  6.09398446e-05   8.38759724e-07]]
>>> raise e
Traceback (most recent call last):
...
NoConvergence: 'WCS.all_world2pix' failed to converge to the
requested accuracy.  After 5 iterations, the solution is
diverging at least for one input point.
>>> # This time turn detect_divergence off:
>>> try:  
...   xy = w.all_world2pix(divradec, 1, maxiter=20,
...                        tolerance=1.0e-4, adaptive=False,
...                        detect_divergence=False,
...                        quiet=False)
... except wcs.wcs.NoConvergence as e:
...   print("Indices of diverging points: {0}"
...         .format(e.divergent))
...   print("Indices of poorly converging points: {0}"
...         .format(e.slow_conv))
...   print("Best solution:\n{0}".format(e.best_solution))
...   print("Achieved accuracy:\n{0}".format(e.accuracy))
Indices of diverging points: [1]
Indices of poorly converging points: None
Best solution:
[[ 1.00000009  1.        ]
 [        nan         nan]
 [ 3.00000009  1.        ]]
Achieved accuracy:
[[  2.29417358e-06   3.21222995e-08]
 [             nan              nan]
 [  2.27407877e-06   3.13005639e-08]]
>>> raise e
Traceback (most recent call last):
...
NoConvergence: 'WCS.all_world2pix' failed to converge to the
requested accuracy.  After 6 iterations, the solution is
diverging at least for one input point.
array_index_to_world(*index_arrays)

将阵列索引转换为世界坐标(由Astropy对象表示)。

如果使用单个高级对象来表示世界坐标(例如,如果 len(wcs.world_axis_object_classes) == 1 ),则按原样返回(不在元组/列表中),否则返回高级对象的元组。看到了吗 array_index_to_world_values 用于像素索引和排序约定。

array_index_to_world_values(*index_arrays)

将数组索引转换为世界坐标。

这和 pixel_to_world_values 但指标应在 (i, j) 订单,哪里有图像 i 是一排而且 j 是列(即与 pixel_to_world_values

如果 world_n_dim1 ,此方法返回单个标量或数组,否则返回标量或数组的元组。

calc_footprint(header=None, undistort=True, axes=None, center=True)[源代码]

计算图像在天空中的足迹。

脚印被定义为在应用了所有可用的扭曲之后图像的角点在天空中的位置。

参数
页眉Header 对象,可选Header对象,可选

曾经得到过 NAXIS1NAXIS2 标题和轴是互斥的,提供相同信息的替代方法。

undistort可选的布尔

如果 True ,考虑SIP和失真查找表

axes(int,int),可选

如果提供,请使用给定序列作为图像的形状。否则,使用 NAXIS1NAXIS2 用于创建此项的标题中的关键字 WCS 对象。

center可选的布尔

如果 True 使用像素的中心,否则使用角点。

返回
库尔德 :(4,2)数组( xy )坐标。(4,2)数组(

顺序是从左下角开始顺时针。

copy()[源代码]

返回对象的浅副本。

方便的方法,因此用户不必导入 copy STDLIB模块。

警告

使用 deepcopy 而不是 copy 除非你知道为什么你需要一个浅显的副本。

deepcopy()[源代码]

返回对象的深层副本。

方便的方法,因此用户不必导入 copy STDLIB模块。

det2im(*args)[源代码]

使用将探测器坐标转换为图像平面坐标 distortion paper 表查找更正。

输出是绝对像素坐标,而不是相对于 CRPIX .

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 2 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

返回
result数组

返回像素坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

加薪
MemoryError

内存分配失败。

ValueError

坐标转换参数无效。

dropaxis(dropax)[源代码]

从WCS中删除轴。

参数
wcsWCSWCS

要和纳西斯切碎

dropax利息

要删除的WCS的索引,从0开始计数(即python约定,而不是FITS约定)

返回
WCS

一个新的 WCS 少一个轴的实例

fix(translate_units='', naxis=None)[源代码]

从wcslib执行修复操作,并对其所做的任何更改发出警告。

参数
translate_units可选的STR

指定要执行的非标准单位字符串的潜在不安全转换。默认情况下,不执行任何操作。

虽然 "S" 通常用于表示秒,其翻译为 "s" 由于标准认可 "S" 正式地说是西门子,但很少使用。同样适用于 "H" 几个小时(亨利),还有 "D" 好几天(黛比)。

此字符串控制在这种情况下要执行的操作,并且不区分大小写。

  • 如果字符串包含 "s" ,翻译 "S""s" .

  • 如果字符串包含 "h" ,翻译 "H""h" .

  • 如果字符串包含 "d" ,翻译 "D""d" .

因此 '' 不会做任何不安全的翻译 'shd' 所有的都可以。

naxis整型数组,可选

图像轴长度。如果此数组设置为零或 None 然后 cylfix 不会被调用。

footprint_contains(coord, **kwargs)[源代码]

确定给定的SkyCoord是否包含在wcs示意图中。

参数
库尔德SkyCoordSkyCoord

要检查其是否在wcs坐标内的坐标。

**kwargs

传递给的其他参数 to_pixel

返回
response布尔

True表示WCS示意图包含坐标,False表示不包含坐标。

footprint_to_file(filename='footprint.reg', color='green', width=2, coordsys=None)[源代码]

写出一个 ds9 样式区域文件。它可以通过 ds9 .

参数
filename可选的STR

输出文件名-默认为 'footprint.reg'

color可选的STR

打印直线时要使用的颜色。

width可选的

区域线的宽度。

coordsys可选的STR

坐标系。如果未指定(默认),则 radesys 已使用值。有关所有可能的值,请参见http://ds9.si.edu/doc/ref/region.htmlRegionFileFormat

get_axis_types()[源代码]

类似 self.wcsprm.axis_types 但以更友好的Python格式提供信息。

返回
result字典列表

返回字典列表,每个轴对应一个字典,每个字典都包含有关该轴类型的属性。

每个字典都有以下键:

  • “坐标类型”:

    • 无:非特定坐标类型。

    • “斯托克斯”:斯托克斯坐标。

    • “天体”:天体坐标(包括 CUBEFACE

    • “光谱”:光谱坐标。

  • “比例”:

    • “线性”:线性轴。

    • “量子化”:量子化轴 (STOKESCUBEFACE

    • “非线性天体”:非线性天轴。

    • “非线性光谱”:非线性光谱轴。

    • “对数”:对数轴。

    • “表格”:表格轴。

  • '组'

    • 组号,例如查找表编号

  • '编号'

    • 对于天轴:

      • 0:经度坐标。

      • 1: 纬度坐标。

      • 2: CUBEFACE 数字。

    • 对于查阅表格:

      • 多维表中的轴号。

CTYPEia 在里面 "4-3" 具有无法识别的算法代码的窗体将生成错误。

p4_pix2foc(*args)[源代码]

使用将像素坐标转换为焦平面坐标 distortion paper 表查找更正。

输出是绝对像素坐标,而不是相对于 CRPIX .

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 2 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

返回
result数组

返回焦点坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

加薪
MemoryError

内存分配失败。

ValueError

坐标转换参数无效。

pix2foc(*args)[源代码]

使用将像素坐标转换为焦平面坐标 SIP 多项式失真约定和 distortion paper 表查找更正。

输出是绝对像素坐标,而不是相对于 CRPIX .

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 2 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

返回
result数组

返回焦点坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

加薪
MemoryError

内存分配失败。

ValueError

坐标转换参数无效。

pixel_to_world(*pixel_arrays)

将像素坐标转换为世界坐标(由高级对象表示)。

如果使用单个高级对象来表示世界坐标(例如,如果 len(wcs.world_axis_object_classes) == 1 ),则按原样返回(不在元组/列表中),否则返回高级对象的元组。看到了吗 pixel_to_world_values 用于像素索引和排序约定。

pixel_to_world_values(*pixel_arrays)

将像素坐标转换为世界坐标。

这种方法需要 pixel_n_dim 标量或数组作为输入,像素坐标应该从零开始。退换商品 world_n_dim 标量或数组,单位由 world_axis_units . 注意,在每个维度的第一个像素的中心,像素坐标被假定为0。如果像素位于未定义WCS的区域中,则可以返回NaN。坐标应在 (x, y) 订单,哪里有图像, x 是水平坐标和 y 是垂直坐标。

如果 world_n_dim1 ,此方法返回单个标量或数组,否则返回标量或数组的元组。

printwcs()[源代码]
proj_plane_pixel_area()[源代码]

对于一个 天空的 WCS(参见 astropy.wcs.WCS.celestial), returns pixel area of the image pixel at the CRPIX location once it is projected onto the "plane of intermediate world coordinates" as defined in Greisen & Calabretta 2002, A&A, 395, 1061 .

备注

这个函数是有关的 only 关于变换“图像平面”->“投影平面”和 not “关于天球”—>“关于天体平面的投影”。因此,该函数忽略了由于大多数投影的非线性性质而产生的失真。

备注

此方法仅在WCS包含天轴时返回合理的答案,即 celestial WCS对象。

返回
areaQuantity数量

像素的面积(在投影平面中) CRPIX 位置。

加薪
ValueError

像素区域仅为二维像素定义。很可能是 cd 矩阵 celestial WCS不是二阶方阵。

笔记

根据应用,像素区域的平方根可用于表示面积等于一般非方形像素的面积的等效方形像素的单个像素比例。

proj_plane_pixel_scales()[源代码]

沿图像像素的每个轴计算像素比例 CRPIX 将其投影到中定义的“中间世界坐标平面”后的位置 Greisen & Calabretta 2002, A&A, 395, 1061 .

备注

这种方法值得关注 only 关于变换“图像平面”->“投影平面”和 not “关于天球”—>“关于天体平面的投影”。因此,该函数忽略了由于大多数投影的非线性性质而产生的失真。

备注

此方法仅在WCS包含天轴时返回合理的答案,即 celestial WCS对象。

返回
规模 名单 Quantity名单

对应于每个像素边(轴)的投影平面增量向量。

reorient_celestial_first()[源代码]

重新定位WCS,使天轴在前,光谱轴在后,其他轴在后。假设至少存在天轴。

sip_foc2pix(*args)[源代码]

使用将焦平面坐标转换为像素坐标 SIP 多项式失真约定。

适合WCS distortion paper 不应用表查找失真校正,即使初始化它的FITS文件中存在该信息 WCS 对象。

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 2 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

返回
result数组

返回像素坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

加薪
MemoryError

内存分配失败。

ValueError

坐标转换参数无效。

sip_pix2foc(*args)[源代码]

使用将像素坐标转换为焦平面坐标 SIP 多项式失真约定。

输出以像素坐标表示,相对于 CRPIX .

适合WCS distortion paper 不应用表查找更正,即使在初始化它的FITS文件中存在该信息 WCS 对象。要纠正这个问题,请使用 pix2focp4_pix2foc .

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 2 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

返回
result数组

返回焦点坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

加薪
MemoryError

内存分配失败。

ValueError

坐标转换参数无效。

slice(view, numpy_order=True)[源代码]

使用Numpy切片对WCS实例进行切片。切片的顺序应该与自然的WCS顺序相反(对于数据)。

参数
view元组

包含与WCS系统相同切片数的元组。这个 step 方法(切片的第三个参数)当前不受支持。

numpy_order布尔

使用numpy顺序,即切片WCS,这样应用于numpy数组的相同切片将以相同的方式对数组和WCS进行切片。如果设置为 False ,WCS将按FITS顺序切片,这意味着第一个切片将应用于 last 纽比指数 第一 WCS轴。

返回
wcs_newWCSWCS

一种新的重采样WCS轴

sub(axes)[源代码]

从中提取子图像的坐标描述 WCS 对象。

子图像的世界坐标系必须是可分离的,即子图像中任何点的世界坐标必须仅依赖于提取的轴的像素坐标。实际上,这意味着 PCi_ja 原始图像的矩阵不得包含将任何子图像轴与任何非子图像轴关联的非零非对角项。

sub 也可以向wcsprm对象添加轴。新轴将使用Wcsprm构造函数设置的默认值创建,该构造函数生成一个简单、未命名的线性轴,其世界坐标等于像素坐标。可以在调用之前更改这些默认值 set .

参数
axes整数或序列。
  • 如果是int,则包括第一个 N 轴的原始顺序。

  • 如果序列包含图像轴编号(1-相对)或特殊轴标识符(见下文)的组合。顺序重要; axes[0] 是与子图像中的第一个轴相对应的输入图像的轴号,等等。使用0轴号可使用默认值创建新轴。

  • 如果 0[]None ,做一个深拷贝。

坐标轴类型可以使用字符串或特殊整数常量指定。可用类型包括:

  • 'longitude' / WCSSUB_LONGITUDE :天文经度

  • 'latitude' / WCSSUB_LATITUDE :天体纬度

  • 'cubeface' / WCSSUB_CUBEFACE :四边形立方体 CUBEFACE

  • 'spectral' / WCSSUB_SPECTRAL :光谱轴

  • 'stokes' / WCSSUB_STOKES :斯托克斯轴

  • 'temporal' / WCSSUB_TIME :时间轴(需要 WCSLIB 7.8版或更高版本)

  • 'celestial' / WCSSUB_CELESTIAL :组合的别名 'longitude''latitude''cubeface' .

返回
new_wcsWCS 对象WCS对象
加薪
MemoryError

内存分配失败。

InvalidSubimageSpecificationError

子图像规范无效(无光谱轴)。

NonseparableSubimageCoordinateSystemError

不可分离子像坐标系。

笔记

通过将整数常量与“二进制或”组合,可以按照在输入图像中出现的相同顺序提取特定类型的子图像轴的组合 (| )操作员。例如::

wcs.sub([WCSSUB_LONGITUDE | WCSSUB_LATITUDE | WCSSUB_SPECTRAL])

将以与输入图像相同的顺序提取经度、纬度和光谱轴。如果每一个都存在,结果对象将有三个维度。

为了方便, WCSSUB_CELESTIAL 定义为组合 WCSSUB_LONGITUDE | WCSSUB_LATITUDE | WCSSUB_CUBEFACE .

对于所有类型,也可以指定为“求反”的类型,例如:

wcs.sub([
  WCSSUB_LONGITUDE,
  WCSSUB_LATITUDE,
  WCSSUB_CUBEFACE,
  -(WCSSUB_SPECTRAL | WCSSUB_STOKES)])

最后一个指定除光谱或斯托克斯之外的所有轴类型。按照指定的顺序执行提取 axes ,即首先提取经轴(如果存在)(通过 axes[0] )而不是随后(通过 axes[3] ). 对于本例中的纬度轴和立方轴也是如此。

返回对象中的维度数可能小于或大于的长度 axes . 但是,它永远不会超过输入图像中的轴数。

swapaxes(ax0, ax1)[源代码]

交换WCS中的轴。

参数
wcsWCSWCS

WCS的轴被交换

ax0利息
ax1利息

要交换的WCS的索引,从0开始计算(即python约定,而不是FITS约定)

返回
WCS

一个新的 WCS 实例具有相同的轴数,但交换了两个

to_fits(relax=False, key=None)[源代码]

生成一个 HDUList 对象中存储的所有信息。这在逻辑上应该与输入FITS文件相同,但它将以多种方式标准化。

to_header 对于所生成的输出的一些警告。

参数
relaxbool或int,可选

允许程度:

  • False (默认):编写所有被认为是安全的和推荐的扩展。

  • True :编写WCS标准所有公认的非正式扩展。

  • int :选择要写入的特定扩展名的位字段。看见 astropy:relaxwrite 了解更多细节。

keySTR

要使用的特定WCS转换的名称。这可能是 ' ''A' -“Z”和对应于 ``"a" 部分 CTYPEia 卡。

返回
hdulist公司HDUListHDUList
to_header(relax=None, key=None)[源代码]

生成 astropy.io.fits.Header 对象中存储的基本WCS和SIP信息。这在逻辑上应该与输入FITS文件相同,但是它将以多种方式规范化。

警告

此函数不写出FITS WCS distortion paper 信息,因为这需要多个FITS头数据单元。若要获取此对象中所有内容的完整表示,请使用 to_fits .

参数
relaxbool或int,可选

允许程度:

  • False (默认):编写所有被认为是安全的和推荐的扩展。

  • True :编写WCS标准所有公认的非正式扩展。

  • int :选择要写入的特定扩展名的位字段。看见 astropy:relaxwrite 了解更多细节。

如果 relax 未给定关键字参数,并且输出中省略了任何关键字,则 AstropyWarning 显示。若要覆盖此值,请显式地将值传递给 relax .

keySTR

要使用的特定WCS转换的名称。这可能是 ' ''A' -“Z”和对应于 ``"a" 部分 CTYPEia 卡。

返回
页眉astropy.io.fits.Headerastropy.io.fits.Header

笔记

几乎可以肯定的是,输出标题在许多方面与输入不同:

  1. 输出标头仅包含与WCS相关的关键字。特别是,它不包含语法上需要的关键字,例如 SIMPLENAXISBITPIXEND .

  2. 不推荐(例如。 CROTAn )或者非标准用法将转换为标准(这部分取决于 fix 已应用)。

  3. 数量将被转换成内部使用的单位,基本上是SI加上度数。

  4. 浮点数可以采用不同的十进制精度。

  5. 元素 PCi_j 当且仅当它们与单位矩阵不同时,才会写出矩阵。因此,如果矩阵是统一的,那么就不会写出任何元素。

  6. 其他关键字,如 WCSAXESCUNITiaLONPOLEaLATPOLEa 可能会出现。

  7. 但是,原始的keycomments将丢失 to_header 努力写有意义的评论。

  8. 关键字顺序可以更改。

to_header_string(relax=None)[源代码]

相同的 to_header ,但返回包含头卡的字符串。

wcs_pix2world(*args, **kwargs)[源代码]

只需执行基本操作,即可将像素坐标转换为世界坐标 wcslib 转变。

SIPdistortion paper 应用查表修正。要执行失真校正,请参见 all_pix2worldsip_pix2focp4_pix2focpix2foc .

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 纳西族 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

对于非二维的转换,必须使用双参数形式。

ra_dec_order可选的布尔

什么时候? True 将确保世界坐标始终以( radec )对,而不考虑在中指定的轴的顺序 CTYPE 关键词。默认为 False .

返回
result数组

返回世界坐标,以度为单位。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

加薪
MemoryError

内存分配失败。

SingularMatrixError

线性变换矩阵是奇异的。

InconsistentAxisTypesError

坐标轴类型不一致或无法识别。

ValueError

参数值无效。

ValueError

坐标转换参数无效。

ValueError

x和y坐标阵列的大小不同。

InvalidTransformError

坐标转换参数无效。

InvalidTransformError

病态坐标变换参数。

笔记

结果的轴顺序由 CTYPEia FITS标题中的关键字,因此它可能不总是形式( radec )这个 latlnglattyplngtyp 成员可用于确定轴的顺序。

wcs_world2pix(*args, **kwargs)[源代码]

将世界坐标转换为像素坐标,仅使用基本 wcslib WCS转换。不 SIPdistortion paper 应用表查找转换。

参数
*args

位置参数有两种可接受的形式:

  • 2个参数:一个 N X 纳西族 坐标数组,以及 起源 .

  • 多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。

在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。

对于非二维的转换,必须使用双参数形式。

ra_dec_order可选的布尔

什么时候? True 将确保世界坐标始终以( radec )对,而不考虑在中指定的轴的顺序 CTYPE 关键词。默认为 False .

返回
result数组

返回像素坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。

加薪
MemoryError

内存分配失败。

SingularMatrixError

线性变换矩阵是奇异的。

InconsistentAxisTypesError

坐标轴类型不一致或无法识别。

ValueError

参数值无效。

ValueError

坐标转换参数无效。

ValueError

x和y坐标阵列的大小不同。

InvalidTransformError

坐标转换参数无效。

InvalidTransformError

病态坐标变换参数。

笔记

输入世界数组的轴顺序由 CTYPEia FITS标题中的关键字,因此它可能不总是形式( radec )这个 latlnglattyplngtyp 成员可用于确定轴的顺序。

world_to_array_index(*world_objects)

将世界坐标(由天体对象表示)转换为数组索引。

如果 pixel_n_dim1 ,此方法返回单个标量或数组,否则返回标量或数组的元组。看到了吗 world_to_array_index_values 用于像素索引和排序约定。索引应返回为四舍五入整数。

world_to_array_index_values(*world_arrays)

将世界坐标转换为数组索引。

这和 world_to_pixel_values 只是索引应该返回 (i, j) 订单,哪里有图像 i 是一排而且 j 是列(即与 pixel_to_world_values ). 索引应返回为四舍五入整数。

如果 pixel_n_dim1 ,此方法返回单个标量或数组,否则返回标量或数组的元组。

world_to_pixel(*world_objects)

将世界坐标(由Astropy对象表示)转换为像素坐标。

如果 pixel_n_dim1 ,此方法返回单个标量或数组,否则返回标量或数组的元组。看到了吗 world_to_pixel_values 用于像素索引和排序约定。

world_to_pixel_values(*world_arrays)

将世界坐标转换为像素坐标。

这种方法需要 world_n_dim 标量或数组作为输入,单位由 world_axis_units . 退换商品 pixel_n_dim 标量或数组。注意,在每个维度的第一个像素的中心,像素坐标被假定为0。如果世界坐标没有匹配的像素坐标,则可以返回NaN。坐标应该返回到 (x, y) 订单,哪里有图像, x 是水平坐标和 y 是垂直坐标。

如果 pixel_n_dim1 ,此方法返回单个标量或数组,否则返回标量或数组的元组。