이득:
- 이름이 아닌 구조 표현으로 분자를 식별하는 능력(사람의 경우 SMILES, 데이터베이스의 경우 InChI/InChIKey)
- RDKit을 사용하여 인공 지능이 제공한 각 SMILES를 구문 분석, 검증 및 정규화하여 유효하지 않거나 잘못된 구조를 감지하는 기능
- 분자량, 공식과 같은 결정적 양은 언어 모델이 아닌 규칙 기반 도구에서 얻어야 함을 이해할 수 있습니다.
화학에서 AI를 안전하게 사용하기 위한 첫 번째 조건은 기계와 인간 모두가 이해할 수 있는 언어로 분자를 작성하는 것입니다. "페놀"이라고 말하면 AI가 올바르게 이해합니다. 하지만 "산성"이라고 하면 수천 가지 가능성이 있습니다. 이름이 모호합니다. 구조 표현이 정확합니다. 이번 단원에서는 분자를 텍스트로 변환하는 두 가지 기본 표기법(SMILES 및 InChI)과 이를 결정적으로 검증하는 도구(RDKit)를 학습합니다. 우리의 목표는 AI가 결코 오해하지 않는 방식으로 분자를 제공하고 AI가 생성한 구조를 도구로 확인하는 것입니다.
스마일즈란 무엇인가요?
SMILES(Simplified Molecular-Input Line-Entry System)는 한 줄의 텍스트에 분자를 쓰는 형식입니다. 원자는 문자로, 결합은 기호로, 고리는 숫자로 표시됩니다. 예:
- 에탄올: CCO(탄소-탄소-산소, 암시적 수소).
- 벤젠: c1ccccc1(소문자 "c"는 방향족 탄소를 나타냅니다. 1은 고리를 닫습니다).
- 아스피린: CC(=O)Oc1ccccc1C(=O)O.
- 카페인: Cn1cnc2c1c(=O)n(C)c(=O)n2C.
SMILES의 장점은 전체 링크 구조를 단일 라인으로 전달한다는 것입니다. 약점은 동일한 분자가 여러 개의 유효한 SMILES를 가질 수 있다는 것입니다(이를 비정규성이라고 함). 잠시 후 RDKit을 사용하여 이 문제를 해결하겠습니다.
힌트: 분자의 "표준 SMILES"는 해당 분자의 단일 표준 철자입니다. 두 개의 SMILES가 동일한 분자인지 확인하려면 이를 정규화하고 비교하십시오. 문자적으로 동일해서는 안 되지만 분자는 동일해야 합니다.
InChI란 무엇인가요?
InChI(International Chemical Identifier)는 IUPAC에서 개발한 표준 식별자입니다. SMILES와의 차이점은 동일한 분자가 항상 동일한 InChI를 제공한다는 것입니다. 즉, 본질적으로 표준적입니다. 길고 읽기 어렵지만 데이터베이스 일치에 이상적입니다. 검색에는 약어로 "InChIKey"(27자 다이제스트)가 사용됩니다.
- 아스피린 InChIKey: BSYNRYMUTXBXSQ-UHFFFAOYSA-N.
규칙: 사람들은 스마일(읽기)로 말하고, 기계와 데이터베이스는 InChI/InChIKey(정확히)와 일치합니다. AI에게 미소를 선사하세요. InChIKey로 데이터베이스를 확인하세요.
RDKit: 결정론적 검증 엔진
RDKit은 오픈 소스 화학정보학 라이브러리입니다. 언어 모델과 달리 규칙 기반입니다. SMILES를 구문 분석하고, 분자량을 계산하고, 표준 SMILES를 생성하고, InChI/InChIKey를 반환하고, 분자를 그립니다. 따라서 RDKit은 AI가 "예측"하는 것을 "계산"합니다. 이것이 워크플로의 핵심입니다. AI가 생성하고 RDKit이 확인합니다.
기본 확인 흐름:
from rdkit import Chemfrom rdkit.Chem import Descriptors, Drawsmiles = "CC(=O)Oc1ccccc1C(=O)O" Chem.MolToSmiles(mol)) print("분자식:", Chem.rdMolDescriptors.CalcMolFormula(mol)) print("분자량:", round(Descriptors.MolWt(mol), 2), "g/mol") print("InChIKey:", Chem.MolToInchiKey(mol))
MolFromSmiles가 None을 반환하면 AI가 잘못된 분자를 제공한 것입니다. 이것만으로도 매우 귀중한 경고입니다. 유효하다면 더 이상 언어 모델에 분자량을 물어볼 필요가 없습니다. 그것은 결정론적으로 당신의 손에 달려 있습니다.
단계별: AI + RDKit 상호 운용
- 분자 식별: AI에 이름을 지정하고 SMILES를 요청합니다. 예를 들어 "파라세타몰에 대한 표준 SMILES를 확인하세요."
- 확인: MolFromSmiles를 사용하여 들어오는 SMILES를 구문 분석합니다. 없음인 경우 거부합니다.
- Canonicalize: MolToSmiles를 사용하여 표준 철자를 검색합니다. 이제부터 항상 이것을 사용하세요.
- 숫자 계산: AI가 아닌 RDKit에서 분자량, 공식, 고리 수, 수소 결합 기증자/수용자 수 등을 가져옵니다.
- 수정 ID: InChIKey를 생성하고 데이터베이스(PubChem)에서 검색하여 분자가 실제로 원하는 화합물인지 확인합니다.
복사 가능한 템플릿 4개
1) SMILES 요청(명사에서 구조로):
과제: 다음 화합물에 대한 표준적인 미소를 쓰십시오. 화합물: 파라세타몰(아세트아미노펜). 규칙: SMILES 문자열과 InChIKey만 제공하고 더 이상 설명을 추가하지 마십시오. 확실하지 않은 경우에는 "UNSURE"라고 기재하고 구성하지 마십시오.
2) SMILES 검증 요청(구조에서 제어까지):
아래의 SMILES를 살펴보세요: CC(=O)Nc1ccc(O)cc1질문:1) 이것이 유효한 SMILES인가요?2) 어떤 화합물이 (일반 이름)에 해당합니까?3) 분자식은 무엇입니까? 참고: RDKit을 사용하여 정확한 분자량을 계산하겠습니다. 당신은 구조 해석을 제공합니다.
3) 두 가지 표현 비교:
나는 두 개의 스마일을 가지고 있습니다:A) OCCB) CCOTask: 이것들은 같은 분자인가요, 아니면 다른가요? 추론을 작성하세요. 참고: RDKit에서 답변을 정규화하여 교차 확인하겠습니다.
4) 구조 설명(학습 목적):
스마일: Cn1cnc2c1c(=O)n(C)c(=O)n2CT작업: 이 스마일을 하나씩 읽고 일반 터키어로 각 기호(원자, 결합, 고리, 방향성)가 무엇을 의미하는지 설명하세요. 그리고 어떤 화합물인지 알려주세요.
약한 프롬프트 / 강한 프롬프트
약함:
아세트아미노펜의 특성을 알려주세요.
"기능"이 모호합니다. AI는 분자량부터 녹는점까지 난수를 생성하는데, 그 중 일부는 틀릴 것입니다.
강한:
화합물: 아세트아미노펜.1) Canonical SMILES 및 InChIKey ver.2) 분자식을 제공하십시오. 규칙: 분자량, 녹는점 등과 같은 숫자 값을 제공하지 마십시오. RDKit/PubChem을 사용하여 얻을 것입니다. 빌드 ID만 알려주세요.
차이점: 우리는 AI가 강한 부분(구조 정체성) 쪽으로 향하고 약한 부분(실험 수치)에서 멀리하도록 지시했습니다.
노출수 비교
특징
미소
인치 / 인치키
가독성
높음(사람 친화적)
낮음(기계 친화적)
정경성
변경될 수 있음(표준화가 필요함)
자연스럽게 싱글
사용법
인간의 의사소통, 그리기, 입력
데이터베이스 일치, ID
입체화학
지원(@ 기호)
지지대(계층형)
AI에게 주다
이상적인
확인에 이상적
미니 케이스
사례 1 — 두 개의 이름, 하나의 분자. 한 학생은 "N-아세틸-파라-아미노페놀"과 "파라세타몰"이 다른 화합물이라고 생각하고 두 가지 별도의 실험을 계획했습니다. RDKit에서 그들의 SMILES를 정규화했을 때 둘 다 CC(=O)Nc1ccc(O)cc1로 밝혀졌습니다. 그것은 같은 분자였습니다. 손실: 반나절의 계획; 이득: 2분 정규화 확인으로 피할 수 있었습니다.
사례 2 — 유효하지 않은 SMILES 캡처. AI는 변형에 대해 CC(=O)Nc1ccc(O)cc1C(를 반환했습니다(괄호는 닫히지 않음). 학생은 MolFromSmiles를 실행했고 None을 반환했으며 즉시 오류를 확인하고 수정된 SMILES를 요청했습니다. 확인이 없었다면 잘못된 구조가 모든 계정에 퍼졌을 것입니다.
사례 3 — 잘못된 분자량. YZ는 이부프로펜(C13H18O2)에 대해 "분자량 214.3g/mol"이라고 밝혔습니다. RDKit 계산 결과는 206.28g/mol이었습니다. 0.1mol의 차이: YZ에서는 21.43g, 실제로는 20.63g입니다. 3.9%의 이러한 차이는 화학양론 및 수율 계산을 방해합니다. 그것은 결정론적 미적분학을 가져왔습니다.
일반적인 실수
- 분자에 이름을 부여합니다. 동의어/상품명이 혼동됩니다. 항상 SMILES 또는 InChI를 포함하세요.
- 정규화하지 않고 SMILES를 비교합니다. OCC와 CCO는 텍스트에서는 다르지만 분자에서는 동일합니다.
- 혀 모델에 분자량을 묻는다. 이는 결정론적인 계산입니다. 이는 RDKit에서 수행되거나 공식에서 수동으로 수행됩니다.
- 유효하지 않은 미소를 발견하지 못했습니다. MolFromSmiles None의 반환을 확인하지 않고 잘못된 구조를 계속 사용합니다.
- 입체화학을 무시합니다. 두 거울상 이성질체(거울상 이성질체)는 서로 다른 생물학적 효과를 나타낼 수 있습니다. @/@@ 기호를 건너뛰면 SMILES가 표시됩니다.
주의: 동일한 분자식은 다른 분자를 의미하지 않습니다. C2H6O는 에탄올(CCO)이자 디메틸에테르(COC)입니다. 공식의 평등은 정체성의 평등이 아닙니다. 식별을 위해 InChIKey를 사용하십시오.
요약하면
- 이름이 아닌 구조 표기법으로 분자를 식별합니다. SMILES는 인간, InChI/InChIKey는 데이터베이스입니다.
- RDKit은 결정적입니다. AI가 예측하고 RDKit이 계산하고 검증합니다.
- MolFromSmiles로 각 AI SMILES를 구문 분석하고 없음을 확인한 다음 정규화합니다.
- 언어 모델이 아닌 RDKit에서 분자량 및 공식과 같은 숫자를 가져옵니다.
- 공식 동일성은 분자 동일성을 의미하지 않습니다. 식별을 위해 InChIKey를 사용하십시오.
응용과제
세 가지 화합물(예: 카페인, 이부프로펜, 글리신)을 선택하십시오. AI에게 각각에 대한 표준 SMILES를 요청하세요. 그런 다음 RDKit 스크립트를 작성하고(위의 템플릿 사용) 표준 SMILES, 분자식, 분자량, InChIKey를 생성합니다. AI가 제시한 SMILES 중 유효한 것은 몇 개입니까? YZ가 분자량도 제공한 경우 RDKit 값과의 차이를 백분율로 계산합니다. 발견한 내용을 작은 테이블에 표시합니다.
체크리스트
- [ ] 나는 SMILES와 InChI/InChIKey가 무엇인지, 언제 사용해야 하는지 알고 있습니다.
- [ ] 나는 AI가 제공한 모든 미소를 MolFromSmiles로 확인합니다.
- [ ] 비교하기 전에 SMILES를 정규화합니다.
- [ ] 언어 모델이 아닌 RDKit에서 분자량과 공식을 얻고 있습니다.
- [ ] InChIKey를 사용하여 데이터베이스에서 분자 동일성을 확인합니다.
- [ ] 나는 입체화학이 중요한 상황을 알고 있다.