quantum-catalyst-platform / test_quantum.py
ZenkuIshigami09's picture
Upload 21 files
9fc3c5b verified
Raw
History Blame Contribute Delete
3.17 kB
"""
Test PySCF + Qiskit Nature + VQE integration
"""
import sys
print("=" * 60)
print("TESTING QUANTUM SIMULATION STACK")
print("=" * 60)
# Test 1: Check imports
print("\n[1/4] Testing imports...")
try:
import pyscf
print(" [OK] PySCF version:", pyscf.__version__)
except ImportError as e:
print(" [ERROR] PySCF not available:", e)
sys.exit(1)
try:
from qiskit_nature.second_q.drivers import PySCFDriver
print(" [OK] Qiskit Nature PySCFDriver")
except ImportError as e:
print(" [ERROR] Qiskit Nature issue:", e)
sys.exit(1)
try:
from qiskit_algorithms import VQE
from qiskit_algorithms.optimizers import SLSQP
print(" [OK] Qiskit Algorithms (VQE, SLSQP)")
except ImportError as e:
print(" [ERROR] Qiskit Algorithms issue:", e)
sys.exit(1)
# Test 2: Run simple H2 molecule with PySCF
print("\n[2/4] Testing PySCF electronic structure calculation...")
try:
from pyscf import gto, scf
# Build H2 molecule
mol = gto.M(
atom='H 0 0 0; H 0 0 0.74', # Bond length 0.74 Angstrom
basis='sto-3g'
)
# Run Hartree-Fock
mf = scf.RHF(mol)
energy = mf.kernel()
print(f" [OK] H2 Hartree-Fock energy: {energy:.6f} Hartree")
except Exception as e:
print(f" [ERROR] PySCF calculation failed: {e}")
sys.exit(1)
# Test 3: Test PySCFDriver in Qiskit Nature
print("\n[3/4] Testing Qiskit Nature PySCFDriver...")
try:
driver = PySCFDriver(
atom='H 0 0 0; H 0 0 0.74',
basis='sto-3g'
)
problem = driver.run()
print(f" [OK] Electronic structure problem created")
print(f" [OK] Nuclear repulsion energy: {problem.nuclear_repulsion_energy:.6f} Hartree")
print(f" [OK] Number of molecular orbitals: {problem.num_spatial_orbitals}")
except Exception as e:
print(f" [ERROR] PySCFDriver failed: {e}")
sys.exit(1)
# Test 4: Test full VQE simulation
print("\n[4/4] Testing VQE with our quantum_simulation module...")
try:
from modules.quantum_simulation import run_vqe_simulation
# Test H2 molecule
xyz_coords = "H 0 0 0; H 0 0 0.74"
result = run_vqe_simulation(xyz_coords)
if "error" in result and result["error"]:
print(f" [ERROR] VQE simulation error: {result['error']}")
else:
print(f" [OK] VQE ground state energy: {result['energy']:.6f} Hartree")
print(f" [OK] Iterations: {result['iterations']}")
print(f" [OK] Convergence data points: {len(result['convergence'])}")
# Sanity check: H2 ground state should be around -1.137 Hartree
expected = -1.137
if abs(result['energy'] - expected) < 0.1:
print(f" [OK] Energy is physically reasonable (expected ~{expected:.3f})")
else:
print(f" [WARNING] Energy seems off (expected ~{expected:.3f}, got {result['energy']:.3f})")
except Exception as e:
print(f" [ERROR] VQE simulation failed: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
print("\n" + "=" * 60)
print("ALL TESTS PASSED - QUANTUM STACK WORKING!")
print("=" * 60)