最近重新安装一遍CAMB,正好以自己的安装过程来写一个教程,希望对后来者有帮助
文章目录
1 CAMB
1.1 CAMB安装
参考githubCAMB
步骤如下:
- 1,使用命令
git clone --recursive https://github.com/cmbant/CAMB
拷贝到自己需要安装的目录下(笔者在工作路径下新建了一个名为CAMB的目录) - 2 ,进入下载的目录下,使用命令
pip install -e .
- 3 , 使用命令
python setup.py make
,这需要安装gfortran,如果没有安装,可以通过sudo apt-get install gfortran
来安装,并通过gfortran --version
查看是否安装成功,如果显示版本则成功。 - 4,完成上面两步已经结束了安装,现在测试,(注意python版本的camb已经将
camb
作为一个命令名,所以可以直接使用camb
执行命令),测试代码为camb inifiles/planck_2018.ini
,(这里,由于输出会产生大量文件,所以我新建了一个名为test的目录,在目录里面运行camb ../inifiles/planck_2018.ini
),如果正确产生下图文件,则安装成功
另外值得一提的是,这个python版本的CAMB是可以使用python程序的,demo见python camb demo
1.2 CAMB简单应用
1.2.1 使用CAMB画功率谱
可以参考官网的readme-fortran文档除了上面的1.1节提到的demo之外,这里主要讲fortran版本的例子。以前在网易博客上写过一篇简单应用的博文-使用CAMB画功率谱。但是网易博客似乎倒闭了,所以图片无法识别,这里不打算再次重复上面说的博文的过程(博文没有了图片,但是大致是可以猜到说什么的)。此时不需要再用./camb params.ini
编译,而是直接使用camb params.ini
来编译,因为camb在python版中已经成为一个命令。同样,运行之后会生成很多文件,所以我是在test目录下运行的。
2 CosmoMC
2.1 CosmoMC安装
这个安装之前要先安装依赖的库,过程很复杂,所幸有参考文献,一下是四篇最主要的参考来源(主要参考前三篇):
1, 星空下
2, Ming-Hua Li的论文
3,CosmoMC官网readme
4, planck_likelihood_CosmoMC_readme
这里在上面的参考文献上做补充:
- 1, 关于intel Fortran编译器,网址为intel software tool,这里我直接选择了student,因为student是免费的,所以需要以学生邮箱和学校注册验证通过后才会邮箱收到信息,然后下载这个软件。注册的过程为:点击intel@parallel studio XE下的linux(选择符合自己的系统,笔者是linux),然后全画勾进入注册界面
- 2,在文献1中的第2部分,一定要注意文中所说的lapack的问题,安装ifort的时候如果自己的电脑是64位,那么在安装的过程中要选择64的选项。也就是安装的过程中有选择IA 32和64的时候选择32(因为它前面是x号,选择表示去掉),安装的时候会看到说找不到32表示已经选了64了。
- 3 文献1中的第5部分:
./waf configure --lapack_mkl=${MKLROOT} --install_all_deps
时,如果输出结果找不到cfitsi,则要自己指定:如./waf configure --lapack_mkl=${MKLROOT} --install_all_deps --cfitsio_prefix=/home/username/software/cfitsi
这里cfitsi是自己安装的cfitsi路径(文献1的作者已经做了修改),安装他的提示可以完成。 - 4 文献2中的F部分,plc (planck likelihood and Chains)(文献1也提到plc-2,笔者用的3.01)参考planck似然,也可以直接下载COM_Likelihood_code(有3.0和3.01的版本),已经不需要像F中提到的那样再进入plc中vi Makefile改内容,这部分直接参考文献1即可。(下载的时候有一个技巧:点击页面框后面的链接按钮,选择wget,然后使用wget终端下载即可)
- 5 由于很多软件已经更新,所以笔者使用的版本都比1和2文中提到的版本高
- 6 文献1中提到的plc_2.0,这里笔者使用COM_Likelihood_Data-baseline_3.0
安装遇到的问题:
./cosmomc: relink ‘xxx/intel/compilers_and_xx/libirc.so’ with ‘/lib/x86_64-linux-gnu/libc.so.6’ for IFUNC symbol ‘memmove’
这个问题是由于plc-3.01
没有正确指定路径造成的,可以重新装一遍plc
Acknowledgements
花了两天时间终于安装完了,感谢文献1中作者的帮助, 如有必要,再写CosmoMC的使用
2.1 CosmoMC使用
**1)编译 **
make all
(如果有改动要重新编译可以使用make clean, make delete删除编译过的文件)
2) 修改test.ini文件,增加或注释数据
使用planck15年的数据,注释18年的数据
3)运行cosmoMC
mpirun -np 4 ./cosmomc test.ini 使用4个进程
4)查看结果
为了防止产生的文件过多比较乱,在CosmoMC目录下建一个名为plot_data的文件夹,将disttest.ini文件中做如下修改:
运行:
./getdist disttest.ini
得到的文件包括如下
要画二,三维图使用python
python test_tri.py
python test_2D.py
也可以使用python来画图,指定输出的参数----参考文献arXiv:1808.05080第V部分
为防止文件混乱,在CosmoMC下建立一个名为pytest的文件夹,在文件夹下创建名为disttest.py的文件,内容为:
from getdist import plots, MCSamples
f=plots.getSubplotPlotter(chain_dir='../chains/',width_inch=12)
f.triangle_plot('test',['omegabh2','omegach2','H0','logA','ns'],filled=True,
legend_labels=['PlanckTT}'], legend_loc='upper right',
line_args=[{'lw':1, 'color':'darkblue'}], contour_colors=['darkgreen'])
f.export('mymodel_cmb_tri.pdf')
使用python运行即可得到参数限制情况
3 常见问题
3.1 mpirun detected that one or more processes exited with non-zero status, thus causing…
问题描述,使用了planck 18年的数据,clik链接的是18年的。在/cosmoMC/CosmoMC/data$
路径下ll click*
查看到的是如下的链接
plc_3.0是planck likelihood code 2018
而我在test.ini将planck 的数据使用的是2015年的(即batch2的数据,注batch3是18年的)
此时导致链接出了问题。简言之,使用了15年数据,却链接的是18年code。
解决方法:链接15年code
打开batch2/lowl.ini,有如下描述:
即15年的code是用的链接名是clik,而18年使用的是clik_14.0,所以现在将plc_2.0链接到CosmoMC/data下,并命名为click,命令如下
ln -s /home/username/xxx/data/plc_2.0/ CosmoMC/data/clik #这里code要使用绝对路径