Advanced Features¶
Ring Conformer Sampling¶
Improve docking of compounds containing saturated rings by sampling multiple starting conformers.
easydock -i input.smi -o output.db --program vina --config config.yml -c 4 --ring_sample
How it works:
- Generate multiple representative conformers for saturated rings
- Dock each initial conformer independently
- Store only the best scoring conformer
Performance Impact
- Increases computational time proportionally to the number of rings
- May result in much longer simulation times for compounds with multiple saturated rings
Containerized Programs¶
Non-server docking programs (Gnina, QVina, etc.) can be launched through a container by writing the full container command as script_file. For example, Gnina in Apptainer:
script_file: apptainer exec -B /path/to/data:/path/to/data container.sif gnina
protein: /path/to/data/protein.pdbqt
protein_setup: /path/to/data/grid.txt
exhaustiveness: 8
scoring: default
cnn_scoring: rescore
cnn: dense_ensemble
n_poses: 10
addH: False
ncpu: 1
seed: 0
Important: Mount directories containing input files:
- Apptainer:
-B /path/to/data:/path/to/data - Docker:
-v /path/to/data:/path/to/data
Server-Based Docking Containers
For server-based docking programs (CarsiDock, SurfDock, Vina-GPU server), script_file can be just a bare .sif path or Docker image name — EasyDock auto-builds the launch command, auto-mounts config paths, and auto-injects GPU flags. See Usage → Server-Based Docking and Server Protocol → Container Interface Conventions for details.
Distributed Computing¶
Distribute docking across multiple servers using Dask.
Setup¶
1. Create hostfile:
With SLURM:
srun hostname | sort | uniq > NODEFILE
With PBS:
# Use $PBS_NODEFILE directly
2. Start Dask cluster and run docking:
dask ssh --hostfile $PBS_NODEFILE --nworkers 15 --nthreads 1 &
sleep 10
easydock -i input.smi -o output.db --program vina --config config.yml \
--sdf --hostfile $PBS_NODEFILE --dask_report
Parameters:
--hostfile: File with server IP addresses--nworkers: Number of workers per host (molecules docked in parallel per host)--nthreads: Can be any value; actual CPUs taken from config--dask_report: Generate HTML performance report
Configuration Requirements
- File limit: Increase open file limit to at least 2× total workers
- SSH access: Ensure SSH connectivity with default settings between all nodes
- Shared filesystem: All nodes must access the same database file
Check file limit:
ulimit -n
Reusing Databases¶
Create Clean Copy¶
Create a copy of an existing database removing all docking data:
make_clean_copy -i original.db -o clean.db
This preserves: - Initialized molecules - Stereoisomers - Protonation states - Setup parameters
Use the clean copy for docking with different proteins, programs or settings skipping the ligand initialization stage.
Database Upgrading¶
Databases created before version 1.3.0 use an older internal schema. When you open such a database, EasyDock detects the schema version and prompts you to upgrade:
Database 'output.db' uses schema version 0 (current: 1).
Upgrade now? [y/N] (auto-abort in 2 minutes):
Type y and press Enter to proceed. The upgrade rewrites the setup table to the new key/value format; all molecule data and docking results are preserved. If no response is received within 2 minutes, the run aborts automatically.
Boron-Containing Compounds¶
EasyDock automatically handles boron-containing compounds for programs that don't natively support boron:
- Replaces boron with carbon before docking
- Returns boron atoms after docking
No special flags needed - this happens automatically as implemented in individual docking pipelines.
Custom Configuration Arguments¶
Two ways to pass arguments to external programs in config.yml:
Method 1: Individual Config Entries¶
exhaustiveness: 8
n_poses: 5
Limited set of parameters
This provides access to a limited set of parameters
Method 2: In script_file Value¶
script_file: /path/to/qvina2 --exhaustiveness 8 --num_modes 5
Important
Each argument should be specified in only ONE way, not both. Arguments in script_file take precedence.