-
-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SS-184: Predict New Rings to Pass FDA Trials Phase III #315
Comments
Read this: https://plotly.com/python/distplot/ Code to Process Rings in Drugs: from rdkit import Chem
from rdkit.Chem import Descriptors
import progressbar
if __name__ == '__main__':
smiles_list = []
molecules = [ Chem.MolFromSmiles(smiles) for smiles in smiles_list ]
results = {
"Lipinski Rule of 5": 0,
"Ghose Filter": 0,
"Veber Filter": 0,
"Rule of 3 Filter": 0,
"REOS Filter": 0,
"Drug-like Filter": 0,
"Passes All Filters": 0,
}
print ("Molecule Database Length: " + str(len(molecules)))
for i in progressbar.progressbar(range(len(molecules))):
molecule = molecules[i]
if molecule:
lipinski = False
rule_of_3 = False
ghose_filter = False
veber_filter = False
reos_filter = False
drug_like_filter = False
molecular_weight = Descriptors.ExactMolWt(molecule)
logp = Descriptors.MolLogP(molecule)
h_bond_donor = Descriptors.NumHDonors(molecule)
h_bond_acceptors = Descriptors.NumHAcceptors(molecule)
rotatable_bonds = Descriptors.NumRotatableBonds(molecule)
number_of_atoms = Chem.rdchem.Mol.GetNumAtoms(molecule)
molar_refractivity = Chem.Crippen.MolMR(molecule)
topological_surface_area_mapping = Chem.QED.properties(molecule).PSA
formal_charge = Chem.rdmolops.GetFormalCharge(molecule)
heavy_atoms = Chem.rdchem.Mol.GetNumHeavyAtoms(molecule)
num_of_rings = Chem.rdMolDescriptors.CalcNumRings(molecule)
# Lipinski
if molecular_weight <= 500 and logp <= 5 and h_bond_donor <= 5 and h_bond_acceptors <= 5 and rotatable_bonds <= 5:
lipinski = True
results["Lipinski Rule of 5"] += 1
# Ghose Filter
if molecular_weight >= 160 and molecular_weight <= 480 and logp >= 0.4 and logp <= 5.6 and number_of_atoms >= 20 and number_of_atoms <= 70 and molar_refractivity >= 40 and molar_refractivity <= 130:
ghose_filter = True
results["Ghose Filter"] += 1
# Veber Filter
if rotatable_bonds <= 10 and topological_surface_area_mapping <= 140:
veber_filter = True
results["Veber Filter"] += 1
# Rule of 3
if molecular_weight <= 300 and logp <= 3 and h_bond_donor <= 3 and h_bond_acceptors <= 3 and rotatable_bonds <= 3:
rule_of_3 = True
results["Rule of 3 Filter"] += 1
# REOS Filter
if molecular_weight >= 200 and molecular_weight <= 500 and logp >= int(0 - 5) and logp <= 5 and h_bond_donor >= 0 and h_bond_donor <= 5 and h_bond_acceptors >= 0 and h_bond_acceptors <= 10 and formal_charge >= int(0-2) and formal_charge <= 2 and rotatable_bonds >= 0 and rotatable_bonds <= 8 and heavy_atoms >= 15 and heavy_atoms <= 50:
reos_filter = True
results["REOS Filter"] += 1
#Drug Like Filter
if molecular_weight < 400 and num_of_rings > 0 and rotatable_bonds < 5 and h_bond_donor <= 5 and h_bond_acceptors <= 10 and logp < 5:
drug_like_filter = True
results["Drug-like Filter"] += 1
if lipinski and ghose_filter and veber_filter and rule_of_3 and reos_filter and drug_like_filter:
results["Passes All Filters"] += 1
print (results) |
I looked at the cost and it's around $1,400, I would rather use that money elsewhere so let's try an AI way. For SMILES where the name is ambiguous can we use an Recurrent Neural Network trained on SMILES/IUPAC: https://github.com/Kohulan/Smiles-TO-iUpac-Translator Install: pip install STOUT-pypi
Code to Run from STOUT import translate_forward, translate_reverse
for name, smiles in smiles_list.items():
smiles = "CN1C=NC2=C1C(=O)N(C(=O)N2C)C"
iupac_name = translate_forward(SMILES)
print('Name: %s, SMILES: %s') Try that out and let me know. Ghose was really interesting because it included Molar refractivity. Why do you think Ghose included this a filter for drug like molecules? For plotly turn your plots into white background, show the curves: figure.update_layout(legend=dict(itemsizing='constant'))
figure.update_layout(legend=dict(
orientation="v",
yanchor="bottom",
y=0.96,
xanchor="right",
x=1,
font = dict(family = "Arial", size = 10),
bordercolor="LightSteelBlue",
borderwidth=2,
),
legend_title = dict(font = dict(family = "Arial", size = 10))
)
figure.update_xaxes(
ticks="outside",
tickwidth=1,
tickcolor='black',
tickfont=dict(family='Arial', color='black', size=13),
title_font=dict(size=13, family='Arial'),
title_text='X Axis',
ticklen=15,
)
figure.update_yaxes(
ticks="outside",
tickwidth=1,
tickcolor='black',
title_text='Y-Axis',
tickfont=dict(family='Arial', color='black', size=13),
title_font=dict(size=13, family='Arial'),
ticklen=15,
)
figure.update_layout(
xaxis_tickformat = 'i',
bargap=0.2, # gap between bars of adjacent location coordinates,
height=1000,
width=1000,
plot_bgcolor='rgba(0,0,0,0)'
) |
Read this paper: https://pubs.acs.org/doi/10.1021/c160017a018 Conda install: https://anaconda.org/conda-forge/aria2 |
Hi,
In this study, we are taking the rings in drugs list and applying generative AI to rings in drugs to predict future most likely ring systems.
Read these two papers:
1.) https://arxiv.org/abs/1704.07555
2.) https://pubs.acs.org/doi/10.1021/jm4017625
Ask questions and ask some thoughts on you can apply these two together.
The text was updated successfully, but these errors were encountered: