मान्य उप-स्ट्रिंग्स में SMILES स्ट्रिंग परिवर्तित करना
मेरे पास एक SMILES स्ट्रिंग है जो निम्नानुसार है।
smi= 'CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl'
वैसे भी क्या मैं इस SMILES स्ट्रिंग को वैध उप-स्ट्रिंग में परिवर्तित करता हूं जिसे बाद में RDKIT में संसाधित किया जा सकता है।
उदाहरण के लिए
smi_sub1= 'C1c1ccccc1Cl'
smi_sub2= 'CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)'
smi_sub3= 'C1=C(COCCN)NC(C)=C(C(=O)OC)'
ये उप-तार मुख्य SMILES स्ट्रिंग का सबसेट होना चाहिए और SMILES वाक्यविन्यास बिंदु से भी मान्य होना चाहिए ।
ताकि जब मैं फ़ंक्शन का उपयोग करूं MolFromSmiles
, तो यह बिना किसी त्रुटि के संसाधित हो या बदले में कोई नहीं?
Mol_sub1 = Chem.MolFromSmiles(smi_sub1)
Mol_sub2 = Chem.MolFromSmiles(smi_sub2)
Mol_sub3 = Chem.MolFromSmiles(smi_sub3)
जवाब
हालांकि यह कुछ मामलों में काम कर सकता है, मुझे यकीन नहीं है कि यह सामान्य रूप से कितना अच्छा काम करेगा। इस समस्या को इस कथन में परिलक्षित किया जा सकता है:
ये उप-तार मुख्य SMILES स्ट्रिंग का सबसेट होना चाहिए
हर -स्ट्रिंग एक हो जाएगा subgraph माता पिता अणु की। जैसा कि टिप्पणियों में उल्लेख किया गया है, यह अनिवार्य रूप से एक विखंडन समस्या लगती है। इसे अपने उदाहरण में से एक लें:
smi_sub1 = 'C1c1ccccc1Cl'
इसका कारण यह नहीं होगा कि यह 'C1' से शुरू होता है, लेकिन रिंग खत्म करने के लिए इसके पास 'C1' नहीं है। तो यह 'Cc1ccccc1Cl' होना चाहिए, जो कि 1-क्लोरो-2-मेथिलबेनज़ीन है।
सैद्धांतिक रूप से, आप सबस्ट्रिंग ले सकते हैं, फिर 'डिस्कनेक्ट' रिंग नंबर निकालने के लिए उन्हें पोस्ट-प्रोसेस कर सकते हैं। हालांकि, आणविक ग्राफ पर उचित विखंडन का उपयोग करने के लिए यह अधिक समझ में आता है, और फिर आपको एसएमआईएलईएस से उन्हें बदलने की आवश्यकता के बिना, वैसे भी सबग्राफ सही होगा।