Skip to main content
IBM Quantum Platform

Notas de la versión de la diagonalización cuántica basada en muestras (SQD)


0.12.1

Notas de actualización

  • Python 3.10 ahora es la versión mínima requerida. Se ha dejado de ofrecer soporte para Python 3.9.

0.12.0

Nuevas funciones

Notas de actualización

Notas sobre características en desuso

Corrección de errores


0.11.0

Nuevas funciones

Notas de actualización

Corrección de errores

  • Corregida una conversión de tipo flotante a entero que afectaba al módulo qubit

0.10.0

Notas de actualización

Notas sobre características en desuso

  • El argumento avg_occupancies de qiskit_addon_sqd.configuration_recovery.recover_configurations() debe ser ahora una tupla length-2 que contenga las ocupaciones de spin-up y spin-down, respectivamente.

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

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

Corrección de errores

  • Se ha corregido un error que provocaba que la energía de salida de qiskit_addon_sqd.fermion.solve_fermion() fuera incorrecta cuando la spin_sq de entrada se desviaba de la spin^2 de la función de onda de salida.

0.9.0

Notas de actualización

Corrección de errores

  • Se ha corregido un error de indexación en qiskit_addon_sqd.configuration_recovery() que provocaba que los bits de la mitad derecha de la cadena de bits estuvieran invertidos con respecto a las ocupaciones de los oritales asociados a la mitad izquierda de la cadena de bits.

  • pyscf ya no se considera una dependencia en Windows, donde falla al instalarse. Sin embargo, Windows sigue siendo una plataforma no compatible.


0.8.0

Nuevas funciones

  • Se ha añadido compatibilidad con Python 3.9.

  • Todas las funciones que toman un argumento rand_seed aceptan ahora también una instancia numpy.random.Generator como rand_seed.

Notas de actualización


0.7.0

Corrección de errores


0.6.0

Notas de actualización

  • Especificando addresses como argumento de palabra clave para qiskit_addon_sqd.fermion.solve_fermion() y qiskit_addon_sqd.fermion.optimize_orbitals() ya no es compatible. Los usuarios aún pueden pasar addresses como primer argumento posicional; sin embargo, este uso está obsoleto. Se recomienda a los usuarios que pasen la matriz de bits que define el subespacio como primer argumento posicional a estas funciones, como se muestra a continuación.

    Para actualizar, cambie 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 sobre características en desuso

  • La función qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() ha quedado obsoleta en favor de qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs(). Estas dos funciones se comportan igual con una excepción clave - qiskit_addon_sqd.fermion.bitstring_matrix_to_sorted_addresses() devuelve las configuraciones como tuple(spin_dn, spin_up); mientras que, qiskit_addon_sqd.fermion.bitstring_matrix_to_ci_strs() devuelve las configuraciones 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)
  • El argumento addresses de qiskit_addon_sqd.fermion.solve_fermion() y qiskit_addon_sqd.fermion.optimize_orbitals() ha quedado obsoleto en favor de bitstring_matrix. Ya no es necesario que los usuarios conviertan sus configuraciones en números enteros; en su lugar, ahora deben pasar la matriz de bits que especifica el subespacio sobre el que proyectar y diagonalizar el hamiltoniano. La conversión a la representación entera de los determinantes se hará internamente.

Corrección de errores

  • Se ha corregido un error en qiskit_addon_sqd.configuration_recovery.recover_configurations() que a veces provocaba un error de división por cero al calcular la probabilidad de cambio de bit individual.

  • Se corrige un error que hacía que la recuperación de la configuración fallara en cadenas de bits de longitud superior a 72.


0.5.0

Notas de actualización

  • En qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(), qiskit_addon_sqd.subsampling.postselect_and_subsample()y qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() ahora requieren que los argumentos hamming_right y hamming_left se especifiquen como argumentos de palabra clave. Además, los argumentos samples_per_batch y n_batches de qiskit_addon_sqd.subsampling.postselect_and_subsample() deben pasarse ahora como argumentos de palabra clave.

    Para actualizar

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

    debe cambiarse por

    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

Preludio

Se trata de una versión menor que introduce un par de pequeños pero importantes cambios en la API. Estos cambios permiten un patrón más coherente a la hora de especificar el número de electrones alfa y beta en todas las funciones químicas y no químicas de la API.

Notas de actualización

  • En qiskit_addon_sqd.counts.generate_counts_bipartite_hamming(), qiskit_addon_sqd.subsampling.postselect_and_subsample()y qiskit_addon_sqd.configuration_recovery.post_select_by_hamming_weight() toman ahora el argumento posicional hamming_right antes que el argumento hamming_left para ajustarse mejor al resto del flujo de trabajo.

    Para actualizar

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

    debe cambiarse por

    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,
    )
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.