はじめに
2015年ころまで気象データの解析を行っていたときは、次のような環境で作業していました。
- OS: Ubuntu
- 処理言語: Fortran, C, ShellScript
- 可視化: GrADS, GMT
先人たちの資産を利用する意味でも当時は最適解だったかなと思います。
しかし、時は流れて 2024 年。。。
マシンスペックの向上、 Python コミュニティの成熟などの後押しもあり、気象業界でも Python ユーザーは増えてきたようです。
私も現在、自分の研究では Python にどっぷりハマっていますw
気象解析向けの Python 環境構築手順はいくつかのサイトで公開されていますが1 2、本記事では自分の Tips を追加した備忘録としてまとめたものをご紹介します。
対象読者
- これから気象系の研究室に配属される方
- 気象データ解析を行っており、 Python 環境に興味がある方
本記事は初心者向けに補足説明を多めにしております。
上級者の方はご容赦ください。
前提
- OS: Windows, MacOS, Linux
- Python 環境: インストールなし or OS のデフォルト状態
Miniconda のインストールやセットアップはコマンドラインで実行する作業があります。
Windows の方はコマンドプロンプト or PowerShell、 Linux や MacOS の方はターミナルアプリを利用します。
環境構築
Miniconda3 のインストール
以下のURLからダウンロードしてインストールします。
https://docs.conda.io/en/latest/miniconda.html
次のコマンドを実行してバージョン情報が表示されれば、 Miniconda3 のインストールは完了です。
$ conda -v
参考
Linux, MacOS にインストールされる方は公式サイトの末尾にある conda init
を忘れずに実行してください。
また、インストールが完了したらターミナルを再起動することで、 conda
コマンドが実行できるようになります。
Python 仮想環境の構築
仮想環境で構築するメリット
Miniconda を利用する上でのメリットの一つに、同じマシンの中で Python の実行環境を仮想環境として複数管理できる点があります。
これは企業などの Developer にとっては非常に重宝するメリットではあるものの、研究者にとってはメリットを感じないかもしれません。
しかし、まれではありますが、次のような場面に直面することもあります。(実際私はありました)
- 普段の解析は Python 3.x 系だけど、知り合いからもらったコードは Python 2.x 系であるため実行してもエラーが出て動かない
- 利用しているライブラリのバージョンを上げたが、他のライブラリとの整合性が取れずに環境がクラッシュしてしまい、再インストールを余儀なくされる
このような場面でも Miniconda であれば、バージョン違いの環境を簡単に準備できたり、現環境の複製をつくれたりするので安心です。
Miniconda で気象解析用の Python 環境をつくる
ということで本題です。
次のコマンドを実行して、まずは新規に仮想環境を作ります。
$ conda create -n env01
# or
$ conda create -n env01 python=3.9
env01
の部分が環境名となります。好きな名前でOKですが、カスタマイズした場合は以降のコマンド実行時はカスタマイズした環境名に読み替えるように注意してください。
Python のバージョンを明示的に指定する場合は2つめのコマンドを実行してください。
上記のコマンドを実行してしばらくすると、下記のようにインストールする内容がターミナルに表示されます。
The following NEW packages will be INSTALLED:
bzip2 pkgs/main/osx-arm64::bzip2-1.0.8-h620ffc9_4
ca-certificates pkgs/main/osx-arm64::ca-certificates-2023.12.12-hca03da5_0
expat pkgs/main/osx-arm64::expat-2.5.0-h313beb8_0
libcxx pkgs/main/osx-arm64::libcxx-14.0.6-h848a8c0_0
libffi pkgs/main/osx-arm64::libffi-3.4.4-hca03da5_0
ncurses pkgs/main/osx-arm64::ncurses-6.4-h313beb8_0
openssl pkgs/main/osx-arm64::openssl-3.0.12-h1a28f6b_0
pip pkgs/main/osx-arm64::pip-23.3.1-py312hca03da5_0
python pkgs/main/osx-arm64::python-3.12.1-h99e199e_0
readline pkgs/main/osx-arm64::readline-8.2-h1a28f6b_0
setuptools pkgs/main/osx-arm64::setuptools-68.2.2-py312hca03da5_0
sqlite pkgs/main/osx-arm64::sqlite-3.41.2-h80987f9_0
tk pkgs/main/osx-arm64::tk-8.6.12-hb8d0fd4_0
tzdata pkgs/main/noarch::tzdata-2023d-h04d1e81_0
wheel pkgs/main/osx-arm64::wheel-0.41.2-py312hca03da5_0
xz pkgs/main/osx-arm64::xz-5.4.5-h80987f9_0
zlib pkgs/main/osx-arm64::zlib-1.2.13-h5a0b063_0
Proceed ([y]/n)?
このような表示になったら y
-> Enter
を入力して先に進みます。
今後の手順でも インストールしますか? [y/n]
のような内容がターミナルに表示されます。
その場合は確認の上、 y
-> Enter
を入力してください。
インストールが進んで、次のような内容が表示されれば OK。
Downloading and Extracting Packages
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate env01
#
# To deactivate an active environment, use
#
# $ conda deactivate
作成した仮想環境に切り替えます。
$ conda activate env01
作成した仮想環境に Python のパッケージ(ライブラリ)をインストールしていきます。
# Anaconda/Miniconda のリポジトリにないものを先にインストール
$ pip install netcdf4
# インストールの高速化のため、 mamba をインストールする
$ conda install -c conda-forge mamba
# 標準で公開されているライブラリをインストール
$ mamba install xarray cartopy ipykernel
# conda-forge にあるライブラリをインストール
$ mamba install -c conda-forge cfgrib metpy matplotlib pygrib geopy
上記でインストールしたライブラリの簡単な説明は次のとおりです。
ライブラリ | 説明 | 備考 |
---|---|---|
netcdf4 | NetCDF 形式のデータの入出力のためのライブラリ |
xarray だけでもいいが念のためインストール |
mamba |
conda でインストールするよりも爆速でインストールできる。めっちゃ早い。 |
|
xarray | NetCDF 形式データの取り扱いをより簡易にしてくれる | 2024/01/22 現在: Python バージョンが 3.9 以降である必要あり |
cartpy | 地理情報ライブラリ | |
ipykernel | VSCode で Jupyter Notebook を実行するために必要 | |
cfgrib | xarray を使って GRIB 形式データを取り扱うときに利用 | 気象庁 GRIB2 データを読む場合はエラーになる可能性があるため、 pygrib で読むことを推奨 |
metpy | 気象業界で利用する各種物理量の計算・描画をサポートしてくれるライブラリ | |
matplotlib | 言わずとしれた描画ライブラリ | |
pygrib | GIRB形式データの入出力ライブラリ | 前述の通り気象庁 GRIB2 形式データの取り扱いの時に利用 |
geopy | 緯度経度情報から2地点間の距離を計算できる |
明示的なインストールはしていませんが、 Python で科学計算を行うために利用利用される numpy
、 pandas
、 scipy
は上記のライブラリのインストールに付随してインストールされます。
Python で気象解析を行う際は上記のインストールで充足すると思いますが、
私は自動実行ツールの実行および開発用に下記のライブラリを入れています。
$ pip install dictknife zc.lockfile
$ mamba install libcurl python-dotenv pytest pytest-mock yaml pyyaml
Python 環境の動作確認
最後に次のような Python ファイルを準備して実行し、エラーが発生しなければインストール完了です!
※ エラーが発生した場合は、新規に仮想環境を構築し、Python のバージョンを変更するなどして対応する必要があります。
import xarray as xr
import cartopy
import metpy
import matplotlib
import pygrib
import geopy
import scipy
import numpy as np
import pandas as pd
print('Install Succeeded!')
$ python install_test.py
> Install Succeeded!
終わりに
冒頭で書いたような以前の環境を構築しようとすると、あれやこれやとインストールして動作確認して。。。と煩雑な手順を踏む必要がありましたが、 Python 環境であれば簡単にセットアップが終わる印象です。
また、 Python は Fortran や C 言語に比べ計算速度は遅いものの、
- マシンスペックの向上により、さほど遅さが気にならない
- コードが見やすい
- ShellScript で実行していたようなファイル操作、日時操作が実装しやすい
- 計算と描画が1つの言語で完結できる
- Jupyter notebook 環境を利用することで GrADS と同様の操作感で利用できる
といった様々なメリットがあります。
慣れてしまった今では、旧環境での作業をするのに躊躇してしまうほどです笑
今回の手順では私が主に利用しているライブラリを紹介しましたが、おすすめのライブラリがあればコメントなどで教えていただけると幸いです。
ということで、環境手順構築でした!