RTTOV12.2 (Radiative Transfer for TOVS) 研究環(huán)境搭建(二)on WSL Ubuntu LTS 18.04

RTTOV環(huán)境搭建II

上一期的鏈接:RTTOV12.2 (Radiative Transfer for TOVS) 研究環(huán)境搭建(一)on WSL Ubuntu LTS 18.04


三. GUI環(huán)境的準(zhǔn)備-F2PY

3.1 Miniconda

因?yàn)橹笠玫絉TTOV的GUI,配置python庫(kù)包環(huán)境的最簡(jiǎn)單方法是使用Conda包管理機(jī)制咙咽,因此這里先配置一個(gè)基礎(chǔ)的Conda環(huán)境欠拾, 安裝的python版本為2.7.15

之所以使用python2简烤,是因?yàn)槟壳碍h(huán)境的一些庫(kù)對(duì)python3的支持有一些問(wèn)題,相對(duì)來(lái)說(shuō)用python2更加保險(xiǎn)

之所以選用Miniconda, 只是因?yàn)楣?jié)省微機(jī)的存儲(chǔ)空間窒盐,就不用安裝一些不必要的科學(xué)庫(kù)了

Miniconda的官網(wǎng):

https://conda.io/miniconda.html

下載到一個(gè)shell可執(zhí)行文件:Miniconda2-latest-Linux-x86_64.sh

上傳到子系統(tǒng)上添加可執(zhí)行權(quán)限并執(zhí)行

$ cd ~/.Miniconda
$ chmod +x Miniconda2-latest-Linux-x86_64.sh
$ ./Miniconda2-latest-Linux-x86_64.sh

進(jìn)入文字交互界面后按照提示安裝即可

最后可以按照交互界面直接把Conda的可執(zhí)行文件目錄添加到環(huán)境變量PATH中, 否則接下來(lái)無(wú)法直接使用conda命令

不要忘記source一下

$ source ~/.bashrc

想要簡(jiǎn)要了解conda包管理的方法可以參考一下知乎上的這篇專欄, 概括得比較全面

https://zhuanlan.zhihu.com/p/22678445

進(jìn)入base環(huán)境

$ conda info -e
$ source activate base

退出base環(huán)境只需

$ source deactivate

base環(huán)境是conda包管理的基礎(chǔ)環(huán)境挑社,還可以創(chuàng)建其他環(huán)境,這個(gè)環(huán)境的python版本取決于你安裝的是Miniconda2 還是 Miniconda3. 需要指出的是:Miniconda 2也可以創(chuàng)建新的python3環(huán)境巡揍,只需要在創(chuàng)建新環(huán)境時(shí)指定python的版本即可滔灶。

為了方便起見,接下來(lái)筆者就直接用這個(gè)base環(huán)境管理RTTOV的GUI環(huán)境搭建了, 環(huán)境中已經(jīng)有的python庫(kù)包可以用以下命令查看

$ conda list

可以看到 pip/wheel 等一些基礎(chǔ)庫(kù)包已經(jīng)預(yù)先安裝好了


miniconda2.PNG

3.2 F2PY

F2PY 的官網(wǎng):

https://sysbio.ioc.ee/projects/f2py2e/

如果之后要配置GUI環(huán)境吼肥,RTTOV編譯時(shí)必須要依賴F2PY編譯

F2PY 目前是python著名的科學(xué)計(jì)算包 numpy 的一個(gè)模塊录平, 全稱為Fortran to Python interface generator,也就是一種造輪子的工具:把Fortran寫成的代碼編譯成可供python調(diào)用的動(dòng)態(tài)鏈接庫(kù)缀皱, 彌補(bǔ)python的矩陣運(yùn)算效率低下的缺陷斗这。類似的還有Cython, 有興趣的讀者可以了解下。

具體的安裝方法如下:

首先安裝numpy, 注意要先進(jìn)入base環(huán)境

$ conda install numpy

現(xiàn)在可以測(cè)試以下f2py安裝得是否正確
可以參照一篇文章進(jìn)行測(cè)試:

https://blog.csdn.net/rumswell/article/details/7377339

有一點(diǎn)要注意啤斗, 因?yàn)槭聦?shí)上F2PY是一種編譯工具表箭, 所以之前配置NETCDF時(shí)配置過(guò)的 CPPFLAGS LDFLAGS 務(wù)必要去掉, 否則測(cè)試編譯時(shí)的依賴庫(kù)會(huì)報(bào)錯(cuò)

可以用echo查看環(huán)境變量钮莲, 如果不為空設(shè)置為空

$ echo $CPPFLAGS
$ echo $LDFLAGS

測(cè)試成功免钻,F(xiàn)2PY就成功安裝了


f2py.PNG

好的, 接下來(lái)崔拥,我們先安裝RTTOV极舔, 最后配置GUI

四 RTTOV的編譯安裝

RTTOV解壓后沒有頂層文件夾,大家注意一下链瓦,先建一個(gè)文件夾放置解壓后的內(nèi)容

$ mkdir rttov12
$ tar -zxvf rttov122.tar.gz -C rttov12/
$ sudo mv rttov12/ /usr/local/

我們來(lái)看一下users-guide里對(duì)編譯安裝的介紹:

compiling the code.PNG

重點(diǎn)關(guān)注以下幾點(diǎn):

  • RTTOV編譯有兩種方式拆魏,一種是依靠build文件夾下的腳本文件 /build/rttov_compile.sh 進(jìn)行編譯盯桦,另外一種方式是根據(jù) src/ 目錄下的Makefile手動(dòng)編譯,如果是對(duì)Makefile不熟悉的小白建議是使用前者
  • RTTOV支持好多種fortran編譯器:要在腳本的ARCH參數(shù)中聲明渤刃,支持的 Fortran 編譯器有 gfortran ifortran pgf90 NAG 等拥峦, 具體可以在 build/arch 中查看
  • OpenMP支持的編譯器編譯出的二進(jìn)制可執(zhí)行文件可以有多線程執(zhí)行功能, 可以大大加快計(jì)算效率
  • 部分可選功能:
    讀取HDF5 系數(shù)文件需要HDF5庫(kù)
    發(fā)射率/雙向反射率地圖支持需要HDF5庫(kù)
    python GUI 需要 HDF5庫(kù)
    python wrapper / RTTOV GUI 需要 f2py
    HTFRTC 需要 NetCDF v4
  • 編譯前必須根據(jù)文件中的注釋修改build/Makefile.local文件指定外部依賴庫(kù)地址卖子,否則編譯腳本無(wú)法檢測(cè)到外部依賴庫(kù)的位置
  • 如果編譯要依賴HDF5庫(kù)略号,編譯HDF5庫(kù)時(shí)必須打開Fortran語(yǔ)言,這在上一期已經(jīng)提到了

OK洋闽,了解之后開始操作吧

4.1 修改 build/Makefile.local

$ vim build/Makefile.local

主要修改HDF5塊和NETCDF塊以下內(nèi)容

HDF5_PREFIX  = /usr/local/hdf5
FFLAGS_HDF5  = -D_RTTOV_HDF $(FFLAG_MOD)$(HDF5_PREFIX)/include
LDFLAGS_HDF5 = -L$(HDF5_PREFIX)/lib -lhdf5hl_fortran -lhdf5_hl -lhdf5_fortran -lhdf5
NETCDF_PREFIX  = /usr/local/NETCDF
FFLAGS_NETCDF  = -D_RTTOV_NETCDF -I$(NETCDF_PREFIX)/include
LDFLAGS_NETCDF = -L$(NETCDF_PREFIX)/lib -lnetcdff

實(shí)質(zhì)上是指明庫(kù)的依賴關(guān)系玄柠, 筆者的NETCDF 版本是4.4, 因此選擇 4.2 and later 進(jìn)行注釋


RTTOV lib.PNG

4.2 編譯 RTTOV

修改完成后喊递,按照說(shuō)明用腳本執(zhí)行編譯随闪, 注意腳本要在src/目錄下執(zhí)行

$ cd src/
$ ../build/rttov_compile.sh
rttov_compile.PNG

確認(rèn)配置后執(zhí)行腳本即可

4.3 測(cè)試 RTTOV

編譯完成后,我們可以使用RTTOV自帶的測(cè)試模塊測(cè)試一下RTTOV是否正確地安裝了
看一下users-quick-start.pdf中的描述:


Verifying.PNG

測(cè)試

$ cd rttov_test/
$ ./test_rttov12.sh ARCH=gfortran
test result.PNG

測(cè)試結(jié)果一切正常骚勘,就可以說(shuō)RTTOV的本體已經(jīng)安裝成功了
這個(gè)測(cè)試的結(jié)果保存在目錄 rttov_test/test_rttov12.1.gfortran/下铐伴,有興趣的讀者可以先大致看看模擬結(jié)果

好, 下一步就是配置GUI了

五. GUI環(huán)境的配置

5.1 GUI依賴包安裝

GUI環(huán)境的配置主要參考官方文檔:rttov_gui_12.pdf

gui_installation.PNG

主要要關(guān)注以下幾點(diǎn):

  • RTTOV12 gui 目前只支持 python2 環(huán)境
  • conda 搭建 GUI python 環(huán)境更為方便, 不推薦直接用pip 搭建環(huán)境 , 否則要在 rttov_gui.env 中修改很多不明就里的環(huán)境變量, 不建議初學(xué)者這么做
  • 主要要裝以下幾個(gè)與科學(xué)計(jì)算和圖形界面有關(guān)的python庫(kù):
    wxpython/numpy/matplotlib/h5py

剩下注意事項(xiàng)裝完依賴庫(kù)以后再說(shuō)

$ conda install scipy matplotlib h5py wxpython

裝完以后用 conda list 命令查看以下包版本發(fā)現(xiàn)有問(wèn)題

h5py version.PNG
wxpython version.PNG

文檔中要求
wxpython==2.9.5||3.0.0
h5py>=2.0

其中 wxpython 版本過(guò)高俏讹,需要降級(jí)

$ conda install wxpython=3.0.0

降級(jí)后符合要求


wxpython version new.PNG

5.2 修改 gui/rttov_gui.env文件

vim gui/rttov_gui.env

因?yàn)槲覀兪褂胏onda環(huán)境搭建当宴, 只需要修改以下內(nèi)容

RTTOV_GUI_PREFIX=/usr/local/rttov12/gui   # absolute path to the rttov/gui directory e.g. /home/user/rttov12/gui

接下來(lái)就可以測(cè)試GUI了, 別忘了啟動(dòng)你的Xming, 并設(shè)置好環(huán)境變量 DISPLAY的值泽疆,見環(huán)境搭建第一期

$ source gui/rttov_gui.env
$ cd gui
$ ./rttovgui

這時(shí)遇到了一點(diǎn)問(wèn)題:顯示wx庫(kù)無(wú)法導(dǎo)入户矢,因?yàn)槿鄙僖粋€(gè)叫做libgtk-x11-2.0.so.0的動(dòng)態(tài)鏈接庫(kù)

Import Error.PNG

參考stackoverflow上的解決方案:

https://unix.stackexchange.com/questions/186347/error-while-loading-shared-libraries-libgtk-x11-2-0-so-0-cannot-open-shared-o
需要安裝包libgtk2.0-0

$ sudo apt-get libgtk2.0-0

再運(yùn)行還有報(bào)錯(cuò), 那就再裝一個(gè)庫(kù)

ImportError: libSM.so.6: cannot open shared object file: No such file or directory

$ sudo apt-get install -y python-qt4

重新嘗試,啟動(dòng)成功

GUI_success.PNG

具體操作見GUI文檔殉疼, 可以顯示廓線梯浪、模擬結(jié)果等等

profile.PNG

RTTOV 安裝這個(gè)坑算是填上了, 接下來(lái)一期是ARTS數(shù)據(jù)庫(kù)和RTTOV的接口介紹瓢娜, 有空也會(huì)講講RTTOV中的一些基本概念


reference:

https://conda.io/miniconda.html
https://zhuanlan.zhihu.com/p/22678445
http://www.hedilict.com/f2py%E7%9A%84%E9%85%8D%E5%88%B6%E4%B8%8E%E4%BD%BF%E7%94%A8-windows-and-linux-platform/
https://blog.csdn.net/rumswell/article/details/7377339
https://unix.stackexchange.com/questions/186347/error-while-loading-shared-libraries-libgtk-x11-2-0-so-0-cannot-open-shared-o

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挂洛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子眠砾,更是在濱河造成了極大的恐慌虏劲,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褒颈,死亡現(xiàn)場(chǎng)離奇詭異柒巫,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谷丸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門堡掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人淤井,你說(shuō)我怎么就攤上這事布疼√海” “怎么了币狠?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵游两,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我漩绵,道長(zhǎng)贱案,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任止吐,我火速辦了婚禮宝踪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碍扔。我一直安慰自己瘩燥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布不同。 她就那樣靜靜地躺著厉膀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪二拐。 梳的紋絲不亂的頭發(fā)上服鹅,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音百新,去河邊找鬼企软。 笑死,一個(gè)胖子當(dāng)著我的面吹牛饭望,可吹牛的內(nèi)容都是我干的仗哨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼铅辞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼厌漂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起巷挥,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤桩卵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后倍宾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雏节,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年高职,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钩乍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怔锌,死狀恐怖寥粹,靈堂內(nèi)的尸體忽然破棺而出变过,到底是詐尸還是另有隱情,我是刑警寧澤涝涤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布媚狰,位于F島的核電站,受9級(jí)特大地震影響阔拳,放射性物質(zhì)發(fā)生泄漏崭孤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一糊肠、第九天 我趴在偏房一處隱蔽的房頂上張望辨宠。 院中可真熱鬧,春花似錦货裹、人聲如沸嗤形。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赋兵。三九已至,卻和暖如春墓阀,著一層夾襖步出監(jiān)牢的瞬間毡惜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工斯撮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留经伙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓勿锅,卻偏偏與公主長(zhǎng)得像帕膜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子溢十,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容