File size: 1,148 Bytes
0ef2e37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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()