The inhibition of the human ether-a-go-go (hERG) ion channel may cause QT interval prolongation, which eventually can result in torsades de pointes (TdP) and even death. Hence cardiotoxicity caused by the inhibition of hERG is a major liability within the drug development process. To avoid such a severe adverse effect, it makes good sense to understand which chemical transformation can have a positive impact on the hERG inhibition.
hERG_Matched_Molecular_Pair_analysis is a Knime workflow capable of fetching hERG data from the ChEMBL database. A Matched Molecular Pair analysis is then performed to allow a bar chart data visualisation. The positive, negative or neutral impact percentage of each transformation can be visualize as a stacked bar chart.
 Journal of Cheminformatics volume 11, Article number: 9 (2019)
import pandas as pd import knime %matplotlib inline import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib.style.use('ggplot')
Define your Knime executable path.
knime.executable_path = "/opt/knime_4.1.1/knime"
Define your Knime workspace:
workspace = "/mnt/DATA/knime_workspace_production"
Now pick the Knime workflow
workflow = "hERG_MMP_analysis_with_ChEMBL_data_Czodrowski_AG_5_min_of_fame" knime.Workflow(workflow_path=workflow,workspace_path=workspace)
Run the Knime workflow
with knime.Workflow(workflow_path=workflow,workspace_path=workspace) as wf: wf.execute()
Get the data from Knime as a Pandas DF
df = wf.data_table_outputs
Start from here if Knime is not installed on your computer.
#df = pd.read_csv ('./data/hERG_MMP_ChEMBL.csv')
Reorganise the DF for plotting
df = df.sort_values(by=['Positive_impact']).set_index('Transformation')
Plot the impact of each chemical transformation the hERG inhibition.
Applying a transformation with a high positive impact in % might have a high likelyhood of decreasing the hERG liability of a molecule for which such a transformation was applied thus reducing the cardiotoxicity of this molecule.
ax = df.plot.barh(figsize=(10, 250), stacked=True, title="Chemical transformation impact in %", fontsize=16)
Getting back "Transformation" as a Pandas column
df = df.reset_index(level='Transformation')
The table le below was obtained from the Knime workflow: