cosmology_equal#
- astropy.cosmology.cosmology_equal(cosmo1: Any, cosmo2: Any, /, *, allow_equivalent: bool = False) bool [源代码]#
返回宇宙学的元素相等性检查。
备注
目前,宇宙学的参数是标量的。
- 参数:
- cosmo1, cosmo2 :
Cosmology
-喜欢类宇宙论 要比较的对象。必须可转换为
Cosmology
,由指定format
。- format : bool 或
None
或str
或tuple
其中,可选的仅关键字Bool或python:无或python:str或python:其元组,可选的仅关键字 是否允许将参数转换为
Cosmology
。这允许,例如Table
相反,将被给予一个Cosmology
。False
(默认)不允许转换。True
或None
将,并将使用自动识别来尝试推断正确的格式。一个str
被假定为转换时要使用的正确格式。注意事项format
作为对象数组进行广播,以匹配cosmos
所以format
无法确定输出形状。- allow_equivalent : bool ,可选的仅关键字Bool,可选的仅关键字
是否允许宇宙论相等,即使它们不属于同一类。例如,一个
LambdaCDM
可能有过 \(\Omega_0=1\) 和 \(\Omega_k=0\) 因此是平坦的,就像FlatLambdaCDM
。
- cosmo1, cosmo2 :
实例
假设以下导入
>>> 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
两个宇宙论可能是等价的,即使它们不属于同一类。在这些示例中,
LambdaCDM
有Ode0
设置为与中计算的值相同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