extract_combined.py

NAME

combined 形式のログファイルから特定の項目を取り出す

SYNOPSIS

python3 extract_combined.py [OPTION]... -t tag [FILE]...

DESCRIPTION

MCMC の combined 形式のログファイルから tag でタグ付けされた行を取り出す。

combined 形式では、行の先頭に <tag> 形式のタグを付けて複数のデータが格納されている。このファイルから特定の tag のついた行を取り出し、ファイルに出力する。出力ファイルは入力と同じディレクトリ内の tag というファイルになる。

注釈

  • Python 3.5以上が必要です(タイプヒントを使用しているため)。

  • タグの形式は <tag> の形式で、タグの後にスペースが必要です。

指定可能なコマンドラインオプションを以下に示す。 FILE を指定した場合はそのファイルが対象となる。明示的にファイルを指定しない場合、DATA_DIR/*/combined.txt が対象となる。

FILE

MCMCのログファイル名(combined.txt)を指定する。複数のファイルを指定可能。

-t TAG, --tag TAG

取り出す項目の tag を指定する。必須パラメータ。タグは文字列型(str)。

-d DATA_DIR, --data_dir DATA_DIR

データファイルをディレクトリから取得する場合(FILE を指定しない場合)に、ディレクトリを指定する。

--progress

実行時にプログレスバーを表示する。表示には tqdm ライブラリが必要。tqdmがインストールされていない場合は、代わりに処理中のファイル名が表示される。

-h, --help

ヘルプメッセージを表示してプログラムを終了する。

USAGE

基本的な使用方法を以下に示す。

# 特定のファイルから「energy」タグのついた行を抽出し、path/to/energy に出力
python3 extract_combined.py -t energy path/to/combined.txt

# 特定のディレクトリ内の全combined.txtファイルから「acc」タグの行を抽出
python3 extract_combined.py -t acc -d ./mcmc_results/

# プログレスバーを表示しながら複数のファイルを処理
python3 extract_combined.py -t energy --progress file1.txt file2.txt file3.txt

NOTES

実行時の注意点

  1. タグの完全一致: タグは完全に一致する必要がある。「energy」タグを指定した場合、「<energy>」で始まる行のみが抽出される。 「<Energy>」や「<energy_value>」などは対象外。タグの後にはスペースが必要。

  2. 出力ファイルの上書き: 同名のファイルが既に存在する場合、警告なく上書きされる。重要なファイルがある場合は事前にバックアップを取ることを推奨。

  3. 大規模ファイルの処理: スクリプトは行単位で処理を行うため、非常に大きなファイルでもメモリ消費は抑えられる。 多数のファイルを処理する場合、 --progress オプションを使用することで進捗状況を確認できる。

  4. ファイル名とパスの扱い: 出力ファイル名は単純に tag になる。タグに不正な文字(ファイル名に使用できない文字)が含まれる場合、ファイル作成時にエラーが発生する可能性がある。

  5. 空のファイル処理: 入力ファイルが空の場合や、指定されたタグが一つも見つからない場合、空のファイルが生成される。

combined形式のファイル構造

combined形式のファイルは以下のような構造を持つ:

<tag1> value1 value2 ...
<tag2> value3 value4 ...
<tag1> value5 value6 ...
...

各行の先頭に <tag> の形式でタグが付けられており、extract_combined.py はこのタグを検索して一致する行を抽出する。 タグ部分は出力ファイルからは削除される。

一般的なワークフロー

このスクリプトは、MCMCシミュレーションの結果を分析する際に使用する:

  1. export_combined_files オプションを有効にしてMCMCシミュレーションを実行した場合、 combined.txt ファイルが出力される。

  2. extract_combined.py を使用して必要なファイルを抽出する。

  3. 抽出したデータファイルを別のツールで分析やプロットする。

複数のシミュレーション結果を一括処理する場合は、 -d オプションと --progress オプションを組み合わせると効率的。

MCMCシミュレーションで一般的に使用されるタグの例:
  • trial.txt: Monte Carlo の tiral step のログ

  • result.txt: Monte Carlo の各ステップのログ

  • weight.txt: PAMC計算でのウェイト値

  • time.txt: 計算時間

エラー処理と出力

  • 指定したタグが見つからない場合: 空のファイルが生成される

  • 入力ファイルが読み取れない場合: エラーメッセージが標準エラー出力に表示される

  • 出力ファイルが書き込めない場合: 権限エラーが標準エラー出力に表示される

スクリプトは処理の進捗状況を標準出力に表示する。 --progress オプションを指定し、tqdmライブラリがインストールされている場合はプログレスバーが表示される。それ以外の場合は、処理中のファイル名が表示される。