Metabolic Safety: PPARγ Interaction Profile Dashboard

DrugBank database
MolPort database
Python script number 96 to build the frequency distribution graph of the PPAR 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 (PPAR-gamma Activation)
bins_ppar = 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_ppar = np.array([42.63, 22.04, 7.98, 4.84, 3.52, 2.93, 2.68, 2.72, 2.85, 2.34, 1.49, 1.49, 0.98, 0.81, 0.38, 0.25, 0.08, 0.0, 0.0, 0.0, 0.0])

# 2. Statistical Calculations
mean_val = np.average(bins_ppar, weights=freq_ppar)

# PCHIP interpolation to capture exponential decay
interpolator = PchipInterpolator(bins_ppar, freq_ppar)
x_fit = np.linspace(0, 1.0, 500)
y_fit = interpolator(x_fit)
y_fit = np.clip(y_fit, 0, None)

# 3. Color Function (PPARγ Probability Traffic Light)
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_ppar)
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_ppar, freq_ppar, width=0.04, color=face_colors, edgecolor=edge_colors, linewidth=1.5, zorder=2)

# 5. Tags and Titles
plt.xlabel('PPARγ Activation Probability (Metabolic Disruption Risk)', fontsize=12)
plt.ylabel('% Frequency', fontsize=12)
plt.title('Metabolic Safety: PPARγ Interaction Profile', fontsize=14)

# 6. Structured Legend
legend_elements = [
    Patch(facecolor=mcolors.to_rgba('#008000', 0.6), edgecolor='#008000', label='Metabolically Inert (< 0.4)'),
    Patch(facecolor=mcolors.to_rgba('#FFD700', 0.6), edgecolor='#FFD700', label='Moderate/Weak Affinity (0.4 - 0.7)'),
    Patch(facecolor=mcolors.to_rgba('#B22222', 0.6), edgecolor='#B22222', label='PPARγ Agonist (> 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, 48)
plt.tight_layout()

plt.show()