{
  "filename": "plot_1.png",
  "iteration": 1,
  "description": "Hydropathy profile analysis and domain architecture comparison for Mtpalpha vs HADHA vs EHHADH",
  "timestamp": "2026-07-01 03:52:52",
  "code": "\nimport requests\nimport numpy as np\nimport matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt\n\n# Fetch Mtpalpha sequence\nurl = \"https://rest.uniprot.org/uniprotkb/Q8IPE8.fasta\"\nresp = requests.get(url)\nlines = resp.text.strip().split('\\n')\nseq = ''.join(lines[1:])\n\n# Kyte-Doolittle hydropathy scale\nkd = {\n    'A': 1.8, 'R': -4.5, 'N': -3.5, 'D': -3.5, 'C': 2.5,\n    'Q': -3.5, 'E': -3.5, 'G': -0.4, 'H': -3.2, 'I': 4.5,\n    'L': 3.8, 'K': -3.9, 'M': 1.9, 'F': 2.8, 'P': -1.6,\n    'S': -0.8, 'T': -0.7, 'W': -0.9, 'Y': -1.3, 'V': 4.2\n}\n\n# Calculate hydropathy profile with window of 19\nwindow = 19\nhydro = []\nfor i in range(len(seq) - window + 1):\n    segment = seq[i:i+window]\n    score = np.mean([kd.get(aa, 0) for aa in segment])\n    hydro.append(score)\n\n# N-terminal charge profile (amphipathic helix analysis for MTS)\ncharge_window = 10\ncharges = []\nfor i in range(min(len(seq), 80)):\n    aa = seq[i]\n    if aa in 'RK':\n        charges.append(1)\n    elif aa in 'DE':\n        charges.append(-1)\n    else:\n        charges.append(0)\n\n# Create visualization\nfig, axes = plt.subplots(3, 1, figsize=(14, 10))\n\n# Panel 1: Full hydropathy profile\nax1 = axes[0]\npositions = range(len(hydro))\nax1.plot(positions, hydro, 'b-', linewidth=0.8)\nax1.axhline(y=0, color='k', linewidth=0.5)\nax1.axhline(y=1.6, color='r', linewidth=0.5, linestyle='--', label='TM threshold (1.6)')\nax1.set_xlabel('Position')\nax1.set_ylabel('Hydropathy Score')\nax1.set_title('Q8IPE8 (Mtpalpha) - Kyte-Doolittle Hydropathy (window=19)')\nax1.legend()\n# Annotate C-terminal PTS1\nax1.axvspan(len(hydro)-5, len(hydro), alpha=0.3, color='green', label='PTS1 region')\nax1.text(len(hydro)-3, max(hydro)*0.8, 'PTS1\\n(SKL)', ha='center', fontsize=9, color='green', fontweight='bold')\n\n# Panel 2: N-terminal region detail (MTS analysis)\nax2 = axes[1]\nn_region = 80\nn_hydro = hydro[:n_region]\nax2.plot(range(len(n_hydro)), n_hydro, 'b-', linewidth=1.5)\nax2.axhline(y=0, color='k', linewidth=0.5)\nax2.set_xlabel('Position')\nax2.set_ylabel('Hydropathy Score')\nax2.set_title('N-terminal Region (first 80 aa) - Mitochondrial Targeting Sequence Analysis')\n\n# Add charge markers\nfor i, c in enumerate(charges):\n    if c > 0:\n        ax2.axvline(x=i, color='blue', alpha=0.3, linewidth=2)\n    elif c < 0:\n        ax2.axvline(x=i, color='red', alpha=0.3, linewidth=2)\n\nax2.text(0.02, 0.95, 'Blue bars = R/K (+), Red bars = D/E (-)', \n         transform=ax2.transAxes, fontsize=8, va='top', \n         bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.5))\n\n# Panel 3: Domain architecture comparison\nax3 = axes[2]\nax3.set_xlim(0, 800)\nax3.set_ylim(0, 4)\nax3.set_xlabel('Position (aa)')\nax3.set_title('Domain Architecture Comparison')\n\n# Mtpalpha domains\ny_mtp = 3\nax3.barh(y_mtp, 744, left=0, height=0.3, color='lightgray', edgecolor='black')\nax3.text(-30, y_mtp, 'Mtpalpha\\n(Dmel)', ha='right', va='center', fontsize=8)\n# ECH domain (approx 1-300 based on InterPro)\nax3.barh(y_mtp, 300, left=10, height=0.3, color='steelblue', alpha=0.7)\nax3.text(160, y_mtp+0.2, 'ECH', ha='center', fontsize=7, color='steelblue')\n# 3HCDH NAD-bd domain (336-514)\nax3.barh(y_mtp, 178, left=336, height=0.3, color='coral', alpha=0.7)\nax3.text(425, y_mtp+0.2, '3HCDH NAD-bd', ha='center', fontsize=7, color='coral')\n# 3HCDH C-term (517-611)\nax3.barh(y_mtp, 94, left=517, height=0.3, color='salmon', alpha=0.7)\nax3.text(564, y_mtp+0.2, '3HCDH-C', ha='center', fontsize=7, color='salmon')\n# PTS1\nax3.plot(741, y_mtp, 'g^', markersize=12)\nax3.text(741, y_mtp-0.25, 'SKL', ha='center', fontsize=8, color='green', fontweight='bold')\n\n# HADHA domains\ny_had = 2\nax3.barh(y_had, 763, left=0, height=0.3, color='lightgray', edgecolor='black')\nax3.text(-30, y_had, 'HADHA\\n(Human)', ha='right', va='center', fontsize=8)\nax3.barh(y_had, 36, left=0, height=0.3, color='orange', alpha=0.7)\nax3.text(18, y_had+0.2, 'MTS', ha='center', fontsize=7, color='orange')\nax3.barh(y_had, 300, left=37, height=0.3, color='steelblue', alpha=0.7)\nax3.barh(y_had, 178, left=350, height=0.3, color='coral', alpha=0.7)\nax3.barh(y_had, 94, left=530, height=0.3, color='salmon', alpha=0.7)\n# No PTS1\nax3.text(760, y_had-0.25, 'FYQ', ha='center', fontsize=8, color='gray')\n\n# EHHADH domains\ny_ehh = 1\nax3.barh(y_ehh, 723, left=0, height=0.3, color='lightgray', edgecolor='black')\nax3.text(-30, y_ehh, 'EHHADH\\n(Human)', ha='right', va='center', fontsize=8)\nax3.barh(y_ehh, 300, left=10, height=0.3, color='steelblue', alpha=0.7)\nax3.barh(y_ehh, 178, left=350, height=0.3, color='coral', alpha=0.7)\nax3.barh(y_ehh, 94, left=530, height=0.3, color='salmon', alpha=0.7)\n# PTS1\nax3.plot(720, y_ehh, 'g^', markersize=12)\nax3.text(720, y_ehh-0.25, 'SKL', ha='center', fontsize=8, color='green', fontweight='bold')\n\nax3.set_yticks([])\n\nplt.tight_layout()\nplt.savefig('mtpalpha_analysis.png', dpi=150, bbox_inches='tight')\nplt.show()\nprint(\"Figure saved successfully\")\n",
  "plot_number": 1
}