SMILES dizesini geçerli alt dizelere dönüştürme

Aug 17 2020

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, MolFromSmilesherhangi 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

4 gilleain Aug 17 2020 at 16:56

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.