make_summary.py (VASPサマリー作成)

プログラムパス: [tkProg_X_path]/VASP/summary/make_summary.py

目的

Jinja2形式のテンプレートファイルを使い、VASPの計算結果のサマリー(要約)を作成します。 VASPの計算結果を読み込み、フラットな辞書変数に変換したのちにJinja2によるテンプレート処理を行います。

辞書変数のkeyには、サブディレクトリ名やprefixをつけて、個別に参照することが可能です。

使用方法 (Usage)

ヘルプを表示する場合:

python make_summary.py -h

引数の構成:

usage: python make_summary.py [-h] [--mode {list,make,make_template}]
                              [--base_dir BASE_DIR] [--subdirs SUBDIRS]
                              [--prefix PREFIX] [--template_file TEMPLATE_FILE]
                              [--output_file OUTPUT_FILE] [--append]

ファイル構成

  • make_summary.py (本体)

  • templates/ [ディレクトリ] * テンプレートファイル (検索優先順位 2)

  • テンプレートファイル (検索優先順位 3: スクリプトと同じ階層)

  • read_inf.py (VASP用データ読み込みライブラリ)

テンプレートファイルの検索順序

  1. --template_file=path でファイル名のみを指定した場合: (i) カレントディレクトリ、(ii) templatesディレクトリ、(iii) スクリプトディレクトリの順で検索します。

  2. --template_file=path でディレクトリを含むパスを指定した場合: 指定したパスのみを検索します。

動作仕様

read_inf.py で読み込んだ内容を階層構造を持つ辞書変数 replace_dict に取り込み、そのkeyをプレースホルダーとしてテンプレートファイルを生成します。 また、TextFiles, ImageFiles, PDFFiles, HTMLFiles を検索し、プレースホルダーに追加します。

テンプレートの種類と挙動

指定したパスの拡張子によって判断されます。

  • .txt, .md (テキストファイル) * --append 指定時:5行の空行を入れた後に追加します。

  • .html (HTMLファイル) * keyを1列目、Jinja2形式のプレースホルダーを2列目に追加します。 * --layout=page:フリーフォーマットのHTMLページ。 * --layout=vstac:個々の計算ジョブを行に並べるテーブル。 * --layout=hstac (または指定なし):個々の計算ジョブを列に並べるテーブル。 * --append 指定時:レイアウトに応じてページ、行、または列を追加します。

  • .xlsx, .xlsm (Excel形式) * keyを1行目、プレースホルダーを2行目に追加します。 * --append 指定時:行を追加します。 * .xlsm の場合、画像挿入機能のVBAが利用可能です。

  • .csv (CSV形式) * keyを1行目、プレースホルダーを2行目に追加します。 * .. warning:: Excelでは複数行を含むセルを正常に表示できないため、非推奨です。

  • .docx (MS-Word形式) * --append 指定時:改ページを入れた後に追加します。 * .. note:: HTMLテンプレート機能と html2pdf.py で代用可能なため、利用機会は限定的です。

動作モード (--mode)

  • list: 指定したディレクトリの計算結果ファイルを読み込み、利用可能なkeyのリストを表示します。

  • make_template: 計算結果のkey情報からテンプレートファイルを作成します。

  • make: テンプレートファイルをもとに、計算結果で置換して output.* に出力します。

計算結果を読み込むディレクトリ

  • --subdirs が空の場合:--base_dir で指定したディレクトリのみを読み込みます。

  • --subdirs が指定されている場合:--base_dir の下のサブディレクトリを読み込みます(カンマ区切りで複数指定可)。

  • Tip

    サブディレクトリ内に INCAR, POSCAR, OUTCAR が存在する場合のみ、VASPの計算ディレクトリと判断されます。

使用例

1. 単一ディレクトリのサマリー作成

テンプレート作成:

python make_summary.py --base_dir SCF --mode=make_template --template_file=template.html

計算結果で置換して出力:

python make_summary.py --base_dir SCF --mode=make --template_file=template.html

2. サブディレクトリ全体のサマリー作成 (Excel DB)

テンプレート作成:

python make_summary.py --base_dir=ZnO --subdirs=VCRelax1,VCRelax,SCF,DOS,BandX --mode=make_template --template_file=template.xlsm

計算結果で置換して出力:

python make_summary.py --base_dir=ZnO --subdirs=VCRelax1,VCRelax,SCF,DOS,BandX --mode=make --template_file=template.xlsm

Excel .xlsm テンプレートの画像管理機能

マクロ(コンテキストメニューの「画像ダイアログを開く...」等)から以下の機能が利用可能です。

  • 選択した列から画像パスを探し、右隣のセルにインライン表示。

  • 選択したセルから画像パスを分離し、ワークシートに画像を挿入。

  • 選択したセルからディレクトリパスを読み込み、その中の画像をすべて挿入。

  • ワークシート内の画像を全削除。