Genotoxicity Screening: Genomic Instability Marker (ATAD5) Dashboard

DrugBank database
MolPort database
Python script number 93 to build the frequency distribution graph of the ATAD5 parameter on DrugBank molecules.
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
from matplotlib.patches import Patch
import numpy as np
from scipy.interpolate import PchipInterpolator

# 1. Original Data (ATAD5 - Genotoxic Stress Marker)
bins_atad = np.array([0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0])
freq_atad = np.array([50.28, 23.01, 8.03, 4.67, 3.86, 2.29, 1.70, 1.49, 0.93, 1.02, 0.64, 0.34, 0.85, 0.30, 0.17, 0.21, 0.08, 0.13, 0.0, 0.0, 0.0])

# 2. Statistical Calculations
mean_val = np.average(bins_atad, weights=freq_atad)

# PCHIP interpolation to capture the extreme peak without artifacts
interpolator = PchipInterpolator(bins_atad, freq_atad)
x_fit = np.linspace(0, 1.0, 500)
y_fit = interpolator(x_fit)
y_fit = np.clip(y_fit, 0, None)

# 3. Color Function
def get_colors(bins):
    return ['#008000' if b < 0.4 else '#FFD700' if b <= 0.7 else '#B22222' for b in bins]
colors_hex = get_colors(bins_atad)
face_colors = [mcolors.to_rgba(c, alpha=0.60) for c in colors_hex]
edge_colors = [mcolors.to_rgba(c, alpha=0.90) for c in colors_hex]

# 4. Create the chart
plt.figure(figsize=(7, 6))

# Draw bars and empirical curve
plt.bar(bins_atad, freq_atad, width=0.04, color=face_colors, edgecolor=edge_colors, linewidth=1.5, zorder=2)

# 5. Tags and Titles
plt.xlabel('ATAD5 Induction Probability (Genotoxic Stress / DNA Damage)', fontsize=12)
plt.ylabel('% Frequency', fontsize=12)
plt.title('Genotoxicity Screening: Genomic Instability Marker (ATAD5)', fontsize=14)

# 6. Structured Legend
legend_elements = [
    Patch(facecolor=mcolors.to_rgba('#008000', 0.6), edgecolor='#008000', label='Non-Genotoxic / Safe (< 0.4)'),
    Patch(facecolor=mcolors.to_rgba('#FFD700', 0.6), edgecolor='#FFD700', label='Moderate DNA Stress (0.4 - 0.7)'),
    Patch(facecolor=mcolors.to_rgba('#B22222', 0.6), edgecolor='#B22222', label='High Genotoxicity (> 0.7)')
]
plt.legend(handles=legend_elements, loc='upper right', framealpha=0.95, fontsize=10)

plt.grid(axis='y', linestyle=':', alpha=0.7, zorder=0)
plt.xlim(-0.05, 1.05)
plt.ylim(0, 55)
plt.tight_layout()

plt.show()