CosmoMC安装

CosmoMC安装时间:2022年4月
CosmoMC更新换代很快,由于担心其它教程过时,我主要参考官网的readme文件进行安装。
参考资料:

  1. COSMOMC ReadMe (cosmologist.info)
  2. PlanckCosmomc ReadMe (cosmologist.info)
  3. 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.
✿ 阅读数:3,789  分类:文章

CosmoMC安装”下有6个评论:

  1. 第一部分:安装主程序

    一、准备

    1.fortran编译器

    我们有两个选择:

    • Intel Fortran
    • gfortran

    这里我用的是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
    ./waf configure --install_all_deps
    把提示缺失的python包安装上
    pip install astropy pyfits
    提示中还写到,尝试安装cfistio,安装失败。
    下面手动安装cfistio:到FITSIO Home Page (nasa.gov)下载 cfitsio_latest.tar.gz
    cd cfitsio
    ./configure --prefix=/home/用户名/software/cfitsio-4.1
    make
    make install
    把路径告诉Planck代码
    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
    export PYTHONPATH=/home/用户名/CosmoMC/python:$PYTHONPATH
    运行 ~/.zshrc
    source ~/.zshrc
    可以用下面代码测试是否加到环境变量里了
    echo $PATH
    echo $LD_LIBRARY_PATH
    可以这样测试Planck代码是否安装成功(具体见参考资料3)
    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
    ln -s /home/用户名/baseline/plc_3.0 /home/用户名/CosmoMC/data/clik_14.0
    在安装Planck代码之前,我们已经把CosmoMC make了一遍。安装Planck代码之后,我们需要再单独make camspec【注2】(或者在第一部分中不执行make,安装planck代码后再make)
    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.sh
    source ./bin/clik_profile.sh

    注2
    :如果在安装完Planck代码和数据之后直接mpirun -np 4 ./cosmomc test_planck.ini,将报错

    compile with CLIK to use clik – see Makefile
    MpiStop: 0
    ————————————————————————–
    MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
    with errorcode 128.

    NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
    You may or may not see output from other processes, depending on
    exactly when Open MPI kills them.
    ————————————————————————–

    查看Makefile,发现这一行和clik有关
    camspec: ./source/*.*90 ./camb/fortran/*.*90cd ./source && make highL=../highL PLANCKLIKE=cliklike_CamSpec

    所以 make camspec

  2. 请问一下,cosmomc默认是lambda cdm 模型,若我考虑一个新的宇宙学模型并且得到了一个新的弗里德曼方程,该要如何利用cosmomc去限制我模型中的参数呢?换句话说,如何修改cosmomc的模型呢?

  3. 一 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’])

发表评论

邮箱地址不会被公开。 必填项已用*标注

Captcha Code