CosmoMC安装时间:2022年4月
CosmoMC更新换代很快,由于担心其它教程过时,我主要参考官网的readme文件进行安装。
参考资料:
- COSMOMC ReadMe (cosmologist.info)
- PlanckCosmomc ReadMe (cosmologist.info)
- COM_Likelihood_Code-v3.0_R3.10/…/plc-3.1/readme.md
目录:
第一部分:安装主程序
一、准备
二、安装主程序
第二部分:安装Planck likelihood code 和 baseline data files
一、下载Planck代码和数据
二、安装前的检查
三、安装Planck代码
四、连接Planck数据
五、运行
安装结束
Smilie Vote is loading.
第一部分:安装主程序
一、准备
1.fortran编译器
我们有两个选择:
这里我用的是gfortran,但是听说gfortran跑的速度比ifortran慢。
2. gcc,Open MPI等
在安装过程中,我发现电脑还缺了一些包,这里一起安装上去:
sudo apt install gcc gfortran libopenmpi-dev cmake zlib1g zlib1g-dev
二、安装主程序
下载CosmoMC
git clone --recursive https://github.com/cmbant/CosmoMC.git
编译(也可等第二部分安装完之后一起make,测试)cd CosmoMC
测试make
mpirun -np 10 ./cosmomc test.ini
第二部分:安装Planck likelihood code 和 baseline data files
(这部分比第一部分难很多,可能出现各种各样的问题。)
一、下载Planck的代码和数据
打开Planck Legacy Archive (esa.int),选择Likelihood,找到COM_Likelihood_Code-v3.0_R3.10.tar.gz 和 COM_Likelihood_Data-baseline_R3.00.tar.gz ,它们分别是Planck的代码和数据,下载解压。
二、安装前的检查
进入COM_Likelihood_Code-v3.0_R3.10,测试安装依赖
cd plc-3.1
把提示缺失的python包安装上./waf configure --install_all_deps
pip install astropy pyfits
提示中还写到,尝试安装cfistio,安装失败。下面手动安装cfistio:到FITSIO Home Page (nasa.gov)下载 cfitsio_latest.tar.gz
cd cfitsio
把路径告诉Planck代码./configure --prefix=/home/用户名/software/cfitsio-4.1
make
make install
cd plc-3.1
./waf configure --cfitsio_lib=/home/用户名/software/cfitsio-4.1/lib --cfitsio_include=/home/用户名/software/cfitsio-4.1/include
三、安装Planck的代码
再次检查./waf configure –install_all_deps ,没什么问题就可以安装Planck代码了
./waf install
运行./bin/clik_profile.sh 【注1】source ./bin/clik_profile.sh
打开~/.zshrc (对于bash,则应打开.bashrc)vim ~/.zshrc
在最后加上(假设Planck代码和CosmoMC分别放在 /home/用户名/plc-3.1/ 和 /home/用户名/CosmoMC/)source /home/用户名/plc-3.1/bin/clik_profile.sh
运行 ~/.zshrcexport PYTHONPATH=/home/用户名/CosmoMC/python:$PYTHONPATH
source ~/.zshrc
可以用下面代码测试是否加到环境变量里了echo $PATH
可以这样测试Planck代码是否安装成功(具体见参考资料3)echo $LD_LIBRARY_PATH
cd CosmoMC./clik_example_C plik_rd12_HM_v22b_TTTEEE.clik/
(如果报错 zsh: permission denied: ./clik_example_C ,给权限即可:chmod +x ./clik_example_C
)四、连接Planck数据
假设你将Planck数据和CosmoMC分别放在 /home/用户名/baseline/plc_3.0/ 和 /home/用户/CosmoMC/
cd CosmoMC
在安装Planck代码之前,我们已经把CosmoMC make了一遍。安装Planck代码之后,我们需要再单独make camspec【注2】(或者在第一部分中不执行make,安装planck代码后再make)ln -s /home/用户名/baseline/plc_3.0 /home/用户名/CosmoMC/data/clik_14.0
make camspec
五、运行
最后,让CosmoMC运行planck数据
mpirun -np 4 ./cosmomc test_planck.ini
安装结束
在CosmoMC生成链以后,我们可以用python的GetDist来分析数据(如得到所有参数中获取均值、方差、限制等)和作图,参见https://astr.ac.cn/physics/1987/
注1:如果你是zsh而不是bash则会报错
addvar:1: bad substitution
这是zsh和bash语法有一些差别导致。具体原因参见bash – Sourcing a .sh file under zsh : addvar:1: bad substitution error message – Stack Overflow打开./bin/clik_profile.sh文件,把第二行
local tmp="${!1}" ;
修改为local tmp=${(P)1} ;
运行./bin/clik_profile.shsource ./bin/clik_profile.sh
注2:如果在安装完Planck代码和数据之后直接mpirun -np 4 ./cosmomc test_planck.ini,将报错
make camspec
请问一下,cosmomc默认是lambda cdm 模型,若我考虑一个新的宇宙学模型并且得到了一个新的弗里德曼方程,该要如何利用cosmomc去限制我模型中的参数呢?换句话说,如何修改cosmomc的模型呢?
在camb里改w,新的参数要在几个文件里加入
git clone –recursive https://github.com/cmbant/CosmoMC.git 自定义文件名
一 samples的读取:
1.从链文件夹里读取:
import getdist
sample1 = getdist.loadMCSamples(r’./plikHM_TTTEEE_lowl_lowE/base_plikHM_TTTEEE_lowl_lowE’, settings={‘ignore_rows’:0.3})
2. 从h5文件读取:
import emcee
from getdist import MCSamples
import numpy as np
from getdist import MCSamples
h5_file= emcee.backends.HDFBackend(‘xxx.h5’, read_only=True)
tau = Combind.get_autocorr_time()
burnin = int(2 * np.max(tau))
thin = int(0.5 * np.min(tau))
Combind = h5_file.get_chain(discard=burnin, flat=True, thin=thin)
Combind=np.array([Combind[:,0],Combind[:,1]).T
names= [‘H0’, ‘omegam’]
labels= tuple([‘H_0′, r’$\Omega_{\rm m}h^2$’])
sample2= MCSamples(samples=Combind,names=names,labels=labels)
3.从数组中读取:
from getdist import MCSamples
import numpy as np
samps = np.array([xx,xx,xx,…,xx],[xx,xx,xx,…,xx])
names= [‘H0’, ‘omegam’]
labels= tuple([‘H_0′, r’$\Omega_{\rm m}h^2$’])
sample3 = MCSamples(samples=samps,names = names, labels = labels)
二 用getdist画图:
from getdist import plots
g = plots.get_single_plotter()
g.plot_2d([sample1,sample2,sample3], [‘H0’, ‘omegam’])
https://wiki.cosmos.esa.int/planck-legacy-archive/index.php/Cosmological_Parameters