CDO のセットアップ(hysk)
使い方はCDOの使い方(hysk)参照.
Climate Data Operators (CDO) の略. Max Plank Institute fur Meteorologie が作成元. 最新は v1.7.0 (released at 2015-10-28; checked 2016-02-28). 気候学に関わるデータ処理・解析ツールの集合体で, コマンドラインで処理できるのが大きな特徴. GUI が好きな人には向いてない. NetCDF4 や HDF5 など,事前インストールすべきものが複数ある. See also HDF5セットアップ.
セットアップにかける手間は煩雑だが,使えると非常に便利な事柄が多数.
私自身も全容を把握しきれてないが,特に便利と思われる点は下記:
- netCDF形式データの切り出し・結合(時間・空間・要素などを指定して)
- 格子系の変換(ガウス格子から緯度経度格子など)
- データ記録形式の変換(有名どころでは NetCDF 3/4 と GRIB 1/2)
- 気象学でよく利用される算術計算(数値フィルタ類)や統計解析 (EOF解析まで出来るらしい... いいのか?そんな簡単になって)などの計算ツールが利用可能
- 一部関数は OpenMP をサポート(OpenMP 利用可能な C コンパイラが必須). ただし,大容量数値データ処理時のボトルネックは,その多くがディスクからの read/write , すなわちデータ I/O の遅さに起因する. OpenMP の利便性が活かせる機能 (See OpenMP support (CDO wiki)) でこそ使うべし
私個人としては,CMIP5 のデータ解析時に,格子間隔を統一するためのツールとして導入. 教えてくれた荒川理氏に感謝.
- See also NetCDF セットアップ (hysk)
- See also HDF5 & HDF-EOS セットアップ (hysk)
- See also 将来気候データ情報 (hysk): CMIP5 関連のデータや研究補助資料のまとめ
用意するもの
最新版 Latest version
See CDO web
CDO 本体 (latest: ver. 1.7.0; checked: 2016-02-28)
- cdo-current.tar.gz
- CDO 最新(RC)版へのリンク. v1.7.1 の Release Candidate (RC) であった. web アドレスは変わると思われるので, CDO ダウンロードファイルリスト を直接訪問する方が確実.
- cdo-1.7.0.tar.gz
- CDO 最新版 v1.7.0 へのリンク.
後述の旧バージョンの情報も保存.
- cdo-1.6.3.tar.gz
- CDO 本体(release date of ver.1.6.3: 2014-02-18; checked 2014-06-18). 最終的に,インストールするのは,実質上 "cdo" という実行ファイル一つだけ.
- libs4cdo-0.0.10.tar.gz
- CDO のライブラリ(?)(release date of ver.0.0.10: 2012-03-22). どうやら不要らしい.旧バージョン用なのか? 未確認.
事前準備に必要なパッケージ群
必須なのは HDF5 くらい.
- wgrib2.tar.gz (v.0.1.9.8; checked at 2014-02-08)
- udunits-2.1.24.tar.gz
- proj-4.8.0.tar.gz; See PROJ.4 web
- grib_api_1.11.0.tar.gz
- zlib128.zip (/usr/local/ 以下に static library (libz.a) を入れるため)
- szip-2.1.tar.gz (/usr/local/ 以下に static library (libsz.a) を入れるため)
- hdf-4-2.9.tar.bz2 (必須ではない.私的な事情)
- hdf5-1.8.12.tar.bz2
- netcdf-4.3.1.1.tar.gz
- netcdf-fortran-4.2.tar.gz (必須でない.私的な事情)
前提条件
- CDOインストール以前に,下記の準備がなされていることを確認する:
- 開発環境 (コンパイルに必要なツール群) がインストール済みである
- (CentOS の場合) yum groupinstall "Development Tools" "Development Libraries" などをやっとけ (OSバージョンにより入れるグループ名が微妙に異なる. See also yum 使用法 # OSインストール後のyum)
- (MacOS の場合) Xcode Command Line Tools のインストール. See also 私的Mac Tips
- Cコンパイラはシステム標準の gcc
- Fortran コンパイラは Intel Fortran (CentOS) とする.gfortran でも正常動作する.
- 使用コンパイラを環境変数 FC に設定しておく
- CDO インストール時に関係する条件・環境変数
hoge
- hoge
インストール手順
CDO 本体インストールの事前準備
これより先に HDF5 & NetCDF をインストールすること (See HDF5セットアップ(hysk), NetCDFセットアップ(hysk)).
udunits2 の導入 (/usr/local/ 以下にインストール)
なくても構わないが,他でも使うのでついでに. 特筆事項なし.素直にコンパイル & インストール.
ただし,yum パッケージにも含まれている(yum search udunits で見つかるはず)ので, 面倒な人はそれを使っても十分. udunits2 のRPM (EPEL repository)は,特殊な外部パッケージに依存してない(yum deplist udunits2 で確認; See also yum 使用法 # 主なオプション)ので, yum で入れても問題なさそう(2016-02-28).
PROJ.4 の導入 (/usr/local/ 以下にインストール)
この RPM も udunits と同様に外部依存少ないので,yum install proj (EPEL)で入れてしまっても問題なかろう. CentOS 7.2 の RPM では,v4.8.0 だった(checked 2016-02-28).
tar ball からの導入,特筆事項なし.素直にコンパイル & インストール.
$ tar xzf proj-4.8.0.tar.gz $ cd proj-4.8.0 $ ./configure --prefix=/usr/local $ make $ sudo make install
GRIB API の導入
この前に NetCDF (4.x 系列) をインストールしておくこと (See NetCDF セットアップ (hysk))
- GRIB API のコンパイル & インストール.
(You can get a source code from
ECMWF GRIB-API;
左側メニューの "Releases" から最新版 1.12.1 を選択; checked: 2014-06-18)
$ tar xzf grib_api-1.12.1.tar.gz $ cd grib_api-1.12.1/ $ ./configure --prefix=/usr/local/grib_api-1.12.1 \ --with-netcdf=/usr/local/netcdf4 --with-jasper=/usr \ --with-png-support $ make $ make check $ sudo make install
- 最新チェック時のバージョンは 1.14.5 (released at 2016-01-27; checked 2016-02-28). 正常にインストール成功.
/usr/local/grib_api-1.12.1/{bin,include,lib,share}/ 以下にインストールされる. HDF5, NetCDF などと同様に,バージョン番号を外した部分だけの名前でシンボリックリンクをはる.
$ sudo ln -s /usr/local/grib_api-1.12.1 /usr/local/grib_api
CDO 本体
CDO のインストール
下記は v1.6.3 時点の記述だが,v1.6.9, v1.7.0 でも同じコンパイルオプションで正常動作を確認 (update 2016-02-28).
CDO 1.6.3 を configure & make,${CDO_root}/{bin,include,lib}/ 以下にインストール. ここでは,CDO_root=/usr/local/ とする. CDO を個別ディレクトリに入れない理由は,インストールされるものは非常に少ないため(下記). configure 時に --enable-cdi-lib もつけないなら,${CDO_root}/bin/cdo だけ.
${CDO_root}/bin/cdo ${CDO_root}/include/cdi.h ${CDO_root}/include/cdi.inc ${CDO_root}/lib/libcdi.a ${CDO_root}/lib/libcdi.la ${CDO_root}/lib/libcdi.so.0.0.0
$ tar xzf cdo-1.6.3.tar.gz $ cd cdo-1.6.3 $ ./configure --prefix=/usr/local --with-szlib=/usr/local \ (次行に継続.以下同様) --with-hdf5=/usr/local/hdf5 --with-netcdf=/usr/local/netcdf4 \ --with-proj=/usr/local --enable-cdi-lib \ --with-grib_api=/usr/local/grib_api --with-jasper=/usr $ make >& log_make.txt $ make check >& log_make_check.txt (make check もエラー無しで終了; checked 2014-02-17) # make install
一言メモ.
- 急ぎでコンパイルしたい時には,make -j 4 などとしてもいい. 4-thread 並列くらいなら,大抵のPCで可能だろうから. 念のため,終了後に再度 make すべし.取りこぼしがあるかもしれないから.
- NetCDF のバージョンに注意. 具体的には,GRIB API のコンパイル時に参照したものと同一バージョンにすること. GRIB API はコンパイル時に NetCDF を参照する際,シンボリックリンク先の ディレクトリを参照しているらしい. 私の場合,--with-netcdf=/usr/local/netcdf4 を指定したのに コンパイル時にはリンク先の /usr/local/netcdf-4.3.1.1/ を参照していた.
- CDO v1.6.3 のコンパイル時,make check でこけた(2014-06-18). 失敗したのは OpeNDAP 関連. 原因特定する時間が無かったので,NetCDF を --disable-dap で再インストール. 念のためGRIB API も再インストールしてから CDO コンパイルを retry したら通った. 急いでいたので,手順を間違えただけかもしれないが,何か参考になるかもしれないので記録.
環境設定
インストール先が /usr/local/ 以下なので,PATH やら MANPATH やらを 追加する必要無し.
動作確認
すぐに使ってみたい(See CDO の使い方)ところだが, 最低限の動作テスト.
インストールした cdo の最低限の動作確認, 既存 cdo のコンパイル条件などを確認するには,cdo --version を実行. 実行例は下記:
$ cdo --version Climate Data Operators version 1.7.0 (http://mpimet.mpg.de/cdo) Compiled: by hayasaki on hoge.private (x86_64-unknown-linux-gnu) Feb 28 2016 15:12:39 Compiler: gcc -std=gnu99 -g -O2 -fopenmp version: gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4) Features: DATA PTHREADS OpenMP HDF5 NC4/HDF5 SZ Z PROJ.4 SSE2 Libraries: HDF5/1.8.15 proj/4.8 Filetypes: srv ext ieg grb grb2 nc nc2 nc4 nc4c CDI library version : 1.7.0 of Feb 28 2016 15:11:56 CGRIBEX library version : 1.7.3 of Sep 14 2015 10:58:44 GRIB_API library version : 1.14.5 netCDF library version : 4.3.3.1 of Jan 22 2016 23:05:23 $ HDF5 library version : 1.8.15 SERVICE library version : 1.4.0 of Feb 28 2016 15:11:43 EXTRA library version : 1.4.0 of Feb 28 2016 15:11:39 IEG library version : 1.4.0 of Feb 28 2016 15:11:41 FILE library version : 1.8.2 of Feb 28 2016 15:11:39
コマンド単体での実行すら出来なら,コンパイル & make check からやり直し.
正常動作してるようなら,実際のデータ処理をテスト.
See CDOの使い方
CDO 参照情報
外部リンク
- CDO product page = https://code.zmaw.de/projects/cdo
- CDO Docs = https://code.zmaw.de/projects/cdo/wiki/Cdo#Documentation
- PROJ.4 = PROJ.4; 地図投影法の変換に関するライブラリ. 必須ではないが,あった方が良さそう
- GRIB API = ECMWF GRIB-API; GRIBデータを扱うためのライブラリ(関数の集まり).
- szip 関連 = SZIP Compression HDF Products; 必須ではないが,動作速度(読み書き)の高速化が期待できるので入れるべき.
動作検証環境
CDO の正常動作を検証済みの環境
CPU | OS or distribution | kernel (or MacOS X ver.) |
C | Fortran |
---|---|---|---|---|
Intel Core i5-3450S 2.8 GHz (CDO v1.7.0 installed at 2016-02-28) |
CentOS 7.2.1511 | 3.10.0-327.4.4.el7.x86_64 | GCC 4.8.5 (20150623; 64-bit) | gfortran (same as gcc) |
Intel Xeon E5-2660 2.6 GHz (CDO v1.6.9 installed at 2015-10-04) |
CentOS 6.7 | 2.6.32-504.16.2.el6.x86_64 | GCC 4.4.7-16 (20120313; 64-bit) | gfortran (same as gcc) |
Intel Core i5-3450S 2.8 GHz (CDO installed at 2014-09-23) |
CentOS 7.1 | 3.10.0-229.11.1.el7.x86_64 | GCC 4.8.3 (20140911; 64-bit) | gfortran (same as gcc) |
Intel Core i7-4770 3.4 GHz | CentOS 6.5 | 2.6.32-431.17.1.el6.x86_64 | GCC 4.4.7 (20120313; 64-bit) | Intel Fortran composerXE-2013_sp1.1.106 (2014-06-25; 64-bit) |
Intel Core i5 1.7 GHz (MacBook Air Mid2012 model) |
CentOS 6.5 (on VMware Fusion 5.0.4) |
2.6.32-431.3.1.el6.x86_64 | GCC 4.4.7 (20120313; 64-bit) | Intel Fortran composerXE-2011.2.137 (2014-02-08; 64-bit) |
動作が失敗する環境
CPU | OS or distribution | kernel | C | Fortran |
---|---|---|---|---|
Intel Centrino | Fedora 19 | 3.12.9-201.fc19 | gcc 4.8.2 (20131212) | Intel Fortran 14.0.0-20130728 (2014-02-08; 64-bit) |
更新履歴
Date | Changes |
---|---|
2016-02-28 | 更新履歴を追加. 最新版 v1.7.0 が出ていた(約4ヶ月前).正常動作を確認. |
2015-10-04 | CDO v1.6.9 のコンパイル & 正常動作を確認. |
2014-06-25 | CDO v1.6.3 のコンパイル & 正常動作を確認. |
2014-02-08 | 記載開始.CDO v1.6.2 ベース(のはず). 参照ID番号付けのルールは, Linux tips (hysk) # 自分専用ルール・HTML に従う. |