bayes_gp_plain_shimizu プログラム仕様

ガウス過程に基づくベイズ最適化を実行するCLIアプリケーション。

このスクリプトは、PHYSBOライブラリを利用してガウス過程ベースのベイズ最適化(BO)を行います。 与えられたデータファイル(ExcelまたはCSV)から記述子と目的関数を読み込み、 訓練データに基づいてモデルを構築し、未探索のデータポイントに対して最適な候補を探索します。 予測結果はExcelファイルに出力され、各種グラフ(等高線図、パレート図、予測値/獲得関数)も生成されます。

主な機能: - データファイルからの記述子と目的関数の読み込み。 - 目的関数の最適化モード(最大化、最小化、目標値への収束)に応じたデータ変換。 - 記述子の標準化。 - PHYSBOを用いたベイズ探索(獲得関数としてEI, PI, TSをサポート)。 - 探索結果(最良候補、事後平均、事後標準偏差)の保存。 - 探索過程と予測結果の可視化(等高線図、パレート図、予測値/獲得関数のプロット)。 - グラフ上でのデータポイントクリックによる詳細情報の表示。 - コマンドライン引数によるパラメータ設定。

関連リンク: 技術ドキュメント: bayes_gp_plain_shimizu.py

PHYSBO.bayes_gp_plain_shimizu.citation(app)[ソース]

概要: PHYSBOの引用に関する情報を表示します。

詳細説明:

PHYSBOライブラリの使用を引用するべき参照先のURLをコンソールに出力します。

パラメータ:

app (tkApplication) -- アプリケーションオブジェクト (出力に使用)。

戻り値:

None

戻り値の型:

None

PHYSBO.bayes_gp_plain_shimizu.execute(app, cparams, wait_by_input=True)[ソース]

概要: ガウス過程に基づくベイズ最適化の主要な実行ロジックです。

詳細説明:

データファイルの読み込み、記述子の標準化、PHYSBOライブラリを用いたベイズ最適化の実行、 結果の保存、および多様なグラフ(等高線図、パレート図、予測値と獲得関数)の生成を調整します。 ユーザー入力による反復学習の機能を持ち、グラフ上でのクリックイベントによって データポイントの詳細情報を表示するインタラクティブな機能も提供します。

パラメータ:
  • app (tkApplication) -- アプリケーションオブジェクト。

  • cparams (tkParams) -- アプリケーションのパラメータオブジェクト。

  • wait_by_input (bool) -- グラフ表示後にユーザー入力でプログラムを一時停止するかどうか。

戻り値:

None

戻り値の型:

None

PHYSBO.bayes_gp_plain_shimizu.get_dirname(path)[ソース]

概要: 指定されたパスのディレクトリ名を取得します。

詳細説明:

os.path.abspathos.path.dirname を使用して、 指定されたファイルパスの絶対ディレクトリ名を取得します。

パラメータ:

path (str) -- ディレクトリ名を取得する対象のファイルパス。

戻り値:

ディレクトリ名。

戻り値の型:

str

PHYSBO.bayes_gp_plain_shimizu.get_plot_descriptors(descriptors)[ソース]

概要: プロットに使用する記述子のインデックスとラベルを決定します。

詳細説明:

与えられた記述子のリスト descriptors から、プロットのX、Y、Z軸に 割り当てる記述子のインデックスとラベルを抽出します。 記述子名に X:, Y:, Z: の形式の制御子が含まれている場合、 それらを解析してプロット軸を決定し、制御子を除いたクリーンなラベルを生成します。 記述子の数が少ない場合はデフォルトの割り当てが行われます。

パラメータ:

descriptors (list[str]) -- 制御子を含む記述子のリスト。

戻り値:

プロット軸のインデックス、プロット軸のラベル、および制御子を除いた記述子ラベルのリストのタプル。

戻り値の型:

tuple[dict[str, int], dict[str, str], list[str]]

PHYSBO.bayes_gp_plain_shimizu.getarg(position, defval=None)[ソース]

概要: コマンドライン引数を安全に取得します。

詳細説明:

sys.argv から指定された position のコマンドライン引数を取得します。 指定された位置に引数が存在しない場合、defval で指定されたデフォルト値を返します。

パラメータ:
  • position (int) -- 取得する引数のインデックス (0はスクリプト名)。

  • defval (str | None) -- 引数が存在しない場合に返すデフォルト値。

戻り値:

指定された位置の引数、またはデフォルト値。

戻り値の型:

str | None

PHYSBO.bayes_gp_plain_shimizu.getfloatarg(position, defval=None)[ソース]

概要: コマンドライン引数を浮動小数点数として取得します。

詳細説明:

getarg を使用して指定された位置のコマンドライン引数を文字列として取得し、 pfloat を使用してそれを浮動小数点数に変換します。

パラメータ:
  • position (int) -- 取得する引数のインデックス (0はスクリプト名)。

  • defval (float | None) -- 引数が存在しない場合や変換失敗時に返すデフォルト値。

戻り値:

変換された浮動小数点数、またはデフォルト値。

戻り値の型:

float | None

PHYSBO.bayes_gp_plain_shimizu.getintarg(position, defval=None)[ソース]

概要: コマンドライン引数を整数として取得します。

詳細説明:

getarg を使用して指定された位置のコマンドライン引数を文字列として取得し、 pint を使用してそれを整数に変換します。

パラメータ:
  • position (int) -- 取得する引数のインデックス (0はスクリプト名)。

  • defval (int | None) -- 引数が存在しない場合や変換失敗時に返すデフォルト値。

戻り値:

変換された整数、またはデフォルト値。

戻り値の型:

int | None

PHYSBO.bayes_gp_plain_shimizu.initialize()[ソース]

概要: アプリケーションとパラメータオブジェクトを初期化します。

詳細説明:

tkApplicationtkParams のインスタンスを作成し、 デフォルトのパラメータ値を設定します。これらは、プログラムの実行中に コマンドライン引数によって更新される可能性があります。

戻り値:

初期化されたアプリケーションオブジェクトとパラメータオブジェクトのタプル。

戻り値の型:

tuple[tkApplication, tkParams]

PHYSBO.bayes_gp_plain_shimizu.load_data(app, cparams)[ソース]

概要: データファイルを読み込み、目的変数と記述子を準備します。

詳細説明:

read_data_file を使用して指定されたデータファイルを読み込み、 split_raw_data を使用して目的変数と記述子に分割します。 データフレームからNaN(欠損値)を含む行を削除し、NumPy配列に変換します。 目的変数はその最適化モード(最小化、目標値)に応じて変換(例: 最小化の場合は符号反転、目標値最適化の場合は二乗誤差)されます。 処理されたデータは tkParams オブジェクトとして、訓練データと全データに分けて返されます。

パラメータ:
  • app (tkApplication) -- アプリケーションオブジェクト (出力に使用)。

  • cparams (tkParams) -- パラメータオブジェクト (infile を含む)。

戻り値:

元のDataFrame、目的変数パラメータ、記述子パラメータ、全データパラメータ、訓練データパラメータのタプル。 ファイルの読み込みに失敗した場合は None が返されます。

戻り値の型:

tuple[pd.DataFrame | None, tkParams | None, tkParams | None, tkParams | None, tkParams | None]

PHYSBO.bayes_gp_plain_shimizu.pfloat(s, strict=True, defval=0.0)[ソース]

概要: 文字列を安全に浮動小数点数に変換します。

詳細説明:

指定された文字列 s を浮動小数点数に変換します。変換に失敗した場合、 defval で指定されたデフォルト値を返します。

パラメータ:
  • s (str) -- 変換対象の文字列。

  • strict (bool) -- 厳密な変換を適用するかどうか (現在未使用)。

  • defval (float) -- 変換失敗時に返すデフォルト値。

戻り値:

変換された浮動小数点数、またはデフォルト値。

戻り値の型:

float

PHYSBO.bayes_gp_plain_shimizu.pint(s, strict=True, defval=0)[ソース]

概要: 文字列を安全に整数に変換します。

詳細説明:

指定された文字列 s を整数に変換します。変換に失敗した場合、 defval で指定されたデフォルト値を返します。

パラメータ:
  • s (str) -- 変換対象の文字列。

  • strict (bool) -- 厳密な変換を適用するかどうか (現在未使用)。

  • defval (int) -- 変換失敗時に返すデフォルト値。

戻り値:

変換された整数、またはデフォルト値。

戻り値の型:

int

PHYSBO.bayes_gp_plain_shimizu.pintfloat(s, strict=True, defval=0.0)[ソース]

概要: 文字列を安全に整数または浮動小数点数に変換します。

詳細説明:

指定された文字列 s を最初に整数に変換を試みます。 整数への変換に失敗した場合、次に浮動小数点数への変換を試みます。 どちらの変換も失敗した場合、defval で指定されたデフォルト値を返します。

パラメータ:
  • s (str) -- 変換対象の文字列。

  • strict (bool) -- 厳密な変換を適用するかどうか (現在未使用)。

  • defval (float) -- 変換失敗時に返すデフォルト値。

戻り値:

変換された整数または浮動小数点数、またはデフォルト値。

戻り値の型:

int | float

PHYSBO.bayes_gp_plain_shimizu.read_data_file(app, infile)[ソース]

概要: 指定されたファイルからデータをPandas DataFrameとして読み込みます。

詳細説明:

ファイルパス infile.xlsx 拡張子を持つ場合、openpyxl エンジンを使用してExcelファイルを読み込みます。 それ以外の場合はCSVファイルとして読み込みます。 ファイルの読み込みに失敗した場合、エラーメッセージをコンソールに出力し None を返します。

パラメータ:
  • app (tkApplication) -- アプリケーションオブジェクト (エラー出力に使用)。

  • infile (str) -- 読み込むデータファイルへのパス。

戻り値:

読み込まれたデータを格納するPandas DataFrame、またはエラーが発生した場合は None

戻り値の型:

pd.DataFrame | None

PHYSBO.bayes_gp_plain_shimizu.replace_path(path, template, ext_dict)[ソース]

概要: ファイルパスの要素をテンプレート文字列に置き換えます。

詳細説明:

指定された path から、フルパス、ディレクトリ名、ファイル名、ファイル本体、 拡張子を抽出し、それらを ext_dict に追加します。 その後、template 文字列内の対応するプレースホルダーをこれらの値で置き換えて、 新しいパス文字列を生成して返します。

パラメータ:
  • path (str) -- 処理対象のファイルパス。

  • template (str) -- 置き換えに使用するテンプレート文字列 (例: '{filebody}-predict.xlsx')。

  • ext_dict (dict) -- テンプレートに渡す追加の辞書。抽出されたパス要素がここに追加されます。

戻り値:

置き換えが適用された新しいパス文字列。

戻り値の型:

str

PHYSBO.bayes_gp_plain_shimizu.split_raw_data(df_original)[ソース]

概要: データフレームの列ヘッダーを解析し、目的変数と記述子に分割します。

詳細説明:

df_original の列名を走査し、ヘッダーに埋め込まれた制御コード(例: =value:, max:, min:) に基づいて目的変数を識別します。制御コードは目的変数の最適化モード(特定の数値への収束、最大化、最小化) とパレート図のインデックスを示します。 制御コードのない列は記述子として扱われます。 結果は tkParams オブジェクトとして、目的変数と記述子の情報(ラベル、モード、値など)に分割されて返されます。

パラメータ:

df_original (pd.DataFrame) -- 解析する元のデータフレーム。

戻り値:

目的変数に関する情報 (targets) と記述子に関する情報 (descriptors) を含む tkParams オブジェクトのタプル。

戻り値の型:

tuple[tkParams, tkParams]

PHYSBO.bayes_gp_plain_shimizu.terminate(app, message=None, usage=None, pause=False)[ソース]

概要: プログラムを終了します。

詳細説明:

オプションで終了メッセージを表示し、使用法を表示し、 ユーザーがEnterキーを押すまで一時停止した後、プログラムを終了します。

パラメータ:
  • app (tkApplication) -- アプリケーションオブジェクト (出力に使用)。

  • message (str | None) -- 終了時に表示するメッセージ。

  • usage (callable | None) -- usage 関数を呼び出すかどうか。callable が渡された場合、それを呼び出します。

  • pause (bool) -- True の場合、終了前にユーザーがEnterキーを押すまで待機します。

戻り値:

None

戻り値の型:

None

class PHYSBO.bayes_gp_plain_shimizu.tkApplication(_globals=None, locals=None, **args)[ソース]

ベースクラス: tkObject

概要: アプリケーション全体のコンテキストとユーティリティを提供するクラスです。

詳細説明:

このクラスは、アプリケーションのパラメータ、コマンドライン引数、スクリプトパス、 使用法文字列、グローバル/ローカル変数への参照を保持します。 また、print メソッドを通じて標準化された出力機能を提供します。

get_argv()[ソース]

概要: コマンドライン引数とその数を取得します。

詳細説明:

sys.argv からプログラムに渡されたすべてのコマンドライン引数のリストと、 その引数の総数をタプルとして返します。

戻り値:

コマンドライン引数のリストと引数の数。

戻り値の型:

tuple[list[str], int]

get_params()[ソース]

概要: アプリケーションのパラメータオブジェクトを取得します。

詳細説明:

cparams 属性がまだ設定されていない場合、新しく tkParams のインスタンスを作成し、 それを cparams 属性として設定してから返します。

戻り値:

アプリケーションのパラメータオブジェクト。

戻り値の型:

tkParams

print(*args, **kwargs)[ソース]

概要: メッセージをコンソールに出力します。

詳細説明:

Pythonの組み込み print 関数と同じインターフェースを提供します。 このメソッドを介して出力を行うことで、将来的にログ機能や出力制御を 一元的に追加することが可能になります。

パラメータ:
  • args (tuple) -- 出力する位置引数。

  • kwargs (dict) -- print 関数に渡すキーワード引数 (例: end, sep, file)。

戻り値:

None

戻り値の型:

None

class PHYSBO.bayes_gp_plain_shimizu.tkObject[ソース]

ベースクラス: object

概要: 汎用的な属性アクセスと管理のための基底クラスです。

詳細説明:

このクラスは、オブジェクトの属性を辞書形式で取得、設定、更新、および表示するための 基本的なユーティリティメソッドを提供します。他のクラスの基底として機能することを 目的としています。

get(key, defval=None)[ソース]

概要: 指定されたキーの属性値を取得します。

詳細説明:

オブジェクトの内部辞書 (__dict__) から key に対応する値を取得します。 key が存在しない場合、defval で指定されたデフォルト値を返します。

パラメータ:
  • key (str) -- 取得する属性のキー。

  • defval (any | None) -- キーが存在しない場合に返すデフォルト値。

戻り値:

属性値、またはデフォルト値。

戻り値の型:

any

printinf(app)[ソース]

概要: オブジェクトの全属性とその値をコンソールに表示します。

詳細説明:

オブジェクトのすべての属性(キーと値のペア)を整形して標準出力に表示します。

パラメータ:

app (tkApplication) -- アプリケーションオブジェクト (出力に使用)。

戻り値:

None

戻り値の型:

None

set_attribute(key, val)[ソース]

概要: 指定されたキーに属性値を設定します。

詳細説明:

オブジェクトの内部辞書 (__dict__) に keyval のペアを追加または更新します。

パラメータ:
  • key (str) -- 設定する属性のキー。

  • val (any) -- 設定する属性の値。

戻り値:

None

戻り値の型:

None

update(**args)[ソース]

概要: 複数の属性を辞書形式で更新します。

詳細説明:

キーワード引数として渡された辞書を使って、オブジェクトの内部辞書 (__dict__) を更新します。

パラメータ:

args (dict) -- キーと値のペアを含むキーワード引数。

戻り値:

None

戻り値の型:

None

class PHYSBO.bayes_gp_plain_shimizu.tkParams(parameter_file=None, **args)[ソース]

ベースクラス: tkObject

概要: アプリケーションのパラメータを管理するためのクラスです。

詳細説明:

tkObject を継承し、コマンドライン引数を初期化時に保持する機能を追加しています。 アプリケーション全体で共有される設定やオプションを格納するために使用されます。

printinf(app)[ソース]

概要: パラメータオブジェクトの全属性とその値をコンソールに表示します。

詳細説明:

親クラス tkObjectprintinf メソッドと同様に、 このパラメータオブジェクトのすべての属性を整形して標準出力に表示します。

パラメータ:

app (tkApplication) -- アプリケーションオブジェクト (出力に使用)。

戻り値:

None

戻り値の型:

None

PHYSBO.bayes_gp_plain_shimizu.update_vars(app, cparams)[ソース]

概要: コマンドライン引数に基づいてアプリケーションのパラメータを更新します。

詳細説明:

sys.argv からコマンドライン引数を読み込み、cparams オブジェクトの infile, max_num_probes, num_rand_basis, score_mode, interval, standardize などのパラメータを更新します。 また、出力結果ファイルと予測結果ファイルのパスを生成し、cparams に設定します。

パラメータ:
  • app (tkApplication) -- アプリケーションオブジェクト。

  • cparams (tkParams) -- 更新するパラメータオブジェクト。

戻り値:

None

戻り値の型:

None

PHYSBO.bayes_gp_plain_shimizu.usage(app)[ソース]

概要: プログラムの正しい使用法と引用情報を表示します。

詳細説明:

コマンドライン引数の使用方法を示す文字列 usage_str を整形して出力し、 その後 citation 関数を呼び出して引用情報を表示します。

パラメータ:

app (tkApplication) -- アプリケーションオブジェクト (出力に使用)。

戻り値:

None

戻り値の型:

None