Solubility descriptors

Along the steps of this example workflow we will show how to:

  1. RDKit conformer sampling

  2. xTB porperty calculations to determine molecular and atomic properties

  3. Generate a GNN model to predict solubility

Specifically in this example we will calculate descriptors of a set of molecules represented by smiles with the aim of training a Graph Neural Network (GNN) capable of predicting their solubility.

The set of molecules that we will use are in a file named 'solubility.csv' that has the following contents:

code_name,Molecule,ESOL predicted log solubility in mols per litre,Minimum Degree,Molecular Weight,Number of H-Bond Donors,Number of Rings,Number of Rotatable Bonds,Polar Surface Area,measured log solubility in mols per litre,smiles


A jupyter notebook containing all the steps shown in this example can be found in the AQME repository in Github or in Figshare

Step 1: Run CSEARCH (RDKit) on the CSV

python -m aqme --csearch --program rdkit --input solubility.csv --ewin_csearch 1

Step 2 : Run xTB calculations using QDESCP

python -m aqme --qdescp --files "CSEARCH/*.sdf" --program xtb

Step 3 : Create the CSV file with descriptors for the GNN model

This step can be run in bash, python or manually using a spreadsheet editor. The aim is to generate a file named 'solubility_xtb.csv' containing an extra column with the filepaths to the QDESCP generated .json files.

Here we include the python commands to do the step.

import pandas as pd

data =  pd.read_csv(file)
code_to_filepath = 'QDESCP/boltz/{}_rdkit_boltz.json'.format
data['xtbjson'] = data['code_name'].apply(code_to_filepath)

Step 4: Run the to get results

This step requires other files that do not use aqme itself. The other files are available at Figshare . Specifically the files and require to be on the same directory as the file 'solubility.csv' and these two files depend on packages that aqme does not depend on. So before continuing please make sure that you have all the packages required installed as well as the specified files.

We can execute directly the script to obtain the results


For more details on the contents of the script please go to python example ) steps 5a, 5b and 5c.