已验证宇宙学函数库。

pyccl的Python项目详细描述


ccl构建状态coverage status

lsst-desc核心宇宙学库(ccl)提供了计算基本宇宙学观测值的例程,并验证了数值精度。该库是用C99编写的,所有功能都可以直接从C和C++代码中调用。我们还为高级函数提供python绑定。

此软件是一个公开发布的lsst-desc产品,它是在lsst-desc中使用lsst-desc资源开发的。desc用户应根据lsst desc publication policy使用它。欢迎外部用户根据下面的许可信息使用DESC之外的代码。

此软件包的公开发布版本列表可以在这里找到。主分支是最新的(未发布的)稳定分支,但正在开发中。我们建议使用其中一个公开发行版,除非正在开发库。

安装说明可以在该目录的install.md中找到。可以找到ccl的文档:

TLDR

ccl通过pypi以python包的形式提供。要安装,只需运行:

$ pip install pyccl

只要在您的系统上安装了cmake(如果不遵循下面的详细说明),这就可以工作。 一旦安装了cclccl,请按照这里的一些示例笔记本进行旋转。

ccl有两种形式:c库和python模块。这些组件可以 独立安装,说明如下。

依赖关系和要求

ccl需要以下软件和库:

此外,ccl的构建系统依赖于以下软件:

cmake是需要手动安装的唯一要求

  • 在ubuntu上:
$ sudo apt-get install cmake
  • 在MacOS X上:
    • 使用此下载页中的admg包安装
    • 使用包管理器安装(brewmacportsfink)。例如,使用brew:
    $ brew install cmake
    

在构建ccl之前,最好在系统上安装gslfftw。 但只有在您想正确安装c库时才需要,否则 cmake将自动下载并按顺序生成缺少的需求 编译ccl

要同时安装所有依赖项,并避免重新编译它们,例如在ubuntu上:

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev

编译并安装ccl c库

下载最新版本的ccl

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL

或者从这里下载并提取最新的稳定版本。然后,从基目录ccl运行:

$ mkdir build &&cd build
$ cmake ..

这将运行配置脚本,尝试检测所需的依赖项 在你的机器上生成一个makefile。一旦配置了cmake,就可以构建 安装库,只需运行build目录:

$ make
$ make install

通常需要管理员权限才能安装库。如果您只需要输入:

$ sudo make install

注意:这是默认的安装过程,但取决于您的系统 您可能需要自定义intall进程。以下是一些常见的配置 选项:

  • C编译器:如果您的计算机上有多个C编译器,您可能会 需要通过设置环境 因此,在运行之前
$ exportCC=gcc
  • 安装目录:默认情况下,cmake将尝试在/usr/local中安装ccl 而是在用户定义的目录中安装ccl(例如,如果没有 管理员权限),您可以通过运行以下命令将其指定为cmake
$ pip install pyccl
0

这将指示cmake在以下文件夹中安装ccl/path/to/install/include/path/to/install/share/path/to/install/lib

根据安装位置的不同,可能需要添加安装路径 到您的pathld_library_path环境变量。默认情况下 箱子,看起来像:

$ pip install pyccl
1

为了确保一切正常工作,可以在安装后从根目录ccl运行所有单元测试:

$ pip install pyccl
2

假设测试通过,您已经成功安装了ccl

如果需要卸载ccl,请从build目录运行以下命令:

$ pip install pyccl
3

如果在受保护的文件夹中安装了ccl,则可能需要预先准备一个sudo

安装pyccl python模块

ccl还附带了一个python包装器,名为pyccl,可以构建 无论是否安装C库,都将安装。为了方便,我们 提供一个pypi托管包,只需运行:

$ pip install pyccl
4

这只假设cmake在系统,你不需要 自己下载源代码。

您还可以从ccl源代码构建并安装pyccl 安装C库。下载最新版本的ccl

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL

在根目录下,只需运行:

$ pip install pyccl
6

pyccl模块将安装到您的pythonpath中的合理位置, 所以应该由python解释器自动获取。你可以简单地 使用import pyccl导入模块

您可以通过运行 python-c"import pyccl"并检查是否返回错误。

要进行更深入的测试以确保一切正常运行,请从根目录运行 ccl目录:

$ pip install pyccl
7

这将运行嵌入式单元测试(可能需要几分钟)。

无论使用何种安装方法,您都可以通过运行以下命令来卸载python包装器:

$ pip install pyccl
8

要快速介绍python中的ccl

已知的安装问题

  1. 如果系统中有多个C编译器,cmake可能不是默认值 给你想用的那个。您可以指定将使用哪个C编译器来编译 ccl在调用任何cmakepython setup.py命令之前设置cc环境变量
$ pip install pyccl
9
  1. 如果在运行C测试时,类中出现错误,表示找不到文件sbbn_2017.dat,则系统找不到类的本地副本。要解决此问题,请执行
$ sudo apt-get install cmake
0

或者将其添加到.bashrc

开发工作流

在进行开发时,在系统上安装ccl不是一个好主意,您可以 可以直接从本地副本编译和运行所有库和示例。

当没有实际安装库时,唯一的微妙之处是 定义环境变量ccl_param_file指向include/ccl_params.ini

$ sudo apt-get install cmake
1

未能定义此环境变量将导致异常。

使用C库

以下是使用C库时的一些常见步骤:

  • 克隆本地副本和ccl并编译它:
$ sudo apt-get install cmake
2
  • 从主服务器更新本地副本,重新编译需要重新编译的内容,以及 运行测试套件:
$ sudo apt-get install cmake
3
  • 编译(或重新编译)ccl/examples文件夹中的示例:
$ sudo apt-get install cmake
4
  • 从头重新配置(以防出现严重错误):
$ sudo apt-get install cmake
5
  • 正在调试模式下生成CCL。这将禁用优化并允许您 使用调试器:
$ sudo apt-get install cmake
6

使用python库

以下是使用python模块时的几个常见步骤:

  • 构建python模块:
$ sudo apt-get install cmake
7

之后,您可以从根ccl文件夹启动解释器并导入 PYCl</P>

  • 修改C库后运行测试:
$ sudo apt-get install cmake
8

根据类的外部版本编译

ccl的默认安装过程意味着自动下载和安装标记版本的。也可以根据不同版本的类链接ccl。如果要使用修改后的,或使用标准的其他版本或更新版本,则此功能非常有用。

要使用外部版本的类编译ccl,只需运行下面的cmake 在安装的第一个配置步骤中的命令(从b生成目录,确保它为空以获得干净的配置:

$ sudo apt-get install cmake
9

构建过程的其余部分应该相同。

Docker映像安装

生成docker映像的dockerfile作为dockerfile包含在ccl存储库中。这可以用来创建一个镜像,Docker可以把它作为一个虚拟机,允许您在任何基础设施上使用ccl,而无需太多麻烦。docker和安装过程的详细信息可以在https://www.docker.com/" rel="nofollow">https://www.docker.com/上找到。安装Docker后,创建一个映像是一个简单的过程!在您选择的终端(Docker正在运行)中,在ccl目录中键入命令Docker build-tcl.

生成的Docker映像有两个主要功能。第一个是一个CMD,它将打开绑定到本地计算机端口的Jupyter笔记本。这可以与以下运行命令一起使用:docker run-p 8888:8888 ccl。然后,您可以在localhost:8888的浏览器中访问笔记本电脑。第二种是访问bash本身,这可以使用docker run-it ccl bash来完成。

此dockerfile当前包含所有已安装的c库和python包装器。它目前使用continumio/anaconda作为基础映像,并支持ipython和jupyter笔记本。由于虚拟化,应该会有最小的减速。

文档

ccl有其c例程的基本文档。这可以在ccl存储库中的doc/html目录中找到,方法是在浏览器中打开index.html文件。python例程是在本地编写的;您可以通过从python中调用help(function name)来查看函数的文档。

本文档包含有关使用的结构和函数的基本信息。在文档末尾提供了实现这些基本功能的代码(也在examples/ccl_sample_run.c中)。有关ccl函数和实现的更多信息,请参见doc/0000-ccl_note/0000-ccl_note.pdf

宇宙学参数

首先定义结构中定义的宇宙学参数。这种结构(精确定义见include/ccl_core.h)包含物质密度、暗能量参数(w0wa)、哈勃参数、原始功率谱、辐射参数、导出参数(sigma_),欧米茄1号z戋星)和修正增长率。

目前,支持以下型号系列:

  • 平坦∧cdm
  • wcdm和cpl模型(w0+wa)
  • 非零曲率(k)
  • 任意的、用户定义的修正增长函数
  • 单个质量中微子物种或多个等质量中微子(与用户定义的修正生长函数不兼容)

您可以通过函数ccl_parameters_create来初始化此结构,该函数返回类型为ccl_parameters的对象

$ brew install cmake
0

其中:

  • 欧米茄c冷暗物质
  • 欧米茄b:重子
  • 欧米茄k曲率
  • n_nu_rel:相对论物种的数量
  • n努质量:n努质量
  • mnu:deneutrino masssc
  • w0:暗能量状态参数eqn
  • wa:暗能量状态参数,时变
  • h:哈勃常数,单位为100 km/s/mpc
  • 标准pk:功率谱的标准化,a_s或sigma_8
  • n_s:原始功率谱的幂律指数
  • nz_mgrowth:提供修改的增长的红移数
  • zarr_mgrowth:提供修改的增长的红移数组
  • dfarr_mgrowth:提供了修改后的增长函数向量
  • 状态:状态标志。如果没有错误,则为0;否则为非0。

对于平面lcdm宇宙学,还可以使用ccl_parameters_create_flat_lcdm

状态标志int status=0几乎在每个ccl函数中传递。如果函数调用过程中出现错误,则通常在非零时返回零。有关特定情况,请参阅ccl_error.c的文档。

ccl宇宙学中的对象

对于大多数ccl函数,您需要一个类型为ccl宇宙学的对象,它可以由函数ccl宇宙学create初始化。

$ brew install cmake
1

注意,函数返回一个指针。变量params类型ccl_parameters包含上一步创建的宇宙学参数。structureccl_配置包含有关计算传递函数、物质功率谱、重子对物质功率谱和质量函数的影响的方法的信息(有关可用方法,请参见include/ccl_config.h)。在默认配置中,default_configccl将使用以下设置:

$ brew install cmake
2

使用完此宇宙学对象后,应通过"ccl宇宙学自由"释放其工作空间

$ brew install cmake
3

距离、生长因子和密度参数函数

利用定义的宇宙学,我们现在可以计算距离、生长因子(和速率)、西格玛8或密度参数。对于合并径向距离,您可以调用函数ccl\u合并径向距离

$ brew install cmake
4

它返回到比例因子a的距离,单位为mpc。对于亮度距离调用函数

$ brew install cmake
5

它还返回以mpc为单位的距离。对于生长因子(在z=0时标准化为1),在sale factora时调用ccl\u growth factor

$ brew install cmake
6

为了评估密度参数(例如物质、暗能量或辐射),调用函数

$ brew install cmake
7

其中,cclωu x_标签定义了物种类型:'matter'(0)'dark_energy'(1)'radiation'(2),以及'curvature'(3)

有关计算距离、生长速率和密度参数(例如一次多次)的更多例程,请参见文件include/ccl_background.h

物质功率谱与sigma_8

对于给定的宇宙学,我们可以使用函数计算线性和非线性物质的功率谱

$ brew install cmake
8

通过将"重子功率谱"标志设置为"ccl bcm",可以合并重子过程对总物质功率谱的影响。有关实施的详细信息,请参阅CCL说明。 sigma_可以通过函数ccl_sigma8计算,或者更一般地通过函数ccl_sigma r计算,该函数计算由球形顶帽窗函数平滑的密度场在共移动距离上的方差r(在mpc中)。

αααα39

不同物质功率谱的这些和其他函数可以在文件include/ccl_power.h中找到。

角功率谱

ccl可以计算三种示踪类型的角功率谱:星系数计数、星系弱透镜和cmb透镜。示踪剂参数在结构中定义。一般来说,您可以使用函数ccl_cl_tracer创建此对象

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
0

这些参数的确切定义在文件include/ccl_cls.h中进行了描述。通常您可以使用此函数的简化版本,即ccl_cl_tracer_number_countsccl_cl_tracer_number_counts_simpleccl_cl_tracer lensingccl_cl_tracer_lensing_simpleccl_cl_tracer_cmblens。两个最简化的版本(一个用于计数,另一个用于剪切)采用参数:

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
1

其中,n z n是数组z nn的维数(容器数)。z nn是每个红移间隔的对象数的数组(任意规范化-内部重新规范化)。nz-bz-bb对于聚类偏差是相同的。

在计算角功率谱之前,用户必须定义包含计算相关参数的工作空间结构:

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
2

其中,lmax设置最大多极,l撸limber使用limber近似的极限多极(l撸limber=-1表示从未使用liber近似)。可以将non-limber_method变量设置为ccl_nonlimber_method_nativeccl_nonlimber_angpow以选择计算角功率谱非limber部分的方法(nativeccl代码或angpow库)。然后,l_linstep设置在每个多极计算角功率谱之前的最大多极,以及l_logstep使用上面的对数步进l戋linstep(然后在每个多极插值功率谱)。dchi设置用于本机非平稳计算的共动距离间隔,以及dlk傅里叶k积分的对数步进(angpow与这两个参数无关)。提供了一个简化的工作空间,用于仅在每个多极使用Limber近似的计算:

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
3

使用初始化的跟踪器和工作区,您可以使用ccl\u angular\u cls

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
4

使用l_outcl_out包含多极和角功率谱的大小nl_out数组。

使用完跟踪器后,您应该通过以下方式释放其工作空间:ccl_cl_tracer_freeccl_cl_work space_free

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
5

请注意,angpow暂时不能处理星系数计数跟踪器的放大透镜项,并且还没有测试过弱透镜跟踪器。这一限制将在不久的将来消除。

晕质量函数

晕质量函数dn/dm可以通过函数ccl_massfunc

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
6

其中smooth_mass是质量平滑比例(单位为m_sun),而odelta是增量的选择。有关更多详细信息(或其他函数,如sigma m),请参见include/ccl_mass func.hsrc/mass_func.c

红移分布

在计算功率谱和相关函数等观测值时,用户当然可以加载自己的红移分布。然而,ccl还包括计算photo-z切割定义的层析成像仓中红移分布的便利函数,给出了光度红移模型和真实红移分布的模型。

首先定义由函数给定的光度红移模型

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
7

它返回在给定光谱红移z/code>的情况下测量特定光度红移z/ph的可能性,并带有指向附加参数param的指针和状态标志。然后调用函数ccl_create_photoz_info

$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
8

它创建一个结构,其中包含计算p(z,z')

所需的信息
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
9

类似地,定义真正红移分布的分析形式:

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
0

然后调用函数ccl_create_dndz_info

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
1

通过函数ccl-dn dz-tomog,可以得到具有给定binning的透镜星系或星系团的期望dn/dz

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
2

结果返回到tomoout

使用完photo_z后,您应该通过ccl_free_photoz_info来释放其工作空间

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
3

同样,对于真正的红移分布:

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
4

示例代码

此代码也可以在examples/ccl_sample_run.c中找到,您可以运行以下示例代码。为此,您需要使用以下命令进行编译:

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
5

其中,/path/to/install/是指向已安装库的位置的路径。

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
6

python包装器

ccl的python包装器是通过名为pyccl的模块提供的。整个ccl接口可以通过常规的python函数和类访问,所有计算都通过c代码在后台进行。所有函数都支持numpy数组作为输入和输出,任何循环都在c代码中执行以提高速度。

python模块的功能与c库基本相同,只是以一种更标准的类似python的方式表示。与任何python模块一样,您可以使用内置的pythonhelp()函数检查可用函数及其参数。

下面是一个简单的python脚本示例,它创建了一个新的宇宙学对象,然后使用它计算简单透镜互相关的角功率谱。在典型的笔记本电脑上应该需要几秒钟。

$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
7

有关已知的安装问题以及在开发过程中如何对ccl进行基准测试的更多信息,请参见我们的wiki

许可证、信用证、反馈等

此代码已由DESC发布,但仍在积极开发中。它附带了一篇日志文件,描述了ccl的开发和验证,您可以在doc/ccl_paper文件夹中找到。欢迎您重新使用该代码,该代码是开放源码的,其条款与我们的许可证一致,即absd 3-clause许可证。如果您在自己的研究中使用了本软件包中的任何思想或软件,请将其引用为"(lsst desc,正在准备)"并提供指向此存储库的链接:https://github.com/lsstdesc/ccl。为了免费使用库,开发ERS要求引用文件:II类:近似方案,D.Blas,J.Lesgourgues,T.Tram,ARXIV:1104.2933,JCAP 1107(2011)034。存储库可以在http://class code.net中找到。最后,ccl使用来自fftlog包的代码。我们已获得fftlog作者的许可,可以包含其源代码的修改版本。

联系人

如果您有意见、问题或反馈,请给我们写一个问题。您还可以联系管理员

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Map<String,String>传递给需要Map<String,Object>   java在循环中使用字符串而不是StringBuilder是否会造成内存损失?   jnlp如何更新java控制台JRE?   java更改、修改和重新打包CXFAPI源文件   JavaFXJava应用程序在Fedora上运行一段时间后关闭   使用来自不同类的方法的java   java如何通过ant脚本在linux中使用subst?   java在使用camunda modeler进行base64编码/解码时出错   获取java。netbeans、weblogic和fastswap设置为true时的lang.NoSuchMethodError   java如何提高FinalizerThread在GC中收集对象的优先级   java检测具有相同根的单词   netbeans crud应用程序中的java错误