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

RTTOV环境搭建II

上一期的链接:RTTOV12.2 (Radiative Transfer for TOVS) 研究环境搭建(一)on WSL Ubuntu LTS 18.04


三. GUI环境的准备-F2PY

3.1 Miniconda

因为之后要用到RTTOV的GUI,配置python库包环境的最简单方法是使用Conda包管理机制,因此这里先配置一个基础的Conda环境, 安装的python版本为2.7.15

之所以使用python2,是因为目前环境的一些库对python3的支持有一些问题,相对来说用python2更加保险

之所以选用Miniconda, 只是因为节省微机的存储空间,就不用安装一些不必要的科学库了

Miniconda的官网:

https://conda.io/miniconda.html

下载到一个shell可执行文件:Miniconda2-latest-Linux-x86_64.sh

上传到子系统上添加可执行权限并执行

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

进入文字交互界面后按照提示安装即可

最后可以按照交互界面直接把Conda的可执行文件目录添加到环境变量PATH中, 否则接下来无法直接使用conda命令

不要忘记source一下

$ source ~/.bashrc

想要简要了解conda包管理的方法可以参考一下知乎上的这篇专栏, 概括得比较全面

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

进入base环境

$ conda info -e
$ source activate base

退出base环境只需

$ source deactivate

base环境是conda包管理的基础环境,还可以创建其他环境,这个环境的python版本取决于你安装的是Miniconda2 还是 Miniconda3. 需要指出的是:Miniconda 2也可以创建新的python3环境,只需要在创建新环境时指定python的版本即可。

为了方便起见,接下来笔者就直接用这个base环境管理RTTOV的GUI环境搭建了, 环境中已经有的python库包可以用以下命令查看

$ conda list

可以看到 pip/wheel 等一些基础库包已经预先安装好了


miniconda2.PNG

3.2 F2PY

F2PY 的官网:

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

如果之后要配置GUI环境,RTTOV编译时必须要依赖F2PY编译

F2PY 目前是python著名的科学计算包 numpy 的一个模块, 全称为Fortran to Python interface generator,也就是一种造轮子的工具:把Fortran写成的代码编译成可供python调用的动态链接库, 弥补python的矩阵运算效率低下的缺陷。类似的还有Cython, 有兴趣的读者可以了解下。

具体的安装方法如下:

首先安装numpy, 注意要先进入base环境

$ conda install numpy

现在可以测试以下f2py安装得是否正确
可以参照一篇文章进行测试:

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

有一点要注意, 因为事实上F2PY是一种编译工具, 所以之前配置NETCDF时配置过的 CPPFLAGS LDFLAGS 务必要去掉, 否则测试编译时的依赖库会报错

可以用echo查看环境变量, 如果不为空设置为空

$ echo $CPPFLAGS
$ echo $LDFLAGS

测试成功,F2PY就成功安装了


f2py.PNG

好的, 接下来,我们先安装RTTOV, 最后配置GUI

四 RTTOV的编译安装

RTTOV解压后没有顶层文件夹,大家注意一下,先建一个文件夹放置解压后的内容

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

我们来看一下users-guide里对编译安装的介绍:

compiling the code.PNG

重点关注以下几点:

  • RTTOV编译有两种方式,一种是依靠build文件夹下的脚本文件 /build/rttov_compile.sh 进行编译,另外一种方式是根据 src/ 目录下的Makefile手动编译,如果是对Makefile不熟悉的小白建议是使用前者
  • RTTOV支持好多种fortran编译器:要在脚本的ARCH参数中声明,支持的 Fortran 编译器有 gfortran ifortran pgf90 NAG 等, 具体可以在 build/arch 中查看
  • OpenMP支持的编译器编译出的二进制可执行文件可以有多线程执行功能, 可以大大加快计算效率
  • 部分可选功能:
    读取HDF5 系数文件需要HDF5库
    发射率/双向反射率地图支持需要HDF5库
    python GUI 需要 HDF5库
    python wrapper / RTTOV GUI 需要 f2py
    HTFRTC 需要 NetCDF v4
  • 编译前必须根据文件中的注释修改build/Makefile.local文件指定外部依赖库地址,否则编译脚本无法检测到外部依赖库的位置
  • 如果编译要依赖HDF5库,编译HDF5库时必须打开Fortran语言,这在上一期已经提到了

OK,了解之后开始操作吧

4.1 修改 build/Makefile.local

$ vim build/Makefile.local

主要修改HDF5块和NETCDF块以下内容

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

实质上是指明库的依赖关系, 笔者的NETCDF 版本是4.4, 因此选择 4.2 and later 进行注释


RTTOV lib.PNG

4.2 编译 RTTOV

修改完成后,按照说明用脚本执行编译, 注意脚本要在src/目录下执行

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

确认配置后执行脚本即可

4.3 测试 RTTOV

编译完成后,我们可以使用RTTOV自带的测试模块测试一下RTTOV是否正确地安装了
看一下users-quick-start.pdf中的描述:


Verifying.PNG

测试

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

测试结果一切正常,就可以说RTTOV的本体已经安装成功了
这个测试的结果保存在目录 rttov_test/test_rttov12.1.gfortran/下,有兴趣的读者可以先大致看看模拟结果

好, 下一步就是配置GUI了

五. GUI环境的配置

5.1 GUI依赖包安装

GUI环境的配置主要参考官方文档:rttov_gui_12.pdf

gui_installation.PNG

主要要关注以下几点:

  • RTTOV12 gui 目前只支持 python2 环境
  • conda 搭建 GUI python 环境更为方便, 不推荐直接用pip 搭建环境 , 否则要在 rttov_gui.env 中修改很多不明就里的环境变量, 不建议初学者这么做
  • 主要要装以下几个与科学计算和图形界面有关的python库:
    wxpython/numpy/matplotlib/h5py

剩下注意事项装完依赖库以后再说

$ conda install scipy matplotlib h5py wxpython

装完以后用 conda list 命令查看以下包版本发现有问题

h5py version.PNG
wxpython version.PNG

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

其中 wxpython 版本过高,需要降级

$ conda install wxpython=3.0.0

降级后符合要求


wxpython version new.PNG

5.2 修改 gui/rttov_gui.env文件

vim gui/rttov_gui.env

因为我们使用conda环境搭建, 只需要修改以下内容

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

接下来就可以测试GUI了, 别忘了启动你的Xming, 并设置好环境变量 DISPLAY的值,见环境搭建第一期

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

这时遇到了一点问题:显示wx库无法导入,因为缺少一个叫做libgtk-x11-2.0.so.0的动态链接库

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

再运行还有报错, 那就再装一个库

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

$ sudo apt-get install -y python-qt4

重新尝试,启动成功

GUI_success.PNG

具体操作见GUI文档, 可以显示廓线、模拟结果等等

profile.PNG

RTTOV 安装这个坑算是填上了, 接下来一期是ARTS数据库和RTTOV的接口介绍, 有空也会讲讲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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容