はじめに¶
インストール¶
Qiskit Natureは、 Qiskit のインストール・オプションとそのサポート環境/プラットフォームを詳述した「Qiskit はじめに 」にて説明された主要 Qiskit パッケージに依存しています。 まずそれを参照してください。次に、ここで説明する情報に従って、Qiskit Natureに固有の追加インストールをしましょう。
Qiskit Natureには、デフォルトで依存コードまたはサポート・プログラム ( あるいはその両方 ) がインストールされていない (または、それらを使用できない ) ような、オプション機能がいくつかあります。例えば、分子問題に対する古典的なライブラリやプログラムです。詳細については、 オプションのインストール を参照してください。
最も簡単な方法は「 Qiskit はじめに 」の「ローカルで始める」のガイドを参照して開始することです。
Qiskit をインストールした仮想環境で、 Qiskit に追加の visualization
サポートをインストールした方法と同様の方法で、以下のようにして追加リストに nature
を追加してください:
pip install qiskit[nature]
Zshユーザー(新しいバージョンのmacOSのデフォルトシェル)の場合は、 qiskit[nature]
を引用符で囲む必要があります。
pip install 'qiskit[nature]'
ソースから Qiskit Natureをインストールすることにより、Python Package Index (PyPI) リポジトリーのバージョンを使う代わりに、最新の Qiskit バージョンにアクセスすることができます。これにより、Qiskit Natureコードの最新版を調査したり、拡張することがより効果的にできるようになります。
Qiskit Natureは Qiskit に依存しており、最新の変更が Qiskit の新規機能または変更された機能を必要とする場合があるので、まず「 Qiskit はじめに 」の 「ソースからのインストール」 の指示に従ってください。
Installing Qiskit Nature from Source
Qiskit をインストールしたものと同じ開発環境を使用して、 Qiskit Natureをインストールすることができます。
Qiskit Natureリポジトリーをクローンします。
git clone https://github.com/qiskit-community/qiskit-nature.git
レポジトリーをクローンすると、
qiskit-nature
という名前のローカル・フォルダが作成されます。cd qiskit-nature
もし、テストを実行したり文法をチェックしたい場合は、開発者向けライブラリをインストールします。
pip install -r requirements-dev.txt
Install
qiskit-nature
.pip install .
編集可能モード(プロジェクトのコードを変更しても再インストールする必要なし) でインストールする場合は、次の手順を実行します:
pip install -e .
オプションのインストール¶
Qiskit Natureは、1体、2体積分などの分子情報を計算するドライバーを介して、異なる古典ライブラリやプログラムの使用をサポートしています。 これは分子の性質、例えば基底状態のエネルギーを計算するアルゴリズムへの問題入力として必要となります。 ですので、少なくとも1つのライブラリ/プログラムをインストールする必要があります。 どのドライバーを使用するか選択できるので、できるだけ多くインストールすることも、必要な数だけインストールすることも、プラットフォームなどによってサポートされている数だけインストールすることもできます。
各ドライバーのリストや必要な依存ライブラリ/プログラムのインストール方法については、ドライバーのインストール を参照してください。
さらに、以下のオプションの依存関係が役立つ場合があります。
sparse スパース多次元配列のライブラリ。インストールすると、Qiskit Natureがこれを利用して計算のメモリ要件を減らすことができます。
opt_einsum ``np.einsum``のためのテンソルの縮約順序オプティマイザー
準備はいいですか?…¶
Qiskit Natureがインストールされたので、分子の基底状態 (最小) エネルギーを計算するための VQE
(Variational Quantum Eigensolver) アルゴリズムを使用して化学アプリケーションの実験を試してみましょう。
from qiskit_nature.units import DistanceUnit
from qiskit_nature.second_q.drivers import PySCFDriver
# Use PySCF, a classical computational chemistry software
# package, to compute the one-body and two-body integrals in
# electronic-orbital basis, necessary to form the Fermionic operator
driver = PySCFDriver(
atom='H .0 .0 .0; H .0 .0 0.735',
unit=DistanceUnit.ANGSTROM,
basis='sto3g',
)
problem = driver.run()
# setup the qubit mapper
from qiskit_nature.second_q.mappers import ParityMapper
mapper = ParityMapper(num_particles=problem.num_particles)
# setup the classical optimizer for the VQE
from qiskit.algorithms.optimizers import L_BFGS_B
optimizer = L_BFGS_B()
# setup the estimator primitive for the VQE
from qiskit.primitives import Estimator
estimator = Estimator()
# setup the ansatz for VQE
from qiskit_nature.second_q.circuit.library import HartreeFock, UCCSD
ansatz = UCCSD(
problem.num_spatial_orbitals,
problem.num_particles,
mapper,
initial_state=HartreeFock(
problem.num_spatial_orbitals,
problem.num_particles,
mapper,
),
)
# set up our actual VQE instance
from qiskit.algorithms.minimum_eigensolvers import VQE
vqe = VQE(estimator, ansatz, optimizer)
# ensure that the optimizer starts in the all-zero state which corresponds to
# the Hartree-Fock starting point
vqe.initial_point = [0] * ansatz.num_parameters
# prepare the ground-state solver and run it
from qiskit_nature.second_q.algorithms import GroundStateEigensolver
algorithm = GroundStateEigensolver(mapper, vqe)
electronic_structure_result = algorithm.solve(problem)
electronic_structure_result.formatting_precision = 6
print(electronic_structure_result)
=== GROUND STATE ENERGY ===
* Electronic ground state energy (Hartree): -1.857275
- computed part: -1.857275
~ Nuclear repulsion energy (Hartree): 0.719969
> Total ground state energy (Hartree): -1.137306
=== MEASURED OBSERVABLES ===
0: # Particles: 2.000 S: 0.000 S^2: 0.000 M: 0.000
=== DIPOLE MOMENTS ===
~ Nuclear dipole moment (a.u.): [0.0 0.0 1.388949]
0:
* Electronic dipole moment (a.u.): [0.0 0.0 1.388949]
- computed part: [0.0 0.0 1.388949]
> Dipole moment (a.u.): [0.0 0.0 0.0] Total: 0.0
(debye): [0.0 0.0 0.0] Total: 0.0
上記プログラムは、2つの原子が0.735オングストロームの距離で構成されている水素分子 H<sub>2</sub> の基底エネルギーを計算します。分子の入力仕様はPySCFドライバーにより処理されます。ドライバーはQiskit Natureが要求するすべての問題情報を集めた ElectronicStructureProblem
クラスを生成します。その問題に含まれた第2量子化オペレーターは、 QubitMapper
クラスと量子ビット・オペレーターにマップされます。ここで、 num_particles が与えられたとき対称性を継承するため2量子ビットを自動的に除去する ParityMapper
クラスを選択します。NISQコンピューターでは特に有用な複雑さの軽減を実現しています。
基底状態の解を実際に見つけるために、Variational Quantum Eigensolver (VQE
) アルゴリズムが使用されます。主な 3 つの構成要素は、estimator primitive (Estimator
)、波動関数ansatz (UCCSD
)、およびオプティマイザー (L_BFGS_B
) です。 UCCSD
コンポーネントは、直接 Qiskit Natureによって提供される唯一のコンポーネントであり、通常は HartreeFock
の初期状態と最適化プログラムのすべてのゼロの初期点と対になっています。
問題全体は、ParityMapper
と GroundStateEigensolver
で解決されます。 ElectronicStructureProblem
が提供されているので( ElectronicStructureResult
も返します。
Dive into the tutorials
Find out about Qiskit Nature and how to use it for natural science problems.
Qiskit Nature tutorials