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.
Toolbox API
Structure
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.
Container
Toolbox addins need to be packaged for distribution into a single *.addin file. Description of the container format can be found in the link bellow.
SDK
Documentation
The full description of Toolbox docking API is provided in searchable help file.
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)