{
  "filename": "plot_2.png",
  "iteration": 1,
  "description": "Create comprehensive domain architecture comparison diagram for HSPA12A/B vs canonical HSP70",
  "timestamp": "2026-06-22 02:51:38",
  "code": "\nimport matplotlib.pyplot as plt\nimport matplotlib.patches as mpatches\nimport numpy as np\n\nfig, ax = plt.subplots(figsize=(16, 10))\n\n# Create a comprehensive domain comparison diagram\ny_positions = {'HSPA8': 7, 'HSPA1A': 5.5, 'HSPA12A': 3.5, 'HSPA12B': 2}\n\n# Color scheme\nnbd_color = '#4CAF50'\nsbd_beta_color = '#FF9800'\nsbd_alpha_color = '#F44336'\nlinker_color = '#9C27B0'\nn_ext_color = '#9E9E9E'\nctail_color = '#795548'\n\nfor prot, y in y_positions.items():\n    if prot in ['HSPA8', 'HSPA1A']:\n        total_len = 646 if prot == 'HSPA8' else 641\n        scale = 646 / total_len\n        \n        # NBD\n        ax.barh(y, 380*scale, left=0, height=0.6, color=nbd_color, edgecolor='black', linewidth=0.5)\n        ax.text(190*scale, y, 'NBD\\n(1-380)', ha='center', va='center', fontsize=7, fontweight='bold')\n        \n        # Linker\n        ax.barh(y, 14*scale, left=380*scale, height=0.6, color=linker_color, edgecolor='black', linewidth=0.5)\n        \n        # SBD\u03b2\n        ax.barh(y, 114*scale, left=394*scale, height=0.6, color=sbd_beta_color, edgecolor='black', linewidth=0.5)\n        ax.text(451*scale, y, 'SBD\u03b2', ha='center', va='center', fontsize=7, fontweight='bold')\n        \n        # SBD\u03b1\n        ax.barh(y, (total_len-508)*scale, left=508*scale, height=0.6, color=sbd_alpha_color, edgecolor='black', linewidth=0.5)\n        ax.text(575*scale, y, 'SBD\u03b1/lid', ha='center', va='center', fontsize=7, fontweight='bold')\n        \n        # Motif markers\n        ax.plot(12*scale, y+0.35, 'v', color='darkgreen', markersize=8)\n        ax.text(12*scale, y+0.55, 'IDLGTTYS', ha='center', fontsize=6, color='darkgreen', fontweight='bold')\n        \n        ax.plot(202*scale, y+0.35, 'v', color='darkgreen', markersize=8)\n        ax.text(202*scale, y+0.55, 'DLGGGTFD', ha='center', fontsize=6, color='darkgreen', fontweight='bold')\n        \n        ax.plot(392*scale, y+0.35, 'v', color='purple', markersize=8)\n        ax.text(392*scale, y+0.55, 'DLLLLD', ha='center', fontsize=6, color='purple', fontweight='bold')\n        \n        # Checkmarks\n        ax.text(total_len*scale + 10, y, '\u2713 All HSP70\\n  motifs present\\n\u2713 SBD present\\n\u2713 Pfam PF00012', \n                fontsize=7, va='center', color='green', fontweight='bold')\n        \n    else:  # HSPA12A or HSPA12B\n        total_len = 675 if prot == 'HSPA12A' else 686\n        scale = 646 / total_len\n        n_ext_end = 56 if prot == 'HSPA12A' else 60\n        nbd_start = 57 if prot == 'HSPA12A' else 61\n        nbd_end = 523 if prot == 'HSPA12A' else 528\n        \n        # N-terminal extension\n        ax.barh(y, n_ext_end*scale, left=0, height=0.6, color=n_ext_color, \n                edgecolor='black', linewidth=0.5, hatch='///')\n        ax.text(n_ext_end/2*scale, y, 'N-ext', ha='center', va='center', fontsize=6)\n        \n        # Divergent NBD\n        ax.barh(y, (nbd_end-nbd_start)*scale, left=nbd_start*scale, height=0.6, \n                color='#81C784', edgecolor='black', linewidth=0.5)\n        ax.text((nbd_start+nbd_end)/2*scale, y, f'Divergent NBD\\n({nbd_start}-{nbd_end})', \n                ha='center', va='center', fontsize=7, fontweight='bold')\n        \n        # C-terminal (non-SBD)\n        ax.barh(y, (total_len-nbd_end)*scale, left=nbd_end*scale, height=0.6, \n                color=ctail_color, edgecolor='black', linewidth=0.5, hatch='xxx')\n        ax.text((nbd_end+total_len)/2*scale, y, 'C-tail\\n(no SBD)', \n                ha='center', va='center', fontsize=7, color='white', fontweight='bold')\n        \n        # Diverged motif markers\n        dfg_pos = 63 if prot == 'HSPA12A' else 66\n        ax.plot(dfg_pos*scale, y+0.35, 'v', color='red', markersize=8)\n        ax.text(dfg_pos*scale, y+0.55, f'DFGTT\\n(\u2260DLGTT)', ha='center', fontsize=6, color='red', fontweight='bold')\n        \n        dxggg_pos = 317 if prot == 'HSPA12A' else 322\n        dxggg_label = 'DSGGG' if prot == 'HSPA12A' else 'DCGGG'\n        ax.plot(dxggg_pos*scale, y+0.35, 'v', color='red', markersize=8)\n        ax.text(dxggg_pos*scale, y+0.55, f'{dxggg_label}\\n(\u2260DLGGG)', ha='center', fontsize=6, color='red', fontweight='bold')\n        \n        # X marks\n        ax.text(total_len*scale + 10, y, '\u2717 HSP70 motifs\\n  diverged\\n\u2717 No SBD\\n\u2717 No Pfam PF00012', \n                fontsize=7, va='center', color='red', fontweight='bold')\n\n# Labels\nfor prot, y in y_positions.items():\n    ax.text(-30, y, prot, ha='right', va='center', fontsize=10, fontweight='bold',\n            fontfamily='monospace')\n\n# Title\nax.set_title('Domain Architecture Comparison: Canonical HSP70 vs HSPA12 Subfamily\\n'\n             'HSPA12A/B lack substrate-binding domain and have diverged ATPase motifs',\n             fontsize=13, fontweight='bold')\n\n# Legend\nlegend_elements = [\n    mpatches.Patch(facecolor=nbd_color, edgecolor='black', label='Canonical NBD'),\n    mpatches.Patch(facecolor='#81C784', edgecolor='black', label='Divergent NBD'),\n    mpatches.Patch(facecolor=sbd_beta_color, edgecolor='black', label='SBD\u03b2 (substrate binding)'),\n    mpatches.Patch(facecolor=sbd_alpha_color, edgecolor='black', label='SBD\u03b1 (lid)'),\n    mpatches.Patch(facecolor=linker_color, edgecolor='black', label='Interdomain linker'),\n    mpatches.Patch(facecolor=n_ext_color, edgecolor='black', label='N-terminal extension'),\n    mpatches.Patch(facecolor=ctail_color, edgecolor='black', label='C-terminal (non-SBD)'),\n]\nax.legend(handles=legend_elements, loc='lower center', ncol=4, fontsize=8, \n          bbox_to_anchor=(0.5, -0.08))\n\n# Dividing line\nax.axhline(y=4.5, color='black', linestyle='--', alpha=0.3)\nax.text(320, 4.7, '\u2500\u2500 Canonical HSP70 \u2500\u2500', ha='center', fontsize=8, style='italic', alpha=0.5)\nax.text(320, 4.2, '\u2500\u2500 HSPA12 subfamily (divergent) \u2500\u2500', ha='center', fontsize=8, style='italic', alpha=0.5)\n\nax.set_xlim(-100, 750)\nax.set_ylim(1, 8.5)\nax.set_xlabel('Position (scaled)', fontsize=10)\nax.set_yticks([])\nax.spines['top'].set_visible(False)\nax.spines['right'].set_visible(False)\nax.spines['left'].set_visible(False)\n\nplt.tight_layout()\nplt.savefig('/tmp/domain_comparison.png', dpi=150, bbox_inches='tight')\nplt.show()\nprint(\"Domain comparison figure saved.\")\n",
  "plot_number": 2
}