← Back to blog

The Software Engineering Behind InstaDock v2

Published: Jul 25, 2025 • Author: Yash Mathur

From proof of concept to an actual application

There is a kind of madness in turning a scientific prototype into real software. The first version of InstaDock worked but only in the way prototypes usually do. It was fragile, messy, and tied together with the programming equivalent of duct tape. Version 2 was not an update. It was a rebuild. I had to make something that could scale, survive, and not set itself on fire at the sight of a large dataset.

Teaching the backend some manners

The old backend was like a cluttered lab bench. It needed structure, boundaries, and a deep cleaning session. I gutted and refactored the entire thing to enforce a clean separation between the scientific logic and the UI. That decision sounds simple but it required reorganizing the ecosystem of dependencies that power InstaDock.

Under the hood, InstaDock v2 is a lively party of libraries. RDKit and OpenBabel handle molecular parsing and conversions, pyKVFinder predicts binding cavities, and PDBFixer wrestles unruly protein structures into submission. Users can choose from multiple scoring functions such as AutoDock Vina, QuickVina-W, and AutoDock-GPU. On top of that, the application carries a custom-built ADMET prediction module that stacks CatBoost with a DMPNN. Hyperparameters were tuned with Optuna, which ran like a very patient robot scientist.

UX matters more than scientists like to admit

A tool can be scientifically brilliant and still be a pain to use. The UI in v2 had to feel intuitive, not like a control panel from a nuclear submarine. PyQt 5.15 became the backbone of a redesigned interface that lets users set up docking runs, analyze results, and fetch AI predictions without digging through menus. Every major feature now lives where users expect it to be.

Packaging, or how to fit a hydra in a shoebox

Creating a standalone, cross-platform executable for complex scientific software is not glamorous. It is slow, frustrating, and sometimes feels personal. Bundling PyTorch, RDKit, and everything else into something that can be double-clicked is like trying to stuff a sentient hydra into a very small box.

Platform-specific binaries needed to be managed carefully, dependency conflicts had to be charmed into silence, and the final build had to install without terrifying users. The installer now works on Windows and Ubuntu and hides the messy complexity behind a friendly icon. It looks simple on the surface because the chaos is buried underneath.

InstaDock v2 is the product of science meeting engineering. The algorithms may power it, but the structure, design, and polish (and a lot of coffee) make it something people actually want to use.

PS. If anyone tells you Python packaging is easy, they are either a wizard or lying through their teeth.

InstaDockPythonSoftware DevGUI

Share: https://ym59.github.io/blogs/posts/the-software-engineering-behind-instadock-v2.html