注釈
このページは docs/tutorials/08_qschema.ipynb から生成されました。
QCSchema#
QCSchema は、量子化学のための標準データフォーマットです。 複数の古典的な化学コードで採用されている現在のバージョンは、 JSON
によるシリアル化のみをサポートしていますが、ドキュメントには HDF5
も使用できると明確に示されています。 そのため、Qiskit Natureでは両方の階層的データフォーマットを実装サポートすることにしました。
さて、なぜこのフォーマットについて特にチュートリアルがあるのでしょうか? 理由は非常に簡単です。古典計算と Qiskit Nature の間でデータをやりとりするために私たちのドライバーが内部で使用しているデータフォーマットであるからです。 したがって、このチュートリアルでは、いくつかの概念を説明することで、ドライバの相互作用をもう少し詳しく知ることができるようにします。
注意: QCSchemaの一部としての電子反発積分のサポートは、まだ公式仕様に含まれていないため、Qiskit Natureにカスタム化されています。しかし、QCSchemaの作者と協力してこの統合を公式にするために作業しています。
このチュートリアルでは、 PySCFDriver
を使用していますが、ほとんどの議論ポイントは他の電子構造ドライバにもあてはまるはずです。
まず、PySCFDriver
を構築して実行してみましょう。
[1]:
from qiskit_nature.second_q.drivers import PySCFDriver
driver = PySCFDriver()
problem = driver.run()
print(problem)
<qiskit_nature.second_q.problems.electronic_structure_problem.ElectronicStructureProblem object at 0x155041be1250>
これは基本的に次のような短いものです:
[2]:
from qiskit_nature.second_q.problems import ElectronicBasis
driver.run_pyscf()
problem = driver.to_problem(basis=ElectronicBasis.MO, include_dipole=True)
print(problem.basis)
ElectronicBasis.MO
ここで注意すべきことが2つあります。- この問題は、特にMO基底で要求されています。双極子積分は別に扱われます (現在のQCSchema標準では、これらの係数をサポートしていないため)。
これがエンドユーザーにとってどういうことを意味するかというと、以下のような別の方法で問題をリクエストすることもできるということです。
[3]:
ao_problem = driver.to_problem(basis=ElectronicBasis.AO)
print(ao_problem.basis)
ElectronicBasis.AO
AO の問題を MO ベースに変換したい場合は、 個別のチュートリアル で説明されている BasisTransformer
を使用する必要があります。
ここで、to_problem
メソッドが実際には to_qcschema
メソッドに内部的に依存していることを理解する必要があります。
[4]:
from qiskit_nature.second_q.formats.qcschema_translator import qcschema_to_problem
qcschema = driver.to_qcschema()
ao_problem = qcschema_to_problem(qcschema, basis=ElectronicBasis.AO)
QCSchema オブジェクトをドライバーから抽出することにより、後で BasisTransformer
を抽出することができます。 ドライバーオブジェクトの深いところから AO-2-MO 変換係数を手動で掘り起こす必要はありません。
[5]:
from qiskit_nature.second_q.formats.qcschema_translator import get_ao_to_mo_from_qcschema
basis_transformer = get_ao_to_mo_from_qcschema(qcschema)
[6]:
mo_problem = basis_transformer.transform(ao_problem)
print(mo_problem.basis)
ElectronicBasis.MO
[7]:
import qiskit.tools.jupyter
%qiskit_version_table
%qiskit_copyright
Version Information
Qiskit Software | Version |
---|---|
qiskit-terra | 0.23.0.dev0+fca8db6 |
qiskit-aer | 0.11.0 |
qiskit-ibmq-provider | 0.19.2 |
qiskit-nature | 0.5.0 |
System information | |
Python version | 3.9.14 |
Python compiler | GCC 12.2.1 20220819 (Red Hat 12.2.1-1) |
Python build | main, Sep 7 2022 00:00:00 |
OS | Linux |
CPUs | 8 |
Memory (Gb) | 62.501182556152344 |
Fri Oct 21 15:48:48 2022 CEST |
This code is a part of Qiskit
© Copyright IBM 2017, 2022.
This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.