Workbench Module LIVE

27 scientific tools across 3 hubs. Computational analysis replacing £250–500K/year in commercial licences. Compute tools by Don Daley.

27
Tools
3
Hubs
15
Containers
9
Pages
6
SPR Models
"Never a black box": Every calculation shows its engine, equation, academic reference, and parameter descriptions. Users always know exactly what algorithm produced their result and what assumptions it makes.

URLs

EnvironmentURLStatus
Productionhttps://app.discoverant.com/workbenchLIVE
Developmenthttps://dev.discoverant.com/workbenchLIVE

Architecture

Two-Server Design (Target State)

ComponentDell 1 — Platform (192.168.1.101)Dell 2 — Compute (192.168.1.102)
RunsFrontend, Backend, Workbench API, PostgreSQL, Redis, nginxDon's Docker services (Combi, Kinetics, Molecular)
RAM~14 GB~2–8 GB depending on active jobs
DataAll compound data, user accounts, filesNone — stateless
If it crashesPlatform unavailable, data safeCompute offline, platform unaffected
Current state: All services running on Dell 1 (single server). Dell 2 to be configured for compute isolation. One environment variable to switch: COMPUTE_HOST=192.168.1.102

Compute Tiers

TierResponseCPU / RAMUXExamples
INSTANT< 1sNegligibleSynchronous, inlineProperty calc, PAINS, Ro5, fingerprints, format conversion
FAST1–30s1–2 cores, 500 MBSpinnerIC50 fitting, Michaelis-Menten, R-group enum, conformers
HEAVY30s – 10m2–4 cores, 2 GBProgress bar + CancelMolecular docking, SPR fitting, ADMET, PaDEL descriptors
INTENSIVE10m – hours4+ cores, 4–8 GBJob queue + SSE + KillQuantum chemistry (PySCF), batch docking, large library enum

Nginx Proxy Routes

location /workbench-api/combi/     → http://127.0.0.1:8083/   # Combi-Hub
location /workbench-api/kinetics/  → http://127.0.0.1:8091/   # Kinetics-Hub
location /workbench-api/molecular/ → http://127.0.0.1:8090/   # Molecular Gateway

All API calls from frontend go through nginx, never direct port numbers. Timeout: 600s for long-running compute.

Combi-Hub — Library Design

Port 8083 · FastAPI + RDKit · github.com/Donald-Daley/adroit_combi-hub
Commercial equivalent: BIOVIA Library Design (£40–100K/yr), Schrödinger CombiGlide
EndpointMethodDescription
/api/enumeratePOSTR-group enumeration → array of SMILES with properties
/api/depictPOSTBatch depiction → single SVG grid
/api/depict_listPOSTIndividual SVG images
/api/propertiesPOSTProperty profiles (MW, logP, TPSA, HBD/HBA, complexity, risks)
/healthGETHealth check

Kinetics-Hub — Curve Fitting, SPR & ADMET

Port 8091 (API) · 8081 (SPR UI) · 8082 (ADMET UI) · FastAPI + SciPy + RDKit
Commercial equivalent: GraphPad Prism (£1–5K/seat), Cytiva BIAevaluation (£10–20K/yr), Optibrium StarDrop (£15–30K/yr)
EndpointMethodDescription
/fit/ic50POST4PL dose-response → IC50, Hill slope, R², fitted curve
/fit/mmPOSTMichaelis-Menten → Km, Vmax, fitted curve
/fit/scatchardPOSTScatchard binding plot
/fit/rosenthalPOSTRosenthal binding plot
/fit/klotzPOSTKlotz binding plot
/fit/sprPOSTSPR sensorgram fitting → ka, kd, KD, chi², residuals
/healthGETHealth check

SPR Models (6)

1:1 Langmuir 1:1 + Mass Transport Heterogeneous Ligand Bivalent Analyte Two-State Conformational Competing Analytes

Molecular-Hub — Computational Chemistry Gateway

Port 8090 (gateway) · 8080 (UI) · 11 microservices · FastAPI + Vina + PySCF + AmberTools + OpenBabel + RDKit + OpenMM + PaDEL + STOUT + OPSIN
Commercial equivalent: Schrödinger Glide/Maestro (£80–300K/yr), Gaussian (£5–30K/seat), Dragon/alvaDesc (£5–15K/yr)
EndpointMethodServiceDescription
/convertPOSTOpenBabelFormat conversion (any → any)
/chargesPOSTAmberPartial charge calculation
/dockPOSTVinaMolecular docking (receptor + ligand)
/conformersPOSTOpenMM/RDKit3D conformer generation
/homo_lumoPOSTPySCFQuantum orbital energies
/fingerprintsPOSTRDKitMolecular fingerprints
/rdkit/descriptorsPOSTRDKitMolecular descriptors from SDF
/padelPOSTPaDELPaDEL descriptor calculation
/structure_to_namePOSTSTOUTSMILES → IUPAC name
/name_to_structurePOSTOPSINIUPAC name → SMILES
/props_topologyPOSTRDKitTopological properties
/props_substructurePOSTRDKitSubstructure properties
/props_shapePOSTRDKitShape properties
/openbabel/formatsGETOpenBabelList supported formats
/healthGETGatewayHealth check

Frontend Pages

RoutePageAPI
/workbenchLanding — 8 workflow cards + search
/workbench/ic50Dose-response IC50 fitting/workbench-api/kinetics/fit/ic50
/workbench/kineticsMichaelis-Menten + transforms/workbench-api/kinetics/fit/mm
/workbench/sprSPR sensorgram fitting (6 models)/workbench-api/kinetics/fit/spr
/workbench/libraryR-group enumeration + filtering/workbench-api/combi/api/enumerate
/workbench/dockingMolecular docking (Vina)/workbench-api/molecular/dock
/workbench/conformers3D conformer generation/workbench-api/molecular/conformers
/workbench/quantumHOMO/LUMO quantum properties/workbench-api/molecular/homo_lumo
/workbench/admetADMET prediction dashboard/workbench-api/kinetics/

Method Transparency — Academic References

Every workflow page includes expandable MethodCard components showing engine, model, equation, parameters, and primary academic reference.

ToolReference
IC50 (4PL)Hill, A.V. (1910). J Physiol 40:iv-vii
Michaelis-MentenMichaelis & Menten (1913). Biochem Z 49:333-369
SPR fittingKarlsson & Fält (1997). J Immunol Methods 200:121-133
Molecular dockingTrott & Olson (2010). J Comput Chem 31:455-461
Conformers (ETKDGv3)Riniker & Landrum (2015). J Chem Inf Model 55:2562-2574
Quantum (PySCF)Sun et al (2018). WIREs Comput Mol Sci 8:e1340
PAINSBaell & Holloway (2010). J Med Chem 53:2719-2740
BRENKBrenk et al (2008). ChemMedChem 3:435-444
Ro5Lipinski et al (1997). Adv Drug Deliv Rev 23:3-25

Container Inventory (15 containers)

ContainerPortStatus
combi_hub:8083RUNNING
adroit_kinetics-hub-backend-1:8091RUNNING
adroit_kinetics-hub-spr-frontend-1:8081RUNNING
adroit_kinetics-hub-admet-frontend-1:8082RUNNING
molhub-gateway:8090RUNNING
molhub-frontend:8080RUNNING
molhub-openbabelinternalRUNNING
molhub-padelinternalRUNNING
molhub-vinainternalRUNNING
molhub-amberinternalRUNNING
molhub-openmminternalRUNNING
molhub-psi4internalRUNNING
molhub-rdkitinternalRUNNING
molhub-stoutinternalRUNNING
molhub-opsininternalRUNNING

Full Port Map

PortServiceNotes
3100discoverant-frontend-prodProduction React
3001discoverant-frontend-devDevelopment React
8000discoverant-backend-prodProduction FastAPI
8001discoverant-backend-devDevelopment FastAPI
5432discoverant-postgresPostgreSQL + Bingo
6379discoverant-redisRedis
8080molhub-frontendMolecular Hub UI (Don's)
8081kinetics-spr-frontendSPR UI (Don's)
8082kinetics-admet-frontendADMET UI (Don's)
8083combi_hubCombi-Hub API + UI
8090molhub-gatewayMolecular Hub API gateway
8091kinetics-backendKinetics API (remapped from 8001)

Deployment Modes

ModeConfigDescription
Bare MetalDEPLOY_MODE=allinoneOn-premises. Docker Compose + pre-dumped DBs. ~30 min install.
AWS CloudDEPLOY_MODE=awsECS Fargate, EC2 PostgreSQL (for Bingo), ElastiCache. Scales to zero.
DistributedDEPLOY_MODE=platformPlatform on Dell 1, compute across multiple nodes. add-compute-node.sh.

Pricing

TierPriceWorkbenchHardware
Foundation£2K/yr per memberNot included1 server
Expert£20–30K/yr per memberAll Workbench tools2 servers (+£300 hardware)
Trial£99/30 daysLimited WorkbenchShared

Compute server hardware (£300 one-time) pays for itself in the first week of an Expert subscription. Competitors charge £80–300K/yr for comparable capabilities.

Operational Runbook

Health Checks

# Direct
curl -s http://localhost:8083/health   # combi
curl -s http://localhost:8091/health   # kinetics
curl -s http://localhost:8090/health   # molecular

# Through nginx
curl -s https://app.discoverant.com/workbench-api/combi/health
curl -s https://app.discoverant.com/workbench-api/kinetics/health
curl -s https://app.discoverant.com/workbench-api/molecular/health

Restart Hubs

# Individual hub restart
cd ~/adroit_combi-hub && docker compose restart
cd ~/adroit_kinetics-hub && docker compose restart
cd ~/adroit_molecular-hub && docker compose restart

# Nuclear option (full down + up)
cd ~/adroit_combi-hub && docker compose down && docker compose up -d
cd ~/adroit_kinetics-hub && docker compose down && docker compose up -d
cd ~/adroit_molecular-hub && docker compose down && docker compose up -d

Kill Stuck Jobs

# Find heavy CPU containers
docker stats --no-stream | sort -k3 -rn | head -5

# Restart specific compute container
docker restart molhub-vina     # stuck docking
docker restart molhub-psi4     # stuck quantum calc

Verified Working (8 Feb 2026)

TestResultStatus
IC50 fitIC50=0.2777, Hill=0.9844, R²=0.9999PASS
Library enumeration4 compounds from scaffold + R-groupsPASS
Conformer generation3 conformers with energiesPASS
All health checks{"ok": true} on all 3 hubsPASS
Production URLapp.discoverant.com/workbench → 200PASS
Development URLdev.discoverant.com/workbench → 200PASS

TODO

PriorityItem
HIGHSet up Dell 2 as dedicated compute server
HIGHMove Don's containers to Dell 2, set COMPUTE_HOST=192.168.1.102
MEDIUMConsolidate 15 containers → 3–4 (after Don validates)
MEDIUMAdd Workbench API orchestrator (FastAPI :8100) for job queue + SSE progress
MEDIUMImplement Redis job queue for Heavy/Intensive tier
MEDIUM"Send to Compound Grid" integration (results → AG Grid columns)
MEDIUMGet Don's feedback on default parameters + SPR auto-recommendation
LATERBuild deployment installer package (install.sh)
LATERImplement licence key mechanism
LATERAdd PK/PD module when Don delivers it

Known Issues

IssueDetail
Kinetics port conflictBackend remapped to 8091 (8001 conflicts with discoverant-backend-dev)
ADMET integrationMay need direct link to :8082 frontend rather than API integration
RAM usage15 containers use 3–5 GB idling — acceptable short term, Dell 2 resolves it