Machine learning prediction of novel anthelmintics
Creators: name: Taki, Aya
name: Kapp, Louis
name: Hall, Ross
name: Gasser, Robin
name: Hofmann, Andreas
Publisher: name: Zenodo
Year: 2024
Subjects: antiparasitics
drug discovery
nematodes
Machine learning prediction

description: # Machine learning prediction of novel anthelmintics

This repository contains scripts that were used to obtain the findings reported in the study "Prediction and prioritisation of novel anthelmintic candidates from public databases by using deep learning and available bioactivity data sets" by Taki et al.

Contents:

[1. Small-molecule bioactivity data used for training and validation](#1)[2. Feature generation, model architecture and training](#2)[3. Classification model](#3)[4. Prediction of activities](#4)[5. Post-processing: MolPort availability](#5)[6. Clustering of compounds with predicted nematocidal activity](#6)

## 1. Small-molecule bioactivity data used for training and validation<a name="1"></a>

The dataset of 15,162 small-molecule compounds used for training and validation has been published as [DOI:10.5281/zenodo.10929251](https://doi.org/10.5281/zenodo.10929251)

## 2. Feature generation, model architecture and training<a name="2"></a>

The scripts used are compiled in the folder [01_model_training](/01_model_training)

| Script                         | Description                                                                                | Input files                                                                                                                     ||--------------------------------|--------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|| `dl_mlp_class_run_training.py` | Wrapper script to run `dl_mlp_class_v1.4.py` with variable network architectures           | CSV-formatted file with compounds in SMILES notation and annotated labels; file with line-separated list of Mordred descriptors || `dl_mlp_class_v1.4.py`         | Main script to perform training or prediction (`mode`) of MLPs with specified architecture | CSV-formatted file with compounds in SMILES notation and annotated labels; file with line-separated list of Mordred descriptors || `mordred_descriptors.txt`      | Line-separated list of Mordred descriptors                                                 | n/a                                                                                                                             |

## 3. Classification model<a name="3"></a>

The best classification model is located in folder [02_model](/02_model).

| File                             | Description                             ||----------------------------------|-----------------------------------------|| `m1002a_label_dictionary.json`   | Classification labels used by the model || `m1002a_model_architecture.json` | MLP archticture                         || `m1002a_model_weights.h5`        | The weights of the trained model        |

## 4. Prediction of acitivities<a name="4"></a>

Classification of compounds with respect to their activity labels was done using the wrapper script `dl_mlp_class_run_prediction.py` and the main script `dl_mlp_class_v1.4.py` located in the folder `model_training`.

A dataset of 14.2 million compounds was downloaded from the ZINC15 database at <https://zinc15.docking.org/> and used as a search library. The downloaded ZINC15 data are not included in this repository.

Files in folder [03_activity_prediction](/03_activity_prediction):

| File                             | Description                                                                          | Input files                                                                                                                                                     | Output files                           ||----------------------------------|--------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------| | `dl_mlp_class_run_prediction.py` | Wrapper script to run `dl_mlp_class_v1.4.py` in `prediction` mode                    | CSV-formatted file of library compounds with SMILES representation or h5-formatted file of encoded compounds; dictionary, architecture and weights of the model | n/a                                    || `prepare_zinc_v3.py`             | Script to encode compounds of the ZINC15 search library                              | CSV-formatted file of library compounds with SMILES representation                                                                                              | h5-formatted file of encoded compounds || `zinc_15_m1002a_active.csv.gz`   | Compounds from the tested ZINC15 search library with predicted label `active`        | n/a                                                                                                                                                             | n/a                                    || `zinc_15_m1002a_weak.csv.gz`     | Compounds from the tested ZINC15 search library with predicted label `weakly active` | n/a                                                                                                                                                             | n/a                                    || `zinc_15_m1002a_inactive.csv.gz` | Compounds from the tested ZINC15 search library with predicted label `none`          | n/a                                                                                                                                                             | n/a                                    |

## 5. Post-processing: MolPort availability<a name="5"></a>

The scripts used in this step are located in the folder [04_post_processing](/04_post_processing) and were executed using Jupyter Notebooks.

| File                | Description                                                            ||---------------------|------------------------------------------------------------------------|| `molport_search.py` | Searches <MolPort> for availability of compounds                       || `patent_scraper.py` | Scrapes the site <https://patents.google.com> for a list of compounds  |

## 6. Clustering of compounds with predicted nematocidal activity<a name="6"></a>

The scripts used in this step are located in the folder [05_clustering](/05_clustering) and were executed using Jupyter Notebooks.

| File         | Description                                                             ||--------------|-------------------------------------------------------------------------|| `k_means.py` | ??? Uses a pandas dataframe as input? Need to describe how to get this. || ???          | ???                                                                     |