“프로그램이 가볍다.” “따라하기 쉽다.”
“기능이 다 있다” 이 AI 플랫폼의 이름은?
AI

SMILES Part 2 (Canonical/Isomeric SMILES, SMARTS)

SMILES Part 2에서는 Canonical SMILES와 Isomeric SMILES에 대해 알아보고, SMARTS 표현법을 소개합니다. Canonical SMILES는 분자를 표현하는 여러 가지 문자열 중 표준화된 하나를 선택하는 것이며, 중복을 방지하고 검색의 효율성을 높입니다. Isomeric SMILES는 입체화학적인 특징을 포함하여 보다 정확한 화합물의 구조 정보를 전달합니다.
주예찬.png
주예찬 AI 연구원
2024.05.147min read
SMILES Part 2.png

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 또는 chiral center의 R/S, E/Z와 같은 이성질체 특성 등이 포함됩니다. Isomeric SMILES는 보다 정확한 화합물의 구조 정보를 전달할 수 있다는 장점이 있기 때문에 3D 구조의 분자 모델링이나 복잡한 합성 경로 분석 등의 분야에서 필수적으로 사용됩니다.

예시)

해열소염진통제인 Ibuprofen의 활성형태인 S-(-)-Ibuprofen의 구조는 아래와 같은데요.

해열소염진통제인 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에서는 다음과 같은 코드로 구할 수 있습니다.

from rdkit import Chem

smiles = 'C(Cc1ccc(cc1)C(C)C(=O)O)(C)C'

# Canonical SMILES
# 1)
canon_smiles = Chem.CanonSmiles(smiles)
# 2)
mol = Chem.MolFromSmiles(smiles)
canon_smiles = Chem.MolToSmiles(mol, canonical=True)

# Isomeric SMILES
mol = Chem.MolFromSmiles(smiles)
isomeric_smiles = Chem.MolToSmiles(mol, isomericSmiles=True)
 

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 = '[#16]1-[#6]2:[#6]:[#6]:[#6]:[#6]:[#6]:2-[#7]-[#6]2:[#6]-1:[#6]:[#6]:[#6]:[#6]:2' # 찾고자 하는 일부분
patt = Chem.MolFromSmarts(smarts)
result = mol.GetSubstructMatches(patt)
display(mol)

예시 사진에서 Phenothiazine 핵 구조를 가지고 있는 분자를 찾은 모습

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를 통해서는 어떤 것들을 할 수 있는지에 대해 이해할 수 있으면 좋을 것 같습니다. 이번 포스팅은 여기서 마칩니다.