{
  "filename": "guf1_identity_matrix.png",
  "iteration": 2,
  "description": "Identity heatmap provenance figure",
  "timestamp": "2026-07-08 18:43:17",
  "code": "\nimport numpy as np, matplotlib\nmatplotlib.use('Agg'); import matplotlib.pyplot as plt\nnames=['ARTAN_target','ARATH_chloro','ARATH_mito','Ecoli_LepA','Human_GUF1_mito']\nM=np.array([[0,77.8,47.2,43.2,45.7],\n            [77.8,0,49.0,47.8,46.3],\n            [47.2,49.0,0,45.9,55.0],\n            [43.2,47.8,45.9,0,43.5],\n            [45.7,46.3,55.0,43.5,0]])\nfig,ax=plt.subplots(figsize=(7,5.5))\nMm=M.copy(); np.fill_diagonal(Mm,100)\nim=ax.imshow(Mm,cmap='viridis',vmin=40,vmax=100)\nax.set_xticks(range(5)); ax.set_yticks(range(5))\nax.set_xticklabels(names,rotation=45,ha='right'); ax.set_yticklabels(names)\nfor i in range(5):\n    for j in range(5):\n        v=Mm[i,j]\n        ax.text(j,i,f\"{v:.0f}\",ha='center',va='center',\n                color='white' if v<75 else 'black',fontsize=10,fontweight='bold')\nplt.colorbar(im,label='% identity (global NW)')\nax.set_title('LepA/GUF1 pairwise % identity\\nA0A2U1PS28 groups with chloroplast paralog (78%)')\nplt.tight_layout(); plt.savefig('guf1_identity_matrix.png',dpi=130)\nprint(\"saved guf1_identity_matrix.png\")\nprint(\"Target->chloroplast 77.8% vs ->mito clade 45-47%: chloroplast assignment confirmed\")\n"
}