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庫包環(huán)境的最簡單方法是使用Conda包管理機(jī)制,因此這里先配置一個(gè)基礎(chǔ)的Conda環(huán)境, 安裝的python版本為2.7.15

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

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

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中, 否則接下來無法直接使用conda命令

不要忘記source一下

$ source ~/.bashrc

想要簡要了解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的版本即可。

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

$ conda list

可以看到 pip/wheel 等一些基礎(chǔ)庫包已經(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)鏈接庫, 彌補(bǔ)python的矩陣運(yùn)算效率低下的缺陷。類似的還有Cython, 有興趣的讀者可以了解下。

具體的安裝方法如下:

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

$ conda install numpy

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

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

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

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

$ echo $CPPFLAGS
$ echo $LDFLAGS

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


f2py.PNG

好的, 接下來,我們先安裝RTTOV, 最后配置GUI

四 RTTOV的編譯安裝

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

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

我們來看一下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庫
    發(fā)射率/雙向反射率地圖支持需要HDF5庫
    python GUI 需要 HDF5庫
    python wrapper / RTTOV GUI 需要 f2py
    HTFRTC 需要 NetCDF v4
  • 編譯前必須根據(jù)文件中的注釋修改build/Makefile.local文件指定外部依賴庫地址,否則編譯腳本無法檢測到外部依賴庫的位置
  • 如果編譯要依賴HDF5庫,編譯HDF5庫時(shí)必須打開Fortran語言,這在上一期已經(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ì)上是指明庫的依賴關(guān)系, 筆者的NETCDF 版本是4.4, 因此選擇 4.2 and later 進(jìn)行注釋


RTTOV lib.PNG

4.2 編譯 RTTOV

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

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

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

4.3 測試 RTTOV

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


Verifying.PNG

測試

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

測試結(jié)果一切正常,就可以說RTTOV的本體已經(jīng)安裝成功了
這個(gè)測試的結(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庫:
    wxpython/numpy/matplotlib/h5py

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

$ conda install scipy matplotlib h5py wxpython

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

h5py version.PNG
wxpython version.PNG

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

其中 wxpython 版本過高,需要降級(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

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

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

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

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è)庫

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è)坑算是填上了, 接下來一期是ARTS數(shù)據(jù)庫和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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容