Skip to main content
IBM Quantum Platform

サンプルベース量子対角化(SQD)リリースノート


0.13.0

新機能

  • Python 3.13 および Python 3.14 のサポートを追加しました。 コードの変更は必要なかったため、以前のリリースでも Python、 3.13、および 3.14 で動作するものと予想されます。

  • qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() MPIなどの環境下において、マルチプロセス(SPMD)実行のすべてのプロセスから、これらをまとめて呼び出すことができるようになった。 この方法で呼び出されると、このステップ sci_solver はすべてのプロセスで実行されるため、カスタム分散アルゴリズムによって、各対角化処理を利用可能なプロセス間で分散させ sci_solver ることができます。設定復旧ループの残りの部分は制御プロセスだけで実行され、戻り値はすべてのプロセスで同じになります。 単一プロセスの動作には変更はありません。 このパッケージによるマルチプロセスおよびマルチスレッドによる高速化のサポートに関する詳細については、「マルチプロセスおよびマルチスレッドによる高速化のサポート」を参照してください。

非推奨のメモ


0.12.1

アップグレードの注意

  • Python 3.10 現在、最低限必要なバージョンです。 Python 3.9 のサポートは終了しました。

0.12.0

新機能

アップグレードの注意

  • qiskit_addon_sqd.fermion.SCIState 現在、さらに2つの必須引数、 norb および を受け取るようになりました nelec。 これは互換性を損なう変更です。

非推奨のメモ

バグ修正


0.11.0

新機能

アップグレードの注意

バグ修正

  • qubit モジュールに影響する浮動小数点から整数への型変換を修正

0.10.0

アップグレードの注意

非推奨のメモ

  • の引 avg_occupancies 数は、スピンアップおよびスピンダウンの占有数をそれぞれ含む length-2 のタプルである qiskit_addon_sqd.configuration_recovery.recover_configurations() 必要があります。

    古いフォーマット: 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]))

バグ修正

  • 入力 が出力波動関数の spin^2 から逸脱 spin_sq した場合に、 からのエネルギー出力が不正確になる qiskit_addon_sqd.fermion.solve_fermion() バグを修正しました。

0.9.0

アップグレードの注意

バグ修正

  • ビット列の右半分にあるビットが、ビット列の左半分に関連付けられた軌道の占有状態に対して反転してしまう原因とな qiskit_addon_sqd.configuration_recovery() っていたインデックス付けのエラーを修正しました。

  • pyscfは、インストールに失敗するWindowsの依存関係とはみなされなくなった。 しかし、ウィンドウズは依然として未サポートのプラットフォームである。


0.8.0

新機能

  • Python 3.9 のサポートを追加した。

  • 引数 rand_seed を取るすべての関数は、 numpy.random.Generator インスタンスも rand_seed として受け付けるようになった。

アップグレードの注意


0.7.0

バグ修正


0.6.0

アップグレードの注意

  • および qiskit_addon_sqd.fermion.solve_fermion() のキーワード引数 addresses として を指定することは、もはやサポートされて qiskit_addon_sqd.fermion.optimize_orbitals() いません。 ユーザーは引き続き pass を最初の位置引数 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つの重要な違いを除いて同じように動作します tuple(spin_dn, spin_up)。すなわち、は設定をとして返す qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() のに対し、は設定をとして 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)
  • および qiskit_addon_sqd.fermion.solve_fermion() の引 addresses 数は、に置き換えられるため、非推奨となっています 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 数をキーワード引数として指定する必要がある。 また、の `n_batches` 引数 および samples_per_batch `` は、今後はキーワード引数として渡す必要があります 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()、および は、ワークフローの他の部分との整合性を高めるため、引 hamming_left 数の前に位置 hamming_right 引数を取るようになりました qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() 。

    アップグレード

    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,
    )
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。