Docking and Plugins – Overview

Docking in Toolbox


Many third party developers have capability to code their own modules. By defining public Toolbox docking API these developers now have the ability to develop modules which can be docked to the standard Toolbox application and to expand the functionalities of the system.

The basic objects in the Toolbox workflow are:

  • parameter calculators
  • profilers
  • metabolism simulators
  • QSAR models


The Toolbox API defines interfaces for all four types of objects, how they are created and used. By implementing this API, the docked third party module may add additional instances of these basic object types.
The docked modules may be used privately by developers or disseminated to other Toolbox users.

Toolbox plugins system


The Toolbox system consists of a client and a server application. The Toolbox API defines modules which are used by the Toolbox server application only.

The modules which implement this API are used on the server side and become part of all tools available in the system.

Developer 1 - API

Developer 2 - API

Toolbox API



The Toolbox API is defined in project Toolbx.Docking.Api. This project refers two other declarative projects: Toolbox.Declarations and LMC.Threading.Control. To implement Toolbox API a third party module needs to refer these tree assemblies.

Docking modules location


To dock a Toolbox module add the assembly to a subfolder of Toolbox server’s Addins subfolder (e.g. “..\Toolbox Server\Bin\Addins\ThirdPartyModuleFolder\ThirdParty.dll”).
Upon starting of the Toolbox server, the plugin system traverses the Addins sub-folder searching for folders containing assemblies (DLLs) that implement the IToolboxAddin interface. When such an implementation is located, the system collects object factories in internal structures for subsequent usage.




The full description of Toolbox docking API is provided in searchable help file.

Developer 3 - API

Example Project


To help third party developers to develop their own Toolbox plugins an example plugin project is developed. The project defines dummy implementation of all four basic types. The purpose of implementations is to display how to create docking modules. The results obtained from these implementations are not useful for any predicting purpose.

Parameter calculator: “(Test) Characters count”

  • calculate count of characters in SMILES

Profiler: “(Test) ONS atoms”

  • Categories: Has oxygen; Has nitrogen; Has sulfur

Metabolism simulator “(Test) ONS-Carbons”

  • If SMILES contains „O” return x metabolites OC<1-x>, where x=count of „O“ in SMILES
  • If SMILES contains „N” return y metabolites NC<1-y>, where y=count of „N“ in SMILES
  • If SMILES contains „S” return z metabolites NC<1-z>, where z=count of „S“ in SMILES
  • Otherwise no metabolites.

QSAR: “(Test) LC50”

  • Predict LC50 for Pimephales promelas = – 2.16 – 0.723 * log Kow, log(mol/L)