lynxkite / examples /draw_molecules.py
abhik1368's picture
Update Cheminformatrics use Cases
076e7a8
raw
history blame contribute delete
719 Bytes
from lynxkite.core.ops import op
import pandas as pd
import base64
import io
def pil_to_data(image):
buffer = io.BytesIO()
image.save(buffer, format="png")
b64 = base64.b64encode(buffer.getvalue()).decode("utf-8")
return "data:image/png;base64," + b64
def smiles_to_data(smiles):
import rdkit
m = rdkit.Chem.MolFromSmiles(smiles)
if m is None:
return None
img = rdkit.Chem.Draw.MolToImage(m)
data = pil_to_data(img)
return data
@op("LynxKite Graph Analytics", "Draw molecules")
def draw_molecules(df: pd.DataFrame, *, smiles_column: str, image_column: str = "image"):
df = df.copy()
df[image_column] = df[smiles_column].apply(smiles_to_data)
return df