cosmology_equal#

astropy.cosmology.cosmology_equal(cosmo1: Any, cosmo2: Any, /, *, allow_equivalent: bool = False) bool[源代码]#

返回宇宙学的元素相等性检查。

备注

目前,宇宙学的参数是标量的。

参数:
cosmo1, cosmo2Cosmology -喜欢类宇宙论

要比较的对象。必须可转换为 Cosmology ,由指定 format

format : boolNonestrtuple 其中,可选的仅关键字Bool或python:无或python:str或python:其元组,可选的仅关键字

是否允许将参数转换为 Cosmology 。这允许,例如 Table 相反,将被给予一个 CosmologyFalse (默认)不允许转换。 TrueNone 将,并将使用自动识别来尝试推断正确的格式。一个 str 被假定为转换时要使用的正确格式。注意事项 format 作为对象数组进行广播,以匹配 cosmos 所以 format 无法确定输出形状。

allow_equivalent : bool ,可选的仅关键字Bool,可选的仅关键字

是否允许宇宙论相等,即使它们不属于同一类。例如,一个 LambdaCDM 可能有过 \(\Omega_0=1\)\(\Omega_k=0\) 因此是平坦的,就像 FlatLambdaCDM

实例

假设以下导入

>>> import astropy.units as u
>>> from astropy.cosmology import FlatLambdaCDM

两个相同的宇宙观是相等的。

>>> cosmo1 = FlatLambdaCDM(70 * (u.km/u.s/u.Mpc), 0.3)
>>> cosmo2 = FlatLambdaCDM(70 * (u.km/u.s/u.Mpc), 0.3)
>>> cosmology_equal(cosmo1, cosmo2)
True

而具有不同参数的宇宙学则不是。

>>> cosmo3 = FlatLambdaCDM(70 * (u.km/u.s/u.Mpc), 0.4)
>>> cosmology_equal(cosmo1, cosmo3)
False

两个宇宙论可能是等价的,即使它们不属于同一类。在这些示例中, LambdaCDMOde0 设置为与中计算的值相同 FlatLambdaCDM

>>> from astropy.cosmology import LambdaCDM
>>> cosmo3 = LambdaCDM(70 * (u.km/u.s/u.Mpc), 0.3, 0.7)
>>> cosmology_equal(cosmo1, cosmo3)
False
>>> cosmology_equal(cosmo1, cosmo3, allow_equivalent=True)
True

而在这个例子中,宇宙论是不等价的。

>>> cosmo4 = FlatLambdaCDM(70 * (u.km/u.s/u.Mpc), 0.3, Tcmb0=3 * u.K)
>>> cosmology_equal(cosmo3, cosmo4, allow_equivalent=True)
False

此外,使用关键字参数,相等的概念被扩展到任何可以转换为 Cosmology

>>> mapping = cosmo2.to_format("mapping")
>>> cosmology_equal(cosmo1, mapping, format=True)
True

其中一个(或两个)参数可以是 Cosmology -就像.

>>> cosmology_equal(mapping, cosmo2, format=True)
True

有效格式的列表,例如 Table 在本例中,可以用 Cosmology.from_format.list_formats()

从格式列表中可以看到,并不是所有的格式都可以通过 Cosmology.from_format.registry 。仍然可以检查这些类型的对象是否相等,但必须使用正确的格式字符串。

>>> yml = cosmo2.to_format("yaml")
>>> cosmology_equal(cosmo1, yml, format=(None, "yaml"))
True

这也适用于一组 format 与宇宙的数量相匹配。

>>> cosmology_equal(mapping, yml, format=[True, "yaml"])
True