IC50 Prediction
4 min readOct 18, 2020
IC50 is the concentration at which 50 percent inhibition occurs. It is useful for designing inhibitors.
First let´s create a function that calculates lipinski druglikeness. Lipinski’s rule states that, in general, an orally active drug has no more than one violation of the following criteria:
- No more than 5 hydrogen bond donors (the total number of nitrogen–hydrogen and oxygen–hydrogen bonds)
- No more than 10 hydrogen bond acceptors (all nitrogen or oxygen atoms)
- A molecular mass less than 500 daltons
- An octanol-water partition coefficient[6] (log P) that does not exceed 5
from rdkit import Chem
from rdkit.Chem import Descriptors, Lipinski
import pandas as pd
import numpy as np
from rdkit import Chem
from rdkit.Chem import Descriptors, Lipinski
dataset = open('smiles.txt', "r" )
dataset = [ line.rstrip().split(",") for line in dataset ][0:]
mols = [ Chem.MolFromSmiles( line[0] ) for line in dataset ]
def lipinski(moldata, verbose=False):
baseData= np.arange(1,1)
i=0
for mol in moldata:
desc_MolWt = Descriptors.MolWt(mol)
desc_MolLogP = Descriptors.MolLogP(mol)
desc_NumHDonors = Lipinski.NumHDonors(mol)
desc_NumHAcceptors = Lipinski.NumHAcceptors(mol)
row = np.array([desc_MolWt,
desc_MolLogP,
desc_NumHDonors,
desc_NumHAcceptors])
if(i==0):
baseData=row…