Skip to content

edaphos 0.9.0 — Pillar 6 meets real hardware and real chemistry

Choose a tag to compare

@HugoMachadoRodrigues HugoMachadoRodrigues released this 22 Apr 15:28
· 176 commits to main since this release

Summary

Promotes Pillar 6 (Quantum ML) from a statevector-only demonstration
to a NISQ-honest, chemistry-grounded pipeline. Three strictly
additive capabilities land together because each one only becomes
meaningful in the presence of the other two.

Shot-based execution

quantum_vqe_fit(backend = "aer_shots", shots = ...) wires
qiskit_aer.primitives.EstimatorV2 through the VQE loop. The
EfficientSU2 ansatz is transpiled to the standard
{id, rz, sx, x, cx, u} basis gate set so Aer can dispatch it, and
each energy evaluation is reconstructed from shots Monte-Carlo
samples with the expected 1/sqrt(shots) noise floor. SPSA
(Spall 1998) becomes the recommended optimiser under a stochastic
cost function.

Full IBM Quantum Runtime dispatch

backend = "ibmq" routes the VQE through
qiskit_ibm_runtime.EstimatorV2 inside a managed Session. The
ansatz is ISA-transpiled against the target backend's coupling map
via the preset pass manager (level 1), and the observable is
re-indexed with SparsePauliOp.apply_layout(). The new
mitigation argument maps {"none", "m3", "zne"} to IBM
resilience_level ∈ {0, 1, 2} (Kim et al. 2023, Nature 618,
500–505):

mitigation Technique
"m3" TREX + Matrix-free Measurement Mitigation for readout errors
"zne" Zero-Noise Extrapolation over gate-folding scales

Plumbing additions:

  • quantum_ibmq_submit() — low-level single-PUB primitive for
    custom hybrid loops that do not want quantum_vqe_fit()'s
    COBYLA/SPSA wrapper.
  • quantum_ibmq_least_busy() — automatic backend selection.
  • quantum_ibmq_backends(operational_only, simulator) — richer
    filtering.

qiskit-nature bridge

quantum_hamiltonian_from_pyscf() turns a molecular XYZ geometry
into a qubit Hamiltonian through the four-stage pipeline

XYZ → PySCF RHF → FreezeCore → ActiveSpace(n_e, n_o) → ParityMapper

and returns an edaphos_quantum_hamiltonian_nature that carries
the nuclear-repulsion, frozen-core and active-space energy shifts
as attributes so that quantum_nature_total_energy() can
reconstruct the full molecular energy from a VQE active-space fit.

Three curated organo-mineral presets ship via
quantum_hamiltonian_organo_mineral_nature():

Variant Pedological role Active space Qubits
"formic_acid" carboxylate –COOH — dominant humic functional group (2e, 2o) 2
"methanediol" ortho-diol — catechol-style Fe(III) chelator (2e, 2o) 2
"ferric_formate" monodentate Fe(III)–OOCH — minimum viable organo-mineral (4e, 4o) 4

On formic acid the (2e, 2o) active-space VQE recovers ~34
milli-Hartree of correlation energy below the Hartree–Fock
reference — the canonical signature that the quantum circuit is
genuinely beating the mean-field baseline.

Documentation

  • Vignette pilar6-quantum gains three new sections deriving the
    shot-based execution (§8), IBMQ + M3/ZNE mitigation (§9) and
    qiskit-nature organo-mineral Hamiltonians (§10) from first
    principles, and updates the roadmap to reflect v0.9.0 delivering
    the three items that were open at v0.8.0.
  • README Pillar 6 section gains a VQE-to-hardware walk-through and
    a first-principles organo-mineral subsection.

Quality

  • 20 new tests land in test-quantum-v09.R covering the shot-based
    VQE on H₂, the qiskit-nature formic-acid pipeline (both the
    Hamiltonian construction and total-energy reconstruction), the
    IBMQ preflight logic, and the mitigation ↔ resilience_level
    mapping.
  • Full quantum test suite: 89/89 green.
  • R CMD check --as-cran: 0 errors / 0 warnings / 2 harmless NOTEs
    (network timestamp + PySCF's own tempdir).

Install notes

New optional Python dependencies for the new features:

reticulate::py_install(
  c("qiskit-nature", "pyscf", "qiskit-ibm-runtime"),
  pip = TRUE
)
Sys.setenv(IBMQ_TOKEN = "<your-ibm-quantum-api-token>")  # only for backend = "ibmq"

All three packages are optional at load time; each public entry
point emits a targeted install-hint if its stack is missing.