Cryo-EM Structure Preparation & XModeScore

Cryo-EM Refinement & XModeScore Tutorials

The following tutorials demonstrate density-coupled QM/MM refinement and XModeScore for Cryo-EM using the DivCon Suite—primarily via qmechanic (no Phenix required). Optional examples using qbdivcon are included where helpful.

Note: these same calculations can be performed with X-ray data. Simply substitute X-ray density (in MTZ or sf.cif format) and change the –experiment option from CryoEM to Xray.

(If you’d like to be notified of updates, email support@quantumbioinc.com.)

Method Summary

Goal: Improve protein:ligand model accuracy in Cryo-EM maps by coupling real-space density agreement with semi-empirical QM/MM energy (DivCon). The approach emphasizes chemically consistent protonation/tautomer states, reduced ligand strain, and better local electrostatics (including ions/solvent) at medium/variable resolution.

  • Density-coupled objective: real-space map agreement + SE-QM energy in one target (qmechanic/qbdivcon).
  • Automated prep: protonation and model completion (gaps/loops) where applicable.
  • XModeScore: enumerates and ranks protomers/tautomers/stereoisomers against the map, using strain + difference-density statistics.
  • Notes for Cryo-EM: works directly with Cryo-EM maps; Phenix is not required for the qmechanic-based Cryo-EM workflows below.

Back to Top

Prerequisites & Environment

  • Install the DivCon Discovery Suite and source the environment:
    source /path/to/DivConDiscoverySuite/etc/qbenv.sh
  • Ensure the following binaries resolve on your PATH:
    • $QBHOME/bin/qmechanic (required)
    • $QBHOME/bin/qbdivcon (optional; only for qbdivcon tutorials)
  • Download inputs (PDB with H where indicated, Cryo-EM map files) from the links in each tutorial.

Back to Top



Tutorial #1: Cryo-EM QM/MM refinement on PDBid:7JSY (qmechanic)

Objective: Run density-coupled QM/MM refinement with ligand in the QM region using qmechanic. Input is a protonated PDB and the experimental Cryo-EM map.

  1. Create a clean directory and fetch inputs:
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/7jsy+H.pdb
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/emd_22463.map
  2. Execute QM/MM refinement (ligand I3C as QM):
    qmechanic 7jsy+H.pdb emd_22463.map \
      --resolution 1.8 --experiment cryoEM \
      --opt all 35 0.01 \
      --qm-region /A/I3C/501// 0.0 0.0 \
      -h pm6 amberff14sb -O \
      -p 7jsy+H_refined.pdb 7jsy+H_refined.mtz \
      -v2 --np 2
Switch / Arg Value Description
(positional) 7jsy+H.pdb Input model (protonated PDB).
(positional) emd_22463.map Cryo-EM map file used for the real-space target.
–experiment cryoEM Select Cryo-EM mode (map-based real-space scoring/gradients).
–resolution 1.8 Nominal map resolution; informs weighting/filters.
–opt all 35 0.01 Global optimization control (scope, cycles, tolerance).
–qm-region /A/I3C/501// 0.0 0.0 Select ligand as QM region; trailing numbers are buffer radii (region/buffer Å).
-h pm6 amberff14sb Hamiltonians: PM6 for QM; AMBER ff14SB for MM.
-O (flag) Overwrite/force output where applicable.
-p PDB MTZ Output refined coordinates and MTZ map coefficients.
-v2 (flag) Increase console/log verbosity.
–np 2 CPU threads for parallel parts of the run.

Notes: This performs a local, chemically aware refinement of the ligand environment in real space. Monitor ligand strain and map-model metrics post-run.

Back to Top



Tutorial #2: Cryo-EM ONIOM refinement on PDBid:7EFC (qbdivcon)

Objective: Demonstrate ONIOM (QM/MM) refinement via the qbdivcon wrapper (optional path; qmechanic alone is sufficient for Cryo-EM).

  1. Fetch inputs:
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/7efc+H.pdb
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/emd_31083.map
  2. Run qbdivcon (skip protonation since input is +H):
    qbdivcon \
      --pdbfile 7efc+H.pdb \
      --sfFile emd_31083.map \
      --experiment cryoEM \
      --resolution 1.7 \
      --protonation skip \
      --engine divcon \
      --qmMethod pm6 \
      --mmMethod amberff14sb \
      --resname BTN \
      --chains All \
      --np 8 -v 2 -O
Switch / Arg Value Description
–pdbfile 7efc+H.pdb Input model (protonated PDB).
–sfFile emd_31083.map Cryo-EM map file.
–experiment cryoEM Enable Cryo-EM real-space target.
–resolution 1.7 Nominal resolution to inform weights/filters.
–protonation skip Skip initial protonation (input is already +H).
–engine divcon Use DivCon’s internal refinement engine.
–qmMethod pm6 QM Hamiltonian (semiempirical).
–mmMethod amberff14sb MM force field for non-QM region.
–resname BTN Filter/selection convenience for ligand(s) of interest.
–chains All Consider all chains during setup/refinement.
–np 8 Threads for parallel work.
-v 2 Verbosity level.
-O (flag) Overwrite outputs if present.

Back to Top



Tutorial #3: Cryo-EM XModeScore on PDBid:7JSY (qbdivcon)

Objective: Enumerate/rank protomers/tautomers/flips in Cryo-EM using XModeScore via qbdivcon.

  1. Fetch inputs:
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/7jsy+H.pdb
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/emd_22463.map
  2. Run XModeScore scan:
    qbdivcon \
      --pdbfile 7jsy+H.pdb \
      --sfFile emd_22463.map \
      --experiment cryoEM \
      --resolution 1.8 \
      --XmodeScore \
      --protomers "-1..1" \
      --exploreFlip \
      --protonation skip \
      --engine divcon \
      --qmMethod pm6 \
      --mmMethod amberff14sb \
      --np 8 -v 2 -O
Switch / Arg Value Description
–pdbfile 7jsy+H.pdb Input model (with hydrogens).
–sfFile emd_22463.map Cryo-EM map.
–experiment cryoEM Cryo-EM real-space scoring.
–resolution 1.8 Nominal resolution.
–XmodeScore (flag) Enable XModeScore pipeline (strain + density stats).
–protomers “-1..1” Enumerate charge/protomer range to test.
–exploreFlip (flag) Explore flips/rotamers where applicable.
–protonation skip Do not reprotonate enumerated states (keep input H).
–engine divcon Use internal DivCon scoring/refinement engine.
–qmMethod pm6 QM level for strain/interaction energies.
–mmMethod amberff14sb MM level for environment.
–np 8 Parallel threads.
-v 2 Verbosity level.
-O (flag) Overwrite outputs.

Back to Top



Tutorial #4: Cryo-EM XModeScore on PDBid:7JSY (qmechanic)

Objective: Perform the same style of XModeScore exploration directly via qmechanic, including flip/chirality checks and optional density-driven docking.

  1. Fetch inputs:
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/7jsy+H.pdb
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/emd_22463.map
  2. Run XModeScore (enumeration + scoring):
    qmechanic 7jsy+H.pdb emd_22463.map \
      --resolution 1.8 --experiment cryoEM \
      --ligand /A/I3C/501// \
      --protomer [-1..1] /A/I3C/501// \
      --flip on --chirality on \
      --dock LIGAND opt torsion pocket 100 0.01 \
      --np 8 -h amberff14sb \
      --xmodescore opt all \
      -O -v2
Switch / Arg Value Description
(positional) 7jsy+H.pdb Input PDB with hydrogens.
(positional) emd_22463.map Cryo-EM map.
–experiment cryoEM Use real-space Cryo-EM target.
–resolution 1.8 Nominal resolution for weighting/filters.
–ligand /A/I3C/501// Primary ligand selection used for enumeration/docking.
–protomer [-1..1] /A/I3C/501// Enumerate protomer/charge states for the selection.
–flip on Evaluate flipped orientations where meaningful.
–chirality on Evaluate chiral alternatives if allowed.
–dock LIGAND opt torsion pocket 100 0.01 Density-aware docking mode; torsional optimization in pocket (iterations/tol shown).
–xmodescore opt all Run XModeScore after placement with optimization.
-h amberff14sb Force field context; QM is implied where needed during scoring.
–np 8 Parallel threads.
-O (flag) Overwrite outputs.
-v2 (flag) Verbose logging.

Back to Top



Tutorial #5: Protonation/Preparation of PDBid:7W9W (qmechanic)

Objective: Use DivCon’s preparation pipeline to protonate a Cryo-EM structure and write a new +H model.

  1. Fetch inputs:
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/7w9w.pdb
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/emd_32377.map
  2. Prepare/protonate:
    qmechanic 7w9w.pdb emd_32377.map \
      --resolution 2.0 \
      --experiment cryoEM \
      --prepare \
      -p 7w9w+H.pdb \
      -h amberff14sb \
      -O -v2 --np 2
Switch / Arg Value Description
(positional) 7w9w.pdb Input model (unprotonated).
(positional) emd_32377.map Cryo-EM map.
–experiment cryoEM Enable Cryo-EM real-space context.
–resolution 2.0 Nominal map resolution.
–prepare (flag) Run automated preparation (perception + protonation pipeline).
-p 7w9w+H.pdb Write protonated output PDB.
-h amberff14sb Force field context for preparation.
–np 2 Parallel threads.
-O (flag) Overwrite outputs.
-v2 (flag) Verbose logging.

Tip: Inspect histidine/acid/base states and nearby ions/solvent sites after automated protonation—these influence density-coupled refinement and XModeScore.

Back to Top



Tutorial #6: Protonation + Missing Loops on PDBid:7EFC (qmechanic)

Objective: Extend preparation to include model completion (gaps/truncations) before refinement.

  1. Fetch inputs:
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/7efc.pdb
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/emd_31083.map
  2. Prepare with gap handling:
    qmechanic 7efc.pdb emd_31083.map \
      --resolution 1.7 \
      --experiment cryoEM \
      --prepare all \
      -p 7efc+H.pdb \
      -h amberff14sb \
      -O -v2 --np 2
Switch / Arg Value Description
(positional) 7efc.pdb Input model (may contain gaps/truncations).
(positional) emd_31083.map Cryo-EM map.
–experiment cryoEM Real-space Cryo-EM context.
–resolution 1.7 Nominal resolution.
–prepare all Full preparation (protonation + gap/loop completion as supported).
-p 7efc+H.pdb Write completed/protonated output model.
-h amberff14sb Force field context during prep.
–np 2 Parallel threads.
-O (flag) Overwrite outputs.
-v2 (flag) Verbose logging.

Note: Completing loops improves local electrostatics and reduces spurious strain during later density-coupled refinements.

Back to Top



Tutorial #7: Multi-Blob Docking (Cryo-EM) on PDBid:7JSY (qmechanic)

Objective: Use density “blobs” to guide docking of a ligand fragment ensemble, then refine/evaluate placements.

  1. Fetch inputs:
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/7jsy+HnL5.pdb
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/7jsy+H_lig.pdb
    wget https://raw.githubusercontent.com/quantumbio/QBSupportScripts/master/Tutorials/data/CryoEM/emd_22463.map
  2. Run multi-blob docking + refinement:
    qmechanic 7jsy+HnL5.pdb emd_22463.map \
      --ligand blobs 7jsy+H_lig.pdb \
      -h amberff14sb \
      --experiment cryoEM \
      --resolution 1.8 \
      --np 8 -v2 \
      --dock opt rigid \
      -O
Switch / Arg Value Description
(positional) 7jsy+HnL5.pdb Input model (host protein; may include multiple blob targets).
(positional) emd_22463.map Cryo-EM map.
–ligand blobs 7jsy+H_lig.pdb Use density blobs + candidate ligand PDB for placements.
-h amberff14sb Force field context for scoring/relaxation.
–experiment cryoEM Real-space EM target.
–resolution 1.8 Nominal resolution.
–dock opt rigid Optimize rigid placement into density (torsionless mode).
–np 8 Parallel threads.
-v2 (flag) Verbose logging.
-O (flag) Overwrite outputs.

Back to Top

Output & Validation Metrics

Each refinement/XModeScore run will emit logs and (where requested) refined PDB/MTZ files. We recommend tracking:

  • Map–model agreement: local RSCC; FSC/local resolution (where available).
  • Accuracy via difference-density: ZDD (lower is better).
  • Chemical realism: ligand strain (PM6 kcal/mol) and clashes.
  • XModeScore: combined strain + density ranker (higher is better within the compared set).

Back to Top

Key Resources

Notes & Best Practices:

  • For Cryo-EM workflows on this page, Phenix is not required; all examples run directly with DivCon (qmechanic / qbdivcon).
  • Always verify ligand identity, protonation/tautomer state, nearby ions/solvent, and alternate conformers in ambiguous density.
  • When enumerating states, keep inputs consistent across candidates to avoid preparation-driven artifacts.

Back to Top