サンプルベース量子対角化(SQD)リリースノート
0.12.1
アップグレードの注意
- Python 3.10 現在、最低限必要なバージョンです。 Python 3.9 のサポートは終了しました。
0.12.0
新機能
-
に
max_dim引数を追加。qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian()関数を追加した。 この引数は、SCI部分空間の次元を制限するために使用される。 -
を導入した。
qiskit_addon_sqd.subsampling.postselect_by_hamming_right_and_left()関数を導入した。
アップグレードの注意
qiskit_addon_sqd.fermion.SCIStatenorbとnelecという2つの引数を取るようになった。 これは画期的な変化だ。
非推奨のメモ
-
qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight()は非推奨となった。 代わりにqiskit_addon_sqd.subsampling.postselect_by_hamming_right_and_left(). -
qiskit_addon_sqd.subsampling.postselect_and_subsample()は非推奨となった。 代わりにqiskit_addon_sqd.subsampling.postselect_by_hamming_right_and_left()とqiskit_addon_sqd.subsampling.subsample().
バグ修正
-
のバグを修正した。
qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs()で、軌道の数が53より大きい場合にビット列からCI文字列への変換が不正確になるバグを修正した。 -
オブジェクトの保存と読み込みがエラーになるバグを修正。
qiskit_addon_sqd.fermion.SCIStateオブジェクトの保存と読み込みがエラーになるバグを修正。 -
バージョン 0.11 に、以下の変更に関するリリースノートを追加した。
qiskit_addon_sqd.fermion.SCIState.
0.11.0
新機能
-
新しい関数
qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian()関数を追加した。 この機能の使い方については、更新されたチュートリアルをご覧ください。 -
qiskit_addon_sqd.fermion.solve_fermion()という間違ったスピンを持つ状態をシフトさせるためのshift引数を受け付けるようになった。
アップグレードの注意
qiskit_addon_sqd.fermion.solve_fermion()そしてqiskit_addon_sqd.fermion.optimize_orbitals()kwargsに直接渡される。 pyscf.fci.selected_ci.kernel_fixed_space に直接渡される。 引数max_davidsonは、両方の関数でmax_cycleとして渡されるべきである。
バグ修正
qubitモジュールに影響する浮動小数点から整数への型変換を修正
0.10.0
アップグレードの注意
qiskit_addon_sqd.fermion.flip_orbital_occupancies()を削除した。 から出力される軌道占有率を反転させる必要がなくなった。qiskit_addon_sqd.fermion.solve_fermion()とqiskit_addon_sqd.fermion.optimize_orbitals()で期待される順序で出力される。qiskit_addon_sqd.configuration_recovery.recover_configurations():tuple(array([occ_a_0, ..., occ_a_N]), array([occ_b_0, ..., occ_b_N])).
非推奨のメモ
-
の引数
avg_occupanciesは、スピンアップとスピンダウンそれぞれの占有率を含む タプルでなければならない。qiskit_addon_sqd.configuration_recovery.recover_configurations()への引数は、スピンアップとスピンダウンそれぞれの占有率を含む length-2 タプルでなければならない。古いフォーマット:
array([occ_b_N, ..., occ_b_0, occ_a_N, ..., occ_a_0])新しいフォーマット:
tuple(array([occ_a_0, ..., occ_a_N]), array([occ_b_0, ..., occ_b_N]))
バグ修正
- からのエネルギー出力が不正確になるバグを修正した。
qiskit_addon_sqd.fermion.solve_fermion()spin_sqspin^2 から出力されるエネルギーが不正確になるバグを修正しました。
0.9.0
アップグレードの注意
qiskit_addon_sqd.fermion.optimize_orbitals()そしてqiskit_addon_sqd.fermion.rotate_integrals()では、k_flat、行列全体ではなく、回転行列の上三角形(対角線を含まない)を指定する必要がある。
バグ修正
-
のインデックス・エラーを修正。
qiskit_addon_sqd.configuration_recovery()ビット文字列の右半分のビットが、ビット文字列の左半分に関連付けられたオ リタルの占有率に関して反転していた。 -
pyscfは、インストールに失敗するWindowsの依存関係とはみなされなくなった。 しかし、ウィンドウズは依然として未サポートのプラットフォームである。
0.8.0
新機能
-
Python 3.9 のサポートを追加した。
-
引数
rand_seedを取るすべての関数は、numpy.random.Generatorインスタンスもrand_seedとして受け付けるようになった。
アップグレードの注意
- によって返される基底状態は
qiskit_addon_sqd.fermion.solve_fermion()のインスタンスになる。qiskit_addon_sqd.fermion.SCIStatePySCFSCIVectorのインスタンスになる。
0.7.0
バグ修正
-
のバグを修正しました。
qiskit_addon_sqd.fermion.solve_fermion()とqiskit_addon_sqd.fermion.optimize_orbitals()を解く前にスピンアップとスピンダウンの行列式が誤って反転してしまうバグを修正しました。 -
オープン・シェル・ワークフローにおいて、 エラーでクラッシュするバグを修正。
qiskit_addon_sqd.fermion.optimize_orbitals()がmallocエラーでクラッシュするバグを修正した。
0.6.0
アップグレードの注意
-
のキーワード引数として
addressesを指定する。qiskit_addon_sqd.fermion.solve_fermion()とqiskit_addon_sqd.fermion.optimize_orbitals()はサポートされなくなった。addressesしかし、この使い方は非推奨である。 ユーザーは、以下のように、部分空間を定義するビット列行列を、これらの関数の最初の位置引数として渡すことが推奨される。アップグレードするには、次のコードを変更します
# DEPRECATED CODE from qiskit_addon_sqd.fermion import ( bitstring_matrix_to_sorted_addresses, solve_fermion, optimize_orbitals, ) bitstring_matrix = ... addresses = bitstring_matrix_to_sorted_addresses(bitstring_matrix, open_shell=open_shell) energy, coeffs, occs, spin = solve_fermion( addresses=addresses, hcore=hcore, eri=eri, ) ... e_oo, rotation, occs_oo = optimize_orbitals( addresses=addresses, hcore=hcore, eri=eri, ) ### SHOULD BECOME ### # NEW CODE from qiskit_addon_sqd.fermion import solve_fermion, optimize_orbitals bitstring_matrix = ... energy, coeffs, occs, spin = solve_fermion( bitstring_matrix, hcore=hcore, eri=eri, ) ... e_oo, rotation, occs_oo = optimize_orbitals( bitstring_matrix, hcore=hcore, eri=eri, )
非推奨のメモ
-
qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses()関数は廃止され、次のようになりました。qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs(). これらの2つの関数の動作は、1つの重要な例外を除いて同じである。qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses()はコンフィギュレーションをtuple(spin_dn, spin_up)のように返すのに対し、 はコンフィギュレーションを のように返す、qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs()はコンフィギュレーションをtuple(spin_up, spin_dn)のように返す。移行するには
from qiskit_addon_sqd.fermion import ( bitstring_matrix_to_sorted_addresses, bitstring_matrix_to_ci_strs, ) # DEPRECATED CODE bs_matrix = ... addr_dn, addr_up = bitstring_matrix_to_sorted_addresses(bs_matrix, open_shell=True) ### SHOULD BECOME ### # NEW CODE bs_matrix = ... ci_strs_up, ci_strs_dn = bitstring_matrix_to_ci_strs(bs_matrix, open_shell=True) -
の引数
addresses。qiskit_addon_sqd.fermion.solve_fermion()とqiskit_addon_sqd.fermion.optimize_orbitals()は非推奨となり、bitstring_matrixが使われるようになった。 その代わりに、ハミルトニアンを投影し対角化する部分空間を指定するビット列行列を渡す必要があります。 行列式の整数表現への変換は内部で行われる。
バグ修正
-
のバグを修正した。
qiskit_addon_sqd.configuration_recovery.recover_configurations()のバグを修正した。 -
長さが72を超えるビット列でコンフィギュレーション・リカバリーに失敗するバグを修正。
0.5.0
アップグレードの注意
-
その
qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(),qiskit_addon_sqd.subsampling.postselect_and_subsample()およびqiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight()では、hamming_rightとhamming_leftの引数をキーワード引数として指定する必要がある。 さらに、samples_per_batchとn_batchesの引数は、キーワード引数としてqiskit_addon_sqd.subsampling.postselect_and_subsample()への引数はキーワード引数として渡される。アップグレード
from qiskit_addon_sqd.configuration_recovery import post_select_by_hamming_weight from qiskit_addon_sqd.subsampling import postselect_and_subsample from qiskit_addon_sqd.counts import generate_counts_bipartite_hamming counts = generate_counts_bipartite_hamming(num_samples, num_bits, num_elec_a, num_elec_b) ... bs_mat = post_select_by_hamming_weight(bs_mat_full, num_elec_a, num_elec_b) ... batches = postselect_and_subsample( bs_mat, probs_arr, num_elec_a, num_elec_b, samples_per_batch, num_batches, )に変更すべきである
from qiskit_addon_sqd.configuration_recovery import post_select_by_hamming_weight from qiskit_addon_sqd.subsampling import postselect_and_subsample from qiskit_addon_sqd.counts import generate_counts_bipartite_hamming counts = generate_counts_bipartite_hamming(num_samples, num_bits, hamming_right=num_elec_a, hamming_left=num_elec_b) ... bs_mat = post_select_by_hamming_weight(bs_mat_full, hamming_right=num_elec_a, hamming_left=num_elec_b) ... batches = postselect_and_subsample( bs_mat, probs_arr, hamming_right=num_elec_a, hamming_left=num_elec_b, samples_per_batch=samples_per_batch, num_batches=num_batches, )
0.4.0
前奏曲
これはマイナー・リリースであり、APIに小さな、しかし重要な、変更を加えるものである。 これらの変更により、APIの化学関数と非化学関数の両方を通して、アルファ電子とベータ電子の数を指定するパターンをより一貫したものにすることができる。
アップグレードの注意
-
その
qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(),qiskit_addon_sqd.subsampling.postselect_and_subsample()とqiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight()は、hamming_leftの引数の前にhamming_rightの位置引数を取るようになった。アップグレード
from qiskit_addon_sqd.configuration_recovery import post_select_by_hamming_weight from qiskit_addon_sqd.subsampling import postselect_and_subsample from qiskit_addon_sqd.counts import generate_counts_bipartite_hamming counts = generate_counts_bipartite_hamming(num_samples, num_bits, num_elec_b, num_elec_a) ... bs_mat = post_select_by_hamming_weight(bs_mat_full, num_elec_b, num_elec_a) ... batches = postselect_and_subsample( bs_mat, probs_arr, num_elec_b, num_elec_a, samples_per_batch, n_batches, )に変更すべきである
from qiskit_addon_sqd.configuration_recovery import post_select_by_hamming_weight from qiskit_addon_sqd.subsampling import postselect_and_subsample from qiskit_addon_sqd.counts import generate_counts_bipartite_hamming counts = generate_counts_bipartite_hamming(num_samples, num_bits, num_elec_a, num_elec_b) bs_mat = post_select_by_hamming_weight(bs_mat_full, num_elec_a, num_elec_b) ... batches = postselect_and_subsample( bs_mat, probs_arr, num_elec_a, num_elec_b, samples_per_batch, n_batches, )