多数の結果を効果的に作り出すProduce large amount of result effectively

解析では,多くの結果を作成することが必要だ.そこで,多数の結果を見通しよく生成することが必要になる.これにはいくつかのルールに従うといいだろう.

    1. 一つのディレクトリには,計算結果を生み出すスクリプトは一つ,または通し計算の複数ステップの中間生成物を生み出す一連のスクリプトだけを置く.

      1. 後者の場合は,スクリプト名をstep1_xxxx.py, step_2_yyy.pyなどのようにして,どの順番でスクリプトを実行しなくてはならないかを明確にする.

    2. 計算結果が複数の場合分けを含む場合は(たとえば,ローパスフィルターとハイパスフィルター,あるいは線形トレンドを除去する除去しないなど)は必要に応じて適切なサブディレクトリに分割して格納する.その際,主要な結果となるべき(たとえば論文で図示する)結果はmainR_xxxx,副次的な(サブとなる)結果はsubR_yyyyなどというディレクトリ名とすると,あとでわかりやすい.ここでmainRはmain Resultsの意味である.

    3. 複数の場合の計算には,できるだけ複数の場合を一つのpython scriptで計算するべきで,複数の場合をそれぞれ異なるpython scriptで計算することは避ける.なぜなら,計算方法のどこかを変更した場合に,前者の方法であれば,モレ無く再計算が容易だが,後者は編集に手間がかかるし,編集モレといった感知することが難しいミスを引き起こすためである.

    4. 一つのディレクトリに複数の計算スクリプトによる結果はなるべく格納しない.どれがどのスクリプトの計算であるのかが分からなくなるためである.もし格納する場合には,スクリプトの名前と計算結果の名前の最初の方を共通させるなりして,どれがどのスクリプトによるのかを明らかにする.

    5. 計算結果のファイルは,後で複数の異なる作業で使うのであれば,netcdfファイルに保存することを基本とする.ここの際リスタートファイル以外はディスク容量の節約のためpythonの基本である倍精度浮動小数(float64)ではなく単精度浮動小数(float32)で保存しまた圧縮をかける(xarrayでのやり方はここ).なお,netcdfファイルのattributesにどのスクリプトが,その計算結果を生成したのか,また主要な計算パラメータを書いておくとよい.この主要計算パラメータは,後で図を描く時に図にも表示すると後で図を理解しやすい.

    6. 計算結果を図の描画に使うだけでも,計算結果に基づき複数の図を描く場合や,時間がかかる計算の場合は,あるpythonセッションで計算を行ってその結果をファイルに保存して,別なpythonセッションでそれを使って図を作る方が,計算と図の生成を単一のpythonセッションで行うよりも効率がよい.この場合の計算結果の保存は,dillでセッションの変数を保存するのが簡単である.ただし,図の描画に不要かつ大きなメモリサイズのarray(numpy array, xarray data arrayなど)をdelで削除した上で保存する.

    7. 5で保存した計算結果または時間のかからない計算なら同じpythonセッションで計算した結果に対して,ざっと見るための図を同じディレクトリに多数生成する.図のファイル形式は,pngがおすすめである.それらの図は後でeog xxx*.png として,関係する図をカーソルキーで次々に見られるように考えて,名前をつける.たとえば,極投影とrobinson投影で多数の高度の図を作っているなら,極投影は極投影同士,robinsonはrobinson同士で比較する方がわかりやすいので,nps_l850.pngなどのように名前をつけると,eog nps*.png で異なる高度の図を比較することが容易である.