Quantum Creative Challenge · Spring 2026

Project Showcase: qOrbital

Aryan Bawa and Arnav Singh built a visualizer that runs a real quantum-chemistry calculation and renders a molecule's orbital two ways at once, with the hardware's noise on display instead of hidden.

qOrbital rendering an H2 molecular orbital as an electron-density cloud with Bohmian trajectories, computed with VQE on IonQ hardware

When a chemist draws a molecule, the electrons are not really dots. They are fuzzy clouds of probability. qOrbital computes those clouds for small molecules on real quantum hardware, then lets you look at them.

Pick a molecule (H₂, HeH⁺, LiH), drag a bond-length slider, and a full quantum-chemistry pipeline runs underneath: classical integrals from PySCF, a qubit Hamiltonian from Qiskit Nature, and a ground state found by VQE on IonQ. From that state qOrbital reconstructs the electron density and renders it. It is built by Aryan Bawa and Arnav Singh, two Dartmouth physics students, and its sharpest idea is what it refuses to hide.

Most VQE demos report one energy number and hide the noise. qOrbital makes the noise the exhibit.

Aryan Bawa & Arnav SinghCreators, qOrbital

Built by

Aryan Bawa
Quantum computing lead

Aryan studies physics and mathematics (modified with computer science) at Dartmouth College, where he is an undergraduate researcher in the Whitfield Group working on quantum algorithms for circuit approximation via the quantum singular value transform. He wrote qsp-proc, an open-source Python/Qiskit package for QSP phase-finding, with coursework spanning quantum information, graduate quantum mechanics, quantum optics, and error correction.

Arnav Singh
Software & visualization lead

Arnav studies physics and computer science at Dartmouth and brings the full-stack and rendering side. He has production engineering experience at PlayStation, where he co-led a React analytics platform from MVP to deployment, and research experience applying ML to NASA mission proposals and astronomical data at the South African Astronomical Observatory. On qOrbital he bridges the quantum outputs to interactive 3D in TypeScript, React, and Three.js.

Two ways to see an electron

What does an orbital actually look like? Quantum mechanics gives two famous answers, and qOrbital shows both from the same wavefunction. The Copenhagen view is the textbook one: a probability cloud, rendered as a 3D density isosurface. The Bohmian view takes that same wavefunction, computes a velocity field from its phase, and integrates particle trajectories through it.

Drop a handful of seed particles into the Bohmian view and they do not fill the orbital so much as draw it. Paths bend around nodes and crowd where the bonding density is highest. You set a molecule and a geometry, and the orbital responds in real time as you move the slider, with a live dashboard showing the VQE optimizer working its way toward the ground state.

The qOrbital interface: a 3D H₂ orbital isosurface threaded with Bohmian trajectories, with the VQE dashboard alongside
qOrbital in motion.The H₂ orbital as an isosurface with Bohmian trajectories, 28 IonQ runs overlaid into the uncertainty cloud. Demo by Aryan Bawa & Arnav Singh.

Two radically different interpretations, one underlying wavefunction, side by side. The connection becomes something you watch instead of something you are told.

Aryan Bawa & Arnav SinghCreators, qOrbital

Noise you can see

This is the part no other visualizer does. Bohmian trajectories need a high-fidelity wavefunction, not just an energy expectation value, so every hardware run carries the full fingerprint of finite measurement statistics. Overlay many independent IonQ runs and you get a trajectory uncertainty cloud.

Where the physics is robust, the trajectories pile up sharp and clean. Near nodes, where the wavefunction is most fragile, they smear out. The error stops being an abstract bar on a chart and becomes a shape you can read.

Instead of a dry error bar, you see exactly where a trapped-ion processor is and isn't sure.

Aryan Bawa & Arnav SinghCreators, qOrbital

To make that explorable without a hardware queue, real runs on IonQ Aria and Forte are bundled as a gallery of independent results per molecule, so visitors can browse genuine hardware output, run-to-run variation and all, while a clean Aer statevector simulator provides the "this is what perfect looks like" baseline.

How it works

The pipeline is a real quantum-chemistry stack, end to end: PySCF builds the classical integrals and a Hartree-Fock reference, Qiskit Nature maps the fermionic problem to qubits, VQE finds the ground state, and the optimized state is turned back into a density grid and a Bohmian velocity field for rendering. The core loop is small enough to run yourself, and on Qollab it runs as written:

vqe_quickstart.py Python · excerptOpen in Playground ↗
# qOrbital quickstart: find a molecule's ground state with VQE.
import numpy as np
from qiskit.primitives import StatevectorEstimator
from qiskit_algorithms import VQE
from qiskit_algorithms.optimizers import SLSQP
from qiskit_nature.second_q.circuit.library import UCCSD, HartreeFock
from qiskit_nature.second_q.drivers import PySCFDriver
from qiskit_nature.second_q.mappers import JordanWignerMapper

MOLECULE, BOND = "H2", 0.735          # also: HeH+, LiH

# 1. Classical chemistry: Hartree-Fock + molecular integrals
problem = PySCFDriver(atom=f"H 0 0 0; H 0 0 {BOND}", basis="sto-3g").run()?Classical setup. PySCF runs Hartree-Fock and builds the molecular integrals. This is also the classical baseline qOrbital compares against.
# 2. Fermions to qubits
mapper = JordanWignerMapper()?Mapping. Turns the fermionic Hamiltonian into qubit operators. LiH instead uses parity mapping with a 2-qubit reduction to keep the qubit count down.qubit_op = mapper.map(problem.hamiltonian.second_q_op())

# 3. UCCSD trial state, from the Hartree-Fock reference
hf = HartreeFock(problem.num_spatial_orbitals, problem.num_particles, mapper)
ansatz = UCCSD(problem.num_spatial_orbitals, problem.num_particles, mapper, initial_state=hf)?Ansatz. UCCSD is the trial wavefunction. VQE tunes its parameters to push the energy down to the true ground state.
def show(step, params, energy, meta):
    print(f"  iter {step:>3}   E_elec = {energy:+.6f} Ha")?The descent. VQE walks downhill: each step the optimizer nudges the circuit and the energy drops. This callback feeds the live convergence dashboard.
vqe = VQE(StatevectorEstimator(), ansatz, SLSQP(maxiter=100),
          callback=show, initial_point=np.zeros(ansatz.num_parameters))
result = vqe.compute_minimum_eigenvalue(qubit_op)

total = result.eigenvalue.real + problem.hamiltonian.nuclear_repulsion_energy?Electronic energy plus nuclear repulsion is the molecule's ground-state energy. qOrbital rebuilds the electron density and Bohmian trajectories from this state.print(f"  ground state = {total:+.6f} Ha")
Run on QollabBackend

From the converged state, qOrbital extracts the one-particle reduced density matrix to rebuild the electron density on a 3D grid, computes the de Broglie-Bohm velocity field v = (ℏ/m) Im(∇ψ/ψ) and integrates it with adaptive Runge-Kutta for the trajectories, then renders both with Three.js on the web and PyVista in the lab.

qOrbital is open source and MIT-licensed, built to be forked and rerun.

FieldDetail
QuantumQiskit, Qiskit Nature, Qiskit Aer, VQE with a UCCSD ansatz.
Hardwareqiskit-ionq, IonQ Aria and Forte trapped-ion processors.
ClassicalPySCF, NumPy, SciPy, integrals, Hartree-Fock, and density.
RenderThree.js (web) and PyVista / VTK (Jupyter), isosurfaces and trajectory streamlines.
Methodde Broglie-Bohm trajectories (Bohm 1952; Wyatt 2005).

Make it yours

qOrbital is open and forkable on Qollab, the full package is MIT-licensed on GitHub, and you can try the hosted demo right now. Swap the molecule, change the bond length, seed your own particles, and rerun the VQE on a simulator or real IonQ hardware. Supported molecules today are H₂ (the tutorial baseline), HeH⁺ (polar asymmetry), and LiH (the main showcase).

See an orbital two ways, noise and all.

Fork qOrbital, run VQE on a real trapped-ion processor, and watch the electron density and its Bohmian trajectories take shape. Everything here is open and yours to build on.

Stay in the loop.

Get the latest tutorials, demos, and project showcases straight to your inbox. No noise, just the good stuff.