はじめに
nctoolkitはnetCDFの中身を簡単に解析・描画することのできるPythonパッケージです。
Intel Macの場合、公式ドキュメントにあるようにconda install -c conda-forge nctoolkit
でインストールできますが、Apple Silicon (M1 Mac) の場合はこのコマンドだけではインストールできませんでした。そこでインストールの手順についてメモしておきます。
実行環境
- MacBook Air (M1, 2020)
- macOS Monterey バージョン 12.4
- Homebrew 3.5.2
- Python 3.9.13 (Mambaforgeで環境構築)
インストール方法
手順まとめ
$ brew install cdo
$ brew install nco
$ mamba install -c conda-forge xarray netCDF4 hvplot panel pandas dill python-dateutil plotnine numpy scipy pandas cfgrib metpy matplotlib cartopy geoviews jupyter
$ pip install nctoolkit
以下では実際に試行錯誤した手順について、うまくいかなかった方法も含めて記しておきます。
(失敗1) mambaでnctoolkitをインストール
mamba
(conda
)コマンドを用いてインストールしようとすると、conda-forgeリポジトリでApple Silicon (osx-arm64)用のCDOやNCOが提供されていないため、エラーになりインストールできません。
$ mamba install -c conda-forge nctoolkit
# (中略)
Encountered problems while solving:
- nothing provides cdo needed by nctoolkit-0.2.1-pyh32f6830_1
HomebrewでNCOとCDOのインストール
System dependenciesにあるCDOとNCOをHomebrewでインストールします。
$ brew install cdo
$ brew install nco
仮想環境の作成 (任意)
nctoolkitはmambaではインストールできないため、pipを用いてインストールすることにします。必須ではないですが、不具合が生じた場合にやり直しがしやすいため、ここでは新しくweatherという名前の仮想環境を作成しました。
$ mamba create -n weather python=3.9
$ mamba activate weather
(失敗2) pipでnctoolkitとその依存するパッケージを全てインストール
次の方針としては、pipでnctoolkitをインストールすることです。しかし、最初からpip install nctoolkit
として全てのパッケージをインストールすると、netCDF4ライブラリで共有ライブラリの読み込みに失敗しました。
>>> import nctoolkit as nc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/ytakano/mambaforge/envs/nctk/lib/python3.9/site-packages/nctoolkit/__init__.py", line 1, in <module>
from nctoolkit.api import (
File "/Users/ytakano/mambaforge/envs/nctk/lib/python3.9/site-packages/nctoolkit/api.py", line 16, in <module>
from netCDF4 import Dataset
File "/Users/ytakano/mambaforge/envs/nctk/lib/python3.9/site-packages/netCDF4/__init__.py", line 3, in <module>
from ._netCDF4 import *
ImportError: dlopen(/Users/ytakano/mambaforge/envs/nctk/lib/python3.9/site-packages/netCDF4/_netCDF4.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_H5get_libversion'
これを回避するため、依存するPythonパッケージはなるべくmambaを使ってインストールすることにします。
手順2: 依存するパッケージをmambaでインストール
ドキュメントのPython Dependenciesに書かれているパッケージをmambaを使ってインストールします。
requirements.txtに書かれている以下のパッケージのうち、ncplot以外はmambaでインストールできそうです。
xarray
netCDF4
hvplot
panel
pandas
ncplot>=0.0.5
dill
python-dateutil
plotnine
よって後で描画に必要なパッケージや気象のデータ解析によく使うパッケージも含めて、以下をmambaでインストールします。
$ mamba install -c conda-forge xarray netCDF4 hvplot panel pandas dill python-dateutil plotnine numpy scipy pandas cfgrib metpy matplotlib cartopy geoviews jupyter
pipでnctoolkitをインストール
最後にpipでnctoolkitをインストールします。先ほどmambaでインストールできなかったncplotもここでインストールされます。
$ pip install nctoolkit
# (中略)
Installing collected packages: ncplot, nctoolkit
Successfully installed ncplot-0.2.2 nctoolkit-0.5.0
動作確認
今回作成したweather仮想環境に接続したノートブックカーネルを作成し、Jupyter Notebookを使って動作確認をしていきます。
$ python -m ipykernel install --user --name weather --display-name weather
$ jupyter notebook
ドキュメントのIntroductionに従い、適当なnetCDFファイルを開いて描画してみます。インポートを含めると3行です。
import nctoolkit as nc
ds = nc.open_data("oa_sst.nc")
ds.plot()
xarray.DataArray.plot.pcolormesh
とは異なり、空間2次元、時間1次元のデータもそのままプロットできます。表示時刻は右に表示されているスライダーで変更することができます。