INTERACTIVE DEMO · DRUG DISCOVERY

Protein-Ligand Binding Affinity
Estimation

A real quantum-classical workflow. The same pipeline a medicinal chemist would run — from raw ligand structure to a binding affinity score — orchestrated across classical and quantum hardware automatically.

VQE Ground-State Energy EGFR Kinase Target Hybrid Workflow

What is this workflow doing?

01

You have a candidate drug molecule

You're testing whether a small molecule — say, a kinase inhibitor — binds tightly enough to its target protein (e.g., EGFR) to be worth advancing in the pipeline. Tight binding means the drug stays on the target. Loose binding means it probably won't work in vivo.

02

Why quantum helps here

Classical computers approximate the quantum-mechanical interaction between drug and protein using force fields — educated guesses. A quantum computer can simulate those interactions from first principles using the Variational Quantum Eigensolver (VQE), giving you the actual ground-state energy of the binding interaction. More accurate energy = more accurate binding affinity prediction.

03

What you actually do

You call one function. OrchestralOS handles ligand preparation, active-site identification, circuit generation, QPU selection, and post-processing. You get back a ΔG (binding free energy) value in kcal/mol — the number your computational chemist already understands.

Full pipeline, step by step

CLASSICAL
1

Ligand Preparation

3D conformer generation, protonation state assignment at physiological pH, and energy minimization using MMFF94. Produces a cleaned mol2 structure ready for docking.

~2s · CPU · RDKit
CLASSICAL
2

Active Site Identification

Pocket detection on the EGFR kinase crystal structure (PDB: 1IEP). Identifies binding cavity, extracts the residue shell within 6Å, and prepares the binding site for quantum simulation.

~4s · CPU · fpocket
QUANTUM
3

VQE Ground-State Energy

The binding interaction Hamiltonian is mapped to a 12-qubit quantum circuit. VQE iteratively optimizes a parameterized ansatz (UCCSD) to find the minimum eigenvalue — the true ground-state energy of the drug-target interaction.

~45s · QPU · IonQ Aria · 12 qubits
CLASSICAL
4

Binding Affinity Score

VQE energy output feeds into the MM-PBSA post-processor. Entropic corrections and solvation terms are added classically. Final output: ΔG binding free energy in kcal/mol.

~1s · CPU · MM-PBSA
WORKFLOW RESULT
−9.4 kcal/mol ΔG Binding Free Energy
2.3 nM Predicted Kd
POTENT   Drug-Likeness

A ΔG below −9 kcal/mol with sub-10 nM predicted Kd places this compound in the top 5% of kinase inhibitor candidates. Worth advancing to in vitro validation.

The code a researcher writes

One workflow call. OrchestralOS handles everything else — circuit compilation, QPU routing, error mitigation, and result parsing.

binding_screen.py
import orchestral
from orchestral.bio import load_ligand, load_protein

# Load your molecules — standard mol2 and PDB formats
ligand  = load_ligand("erlotinib.mol2")
protein = load_protein("egfr_1iep.pdb", chain="A")

# Define the quantum subroutine — runs on the best available QPU
@orchestral.quantum_step(backend="auto", qubits=12, shots=4096)
def compute_binding_energy(ligand, protein):
    # OrchestralOS builds the fermionic Hamiltonian and maps it to qubits
    hamiltonian = orchestral.chem.build_hamiltonian(
        ligand, protein,
        method="uccsd",
        active_space=(4, 4)   # 4 electrons in 4 orbitals
    )
    return orchestral.algorithms.vqe(
        hamiltonian,
        optimizer="cobyla",
        max_iter=500
    )

# Build and run the full classical-quantum workflow
workflow = orchestral.workflow(
    name="egfr-erlotinib-binding",
    steps=[
        orchestral.steps.PrepLigand(ligand, ph=7.4),
        orchestral.steps.FindActiveSite(protein, radius_angstrom=6),
        compute_binding_energy,                   # <-- the quantum step
        orchestral.steps.ScoreBindingAffinity(method="mmpbsa"),
    ]
)

result = workflow.run()

# Results are plain Python objects — no quantum expertise needed
print(f"ΔG = {result.delta_g:.1f} kcal/mol")
print(f"Predicted Kd = {result.kd_nM:.1f} nM")
print(f"QPU used: {result.qpu_backend}")
print(f"Circuit depth: {result.circuit_depth}, Qubits: {result.qubit_count}")

# Example output:
# ΔG = -9.4 kcal/mol
# Predicted Kd = 2.3 nM
# QPU used: ionq_aria
# Circuit depth: 148, Qubits: 12

How OrchestralOS picks your QPU

Every quantum job is profiled before dispatch. The routing engine scores available backends in real time across three dimensions and picks the optimal machine — automatically.

JOB PROFILE 12 qubits depth 148 VQE / UCCSD ROUTING ENGINE Circuit depth score Qubit fidelity score Queue time score → Best: IonQ Aria IBM 127q · depth >200 queue: 18 min IonQ Aria 25q · depth 200 queue: 2 min ✓ Rigetti 84q · depth 150 queue: 9 min Quantinuum 32q · depth 400+ queue: 34 min SELECTED QUANTUM JOB ROUTING — REAL TIME

Circuit Depth

Deep circuits need low-noise hardware. For UCCSD at depth 148, ion trap backends (IonQ, Quantinuum) outperform superconducting chips because gate fidelity degrades more slowly with circuit depth.

Qubit Count

12-qubit problems fit on any modern QPU. Routing prioritizes hardware where those 12 qubits have the highest measured two-qubit gate fidelity, not just availability.

Queue Time

IonQ Aria had a 2-minute queue vs. 18 minutes on IBM and 34 on Quantinuum at dispatch time. Scoring combines all three signals — queue time broke the tie here.

The router re-evaluates every 30 seconds. A job re-dispatched an hour later may land on a different backend — and that's by design.

Run this workflow on your molecules.

OrchestralOS is in private beta with select pharma R&D teams. Request access to run your own protein-ligand screen on real QPU hardware.