
LightDock
Protein-protein, protein-peptide, and protein-DNA docking using Glowworm Swarm Optimization
What is LightDock?
LightDock predicts how two macromolecules can form a complex when the binding site is unknown or only partly constrained. It is used for protein-protein, protein-peptide, and protein-DNA docking, including exploratory interface searches and antibody-antigen modeling.
The method comes from the Barcelona Supercomputing Center and is built around Glowworm Swarm Optimization (GSO). Instead of sampling one global search space, LightDock places many local swarms around the receptor surface. Each swarm explores a different region, then the most favorable poses are ranked with the selected scoring function.
LightDock is strongest when broad surface exploration matters. It can also use residue restraints, membrane filters, and Anisotropic Network Model (ANM) modes for limited backbone flexibility, but it is still a docking method for near-rigid structures. Large domain rearrangements, disordered binding partners, and missing interface conformations remain difficult.
How to use LightDock online
Run LightDock online by uploading receptor and ligand structures, or by fetching them from RCSB PDB, then choosing the swarm search, scoring, flexibility, and restraint settings. ProteinIQ returns the ranked complex PDB files exactly as LightDock writes them, the LightDock ranking files, the parsed receptor and ligand structures, the per-swarm simulation results, and pose-level scores with swarm and glowworm identifiers.
Inputs
| Input | Accepted format | Description |
|---|---|---|
Receptor (larger protein) | .pdb, .ent, or PDB ID | First docking partner. In most protein-protein runs this should be the larger or less mobile structure. Maximum file size is 50 MB. |
Ligand (smaller protein/peptide) | .pdb, .ent, or PDB ID | Second docking partner moved during docking. Protein, peptide, and DNA partners are supported when the selected scoring function is appropriate. Maximum file size is 50 MB. |
Job name | Text | Optional label used to identify the run in job history. |
LightDock works best with cleaned coordinate files. Missing residues, nonstandard atom naming, alternate conformations, and unresolved chains can create failed setup steps or misleading poses. For structure repair before docking, use PDB Fixer.
Core settings
| Setting | Default | Description |
|---|---|---|
Number of swarms | 0 | Search-space divisions around the receptor. 0 lets LightDock estimate the number of swarms from receptor solvent-accessible surface area. Use a fixed value only when a run needs controlled sampling. |
Glowworms per swarm | 200 | Number of search agents in each swarm. Higher values increase local sampling depth and memory use. |
Simulation steps | 100 | GSO optimization iterations. More steps give each swarm more time to converge, with longer runtime. |
Number of poses to return | 10 | Top ranked complex PDB files returned after global ranking. Range 1 to 50. |
Scoring function | FastDFIRE | Score used during simulation and ranking. FastDFIRE and DFIRE are the same DFIRE potential in C and Python; DFIRE2 is its successor. pyDockDNA targets protein-DNA docking, and DDNA is a knowledge-based potential for protein-protein and protein-DNA complexes. SwarmDock is the SwarmDock energy function, and PISA is the Viswanath and Elber atomic potential, not the PDBePISA interface service. TOBI and MJ3h do not support ANM flexibility. |
Weighted scoring configuration | Empty | Optional LightDock multi-scoring configuration. Leave empty to use the selected scoring function directly. |
Advanced settings
| Setting | Default | Description |
|---|---|---|
Receptor flexibility (ANM modes) | 0 | Number of receptor ANM modes. 0 keeps the receptor rigid. LightDock uses 10 modes when ANM is enabled without a count. |
Ligand flexibility (ANM modes) | 0 | Number of ligand ANM modes. 0 keeps the ligand rigid. |
Ignore hydrogens | false | Removes hydrogen atoms before setup. This is commonly enabled with FastDFIRE because many hydrogen atoms are not parameterized by that scoring function. |
Ignore OXT atoms | false | Removes terminal OXT atoms. Useful when a scoring function or input preparation step does not handle terminal oxygens consistently. |
Ignore water | false | Removes water molecules. Enable when crystallographic waters are not part of the intended docking model. |
Local minimization | false | Enables LightDock local minimization during GSO simulation. This can improve local contacts but adds runtime. |
Starting-points seed | 324324 | Random seed for initial swarm placement. |
GSO seed | 324324 | Random seed for the GSO simulation. |
ANM seed | 324324 | Random seed for ANM extent sampling when flexibility is enabled. |
Receptor ANM RMSD | 0.5 | RMSD interval for receptor ANM conformations. |
Ligand ANM RMSD | 0.5 | RMSD interval for ligand ANM conformations. |
Translation step | 0.5 | Normalized translation step used during GSO movement. |
Rotation step | 0.5 | Normalized rotation step used during rotational updates. |
Normal-modes step | 0.5 | Normalized step for ANM mode amplitudes. |
GSO parameters file | Empty | Optional glowworm.conf content (rho, gamma, beta, luciferin, vision range, and neighbor limits) passed to the simulation. Leave empty for LightDock's default GSO parameters. |
Sampling and restraints
| Setting | Default | Description |
|---|---|---|
Surface density | 50 | Density used when automatic swarm placement estimates how many swarms to create. |
Swarm radius | 10 | Initial local search radius in angstroms. |
Fixed swarm distance | 0 | Optional fixed distance from the receptor surface. 0 lets LightDock estimate distance from ligand size. |
Swarms per restraint | 20 | Maximum swarms kept around each receptor restraint. |
Dense sampling | false | Uses denser restraint-swarm filtering. |
Cluster generated poses | false | Runs BSAS clustering before global ranking. This can be substantially slower because LightDock must generate conformations for all glowworms. |
Restraints file | Empty | Optional LightDock restraint content. Lines use R or L for receptor or ligand, then residue identity and an active, passive, or blocked label. Example: R A.ALA.42 A. |
Flip restrained poses | false | Applies LightDock's 180-degree flip to half of the starting poses when restraints are used. |
Membrane filter | false | Enables LightDock membrane filtering. The receptor must contain MMB membrane beads, either in the uploaded file or created with the option below. |
Transmembrane filter | false | Enables transmembrane filtering. Needs the same membrane beads. |
Write starting positions | false | Writes LightDock's per-swarm starting_positions_*.pdb and starting_poses_*.bild files, returned in the swarm results archive. |
Create membrane beads | false | Runs lgd_create_membrane.py on the receptor and appends the beads to it, as in the LightDock membrane tutorial. The receptor must be oriented with the membrane normal along the z axis. |
Membrane anchor residue | Empty | Residue such as A.TRP.30 whose CA height sets the bead layer. Required when creating beads. |
Membrane angular resolution, radius resolution, radius offset | 15, 4, 30 | Bead spacing in degrees and angstroms, and how far the layer extends beyond the receptor. |
Restraint filtering
These options run lgd_filter_restraints.py after ranking, the final step of LightDock's restraint tutorials. Only poses that satisfy the required fraction of restraints are returned, in scoring order. Filtering generates a conformation for every glowworm, so it adds runtime.
| Setting | Default | Description |
|---|---|---|
Filter poses by restraint satisfaction | false | Enables filtering. Requires a restraints file. |
Minimum fraction of restraints satisfied | 0.4 | Poses must satisfy at least this fraction of the restraints. LightDock has no default; 0.4 is the value used in the LightDock tutorial. |
Interface cutoff | 5 | Distance in angstroms that counts a restrained residue as in contact. |
Receptor chains, Ligand chains | Empty | Chain IDs of each partner in the docked complexes, comma separated. Required when filtering. |
Restraints used for filtering | Active | Count active restraints, active and passive restraints, or passive restraints only. |
Receptor is a nucleic acid, Ligand is a nucleic acid | false | Select that partner as nucleic acid instead of protein when measuring contacts. |
Pricing
LightDock is billed by runtime at 70 credits per minute while LightDock is working, and it needs a Plus or higher plan.
- The estimate before you submit comes from the swarm, glowworm, step, scoring, and flexibility settings. Automatic swarms are estimated as
400because LightDock only counts them during setup, so estimates for small receptors run high. - The final charge follows the measured runtime and stays within the maximum spend you set when submitting.
- If the maximum spend or your credits run out first, LightDock is stopped and the job is charged for the time used. LightDock has no partial ranking, so no complexes are returned; the result keeps the setup files and each swarm's GSO snapshots.
- Jobs that fail are not charged.
Results
LightDock returns one PDB file for each selected complex, exactly as LightDock writes it: the receptor atoms followed by the ligand atoms in the same coordinate frame, with the chain IDs from your input files. If both partners use the same chain ID, the complex keeps that ID for both; rename one input chain before docking if you need them distinguished.
The spreadsheet is sorted by LightDock's rank_by_scoring.list order, or by rank_filtered.list when restraint filtering is on. The top row is the best ranked pose for the selected scoring function.
| Column | Description |
|---|---|
Rank | Global rank from rank_by_scoring.list. Rank 1 is the best pose in the returned set. |
Score | Selected LightDock scoring value. Higher is better. The numeric scale depends on the scoring function, so compare scores within the same run and scoring setup. |
Restraints satisfied | Fraction of restraints the pose satisfies, from rank_filtered.list. Shown only when restraint filtering is on. |
Swarm | Search region that produced the pose. Multiple high-ranking poses from the same swarm suggest local convergence around one interface. |
Glowworm | Search agent identifier within the swarm. |
Luciferin | Internal GSO quality value used by glowworm movement. |
Neighbors | Number of neighboring glowworms considered during movement. |
Vision range | Local radius used for glowworm neighbor detection. |
File | Downloadable complex PDB file. |
Additional downloadable files include:
rank_by_scoring.list: Global ranking by the selected scoring function.solutions.list: Combined LightDock solutions file.rank_by_luciferin.list: Ranking by GSO luciferin value.rank_by_rmsd.list: LightDock's RMSD ordering. Without a reference evaluation file every RMSD is-1, so this matches the solutions order.setup.json: LightDock setup configuration.lightdock.info: Simulation metadata.swarm_centers.pdb: Initial swarm centers around the receptor.lightdock_receptor.pdbandlightdock_ligand.pdb: Structures parsed by LightDock during setup.lightdock_swarm_results.tgz: Each swarm's finalgso_<steps>.outwith every glowworm's pose and score,cluster.reprfiles when clustering is on, and starting-position files when requested.rank_filtered.list: Poses that passed restraint filtering with their satisfied fraction, when filtering is on.membrane.pdb: Membrane beads created from the anchor residue, when requested.
The ranking files also carry RMSD and Clashes columns. LightDock fills them only from a reference evaluation file, so in these runs they stay at -1 and 0 and do not describe steric clashes.
How LightDock works
LightDock treats docking as many local optimization problems. The receptor surface is sampled with swarms, and each swarm contains a population of glowworms. A glowworm encodes a possible ligand pose through translation, rotation, and optional ANM deformation parameters.
During simulation, glowworms move toward nearby glowworms with better luciferin values. Since movement is local to each swarm, different regions of the receptor surface can converge on different candidate interfaces. This is useful for blind docking because the method does not need one predefined binding pocket.
The scoring function is part of the search, not only a final rescoring step. FastDFIRE, DFIRE, DFIRE2, pyDock, PISA, SwarmDock, pyDockDNA, DDNA, and several residue-level potentials are available. A multi-scoring configuration can combine more than one scoring function, but memory use rises because each glowworm keeps scoring state for each configured function.
ANM flexibility adds low-frequency backbone deformation modes through ProDy. This is not molecular dynamics. It lets receptor and ligand structures move along coarse collective modes, which can help with loop shifts or moderate interface adjustment, but it will not solve binding events that require a different folded state.
Interpreting LightDock results
The rank order matters more than the raw score. A score from a FastDFIRE run should not be compared directly with a score from a PISA, SwarmDock, or DNA-specific run. Even within one scoring function, absolute values depend on interface size, atom composition, and preprocessing choices.
A practical first pass is:
- Inspect the top
5to10poses in the 3D viewer. - Prefer poses with consistent interfaces across several ranks or swarms.
- Check the interface for steric overlap in the viewer, even when a pose has a strong score.
- Check whether the proposed interface is biologically plausible: accessible in the unbound structures, compatible with known domains, and not blocked by membrane, glycans, or missing partners.
- Re-run with restraints when mutagenesis, cross-linking, epitope mapping, or prior structural data suggests likely interface residues.
For blind ab initio docking, LightDock benchmark performance is modest because the search space is large. The original LightDock study reported better results when flexibility was enabled, and the information-driven LightDock work showed much stronger success rates when interface restraints were available. In practice, blind runs are best treated as hypothesis generation rather than final structural evidence.
When to use LightDock vs alternatives
| Tool | Best fit | Main tradeoff |
|---|---|---|
LightDock | Broad protein-protein, protein-peptide, or protein-DNA surface search with optional restraints and ANM flexibility | Strong exploratory sampling, but results need careful ranking and structural inspection |
| DFMDock | Fast structure-only protein-protein docking with learned rigid-body sampling | Good for quick unrestrained screening, but does not model explicit LightDock-style swarms or ANM flexibility |
| AF2Dock | AlphaFold2-guided protein-protein docking from two input structures | Better when AF2-style refinement and confidence outputs are desired |
| GeoDock | Learned geometry-aware protein complex prediction | Better when a fast geometric deep-learning model is the preferred starting point |
| ColabDock | AlphaFold2-style complex prediction guided by restraints | Useful when the workflow depends on AlphaFold-derived confidence and restraint satisfaction |
| EquiDock | Very fast rigid protein-protein pose prediction | Lightweight and fast, but returns less search diversity |
| DockQ | Evaluating a predicted complex against a known reference complex | Validation tool, not a docking generator |
| PPAP | Predicting affinity for a protein-protein complex | Scoring tool, not a docking generator |
For small-molecule docking, use AutoDock Vina, GNINA, or DiffDock. LightDock is designed for macromolecular partners.
Troubleshooting
Input extraction failed: Confirm that both receptor and ligand are valid PDB or ENT structures.LightDock setup failed: The message includes LightDock's own error, such as a restraint residue that is not in the structure. Check atom records, chain IDs, residue names, alternate conformations, and missing coordinates. Removing waters, hydrogens, orOXTatoms often helps with FastDFIRE runs.LightDock membrane creation failed: The anchor residue was not found. UseChain.ResidueName.ResidueNumber, such asA.TRP.30.No ranked LightDock poses found: Run without clustering, and confirm that restraints do not exclude all relevant swarms.LightDock restraint filtering kept no poses: No pose reached the required fraction. Lower the fraction, or check that the receptor and ligand chain IDs match the complexes.No complex structures generated: Lower the number of swarms or steps for a quick diagnostic run, then increase sampling once setup succeeds.LightDock execution failed: Retry with defaults: automatic swarms,200glowworms,100steps,FastDFIRE, no clustering, and no optional filters. Add advanced options one at a time.
Related tools
AF2Dock
Structure-based protein-protein docking with AF2Dock flow-matching refinement
ColabDock
Protein-protein docking guided by experimental restraints using AlphaFold2
DFMDock
Dock protein-protein complexes with diffusion-based sampling and learned energy ranking.
DiffDock-PP
Rigid protein-protein docking with a diffusion model and confidence ranking.
EquiDock
Dock rigid protein-protein complexes using SE(3)-equivariant geometric modeling.
GeoDock
Flexible protein-protein docking with a multi-track iterative transformer.
ParaSurf
Surface-based deep learning for paratope-antigen interaction prediction
RAPiDock
All-atom protein-peptide docking with unranked samples.
AutoDock-GPU
Dock ligands with AutoDock4 scoring, CUDA acceleration, and flexible receptor sidechains.
PandaDock
Physics-based molecular docking with CPU-optimized hierarchical algorithms