cclib

cclibは、量子化学コードの出力ファイルをパースして解釈するためのオープンソースPythonライブラリである。ログファイルから座標、軌道、振動モード、TD‑DFTなどの結果を抽出し、一貫したインターフェースで扱えるようにすることを目的とする。また、他のオープンソース化学ツールや可視化ツールとの相互運用も支援する。

MatDaCs ツールレビュー: cclib

概要

cclibは計算化学のログファイルをパースするためのツールキットである。量子化学コードごとに異なる出力から、信頼できる構造化データを抽出するという実務上の課題に対し、統一APIを提供し、解析・可視化ツールへの橋渡しを行う。

cclibとは

cclibは、多様な量子化学プログラムの出力ファイルを読み取り、標準化された属性(構造、エネルギー、軌道、振動データ、TD‑DFT遷移など)を持つ一貫したPythonオブジェクトとして提供する。「一度パースして、後は再利用する」設計であり、解析スクリプト、プロット、機械学習パイプラインへ結果を流し込みやすい。

主な機能

  • 幅広いパーサ対応: 多くの計算化学パッケージをサポートする。
  • 標準化されたデータモデル: コードごとの差分処理(分岐)を減らすため、統一的な属性インターフェースで結果を提供する。
  • 相互運用: 利用可能な場合、Open BabelやPySCFなど外部ツールへのブリッジを提供する。
  • 軽量CLI: コマンドラインからの抽出・変換を支援する。

インストール

python3 -m pip install --user cclib

例1: ログファイルをPythonオブジェクトに変換する

典型的にはccopen/ccreadでログをパースし、返ってきたオブジェクトの標準化属性へアクセスする。これが、複数コードにまたがる後処理を現実的にする中核抽象である。

from cclib.io import ccread

# Parse a log file into a ccData object
ccdata = ccread("calc.log")

# Access standardized properties
energies = ccdata.scfenergies
coords = ccdata.atomcoords
charges = getattr(ccdata, "atomcharges", None)

この形により、収束条件でのフィルタリング、学習用テーブルの構築、特徴量収集などを、コードごとのパーサを書き直すことなく進めやすい。

例2: コマンドラインで抽出する

簡易確認用途として、cclibはccgetのようなCLIを提供し、Pythonを書かずに特定量を抽出できる。

ccget scfenergies calc.log

大量計算ディレクトリのバッチスクリーニングや、妥当性確認に有用である。

マテリアルズ・インフォマティクスでの利用例

  • 複数コードにまたがる高スループットDFT計算の後処理。
  • 物性予測モデル向けの特徴量抽出(エネルギー、軌道、バンドギャップ、振動物性など)。
  • 由来情報(provenance)やコード差異を保持したデータセットのキュレーション。
  • 電子状態計算ワークフローと、ML/可視化ツールの接続。

所感

  • 異なる量子化学コードの出力を混在させる場合や、大規模に一貫したパースが必要な場合に価値が大きい。
  • 標準化データモデルにより、pandasテーブルや下流の特徴量化へ写像しやすい。

まとめ

cclibは、計算材料ワークフローにおける摩擦を下げる、堅実なパーサである。多数の量子化学出力に対して単一の安定したインターフェースを必要とする場面で有効であり、データサイエンス系ツールとも組み合わせやすい。MatDaCsの観点では、生の計算ログを再現可能なデータセットへ変換するための基盤的ユーティリティである。

参考