{
  "filename": "plot_2.png",
  "iteration": 2,
  "description": "Comprehensive structural comparison figure: pLDDT profiles, active site conservation, C-terminal extension analysis, and summary table",
  "timestamp": "2026-07-01 05:49:35",
  "code": "\n# Create comprehensive structural and pLDDT comparison figure\nimport requests\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.gridspec as gridspec\n\ndef fetch_alphafold_pdb(url):\n    resp = requests.get(url)\n    ca_coords = []\n    plddt_values = []\n    residue_ids = []\n    for line in resp.text.split('\\n'):\n        if line.startswith('ATOM') and line[12:16].strip() == 'CA':\n            x = float(line[30:38])\n            y = float(line[38:46])\n            z = float(line[46:54])\n            bfactor = float(line[60:66])\n            resid = int(line[22:26])\n            ca_coords.append([x, y, z])\n            plddt_values.append(bfactor)\n            residue_ids.append(resid)\n    return np.array(ca_coords), np.array(plddt_values), residue_ids\n\nacad9_coords, acad9_plddt, acad9_resids = fetch_alphafold_pdb(\n    \"https://alphafold.ebi.ac.uk/files/AF-Q9H845-F1-model_v6.pdb\")\nvlcad_coords, vlcad_plddt, vlcad_resids = fetch_alphafold_pdb(\n    \"https://alphafold.ebi.ac.uk/files/AF-P49748-F1-model_v6.pdb\")\n\nfig = plt.figure(figsize=(16, 14))\ngs = gridspec.GridSpec(3, 2, hspace=0.4, wspace=0.35)\n\n# Panel A: pLDDT profiles\nax1 = fig.add_subplot(gs[0, :])\nax1.plot(acad9_resids, acad9_plddt, color='#2196F3', linewidth=1, alpha=0.8, label='ACAD9 (Q9H845)')\nax1.plot(vlcad_resids, vlcad_plddt, color='#F44336', linewidth=1, alpha=0.8, label='VLCAD (P49748)')\n\n# Mark active sites\nax1.axvline(x=426, color='#2196F3', linestyle='--', alpha=0.5, linewidth=1)\nax1.axvline(x=462, color='#F44336', linestyle='--', alpha=0.5, linewidth=1)\nax1.annotate('ACAD9\\nE426', xy=(426, 95), fontsize=8, color='#2196F3', ha='center')\nax1.annotate('VLCAD\\nE462', xy=(462, 88), fontsize=8, color='#F44336', ha='center')\n\n# Mark VLCAD C-terminal extension\nax1.axvspan(621, 655, alpha=0.2, color='#FF9800', label='VLCAD C-terminal extension (622-655)')\n\n# Mark signal peptide region\nax1.axvspan(1, 37, alpha=0.1, color='gray', label='ACAD9 mitochondrial signal (1-37)')\n\nax1.set_xlabel('Residue Number', fontsize=11)\nax1.set_ylabel('pLDDT (AlphaFold Confidence)', fontsize=11)\nax1.set_title('A. AlphaFold pLDDT Confidence Profiles', fontsize=13, fontweight='bold')\nax1.legend(fontsize=9, loc='lower left')\nax1.set_ylim(40, 105)\nax1.set_xlim(0, 660)\n\n# Panel B: Active site region detail comparison\nax2 = fig.add_subplot(gs[1, 0])\n\n# Fetch sequences for active site comparison\ndef fetch_seq(accession):\n    url = f\"https://rest.uniprot.org/uniprotkb/{accession}.fasta\"\n    resp = requests.get(url)\n    lines = resp.text.strip().split('\\n')\n    return ''.join(lines[1:])\n\nacad9_seq = fetch_seq(\"Q9H845\")\nvlcad_seq = fetch_seq(\"P49748\")\n\n# Active site region comparison (20 residues centered on catalytic Glu)\nacad9_as_region = acad9_seq[406:446]  # around E426\nvlcad_as_region = vlcad_seq[442:482]  # around E462\n\n# Show conservation as bar chart\nconservation = []\nfor i in range(min(len(acad9_as_region), len(vlcad_as_region))):\n    if acad9_as_region[i] == vlcad_as_region[i]:\n        conservation.append(2)  # identical\n    elif acad9_as_region[i] in 'RHKDESTNQ' and vlcad_as_region[i] in 'RHKDESTNQ':\n        conservation.append(1)  # similar (charged/polar)\n    elif acad9_as_region[i] in 'AILMFWV' and vlcad_as_region[i] in 'AILMFWV':\n        conservation.append(1)  # similar (hydrophobic)\n    else:\n        conservation.append(0)  # different\n\npositions = range(407, 407 + len(conservation))\ncolors_bar = ['#4CAF50' if c == 2 else '#FFC107' if c == 1 else '#F44336' for c in conservation]\nax2.bar(positions, conservation, color=colors_bar, width=0.8)\nax2.axvline(x=426, color='black', linestyle='-', linewidth=2, alpha=0.7)\nax2.annotate('E426\\n(catalytic)', xy=(426, 2.1), fontsize=8, ha='center', fontweight='bold')\nax2.set_xlabel('ACAD9 Residue Position', fontsize=10)\nax2.set_ylabel('Conservation', fontsize=10)\nax2.set_yticks([0, 1, 2])\nax2.set_yticklabels(['Different', 'Similar', 'Identical'], fontsize=8)\nax2.set_title('B. Active Site Conservation\\n(ACAD9 vs VLCAD)', fontsize=11, fontweight='bold')\n\n# Panel C: C-terminal region comparison\nax3 = fig.add_subplot(gs[1, 1])\n\n# Compare last 80 residues of each\nacad9_cterm_plddt = acad9_plddt[-80:]\nvlcad_cterm_plddt = vlcad_plddt[-80:]\n\nacad9_cterm_pos = np.arange(-80, 0)\nvlcad_cterm_pos = np.arange(-80, 0)\n\nax3.fill_between(acad9_cterm_pos, acad9_cterm_plddt, alpha=0.3, color='#2196F3')\nax3.fill_between(vlcad_cterm_pos, vlcad_cterm_plddt, alpha=0.3, color='#F44336')\nax3.plot(acad9_cterm_pos, acad9_cterm_plddt, color='#2196F3', linewidth=2, \n         label=f'ACAD9 (ends at {acad9_resids[-1]})')\nax3.plot(vlcad_cterm_pos, vlcad_cterm_plddt, color='#F44336', linewidth=2,\n         label=f'VLCAD (ends at {vlcad_resids[-1]})')\n\n# Mark where ACAD9 would end if aligned to VLCAD\nax3.axvline(x=-34, color='orange', linestyle='--', linewidth=2, alpha=0.7,\n            label='ACAD9 terminus\\n(VLCAD extends 34 more)')\nax3.set_xlabel('Position from C-terminus', fontsize=10)\nax3.set_ylabel('pLDDT', fontsize=10)\nax3.set_title('C. C-terminal Region\\n(Substrate Channel Extension)', fontsize=11, fontweight='bold')\nax3.legend(fontsize=8, loc='lower left')\nax3.set_ylim(60, 102)\n\n# Panel D: Summary table\nax4 = fig.add_subplot(gs[2, :])\nax4.axis('off')\n\ntable_data = [\n    ['Feature', 'ACAD9 (Q9H845)', 'VLCAD/ACADVL (P49748)', 'Significance'],\n    ['Protein length', '621 aa', '655 aa (+34)', 'VLCAD has C-terminal extension'],\n    ['EC number', '1.3.8.8 (long-chain)', '1.3.8.8 + 1.3.8.9\\n(long + very-long)', 'ACAD9 lacks VLC EC number'],\n    ['Mean pLDDT', '91.9', '90.3', 'Both well-modeled'],\n    ['C-term 34 aa pLDDT', '90.8 (last 34 of\\n588-621)', '97.8 (622-655)', 'VLCAD extension is\\nhighly structured'],\n    ['Active site', 'E426', 'E462', 'Conserved catalytic Glu'],\n    ['Peak substrates', 'C16:1, C18:1\\n(long-chain unsat.)', 'C16:0, C18:0\\n(long-chain sat.)', 'Different preferences'],\n    ['Longest substrate', 'C22:6 (DHA)\\n= 22 carbons', 'C24:0 (lignoceric)\\n= 24 carbons', 'Only VLCAD reaches >C22'],\n    ['GO:0017099\\nsupported?', 'NO', 'YES', 'ACAD9 should use\\nGO:0004466 only'],\n]\n\ntable = ax4.table(cellText=table_data, cellLoc='center', loc='center')\ntable.auto_set_font_size(False)\ntable.set_fontsize(9)\ntable.scale(1, 1.8)\n\n# Style header\nfor j in range(4):\n    table[0, j].set_facecolor('#BBDEFB')\n    table[0, j].set_text_props(fontweight='bold')\n\n# Highlight the key row\nfor j in range(4):\n    table[8, j].set_facecolor('#FFECB3')\n    table[8, j].set_text_props(fontweight='bold')\n\nax4.set_title('D. Structural and Functional Comparison Summary', fontsize=13, fontweight='bold', pad=15)\n\nplt.suptitle('ACAD9 vs VLCAD: Structural Evidence Against GO:0017099 for ACAD9',\n             fontsize=15, fontweight='bold', y=0.98)\nplt.savefig('acad9_vlcad_structural_comparison.png', dpi=150, bbox_inches='tight')\nplt.show()\nprint(\"Saved: acad9_vlcad_structural_comparison.png\")\n",
  "plot_number": 2
}