단순화된 분자입력 라인입력 시스템
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
단순화된 분자입력 라인입력 시스템(SMILES)은 분자 구조를 문자열로 표현하는 표기법이다. 그래프 이론에 기반하여 원자, 결합, 고리, 방향족성, 가지, 입체화학 등을 문자와 기호로 나타낸다. 원자, 결합, 고리, 방향족성, 가지, 입체화학, 동위 원소 등을 표기하며, 화학 반응 또한 표현할 수 있다. SMARTS와 SMIRKS는 SMILES를 확장한 것으로, 각각 부분 구조 검색과 화학 반응을 기술하는 데 사용된다. SMILES는 간결한 표현과 단순한 규칙으로 인해 널리 사용되지만, 구조의 시각적 인상을 완전히 반영하지 못하고, 상대 배치나 절대 배치를 표현하는 데 한계가 있다. SMILES는 구조도 생성 알고리즘을 통해 2차원 표현으로 변환될 수 있으며, 다양한 예시를 통해 분자 구조를 나타낸다.
더 읽어볼만한 페이지
- 컴퓨터 언어 - 데이터베이스 언어
데이터베이스 언어는 데이터베이스를 조작하고 관리하기 위한 언어로서 데이터 조작 언어(DML), 데이터 정의 언어(DDL), 데이터 제어 언어(DCL)로 나뉘며, SQL은 이 모든 요소를 통합하고 질의어와는 구별된다. - 컴퓨터 언어 - 명세 언어
명세 언어는 프로그램의 작동 방식 대신 수행할 기능에 집중하여 데이터와 함수들의 모음으로 시스템을 표현하는 언어이며, 프로그램 정확성 검증에 활용되지만, 형식적이지 않은 명세는 논리적 гарантии 부족으로 오해의 소지가 있다. - 부호화 - 바코드
바코드는 다양한 폭의 막대와 공백 조합으로 정보를 나타내는 기호로, 상품 식별, 재고 관리 등에 사용되며 1차원과 2차원 바코드가 존재하고 바코드 스캐너로 판독되어 산업 효율성을 높인다. - 부호화 - 춤추는 사람
《춤추는 사람》은 셜록 홈즈가 그림 암호 메시지를 통해 벌어지는 사건을 해결하는 이야기로, 암호 해독, 엘시의 과거, 옛 연인의 등장, 살인 사건 등이 전개된다.
단순화된 분자입력 라인입력 시스템 - [IT 관련 정보]에 관한 문서 | |
---|---|
일반 정보 | |
![]() | |
유형 | 화학 표기법 |
개발자 | Arthur T. Balaban과 Irving Motoc |
개발 | 1980년대 |
설명 | 분자의 구조를 나타내는 문자열 |
다른 종류 | |
관련 시스템 | SMARTS InChI SLN |
2. 표기법
SMILES 표기법은 분자 구조를 원자, 결합, 고리, 방향족, 가지, 입체화학 등의 요소로 나타낸다.[6] 그래프 이론에 기반한 컴퓨터 처리를 위해, SMILES는 깊이 우선 탐색으로 노드(원자)와 변(결합)을 표현하는 문자열이다.
분자 그래프를 만들 때, 먼저 수소 원자를 제거하고(단, 불균형 중심 제외), 고리는 잘라 신장 트리로 변환한다. 고리가 열린 부분에는 숫자를 붙여 연결된 원자를 나타내고, 괄호는 트리 분기 위치를 나타낸다.
화학 반응은 `원계>>생성계` 또는 `원계>촉매 등>생성계`로 표시한다. 프로펜에 물이 부가되어 프로판-2-올이 되는 반응은 `CC=C.O>>CC(O)C`이다.
자세한 내용은 [1], [2]를 참조하라.
2. 1. 원자
원자는 원소 기호를 사용하여 나타내며, 일반적으로 대괄호([])로 묶는다. B, C, N, O, P, S, F, Cl, Br, I과 같은 유기 화합물에서 자주 사용되는 원소들은 대괄호를 생략할 수 있다.[1]다음과 같은 경우에는 괄호를 생략할 수 있다.
- B, C, N, O, P, S, F, Cl, Br, I의 "유기적인 부분집합"에 속한 경우
- 형식전하가 없는 경우
- 어떠한 원자에 수소가 결합된 수가 원자가 전자의 수와 같을 경우 (일반적으로 하나의 원자가 전자를 갖지만, 질소, 인, 황 등은 원자가 전자가 두 가지로 나타난다.)
- 일반적인 동위 원소인 경우
- 키랄(카이랄) 중심이 아닌 경우
다른 원소는 모두 괄호로 묶어야 하며 전하와 수소를 나타내야 한다. 예를 들어, 물에 대한 SMILES은 `O` 또는 `[OH2]`로 쓸 수 있다. 이때 수소는 원자로 각괄호를 쓸 수 있기 때문에, `[H]O[H]`로도 쓸 수 있다.[1]
괄호를 사용할 때는 괄호 안의 원자가 하나 이상의 수소와 결합하면 `H`를 적는데, 1보다 크면 수소 원자의 수를 적고, 양전하의 경우에는 `+`를, 음전하의 경우에는 `-`를 사용하여 표시한다. 예를 들어 암모늄의 경우 `[NH4+]`로 나타낼 수 있다.[1] 전하가 있는 경우에는 일반적으로 숫자로 쓰이지만, 예외적으로 이온의 전하량에서는 부호를 반복하는 것도 가능하다.[1] 따라서, 티타늄(IV) Ti4+에 대해서는 [Ti+4] 또는 [Ti+++]로 쓸 수 있고, 수산화 이온(OH-)은 `[OH-]`, 하이드로늄 이온(H3O+)으로 표시되며 코발트(III) 양이온(Co3+)은 `[Co+3]` 또는 `[Co+++]`이다.[1]
동위원소를 명시적으로 지정하는 경우에는 질량수를 정수로 전치한다 (예를 들어 탄소14는 `[14C]`).[2] 형식 전하를 가지고 있는 경우에는 `+-`와 숫자를 후치한다 (예를 들어 암모늄 이온은 `[NH4+]`, 철(II)는 `[Fe+2]`).[2] 불균형 중심에 대해서는 별도로 후술한다.[2]
2. 2. 결합
단일 결합은 '-'로 표시하거나 생략할 수 있다. 예를 들어 에탄올은 보통 'CCO'로 표기한다. 이중 결합(=), 삼중 결합(#), 사중 결합($)은 해당 기호를 사용한다. 예를 들어, 이산화탄소는 'O=C=O', 시안화수소는 'C#N'로 표기한다.[1]방향족 결합은 ':'로 표시할 수 있다. 결합이 없는 경우는 '.'으로 표시하는데, 염화나트륨 수용액은 '[Na+].[Cl-]'로 나타낼 수 있다.[1]
시스-트랜스 이성질체를 구별하기 위해 이중 결합에 인접한 단일 결합의 방향을 '/', '\' 기호로 나타낼 수 있다. 예를 들어 시스, 트랜스 2-부텐은 각각 'C/C=C\C', 'C/C=C/C'로 표기한다.[1]
2. 3. 고리
고리 구조는 임의의 지점에서 각 고리를 풀어 비인접 원자 간의 연결을 보여주기 위해 각 비인접 원자에 같은 숫자를 작성한다.[1]예를 들어, 사이클로헥세인과 1,4-다이옥세인은 각각 `C1CCCCC1`과 `O1CCOCC1`로 기록될 수 있다.[1]
고리가 2개일 경우, 두 번째 고리의 비인접 원자에도 숫자를 붙인다. 데칼린(데카하이드로나프탈렌)은 `C1CCCC2C1CCC2`로 기록될 수 있다.[1]
SMILES는 고리의 비인접 원자에 대한 번호를 특정 순서로 사용할 필요가 없으며 숫자 `0`도 가능하며, 서로 다른 두 고리에 같은 번호를 사용하여 나타내는 것도 가능하다. 하지만 이는 문자열을 읽기 어렵게 만들 수 있다.[1] 예를 들어, 바이사이클로헥실은 일반적으로 `C1CCCC1C2CCCC2`로 작성되지만, `C0CCCCCC0CCC0`로도 작성될 수 있다.[1]
하나의 원자 뒤에 여러 숫자가 표기된 경우는 여러 개의 고리 결합을 나타낸다. 데칼린의 다른 SMILES 표기법은 `C1CCCC2CCCCC12`이다. 두 자리 수의 숫자를 나타낼 때에는 숫자 앞에 `%`를 붙여서 표현한다.[1]
고리를 나타낼 때 다중 결합을 이룬 원자 또한 선택할 수 있다. 사이클로프로페인은 일반적으로 `C1=CC1`로 쓰이지만, 이중 결합을 고리 결합으로 선택한다면, `C=1CC1`, `C1CC=1` 또는 `C=1CC=1`로 쓸 수 있다. (대체로 첫 번째 문자열이 선호된다.) `C=1CC-1`는 고리와 결합이 충돌하는 유형이기 때문에 모순이다.[1]
고리 결합은 다중 결합을 나타내기 위해 사용될 수 없다. `C1C1`는 에틸렌에 대한 `C=C`로 표기가 불가능하다. 하지만 결합이 없을 때에는 사용될 수 있다. `C1.C2.C12`은 프로페인의 `CCC`를 나타내지만 주로 후자가 일반적이다.[1]
두가지의 고리가 인접한 경우, 두 고리를 포함한 원자를 선택하여 고리결합을 나타낸다면, 가지 표현을 줄일 수 있기 때문에 더 단순한 작성이 가능하다. 사이클로헥세인-1,2-다이올은 가장 간단하게 `OC1CCCC1O`로 쓸 수 있다. 이때 고리를 끊기 위해 다른 원자를 선택하면 괄호를 써야 하는 더 복잡한 구조가 생성된다.[1]
2. 4. 방향족
방향족성 고리는 다음 세 가지 형태로 나타낼 수 있다.- 케쿨레 형태:
C1=CC=CC=C1
처럼 단일 결합과 이중 결합을 번갈아 가며 표시한다. - 방향족 결합 기호 사용:
C1:C:C:C:C:C1
와 같이 표시한다. - 구성 원자 표현: B, C, N, O, P, S 원자를 각각
b
,c
,n
,o
,p
,s
로 나타낸다.
세 번째 경우, 두 원자 사이의 결합은 방향족 결합으로 간주된다. 벤젠, 피리딘, 퓨란은 각각
c1ccccc1
, n1ccccc1
, o1cccc1
로 표시할 수 있다.피롤의 방향족 질소는
[nH]
로 표시하며, 이미다졸은 n1c[nH]cc1
로 표기한다.바이페닐과 같이 방향족 원자들이 단일 결합하는 경우,
c1ccccc1-c2ccccc2
처럼 단일 결합을 명시해야 한다. 이는 -
기호가 필요한 몇 안 되는 경우 중 하나이다.[1]2. 5. 가지
가지는 프로피온산의CCC(=O)O
, 플루오로포름의 FC(F)F
에서와 같이 괄호(())로 설명된다.[1] 괄호 안의 첫 번째 원자와 괄호 뒤의 첫 번째 원자는 모두 같은 원자에 결합되어 있음을 나타낸다.[1] 결합은 괄호 안쪽에 표시되어야 하며 바깥쪽(예: CCC=(O)O
)은 잘못된 표기이다.[1]3,4-시아노이솔 이성질체에서 치환 고리는
COc(c1)cccc1C#N
([https://web.archive.org/web/20130522091354/http://www.daylight.com/daycgi/depict?434f6328633129636363633143234e 그림 참고]) 또는 COc(cc1)ccc1C#N
([https://web.archive.org/web/20130522074308/http://www.daylight.com/daycgi/depict?434f6328636331296363633143234e 그림 참고])로 표기할 수 있다.[1] 이렇게 대체된 고리를 SMILES로 표기하는 것이 더 읽기 쉽다.[1]가지는 임의의 순서로 작성할 수 있다.[1] 브로모클로로디플루오로메탄은
FC(Br)(Cl)F
, BrC(F)(F)Cl
, C(F)(Cl)(F)Br
등으로 표기할 수 있다.[1] 일반적으로 SMILES 문자열은 단순한 가지를 먼저, 주사슬이 가장 복잡할 때 가장 읽기 쉽다.[1]이러한 표기에서 링 번호를 다시 쓰는 경우, 링 번호는 SMILES 문자열의 표시 순서에 따라 쌍으로 연결된다.[1] 이때 올바른 표기를 위해 일부 조정이 필요한 경우가 발생할 수 있다. (예: 이 지정된 경우)[1]
괄호를 필요로 하지 ''않는'' 한 가지 형태는 고리 결합이다.[1] 고리 결합을 적절히 표기하면 필요한 괄호 수를 줄일 수 있다.[1] 예를 들어, 톨루엔은 일반적으로
Cc1ccccc1
or c1ccccc1C
로 표기되며, c1cc(C)ccc1
또는 c1cc(ccc1)C
로 표기되는 경우와 달리 괄호를 쓰지 않을 수 있다.[1]2. 6. 입체화학
SMILES는 입체 이성질체의 형태를 표기하는 방법을 제공한다.이중 결합의 기하 이성질체는 이중 결합에 인접한 방향성 단일 결합을 나타내는 문자
/
와 \
를 사용하여 표시한다. 예를 들어, '''F/C=C/F'''는 플루오린이 이중 결합의 반대편에 있는 트랜스-1,2-디플루오로에틸렌을 나타내고, '''F/C=C\F'''는 플루오린이 이중 결합의 같은 쪽에 있는 시스-1,2-디플루오로에틸렌을 나타낸다.[1]키랄 분자의 구성, 즉 키랄 중심은
@
또는 @@
기호로 지정된다. 문자열에 나타나는 순서대로 네 개의 결합을 표기할 때, 첫 번째 결합의 관점에서 중심 탄소를 보면 나머지 세 개가 시계 방향 (@@
) 또는 반시계 방향 (@
)으로 나타난다. @
기호 자체가 시계 반대 방향의 모양을 띠고 있기 때문에 이러한 표기법이 사용된다.[1]예를 들어, 아미노산 알라닌의 경우, 일반적인 이성질체인 L-알라닌은 '''N[C@@H](C)C(=O)O'''로 표기된다. 여기서 질소-탄소 결합을 기준으로 수소(H), 메틸기(CH3), 카복실기(C(=O)O)가 시계 방향으로 배열되어 있다. 반면, D-알라닌은 '''N[C@H](C)C(=O)O'''로 표기된다.[1]
2. 7. 동위 원소
동위 원소는 원자 기호 앞에 숫자를 붙여 표시한다. 예를 들어 벤젠의 원소 중 하나가 탄소-14라면 `[14C]1ccccc1`로 표기하고, 듀테로화 클로로포름은 `[2H]C(Cl)(Cl)Cl`로 표기한다.[1] 질량수를 정수로 앞에 붙여 동위원소를 명시적으로 나타낸다. 예를 들어 탄소14는 `[14C]`와 같이 표기한다.[1]3. 그래프 이론 기반 정의
SMILES는 그래프 이론에 기반하여 분자 그래프를 깊이 우선 탐색으로 순회하며 노드(원자)와 변(결합)을 문자열로 표현하는 방식이다. 분자 그래프를 구축할 때는 먼저 수소 원자를 제거하고(단, 불균형 중심은 제외), 고리 구조는 끊어서 신장 트리로 만든다. 끊어진 고리 부분에는 숫자를 붙여 연결되었던 노드를 표시한다. 괄호(()
)는 트리의 분기점을 나타낸다.[1]
원자는 대괄호([]
)로 묶어 표현하지만, B, C, N, O, P, S, F, Cl, Br, I와 같이 "organic subset"에 속하고, 형식 전하가 없으며, 동위원소를 명시할 필요가 없고, 불균형 중심이 아닌 경우에는 []
를 생략할 수 있다. 이 경우 원자가에 따라 수소가 암묵적으로 추가된 것으로 간주한다. 예를 들어, O
와 N
은 각각 물과 암모니아를 나타낸다. 형식 전하가 있는 경우에는 +-
와 숫자를 뒤에 붙여 표시한다(예: 암모늄 이온은 [NH4+]
, 철(II)는 [Fe+2]
). 동위원소를 명시하려면 질량수를 정수로 앞에 붙인다(예: 탄소14는 [14C]
).[1]
결합은 단일 결합부터 순서대로 -
, =
, #
으로 나타내고, 방향족 고리(1.5중 결합)에서는 :
로 나타낸다(단, 단일 결합 -
는 보통 생략). OpenSMILES 확장에서는 4중 결합을 $
로 표시한다. 이중 결합 =
에 연결된 단일 결합의 방향을 /
, \
로 표시하여 시스-트랜스 이성질체를 구별한다. 예를 들어, C/C=C\C
와 C/C=C/C
는 각각 시스와 트랜스 2-부텐이다. 결합이 없는 것은 .
으로 표현한다(예: 과산화 수소 OO
에 대해 O.O
는 물 2분자).[1]
고리 구조에서는 연결된 원자 뒤에 숫자를 붙여 표시한다. 예를 들어 프로판과 사이클로프로페인은 각각 CCC
와 C1CC1
으로 나타낸다. 레이블 숫자는 하나의 원자에 하나가 원칙이지만, 어떤 레이블이 이미 두 곳에 나타나고 그 역할이 끝났다면 다른 쌍을 위해 재사용할 수 있다. 레이블은 한 자리 숫자로 간주되며(예: C12
는 레이블 1
, 2
에 연결된 탄소), 두 자리 레이블을 표현하려면 %
를 앞에 붙인다(예: C%12
는 레이블 12
).[1]
방향족 고리를 구성하는 원자(탄소, 질소, 산소, 인, 황, 비소, 셀레늄, OpenSMILES 확장에서는 붕소 포함)는 소문자로 표기한다. 예를 들어 사이클로헥세인 C1CCCCC1
에 대해 벤젠은 c1ccccc1
이다. 방향족 고리의 결합을 단일·이중 결합으로 표시하는 것(벤젠을 1,3,5-사이클로헥사트라이엔처럼 C1=CC=CC=C1
)을 케쿨레화라고 부르기도 한다.[1]
불균형 중심에는 @
또는 @@
를 붙여, 근의 방향에서 보았을 때 각각 시계 반대 방향, 시계 방향으로 후속 원자단이 배열되어 있음을 나타낸다(@
가 시계 반대 방향). 예를 들어, ''S''-알라닌의 SMILES는 아미노기를 근으로 하면 N[C@@H](C)C(=O)O
이다(N[C@@]([H])(C)C(=O)O
와 같이 써도 좋다).[1]
어떤 계에 대한 SMILES는 유일하게 정해지지 않을 수 있다. 예를 들어 ''S''-알라닌은 위 SMILES 외에도 C[C@H](N)C(=O)O
, C[C@@H](C(=O)O)N
, OC(=O)[C@H](C)N
등으로도 나타낼 수 있다. 따라서 특정 알고리즘에 따라 유일하게 변환된 SMILES를 정규화된(canonical) SMILES라고 부르지만, 데이터베이스나 프로그램에 따라 알고리즘이 다를 수 있다.[1]
화학 반응은 원계>>생성계
또는 원계>촉매 등>생성계
로 표시한다. 예를 들어 프로펜에 물이 부가되어 프로판-2-올이 되는 반응은 CC=C.O>>CC(O)C
이다.[1]
4. 확장
SMARTS[3]는 부분 구조 검색이 가능하도록 SMILES를 확장한 것으로, 화학 데이터베이스 검색 프로그램 등에서 사용된다. 원자 및 결합에 대한 쿼리가 추가되어 있으며, 예를 들어 [C,c]
는 임의의 (지방족 또는 방향족) 탄소에 매칭된다.
SMIRKS[4]는 SMILES와 SMARTS의 하이브리드로, 일반적인 화학 반응을 기술한다.
5. 특징
SMILES 표기법의 장점은 화학 구조를 적은 바이트 길이로 표현할 수 있고, 규칙이 간단하여 사람이 문자열로 변환할 때 복잡한 연산이 필요 없다는 점에 있다.
한편, 단점으로는 원래 구조식의 방향이나 치환기가 뻗어 나가는 방향 등 구조식을 눈으로 보았을 때의 인상이 완전히 사라진다는 점이 있다. 그 외에도 표준 SMILES 표기법에서는 상대 배치도 절대 배치도 표현할 수 없다.
6. 변환
SMILES는 구조도 생성(SDG) 알고리즘을 사용하여 2차원 표현으로 다시 변환할 수 있다. 이 변환이 항상 정확한 것은 아니다.[10] 3차원 표현으로의 변환은 에너지 준위가 바닥상태인 분자로 나타나게 된다. 변환을 위한 다양한 사이트와 앱이 있기 때문에 이를 사용하면 쉽게 변환할 수 있다.
7. 예시
COc1cc(C=O)ccc1O
CC(=O)NCCC1=CNc2c1cc(OC)cc2
CC(=O)NCCc1c[nH]c2ccc(OC)cc12
CCc(c1)ccc2[n+]1ccc3c2[nH]c4c3cccc4
CCc1c[n+]2ccc3c4ccccc4[nH]c3c2cc1
CN1CCC[C@H]1c2cccnc2

CCC[C@@H](O)CC\C=C\C=C\C#CC#C\C=C\CO
CCC[C@@H](O)CC/C=C/C=C/C#CC#C/C=C/CO
CC1=C(C(=O)C[C@@H]1OC(=O)[C@@H]2[C@H](C2(C)C)/C=C(\C)/C(=O)OC)C/C=C\C=C
O1C=C[C@H]([C@H]1O2)c3c2cc(OC)c4c3OC(=O)C5=C4CCC(=O)5
OC[C@@H](O1)[C@@H](O)[C@H](O)[C@@H](O)[C@H](O)1
OC[C@@H](O1)[C@@H](O)[C@H](O)[C@@H]2[C@@H]1c3c(O)c(OC)c(O)cc3C(=O)O2
CC(=O)OCCC(/C)=C\C[C@H](C(C)=C)CCC=C
CC[C@H](O1)CC[C@@]12CCCO2
CC(C)[C@@]12C[C@@H]1[C@@H](C)C(=O)C2
OCCc1c(C)[n+](cs1)Cc2cnc(C)nc2N