Apps & Tools

  1. Modified version of AutoDock Vina

AutoDock Vina formed a very high successful-docking rate but a rather low correlation coefficient. This low correlation can be an obstacle for ranking of ligand-binding affinity, which is the main objective of docking simulations. The accuracy of Vina likely depends on the empirical parameters, which include the Gaussian steric interaction, repulsion, hydrophobic, hydrogen bond, and rotation metrics. A new set of empirical parameters was proposed to improve the docking accuracy. The modified AutoDock Vina was thus introduced and the accuracy of docking simulations was significantly increased. The version of Vina with a new set of parameters can be downloaded here.

2. Analyzed codes

2.1. ROC-AUC calculations.

We assumed that the results were denoted as dg_results.xlsx as published in artile entitle Benchmark of Popular Free Energy Approaches Revealing the Inhibitors Binding to SARS-CoV-2 Mpro. ROC-AUC can be calculated via python codes:

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from sklearn.metrics import roc_auc_score, roc_curve

tab1 = pd.read_excel("dg_results.xlsx", sheet_name="Sheet1")

tab2 = pd.read_excel("dg_results.xlsx", sheet_name="Sheet2")

def auc_bootstrap(y_true, y_score, bootstrap_repeat=1000):

y_true = np.array(y_true)

y_score = np.array(y_score)

auc_fin = roc_auc_score(y_true, y_score)

auc_bstr = []

nsamples = len(y_true)

for _ in range(bootstrap_repeat):

sel_ind = np.random.choice(nsamples, size=nsamples, replace=True)

try:

auc_bstr.append(roc_auc_score(y_true[sel_ind], y_score[sel_ind]))

except ValueError:

pass

return auc_fin, np.std(auc_bstr)

tab1_score = tab1.copy()

cols = ["dg_exp", "dg_fef", "dg_mmpbsa", "dg_lie", "dg_ad4", "dg_vina"]

for col in cols:

tab1_score[col] = -tab1_score[col]

dg_exp_median = tab1_score["dg_exp"].median()

tab1_score["label"] = tab1_score["dg_exp"] > dg_exp_median

tab1_score = tab1_score.sort_values(by="dg_exp")

tab1_score

cols = ["dg_vina", "dg_ad4", "work", "dg_lie", "dg_mmpbsa", "dg_fef"]

for col in cols:

auc, auc_std = auc_bootstrap(tab1_score["label"], tab1_score[col])

print(col, " AUC = %0.5f +/- %0.5f" % (auc, auc_std))

cols = ["dg_vina", "dg_ad4", "work", "dg_lie", "dg_mmpbsa", "dg_fef"]

for col in cols:

auc, auc_std = auc_bootstrap(tab1_score["label"], tab1_score[col])

print(col, " AUC = %0.5f +/- %0.5f" % (auc, auc_std))