SMILES dizesini geçerli alt dizelere dönüştürme
Aşağıdaki gibi bir SMILES dizim var.
smi= 'CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl'
Bu SMILES dizesini daha sonra RDKIT'te işlenebilecek geçerli alt dizelere dönüştürüyor muyum?
Örneğin
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)'
Bu alt dizeler ana SMILES dizesinin alt kümesi olmalı ve SMILES sözdizimi açısından da geçerli olmalıdır .
Öyleyse, işlevi kullandığımda, MolFromSmiles
herhangi bir hata olmadan veya karşılığında hiçbir şey olmadan işleniyor?
Mol_sub1 = Chem.MolFromSmiles(smi_sub1)
Mol_sub2 = Chem.MolFromSmiles(smi_sub2)
Mol_sub3 = Chem.MolFromSmiles(smi_sub3)
Yanıtlar
Bu bazı durumlarda işe yarayabilir, ancak genel olarak ne kadar iyi çalışacağından emin değilim. Buradaki sorun şu ifadeye yansıtılabilir:
Bu alt dizeler ana SMILES dizesinin alt kümesi olmalıdır
Her alt dize , ana molekülün bir alt grafiği olmayacaktır . Yorumlarda belirtildiği gibi, bu aslında bir parçalanma sorunu gibi görünüyor. Örneklerinizden birini alın:
smi_sub1 = 'C1c1ccccc1Cl'
Bunun ayrıştırılmamasının nedeni, 'C1' ile başlaması, ancak yüzüğü bitirmek için karşılık gelen 'C1' olmamasıdır. Yani 1-kloro-2-metilbenzen olan 'Cc1ccccc1Cl' olmalıdır.
Teorik olarak, alt dizeleri alabilir, ardından 'bağlantısı kesilmiş' zil numaralarını kaldırmak için sonradan işleyebilirsiniz. Bununla birlikte, moleküler grafikte doğru parçalanma kullanmak daha mantıklı olacaktır ve o zaman yine de onları SMILES'ten dönüştürmeye gerek kalmadan doğru alt grafiklere sahip olursunuz.