Skip to main content
IBM Quantum Platform

Notas de versão da diagonalização quântica baseada em amostras (SQD)


0.12.1

Notas da Atualização

  • Python 3.10 é agora a versão mínima exigida. O suporte para Python 3.9 foi descontinuado.

0.12.0

Novos Recurso

Notas da Atualização

Notas de descontinuação

Correções de bugs


0.11.0

Novos Recurso

Notas da Atualização

Correções de bugs

  • Correção de uma conversão de tipo float para inteiro que afetava o módulo qubit

0.10.0

Notas da Atualização

Notas de descontinuação

  • O argumento avg_occupancies para qiskit_addon_sqd.configuration_recovery.recover_configurations() deve agora ser uma tupla length-2 contendo as ocupações de spin-up e spin-down, respectivamente.

    Formato antigo: array([occ_b_N, ..., occ_b_0, occ_a_N, ..., occ_a_0])

    Novo formato: tuple(array([occ_a_0, ..., occ_a_N]), array([occ_b_0, ..., occ_b_N]))

Correções de bugs


0.9.0

Notas da Atualização

Correções de bugs

  • Corrigido um erro de indexação em qiskit_addon_sqd.configuration_recovery() que fazia com que os bits na metade direita da cadeia de bits fossem invertidos em relação às ocupações dos orbitais associados à metade esquerda da cadeia de bits.

  • o pyscf não é mais considerado uma dependência do Windows, onde ele não é instalado. No entanto, o Windows continua sendo uma plataforma sem suporte.


0.8.0

Novos Recurso

  • Foi adicionado suporte para Python 3.9.

  • Todas as funções que recebem um argumento rand_seed agora também aceitam uma instância numpy.random.Generator como rand_seed.

Notas da Atualização


0.7.0

Correções de bugs


0.6.0

Notas da Atualização

  • Especificando addresses como um argumento de palavra-chave para qiskit_addon_sqd.fermion.solve_fermion() e qiskit_addon_sqd.fermion.optimize_orbitals() não é mais suportado. Os usuários ainda podem passar addresses como o primeiro argumento posicional; no entanto, esse uso está obsoleto. Os usuários são incentivados a passar a matriz de bitstring que define o subespaço como os primeiros argumentos posicionais para essas funções, conforme mostrado abaixo.

    Para atualizar, altere este código

    # 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,
                              )

Notas de descontinuação

  • A função qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() foi preterida em favor de qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs(). Essas duas funções se comportam da mesma forma, com uma exceção importante: qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() retorna as configurações como tuple(spin_dn, spin_up); enquanto, qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs() retorna as configurações como tuple(spin_up, spin_dn).

    para migrar

    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)
  • O argumento addresses para qiskit_addon_sqd.fermion.solve_fermion() e qiskit_addon_sqd.fermion.optimize_orbitals() foi preterido em favor de bitstring_matrix. Não é mais necessário que os usuários convertam suas configurações em números inteiros; em vez disso, eles agora devem passar a matriz de bitstring especificando o subespaço no qual projetar e diagonalizar o Hamiltoniano. A conversão para a representação inteira dos determinantes será feita internamente.

Correções de bugs

  • Corrigido um bug no qiskit_addon_sqd.configuration_recovery.recover_configurations() que, às vezes, causava um erro de divisão por zero ao calcular a probabilidade individual de inversão de bits.

  • Corrige um erro que fazia com que a recuperação da configuração falhasse em cadeias de bits de comprimento superior a 72.


0.5.0

Notas da Atualização

  • O qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(), qiskit_addon_sqd.subsampling.postselect_and_subsample(), e qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() agora exigem que os argumentos hamming_right e hamming_left sejam especificados como argumentos de palavra-chave. Além disso, os argumentos samples_per_batch e n_batches para qiskit_addon_sqd.subsampling.postselect_and_subsample() agora devem ser passados como argumentos de palavra-chave.

    Para atualizar

    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,
    )

    deve ser alterado para

    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

Prelúdio

Esta é uma versão secundária que introduz algumas pequenas, mas importantes, mudanças significativas na API. Essas alterações permitem um padrão mais consistente na especificação do número de elétrons alfa e beta nas funções químicas e não químicas da API.

Notas da Atualização

  • O qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(), qiskit_addon_sqd.subsampling.postselect_and_subsample(), e qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() agora usam o argumento posicional hamming_right antes do argumento hamming_left para corresponder melhor ao restante do fluxo de trabalho.

    Para atualizar

    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,
    )

    deve ser alterado para

    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,
    )
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.