Controlling the Speed of Rowan's Docking

by Corin Wagen · Sept 22, 2025

A painting of the canal in front of the Venetian arsenal

View of the Entrance to the Venetian Arsenal, by Canaletto (1732)

Rowan uses AutoDock Vina to run docking (with an exhaustiveness of 8 by default). Through Rowan's Python API there are three readily accessible options that can be selected to tune how docking is run:

By default, docking calculations run through the web interface have all of these options enabled, which makes docking calculations more thorough but slower. This is ideal for cases in late-stage optimization when a thorough assessment of a given compound is desired, but makes Rowan's docking too slow for many high-throughput screening contexts; for virtual screens it often makes sense to disable some or all of these steps.

To illustrate the effects that each of these settings can have, we ran a bunch of docking calculations. We selected PDE4 as our protein target (based on a sanitized 1XM6 structure) and docked the known PDE4 inhibitor rolipram against it.

Here's the script we used, which takes a local sanitized PDB file with a known pocket and iteratively tries different combination of settings:

from pathlib import Path
import rowan
from rowan.protein import upload_protein
import stjames

rowan.api_key = "rowan-sk-your-secret-key-here"

protein = upload_protein("PDE4 cleaned from 1XM6", Path("pde4.pdb"))

pocket_specification = [[46.37, 1.64, -9.88], [19.2, 13.37, 17.72]]

ligand_smiles = "COc1ccc([C@@H]2CNC(=O)C2)cc1OC1CCCC1"
ligand = stjames.Molecule.from_smiles(ligand_smiles)

def run_docking(
    do_optimization: bool,
    do_conformer_search: bool,
    do_pose_refinement: bool,
) -> tuple[int, int, float, float]:
	"""
	Run a docking calculation through Rowan and return various metrics.
	"""
    workflow = rowan.submit_docking_workflow(
        protein,
        pocket_specification,
        initial_molecule=ligand,
        do_csearch=do_conformer_search,
        do_optimization=do_optimization,
        do_pose_refinement=do_pose_refinement,
    )

    workflow.wait_for_result()
    workflow.fetch_latest(in_place=True)

    num_conformers = len(workflow.data["conformers"])
    num_poses = len(workflow.data["scores"])
    best_score = min(s["score"] for s in workflow.data["scores"])
    total_time_s = workflow.elapsed

    return num_conformers, num_poses, best_score, total_time_s

for do_optimization in [True, False]:
    for do_conformer_search in [True, False]:
        for do_pose_refinement in [True, False]:
            num_confs, num_poses, best_score, time_s = run_docking(
              do_optimization,
              do_conformer_search,
              do_pose_refinement
            )

            print("Docking run finished:")
            print(f"\tOptimization? {do_optimization}")
            print(f"\tConformer search? {do_conformer_search}")
            print(f"\tPose refinement? {do_pose_refinement}")
            print(f"\t{num_confs} conformers, {num_poses} output poses")
            print(f"\tBest score: {best_score:.3f}")
            print(f"\tTotal elapsed time: {time_s:.1f} seconds")

Running the above script gave a clear comparison of each docking method's performance, which we organized into the below table. (We excluded rows where do_csearch is set to True and do_optimization is False because optimization is automatically run in these cases—a message is printed in the logfile when this happens.) There are obviously slight run-to-run variations in timing and outputs, but we've found that the values shown below are pretty consistent, and that timings generally only vary by a second or two per run.

#Optimization?Conformer search?Pose refinement?ConformersPosesBest ScoreTime (s)
1YesYesYes520-6.842194.1
2YesYesNo519-6.828112.6
3YesNoYes14-6.63029.7
4YesNoNo14-6.63020.2
5NoNoYes14-6.72729.3
6NoNoNo14-6.72717.6

Looking at the above data, a few conclusions are apparent:

The fastest possible settings (row 6) allow a full protein–ligand docking calculation to be run in under 20 seconds, which is quick enough for most high-throughput screening applications.

Banner background image

Start running calculations in minutes!

Our platform lets you submit, view, analyze, and share calculations using cutting-edge methods trusted by hundreds of leading scientists. We give every new user 500 free credits to start, plus more every week. Making an account and running your first calculation takes only seconds: start using Rowan today!

Start computing →

What to read next

NMR Spectroscopy

NMR Spectroscopy

the importance of NMR spectroscopy; the languorousness typical of state-of-the-art methods; MagNET, a new model, and its Rowan workflow; testimonials and case studies; new agent benchmarks
Jul 23, 2026 · Corin Wagen and Eli Mann
Testing Rowan-Enabled Agents on DrugDiscoveryBench

Testing Rowan-Enabled Agents on DrugDiscoveryBench

How access to Rowan's computational tools affects scientific agents' performance on early-stage drug-discovery tasks.
Jul 21, 2026 · Eli Mann
Automating Transition-State Search

Automating Transition-State Search

strings and bands; interpolating between states; searching for transitions; confirmation; Vicena integration; recent blogs
Jul 20, 2026 · Jonathon Vandezande and Corin Wagen
Case Studies with Rowan's Hydration-Site Analysis

Case Studies with Rowan's Hydration-Site Analysis

Benchmarking Rowan's hydration-site detection on five documented protein–ligand complexes.
Jul 16, 2026 · Ishaan Ganti and Corin Wagen
What to Do with a Pose

What to Do with a Pose

A few helpful ideas for further analysis or calculations to run.
Jul 15, 2026 · Corin Wagen
Well-Prepared Proteins and How to Use Them

Well-Prepared Proteins and How to Use Them

better protein preparation through ML; Gnina & covalent docking; MM/GBSA refinement; fast MD and more trajectory analysis; synthetic RBFE intermediates; resubmitting FEP graphs without rerunning legs
Jul 9, 2026 · Ari Wagen, Nick Casetti, Zachary Fried, Corin Wagen, Ishaan Ganti, and Elias Mann
Symmetry, X-Ray Diffraction (XRD), Band Structures, and Elastic Tensors

Symmetry, X-Ray Diffraction (XRD), Band Structures, and Elastic Tensors

symmetry and asymmetry; reflections on X-rays; structure, both electronic and crystalline; stressing crystals
Jun 23, 2026 · Jonathon Vandezande and Raphael Stone
openconf and other Open-Source Projects

openconf and other Open-Source Projects

enabling & being enabled by open science; lacunæ in open-source conformer generators; a fast Monte Carlo–powered solution; macrocycles; obtaining topologies from 3D coordinates; fast Butina splitting
Jun 17, 2026 · Corin Wagen, Nick Casetti, Jonathon Vandezande, and Eli Mann
OpenFold3 and Co-Folding with Templates

OpenFold3 and Co-Folding with Templates

a new and different co-folding model; co-folding conditioned with user-specified templates; protein structure overlays; support for the mmCIF file format
Jun 1, 2026 · Ari Wagen
Quantum ESPRESSO & Academic FEP Access

Quantum ESPRESSO & Academic FEP Access

why one should run plane-wave DFT; how to configure and run Quantum ESPRESSO in Rowan; a graphitic case study; FEP now available for academic groups; a fast way to do Butina splitting on big datasets
May 28, 2026 · Jonathon Vandezande and Raphael Stone