Arko006 commited on
Commit
28f8e02
·
verified ·
1 Parent(s): a96ffd2

Upload explain/visualizer.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. explain/visualizer.py +32 -0
explain/visualizer.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import io
2
+ import base64
3
+ import numpy as np
4
+ from rdkit import Chem
5
+ from rdkit.Chem.Draw import SimilarityMaps
6
+ import matplotlib
7
+ matplotlib.use("Agg")
8
+ import matplotlib.pyplot as plt
9
+
10
+
11
+ def generate_similarity_map(smiles: str, attributions: list, target_assay: str) -> str:
12
+ mol = Chem.MolFromSmiles(smiles)
13
+ if mol is None:
14
+ raise ValueError(f"Invalid SMILES: {smiles}")
15
+
16
+ fig, ax = plt.subplots(figsize=(8, 6))
17
+ SimilarityMaps.GetSimilarityMapFromWeights(
18
+ mol,
19
+ attributions,
20
+ colorMap='RdYlBu_r',
21
+ scale=-1,
22
+ alpha=0.45,
23
+ )
24
+ ax.set_title(f"SHAP Attributions — {target_assay}", fontsize=14, fontweight="bold")
25
+ plt.tight_layout()
26
+
27
+ buf = io.BytesIO()
28
+ fig.savefig(buf, format="png", dpi=200, bbox_inches="tight")
29
+ plt.close(fig)
30
+ buf.seek(0)
31
+
32
+ return base64.b64encode(buf.read()).decode("utf-8")