Package: gendock
GenDockGenDock is a Python script that can either randomly generate molecules or use a preexisting library of molecules to screen against a macromolecule (or multiple macromolecules) using AutoDock Vina, to aid in finding new ligands for receptor binding. Machine learning alogrithms are also being designed to aid in the identification process.GenDock isnotdesigned to give highly detailed computational analysis for the ligand-receptor binding, butisdesigned for high throughput screening, the results of which can then be taken on for further analysis.SetupGenDock is only supported on macOS and Linux. Windows users can install Ubuntu using WSL and use GenDock from there.I recommend usingAnacondato setup your python environment. GenDock depends upon the installation ofautodock-vina,rdkit,openbabel, andscikit-learn- all of which can be handled by Anaconda and should installed to a single environment.Preparing ReceptorsSave your macromolecules/receptors in thereceptordirectory as[name].pdbqtand the Autodock Vina configuration files must then be named[name]-config.txt. These should be edited with your vina properties, grid size and location etc. I recommend using AutoDock Tools to find out the suitable grid size and location for your receptor, as well as saving to a.pdbqtfile format. There is already a default config file namedreceptor1-config.txtand the parameters are set as:receptor = receptor/receptor.pdbqt

center_x =  0
center_y =  0
center_z =  0

size_x = 30
size_y = 30
size_z = 30

num_modes = 10Running GenDockEnsure you run gendock from your working directory i.e. one that contains receptors in a directory namedreceptors. The following commands should be followed to run GenDock:import gendock as gd
gd.generate(name, target_mass, nligands=X, mol=rdkit.Chem.rdchem.Mol)
gd.dock(name, ligand_num=Y, receptors=['receptor1', 'receptor2', 'receptor3'])where:nameis the name of the experiment, all files will be saved thedatadirectory. GenDock will create a directory with the name of the experiment that is given by this argument (if one does not already exist).target_massis the appproximate mass of the molecules that you want to generate.optional,nligandsis the number of molecules you want to generate, if an argument is given, all possible molecules will be generated (this can range into the tens of millions of molecules -be warned). If a number is given, then that amount of molecules will be randomly chosen from the possible molecules that could be generated.optional,molis an RDKit mol object that contains wildcard atoms i.e '[*]' atoms. For example one could generate an RDKit mol by the following:from rdkit import Chem
import gendock as gd
m = Chem.MolFromSmiles('[*]c1cccc[*]c1')
gd.generate('test', 150, mol=m)optional,receptorsare the names of the receptor files, i.e. 1ELN (do not include the '.pdbqt' in this). This must be a list, even if you are only using one receptor.optional,ligand_numis the ligand that you want to start with. This is useful if you have generated 1000 ligands and then got cut off after docking 500 of them. Set this to 501 and it will carry on from where it left off.ResultsGenDock will save a CSV file in thedata/exp_name/directory that will contain the SMILES string of the ligand as well as other chemical properies, and the best binding energy for each receptor. GenDock stores the results of the AutoDock Vina screening in thevina_filesdirectory. Inside each directory is both the PDBQT files and the LOG file. These are named asligand_X-r.pdbqt or .txtwhere X is the ligand number and r is the receptor name.Functional GroupsFunctional groups can be found inscripts/functional_groups.pyas a list of SMILES strings. They are imported ass_list,nt_listandt_listand can be edited just like any another python list before running gendock.import gendock as gd
gd.s_list.append('CCC[*]')
gd.s_list.remove('CCC[*]')ReferencesAutoDock Vina:J Comput Chem.2010Jan 30;31(2):455-61.doi:10.1002/jcc.21334OpenBabel:J. Cheminf.2011, 3, 33.doi:10.1186/1758-2946-3-33RDKit: Cheminformatics and Machine Learning Software.RDKit.org