已验证宇宙学函数库。
pyccl的Python项目详细描述
ccl
lsst-desc核心宇宙学库(ccl
)提供了计算基本宇宙学观测值的例程,并验证了数值精度。该库是用C99编写的,所有功能都可以直接从C和C++代码中调用。我们还为高级函数提供python绑定。
此软件是一个公开发布的lsst-desc产品,它是在lsst-desc中使用lsst-desc资源开发的。desc用户应根据lsst desc publication policy使用它。欢迎外部用户根据下面的许可信息使用DESC之外的代码。
此软件包的公开发布版本列表可以在这里找到。主分支是最新的(未发布的)稳定分支,但正在开发中。我们建议使用其中一个公开发行版,除非正在开发库。
安装说明可以在该目录的install.md中找到。可以找到ccl
的文档:
- 在该目录中的doc.md中查看概述,
- 关于基准测试和已知安装问题的描述,请参见我们的wiki
- 在
ccl
docs页面中,阅读python
例程, - 从
python中调用
help(函数名)
,然后- 在c例程存储库中
doc
文件夹中包含的doxygen文档中。- 在c、python和jupyter笔记本电脑的
examples
文件夹中也有多个示例。 - 在c例程存储库中
TLDR
ccl
通过pypi以python包的形式提供。要安装,只需运行:
$ pip install pyccl
只要在您的系统上安装了cmake
(如果不遵循下面的详细说明),这就可以工作。
一旦安装了cclccl
,请按照这里的一些示例笔记本进行旋转。
ccl有两种形式:c库和python模块。这些组件可以 独立安装,说明如下。
依赖关系和要求
ccl
需要以下软件和库:
此外,ccl
的构建系统依赖于以下软件:
在构建ccl之前,最好在系统上安装 要同时安装所有依赖项,并避免重新编译它们,例如在ubuntu上: 下载最新版本的ccl
或者从这里下载并提取最新的稳定版本。然后,从基目录 这将运行配置脚本,尝试检测所需的依赖项
在你的机器上生成一个makefile。一旦配置了cmake,就可以构建
安装库,只需运行 通常需要管理员权限才能安装库。如果您只需要输入: 注意:这是默认的安装过程,但取决于您的系统
您可能需要自定义intall进程。以下是一些常见的配置
选项: 这将指示cmake在以下文件夹中安装 根据安装位置的不同,可能需要添加安装路径
到您的 为了确保一切正常工作,可以在安装后从根目录 假设测试通过,您已经成功安装了 如果需要卸载ccl,请从 如果在受保护的文件夹中安装了ccl,则可能需要预先准备一个sudo。 这只假设 您还可以从cmake
是需要手动安装的唯一要求
$ sudo apt-get install cmake
gsl
和fftw
。
但只有在您想正确安装c库时才需要,否则
cmake
将自动下载并按顺序生成缺少的需求
编译ccl$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev
编译并安装ccl c库
$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
ccl
运行:$ mkdir build &&cd build
$ cmake ..
build
目录:$ make
$ make install
$ sudo make install
$ exportCC=gcc
cmake
将尝试在/usr/local
中安装ccl
而是在用户定义的目录中安装ccl(例如,如果没有
管理员权限),您可以通过运行以下命令将其指定为
cmake
:
0
$ pip install pyccl
ccl
:/path/to/install/include
,/path/to/install/share
,/path/to/install/lib
。
path
和ld_library_path
环境变量。默认情况下
箱子,看起来像:
1
$ pip install pyccl
ccl
运行所有单元测试:
2
$ pip install pyccl
ccl
!build
目录运行以下命令:
3
$ pip install pyccl
安装pyccl python模块
ccl
还附带了一个python包装器,名为pyccl
,可以构建
无论是否安装C库,都将安装。为了方便,我们
提供一个pypi托管包,只需运行:
4
$ pip install pyccl
cmake
在系统,你不需要
自己下载源代码。ccl
源代码构建并安装pyccl
安装C库
$ 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
,则系统找不到类的本地副本。要解决此问题,请执行已知的安装问题
cmake
可能不是默认值
给你想用的那个。您可以指定将使用哪个C编译器来编译
ccl
在调用任何cmake
或python setup.py
命令之前设置cc
环境变量
9
$ pip install pyccl
$ sudo apt-get install cmake0
或者将其添加到.bashrc
开发工作流
在进行开发时,在系统上安装ccl不是一个好主意,您可以 可以直接从本地副本编译和运行所有库和示例。
当没有实际安装库时,唯一的微妙之处是
定义环境变量ccl_param_file
指向include/ccl_params.ini
:
$ sudo apt-get install cmake1
未能定义此环境变量将导致异常。
使用C库
以下是使用C库时的一些常见步骤:
- 克隆本地副本和ccl并编译它:
$ sudo apt-get install cmake2
- 从主服务器更新本地副本,重新编译需要重新编译的内容,以及 运行测试套件:
$ sudo apt-get install cmake3
- 编译(或重新编译)ccl/examples文件夹中的示例:
$ sudo apt-get install cmake4
- 从头重新配置(以防出现严重错误):
$ sudo apt-get install cmake5
- 正在调试模式下生成CCL。这将禁用优化并允许您 使用调试器:
$ sudo apt-get install cmake6
使用python库
以下是使用python模块时的几个常见步骤:
- 构建python模块:
$ sudo apt-get install cmake7
之后,您可以从根ccl
文件夹启动解释器并导入
PYCl</P>
- 修改C库后运行测试:
$ sudo apt-get install cmake8
根据类的外部版本编译
要使用外部版本的类编译ccl,只需运行下面的cmake
在安装的第一个配置步骤中的命令(从 构建过程的其余部分应该相同。 生成docker映像的dockerfile作为dockerfile包含在 生成的Docker映像有两个主要功能。第一个是一个CMD,它将打开绑定到本地计算机端口的Jupyter笔记本。这可以与以下运行命令一起使用: 此dockerfile当前包含所有已安装的c库和python包装器。它目前使用continumio/anaconda作为基础映像,并支持ipython和jupyter笔记本。由于虚拟化,应该会有最小的减速。 本文档包含有关使用的结构和函数的基本信息。在文档末尾提供了实现这些基本功能的代码(也在examples/ccl_sample_run.c中)。有关 首先定义结构中定义的宇宙学参数。这种结构(精确定义见include/ccl_core.h)包含物质密度、暗能量参数( 目前,支持以下型号系列: 您可以通过函数 其中: 对于平面lcdm宇宙学,还可以使用ccl_parameters_create_flat_lcdm 状态标志ccl
的默认安装过程意味着自动下载和安装标记版本的类
。也可以根据不同版本的类链接
对象ccl
。如果要使用修改后的类
,或使用标准类
的其他版本或更新版本,则此功能非常有用。
b生成
目录,确保它为空以获得干净的配置:$ sudo apt-get install cmake
9
Docker映像安装
ccl
存储库中。这可以用来创建一个镜像,Docker可以把它作为一个虚拟机,允许您在任何基础设施上使用ccl
,而无需太多麻烦。docker和安装过程的详细信息可以在https://www.docker.com/" rel="nofollow">https://www.docker.com/上找到。安装Docker后,创建一个映像是一个简单的过程!在您选择的终端(Docker正在运行)中,在ccl
目录中键入命令Docker build-tcl.
。docker run-p 8888:8888 ccl
。然后,您可以在localhost:8888
的浏览器中访问笔记本电脑。第二种是访问bash本身,这可以使用docker run-it ccl bash来完成。
文档
ccl
有其c例程的基本文档。这可以在ccl
存储库中的doc/html目录中找到,方法是在浏览器中打开index.html文件。python例程是在本地编写的;您可以通过从python中调用help(function name)
来查看函数的文档。
ccl
函数和实现的更多信息,请参见doc/0000-ccl_note/0000-ccl_note.pdf
宇宙学参数
w0
,wa
)、哈勃参数、原始功率谱、辐射参数、导出参数(sigma_
),欧米茄1号
,z戋星
)和修正增长率。ccl_parameters_create来初始化此结构,该函数返回类型为
ccl_parameters的对象
$ brew install cmake
0
欧米茄c
冷暗物质
欧米茄b
:重子
欧米茄k
曲率
n_nu_rel
:相对论物种的数量
n努质量
:n努质量mnu
:deneutrino massscw0
:暗能量状态参数eqn
wa
:暗能量状态参数,时变
h
:哈勃常数,单位为100 km/s/mpc标准pk
:功率谱的标准化,a_s或sigma_8n_s
:原始功率谱的幂律指数nz_mgrowth
:提供修改的增长的红移数zarr_mgrowth
:提供修改的增长的红移数组dfarr_mgrowth
:提供了修改后的增长函数向量状态
:状态标志。如果没有错误,则为0;否则为非0。int status=0
几乎在每个ccl
函数中传递。如果函数调用过程中出现错误,则通常在非零时返回零。有关特定情况,请参阅ccl_error.c的文档。
ccl宇宙学中的
对于大多数ccl函数,您需要一个类型为ccl宇宙学的对象,它可以由函数ccl宇宙学create初始化。
$ brew install cmake1
注意,函数返回一个指针。变量params
类型ccl_parameters
包含上一步创建的宇宙学参数。structureccl_配置包含有关计算传递函数、物质功率谱、重子对物质功率谱和质量函数的影响的方法的信息(有关可用方法,请参见
include/ccl_config.h
)。在默认配置中,default_config
,ccl
将使用以下设置:
$ brew install cmake2
使用完此宇宙学对象后,应通过"ccl宇宙学自由"释放其工作空间
$ brew install cmake3
距离、生长因子和密度参数函数
利用定义的宇宙学,我们现在可以计算距离、生长因子(和速率)、西格玛8或密度参数。对于合并径向距离,您可以调用函数ccl\u合并径向距离
$ brew install cmake4
它返回到比例因子a
的距离,单位为mpc。对于亮度距离调用函数
$ brew install cmake5
它还返回以mpc为单位的距离。对于生长因子(在z
=0时标准化为1),在sale factora
时调用ccl\u growth factor
$ brew install cmake6
为了评估密度参数(例如物质、暗能量或辐射),调用函数
$ brew install cmake7
其中,cclωu x_标签定义了物种类型:'matter'(0)
,'dark_energy'(1)
,'radiation'(2)
,以及'curvature'(3)
。
有关计算距离、生长速率和密度参数(例如一次多次)的更多例程,请参见文件include/ccl_background.h
物质功率谱与sigma_8
对于给定的宇宙学,我们可以使用函数计算线性和非线性物质的功率谱
$ brew install cmake8
通过将"重子功率谱"标志设置为"ccl bcm",可以合并重子过程对总物质功率谱的影响。有关实施的详细信息,请参阅CCL说明。
sigma_可以通过函数ccl_sigma8
计算,或者更一般地通过函数ccl_sigma r
计算,该函数计算由球形顶帽窗函数平滑的密度场在共移动距离上的方差r
(在mpc中)。
不同物质功率谱的这些和其他函数可以在文件include/ccl_power.h中找到。
角功率谱
ccl
可以计算三种示踪类型的角功率谱:星系数计数、星系弱透镜和cmb透镜。示踪剂参数在结构中定义。一般来说,您可以使用函数ccl_cl_tracer创建此对象
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev0
这些参数的确切定义在文件include/ccl_cls.h中进行了描述。通常您可以使用此函数的简化版本,即ccl_cl_tracer_number_counts
,ccl_cl_tracer_number_counts_simple
,ccl_cl_tracer lensing
,ccl_cl_tracer_lensing_simple
或ccl_cl_tracer_cmblens
。两个最简化的版本(一个用于计数,另一个用于剪切)采用参数:
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev1
其中,n z n
是数组z n
和n
的维数(容器数)。z n
和n
是每个红移间隔的对象数的数组(任意规范化-内部重新规范化)。nz-b
,z-b
和b
对于聚类偏差是相同的。
在计算角功率谱之前,用户必须定义包含计算相关参数的工作空间结构:
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev2
其中,lmax
设置最大多极,l撸limber
使用limber近似的极限多极(l撸limber=-1
表示从未使用liber近似)。可以将non-limber_method
变量设置为ccl_nonlimber_method_native
或ccl_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-dev3
使用初始化的跟踪器和工作区,您可以使用ccl\u angular\u cls
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev4
使用l_out
和cl_out
包含多极和角功率谱的大小nl_out
数组。
使用完跟踪器后,您应该通过以下方式释放其工作空间:ccl_cl_tracer_free
和ccl_cl_work space_free
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev5
请注意,angpow
暂时不能处理星系数计数跟踪器的放大透镜项,并且还没有测试过弱透镜跟踪器。这一限制将在不久的将来消除。
晕质量函数
晕质量函数dn/dm可以通过函数ccl_massfunc
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev6
其中smooth_mass
是质量平滑比例(单位为m_sun),而odelta
是增量的选择。有关更多详细信息(或其他函数,如sigma m),请参见include/ccl_mass func.h和src/mass_func.c
红移分布
在计算功率谱和相关函数等观测值时,用户当然可以加载自己的红移分布。然而,ccl
还包括计算photo-z切割定义的层析成像仓中红移分布的便利函数,给出了光度红移模型和真实红移分布的模型。
首先定义由函数给定的光度红移模型
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev7
它返回在给定光谱红移z/code>的情况下测量特定光度红移
z/ph
的可能性,并带有指向附加参数param
的指针和状态标志。然后调用函数ccl_create_photoz_info
$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev8
它创建一个结构,其中包含计算p(z,z')
所需的信息$ sudo apt-get install cmake swig libgsl-dev libfftw3-dev9
类似地,定义真正红移分布的分析形式:
$ 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 结果返回到 使用完photo_z后,您应该通过 同样,对于真正的红移分布: 此代码也可以在examples/ccl_sample_run.c中找到,您可以运行以下示例代码。为此,您需要使用以下命令进行编译: 其中, python模块的功能与c库基本相同,只是以一种更标准的类似python的方式表示。与任何python模块一样,您可以使用内置的python 下面是一个简单的python脚本示例,它创建了一个新的宇宙学对象,然后使用它计算简单透镜互相关的角功率谱。在典型的笔记本电脑上应该需要几秒钟。 有关已知的安装问题以及在开发过程中如何对ccl进行基准测试的更多信息,请参见我们的wiki 此代码已由DESC发布,但仍在积极开发中。它附带了一篇日志文件,描述了 如果您有意见、问题或反馈,请给我们写一个问题。您还可以联系管理员$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
2
tomoout
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
示例代码
$ 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代码中执行以提高速度。help()
函数检查可用函数及其参数。$ git clone https://github.com/LSSTDESC/CCL.git
$ cd CCL
7
许可证、信用证、反馈等
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作者的许可,可以包含其源代码的修改版本。联系人
推荐PyPI第三方库