ARTS Microwave 数据库 及其 python Interface 的简介(二)

File I/O summary

上一期的链接:
ARTS Microwave 数据库 及其 python Interface 的简介(一)


二 ARTS 数据库的 Python Interface

2.1 Python Interface 环境搭建

python Interface 环境.PNG

如果要完整的使用所有的 Python Interface 的功能, 需要安装 python>=3.5 环境下的 netcdf4/numpy/typhon/scipy包(os包应该是python自带的), 这几个库包是可以通过conda 命令直接安装的(当然typhon也推荐手动编译安装)

$ conda install netcdf4 numpy typhon scipy

但是最后一个SHTns这个Fortran库比较特殊, 不能直接通过conda包管理机制安装,需要手动编译安装, SHTns库的作用是把球谐函数(勒让德函数系数存储形式的角函数转化为显式的角度函数)这个fortran库的安装需要依赖快速傅里叶变换库FFTW。

FFTW库有两种安装方式, 一种是手动编译安装, 安装时不要忘记打开一个Flag --enable-share, 否则的话只会生成静态库不会生成动态链接库,SHTns编译时无法链接上。

另一种更简单的方法则是直接使用Ubuntu自带的库包管理工具:

$ sudo apt-get install libfftw3-dev

安装完FFW3后编译SHTns Fortran 库:

shtns.PNG

笔者把 SHTns 直接安装在conda 环境包目录下

$ ./configure --enable-openmp --enable-python
$ make
$ make install 
$ python setup.py install --user

--enable-python 这个Flag 表示安装后能被当前的python环境所识别,集成到当前的python环境下可以被直接调用, 最后还需要用setup.py 安装为当前用户安装

以上环境配置好后就可以使用Python Interface了, Python Interface只是一个工具集, 不需要安装, 当然为了方便也可以为这个包配置一个环境变量方便引用, 更加常用的做法则是直接把这些小工具放到你的python工程里。

2.2 Python Interface 工具集

5- utils.PNG

准确地来说小工具只有4个文件 分别是目录下的 assp/rttov/sph/utils , demo_ssp4arts.py 是一个使用这4个工具文件地示例程序, sph这个文件我们暂时还用不到是有关球谐函数的转化,未来ARTS数据库更新了 Azimuthally random 的数据后或许会用到, 我们现在主要关注assp/rttov/utils 这些文件。

File I/O Summary.png

思来想去还是一张图最能说明整个ARTS database 文件I/O关系网

稍微注明几点, 剩下的各位自己对照着这张文件I/O总结图去看python源代码就能看懂了:

  1. MATLAB 的API基本和python的命名,功能相似, 只是目前有些功能还没有用 MATLAB 实现, 目前python依旧是最好用的database Interface, MATLAB的一些函数工具集和python同名, 就不在图上一一列出了

  2. Create Mix 可以实现把大粒子和小粒子混合生成新的RSSP, 需要输入不同粒子size下两种粒子的权重, 以及两个粒子的S(single scattering property),M(metadata)。 Fullset 中就有6个预置的混合粒子: 具体参考 StandardHabits 中的Readme 文件


    full set.PNG
  1. assp 的含义是 ARTS single scattering property, rssp 的含义是 rttov single scattering property, RTTOV只需要 single scattering albedo, extinction, asymmetry这些衍生量, 不需要完整的 Stokes 向量, 因此生成的.rssp 文件比原始的数据库文件小很多

  2. 可以使用assp的 assp_import_ssdb , 也可以使用 rttov.py中封装好的插值和输入函数 rttov.get_assp, 比较方便, 同时还可以获取 mD list


好了, 就介绍到这里,想要知道更加详细的读者就去审计源码, 不过知道上面这些基本够用

贴出来一个自己写的例程:rssp_test.py

生成自己需要的.rssp, 然后放到rttov12的artsdb文件夹下, 修改arts_mod.F90文件,加上自己的rssp文件, 重新编译RTTOV12, 就可以使用自己定制的粒子散射文件生成Mietable啦!

SSDBpath = ...

outpath = ...

filename = 'myrssp.rssp'


habID = 1 # habit ID
orient = 'totally_random' # orientation

minD = 0. # minimum size to extract
maxD = float("inf") # maximum size to extract
sizeparam = 'dmax' # size parameter to apply extraction limits on.
                    # available (param [unit]): 'dmax' [m], 'dveq' [m], 'mass' [kg]

fmin = 0. # minimum frequency to extract [Hz]
fmax = float("inf") # maximum frequency to extract

tmin = 0. # minimum temperature to extract [K]
tmax = float("inf") # maximum temperature to extract


try:
  import utils
  import assp
  import rttov
except ImportError:
  #try import of Python interface package from current location (by inserting
  # current location at start of sys.path)
  # (ie see, whether we are inside a DataInterfaces folder)
  #implicitly also imports (with lower priority) if Python interface package is
  # a subfolder to any of the other PYTHONPATH entries.
  try:
    import os.path
    os.path.sys.path.insert(0,'')
    from Python import utils
    from Python import assp
    from Python import rttov
  except ImportError:
    #finally, try DataInterfaces folder in SSDBpath
    db_interface_path =  os.path.join(os.path.dirname(SSDBpath),'DataInterfaces')
    #if os.path.isdir(db_interface_path):
    os.path.sys.path.append(db_interface_path)
    try:
      from Python import utils
      from Python import assp
      from Python import rttov
    except ImportError:
      raise Exception(\
        'Script requires utils and assp from the SSDB python interface,\n' + \
        'but import failed.\n' + \
        'Maybe you are neither in the SSDB DataInterfaces folder\n' + \
        'nor in its Python subfolder nor have added the folder to your PYTHONPATH?' )
except Exception as e:
  print('Script requires utils and assp from the SSDB python interface,\n' + \
        'but import failed with following error message:\n' + \
        '  %s%\n' %str(e))


# Init database
utils.ssdb_init( SSDBpath )

# Import data, with some cropping in size and freq
S,M,mD = rttov.get_assp( habID, orient, allow_nodata=False,
                             size_range=[minD, maxD], size_type=sizeparam,
                             freq_range=[fmin, fmax],
                             temp_range=[tmin, tmax] )

rssp = rttov.calc_rssp(S, M, mD)


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

推荐阅读更多精彩内容