CAMB, CosmoMC的安裝和使用

最近重新安裝一遍CAMB,正好以自己的安裝過程來寫一個教程,希望對後來者有幫助

1 CAMB

1.1 CAMB安裝

參考githubCAMB
步驟如下:

  1. 1,使用命令git clone --recursive https://github.com/cmbant/CAMB拷貝到自己需要安裝的目錄下(筆者在工作路徑下新建了一個名爲CAMB的目錄)
  2. 2 ,進入下載的目錄下,使用命令pip install -e .
  3. 3 , 使用命令python setup.py make,這需要安裝gfortran,如果沒有安裝,可以通過sudo apt-get install gfortran來安裝,並通過gfortran --version查看是否安裝成功,如果顯示版本則成功。
  4. 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年的數據
使用planck數據
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要使用絕對路徑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章