####################################### # 保全優先区域の選択ツールSecSel # # 2020-12-08 ####################################### Name of software: SecSel Software access: http://www.nies.go.jp/biology/en/data/tool/secsel/index.html Developer: TAKENAKA, Akio Source language: Python 3.X Availability and cost: open source Released under the MIT license https://licenses.opensource.jp/ 【この文書について】 この文書は、生物多様性保全のための保護区デザインを支援するPythonのパッ ケージSecSel の紹介である。おおよそを理解してとりあえず動かすための説 明が書かれている。より詳細な情報は readme_more.txtにある。 【SecSelとは】 SecSelは、広域に散在する多数の生物多様性要素を効率よく保全する保護区の 設計を支援するツールである。 生物多様性要素の保全以外にも、生態系サービスの利用や、その他の土地利用 などのを含めた土地利用デザインにも用いることができる。 対象地域を小区画に分割し、各小区画内に分布する各生物多様性要素の価値を 評価したデータをもとに、保護区を選ぶ。 評価値は順序尺度であればよく、半定量的なデータを活かすことができる。 保全目標は、各要素について高評価の区画を何ケ所選ぶかで設定する。価値の 評価データが粗ければ、それだけ同点の区画が多くなり、選択の自由度が増す。 定量的な評価データが不十分であっても、むしろそれを逆手にとって効率のよ い保護区を選択することができる。 小区画ごとのコストの考慮、なるべく散在しない保護区の設計、同じ区画内で は保全が両立しない要素や、生態系サービスの利用と保全の排他関係などを考 慮することもできる。 SecSelはプログラミング言語 Python で書かれたパッケージである。Python の実行環境がインストールされたシステム上ならOSにかかわらず動作する。 SecSelのパッケージを利用するには、パッケージをインストールしたうえで、 SecSelを利用するスクリプト(プログラム)を作成し、そのなかでsecselを インポートして使用する。したがって、多少のPythonプログラミングの知識 が必要である。 【SecSelのインストール】 以下のサイトから secsel_X_X_X.zip もしくは secsel_X_X_X_ja.zipをダウン ロードする(X.X.X はsecsel のバージョン番号)。 http://www.nies.go.jp/biology/en/data/tool/secsel/index.html secsel_X_X_X.zip の中には、SecSelのパッケージが含まれている。 ※secsel_X_X_X_ja.zip 中のファイルは、Python スクリプト中に日本語コメ ントが加筆されている。実行コードには違いがない。 続いて、Python のパッケージ管理ツール pip を使ってsecsel をインスト ールする。 まず、作業用の任意のディレクトリに、secsel_X_X_X.zip の内容を展開する。 zip ファイルを展開した作業用ディレクトリで、コマンドプロンプトないしは ターミナルを開く(方法はOSによる)。そこで pip install . を実行する(最後のピリオドまで忘れずに)。 Successfully installed secsel-X.X.X と表示されたらsecselパッケージは正常にインストールされている。 ※ このとき、pip のバージョンが古いと、バージョンアップを勧める表示も出 る。指示に従えば簡単に更新できるが、そのままでも問題はない。 【実行テスト】 以下のテストが成功すれば、正しくインストールできていることを確認できる。 上記のサイトから test_dataset.zip ないしは test_dataset_ja.zip をダウン ロードし、適当なディレクトリでzip ファイルの中を展開する。test_data.zip には実行テスト用のファイルやSecSelの使い方を知るのに役立つサンプルが含ま れている。 ※ test_dataset_ja.zip に含まれるファイルでは、Python スクリプトおよ びパラメータファイル中に日本語コメントが加筆されている。実行されるコー ドには違いはない。 展開したディレクトリでコマンドプロンプトないしはターミナルを開き、 python run_secsel_example.py parameters.txt と入力する、何行かメッセージが表示されたのち、 ---completed--- と表示されたらテストデータを使ったサイト選択の終了。さらに python map_results.py foo-01_PA.txt と入力すると、選択されたサイトを示すマップが表示される(matplotlibがイ ンストールされていることが必要)。マップのウインドウを閉じるとコマンド プロンプトに戻る。図化プログラムについては本文書の最後も参照。 選択の実行に関する詳細な設定はパラメータファイルに書かれている。パラメ ータファイルについては後述する。また選択結果の出力ファイルの内容につい ても後述する。 【SecSelの用語】 SecSel で使うおもな用語を説明する。 ・feature (保全・利用対象要素) 生き物の種、種より上位・下位の分類群、生態系タイプ、土地利用タイプ、生 態系機能、生態系サービスなど。 ・site (サイト) 解析対象地域を小区画に分けたもの。この単位ごとに、保全対象地に加えるか どうかを判断する。 ・local unit (ユニット) あるfeature の、ひとつのsite 内に存在する小部分。たとえばある生物種の、 あるsite内に存在する個体群など。 ・value (価値) それぞれのlocal unit の保全価値・利用価値。たとえばsite内の個体群の大、 中、小、生態系サービスの量の多い、少ない、など。 SecSelでは、価値は順序尺度評価されていればよい(当然、間隔尺度、比例尺 度も可)。また、順序尺度のレベル数は任意(2 段階でも、5 段階でも、10段 階でも可)。あるfeatureのlocal unit があるsite に存在しないなら、価 値が0 のlocal unit があると考える。レベル数が多いほど、高価値のlocal unit をより厳密に含む保護区が選択される。いっぽう、レベル数が少なく、 同点評価が多いほど選択の自由度が高まるので、低コスト・小面積の保護区を デザインしやすくなる。 ・top-N included あるfeature について、価値が高いものからN 個までが保護区に含まれている こと。たとえばもっとも価値が高いlocal unit がひとつだけある場合、保護 区に多数のlocal unit が含まれていても、この効果値のlocal unit が含ま れていないならtop-1 included が満たされていないことになる。また、もっ とも高い価値の local unit が10個あるならば、そのうちの任意の3 個が含ま れていればtop-3 included、5 個が含まれていればtop-5 included となる。 ・target:保全目標 それぞれのfeature について、価値が高いものからいくつまでを保護区に含め るかを保全目標として設定する。たとえば3 個を目標とするなら、top-3 included になるように保護区を選ぶ必要がある。より価値が低いlocal unit を多数含めても、高価値のlocal unit の代替とはならない。 【パラメータファイル】 解析対象とするデータファイル名の指定、保全目標の設定、そのほかSecSelの 動作の制御に関する諸設定は、パラメータファイルで行う。パラメータファイ ルはテキストファイルで、各行にパラメータ名とそのパラメータに設定する値 をタブ区切りで書く。空白行および # 以降は無視される。 以下は、最小限の設定項目の説明。test_dataset.zip から取り出した parameters.txtおよびそのほかのデータファイルのファイルも参照のこと。 また、そのほかの設定項目についてはreadme_more.txt を参照。 [local_units_file] 各小区画(site)での、各保全・利用対象要素(feature )の価値(value) を記録したファイルのファイル名。ヘッダ行(1 行目)は'site'に続いて各 feature の名前が並んでいる。以下の各行は各siteに対応している。各行に、 サイト名に続いて各feature の価値がタブ区切りで書かれている。ある要素が あるサイトに存在する場合、その要素は 0 より大きい価値を持つと想定。価 値は整数、実数どちらも可。 添付のサンプルファイルでは、400のサイトに8種類の要素が散在している。 各local unit の評価は3段階で最高値は3である。サイト名の最初の3つの 数字はx 座標、あとの3つはy座標を表す。 ※サンプルファイル:foo_local_units.txt [output_file_base] 結果の出力ファイルの名前。指定した文字列から、各試行の結果ファイルを作 成する(xxxx_NNN_PA.txt 、xxxxが指定した文字列、NNN が通し番号)。また、 _sum を付加したもの(xxxx_sum.txt )が集計ファイル名。 [default_top_n] デフォルトの保全目標。top_n_fileで指定する保全目標ファイルで別途指定し ていないfeature はすべてこの値が保全目標となり、local_unit のうち高評 価のもの上位からこの目標の個数までを含むように保護区に含めるsiteを選択 する。保全目標ファイルについては readme_more_ja.txt を参照。 [n_run] 選択の試行回数。指定しない場合は1回のみ。 保全目標達成に向けてサイトをひとつづつ選んでいく過程で、同程度に有効な サイトが複数ある場合にはそのうちからランダムに選ぶため、繰り返しごとに 結果は異なり得る。このため、十分な回数だけ試行を繰り返し、そのなかから 適当なものを選ぶことができる。また、多数回の結果を集計して、各サイトの 選択頻度に注目することもできる。 【試行結果の出力ファイル】 実行テストの項にあるように、コマンドプロンプトないしターミナルで、 python run_secsel_example.py parameters.txt とすると、パラメータファイル parameters.txt の設定に従って10回の選択が 繰り返され、それぞれの結果が foo-01_PA.txt, foo-02_PA.txt, ... foo-10_PA.txt に記録されている。また、それらの集計結果がfoo_sum.txt に 記録されている。 ○試行ごとの結果ファイル 例:foo-XX_PA.txt foo は、パラメータファイル内で設定されている output_file_base の値。ヘ ッダ行に続いて、選ばれた順にサイトの情報が記録される。最初がsite名、次 が選ばれた順番(1 から。事前保全サイトがある場合はそれらの順番は0 と表 示)。パラメータファイルでの出力形式の設定により、より詳細な情報を出力 することもできる。 ○集計ファイル foo_sum.txt ヘッダ行に続いて、全試行のなかで一度でも選ばれたサイトの名が、選ばれた 回数の順に記録されている。各行では、サイト名に続いて、選択回数が記録さ れている。集計ファイルも、パラメータファイルの設定により、より詳細な情 報を出力することができる。 【おまけ 結果の図化】 個々の試行で生成された結果ファイルは、同梱のスクリプト map_results.py で図化することができる。コストの考慮の効果、散在ペナルティの考慮の効果 などを見て確認できる。 例:最初に示した実行テストで作成したファイルの図化 python map_results.py foo-01_PA.txt と入力すると、1回目の試行で選択されたサイトを示すマップが表示される。 マップのウインドウを閉じるとコマンドプロンプトに戻る。png ファイルも生 成される。 python map_results.py foo_sum.txt と入力すると、10回の試行での選択回数で色分けしたマップが表示される。 どちらの処理をするかは、指定するデータファイル名で判断している。