跳转到主要内容

宇宙学API标准

项目描述

目前有大量的(Python)宇宙学库,从大型项目——包括 AstropyCLASSCAMB ——到小型个人脚本。这些库执行许多相同的任务,但它们都具有不同的接口,不同的工作方式。这使得在库之间切换变得困难,几乎不可能编写与多个库一起工作的代码。

Python宇宙学API解决了这个问题,为宇宙学代码提供详细的接口,从单个方法和函数到具有全部功能的宇宙学对象,甚至整个库。最好的是,使用宇宙学API不需要任何运行时依赖项,甚至这个库本身!

使用宇宙学API,您可以编写与实现API的任何内容协同工作的代码,即许多不同的宇宙学库。我们提供易于使用、定义明确的描述,您可以构建与任何支持库协同工作的函数。例如

# No implementation, just a description of the interface!
from cosmology.api import StandardCosmology


def flat_angular_diameter_distance(
    cosmo: StandardCosmology[Array, Array], z: Array
) -> Array:
    # Do some cosmology with any object that implements the API
    if cosmo.Omega_k != 0:
        raise ValueError("This function only works for flat cosmologies")
    return cosmo.comoving_distance(z) / (1 + z)

支持