Mengonversi string SMILES menjadi sub-string yang valid
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
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.