{
  "filename": "evidence_matrix.png",
  "iteration": 1,
  "description": "Create evidence matrix visualization for CRMP1 GO:0016812 hypothesis evaluation",
  "timestamp": "2026-07-05 06:20:21",
  "code": "\nimport matplotlib.pyplot as plt\nimport matplotlib\nimport numpy as np\n\n# Create evidence matrix table as a figure\nfig, ax = plt.subplots(figsize=(16, 8))\nax.axis('off')\n\n# Evidence matrix data\ncolumns = ['Citation', 'Evidence Type', 'Direction', 'Claim Tested', 'Key Finding', 'Context', 'Confidence']\nrows = [\n    ['PMID:17250651\\n(Stenmark 2007)', 'Structural\\n(X-ray crystal)', 'REFUTES', 'CRMP has hydrolase\\nactive site', 'CRMP-2 active site\\nNOT conserved', 'Human CRMP-2\\n2.3\u00c5 structure', 'HIGH'],\n    ['PMID:28044206\\n(Myllykoski 2017)', 'Structural\\n(X-ray crystal)', 'REFUTES', 'CRMPs retain\\nenzymatic activity', 'CRMPs have LOST\\nthe enzymatic active site', 'Human CRMP-2\\n1.25\u00c5 structure', 'HIGH'],\n    ['PMID:14685275\\n(Deo 2004)', 'Structural +\\nFunctional', 'QUALIFIES', 'CRMP1 function', 'CRMP1 mediates\\nSema3A signaling', 'Murine CRMP1\\n2.1\u00c5 + COS-7', 'HIGH'],\n    ['PMID:25358863\\n(Nakamura 2014)', 'Direct assay\\n(IPI)', 'QUALIFIES', 'CRMP1 molecular\\nfunction', 'CRMP1 binds Filamin-A,\\nremodels actin', 'Human/C.elegans\\nneurons', 'HIGH'],\n    ['UniProt Q14194', 'Database\\nannotation', 'REFUTES', 'CRMP1 is active\\nhydrolase', 'Named \"Inactive\\ndihydropyrimidinase\"', 'Expert curation', 'HIGH'],\n    ['This analysis:\\nSequence alignment', 'Computational', 'REFUTES', 'Active site\\nconservation', '6/8 catalytic residues\\nsubstituted', 'EMBOSS Needle\\n52.8% identity', 'HIGH'],\n    ['GO_REF:0000033\\n(PAINT/IBA)', 'Phylogenetic\\ninference', 'SUPPORTS\\n(weakly)', 'Family-level\\nactivity', 'IBA propagated from\\ntrue DPYS enzymes', 'PANTHER tree\\nPTHR11647', 'LOW\\n(over-annotation)'],\n]\n\n# Color rows by direction\ncolors_map = {\n    'REFUTES': '#ffcccc',\n    'QUALIFIES': '#fff2cc', \n    'SUPPORTS\\n(weakly)': '#ccffcc',\n}\n\ncell_colors = []\nfor row in rows:\n    row_colors = []\n    base_color = colors_map.get(row[2], '#ffffff')\n    for _ in columns:\n        row_colors.append(base_color)\n    cell_colors.append(row_colors)\n\ntable = ax.table(\n    cellText=rows,\n    colLabels=columns,\n    cellColours=cell_colors,\n    colColours=['#4a86c8'] * len(columns),\n    loc='center',\n    cellLoc='center'\n)\n\n# Style header\nfor j in range(len(columns)):\n    table[0, j].set_text_props(color='white', fontweight='bold', fontsize=8)\n    table[0, j].set_height(0.08)\n\n# Style cells\nfor i in range(1, len(rows) + 1):\n    for j in range(len(columns)):\n        table[i, j].set_text_props(fontsize=7)\n        table[i, j].set_height(0.11)\n\ntable.auto_set_column_width(col=list(range(len(columns))))\n\nax.set_title('Evidence Matrix: CRMP1 GO:0016812 Hydrolase Activity Hypothesis\\n'\n             'Red=Refutes, Yellow=Qualifies, Green=Supports (weakly)', \n             fontsize=12, fontweight='bold', pad=20)\n\nplt.tight_layout()\nplt.savefig('evidence_matrix.png', dpi=150, bbox_inches='tight')\nplt.show()\nprint(\"Evidence matrix saved\")\n"
}