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用データ読み込みライブラリ)
テンプレートファイルの検索順序
--template_file=pathでファイル名のみを指定した場合: (i) カレントディレクトリ、(ii) templatesディレクトリ、(iii) スクリプトディレクトリの順で検索します。--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 テンプレートの画像管理機能
マクロ(コンテキストメニューの「画像ダイアログを開く...」等)から以下の機能が利用可能です。
選択した列から画像パスを探し、右隣のセルにインライン表示。
選択したセルから画像パスを分離し、ワークシートに画像を挿入。
選択したセルからディレクトリパスを読み込み、その中の画像をすべて挿入。
ワークシート内の画像を全削除。