Mengonversi string SMILES menjadi sub-string yang valid

Aug 17 2020

Saya memiliki string SMILES sebagai berikut.

smi= 'CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl'

Apakah ada yang saya ubah string SMILES ini menjadi sub-string yang valid yang nantinya dapat diproses di RDKIT.

Misalnya

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)'

Sub-string ini harus merupakan bagian dari string utama SMILES dan juga harus valid dari sudut pandang sintaks SMILES .

Sehingga ketika saya menggunakan fungsinya MolFromSmiles, itu diproses tanpa kesalahan atau tidak ada balasannya?

Mol_sub1 = Chem.MolFromSmiles(smi_sub1)
Mol_sub2 = Chem.MolFromSmiles(smi_sub2)
Mol_sub3 = Chem.MolFromSmiles(smi_sub3)

Jawaban

4 gilleain Aug 17 2020 at 16:56

Meskipun ini mungkin berhasil dalam beberapa kasus, saya tidak yakin seberapa baik ini akan bekerja secara umum. Masalahnya di sini mungkin tercermin dalam pernyataan ini:

Sub-string ini harus merupakan bagian dari string utama SMILES

Tidak setiap substring akan menjadi subgraf dari molekul induk. Seperti yang disebutkan dalam komentar, ini tampaknya pada dasarnya adalah masalah fragmentasi. Ambil salah satu contoh Anda ini:

smi_sub1 = 'C1c1ccccc1Cl'

Alasan ini tidak akan mengurai adalah karena ia dimulai dengan 'C1' tetapi tidak memiliki 'C1' yang sesuai untuk menyelesaikan cincinnya. Jadi seharusnya 'Cc1ccccc1Cl', yang merupakan 1-chloro-2-methylbenzene.

Secara teoritis, Anda dapat mengambil substring, lalu memprosesnya untuk menghapus nomor dering 'terputus'. Namun, akan lebih masuk akal untuk menggunakan fragmentasi yang tepat pada grafik molekuler, dan kemudian Anda akan memiliki subgraf yang benar, tanpa perlu mengubahnya dari SMILES.