Environment
What is happening?
MissingOptionalLibraryError Traceback (most recent call last)
Cell In[97], line 3
1 # Step 2: Simulate energies for a range of strains
2 strain_values = np.linspace(-0.1, 0.1, 5) # Strain range from -10% to +10%
----> 3 energies = [simulate_strain(strain) for strain in strain_values]
Cell In[97], line 3, in (.0)
1 # Step 2: Simulate energies for a range of strains
2 strain_values = np.linspace(-0.1, 0.1, 5) # Strain range from -10% to +10%
----> 3 energies = [simulate_strain(strain) for strain in strain_values]
Cell In[96], line 4, in simulate_strain(atom_displacement)
2 def simulate_strain(atom_displacement):
3 # 1a. Define molecular structure under strain
----> 4 driver = PySCFDriver(
5 atom=f"H 0.0 0.0 0.0; H 0.0 0.0 {0.74 +atom_displacement}",
6 unit=DistanceUnit.ANGSTROM,
7 basis="sto3g"
8 )
9 # 1b. Generate the electronic structure problem
10 problem = driver.run()
File /opt/conda/lib/python3.11/site-packages/qiskit/utils/classtools.py:111, in _WrappedMethod.get..out(*args, **kwargs)
108 @functools.wraps(method)
109 def out(*args, **kwargs):
110 for callback in self._before:
--> 111 callback.get(obj, objtype)(*args, **kwargs)
112 retval = method(*args, **kwargs)
113 for callback in self._after:
File /opt/conda/lib/python3.11/site-packages/qiskit/utils/lazy_tester.py:41, in _RequireNow.call(self, *_args, **_kwargs)
40 def call(self, *_args, **_kwargs):
---> 41 self._tester.require_now(self._feature)
File /opt/conda/lib/python3.11/site-packages/qiskit/utils/lazy_tester.py:221, in LazyDependencyManager.require_now(self, feature)
219 if self:
220 return
--> 221 raise MissingOptionalLibraryError(
222 libname=self._name, name=feature, pip_install=self._install, msg=self._msg
223 )
MissingOptionalLibraryError: "The 'pyscf' library is required to use 'PySCFDriver'. See https://pyscf.org/install.html."
How can we reproduce the issue?
Importing necessary libraries
import numpy as np
import matplotlib.pyplot as plt
import pyscf
Qiskit imports
from qiskit_aer.primitives import Estimator # <-- for Aer-based estimation
from qiskit_algorithms.minimum_eigensolvers import VQE
from qiskit_algorithms.optimizers import COBYLA
from qiskit.circuit.library import EfficientSU2
Qiskit Nature imports
from qiskit_nature.second_q.drivers import PySCFDriver
from qiskit_nature.units import DistanceUnit
from qiskit_nature.second_q.problems import ElectronicStructureProblem
from qiskit_nature.second_q.mappers import JordanWignerMapper
from qiskit_nature.second_q.algorithms import GroundStateEigensolver
Step 1: Function to compute energy for different strains
def simulate_strain(atom_displacement):
# 1a. Define molecular structure under strain
driver = PySCFDriver(
atom=f"H 0.0 0.0 0.0; H 0.0 0.0 {0.74 +atom_displacement}",
unit=DistanceUnit.ANGSTROM,
basis="sto3g"
)
# 1b. Generate the electronic structure problem
problem = driver.run()
# 1c. Map the electronic problem to a qubit operator
mapper = JordanWignerMapper()
# This will give you a list of second-quantized operators; the first one is usually the Hamiltonian
second_q_op = problem.second_q_ops()[0]
# 1d. Create an Estimator for the Aer simulator
# You can pass backend options here, e.g. 'method': 'statevector'
estimator = Estimator(
backend=Aer.get_backend("aer_simulator_statevector"),
backend_options={"method": "statevector"}
)
# 1e. Define the ansatz and optimizer for VQE
ansatz = EfficientSU2(num_qubits=problem.num_spin_orbitals, reps=2, entanglement="full")
optimizer = COBYLA(maxiter=100)
# 1f. Create the VQE solver using the Aer-based Estimator
vqe = VQE(estimator=estimator, ansatz=ansatz, optimizer=optimizer)
# 1g. Use GroundStateEigensolver to compute the ground-state energy
gsc = GroundStateEigensolver(mapper, vqe)
result = gsc.solve(problem)
# Return the total (ground-state) energy
return result.total_energies[0]
Step 2: Simulate energies for a range of strains
strain_values = np.linspace(-0.1, 0.1, 5) # Strain range from -10% to +10%
energies = [simulate_strain(strain) for strain in strain_values]
What should happen?
For the atom displacements for linear strain, it should run the definition of strain
Any suggestions?
I am not aware of this scf issue-I am a new user-so I need help
Environment
What is happening?
MissingOptionalLibraryError Traceback (most recent call last)
Cell In[97], line 3
1 # Step 2: Simulate energies for a range of strains
2 strain_values = np.linspace(-0.1, 0.1, 5) # Strain range from -10% to +10%
----> 3 energies = [simulate_strain(strain) for strain in strain_values]
Cell In[97], line 3, in (.0)
1 # Step 2: Simulate energies for a range of strains
2 strain_values = np.linspace(-0.1, 0.1, 5) # Strain range from -10% to +10%
----> 3 energies = [simulate_strain(strain) for strain in strain_values]
Cell In[96], line 4, in simulate_strain(atom_displacement)
2 def simulate_strain(atom_displacement):
3 # 1a. Define molecular structure under strain
----> 4 driver = PySCFDriver(
5 atom=f"H 0.0 0.0 0.0; H 0.0 0.0 {0.74 +atom_displacement}",
6 unit=DistanceUnit.ANGSTROM,
7 basis="sto3g"
8 )
9 # 1b. Generate the electronic structure problem
10 problem = driver.run()
File /opt/conda/lib/python3.11/site-packages/qiskit/utils/classtools.py:111, in _WrappedMethod.get..out(*args, **kwargs)
108 @functools.wraps(method)
109 def out(*args, **kwargs):
110 for callback in self._before:
--> 111 callback.get(obj, objtype)(*args, **kwargs)
112 retval = method(*args, **kwargs)
113 for callback in self._after:
File /opt/conda/lib/python3.11/site-packages/qiskit/utils/lazy_tester.py:41, in _RequireNow.call(self, *_args, **_kwargs)
40 def call(self, *_args, **_kwargs):
---> 41 self._tester.require_now(self._feature)
File /opt/conda/lib/python3.11/site-packages/qiskit/utils/lazy_tester.py:221, in LazyDependencyManager.require_now(self, feature)
219 if self:
220 return
--> 221 raise MissingOptionalLibraryError(
222 libname=self._name, name=feature, pip_install=self._install, msg=self._msg
223 )
MissingOptionalLibraryError: "The 'pyscf' library is required to use 'PySCFDriver'. See https://pyscf.org/install.html."
How can we reproduce the issue?
Importing necessary libraries
import numpy as np
import matplotlib.pyplot as plt
import pyscf
Qiskit imports
from qiskit_aer.primitives import Estimator # <-- for Aer-based estimation
from qiskit_algorithms.minimum_eigensolvers import VQE
from qiskit_algorithms.optimizers import COBYLA
from qiskit.circuit.library import EfficientSU2
Qiskit Nature imports
from qiskit_nature.second_q.drivers import PySCFDriver
from qiskit_nature.units import DistanceUnit
from qiskit_nature.second_q.problems import ElectronicStructureProblem
from qiskit_nature.second_q.mappers import JordanWignerMapper
from qiskit_nature.second_q.algorithms import GroundStateEigensolver
Step 1: Function to compute energy for different strains
def simulate_strain(atom_displacement):
# 1a. Define molecular structure under strain
driver = PySCFDriver(
atom=f"H 0.0 0.0 0.0; H 0.0 0.0 {0.74 +atom_displacement}",
unit=DistanceUnit.ANGSTROM,
basis="sto3g"
)
# 1b. Generate the electronic structure problem
problem = driver.run()
Step 2: Simulate energies for a range of strains
strain_values = np.linspace(-0.1, 0.1, 5) # Strain range from -10% to +10%
energies = [simulate_strain(strain) for strain in strain_values]
What should happen?
For the atom displacements for linear strain, it should run the definition of strain
Any suggestions?
I am not aware of this scf issue-I am a new user-so I need help