Lợi nhuận:
- Khả năng xác định các phân tử không phải bằng tên mà bằng cách biểu diễn cấu trúc (SMILES với con người, InChI/InChIKey với cơ sở dữ liệu)
- Khả năng phát hiện các cấu trúc không hợp lệ hoặc không chính xác bằng cách phân tích cú pháp, xác thực và chuẩn hóa từng SMILES do trí tuệ nhân tạo đưa ra với RDKit
- Có thể hiểu rằng các đại lượng xác định như trọng lượng phân tử và công thức phải được lấy từ công cụ dựa trên quy tắc chứ không phải từ mô hình ngôn ngữ.
Điều kiện đầu tiên để sử dụng AI một cách an toàn trong hóa học là viết phân tử bằng ngôn ngữ mà cả máy móc và con người đều có thể hiểu được. Bạn nói "phenol", AI hiểu đúng; nhưng khi bạn nói "axit" thì có hàng nghìn khả năng. Những cái tên không rõ ràng; biểu diễn cấu trúc là chính xác. Trong phần này, chúng ta sẽ tìm hiểu hai ký hiệu cơ bản để dịch phân tử thành văn bản (SMILES và InChI) và công cụ xác minh chúng một cách xác định (RDKit). Mục tiêu của chúng tôi: cung cấp phân tử cho AI theo cách mà nó sẽ không bao giờ hiểu nhầm và xác nhận cấu trúc do AI tạo ra bằng một công cụ.
SMILES là gì?
SMILES (Hệ thống nhập dòng đầu vào phân tử đơn giản hóa) là một định dạng viết một phân tử trong một dòng văn bản. Các nguyên tử được biểu thị bằng các chữ cái, liên kết bằng ký hiệu và vòng bằng số. Ví dụ:
- Ethanol: CCO (cacbon–cacbon–oxy; hydro tiềm ẩn).
- Benzen: c1ccccc1 (chữ thường “c” biểu thị carbon thơm; 1 đóng vòng).
- Aspirin: CC(=O)Oc1ccccc1C(=O)O.
- Cà phê: Cn1cnc2c1c(=O)n(C)c(=O)n2C.
Sức mạnh của SMILES là nó mang toàn bộ cấu trúc liên kết trong một dòng duy nhất; Điểm yếu của nó là cùng một phân tử có thể có nhiều SMILES hợp lệ (điều này được gọi là không chính tắc). Chúng tôi sẽ giải quyết vấn đề này bằng RDKit ngay lập tức.
Gợi ý: "NỤ CƯỜI chuẩn" cho một phân tử là cách viết chuẩn, duy nhất cho phân tử đó. Để xem hai SMILES có phải là cùng một phân tử hay không, hãy chuẩn hóa và so sánh chúng; Chúng không được giống nhau về mặt văn bản, nhưng chúng phải là các phân tử bằng nhau.
InChI là gì?
InChI (International Chemical Identifier) là mã định danh tiêu chuẩn được phát triển bởi IUPAC. Sự khác biệt so với SMILES là cùng một phân tử luôn cho cùng một InChI; nghĩa là nó có tính chất kinh điển. Nó dài và khó đọc nhưng lý tưởng cho việc khớp cơ sở dữ liệu. Chữ viết tắt "InChIKey" (bản tóm tắt gồm 27 ký tự) được sử dụng để tìm kiếm.
- Aspirin InChIKey: BSYNRYMUTXBXSQ-UHFFFAOYSA-N.
Quy tắc: Mọi người nói SMILES (đọc), máy móc và cơ sở dữ liệu khớp với InChI/InChIKey (chính xác). Trao nụ cười cho AI; Xác nhận trong cơ sở dữ liệu bằng InChIKey.
RDKit: công cụ xác minh tất định
RDKit là một thư viện tin hóa học mã nguồn mở. Không giống như mô hình ngôn ngữ, nó dựa trên quy tắc: phân tích SMILES, tính toán trọng lượng phân tử, tạo SMILES chuẩn, trả về InChI/InChIKey, rút ra phân tử. Vì vậy RDKit “tính toán” những gì AI “dự đoán”. Đây là trọng tâm của quy trình làm việc: AI tạo ra, RDKit xác minh.
Luồng xác minh cơ bản:
from rdkit import Chemfrom rdkit.Chem import Descriptors, Drawsmiles = "CC(=O)Oc1ccccc1C(=O)O" Chem.MolToSmiles(mol)) print("Công thức phân tử:", Chem.rdMolDescriptors.CalcMolFormula(mol)) print("Trọng lượng phân tử:", round(Descriptors.MolWt(mol), 2), "g/mol") print("InChIKey:", Chem.MolToInchiKey(mol))
Nếu MolFromSmiles trả về Không có nghĩa là AI đã cung cấp cho bạn một phân tử không hợp lệ; Chỉ riêng điều này thôi đã là một lời cảnh báo rất có giá trị. Nếu hợp lệ, bạn không cần phải hỏi mô hình ngôn ngữ về trọng lượng phân tử nữa; Nó nằm trong tay bạn một cách dứt khoát.
Từng bước: Tương tác AI + RDKit
- Xác định phân tử: Đặt tên cho AI, yêu cầu SMILES. Ví dụ: "xác minh SMILES chuẩn cho paracetamol."
- Xác minh: Phân tích SMILES đến bằng MolFromSmiles. Nếu Không, từ chối.
- Canonicalize: Truy xuất chính tả chuẩn bằng MolToSmiles; Luôn luôn sử dụng điều này từ bây giờ.
- Tính toán các con số: Nhận trọng lượng phân tử, công thức, số vòng, số lượng chất cho/chấp liên kết hydro, v.v. từ RDKit, không phải từ AI.
- Fix ID: Tạo InChIKey, tìm kiếm trong cơ sở dữ liệu (PubChem), xác nhận rằng phân tử đó thực sự là hợp chất bạn muốn.
Bốn mẫu có thể sao chép
1) Yêu cầu SMILES (từ danh từ đến cấu trúc):
Bài tập: Viết tên SMILES chuẩn cho hợp chất sau. Hợp chất: Paracetamol (acetaminophen). Quy tắc: Chỉ đưa ra chuỗi SMILES và InChIKey, không giải thích gì thêm. Nếu bạn không chắc chắn, hãy viết "KHÔNG CHẮC CHẮN", đừng ngụy biện.
2) Yêu cầu xác thực SMILES (từ cấu trúc đến điều khiển):
Kiểm tra SMILES bên dưới: CC(=O)Nc1ccc(O)cc1Câu hỏi:1) Đây có phải là SMILES hợp lệ không?2) Nó tương ứng với hợp chất nào (tên thông thường)?3) Công thức phân tử là gì?Lưu ý: Tôi sẽ tính trọng lượng phân tử chính xác bằng RDKit; Bạn chỉ cần đưa ra giải thích cấu trúc của bạn.
3) So sánh hai cách biểu diễn:
Tôi có hai SMILES:A) OCCB) CCOTask: Đây là cùng một phân tử hay khác nhau? Viết lý do của bạn. Lưu ý: Tôi sẽ kiểm tra chéo câu trả lời của bạn bằng cách chuẩn hóa nó trong RDKit.
4) Giải thích cấu trúc (dành cho mục đích học tập):
SMILES: Cn1cnc2c1c(=O)n(C)c(=O)n2CTask: Đọc từng phần SMILES này và giải thích ý nghĩa của từng ký hiệu (nguyên tử, liên kết, vòng, độ thơm) bằng tiếng Thổ Nhĩ Kỳ đơn giản. Đồng thời cho biết đó là hợp chất gì.
Dấu nhắc yếu / Dấu nhắc mạnh
yếu:
Nêu tính chất của acetaminophen.
“Tính năng” là mơ hồ; AI tạo ra các số ngẫu nhiên từ trọng lượng phân tử đến điểm nóng chảy, một số trong số đó sẽ sai.
Mạnh mẽ:
Hợp chất: acetaminophen.1) Canonical SMILES và InChIKey ver.2) Đưa ra công thức phân tử. Quy tắc: KHÔNG CUNG CẤP các giá trị SỐ như trọng lượng phân tử, điểm nóng chảy, v.v.; Tôi sẽ lấy chúng bằng RDKit/PubChem. Chỉ cần cung cấp ID bản dựng.
Sự khác biệt: Chúng tôi hướng AI đến điểm mạnh (bản sắc cấu trúc) và tránh xa điểm yếu (số thử nghiệm).
So sánh số lần hiển thị
tính năng
Mỉm cười
InChI / InChIKey
Khả năng đọc
Cao (thân thiện với mọi người)
Thấp (thân thiện với máy)
kinh điển
Có thể thay đổi (cần phong thánh)
tự nhiên độc thân
Cách sử dụng
giao tiếp của con người, bản vẽ, đầu vào
Cơ sở dữ liệu phù hợp, danh tính
hoá học lập thể
Hỗ trợ ký hiệu (@)
Hỗ trợ (lớp)
tặng cho AI
lý tưởng
Lý tưởng để xác nhận
trường hợp nhỏ
Trường hợp 1 - Hai tên, một phân tử. Một sinh viên nghĩ rằng "N-acetyl-para-aminophenol" và "paracetamol" là những hợp chất khác nhau và đã lên kế hoạch cho hai thí nghiệm riêng biệt. Khi chuẩn hóa SMILES của họ trong RDKit, cả hai đều trở thành CC(=O)Nc1ccc(O)cc1; Đó là cùng một phân tử. Mất: nửa ngày lập kế hoạch; đạt được: có thể tránh được bằng cách kiểm tra chuẩn hóa trong 2 phút.
Trường hợp 2 - Chụp SMILES không hợp lệ. AI trả về CC(=O)Nc1ccc(O)cc1C( cho một biến thể (ngoặc không đóng). Học sinh chạy MolFromSmiles, nó trả về Không, ngay lập tức nhìn thấy lỗi và yêu cầu sửa SMILES. Nếu không xác minh, cấu trúc bị lỗi sẽ lan sang tất cả các tài khoản.
Trường hợp 3 - Trọng lượng phân tử không chính xác. YZ cho biết "trọng lượng phân tử 214,3 g/mol" đối với ibuprofen (C13H18O2). Tính toán RDKit cho kết quả 206,28 g/mol. Chênh lệch 0,1 mol: 21,43 g với YZ, thực tế là 20,63 g. Sự khác biệt 3,9% này sẽ phá vỡ phép tính cân bằng hóa học và năng suất. Nó mang lại phép tính xác định.
Những lỗi thường gặp
- Đặt tên cho phân tử. Từ đồng nghĩa/tên thương mại bị nhầm lẫn. Luôn bao gồm SMILES hoặc InChI.
- So sánh SMILES mà không chuẩn hóa nó. OCC và CCO khác nhau về văn bản nhưng giống nhau về phân tử.
- Hỏi trọng lượng phân tử cho mô hình lưỡi. Đây là một tính toán xác định; Nó được thực hiện từ RDKit hoặc thủ công từ công thức.
- Không nhận thấy SMILES không hợp lệ. Không kiểm tra sự trở lại của MolFromSmiles None và tiếp tục với cấu trúc sai.
- Bỏ qua hóa học lập thể. Hai chất đồng phân đối ảnh (đồng phân hình ảnh phản chiếu) có thể thể hiện các tác dụng sinh học khác nhau; Bỏ qua dấu @/@@ trong SMILES.
Chú ý: Công thức phân tử giống nhau không có nghĩa là các phân tử khác nhau. C2H6O vừa là etanol (CCO) vừa là dimethyl ete (COC). Bình đẳng về công thức không phải là bình đẳng về bản sắc; Sử dụng InChIKey để nhận dạng.
Tóm lại
- Xác định các phân tử bằng ký hiệu cấu trúc, không phải theo tên: SMILES với con người, InChI/InChIKey với cơ sở dữ liệu.
- RDKit mang tính quyết định; AI dự đoán, RDKit tính toán và xác minh.
- Phân tích từng AI SMILES bằng MolFromSmiles và kiểm tra None, sau đó chuẩn hóa.
- Nhận các con số như trọng lượng phân tử và công thức từ RDKit, không phải từ mô hình ngôn ngữ.
- Sự bình đẳng về công thức không có nghĩa là sự đồng nhất về mặt phân tử; Sử dụng InChIKey để nhận dạng.
Nhiệm vụ ứng dụng
Chọn ba hợp chất (ví dụ: caffeine, ibuprofen, glycine). Yêu cầu AI cung cấp SMILES chuẩn cho từng loại. Sau đó viết tập lệnh RDKit (sử dụng mẫu ở trên) và tạo: SMILES chuẩn, công thức phân tử, trọng lượng phân tử, InChIKey. Có bao nhiêu nụ cười do AI đưa ra là hợp lệ? Nếu YZ cũng cho biết trọng lượng phân tử, hãy tính chênh lệch theo phần trăm với giá trị RDKit. Vẽ những phát hiện của bạn vào một bảng nhỏ.
danh sách kiểm tra
- [ ] Tôi biết SMILES và InChI/InChIKey là gì và khi nào nên sử dụng chúng.
- [ ] Tôi xác minh mọi SMILES do AI cung cấp bằng MolFromSmiles.
- [ ] Tôi chuẩn hóa SMILES trước khi so sánh chúng.
- [ ] Tôi đang lấy trọng lượng phân tử và công thức từ RDKit, không phải từ mô hình ngôn ngữ.
- [ ] Tôi xác nhận danh tính phân tử trong cơ sở dữ liệu bằng InChIKey.
- [ ] Tôi biết những tình huống mà hóa học lập thể đóng vai trò quan trọng.