Friday, June 18, 2010

Editorial

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

THAI BIOINFORMATICS ฉบับนี้กลับมาในรูปโฉมใหม่ เราได้ปรับปรุงทั้งรูปเล่ม design และเนื้อหาให้ดียิ่งขึ้น พยายามแบ่งหมวดหมู่ของคอลัมน์ต่างๆ ออกมาเป็นระบบ เรายังคงมี Highlight อยู่นะครับ เพื่อนำเสนอเรื่องเด่นประจำแต่ละฉบับ และในฉบับนี้ เราจะมารู้จักกับการทำ modeling หรือพูดให้ง่ายก็คือ การสร้างแบบจำลองทางคณิตศาสตร์ขึ้นมาเพื่อใช้ในการศึกษา regulatory network ครับ และเราก็มีหมวด Software & Programing ครับ สำหรับฉบับนี้มี 2 เรื่องครับ เรื่องแรกเป็น Python Programing เจ้าเก่าของเราเองครับ ฉบับนี้เรามาเขียนโปรแกรมทาง bioinformatics จริงๆ กันแล้วล่ะครับ ส่วนอีกเรื่องหนึ่งนั้นเป็น Operating System ครับ ฉบับนี้เราแนะนำการติดตั้งระบบปฏิบัติการ Ubuntu ผ่านทาง VirtualBox ครับ

สำหรับ Spotlight ฉบับนี้ เรามี Book Reviews มาเพียงเรื่องเดียวครับ และนายหนอนหนังสือก็เตรียมหนังสือ Python Programing มาเอาใจคนเรียน Python เลยทีเดียว นอกจากนี้นายหนอนหนังสือยังแอบกระซิบกับผมว่า ถ้าคุณผู้อ่านคนใดสนใจอยากให้นายหนอนหนังสือ review หนังสือเล่มไหน หรือแนะนำหนังสือทางด้านไหนก็เขียนเข้ามาแนะนำกันได้นะครับ ส่วนสุดท้ายของ e-magazine เราก็จะเป็น Science & Society ครับ ฉบับนี้ Talk to... ของเราเปลี่ยนมือมาเป็นผมเองครับ เพราะสถานการณ์บ้านเมืองไทย ไม่สู้ดีนัก น้องปุ้มคงเดินทางไปสัมภาษณ์ลำบากเล็กน้อย ผมเลยคิดว่าเราน่าจะมาคุยกับนักวิจัยไทยในต่างแดนกันบ้าง เรื่องราวที่เราจะคุยกันนั้นจะเป็นอย่างไร ต้องไปติดตามครับ

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

Highlight

Modeling Regulatory Network

ธีรพันธ์ เหล่าเมตตาจิตต์



กลไกการทำงานของเซลล์ อาทิเช่น การเจริญเติบโต การแบ่งเซลล์ และการตายของเซลล์ (apoptosis) ถูกควบคุมด้วยปฏิสัมพันธ์ของสารชีวโมเลกุลต่างๆ ภายในเซลล์ อันประกอบด้วย DNA RNA โปรตีน ไขมัน ฯลฯ ปฏิสัมพันธ์ดังกล่าวส่วนใหญ่มักเกิดขึ้นระหว่างยีนและโปรตีน ระบบดังกล่าวจึงมักถูกเรียกว่าระบบควบคุมด้วยยีน หรือโปรตีน (gene/protein regulatory network) ปฏิสัมพันธ์่ของระบบเริ่มตั้งแต่เยื่อหุ้มเซลล์อันประกอบไปด้วยชั้นของไขมันซึ่งมีโปรตีนแทรกตัวอยู่ โปรตีนเหล่านี้ทำหน้าที่เป็นช่องทางในการรับสัญญาญจากภายนอกเซลล์และส่งต่อไปภายในเซลล์ โปรตีนกลุ่มที่ถูกเรียกว่า channel protein ทำหน้าที่เลือกโมเลกุลสัญญาณ (signaling molecule) บางชนิดให้ผ่านเข้าไปภายในเซลล์ โปรตีนกลุ่มที่ถูกเรียกว่า receptor protein มีด้านที่ยื่นออกนอกเซลล์ ทำหน้าที่จับกับตัวโมเลกุลสัญญาณ และมีด้านที่ยื่นเข้าไปภายในเซลล์ทำหน้าที่ปฏิสัมพันธ์กับสารชีวโมเลกุลอื่นๆ เพื่อส่งต่อสัญญาณเข้าไปภายในเซลล์


สัญญาณที่เซลล์รับเข้ามาอาจจะถูกส่งโดยตรงเข้าไปยังนิวเคลียสเพื่อกระตุ้นการทำงานของยีนที่แตกต่างกันออกไปขึ้นอยู่กับประเภทของสัญญาณที่ถูกส่งเข้ามา หรืออาจจะทำปฏิสัมพันธ์กับโปรตีนหรือสารชีวโมเลกุลอื่นๆ ก่อน เพื่อส่งสัญญาณเป็นทอดๆ ก่อนที่สัญญาณจะถูกส่งเข้าไปยังนิวเคลียส การส่งสัญญาณเป็นทอดๆ นี้เรียกว่า signaling cascade มักจะอยู่ในรูปของการเปลี่ยนแปลงโครงสร้างของโปรตีน (protein modifcation) อาทิเช่น การเติมหรือลบหมู่ฟอสเฟส (phosphorylation/dephosphorylation) ข้อดีสองประการของการส่งสัญญาณเป็นทอดๆ ก่อนจะส่งเข้าสู่นิวเคลียส คือ (1) เป็นการเพิ่มความแรงของสัญญาณ (amplification) ในกรณีนี้ แม้ตัวโมเลกุลสัญญาณจากนอกเซลล์จะมีปริมาณน้อย แต่เมื่อสัญญาณถูกส่งต่อไปภายในเซลล์เป็นทอดๆ จะก่อให้เกิดการเปลี่ยนแปลงโครงสร้างของโปรตีนจำนวนมาก (2) เซลล์สามารถประมวลผลสัญญาณจากนอกเซลล์เข้ากับสถานะภายในเซลล์ ในกรณีนี้การตอบสนองของเซลล์ (เช่น การกระตุ้นยีนบางชุดให้ทำงาน) จะไม่ได้ขึ้นอยู่กับสัญญาณจากภายนอกเซลล์อย่างเดียว แต่ยังขึ้นอยู่กับสถานะของโปรตีนและสารชีวโมเลกุลอื่นๆ ภายในเซลล์ ณ ขณะนั้นอีกด้วย


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

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


ในช่วง 30 ปีที่ผ่านมา เทคนิคทาง molecular biology ถูกพัฒนาขึ้นมาเพื่อศึกษาความสัมพันธ์ระหว่างสารชีวโมเลกุลภายในเซลล์ ความสัมพันธ์เหล่านี้มักถูกอธิบายในรูปของแผนผังไดอะแกรม โดยแทนโมเลกุลที่เราสนใจด้วยกล่องหรือ icon และแสดงความสัมพันธ์ระหว่าง icon ด้วยลูกศร ความสัมพันธ์ที่ถูกแสดงในไดอะแกรมมักจะเป็นในเชิงนามธรรม คือลดทอนรายละเอียดของความสัมพันธ์ออกไป ยกตัวอย่างเช่น หากเราศึกษาพบว่าโปรตีน A ทำหน้าที่กระตุ้นการทำงานของยีน B โดยการเร่งอัตราการผลิต mRNA ของยีน B (transcription) หลังจากนั้น mRNA ของยีน B จึงถูกใช้เพื่อสังเคราะห์โปรตีน B (translation) เราสามารถเขียนไดอะแกรมแสดงขั้นตอนดังกล่าวแบบง่ายๆ ด้วยการเชื่อมลูกศรจาก icon ที่เป็นตัวแทนของโปรตีน A ไปยัง icon ที่เป็นตัวแทนของโปรตีน B โดยไม่คำนึงถึงรายละเอียดของกระบวนการ transcription และ translation (ดูรูปประกอบ) ต่อมาในยุคที่เทคนิก high-throughput เข้ามามีบทบาทสำคัญในการศึกษาชีวโมเลกุล ทำให้เกิดข้อมูลความสัมพันธ์ระหว่างสารชีวโมเลกุลภายในเซลล์จำนวนมาก ไดอะแกรมที่แสดงความสัมพันธ์ของชีวโมเลกุล จึงขยายใหญ่ขึ้นและซับซ้อนยิ่งขึ้น ปัจจุบันการศึกษาจึงมามุ่งเน้นไปที่การทำความเข้าใจผลลัพท์ของความสัมพันธ์ของยีนและโปรตีน ในระดับเครือข่ายที่มีผลต่อการเปลี่ยนแปลงในระดับเซลล์ การศึกษาดังกล่าวจำเป็นต้องใช้ความรู้ทั้งจากสายการทดลองและสายทฤษฎีแขนงต่างๆ เช่น คณิตศาสตร์ ฟิสิกส์ สถิติ รวมไปถึงความรู้ทางวิศวกรรม อาทิเช่น control theory การรวมกันของความรู้จากแขนงต่างๆ เพื่อศึกษาระบบทางชีววิทยา ก่อให้เกิดศาสตร์แขนงใหม่ๆ ที่เกี่ยวข้องกัน อันได้แก่ systems biology, computational cell biology และ bioinformatics


ในบทความนี้จะเป็นการแนะนำหัวข้อที่น่าสนใจในการศึกษา regulatory network โดยหัวข้อย่อยที่จะกล่าวต่อไปนี้จะถูกกล่าวในรายละเอียดอีกครั้งในบทความถัดๆไป บทความในซีรีส์นี้จะเน้นการศึกษาเชิงทฤษฎีและการประยุกต์ใช้ความรู้จากคณิตศาสตร์ ฟิสิกส์ คอมพิวเตอร์ วิศวกรรม สถิติ เพื่อที่จะทำความเข้าใจระบบ regulatory network ภายในเซลล์ และจะพยายามนำการศึกษาจากสายการทดลองมาประกอบด้วย


การศึกษา regulatory network กับแบบจำลองทางคณิตศาสตร์


การทำความเข้าใจปฏิสัมพันธ์ระหว่างโปรตีนและยีนในระบบหนึ่งๆ นั้นไม่ใช่เรื่องง่าย โดยเฉพาะระบบที่มีเครือข่ายค่อนข้างซับซ้อน อาทิเช่น ระบบที่ควบคุมการแบ่งเซลล์ ในระบบดังกล่าว เซลลจำเป็นที่จะต้องตัดสินใจตอบสนองต่อสิ่งเร้าหรือสัญญาณจากภายนอกเซลล์ที่มีความหลากหลาย ระบบควบคุมดังกล่าวจึงมีขนาดใหญ่และซับซ้อนเพื่อที่จะสามารถรวบรวมข้อมูลจากหลายๆ ระดับและประมวลผลเข้าด้วยกันเพื่อตอบสนองได้อย่างเหมาะสม การศึกษาระบบที่ซับซ้อนเหล่านี้ เป็นไปได้ยากที่เราจะสามารถทำความเข้าใจได้ด้วยการคิดและใช้ตรรกะเหตุผลภายในหัวของเรา แบบจำลองทางคณิตศาสตร์เป็นเครื่องมือหนึ่งที่สามารถช่วยให้เราเข้าใจพฤติกรรมของระบบที่ซับซ้อนได้ ทฤษฎีต่างๆ ทางคณิตศาสตร์นั้นประสบความสำเร็จในการประยุกต์ใช้เพื่อแก้ปัญหาทางฟิสิกส์และวิศวกรรมมานานแล้ว ปัจจุบันเราจะพบว่าทฤษฎีเหล่านี้ถูกนำมาประยุกต์ใช้ในปัญหาทางชีววิทยากันอย่างแพร่หลาย ในระบบ regulatory network นั้น เครือข่ายของสารชีวโมเลกุลเชื่อมต่อและควบคุมซึ่งกันและกัน เหมือนกับวงจรอิเลกโทรนิกส์วงจรหนึ่ง เครือข่ายความสัมพันธ์ของยีนและโปรตีนมักจะอยู่ในลักษณะของ feedback ซึ่งหมายถึงว่าผลลัพธ์ของระบบมีผลย้อนกลับไปยังตัวระบบเอง ยกตัวอย่างเช่น ระบบที่ต้องการรักษาปริมาณของโปรตีนตัวหนึ่งให้คงที่อยู่เสมอ ระบบดังกล่าวต้องสามารถรับรู้ถึงการเปลี่ยนแปลงเพิ่มขึ้นหรือลดลงของโปรตีน และต้องมีกลไกที่จะปรับสมดุลของปริมาณโปรตีนให้กลับมาสู่จุดที่ต้องการ หลักการทำงานของระบบนี้เปรียบได้กับหลักการทำงานของ thermostat ที่อยู่ในเครื่องปรับอากาศตามบ้าน ในทางคณิตศาสตร์และวิศวกรรม พฤติกรรมของระบบที่มี feedback ถูกศึกษาอย่างแพร่หลายด้วย control theory เป็นที่น่าสนใจว่า ทฤษฎีดังกล่าวสามารถประยุกต์ใช้เพื่อศึกษาระบบ regulatory network ได้อย่างยอดเยี่ยม แบบจำลองชนิดต่างๆ ที่มักถูกใช้ในการศึกษา regulatory network จะถูกนำเสนอในบทความต่อๆ ไป


Regulatory network ประกอบไปด้วย modules และ motifs


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


นอกจากนี้หากเราศึกษาลงไปในแต่ละโมดูล เราจะพบว่าแต่ละโมดูลมักประกอบด้วยปฏิสัมพันธ์ระหว่างยีนหรือโปรตีนที่มีรูปแบบซ้ำๆ กัน (ดูรูปประกอบ) รูปแบบซ้ำๆ ของความสัมพันธ์ระหว่างยีนหรือโปรตีนที่พบทั่วไปใน regulatory network นี้ถูกเรียกว่า โมทีฟ (network motifs) จากการศึกษาโมทีฟต่างๆ ด้วยแบบจำลองทางคณิตศาสตร์และต่อมาด้วยการทดลอง แสดงให้เห็นว่า โมทีฟเหล่านี้มีหน้าที่เฉพาะตัว และหน้าที่เหล่านี้เป็นประโยชน์กับเซลล์ วิวัฒนาการจึงคัดเลือกรูปแบบความสัมพันธ์เหล่านี้เก็บไว้ ในบทความถัดๆ ไป เราจะเห็นว่าในโมทีฟแต่ละชนิด จะประกอบด้วยยีนหรือโปรตีนที่เป็นองค์ประกอบที่แตกต่างกัน แต่รูปแบบความสัมพันธ์จะเหมือนเดิมเสมอ แสดงให้เห็นว่าวิวัฒนาการของการเกิดโมทีฟแต่ละชนิดเป็นแบบลู่เข้าหากัน (convergent evolution)


ความไม่แน่นอนภายในเซลล์


ระบบทุกระบบรวมทั้งระบบของเซลล์มีความไม่แน่นอนหรือความแปรปรวนเกี่ยวข้องอยู่ด้วย ความไม่แน่นอนและความแปรปรวนที่เกิดกับเซลล์นั้นจะถูกเรียกว่า noise ความสัมพันธ์ของสารชีวโมเลกุลภายในเซลล์ เกิดจากการทำปฏิกิริยาระหว่างกัน เช่น การเติมหรือลบหมู่ฟอตเฟสของโปรตีนตัวหนึ่งโดยโปรตีนอีกตัวหนึ่ง ถ้ามองลงไปที่ระดับโมเลกุล ปฏิกิริยาเหล่านี้เกิดจากการชนกันของโมเลกุลโปรตีนที่เกิดขึ้นอย่างสุ่ม โดยปกติหากปริมาณโปรตีนที่เราสนใจมีปริมาณมาก เราสามารถละเลยความไม่แน่นอนที่เกิดจากการชนกันแบบสุ่มของโมเลกุลได้ โดยมุ่งเน้นไปที่การศึกษาพฤติกรรมโดยเฉลี่ยของระบบ แต่หากปริมาณโปรตีนที่เราศึกษามีปริมาณน้อย ความไม่แน่นอนก็จะยิ่งมากขึ้น เปรียบได้กับการสุ่มคนขึ้นมาหนึ่งร้อยคนในแต่ละวันเพื่อถามส่วนสูงแล้วหาค่าเฉลี่ย ค่าเฉลี่ยที่ได้ในแต่ละวันมักจะไม่ต่างกันมากนัก แต่หากในแต่ละวันเราสุ่มคนเพียงแค่ห้าคน ค่าที่ได้ก็จะมีความแปรปรวนสูง โดยปกติเซลล์ขนาดใหญ่ที่มีปริมาณสารชีวโมเลกุลแต่ละชนิดจำนวนมาก เราจะไม่คำนึงถึงความไม่แน่นอน และแบบจำลองที่ใช้ศึกษาก็จะเป็นแบบจำลอง deterministic หมายความว่า หากเราศึกษาระบบสองระบบที่มีลักษณะเหมือนกันทุกประการ ผลลัพธ์ที่ได้ออกมาจะต้องเหมือนกัน แต่ในกรณีที่เซลล์มีขนาดเล็กและมีปริมาณสารชีวโมเลกุลแต่ละชนิดจำนวนน้อย เช่น เซลล์แบคทีเรียหรือยีสต์ ความไม่แน่นอนก็จะมีผลต่อระบบมากขึ้น ในกรณีนี้เราจำเป็นต้องใช้แบบจำลองแบบ stochastic แทน ในบทความหัวข้อเรื่องความไม่แน่นอนภายในเซลล์ เราจะเห็นว่า เซลล์สองเซลล์ที่มีชุดยีน (genotypes) เหมือนกันทุกประการ สามารถที่จะมีลักษณะของเซลล์ (phenotypes) ที่แตกต่างกันได้ (variation) ความแตกต่างนี้เกิดจากความไม่แน่นอนภายในเซลล์หรือ stochasticity นั่นเอง นอกจากนี้เราจะเห็นด้วยว่าศาสตร์ทางสถิติมีบทบาทสำคัญในการศึกษา regulatory network


ความเสถียรของระบบ


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


Synthetic biology ศาสตร์ที่เชื่อมแบบจำลองเข้าสู่การทดลอง


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


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


ประโยชน์ของแบบจำลอง


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

Python Programming

นับจำนวน nucleotide ด้วย Python

ประพัฒน์ สุริยผล


สวัสดีครับ ครั้งนี้ในส่วนของ Python programming จะมีการเปลี่ยนแปลงไปพอสมควร เพราะผมคิดว่าเราเรียนรู้พื้นฐาน Python กันมาพอสมควรแล้ว ความจริงก็คือผมคิดว่าบทเรียนที่ผมเขียนค่อนข้างหยาบสำหรับให้น้องๆ ในหน่วยเรียนรู้ Python เริ่มจะหมด stock แล้ว และพอหวนกลับไปดูในส่วนที่เหลือ ผมคิดว่าอาจจะไม่ค่อยมีประโยชน์เท่าไรนัก เลยตัดสินใจเขียนขึ้นมาใหม่ สำหรับท่านที่สนใจบทความที่เหลือใน stock แวะเข้าไปดูได้ที่ http://bdm.si.mahidol.ac.th/document/python/python-tutorial ครับ ถ้ามีคำแนะนำ ติชมประการใด จะส่งเมล์หา editor คนเก่งของเรา หรือส่งเมล์ถึงผมโดยตรงก็ได้ครับ


โจทย์ - นับจำนวน bp ใน FASTA file


โจทย์ครั้งนี้ไม่ยากครับ แต่น่าจะช่วยให้เข้าใจการเขียนโปรแกรมได้ดีขึ้น และเราจะได้เรียนคำสั่ง Python เพิ่มเติมจากที่เคยกล่าวถึงหลายคำสั่งทีเดียว


มาเริ่มที่โจทย์นะครับ มีคนนำไฟล์ FASTA format ที่มี sequence ของ nucleotide อยู่มาให้ครับ แล้วบอกว่าอยากทราบว่า nucleotide ในแต่ละไฟล์นั้นมีความยาวกี่ bp ไม่ยากใช่ไหมครับ ทำเองก็ได้ แต่ถ้ามีสัก 10 ไฟล์ คงไม่ค่อยอยากทำเองสักเท่าไหร่ เรามาเขียนโปรแกรมช่วยกันดีกว่า


ศึกษาโจทย์


ก่อนที่เราจะเขียนโปรแกรม เราต้องเข้าใจโจทย์ให้ชัดเจนก่อน ไฟล์ FASTA format จะประกอบด้วย 2 ส่วนคือ ส่วนที่เป็น header และส่วนที่เป็นเนื้อหา ส่วน header จะขึ้นต้นด้วยสัญลักษณ์ > แล้วตามด้วยคำบรรยาย หลังจากนั้นจะเป็นส่วนเนื้อหาทั้งหมด ที่สำคัญเนื้อหาสามารถมีมากกว่าหนึ่งบรรทัดได้


ตัวอย่าง FASTA file


>gi|296176325|emb|HC742679.1| Sequence 184 from Patent WO2010043977


TCCTATGTGCTGACTCAGCCACCCTCGGTGTCAGTGGCCCCAGGACAGACGGCCAGGATTACCTGTGGGG

GAAACAACATTGGAAGTAAAAGTGTGCACTGGTACCAGCAGAAGCCAGGCCAGGCCCCTGTGCTGGTCGT

CTATGATGATAGCGACCGGCCCTCAGGGATCCCTGAGCGACTCTCTGGCTCCAACTCTGGGAACACGGCC

ACCCTGACCATCAGCAGGGTCGAAGCCGGGGATGAGGCCGACTATTACTGTCAGGTGTGGGATAGTAGTA

GTGGTCCTTTTGTGGTTTTCGGCGGAGGGACCAAGCTGACCGTCCTAG


ถ้าเราต้องการจะนับจำนวน nucleotide เราก็จะต้องนับ nucleotide ในส่วนที่เป็นเนื้อหาทั้งหมด


เริ่มที่การวางแผน


วิธีหนึ่งที่ใช้ได้ในการวางแผนคือถามตอบตัวเอง โจทย์คือเราต้องการนับจำนวน nucleotide ในส่วนเนื้อหา


คำถาม จะรู้ได้อย่างไรว่าเป็นเนื้อหา

คำตอบ บรรทัดนั้นไม่ได้ขึ้นต้นด้วยสัญลักษณ์ >


คำถาม แล้วบรรทัดว่างที่คั่นระหว่าง header กับเนื้อหาล่ะ

คำตอบ ถ้าบรรทัดนั้นไม่มีตัวอักษรอะไร เราก็ไม่สนใจ


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


1__for line in fasta_file:

2______if line.startswith('>'):

3__________continue

4______if line.empty():

5__________continue

6______count_nucleotide


โปรแกรมข้างต้นยังไม่ใช่โปรแกรม Python ที่ใช้งานได้จริง แต่เป็นการแปลงแผนของเราให้ออกมาอยู่ในรูปของโปรแกรมแบบคร่าวๆ เรียกว่า pseudocode


คำถาม แล้วเราจะอ่านไฟล์ได้อย่างไร

คำตอบ ใช้คำสั่ง open สมมติว่าไฟล์ที่เราต้องการอ่านอยู่ใน drive c ในโฟลเดอร์ data ชื่อว่า test.fasta เราจะสามารถอ่านได้โดยคำสั่ง


fasta_file = open('c:/data/test.fasta')

ให้สังเกตว่าเราใช้เครื่องหมาย slash (/) ไม่ใช่ backslash (\) ตามที่เราใช้กันปกติใน Windows


คำถาม เราเรียกใช้คำสั่ง empty ในบรรทัดที่ 4 ใน python ไม่มีคำสั่งนี้ เราจะทำอย่างไร

คำตอบ ถ้าบรรทัดนั้นว่าง ก็จะไม่มีข้อมูลอะไร ยกเว้นค่าการขึ้นบรรทัดใหม่ เราน่าจะตรวจสอบได้


คำถาม ค่าการขึ้นบรรทัดใหม่???

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


คำถาม แล้วเราจะตรวจสอบยังไง

คำตอบ ปกติเราจะไม่ตรวจสอบค่าการขึ้นบรรทัดใหม่ เมื่อเราต้องการรู้ว่าบรรทัดนั้นว่างหรือเปล่า โดยทั่วไปแล้ว เราจะให้ Python ตัดค่าการขึ้นบรรทัดใหม่ทิ้งไป ด้วยคำสั่ง strip() แล้วตรวจสอบดูว่าไม่มีข้อมูลเหลือ (empty string) โปรแกรมในบรรทัดที่ 4 จึงเปลี่ยนเป็น


if line.strip() == '':

Note: คำสั่ง strip() เป็นคำสั่งที่ใช้ในการกำจัด white space ที่อยู่ด้านหน้าและหลังของบรรทัด คุณสามารถหาข้อมูลเพิ่มเติมได้จาก help file ของ python ในครั้งนี้ เราต้องการใช้คำสั่ง strip() ในการกำจัดค่าการขึ้นบรรทัดใหม่ซึ่งถือว่าเป็น white space ตัวหนึ่งเหมือนกัน ค่า white space คือค่าต่างๆ ที่ไม่ได้พิมพ์ออกมาให้เห็น เช่นตัว space เองที่เป็นตัวว่างๆ ค่า Tab ที่ทำให้เกิดช่องว่างหลายช่อง และค่าการขึ้นบรรทัดใหม่ ถ้ามีค่าเหล่านี้ที่ด้านหน้าหรือหลังของบรรทัด คำสั่ง strip() จะกำจัดให้เรา คำสั่ง strip() จะเป็นคำสั่งที่เราใช้งานบ่อยมากเมื่อทำงานกับไฟล์ตัวอักษร


คำถาม แล้วเราจะนับจำนวน nucleotide ยังไง

คำตอบ Python มีคำสั่ง len ที่สามารถใช้นับตัวอักษรได้อยู่แล้ว คำสั่งบรรทัดที่ 6 จึงเป็น

print len(line)

โปรแกรมเวอร์ชันแรก และการแก้ไขข้อผิดพลาด


มาถึงตรงนี้ เราก็จะได้โปรแกรมแรกดังนี้


listing 1.

1__fasta_file = open('c:/data/test.fasta')

2__for line in fasta_file:

3______if line.startswith('>'):

4__________continue

5______if line.strip() == '':

6__________continue

7______print len(line)

ลอง save file นี้ในชื่อ count_fasta.py (ไม่ต้องมีบรรทัดที่เขียนว่า listing 1. และไม่ต้องมีเลขบรรทัดนะครับ) แล้วลองเอาโปรแกรมนี้ไปใช้งานจริง และตรวจคำตอบก็จะพบข้อผิดพลาดและความไม่สะดวกหลายอย่าง ประการแรกคือจำนวน nucleotide ที่พิมพ์ออกมาของแต่ละบรรทัดเกินมา 1 ตัวอักษร และโปรแกรมไม่ได้นับจำนวน nucleotide ทั้งหมดมาให้ แต่กลับพิมพ์ความยาวของ nucleotide แต่ละบรรทัดออกมา แถมยังผิดเสียด้วย


คำถาม ทำไมนับเกินมา 1

คำตอบ เพราะว่าคำสั่ง len นับค่าการขึ้นบรรทัดใหม่ ถึงแม้ว่าเราจะมองไม่เห็นค่านี้ แต่ python มองเห็น และคำสั่ง len ก็ทำงานถูกต้อง เพียงแต่เราไม่ได้นึกถึง จึงได้คำตอบที่ผิดออกมา เราสามารถแก้ไขด้วยการใช้คำสั่ง


print len(line.strip())


แต่คำสั่งด้านบน ยังไม่ตอบโจทย์เรื่องการนับจำนวน nucleotide ทั้งหมด เราต้องแก้ไข ด้วยการยังไม่พิมพ์ค่าที่นับได้ของแต่ละบรรทัด แต่ให้สะสมยอดไว้ก่อน เพื่อพิมพ์ผลในภายหลัง เราจึงแก้ไขโปรแกรมด้วยการเพิ่มตัวแปรตัวหนึ่งสำหรับนับจำนวน nucleotide


listing 2.

1__fasta_file = open('c:/data/test.fasta')

2__count = 0

3__for line in fasta_file:

4______if line.startswith('>'):

5__________continue

6______if line.strip() == '':

7__________continue

8______count = count + len(line.strip())

9__print count


ให้สังเกตว่า บรรทัดที่ 9 ไม่ได้ย่อหน้าเข้าไป เพราะเราต้องการให้ออกจากลูป for ก่อน จึงค่อยพิมพ์ค่าใน count การทำงานของโปรแกรมคือให้ค่า count = 0 เสียก่อนในบรรทัดที่ 2 จากนั้นทุกครั้งที่การทำงานมาถึงบรรทัดที่ 8 Python ก็จะนำเอาค่า count ที่มีอยู่ไปบวกกับความยาวของ nucleotide ของบรรทัดนั้น แล้วใส่กลับไปที่ตัวแปร count อีกครั้งหนึ่ง (ให้อ่าน code จากทางด้านขวาของเครื่องหมาย = ก่อน เพื่อดูว่าค่าใหม่ที่จะใส่ให้ตัวแปรที่อยู่ทางซ้ายคืออะไร) เมื่อสิ้นสุดการอ่านไฟล์ ก็จะออกมาจากลูป for Python ก็จะพิมพ์ค่าที่อยู่ใน count ออกมา


ปรับแต่งโปรแกรม ให้ดูเป็นมืออาชีพ


อันที่จริงโปรแกรมใน listing 2. ก็ทำงานได้ถูกต้องแล้ว แต่สามารถปรับปรุงให้โปรแกรมดูดีขึ้นอ่านง่ายขึ้นได้


จุดแรกคือเราจะเห็นว่าเราเรียกใช้ line.strip() 2 แห่ง เราสามารถนำค่า line.strip() ใส่ไว้ในตัวแปรตัวหนึ่งแล้วนำไปใช้ได้ จะทำให้โปรแกรมกระชับขึ้น จุดที่ 2 คือคำสั่ง if ที่บรรทัดที่ 4 และ 6 นั้นถ้าเป็นจริง จะทำงานเหมือนกันคือ continue เราควรจะรวบเงื่อนไขบรรทัดที่ 4 และ 6 ได้ สุดท้ายจุดที่ 3 คือเมื่อตัวแปร count ถูกใช้ในลักษณะนี้ เราสามารถเขียนแบบย่อได้ ซึ่งเมื่อเราคุ้นเคยกับ python แล้วจะอ่านได้เข้าใจง่ายกว่า เพราะจะทราบได้ทันทีว่าเราต้องการ update ตัวแปร count เราจึงได้โปรแกรมสุดท้ายออกมาเป็น


listing 3.

1__fasta_file = open('c:/data/ test.fasta')

2__count = 0

3__for line in fasta_file:

4______data = line.strip()

5______if line.startswith('>') or data == '':

6__________continue

7______count += len(data)

8__print count

เพิ่มความสะดวก ด้วยการอ่านชื่อไฟล์จาก command line


การที่เราจะต้องแก้ชื่อไฟล์ทุกครั้งที่จะนับจำนวน nucleotide ช่างไม่สะดวกเอาเสียเลย ทางที่ดี เราน่าจะสามารถเรียกใช้งานได้ในลักษณะนี้ คือ เปิด command box ขึ้นมา (รันโปรแกรม cmd.exe) แล้วเรียกใช้โปรแกรมได้ โดยใส่ชื่อไฟล์ fasta ต่อท้าย ดังตัวอย่าง


python count_fasta.py c:\data\test.fasta


listing 4.

1__import sys

2__fasta_file = open(sys.argv[1])

3__count = 0

4__for line in fasta_file:

5______data = line.strip()

6______if line.startswith('>') or data == '':

7__________continue

8______count += len(data)

9__print count

ให้สังเกตบรรทัดที่ 1 และ 2 ครับ ผมขออธิบายคร่าวๆ ในครั้งนี้ก่อนว่า บรรทัดที่ 1 เป็นการบอกให้ Python นำ module ที่ชื่อว่า sys เข้ามา และบรรทัดที่สอง เราเปิดไฟล์ที่มีชื่ออยู่ใน sys.argv[1] แทนที่เราจะกำหนดไว้ตายตัว ท่านที่สนใจรายละเอียดสามารถค้นข้อมูลเพิ่มเติมได้ครับ เราจะกล่าวถึงรายละเอียดของ module sys และการอ่านค่าจาก command line ในภายหลัง


แต่ครั้งนี้ คุณได้โปรแกรมนับจำนวน nucleotide ที่ใช้งานได้จริงเก็บไว้ใน stock เรียบร้อยแล้ว

Talk to...

คุยกับนักวิจัย bioinformatics ชาวไทยในต่างแดน
ประเวช อรรจวัฒนวงศ์

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


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


พี่อยากให้น้องแอมแนะนำตัวเพิ่มนิดนึงครับ


ได้ค่ะ อันที่จริงแอมเพิ่งเรียนจบปริญญาเอกปีที่แล้วค่ะ แล้วตอนนี้แอมก็ทำงานเป็นนักวิจัยหลังปริญญาเอก (post doc) อยู่กับอาจารย์ที่ปรึกษาตอนปริญญาเอกของแอมนี่แหละค่ะ อยู่ที่ Chalmers University of Technology ประเทศสวีเดน


ทำงานวิจัยด้านไหนครับ


ก็มีหลายด้านนะคะ อย่างเช่นงานด้าน systems biology ก็มี แล้วก็ด้าน bioinformatics ก็มี อ่อ...แล้วก็มีพวก omics analysis ทั้งหลายด้วยค่ะ แต่ส่วนใหญ่แอมเน้น systems biology ในจุลินทรีย์พวกยีสต์และราค่ะ


ลองให้คำจำกัดความเกี่ยวกับ systems biology


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


ถ้าอย่างนั้นคำว่า systems biology ก็ควรที่จะมีความหมายครอบคลุมถึง network ทั้งหมดภายในเซลล์ชองสิ่งมีชีวิตใช่หรือไม่


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


แต่ถ้าอ่านตำราเล่มอื่นๆ เขาอาจจะจัดจำแนก network ออกเป็นชนิดอื่นๆ ซึ่งแตกต่างไปจากที่แอมอธิบาย นั่นก็ไม่ผิดอะไร มันขึ้นอยู่กับมุมมองของปัญหาและขอบเขตการศึกษา เช่น บางคนอาจจะแบ่งเพิ่มเป็น signaling network และ interaction network หรืออย่างอื่นอีกก็ได้ค่ะ


แล้วงานวิจัยที่แอมกำลังทำอยู่ ต้องสร้างแบบจำลองของ network ทั้งสองชนิดนี้เลยหรือเปล่า


ค่ะ ต้องสร้างแบบจำลองทางคณิตศาสตร์ แต่ว่างานของแอมยังอยู่ในส่วนของ metabolic pathway ค่ะ แอมต้องบอกก่อนว่า ก่อนที่เราจะสร้างแบบจำลองทางคณิตศาสตร์หรือที่เราเรียกกันว่า mathematical modeling ได้นั้น เราจำเป็นต้องมีข้อมูลเป็นจำนวนมาก ทั้งในแง่ของชนิดข้อมูลและปริมาณข้อมูล ตัวอย่างเช่น ข้อมูลพวก genome sequence, annotation, protein function, biochemical reaction, thermodynamic, enzyme kinetic, protein localization, biomass composition และยังรวมไปถึงการค้นคว้าข้อมูลหรืองานวิจัยที่ถูกตีพิมพ์เอาไว้ในวารสารระดับนานาชาติอีกเยอะมากค่ะ


ส่วนในด้านของ regulatory network ของสิ่งมีชีวิตชนิดที่แอมกำลังศึกษาอยู่นั้นยังมีข้อมูลไม่เพียงพอที่จะนำมาสร้างหรือพัฒนาเป็นแบบจำลองทางคณิตศาสตร์เพื่อให้เกิดความเข้าใจที่ถูกต้องได้ค่ะ แอมเลยไปเน้นที่ metabolic network มากกว่า


แอมศึกษา metabolic network ใน Aspergillus ตั้งแต่เริ่มวิทยานิพนธ์เลยหรือเปล่า หรือว่าเพิ่งเริ่มทำตอนนี้


อันนี้เป็นงานปริญญาเอกค่ะ แต่ตอนนี้งาน systems biology ที่แอมทำขยายออกไปมากกว่านี้แล้วค่ะ ยกตัวอย่างเช่น การศึกษาการเพิ่มผลผลิตและปรับปรุงกระบวนการผลิตยาปฏิชีวนะ penicillin ซึ่งเป็นสาร จำพวก secondary metabolite ที่สร้างขึ้นมาจากเชื้อรา Penicillium chrysogenum


นอกจากงานวิจัยเรื่องนี้แล้ว แอมยังมีงานวิจัยอื่นอีกไหมครับ


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


นอกจากนี้ แอมยังสานต่องานด้าน A. oryzae เพื่อใช้ในกระบวนการผลิตพลังงานทดแทนด้วย ยกตัวอย่างเช่น สารประกอบที่มีคาร์บอนสี่อะตอมอย่าง fumalic acid และ succinic acid น่ะค่ะ


สำหรับงานที่กล่าวมาทั้งหมดข้างต้นนี้ แอมเชื่อว่า ความเข้าใจในกระบวนการต่างๆ ของระบบ metabolism เป็นสิ่งที่สำคัญมาก และยังเป็นหัวใจสำคัญของการศึกษาและการวิจัยในด้าน systems biology อีกด้วย


แอมเริ่มหันมาสนใจ bioinformatics ตั้งแต่เมื่อไร


แอมรู้จัก bioinformatics ในช่วงที่แอมเรียนปริญญาตรี ปีที่สี่ในภาควิชาเทคโนโลยีชีวภาพ มหาวิทยาลัยมหิดลค่ะ แล้วก็ได้ตัดสินใจเรียนต่อในระดับปริญญาโทด้านนี้ที่มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี หลังจากนั้นแอมก็มาศึกษาต่อปริญญาเอกที่เดนมาร์คกับ Prof. Jens Nielsen แล้วก็ย้ายมาอยู่ที่สวีเดนกับอาจารย์ท่านเดิมค่ะ


แอมว่า bioinformatics ในประเทศไทยกับต่างประเทศมีความแตกต่างกันอย่างไร


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


แอมวางแผนอนาคตตัวเองไว้อย่างไร อยากกลับไปทำงานที่เมืองไทยไหม


อยากมากๆ เลยค่ะ ในฐานะที่เป็นคนไทย แอมอยากจะกลับไปช่วยพัฒนาด้านการเรียนการสอน และพัฒนาบุคลากรด้าน bioinformatics และด้าน systems biology ในเมืองไทยให้ดียิ่งขึ้นในอนาคต


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


ก็จะอยู่ที่สวีเดนจนถึงสิ้นปีนี้ค่ะ แต่แอมมีโครงการที่จะไปทำงานเป็นอาจารย์ที่ Suzhou University ที่ประเทศจีน แอมคิดว่าแอมอยากจะรวบรวมประสบการณ์การทำงานจากที่ต่างๆ ก่อนกลับไปช่วยพัฒนางานวิจัยด้าน bioinformatics ในประเทศไทย


อยากให้แอมแนะนำน้องๆ นักเรียนรุ่นใหม่ๆ ที่สนใจอยากเรียน bioinformatics ว่าควรเตรียมตัวอย่างไร


ไม่ต้องเตรียมตัวมากค่ะ แต่อยากให้เตรียมใจให้พร้อม ยกตัวอย่างในกรณีของแอมนะคะ แอมเรียนจบมาทางด้าน biotechnology ซึ่งแอมเองไม่เคยรู้ computer science และ programing language มาก่อนเลย แล้วต้องมาเรียนด้านนี้ มันไม่ใช่เรื่องง่ายค่ะ (แต่มันก็ไม่ใช่เรื่องยากนะคะ) ดังนั้น การเตรียมใจให้พร้อม เป็นสิ่งสำคัญ เพราะเราต้องอยู่กับสื่งเหล่านี้ให้มีความสุขให้ได้ ไม่อย่างนั้นเราก็ไม่สามารถสร้างงานที่ดีๆ ออกมาได้ค่ะ


แอมมองว่าอนาคตของงานวิจัยทางด้าน systems biology จะเป็นอย่างไร


ณ ปัจจุบันแอมมองว่า systems biology เพิ่งจะเริ่มต้น ดังนั้นศาสตร์นี้จะยังพัฒนาไปได้อีกมาก


แอมคิดว่า ใครเป็นบุคคลที่อยู่เบื้องหลังที่ทำให้แอมสามารถมาถึงจุดนี้ได้


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


สุดท้ายนี้ ผมต้องขอขอบคุณน้องแอมเป็นอย่างมาก ที่สละเวลามาคุยกับผมใน Talk to... ฉบับนี้ ผมเชื่อว่าเราคงจะได้ความรู้ และแนวความคิดเกี่ยวกับ bioinformatics จากนักวิจัยที่มีประสบการณ์ทำงานในต่างประเทศ และเราคงจะได้กลับไปพบกับน้องปุ้มอีกในฉบับหน้าครับผม