lynxkite / examples /Cheminformatics /draw_molecules.py
darabos's picture
Restore Cheminformatics example workspace.
c53e4f2
Raw
History Blame Contribute Delete
980 Bytes
from lynxkite_core.ops import op
from lynxkite_graph_analytics.core import Bundle, TableName, ColumnNameByTableName
import base64
import io
def pil_to_data(image):
buffer = io.BytesIO()
image.save(buffer, format="webp")
b64 = base64.b64encode(buffer.getvalue()).decode("utf-8")
return "data:image/webp;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", icon="microscope-filled")
def draw_molecules(
b: Bundle,
*,
table_name: TableName,
smiles_column: ColumnNameByTableName,
image_column: str = "image",
):
"""Adds molecule images in a table."""
b = b.copy()
df = b.dfs[table_name]
df = df.copy()
df[image_column] = df[smiles_column].apply(smiles_to_data)
b.dfs[table_name] = df
return b