หน่วย
1. ปัญญาประดิษฐ์เบื้องต้นทางชีววิทยา: บทบาท ขอบเขต การตรวจสอบความถูกต้อง และจริยธรรม 2. พื้นฐานการวิเคราะห์ข้อมูลทางชีวภาพด้วย Python 3. การวิเคราะห์ลำดับและชีวสารสนเทศศาสตร์: DNA, RNA และโปรตีน 4. ข้อมูล Omics และการวิเคราะห์มิติสูง 5. โครงสร้างโปรตีนและ AlphaFold: ชัยชนะของปัญญาประดิษฐ์ในชีววิทยา 6. การวิเคราะห์รูปภาพและการระบุประเภท/เซลล์ 7. การออกแบบเชิงทดลอง: การสร้างแผนการที่มั่นคงด้วยปัญญาประดิษฐ์ 8. การวิเคราะห์ข้อมูลและการตรวจสอบความถูกต้องทางสถิติ 9. การแสดงภาพทางวิทยาศาสตร์: การแสดงข้อมูลอย่างตรงไปตรงมาและเข้าใจได้ 10. การทบทวนวรรณกรรมและการเขียนทางวิทยาศาสตร์ 11. จริยธรรม ความปลอดภัยทางชีวภาพ การรักษาความลับ และความซื่อสัตย์ทางวิทยาศาสตร์
หน่วย 2 / 11

พื้นฐานการวิเคราะห์ข้อมูลทางชีวภาพด้วย Python

กำไร:

  • ความสามารถในการเชื่อถือเอาต์พุตที่กำหนดโดยการเขียนโค้ดที่อ่านและล้างข้อมูลทางชีวภาพให้เป็นปัญญาประดิษฐ์ และรันมันด้วย Pandas, NumPy และ Biopython
  • สามารถหลีกเลี่ยงความเสี่ยงของ 'โค้ดที่ไม่ถูกต้องทำงานโดยไม่มีข้อผิดพลาด' โดยการทดสอบโค้ดด้วยสถานการณ์เล็กน้อยที่ทราบผลลัพธ์และการทดสอบการยืนยัน
  • ความสามารถในการสร้างการวิเคราะห์ที่ทำซ้ำได้ด้วยการปักหมุดเวอร์ชัน การตั้งข้อมูลแบบสุ่ม และพฤติกรรมการเก็บรักษาข้อมูลดิบ

ภาษาของชีววิทยาสมัยใหม่กำลังกลายเป็นภาษา Python มากขึ้นเรื่อยๆ การประมวลผลด้วยตนเองในสมุดบันทึกสำหรับห้องปฏิบัติการตอนนี้กลายเป็นบรรทัดของการประมวลผลโค้ดหลายหมื่นบรรทัดของตารางต่อวินาที ในหน่วยนี้ เราจะเรียนรู้การใช้ AI เป็นโปรแกรมเมอร์ร่วมที่พิมพ์โค้ด Python ที่อ่าน ทำความสะอาด และสรุปข้อมูลทางชีววิทยาของคุณ สิ่งสำคัญคือการเขียนโค้ดลงในปัญญาประดิษฐ์ รันด้วยตัวเอง และตรวจสอบผลลัพธ์ เนื่องจากไม่ได้ขึ้นอยู่กับการทำนายด้วยวาจาของโมเดล แต่ขึ้นอยู่กับเอาต์พุตของโค้ดที่กำหนด (ซึ่งให้ผลลัพธ์เดียวกันในทุกการรัน)

คุณไม่จำเป็นต้องรู้วิธีการเขียนโค้ดในหน่วยนี้ คุณจะได้เรียนรู้ที่จะแสดงความตั้งใจอย่างถูกต้องและให้ผลลัพธ์

ทำไมต้อง Python และไลบรารีใด

ไลบรารี Python ที่ใช้มากที่สุด (ไลบรารี: แพ็คเกจของฟังก์ชันสำเร็จรูป) ในชีววิทยาคือ:

  • นุ่น: เพื่ออ่านข้อมูลแบบตาราง (CSV, Excel) และดำเนินการแถว-คอลัมน์ เครื่องมือพื้นฐานในการกรอง จัดกลุ่ม รวมตารางการแสดงออกของยีน
  • NumPy: สำหรับอาร์เรย์ตัวเลขและการดำเนินการเมทริกซ์ มันวิ่งอยู่ใต้หมีแพนด้า
  • Biopython: สำหรับการทำงานกับลำดับ DNA/RNA/โปรตีน การอ่านไฟล์ FASTA การแปล (การแปล DNA เป็นโปรตีน)
  • matplotlib / seaborn: สำหรับการวางแผนแปลง
  • SciPy/statsmodels: สำหรับการทดสอบทางสถิติ

ปัญญาประดิษฐ์รู้จักห้องสมุดเหล่านี้เป็นอย่างดี งานของคุณคือระบุอย่างชัดเจนว่าคุณต้องการทำอะไรกับไลบรารีใด และเรียกใช้และตรวจสอบโค้ดที่สร้างขึ้น

คำแนะนำ: บางครั้งโมเดลสามารถ "สร้าง" (ภาพหลอน) ให้กับฟังก์ชันไลบรารีที่ไม่มีอยู่จริงได้ หากโค้ดแสดงข้อผิดพลาด อย่าเพิ่งตกใจ การวางข้อผิดพลาดกลับเข้าไปในโมเดลตามปกติจะแก้ไขได้ หากยังไม่ได้ผล ให้ตรวจสอบเอกสารอย่างเป็นทางการ

ทีละขั้นตอน: การล้างตารางการนับ

สมมติว่าคุณมี counts.csv: แถวคือยีน คอลัมน์คือตัวอย่าง เซลล์คือจำนวนการอ่านข้อมูลดิบ ขั้นตอนแรกทั่วไป:

  1. กำลังโหลด: อ่านตารางกับแพนด้า
  2. การค้นพบ: ตรวจสอบขนาด (จำนวนยีน จำนวนตัวอย่าง) ค่าที่หายไป ชื่อยีนที่ซ้ำกัน
  3. การกรอง: ทิ้งยีนที่ไม่ได้อ่านในตัวอย่างนี้ (จำนวนทั้งหมด 0) เหล่านี้คือเสียงรบกวน
  4. สรุป: คำนวณจำนวนการอ่านทั้งหมดต่อตัวอย่าง (ขนาดไลบรารี) ตัวอย่างที่ต่ำเกินไปอาจล้มเหลว

คุณสามารถจ้างเวิร์กโฟลว์นี้ให้กับปัญญาประดิษฐ์ได้ดังนี้:

บทบาท: คุณเป็นผู้ช่วย Python ที่เน้นด้านชีวสารสนเทศศาสตร์ งาน: อ่านไฟล์ counts.csv ด้วย pandas ข้อมูล: แถวคือยีน (index=gene_id) คอลัมน์คือ 24 ตัวอย่าง ค่าคือจำนวนข้อมูลดิบที่เป็นจำนวนเต็ม ฉันต้องการ: (1) พิมพ์ขนาด (2) ทิ้งยีนที่ไม่เคยอ่าน (3) แสดงการอ่านทั้งหมดต่อตัวอย่างในกราฟแท่ง เพิ่มความคิดเห็นภาษาตุรกีสั้นๆ ลงในแต่ละบรรทัด เพียงแจ้งรหัสการทำงาน

สร้างรหัสโมเดล คุณเรียกใช้มัน หากคุณเห็น 24 คอลัมน์และจำนวนยีนที่เหมาะสม (เช่น 15,000-25,000) ในผลลัพธ์ แสดงว่าคุณมาถูกทางแล้ว ถ้าตัวอย่างหนึ่งมีการอ่านได้หนึ่งในสิบของตัวอย่างอื่นๆ ให้จดตัวอย่างนั้นลงไป

มินิเคสสามอัน

กรณีที่ 1 — กับดักค่าที่หายไป: นักเรียนคนหนึ่งมีค่าเฉลี่ยที่คำนวณในตารางเมแทบอลิซึม 30 ตัวอย่าง ผลลัพธ์ที่ได้ก็ไร้สาระ ปัญหา: เซลล์ที่หายไปถูกเติมด้วยข้อความ "ND" แทนที่จะเป็น NaN (ไม่ใช่ตัวเลข) ดังนั้นคอลัมน์จึงถูกอ่านเป็นข้อความ ได้รับการแก้ไขแล้วเมื่อฉันทำให้ปัญญาประดิษฐ์พูดว่า "สร้างค่า ND NaN และแปลงคอลัมน์เป็นตัวเลข" บทเรียน: สำรวจข้อมูลดิบก่อนเสมอ

กรณีที่ 2 — ข้อผิดพลาดในการผสาน: นักวิจัยรวมสองตาราง (นิพจน์และคำอธิบายประกอบของยีน) แต่สูญเสียยีน 2,000 ยีน สาเหตุ: ในตารางหนึ่ง ID คือ "ENSG00000141510" และอีกตารางหนึ่งคือ "ENSG00000141510.14" (พร้อมหมายเลขเวอร์ชัน) โมเดลเขียนโค้ดบรรทัดเดียวเพื่อล้างหมายเลขเวอร์ชัน การสูญเสียลดลงเหลือ 40 ยีน บทเรียน: จัดรูปแบบ ID ก่อนที่จะรวมเข้าด้วยกัน

กรณีที่ 3 — การสูญเสียข้อมูลอย่างเงียบๆ: ช่างเทคนิคไม่ได้สังเกตว่าหลังจากการกรอง จำนวนยีนลดลงจาก 22,000 เป็น 8,000 กำหนดเกณฑ์ไม่ถูกต้อง (รวม>10 รายการ แทนที่จะเป็นการอ่าน >10 รายการในแต่ละตัวอย่าง) ยีนที่รู้จัก (ยีนแม่บ้าน: ยีนเช่น GAPDH ที่แสดงออกอย่างต่อเนื่องในทุกเซลล์) หายไปในที่สุด บทเรียน: ตรวจสอบตัวกรองโพสต์ยีนที่ "ต้องมี"

การทดสอบกับสถานการณ์ที่ทราบ (นิสัยที่สำคัญที่สุด)

วิธีที่แน่นอนที่สุดที่จะเชื่อถือความถูกต้องของโค้ดที่เขียนโดยปัญญาประดิษฐ์คือการทดสอบด้วยตัวอย่างเล็กๆ ซึ่งคุณรู้ผลลัพธ์ล่วงหน้า ตัวอย่างเช่น ให้ตารางจำลองมี 5 แถว คำนวณผลรวมด้วยตนเอง ดูว่าโค้ดให้ผลลัพธ์เหมือนกันหรือไม่

เพิ่มการทดสอบลงในโค้ดการกรองที่คุณเขียน: สร้าง DataFrame ขนาดเล็กที่ประกอบด้วย 5 ยีน 3 ตัวอย่าง จงใจตั้งค่า 2 ยีนให้เป็นศูนย์ ตรวจสอบด้วยการยืนยันว่าตัวกรองละทิ้ง 2 ยีนนี้ทุกประการ ทำให้การทดสอบดำเนินการได้

assert เตือนคุณหากโค้ดเบี่ยงเบนไปจากพฤติกรรมที่คาดไว้ นี่เป็นเกราะป้องกันที่แข็งแกร่งที่สุดต่อความเสี่ยงของ "ข้อสรุปที่ผิดพลาดอย่างเงียบๆ"

พรอมต์อ่อน / พรอมต์แรง

จุดอ่อน: "ทำความสะอาดแผนภูมิของฉัน"

ทรงพลัง: "counts.csv: แถวยีน (ดัชนี gene_id), ตัวอย่าง 24 คอลัมน์, ค่าจำนวนเต็มดิบ ทำสิ่งต่อไปนี้: รายงานค่าที่หายไป ละทิ้งยีนที่รวมเป็น 0 ในทุกตัวอย่าง พิมพ์จำนวนการอ่านทั้งหมดสำหรับแต่ละตัวอย่าง เปรียบเทียบจำนวนยีนก่อน/หลังตัวกรอง เพียงให้การทำงาน รหัส Python ที่แสดงความคิดเห็น"

ความแตกต่าง: พรอมต์ที่ชัดเจนจะระบุโครงสร้างข้อมูล ขั้นตอน และผลลัพธ์การตรวจสอบ (ก่อน/หลังการเปรียบเทียบ) โมเดลไม่ต้องเดา

ตารางเปรียบเทียบ: AI หรือคู่มือ?

การทำธุรกรรม

พิมพ์ไปสู่ปัญญาประดิษฐ์

ตรวจสอบด้วยตัวคุณเอง

การอ่าน CSV, การแปลงรูปแบบ

ใช่

ตรวจสอบขนาดและประเภท

การกรองการจัดกลุ่ม

ใช่

นับก่อน/หลัง

การทดสอบทางสถิติ

ใช่ (รหัส)

ยืนยันสมมติฐานและทดสอบ

“เหลืออีกกี่บรรทัดครับ?”

ไม่ (ปล่อยให้โค้ดนับ)

อ่านผลลัพธ์

ความหมายทางชีวภาพของผลลัพธ์

บางส่วน

จำเป็นต้องมีความคิดเห็นของผู้เชี่ยวชาญ

ข้อผิดพลาดทั่วไป

  • ขึ้นอยู่กับจำนวนที่แบบจำลองสร้างขึ้น: "นิพจน์เฉลี่ยคืออะไร" ถามคำถามกับโค้ด ไม่ใช่โมเดล
  • ไม่ตรวจสอบประเภทข้อมูล: คอลัมน์ตัวเลขที่อ่านเหมือนข้อความจะส่งกลับผลลัพธ์ที่ไม่ถูกต้องโดยไม่แจ้งให้ทราบ
  • ไม่ตรวจสอบโพสต์ฟิลเตอร์: ตรวจสอบว่ายีนที่คาดหวังยังคงอยู่
  • ลืมเมล็ดของการสุ่ม: หากเมล็ดไม่ได้รับการแก้ไขในโค้ดที่มีการดำเนินการแบบสุ่ม ผลลัพธ์จะเปลี่ยนไปทุกครั้ง ความสามารถในการทำซ้ำลดลง
  • เรียกใช้โค้ดโดยไม่อ่าน: อย่างน้อยก็อ่านความคิดเห็นและปฏิบัติตามตรรกะ
ข้อควรสนใจ: เพียงเพราะโค้ดใช้งานได้ไม่ได้หมายความว่าโค้ดนั้นถูกต้อง "รหัสผิดที่ทำงานโดยไม่มีข้อผิดพลาด" เป็นสถานการณ์ที่อันตรายที่สุดในวิชาชีววิทยา เพราะผลที่ผิดเกิดขึ้นอย่างเงียบๆ การทดสอบด้วยเงื่อนไขที่ทราบจะช่วยลดความเสี่ยงนี้

การทำซ้ำ: คุณค่าทางวิทยาศาสตร์ของรหัส

ในทางชีววิทยา คุณค่าทางวิทยาศาสตร์ของผลลัพธ์ขึ้นอยู่กับความสามารถของผู้อื่น (และตัวคุณในอนาคต) ที่จะสืบพันธุ์ได้ การดำเนินการตารางแบบแมนนวลจะไม่ถูกบันทึก ไม่มีใครรู้ว่าเซลล์ใดเปลี่ยนแปลงไปและอย่างไร รหัสเอกสารแต่ละขั้นตอน ดังนั้น ให้คิดว่าการวิเคราะห์ที่คุณสร้างขึ้นด้วยปัญญาประดิษฐ์เป็นบันทึกที่จัดเก็บและแบ่งปัน ไม่ใช่เป็นกล่องครั้งเดียว

นิสัยสามประการมีความสำคัญต่อการวิเคราะห์ซ้ำ สิ่งแรกคือการปักหมุดเวอร์ชัน: โปรดทราบว่าคุณกำลังใช้ไลบรารีเวอร์ชันใด (เช่น pandas 2.2) เวอร์ชันที่ต่างกันอาจให้ผลลัพธ์ที่แตกต่างกัน อย่างที่สองคือ Randomness Seed: แก้ไข Seed ในทุกโค้ดที่มีการดำเนินการแบบสุ่ม เพื่อให้ผลลัพธ์เหมือนกันทุกครั้งที่รัน ประการที่สาม ห้ามเปลี่ยนแปลงข้อมูลดิบ: อย่าแตะต้องไฟล์ต้นฉบับ ทำการแปลงโค้ดทั้งหมดเพื่อให้สามารถย้อนกลับได้

เพิ่มบรรทัดที่พิมพ์เวอร์ชันของไลบรารีที่ใช้ตอนเริ่มต้นโค้ดการวิเคราะห์ที่คุณเขียน และหากมีกระบวนการสุ่ม ให้แก้ไข seed ด้วย sanp.random.seed(42) อย่าเปลี่ยนไฟล์ Raw CSV เลย ให้บันทึกเอาต์พุตทั้งหมดเป็นไฟล์แยกต่างหาก

สมุดบันทึก Jupyter: การผสมผสานระหว่างการวิเคราะห์และการเล่าเรื่อง

สภาพแวดล้อมที่ใช้มากที่สุดในชีวสารสนเทศศาสตร์คือสมุดบันทึก Jupyter (สมุดบันทึก: เครื่องมือที่รวมโค้ด ผลลัพธ์ และคำอธิบายไว้ในเอกสารเดียวกัน) การให้ AI สร้างโค้ดตามเซลล์โน้ตบุ๊กโดยแต่ละขั้นตอนคั่นด้วยคำอธิบาย Markdown ทำให้ทั้งคุณและเพื่อนร่วมงานติดตามการวิเคราะห์ได้ง่ายขึ้น ทำให้การวิเคราะห์เป็นสมุดบันทึกสำหรับห้องปฏิบัติการที่อ่านได้ ไม่ใช่ "กล่องดำ"

การรับรู้รูปแบบไฟล์ทางชีววิทยา

เมื่อประมวลผลข้อมูลทางชีววิทยาด้วย Python คุณจะพบไฟล์บางรูปแบบอยู่ตลอดเวลา ก่อนที่โมเดลจะสามารถอ่านไฟล์ได้อย่างถูกต้อง โมเดลจะต้องทราบว่าไฟล์อยู่ในรูปแบบใด หากคุณจัดรูปแบบผิด คุณจะติดกับดัก "รหัสผิดที่ทำงานโดยไม่มีข้อผิดพลาด" ที่พบบ่อยที่สุดคือ:

รูปแบบ

เนื้อหา

ยานพาหนะที่เหมาะสม

CSV/TSV

ข้อมูลตาราง (นิพจน์ การวัด)

หมีแพนด้า

ฟาสต้า (.fa/.fasta)

ลำดับ DNA/RNA/โปรตีน

ไบโอไพทอน

FASTQ (.fq)

การอ่านลำดับดิบ + คุณภาพ

Biopython เครื่องมือแบบกำหนดเอง

วีซีเอฟ

รายการตัวแปร (กลายพันธุ์)

หมีแพนด้า/ปิซัม

จีเอฟเอฟ/จีทีเอฟ

คำอธิบายประกอบจีโนม (ตำแหน่งของยีน)

แพนด้า, gffutils

หากคุณไม่รู้จักรูปแบบ ขั้นแรกให้โมเดลระบุโดยแสดงบรรทัดตัวอย่าง 2-3 บรรทัด จากนั้นขอโค้ดที่อ่าน:

ฉันให้ 5 บรรทัดแรกของไฟล์ด้านล่าง นี่คือรูปแบบไบโอไฟล์อะไร? อธิบายความหมายของคอลัมน์/ช่อง จากนั้นให้โค้ดที่อ่านไฟล์นี้อย่างปลอดภัย (ตรวจสอบรูปแบบ) ใน Python 5 บรรทัดแรก: [วาง]

วิธีการนี้ป้องกันข้อผิดพลาดที่เกิดขึ้นจากการสันนิษฐานของรูปแบบตั้งแต่แรก

โดยสรุป

Python เป็นภาษาประมวลผลหลักสำหรับข้อมูลทางชีววิทยา pandas, NumPy และ Biopython เป็นเครื่องมือพื้นฐาน AI เขียนโค้ดนี้อย่างรวดเร็ว แต่คุณเรียกใช้และตรวจสอบได้ พฤติกรรมที่สำคัญที่สุดคือการทดสอบโค้ดด้วยตัวอย่างเล็กๆ ซึ่งคุณรู้ผลลัพธ์และฝังความคาดหวังลงในโค้ดด้วยการยืนยัน อาศัยผลลัพธ์ที่กำหนดของโค้ดที่คุณเรียกใช้ ไม่ใช่การคาดเดาด้วยวาจา

งานสมัคร

พิมพ์โค้ดที่มี AI อ่านตาราง CSV ที่คุณมี (หรือตัวอย่าง) พิมพ์ขนาด และกรองยีนว่างออก จากนั้นเพิ่มการทดสอบการยืนยันจากโมเดลด้วยข้อมูลจำลอง 5 บรรทัด เรียกใช้โค้ด สังเกตจำนวนยีนก่อนและหลังตัวกรอง ตรวจสอบว่ายีนดูแลทำความสะอาด (เช่น GAPDH/ACTB) ยังคงมีอยู่ในผลลัพธ์

รายการตรวจสอบ

  • [ ] ฉันตรวจสอบขนาดและประเภทของข้อมูลก่อนประมวลผล
  • [ ] ฉันได้จัดการค่าที่หายไปอย่างชัดเจน
  • [ ] ฉันเปรียบเทียบจำนวนแถวก่อน/หลังตัวกรอง
  • [ ] ฉันได้เพิ่มการทดสอบยืนยันด้วยเงื่อนไขที่ทราบ
  • [ ] ฉันปล่อยให้การนับ/การคำนวณเป็นโค้ด ไม่ใช่โมเดล
  • [ ] ฉันอ่านความคิดเห็นของโค้ดและปฏิบัติตามตรรกะ