Primeros pasos#

Instalación#

Qiskit Nature depende de Qiskit, que tiene su propio Qiskit Primeros Pasos que detalla las opciones de instalación y sus entornos/plataformas compatibles. Deberías referirte a eso primero. Luego, se puede seguir la información que está aquí, la cual se centra en la instalación adicional específica de Qiskit Nature.

Qiskit Nature tiene algunas funciones que se han hecho opcionales cuando el código dependiente y/o los programa(s) de soporte no están (o no pueden ser) instalados de forma predeterminada. Estos incluyen, por ejemplo, librerías/programas clásicos para problemas moleculares. Consulta Instalaciones opcionales para más información.

La forma más sencilla de comenzar es seguir primero la guía de primeros pasos “Comenzar localmente” para Qiskit

En tu entorno virtual, donde instalaste Qiskit, instala Qiskit Nature de la siguiente manera:

pip install qiskit-nature

Nota

Como Qiskit Nature depende de Qiskit, simplemente puedes instalarlo en tu entorno, como se indicó anteriormente, y pip instalará automáticamente una versión compatible de Qiskit si aún no hay una instalada.

La instalación de Qiskit Nature desde el código fuente te permite acceder a la versión actualizada más recientemente en desarrollo en lugar de usar la versión en el repositorio Python Package Index (PyPI). Esto te dará la capacidad de inspeccionar y extender la última versión del código de Qiskit Nature de manera más eficiente.

Dado que Qiskit Nature depende de Qiskit, y sus últimos cambios pueden requerir características nuevas o modificadas de Qiskit, primero debes seguir las instrucciones de «Instalar desde el código fuente» de Qiskit aquí Qiskit Primeros Pasos

Installing Qiskit Nature from Source

Usando el mismo entorno de desarrollo en el que instalaste Qiskit, estás listo para instalar Qiskit Nature.

  1. Clonar el repositorio de Qiskit Nature.

    git clone https://github.com/qiskit-community/qiskit-nature.git
    
  2. La clonación del repositorio crea una carpeta local llamada qiskit-nature.

    cd qiskit-nature
    
  3. Si quieres ejecutar pruebas o verificaciones de linting, instala los requerimientos de desarrollador.

    pip install -r requirements-dev.txt
    
  4. Instalar qiskit-nature.

    pip install .
    

Si deseas instalarlo en modo editable, lo que significa que los cambios de código en el proyecto no requieren una reinstalación para ser aplicados, puedes hacerlo con:

pip install -e .

Instalaciones opcionales#

Qiskit Nature admite el uso de diferentes bibliotecas y programas clásicos, a través de controladores (drivers), que calculan información molecular, como integrales de uno y dos cuerpos. Esto es necesario como entrada del problema a los algoritmos que calculan las propiedades de las moléculas, como la energía del estado fundamental, por lo que se debe instalar al menos una biblioteca/programa de este tipo. Como puedes elegir qué controlador utilizar, puedes instalar tantos o tan pocos como desees, que sean compatibles con tu plataforma, etc.

Consulta la Instalación del controlador que enumera cada controlador y cómo instalar la biblioteca/programa dependiente que requiere.

Los controladores sólo proporcionan un conjunto muy limitado de capacidades de los códigos clásicos subyacentes. Si bien esto es útil para comenzar y realizar pruebas, se puede obtener una mejor experiencia en el orden inverso de responsabilidad. Es decir, en una configuración donde el código clásico ejecuta los componentes de Qiskit Nature. Actualmente, existe una integración de este tipo para los siguientes paquetes:

Si estás interesado en utilizar Psi4, estamos buscando activamente ayuda para comenzar con una integración similar en qiskit-nature-psi4

Además, puedes encontrar útiles las siguientes dependencias opcionales:

  • sparse, una biblioteca para arreglos multidimensionales dispersos. Cuando está instalada, Qiskit Nature puede aprovechar esto para reducir los requerimientos de memoria de sus cálculos.

  • opt_einsum, un optimizador de orden de contracción de tensor para np.einsum.


¿Listo para empezar?…#

Ahora que Qiskit Nature está instalado, probemos un experimento de aplicación de química usando el algoritmo VQE (Variational Quantum Eigensolver, Solucionador Propio Variacional Cuántico) para calcular la energía del estado fundamental (mínimo) de una molécula.

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

El programa anterior calcula la energía del estado fundamental del Hidrógeno molecular, H<sub>2</sub>, donde los dos átomos están configurados para estar a una distancia de 0.735 angstroms. La especificación de entrada molecular es procesada por el controlador PySCF. Este controlador produce un ElectronicStructureProblem que recopila toda la información del problema requerida por Qiskit Nature. Los operadores de segunda cuantización contenidos en ese problema se pueden mapear a operadores de qubit con un QubitMapper. Aquí, elegimos ParityMapper que elimina automáticamente 2 qubits debido a las simetrías heredadas cuando se le proporcionan num_particles; una reducción en la complejidad que es particularmente ventajosa para las computadoras NISQ.

Para encontrar realmente la solución del estado fundamental, se utiliza el algoritmo Solucionador Propio Variacional Cuántico (Variational Quantum Eigensolver, VQE). Sus tres componentes principales son la primitiva estimator (Estimator), el ansatz de función de onda (UCCSD) y el optimizador (L_BFGS_B). El componente UCCSD es el único proporcionado directamente por Qiskit Nature y generalmente se combina con el estado inicial de HartreeFock y un punto inicial todo en cero para el optimizador.

Luego, todo el problema se resuelve utilizando un GroundStateEigensolver que encapsula tanto el ParityMapper como el VQE. Dado que se le proporciona un ElectronicStructureProblem (que fue el resultado del PySCFDriver), también devuelve un ElectronicStructureResult.

Dive into the tutorials

Find out about Qiskit Nature and how to use it for natural science problems.

Qiskit Nature tutorials