PySCF 2.14.0 レビュー: Python で量子化学計算を回す現実的な選択肢
量子化学用の Python モジュール。ヘルメス、ケビン コー、ピーター コーヴァル、スーシー レートラ、ジェンドン リー、ジュンジ リウ、ナルベ マルディロシアン、ジェームズ D.
ひと目でわかる
- これは何?
- PySCF は Apache-2.0 ライセンスの Python モジュールで、分子の電子状態計算をスクリプトから実行できる。本稿では、そのインストール方法、機能の広がり、そして計算科学の現場で使う際の注意点を、公開情報に基づいて整理する。
- 誰に向いている?
- PySCF は、Python スクリプトで分子の電子状態計算を一貫して行いたい研究者やエンジニアに向いている。特に、既存の計算パイプラインに組み込んで自動化したい場合や、教育目的で量子化学の原理をコードで確認したい場合に有用だ。
- 商用利用できる?
- できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 5 日前です。
- 何の言語で書かれている?
- 主に Python です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
PySCF が解く問題と対象ユーザー
PySCF は、分子の電子状態を計算するための Python モジュールだ。量子化学計算と聞くと、Gaussian や ORCA のような商用ソフトウェアを思い浮かべる人が多いが、PySCF はオープンソースで、Python のスクリプトから直接計算を実行できる。これにより、計算手順をコードとして記述し、再現性を高めたり、大規模なパラメータ探索を自動化したりすることが可能になる。対象となるユーザーは、計算化学の研究者だけでなく、材料設計や触媒開発に携わるエンジニア、さらには量子化学の理論を実装レベルで学びたい学生まで幅広い。特に、既存の Python ベースのデータ解析パイプラインに量子化学計算を組み込みたい人にとって、PySCF は有力な選択肢だ。ただし、PySCF 自体は密度汎関数理論(DFT)の汎関数を実装しておらず、外部ライブラリに依存している点は理解しておく必要がある。この設計は、機能を軽量に保つ一方で、DFT 計算を実行する際には追加の依存関係と引用義務が発生することを意味する。
インストールと拡張モジュールの仕組み
インストールは pip で行う。安定版をインストールするには、`pip install pyscf` を実行する。これだけでコア機能が使えるようになる。しかし、PySCF の開発はコアだけで完結しているわけではなく、近年の新機能は pyscf-forge パッケージに含まれている。`pip install pyscf-forge` で追加できる。さらに、dispersion や dmrgscf、fciqmc、icmpspt、properties、semiempirical、shciscf などのモジュールは、PySCF の拡張として個別に管理されており、`pip install pyscf[all]` でまとめてインストールできる。特定の拡張だけが必要なら、`pip install pyscf[dispersion]` のように指定することも可能だ。この構成は、ユーザーが必要な機能だけを選んで環境を構築できるという利点がある一方で、どの機能がコアに含まれ、どの機能が拡張に属するのかを事前に把握しておかないと、計算スクリプトが特定の環境でしか動かないという事態を招く。README には「More details of custom installation can be found in installation manual」とあり、ソースからのビルドも可能だが、通常のユーザーは pip で十分だろう。
計算の流れ: スクリプトで何ができるか
PySCF の使用方法は、Python スクリプトを書いて計算を実行する形になる。README には具体的なコード例は記載されていないが、プロジェクトの性質から、分子構造を定義し、基底関数を選び、計算手法を指定して、エネルギーや物性値を取得するという流れになる。例えば、水分子の Hartree-Fock 計算は、`mol = gto.M(atom='H2O', basis='sto-3g')` のように分子を定義し、`mf = scf.RHF(mol)` で手法を指定、`mf.kernel()` で計算を実行する。このようなスクリプトを書くことで、計算条件をコードとして管理できる。これは、実験条件をノートに記録するのと似た感覚で、再現性を高めるのに役立つ。ただし、PySCF は高水準の GUI を提供しているわけではないため、初心者が最初に触るにはハードルが高いかもしれない。ドキュメントは pyscf.org にあり、チュートリアルも用意されているが、量子化学の知識がある程度必要だ。
DFT 計算の依存関係と引用の実務
PySCF の重要な特徴の一つが、密度汎関数理論(DFT)の汎関数を自前で実装していないことだ。代わりに Libxc や XCFun といった外部ライブラリを利用して汎関数の評価を行う。README には、DFT 計算を実行する場合、これらのライブラリも引用する必要があると明記されている。Libxc を使った場合は、Lehtola らの論文(SoftwareX 7, 1 (2018))を、XCFun を使った場合は、Ekström らの論文(J. Chem. Theory Comput. 6, 1971 (2010))を引用する。これは、PySCF のコア論文(J. Chem. Phys. 153, 024109 (2020))に加えての引用になる。つまり、PySCF で DFT 計算を行うと、最低でも 2 つの論文を引用することになる。この点は、論文執筆時に見落としやすいので注意が必要だ。また、外部ライブラリに依存することで、汎関数のバージョンによって結果が変わる可能性がある。計算結果を報告する際は、PySCF のバージョンだけでなく、Libxc や XCFun のバージョンも明記することが推奨される。
バージョン更新とメンテナンスの現実
PySCF は活発に開発が続いている。2026 年 7 月 18 日に v2.14.0 がリリースされ、その直前の 6 月には v2.13.1、4 月には v2.13.0 がリリースされている。この更新頻度は、バグ修正や新機能の追加が継続的に行われていることを示している。一方で、バージョンアップに伴う API の変更や、拡張モジュールとの互換性の問題が発生する可能性もある。特に、pyscf-forge や個別の拡張モジュールは、コアのリリースに追従しているとは限らない。そのため、プロジェクトで PySCF を使う場合、使用するバージョンを固定し、アップデートは計画的に行うべきだ。また、README には「Bug reports and feature requests」として issues ページへの誘導があるが、これは GitHub の issues を指しており、ユーザーがバグを報告したり機能を要望したりする窓口が用意されている。このようなフィードバックの仕組みが、オープンソースプロジェクトの品質維持に貢献している。
ライセンスと商用利用の考慮点
PySCF は Apache-2.0 ライセンスで公開されている。これは、商用利用や改変、再配布が比較的自由に行える寛容なライセンスだ。特許に関する条項も含まれており、特許侵害の申し立てがあった場合にライセンスが終了するという条件がある。Apache-2.0 は多くの企業で採用実績があり、商用プロジェクトに組み込みやすいと言える。ただし、PySCF を利用する際に依存する Libxc や XCFun のライセンスも確認する必要がある。Libxc は Mozilla Public License 2.0、XCFun は Mozilla Public License 2.0 または LGPL と、それぞれ異なるライセンスを持つ。これらのライセンスは Apache-2.0 と互換性がある場合が多いが、商用利用の際には各ライブラリのライセンス条項を個別に確認することが望ましい。特に、XCFun は自動微分を用いた任意次数の応答理論を実装しており、そのコードを改変して配布する場合には、ライセンスの条件に従う必要がある。
代替手段との比較: 何が違うのか
PySCF の代替としては、Psi4 や NWChem といったオープンソースの量子化学パッケージが挙げられる。Psi4 は Python インターフェースを備えており、PySCF と似た使い方ができる。Psi4 は DFT 汎関数を自前で多数実装しており、外部ライブラリへの依存が少ない。一方、PySCF は汎関数を外部ライブラリに委ねることで、コアのコードをシンプルに保っている。この違いは、計算の再現性に影響する。Psi4 はバージョンを固定すれば同じ結果が得られやすいが、PySCF は Libxc のバージョンにも依存するため、環境によって結果が変わる可能性がある。NWChem は並列計算に強く、大規模な系に向いているが、Python スクリプトでの操作は PySCF ほど直感的ではない。PySCF の強みは、Python エコシステムとの親和性の高さと、拡張モジュールによる機能の追加が容易な点だ。特に、機械学習やデータ解析のライブラリと組み合わせて使いたい場合、PySCF は自然な選択肢になる。
編集部の結論
PySCF は、Python スクリプトで分子の電子状態計算を一貫して行いたい研究者やエンジニアに向いている。特に、既存の計算パイプラインに組み込んで自動化したい場合や、教育目的で量子化学の原理をコードで確認したい場合に有用だ。一方、DFT 計算で特定の汎関数に依存する場合は、Libxc や XCFun の導入と引用が必須になる点を理解しておく必要がある。また、最新機能を求めるなら pyscf-forge や pyscf[all] で拡張モジュールを追加する前提で設計を考えるべきだ。導入前に、使用予定の機能がコアに含まれるか、それとも拡張パッケージに属するかを確認し、依存ライブラリのライセンスと更新頻度も把握してほしい。PySCF は活発に開発が続いており、v2.14.0 が 2026 年 7 月にリリースされたばかりだが、計算結果の再現性を保証するには、使用バージョンと外部ライブラリのバージョンを固定する運用が欠かせない。
コミュニティノート