SA / app.py
mohamed20003's picture
Create app.py
0ef2e37 verified
import gradio as gr
from rdkit import Chem
from rdkit.Chem import Descriptors, rdMolDescriptors
# دالة SA Score بسيطة
def simple_sa_score(smiles):
mol = Chem.MolFromSmiles(smiles)
if not mol:
return "❌ SMILES غير صالح"
mw = Descriptors.MolWt(mol)
rot_bonds = rdMolDescriptors.CalcNumRotatableBonds(mol)
num_atoms = mol.GetNumAtoms()
score = 0
score += 1 if mw > 500 else 0
score += 1 if rot_bonds > 10 else 0
score += 1 if num_atoms > 50 else 0
sa_score = round(1 + score * 3, 2)
if sa_score <= 4:
level = "🔬 سهل التصنيع ✅"
elif sa_score <= 7:
level = "⚠️ متوسط الصعوبة"
else:
level = "❌ صعب تصنيعه معمليًا"
return f"🧪 SA Score: {sa_score} / 10\n{level}"
# واجهة Gradio
demo = gr.Interface(
fn=simple_sa_score,
inputs=gr.Textbox(label="🔬 أدخل SMILES هنا"),
outputs=gr.Textbox(label="📊 التقييم"),
title="تقييم SA Score",
description="تحليل مدى سهولة تصنيع المركب بناءً على SMILES"
)
demo.launch()