SMILES Part 2 (Canonical/Isomeric SMILES, SMARTS)


SMILES의 종류
지난 시간에는 분자를 표현할 때 사용하는 SMILES에 대해서 알아보았습니다. 복잡한 그림으로 표현되는 분자를 비교적 간단한 문자열로 나타낼 수 있었죠.

연구를 하다 보면 SMILES 앞에 Canonical 또는 Isomeric 이라는 단어들이 붙은 걸 볼 수 있는데 이것들은 무엇인지, 또 유사한 것 같으면서도 쓰임이 다른 SMARTS 표현법에 대해서도 배워보겠습니다.
Canonical SMILES
어떤 원자를 시작 지점으로 하는지, 고리 구조를 어떻게 표현할 지 등에 따라서 하나의 분자일지라도 그것을 표현하는 SMILES 문자열은 여러 개가 있을 수 있다는 점이 SMILES의 단점 중 하나였는데요. 이러한 문제를 해결할 수 있는 것이 Canonical SMILES입니다. 여기서 ‘Canonical’이란 용어는 ‘표준화된’이라는 의미로 사용되며 하나의 분자는 하나의 Canonical SMILES만을 가지게 됩니다. 따라서 이러한 Canonical SMILES를 사용하면 데이터베이스 내에서 중복을 방지하고 검색의 효율성을 높일 수 있습니다.
Isomeric SMILES
Isomeric SMILES는 Canonical SMILES의 확장 형태로, 분자의 입체 화학적인 특징까지 포함하는 문자열입니다. 이중 결합의 cis/trans, 혹은 키랄 중심의 R/S, E/Z와 같은 이성질체 특성 등이 포함됩니다. Isomeric SMILES는 보다 정확한 화합물의 구조 정보를 전달할 수 있다는 장점이 있기 때문에 3D 구조의 분자 모델링이나 복잡한 합성 경로 분석 등의 분야에서 필수적으로 사용됩니다.
예시)
해열소염진통제인 Ibuprofen의 활성형태인, S-(-)-Ibuprofen의 구조는 아래와 같습니다.

SMILES |
C(Cc1ccc(cc1)C(C)C(=O)O)(C)C c1cc(CC(C)C)ccc1C(C(=O)O)C CC(c1ccc(cc1)CC(C)C)C(O)=O c1cc(CC(C)C)ccc1C(C)C(O)=O |
Canonical SMILES | CC(C)Cc1ccc(C(C)C(=O)O)cc1 |
Isomeric SMILES | CC(C)Cc1ccc(C@@HC(=O)O)cc1 |
같은 분자라도 여러 개의 SMILES로 나타낼 수 있는 것을 볼 수 있고, 이 중 표준화된 형태는 Canonical SMILES라고 보면 됩니다. 입체 이성질체 정보도 표시하고 싶다면 Isomeric SMILES를 사용하면 됩니다. 데이터베이스에 저장하거나 검색할 때는 표준화된 형태를 사용하는 게 좋겠죠? 이와 같이 목적과 편의성에 따라서 여러개의 SMILES들로 표현할 수 있습니다.
Python의 rdkit에서는 다음과 같은 코드로 구할 수 있습니다.
|
SMARTS(SMiles ARbitrary Target Specification)
SMARTS는 SMILES의 확장으로서, 분자의 일부분을 표현할 때 유용합니다. 화합물의 구조나 특정 화학적 특징을 검색하고 지정하기 위해 사용되는 언어로, 화학자들이 화합물 데이터베이스를 더 효율적으로 탐색하고 분석할 수 있도록 도와줍니다. 특정 작용기, 결합 정보, 전자 구성 등을 상세하게 표현할 수 있어서 분자 내의 복잡한 화학적 특징과 패턴을 정의하는 데 적합합니다.
활용 예시

예를 들어, 데이터베이스에서 아래 그림과 같은 Phenothiazine 핵 구조를 가지고 있는 분자들을 찾고 싶어! 라고 하면

Phenothiazine 핵 구조를 가지고 있는 분자
SMARTS pattern :
[#16]1-[#6]2:[#6]:[#6]:[#6]:[#6]:[#6]:2-[#7]-[#6]2:[#6]-1:[#6]:[#6]:[#6]:[#6]:2
이러한 그림을 SMARTS 패턴으로 변환해 검색에 활용할 수 있습니다.
코드 예시
분자 내 특정 SMARTS 패턴이 있는지 확인하는 rdkit 코드는 다음과 같습니다.
from rdkit import Chem mol = Chem.MolFromSmiles('확인할 분자의 SMILES') |

SMARTS의 사용법
SMARTS 패턴은 SMILES(Simplified Molecular Input Line Entry System) 언어를 기반으로 합니다. 자세한 내용은 https://www.daylight.com/dayhtml/doc/theory/theory.smarts.html에 나와있지만 간단하게 살펴보겠습니다. 직접 작성하기에는 꽤나 복잡해보이지만, 기본적인 문법은 SMILES와 유사합니다. 대표적인 문법들은 아래와 같습니다.
(<n>에서 <>은 제외하고 사용하면 됩니다.)
이 외에도 원자의 전하, aromatic, chirality 등을 표현할 수 있고 결합의 종류(단일, 이중, 삼중 결합) 또한 -, =, #과 같은 기호로 표현할 수 있습니다.
SMARTS를 사용할 수 있는 Tools : MarvinSketch
SMILES와 마찬가지로 분자의 SMARTS도 MarvinSketch를 통해 쉽게 구할 수 있습니다. Windows/Mac 에서 모두 사용 가능하고 무료인 Tool입니다. MarvinSketch 다운로드(회원가입 필요) : https://download.chemaxon.com/marvin
사진과 같이 분자를 지정한 뒤, 마우스 오른쪽 클릭하여 Copy As → Daylight SMARTS를 선택하시면 해당 분자의 SMARTS 코드를 얻을 수 있습니다. 반대로 원하는 SMARTS 패턴을 복사해서 MarvinSketch 창에 붙여넣기를 하면 해당 분자를 그림으로 표현할 수도 있습니다.
마치며
이번 포스팅에서는 SMILES의 종류와 SMARTS 패턴의 표현법에 대해 알아보았습니다. SMILES의 표준화는 화학 데이터베이스를 탐색하는 데 있어 중요한 과정입니다. 표준화되지 않은 SMILES를 혼용하면, 동일한 분자임에도 검색되지 않거나 중복 데이터가 발생할 수 있습니다. 한편, SMARTS 패턴은 화합물의 구조적 특징을 검색하고 설명하는 데 매우 유용한 도구입니다. 말로는 표현할 수 있어도 글로 설명하기 까다로운 복잡한 특징들도 SMARTS 패턴을 통해 명확하게 기술할 수 있습니다. 이를 활용하면 대규모 화학 데이터를 효율적으로 분석하고, 특정 구조나 작용기를 가진 화합물을 신속하게 식별할 수 있습니다.
SMILES와 SMARTS와 같은 표기법들은 화학 분야에서 분자를 다루면서 가장 자주 마주치는 것 중 하나인 만큼 기초적인 부분입니다. 직접 작성하거나 완벽히 해석할 필요는 없지만 SMILES의 표준화가 필요한 이유와 SMARTS를 통해서는 어떤 것들을 할 수 있는지에 대해 이해할 수 있으면 좋을 것 같습니다. 이번 포스팅은 여기서 마칩니다.