はじめに#
インストール#
Qiskit Natureは、インストール・オプションとそのサポート環境/プラットフォームを詳述した「Qiskit はじめに 」にて説明されたQiskitに依存しています。 まずそれを参照してください。次に、ここで説明する情報に従って、Qiskit Natureに固有の追加インストールをしましょう。
Qiskit Natureには、デフォルトで依存コードまたはサポート・プログラム ( あるいはその両方 ) がインストールされていない (または、それらを使用できない ) ような、オプション機能がいくつかあります。例えば、分子問題に対する古典的なライブラリやプログラムです。詳細については、 オプションのインストール を参照してください。
最も簡単な方法は「 Qiskit はじめに 」の「ローカルで始める」のガイドを参照して開始することです。
Qiskit をインストールした仮想環境で、次のように Qiskit Nature をインストールします。
pip install qiskit-nature
注釈
Qiskit Nature はQiskitに依存しているため、上記のようにQiskitを環境にインストールするだけで、Qiskitの互換バージョンがまだインストールされていない場合、pipがQiskitを自動的にインストールします。
ソースから 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つのライブラリ/プログラムをインストールする必要があります。 どのドライバーを使用するか選択できるので、できるだけ多くインストールすることも、必要な数だけインストールすることも、プラットフォームなどによってサポートされている数だけインストールすることもできます。
各ドライバーのリストや必要な依存ライブラリ/プログラムのインストール方法については、ドライバーのインストール を参照してください。
これらのドライバーは、基礎となる古典的なコードの非常に限られた機能セットのみを提供します。 これは、使い始めやテスト目的では役に立ちますが、責任の順序を逆にした方が、より良い体験ができます。これは、古典的なコードが Qiskit Natureのコンポーネントを実行するようなセットアップです。 このような統合は、現在、以下のパッケージに対して存在しています:
PySCF、qiskit-nature-pyscf 経由
Psi4 の利用に興味がある場合は、 qiskit-nature-psi4 での同様の統合を開始するのを手伝っていただける方を積極的に探しています。
さらに、以下のオプションの依存関係が役立つ場合があります。
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 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