Custom Orange3 add‑on developed for Task 2 – Molecular Docking in OCART (Chemoinformatics+ Hackathon 2025).
This plugin bundles two production‑ready widgets that let you execute CmDock inside an Orange workflow and inspect the resulting poses in 3‑D – perfect for quick‑and‑dirty (yet reproducible) virtual screening during the hackathon.
| Widget | Purpose |
|---|---|
OWCMDock |
Batch‑docks ligands with CmDock, writing results to a timestamped folder and returning an Orange.data.Table with scores + mol blocks. |
OW3DPoseViewer |
Displays one docked pose at a time, overlaid on a protein cartoon + VDW surface via 3Dmol.js. |
# 1 — clone the repo
git clone https://gitlab.com/CrtomirP/hackathon_cheminfor_2025.git
cd hackathon_cheminfor_2025/OrangeWidgets # folder that contains setup.py
# 2 — create & activate environment (RDKit + Orange)
conda env create -f environment.yml # provided in the repo
conda activate hackathon_docking
# 3 — install the add‑on in editable mode
pip install -e .
# 4 — launch Orange3
orange-canvasAfter restart, you’ll find the widgets under Chemoinformatics ▶ Docking in the Orange toolbox.
CmDock binary must be on your
$PATH(or callable ascmdock). For local tests grab the latest pre‑compiled release from https://github.com/CristobalAlzate/CmDock.
- Ligand table → any Orange data source with SMILES or MolBlock meta/feature.
OWCMDock- Set Working Directory (results are saved here per run).
- Point to Receptor PRM and Docking PRM files.
- Choose number of poses → Run Docking.
OW3DPoseViewer- Browse to the protein
.pdb/.mol2structure. - Connect the Docked Poses output from the previous widget.
- Use the dropdown to flip through poses/evaluate clashes.
- Browse to the protein
- Pipe the docked table downstream to Orange’s Scatter Plot, Data Table.
Ligands 🡒 OWCMDock 🡒 OW3DPoseViewer / Orange Analytic Widgets
OrangeWidgets/
├── chem_inf_widgets/
│ ├── ow_cmdock.py # docking widget
│ └── ow_3dpose_viewer.py
├── icons/ # SVG/PNG toolbar icons
├── environment.yml # conda spec (Python 3.11, Orange 3.36, RDKit 2025.03)
└── setup.py # entry‑points for Orange add‑on
- Input detection –
OWCMDockauto‑detects the first string‑type column containing "smiles" or "mol" in its name. If none, it falls back to the firstStringVariable. - 3‑D embedding – ligands missing conformers are embedded on‑the‑fly with
AllChem.ETKDG(). - Output props – every numeric SDF property becomes a feature column; non‑numeric props become meta variables; the full pose MolBlock is stored in a "Molecule" meta column.
- Viewer colouring – protein uses a rainbow
spectrumcartoon; ligand sticks radius 0.25 Å; current pose is labelled with “ – pose N”.
| Symptom | Fix |
|---|---|
| “RDKit is required for this widget.” | Conda did not resolve correctly; reinstall environment or conda install -c conda-forge rdkit |
cmdock: command not found |
Ensure CmDock binary is on PATH or symlinked as cmdock. |
| Docking finishes but viewer shows blank | Check that protein_path points to a valid .pdb/.mol2 and that the MolBlock column exists in the docked table. |
MIT – see LICENSE file. Hackathon organisers & participants can reuse and extend freely.
Developed for the EMJM Chemoinformatics+ 2025 Hackathon.