CompoundModel#

class astropy.modeling.CompoundModel(op, left, right, name=None)[源代码]#

基类:Model

复合模型的基类。

虽然它可以直接使用,但建议通过模型运算符组合模型。

属性摘要

eqcons 

参数相等约束列表。

fittable 

在复合模型上设置“适配”属性。

has_user_bounding_box 

一个标志,指示用户是否已通过赋值给此模型指定自定义边界框 model.bounding_box .

ineqcons 

参数不等式约束列表。

input_units 

此属性用于指示evaluate方法所需的单元或单元集,并返回将输入映射到单元(或 None 如果接受任何单位)。

input_units_allow_dimensionless 

允许无量纲输入(和相应的输出)。

input_units_equivalencies 

input_units_strict 

对要评估的输入执行严格的单位。

isleaf 

n_inputs 

模型输入的数量。

n_outputs 

模型的输出数量。

n_submodels 

返回单个模型中组件的数量,显然是1。

param_names 

参数名的有序列表。

return_units 

此属性用于指示evaluate的输出应包含哪些单元或单元集,并返回将输出映射到单元(或)的字典 None 如果接受任何单位)。

submodel_names 

返回子模型的名称 CompoundModel .

方法总结

evaluate(*args, **kw)

在一些输入变量上评估模型。

inputs_map \()

将此表达式树的输入名称映射到叶模型的输入。

outputs_map \()

将此表达式树的输出名称映射到叶模型的输出。

rename \(名称)

使用新名称、输入或输出创建此模型类的副本。

render([out, coords])

在固定位置评估模型,考虑 bounding_box .

replace_submodel(name, model)

构建新的 CompoundModel 实例,将命名子模型替换为新模型。

traverse_postorder([include_operator])

CompoundModel树的后序遍历。

with_units_from_data(**kwargs)

看见 with_units_from_data 有关此方法的概述,请参阅。

without_units_for_data(**kwargs)

看见 without_units_for_data 有关此方法的概述,请参阅。

属性文档

eqcons#
fittable#

在复合模型上设置“适配”属性。

has_user_bounding_box#

一个标志,指示用户是否已通过赋值给此模型指定自定义边界框 model.bounding_box .

ineqcons#
input_units#
input_units_allow_dimensionless#
input_units_equivalencies#
input_units_strict#
isleaf#
n_inputs#

输入的数目。

n_outputs#

输出的数目。

n_submodels#
param_names#

描述此类型模型的参数的名称。

此元组中的参数与初始化特定类型的模型时应传入的顺序相同。某些类型的模型,如多项式模型,根据模型的某些其他属性(如阶数)有不同数量的参数。

定义自定义模型类时,此属性的值由 Parameter 在类中定义的body属性。

return_units#
submodel_names#

返回子模型的名称 CompoundModel .

方法文件

evaluate(*args, **kw)[源代码]#

在一些输入变量上评估模型。

inputs_map()[源代码]#

将此表达式树的输入名称映射到叶模型的输入。

outputs_map()[源代码]#

将此表达式树的输出名称映射到叶模型的输出。

rename(name)[源代码]#

使用新名称、输入或输出创建此模型类的副本。

新类在技术上是原始类的子类,因此实例和类型检查仍然有效。例如::

>>> from astropy.modeling.models import Rotation2D
>>> SkyRotation = Rotation2D.rename('SkyRotation')
>>> SkyRotation
<class 'astropy.modeling.core.SkyRotation'>
Name: SkyRotation (Rotation2D)
N_inputs: 2
N_outputs: 2
Fittable parameters: ('angle',)
>>> issubclass(SkyRotation, Rotation2D)
True
>>> r = SkyRotation(90)
>>> isinstance(r, Rotation2D)
True
render(out=None, coords=None)[源代码]#

在固定位置评估模型,考虑 bounding_box .

与直接评估模型相关的关键区别在于,如果 Model.bounding_box 属性已设置。

参数:
outnumpy.ndarray 可选努比·恩达雷,可选

将向其添加计算模型的数组。如果这不是 None ),将创建一个新数组。

coords : array_like ,可选NumPy:ARRAY_LIKE,可选

用于将模型的输入坐标转换为 out 数组。它应该具有 self(coords) 产生的形状与 out . 如果 out 未指定, coords 将用于确定返回数组的形状。如果没有提供(或没有),则将在由 Model.bounding_box .

返回:
outnumpy.ndarraynumpy.ndarray

模型添加到 out 如果 out 不是 None ,或者从评估模型中得到一个新数组 coords .如果 outcoords 都是 None ,返回的数组仅限于 Model.bounding_box 限制。如果 Model.bounding_boxNonearrcoords 必须通过。

加薪:
ValueError

如果 coords 不是给定的,并且 Model.bounding_box 未设置此型号的。

实例

基于边界盒的高效模型渲染

replace_submodel(name, model)[源代码]#

构建新的 CompoundModel 实例,将命名子模型替换为新模型。

为了确保保留/重建反转和名称,有必要从被替换的节点一直重新构建CompoundModel。原始的CompoundModel保持不变。

参数:
name : strPython :字符串

要替换的子模型的名称

模型Model模型

更换型号

traverse_postorder(include_operator=False)[源代码]#

CompoundModel树的后序遍历。

with_units_from_data(**kwargs)[源代码]#

看见 with_units_from_data 有关此方法的概述,请参阅。

笔记

这会修改基本方法的行为,以解决复合模型的子模型具有不同输出单位的情况。这只对复合*和/复合模型有效,因为在这种情况下,混合输出单元是合理的。为了做到这一点,它需要输出一些额外的信息 without_units_for_data passed as keyword arguments under the keywords _ Left_kwargs``和  ``_right_kwargs

在混合输出单位之外,此方法与基本方法相同。

without_units_for_data(**kwargs)[源代码]#

看见 without_units_for_data 有关此方法的概述,请参阅。

笔记

这会修改基本方法的行为,以解决复合模型的子模型具有不同输出单位的情况。这只对复合*和/复合模型有效,因为在这种情况下,混合输出单元是合理的。它通过使用另一个子模型的输出单位修改每个子模型的输出单位来实现这一点,以便我们可以应用原始函数并获得所需的结果。

必须在混合输出单元的情况下输出附加数据,以便通过以下方式正确地重建单元 with_units_from_data

在混合输出单位之外,此方法与基本方法相同。