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)
답변
4 gilleain
어떤 경우에는 이것이 효과가있을 수 있지만 일반적으로 얼마나 잘 작동할지는 모르겠습니다. 여기에있는 문제는 다음 진술에 반영 될 수 있습니다.
이러한 하위 문자열은 기본 SMILES 문자열의 하위 집합이어야합니다.
모든 부분 문자열 이 부모 분자 의 부분 그래프 가되는 것은 아닙니다 . 의견에서 언급했듯이 이것은 본질적으로 단편화 문제로 보입니다. 다음 예 중 하나를 사용하십시오.
smi_sub1 = 'C1c1ccccc1Cl'
이것이 구문 분석되지 않는 이유는 'C1'로 시작하지만 링을 완료하는 데 해당하는 'C1'이 없기 때문입니다. 따라서 1- 클로로 -2- 메틸 벤젠 인 'Cc1ccccc1Cl'이어야합니다.
이론적으로는 하위 문자열을 가져온 다음 사후 처리하여 '연결 해제 된'링 번호를 제거 할 수 있습니다. 그러나 분자 그래프에서 적절한 조각화를 사용하는 것이 더 합리적이며 SMILES에서 변환 할 필요없이 올바른 하위 그래프를 갖게됩니다.