กำไร:
- ความสามารถในการระบุโมเลกุลไม่ใช่ด้วยชื่อ แต่โดยการเป็นตัวแทนโครงสร้าง (SMILES กับมนุษย์, InChI/InChIKey พร้อมฐานข้อมูล)
- ความสามารถในการตรวจจับโครงสร้างที่ไม่ถูกต้องหรือไม่ถูกต้องโดยการแยกวิเคราะห์ ตรวจสอบ และกำหนดรูปแบบมาตรฐานของรอยยิ้มแต่ละอันที่ได้รับจากปัญญาประดิษฐ์ด้วย RDKit
- สามารถเข้าใจได้ว่าปริมาณที่กำหนด เช่น น้ำหนักโมเลกุลและสูตร ควรได้รับจากเครื่องมือที่ใช้กฎ ไม่ใช่จากแบบจำลองภาษา
เงื่อนไขแรกในการใช้ AI อย่างปลอดภัยในวิชาเคมีคือการเขียนโมเลกุลในภาษาที่ทั้งเครื่องจักรและมนุษย์สามารถเข้าใจได้ คุณพูดว่า "ฟีนอล" AI เข้าใจถูกแล้ว แต่เมื่อคุณพูดว่า "กรด" มีความเป็นไปได้มากมาย ชื่อมีความคลุมเครือ การแสดงโครงสร้างมีความแม่นยำ ในหน่วยนี้ เราจะเรียนรู้สัญลักษณ์พื้นฐานสองประการที่แปลโมเลกุลเป็นข้อความ (SMILES และ InChI) และเครื่องมือที่ตรวจสอบสิ่งเหล่านั้นตามที่กำหนด (RDKit) เป้าหมายของเรา: เพื่อมอบโมเลกุลให้กับ AI ในลักษณะที่จะไม่มีวันเข้าใจผิด และเพื่อยืนยันโครงสร้างที่ AI สร้างขึ้นด้วยเครื่องมือ
รอยยิ้มคืออะไร?
SMILES (ระบบป้อนบรรทัดโมเลกุลแบบง่าย) เป็นรูปแบบหนึ่งของการเขียนโมเลกุลในข้อความบรรทัดเดียว อะตอมแสดงด้วยตัวอักษร พันธะด้วยสัญลักษณ์ และวงแหวนด้วยตัวเลข ตัวอย่าง:
- เอทานอล: CCO (คาร์บอน–คาร์บอน–ออกซิเจน; ไฮโดรเจนโดยนัย)
- เบนซิน: c1ccccc1 (c ตัวพิมพ์เล็กหมายถึงคาร์บอนอะโรมาติก โดย 1 ปิดวงแหวน)
- แอสไพริน: CC(=O)Oc1ccccc1C(=O)O
- คาเฟอีน: Cn1cnc2c1c(=O)n(C)c(=O)n2C
พลังของ SMILES คือการนำโครงสร้างลิงก์ทั้งหมดมาไว้ในบรรทัดเดียว จุดอ่อนของมันคือโมเลกุลเดียวกันสามารถมี SMILES ที่ถูกต้องได้หลายอัน (ซึ่งเรียกว่า non-canonality) เราจะแก้ไขปัญหานี้ด้วย RDKit ในอีกสักครู่
คำแนะนำ: "canonical SMILES" สำหรับโมเลกุลคือการสะกดมาตรฐานเดียวสำหรับโมเลกุลนั้น หากต้องการดูว่ารอยยิ้มสองตัวเป็นโมเลกุลเดียวกันหรือไม่ ให้กำหนดรูปแบบมาตรฐานและเปรียบเทียบกัน ไม่ควรเท่ากันในข้อความ แต่ควรเป็นโมเลกุลที่เท่ากัน
InChI คืออะไร?
InChI (International Chemical Identifier) เป็นตัวระบุมาตรฐานที่พัฒนาโดย IUPAC ความแตกต่างจาก SMILES คือโมเลกุลเดียวกันจะให้ InChI เท่ากันเสมอ นั่นคือมันเป็นบัญญัติในธรรมชาติ ยาวและอ่านยาก แต่เหมาะสำหรับการจับคู่ฐานข้อมูล ใช้ตัวย่อ "InChIKey" (สรุป 27 ตัวอักษร) ในการค้นหา
- แอสไพริน InChIKey: BSYNRYMUTXBXSQ-UHFFFAOYSA-N.
กฎ: ผู้คนพูดด้วยรอยยิ้ม (อ่าน) เครื่องจักรและฐานข้อมูลตรงกับ InChI/InChIKey (ตรงกันทั้งหมด) มอบรอยยิ้มให้กับ AI; ยืนยันในฐานข้อมูลด้วย InChIKey
RDKit: เครื่องมือตรวจสอบที่กำหนด
RDKit เป็นไลบรารีเคมีแบบโอเพ่นซอร์ส ต่างจากโมเดลภาษาตรงที่เป็นกฎ: แยกวิเคราะห์ SMILES, คำนวณน้ำหนักโมเลกุล, สร้าง Canonical SMILES, ส่งกลับ InChI/InChIKey, ดึงโมเลกุล ดังนั้น RDKit จึง "คำนวณ" สิ่งที่ AI "คาดการณ์" นี่คือหัวใจของเวิร์กโฟลว์: AI สร้างขึ้น, RDKit ยืนยัน
ขั้นตอนการยืนยันขั้นพื้นฐาน:
จาก rdkit import Chemจาก rdkit.Chem import Descriptors, Drawsmiles = "CC(=O)Oc1ccccc1C(=O)O" Chem.MolToSmiles(mol)) print("Molecular Formula:", Chem.rdMolDescriptors.CalcMolFormula(mol)) print("น้ำหนักโมเลกุล:", รอบ(Descriptors.MolWt(mol), 2), "g/mol") พิมพ์ ("InChIKey:", Chem.MolToInchiKey(mol))
หาก MolFromSmiles คืนค่าเป็น None แสดงว่า AI จะให้โมเลกุลที่ไม่ถูกต้องแก่คุณ เพียงอย่างเดียวนี้ถือเป็นคำเตือนที่มีค่ามาก หากถูกต้อง คุณไม่จำเป็นต้องถามแบบจำลองภาษาสำหรับน้ำหนักโมเลกุลอีกต่อไป มันอยู่ในมือของคุณอย่างแน่นอน
ทีละขั้นตอน: การทำงานร่วมกันของ AI + RDKit
- ระบุโมเลกุล: ตั้งชื่อให้ AI และขอรอยยิ้ม ตัวอย่างเช่น "ยืนยัน Canonical SMILES สำหรับพาราเซตามอล"
- ตรวจสอบ: แยกวิเคราะห์รอยยิ้มที่เข้ามาด้วย MolFromSmiles หากไม่มี ให้ปฏิเสธ
- Canonicalize: ดึงข้อมูลการสะกดตามรูปแบบบัญญัติด้วย MolToSmiles; ใช้สิ่งนี้เสมอตั้งแต่นี้เป็นต้นไป
- คำนวณตัวเลข: รับน้ำหนักโมเลกุล สูตร จำนวนวงแหวน จำนวนผู้บริจาค/ตัวรับพันธะไฮโดรเจน ฯลฯ จาก RDKit ไม่ใช่จาก AI
- Fix ID: สร้าง InChIKey ค้นหาในฐานข้อมูล (PubChem) ยืนยันว่าโมเลกุลนั้นเป็นสารประกอบที่คุณต้องการจริงๆ
เทมเพลตที่สามารถคัดลอกได้สี่แบบ
1) การขอ SMILES (จากคำนามถึงโครงสร้าง):
ภารกิจ: มอบรอยยิ้มตามรูปแบบบัญญัติสำหรับสารประกอบต่อไปนี้ สารประกอบ: พาราเซตามอล (acetaminophen) กฎ: ให้เฉพาะสตริง SMILES และ InChIKey อย่าเพิ่มคำอธิบายใดๆ เพิ่มเติม หากไม่แน่ใจ เขียนว่า UNSURE ไม่ต้องแต่งหน้า
2) คำขอตรวจสอบ SMILES (จากโครงสร้างไปยังการควบคุม):
ตรวจสอบ SMILES ด้านล่าง: CC(=O)Nc1ccc(O)cc1คำถาม:1) นี่เป็น SMILES ที่ถูกต้องหรือไม่2) สารประกอบนี้สอดคล้องกับ (ชื่อสามัญ) อะไร?3) สูตรโมเลกุลคืออะไรหมายเหตุ: ฉันจะคำนวณน้ำหนักโมเลกุลที่แน่นอนด้วย RDKit; คุณเพียงแค่ให้การตีความโครงสร้างของคุณ
3) การเปรียบเทียบสองการเป็นตัวแทน:
ฉันมี SMILES:A) OCCB) CCOTask สองตัว: โมเลกุลเหล่านี้เหมือนกันหรือต่างกันหรือไม่ เขียนเหตุผลของคุณ หมายเหตุ: ฉันจะตรวจสอบคำตอบของคุณโดยกำหนดรูปแบบมาตรฐานใน RDKit
4) คำอธิบายโครงสร้าง (เพื่อการเรียนรู้):
SMILES: Cn1cnc2c1c(=O)n(C)c(=O)n2CTask: อ่าน SMILES นี้ทีละชิ้นและอธิบายว่าแต่ละสัญลักษณ์หมายถึงอะไร (อะตอม พันธะ วงแหวน กลิ่น) ในภาษาตุรกีธรรมดา บอกด้วยว่าเป็นสารประกอบอะไร
พรอมต์อ่อน / พรอมต์แรง
อ่อนแอ:
ให้คุณสมบัติของอะเซตามิโนเฟน
"ฟีเจอร์" ไม่ชัดเจน AI สร้างตัวเลขสุ่มตั้งแต่น้ำหนักโมเลกุลจนถึงจุดหลอมเหลว ซึ่งบางส่วนอาจมีค่าผิดพลาด
แข็งแกร่ง:
สารประกอบ: acetaminophen.1) Canonical SMILES และ InChIKey ver.2) ให้สูตรโมเลกุล กฎ: อย่าให้ค่าตัวเลข เช่น น้ำหนักโมเลกุล จุดหลอมเหลว ฯลฯ; ฉันจะรับมันด้วย RDKit/PubChem เพียงแจ้ง ID บิลด์
ความแตกต่าง: เรากำหนดทิศทางของ AI ไปสู่จุดที่แข็งแกร่ง (เอกลักษณ์ของโครงสร้าง) และอยู่ห่างจากจุดอ่อน (ตัวเลขการทดลอง)
การเปรียบเทียบการแสดงผล
คุณสมบัติ
ยิ้ม
อินชิ / อินชิคีย์
ความสามารถในการอ่าน
สูง (เป็นมิตรกับผู้คน)
ต่ำ (เป็นมิตรกับเครื่องจักร)
ความเป็นมาตรฐาน
อาจมีการเปลี่ยนแปลง (ต้องมีการกำหนดเป็นนักบุญ)
โสดโดยธรรมชาติ
การใช้งาน
การสื่อสารของมนุษย์ การวาดภาพ การป้อนข้อมูล
การจับคู่ฐานข้อมูล ตัวตน
สเตอริโอเคมี
รองรับ (@ สัญลักษณ์)
รองรับ (ชั้น)
เพื่อมอบให้กับ AI
ในอุดมคติ
เหมาะสำหรับการยืนยัน
กรณีขนาดเล็ก
กรณีที่ 1 — สองชื่อ หนึ่งโมเลกุล นักเรียนคนหนึ่งคิดว่า "N-acetyl-para-aminophenol" และ "paracetamol" เป็นสารประกอบที่แตกต่างกันและวางแผนการทดลองแยกกันสองครั้ง เมื่อกำหนดมาตรฐานรอยยิ้มใน RDKit ทั้งสองกลายเป็น CC(=O)Nc1ccc(O)cc1; มันเป็นโมเลกุลเดียวกัน แพ้: วางแผนครึ่งวัน; กำไร: สามารถหลีกเลี่ยงได้ด้วยการตรวจสอบการกำหนดรูปแบบมาตรฐาน 2 นาที
กรณีที่ 2 — การบันทึก SMILES ไม่ถูกต้อง AI ส่งคืน CC(=O)Nc1ccc(O)cc1C( สำหรับตัวแปร (วงเล็บไม่ปิด) นักเรียนเรียกใช้ MolFromSmiles และส่งคืนเป็น None เห็นข้อผิดพลาดทันทีและร้องขอให้แก้ไข SMILES หากไม่มีการตรวจสอบ โครงสร้างที่ผิดพลาดจะแพร่กระจายไปยังบัญชีทั้งหมด
กรณีที่ 3 — น้ำหนักโมเลกุลไม่ถูกต้อง YZ ระบุว่า "น้ำหนักโมเลกุล 214.3 กรัม/โมล" สำหรับไอบูโพรเฟน (C13H18O2) การคำนวณ RDKit ให้ 206.28 กรัม/โมล ส่วนต่าง 0.1 โมล: 21.43 ก. กับ YZ จริง ๆ แล้ว 20.63 ก. ความแตกต่าง 3.9% นี้จะรบกวนการคำนวณปริมาณสัมพันธ์และผลผลิต มันนำแคลคูลัสเชิงกำหนดมา
ข้อผิดพลาดทั่วไป
- ตั้งชื่อโมเลกุลตามชื่อ คำพ้องความหมาย/ชื่อทางการค้าสับสน ใส่ SMILES หรือ InChI เสมอ
- เปรียบเทียบ SMILES โดยไม่กำหนดรูปแบบมาตรฐาน OCC และ CCO ต่างกันในข้อความ แต่เหมือนกันในโมเลกุล
- ถามน้ำหนักโมเลกุลกับแบบจำลองลิ้น นี่คือการคำนวณที่กำหนด ทำได้จาก RDKit หรือดำเนินการด้วยตนเองจากสูตร
- ไม่สังเกตเห็นรอยยิ้มที่ไม่ถูกต้อง ไม่ตรวจสอบการคืนของ MolFromSmiles None และดำเนินการต่อด้วยโครงสร้างที่ไม่ถูกต้อง
- ละเลยสเตอริโอเคมี อิแนนทิโอเมอร์ทั้งสองชนิด (ไอโซเมอร์ภาพสะท้อนในกระจก) อาจแสดงผลทางชีวภาพที่แตกต่างกัน ข้ามเครื่องหมาย @/@@ ใน SMILES
ข้อควรสนใจ: สูตรโมเลกุลเดียวกันไม่ได้หมายความว่าโมเลกุลต่างกัน C2H6O เป็นทั้งเอทานอล (CCO) และไดเมทิลอีเทอร์ (COC) ความเท่าเทียมกันของสูตรไม่ใช่ความเท่าเทียมกันของอัตลักษณ์ ใช้ InChIKey เพื่อระบุตัวตน
โดยสรุป
- ระบุโมเลกุลด้วยสัญกรณ์โครงสร้าง ไม่ใช่ตามชื่อ: SMILES กับมนุษย์ InChI/InChIKey พร้อมฐานข้อมูล
- RDKit ถูกกำหนดไว้; AI ทำนาย RDKit คำนวณและตรวจสอบ
- แยกวิเคราะห์ AI SMILES แต่ละรายการด้วย MolFromSmiles แล้วตรวจสอบไม่มี จากนั้นจึงกำหนดรูปแบบมาตรฐาน
- รับตัวเลข เช่น น้ำหนักโมเลกุลและสูตรจาก RDKit ไม่ใช่จากแบบจำลองภาษา
- ความเท่าเทียมกันของสูตรไม่ได้หมายถึงเอกลักษณ์ของโมเลกุล ใช้ InChIKey เพื่อระบุตัวตน
งานสมัคร
เลือกสารประกอบสามชนิด (เช่น คาเฟอีน ไอบูโพรเฟน ไกลซีน) ถาม AI สำหรับ Canonical SMILES สำหรับแต่ละอัน จากนั้นเขียนสคริปต์ RDKit (ใช้เทมเพลตด้านบน) และสร้าง: Canonical SMILES, สูตรโมเลกุล, น้ำหนักโมเลกุล, InChIKey SMILES ที่ AI ให้มานั้นถูกต้องกี่อัน? ถ้า YZ ให้น้ำหนักโมเลกุลด้วย ให้คำนวณความแตกต่างเป็นเปอร์เซ็นต์ด้วยค่า RDKit พล็อตสิ่งที่คุณค้นพบลงในตารางเล็กๆ
รายการตรวจสอบ
- [ ] ฉันรู้ว่า SMILES และ InChI/InChIKey คืออะไร และควรใช้เมื่อใด
- [ ] ฉันตรวจสอบทุกรอยยิ้มที่ AI มอบให้ด้วย MolFromSmiles
- [ ] ฉันกำหนดรูปแบบมาตรฐานของรอยยิ้มก่อนที่จะเปรียบเทียบ
- [ ] ฉันได้รับน้ำหนักโมเลกุลและสูตรจาก RDKit ไม่ใช่จากแบบจำลองภาษา
- [ ] ฉันยืนยันตัวตนของโมเลกุลในฐานข้อมูลด้วย InChIKey
- [ ] ฉันรู้สถานการณ์ที่สเตอริโอเคมีมีความสำคัญ