Saturday, October 30, 2010

R Programing

แนะนำ R Statistical Programing

อภิชาต ศุรธณี และ กิติพร พลายมาศ


สวัสดีครับเพื่อนสมาชิกทุกท่าน เรื่องราวที่ท่านกำลังอ่านนี้ เป็นบทความในคอลัมน์ใหม่ ชื่อ R Programing ซึ่งจะไปอยู่ในส่วนของ SOFTWARE & PROGRAMING นั่นเองครับ สำหรับเรื่องราวในส่วนนี้ ผมอยากแนะนำให้เพื่อนสมาชิกได้รู้จักกับ “R-Programing” หรือที่เรียกย่อๆ กันว่า “R” โดยผมจะเริ่มจากเรื่องง่ายๆ เบาๆ ไปก่อนนะครับ แล้วก็จะค่อยๆ นำเสนอเพื่อนๆ เกี่ยวกับการใช้โปรแกรมไปจนถึงการประยุกต์ในครั้งถัดๆ ไป


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


สำหรับผู้ที่คุ้นเคยกับ commercial softwares อย่างเช่น “MatLab” หรือจะซอฟแวร์จำพวก open source ต่างๆ เช่น “GNU Octave” คงจะสามารถทำความคุ้นเคยกับ R-programming ได้ไม่ยากนัก เพราะต่างก็มีลักษณะการใช้งานที่คล้ายกัน แต่หากใครเป็นมือใหม่ก็ไม่ต้องตกใจไปนะครับ เพราะเราจะมาทำความรู้จักกับ R ไปพร้อมๆ กันแบบ step-by-step แล้วเราจะพบว่า R นั้นสามารถทำอะไรได้หลายๆ อย่าง เช่นเดียวกันกับ commercial software ราคาแพงๆ เลยทีเดียว


รู้จัก R-programing


R เป็นภาษาโปรแกรม (programing language) เพื่อใช้ในการคำนวณเชิงสถิติและแสดงผลภาพกราฟฟิกที่ได้รับการพัฒนาต่อมาจากภาษา S-programing (statistical programing) โดย R นั้นจะอยู่ภายใต้ลิขสิทธิ์ของ GNU general public license ซึ่งเป็นลิขสิทธิ์ประกันความเสรีในการแบ่งปันและแก้ไขซอฟแวร์ โดยเราสามารถดาวน์โหลด R ได้ฟรีที่ http://www.r-project.org/ โดย R สามารถทำงานได้ในหลายระบบปฏิบัติการ ทั้ง Windows Linux และ Mac OS


ในโปรแกรม R นั้นจะประกอบไปด้วยแพ็คเกจและฟังก์ชันทางการคำนวณพื้นฐานมาให้แล้วครับ (หรือที่เรียกว่า R-base) จุดที่น่าสนใจของ R นั้นก็คือ เราสามารถดาวน์โหลดแพ็คเกจพิเศษที่เกี่ยวกับงานที่เราสนใจเพิ่มเติมได้ เช่น แพ็คเกจเกี่ยวกับการวิเคราะห์ microarrays, sequence data, gene ontology annotation หรือแพ็คเกจอื่นๆ ทางวิทยาการคอมพิวเตอร์และสถิติต่างๆ เช่น network analysis, decision tree, support vector machines, principle component analysis ที่ได้รับการพัฒนาและเผยแพร่ไว้แล้วมากมายครับ ในรูปด้านบน จะเป็นตัวอย่างการวาดภาพ network สวยๆ ด้วยฟังก์ชั่น plot ใน R ครับ ในปัจจุบันนั้นมีแพ็คเกจที่ถูกพัฒนาและแจกจ่ายมากถึง 2,500 กว่าแพ็คเกจด้วยกัน เรียกได้ว่าถ้าเราสนใจจะหาแพ็คเกจที่เกี่ยวข้องกับหัวข้องานที่เราสนใจอยู่ ก็มีโอกาสหาดาวน์โหลดมาทดลองใช้งานกันได้สะดวกเลยครับ นอกจากนั้นหากใครที่ได้พัฒนาโปรแกรมของตนเองด้วยภาษา R จนเชี่ยวชาญแล้ว อยากจะแจกจ่ายตัวโปรแกรมของเราให้ผู้อื่นได้ทดลองใช้งานบ้าง ก็สามารถทำเป็นแพ็คเกจของเราเองได้ โดยจะต้องทำตามเงื่อนไขและรูปแบบมาตรฐานที่กำหนดไว้ แล้วส่งไปเผยแพร่ในเว็บไซต์ของ R ได้ครับ ด้วยเหตุนี้เราในฐานะผู้ใช้อาจจะต้องระมัดระวังในการเลือกใช้แพ็คเกจอันใดอันหนึ่ง เราอาจจะต้องดูว่าผู้พัฒนาแพ็คเกจนั้นๆ ได้มีแหล่งอ้างอิงแพ็คเกจของตนเองไปยังผลงานตีพิมพ์ชิ้นใดหรือไม่ และน่าเชื่อถือเพียงใด แต่โดยส่วนใหญ่แล้วแพ็คเกจใน R ที่ได้รับการตีพิมพ์เผยแพร่ในวารสารทางวิชาการจะมีความน่าเชื่อถือมากกว่าครับ และนอกจากนี้แต่ละแพ็คเกจจะต้องมีคู่มือ (manual) หรือวิธีใช้มาให้ด้วย ซึ่งผมถือว่าเป็นข้อเด่นอีกข้อของ R ที่พยายามรักษามาตรฐานและอำนวยความสะดวกให้กับผู้ใช้อย่างดีทีเดียว เพราะนี่ถือเป็นข้อบังคับที่ผู้พัฒนาที่ต้องการแจกจ่ายแพ็คเกจของตนต้องทำ ผู้พัฒนาบางรายที่ต้องการแจกแจงความสามารถของแต่ละคำสั่งในแพ็คเกจของตนเองอย่างละเอียดนั้น ก็สามารถทำ tutorial แนบมากับแพ็คเกจนั้นๆ ได้ด้วย นับว่าเป็นประโยชน์ต่อผู้ใช้เป็นอย่างมาก เพราะจะมีทั้งตัวอย่างตั้งแต่การเริ่มวิเคราะห์ไปจนถึงการประยุกต์ใช้ทำให้ง่ายต่อการทำความเข้าใจมากขึ้น ซึ่งกลุ่มผู้พัฒนาแพ็คเกจทาง bioinformatics ที่มีชื่อเสียงและเชื่อถือได้ ได้แก่ Bioconductor นั่นเองครับ


Bioconductor


มาถึงส่วนของกลุ่มผู้พัฒนาแพ็คเกจทาง bioinformatics โดยเฉพาะครับ ในส่วนนี้ผมขอแนะนำ Bioconductor (รายละเอียดเพิ่มเติมที่ www.bioconductor.org) ซึ่งมีแพ็คเกจไว้แจกจ่ายมากกว่า 380 แพ็คเกจที่สนับสนุนการวิเคราะห์ genomic data ต่างๆ โดยเราสามารถติดตั้งแพ็คเกจของ Bioconductor บน R ได้ด้วยคำสั่งเพียงไม่กี่คำสั่ง ซึ่งง่ายและสะดวกดีครับ (รายละเอียดในการติดตั้งจะนำเสนอในโอกาสต่อๆ ไปนะครับ) นอกจากการพัฒนาแพ็คเกจแล้ว Bioconductor ยังมีการรวบรวมข้อมูลการทดลองต่างๆ ให้อยู่ในรูปของ data files ที่ใช้กับ R ได้ ซึ่งบางครั้งถูกนำไปใช้เป็น benchmark ในการทดสอบ algorithms ต่างๆ เพื่อวัดประสิทธิภาพในการวิเคราะห์และการคำนวณ ลักษณะตัวอย่างของข้อมูลนั้นได้แก่ affymetrix data, stem cells time course experiment รวมไปถึงข้อมูลการทดลองที่มีการเผยแพร่ในวารสารวิชาการบางฉบับด้วย อย่างข้อมูล acute lymphocytic leukemia (ALL) microarray dataset ของ Chiaretti et al. (2004) ก็ถูกจัดเก็บไว้ใน Bioconductor ในชื่อ dataset “ALL” ครับ และในรูปด้านบน เป็นภาพแสดงผลการวิเคราะห์ข้อมูลจาก dataset “ALL” ด้วยฟังก์ชั่น heatmap ใน R ครับ โดยส่วนใหญ่แพ็คเกจที่ถูกพัฒนานั้นจะมีข้อมูล (data) ของตนเองให้เรียกใช้ เพื่อเป็นตัวอย่างในการใช้คำสั่งที่มีอยู่ในแพ็กเก็ตนั้นๆ ครับ สำหรับผู้ที่สนใจสามารถดูข้อมูลเพิ่มเติมได้ที่ http://www.bioconductor.org/packages/release/data/experiment/ แต่เราไม่จำเป็นต้องเข้าไปดาวน์โหลดข้อมูลเหล่านี้โดยตรงจากเว็บไซต์ก็ได้นะครับ เราสามารถดาวน์โหลดโดยอาศัยฟังก์ชันของ Bioconductor ได้ครับและอีกอย่างข้อมูลเหล่านี้ส่วนใหญ่จะถูกดาวน์โหลดมาพร้อมกับการติดตั้งแพ็คเกจที่เราสนใจอยู่แล้วด้วยครับ ยกเว้นเฉพาะบางแพ็คเกจเท่านั้นที่เราจะต้องไปหาข้อมูลเหล่านี้ด้วยตนเอง อย่างไรก็ตาม ผมขอเน้นย้ำเลยครับว่า เราสามารถประยุกต์ใช้แพ็คเกจต่างๆ กับข้อมูลการทดลองของเราเองได้แน่นอนครับ อาจจะได้โดยตรงเลย หรือโดยอ้อมที่เราต้องปรับรูปแบบข้อมูลของเรานิดหน่อยเพื่อให้อยู่ในรูปแบบที่สามารถ load เข้าไปใน environment ของ R ได้โดยไม่ยุ่งยากครับ ส่วนใหญ่จะเป็นในรูปแบบ text file และ table ซึ่งก็สะดวกอยู่แล้วครับ สำหรับข้อมูลที่แพ็คเกจมีมาให้ ก็เพื่อใช้ทดลองการวิเคราะห์และเป็นตัวอย่างในการใช้งานฟังก์ชันต่างๆ ของแพ็คเกจ เพื่อความเข้าใจที่ถูกต้องตามวัตถุประสงค์ของผู้พัฒนาครับ


ก่อนจากกันในบทความตอนนี้ ผมขอฝากรูปที่ได้จากฝีมือการวาดภาพแสดงผลของ R มาให้ผู้อ่านได้ชมกันสักหน่อย (รูปด้านล่างของหน้าที่แล้วครับ) แล้วในบทความตอนหน้า เราจะมาแนะนำการติดตั้งพร้อมทั้งดูตัวอย่างการใช้งานเบื้องต้นไปพร้อมๆ กันครับ

Monday, October 4, 2010

Book Reviews

Charles and Emma: The Darwins’ Leap of Faith

ฝน นิลเขต


สวัสดีคะคุณผู้อ่านทุกท่าน เชื่อว่าหลายๆ คนคงจะเป็นแฟนพันธุ์แท้ของชาร์ล ดาร์วิน นักธรรมชาติวิทยาชาวอังกฤษผู้ให้กำเนิดทฤษฎีวิวัฒนาการ และยังเผยแพร่แนวคิดดังกล่าวผ่านทางผลงานตีพิมพ์ชิ้นเอกของโลกภายใต้ชื่อว่า “On the Origin of Species” กันเป็นแน่ ทฤษฎีของดาร์วินนั้นนับว่าเป็นทฤษฎีที่เปลี่ยนแปลงความคิดในระดับมนุษยชาติกันเลยทีเดียวค่ะ และจัดเป็นรากฐานทางวิทยาศาสตร์ที่สำคัญอย่างยิ่งต่อนักชีววิทยายุคปัจจุบัน จนเราไม่อาจจะจินตนาการได้ว่าหากชาร์ล ดาร์วิน ไม่เผยแพร่ทฤษฎีดังกล่าว โลกเรา ณ ปัจจุบันนี้จะเป็นอย่างไร และวันนี้ในส่วนของ Book Reviews ฝนก็มีหนังสือดีๆ ที่บอกเล่าเกี่ยวกับชีวิตการทำงาน และชีวิตครอบครัวของชาร์ล ดาร์วินมาแนะนำกันค่ะ


หนังสือเล่มนี้มีชื่อว่า “Charles and Emma: The Darwins’ Leap of Faith” ซึ่งเขียนโดย Dehborah Heiligman จัดพิมพ์ครั้งที่ 1 เมื่อปี 2009 ที่ผ่านมานี่เอง หลายๆ คนคงจะทราบนะคะว่าโลกเพิ่งจะฉลองวาระครบรอบ 200 ปีให้กับชาร์ล ดาร์วิน ไปเมื่อปีที่แล้วนี่เอง หนังสือเล่มนี้ถือเป็นผลงานอีกหนึ่งชิ้นที่ได้ถ่ายทอดเรื่องราวประวัติชีวิตครอบครัวและชีวิตการทำงานของชาร์ล ดาร์วิน ได้อย่างพิถีพิถันและละเอียดอ่อน ราวกับว่าเรากำลังดำเนินชีวิตไปพร้อมๆ กับกิจวัตรของดาร์วินเลยค่ะ


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


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


ภายในเล่มนั้นแบ่งเป็นบทต่างๆ ถึง 33 บท และแต่ละบทก็เล่าเรื่องราวของดาร์วินตามลำดับเวลา โดยเริ่มการเล่าเรื่องของเขาภายหลังที่เขากลับจากการเดินทางไปกับราชนาวีอังกฤษด้วยเรือ HMS Beagle ในวัยที่ย่างเข้า 30 และเป็นช่วงเริ่มต้นที่จะลงหลักปักฐานสักที่ในกรุงลอนดอน


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


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


นอกจากนี้สิ่งหนึ่งที่ผู้อ่านจะได้รับจากหนังสือ คงจะเป็นเกร็ดเล็กเกร็ดน้อยเกี่ยวกับบุคคลสำคัญต่างๆ รอบตัวของชาร์ลในช่วงเวลานั้น ตั้งแต่บุคคลในครอบครัวของเขา และเอมม่า ซึ่งแสดงเป็น family tree ไว้อย่างชัดเจน ไปจนถึงผู้ช่วยของเขา ซิมส์ โควิงตั้ง (Syms Covington) ในครั้งที่เดินทางด้วยเรือ Beagle หรือบุคคลสำคัญที่มีอิทธิพลอย่างยิ่งและเป็นผู้คอยให้คำปรึกษา ทั้งยังสนับสนุนทางการเงินแก่ชาร์ล ซึ่งก็มีบิดาของเขาเองและลุงโจซี เวดจ์วู๊ด (Josiah Wedgwood) ผู้ที่ทำให้บิดาของชาร์ลตัดสินใจอนุญาตให้ชาร์ลออกเดินทางไปกับราชนาวีอังกฤษ ไปจนถึงผู้สนับสนุนทฤษฎีของชาร์ลอย่างโทมัส เฮนรี ฮักซ์เล่ย์ (Thomas Henry Huxley) นักชีววิทยาเพื่อนซี้ของชาร์ลเอง เขาให้การสนับสนุนทฤษฎีของชาร์ลจนได้รับการขนานนามว่าสุนัขของชาร์ล ดาร์วิน (Darwin’s Bulldog) และผู้คัดค้านทฤษฎีดังกล่าวเช่น Robert FitzRoy ซึ่งเป็นกัปตันเรือบีเกิ้ลที่ชาร์ลออกเดินทางไปด้วยนั่นเองคะ


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


“A man who dares to waste one hour of time has not discovered the value of life.”


“บุคคลใดปล่อยให้เวลาผ่านไปอย่างไร้ค่าแม้เพียงชั่วโมงเดียว บุคคลผู้นั้นย่อมไม่มีวันค้นพบคุณค่าของชัวิต”


Talk to...

นิสิตคิดอย่างไรกับ bioinformatics

ศิริขวัญ พลประทีป


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


ก่อนอื่นก็ต้องสวัสดีน้องๆ ทุกคนเลยนะคะ วันนี้ที่นัดน้องๆ มา ไม่ได้นัดมาทำมิดีมิร้ายนะคะ วันนี้ก็จะมาสัมภาษณ์น้องๆ เกี่ยวกับความคิดเห็น และประเด็นต่างๆ ทางด้าน bioinformatics ขอเกริ่นนิดนึงให้น้องๆ ทราบก่อนนะคะ ว่าวันนี้พี่ปุ้มจะมาสัมภาษณ์พวกเราเพื่อลง e-magazine เกี่ยวกับ bioinformatics ของคนไทยค่ะ ซึ่งมีจุดมุ่งหมายที่จะทำให้คนรุ่นใหม่ที่เริ่มสนใจ (หรือสนใจมานานแล้ว) เกี่ยวกับงานด้าน bioinformatics และนักวิจัยหรือกูรู ทางด้าน bioinformatics ได้มา joy กัน แลกเปลี่ยนความคิดเห็น ประเด็นร้อนกันเกี่ยวกับ bioinformatics ในด้านต่างๆ ค่ะ ฉบับนี้ เราได้น้องๆ มาร่วมแชร์ความคิด เกี่ยวกับ bioinformatics ว่าที่เราได้ร่ำเรียนมาในห้องเรียน มันเพียงพอหรือไม่ อะไรที่เป็นอุปสรรคของการเรียน bioinformatics ประเด็นตรงนี้อาจจะทำให้เราได้เห็นอีกมุมมองนึงของ bioinformatics มากขึ้นค่ะ ก่อนอื่นปุ้มขอแนะนำน้องๆ ของเราก่อนนะคะ เริ่มจาก… น้องอาทครับ ออมสินครับ ออปค่ะ พิมค่ะ เมย์ค่ะ


น้องๆ คิดว่า bioinformatics ยากไหมค่ะ

ยากกกกกกก มาก (ทุกคนตอบเป็นเสียงเดียวโดยมิได้นัดหมายเลยนะคะ)


อยากทราบคำจำกัดความของ bioinformatics ตามที่น้องๆ เข้าใจค่ะ

อาท: bio แปลว่า ชีวะ informatics ก็คือ ข่าวสาร ข้อมูล ซึ่งรวมแล้วก็คือข้อมูลที่เกี่ยวข้องกับชีวะ ครับ


ออมสิน: คิดว่าเป็นสารสนเทศทางชีววิทยา ซึ่งเกี่ยวกับ DNA RNA โปรตีน ซึ่งเป็นแหล่งรวบรวมข้อมูลต่างๆ ทางด้านชีวภาพครับ


ออป: คำแรกที่ได้ยินก็คิดว่าต้องเป็นชีวสารสนเทศค่ะ ซึ่งเป็นแหล่งข้อมูลต่างๆ ที่รวบรวมความรู้ค่ะ


ทุกคนได้เรียน bioinformatics ในห้องเรียน มาบ้างหรือเปล่าคะ

เรียนผ่านมาทุกคนเลยครับ(ค่ะ) ออมสิน ออป อาท เรียนตอนปริญญาตรี สำหรับเมย์ กับพิม พึ่งได้มาเรียนตอน ปริญญาโทค่ะ


อะไรทำให้ทุกคนอยากเรียนวิชา bioinformatics คะ

ออมสิน: อาจารย์บังคับครับ (555)


เมย์: คิดว่าพอได้มาทำวิจัยทางชีวเคมี และได้เรียนรู้เกี่ยวกับ bioinformatics เลยคิดว่าวิชานี้มีความสำคัญกับงานวิจัย เลยอยากลงเรียนเพื่อให้ได้รู้มากขึ้น ลึกซึ้งขึ้นค่ะ (แต่ก็ยังไม่ลึกซึ้งเท่าไหร่ค่ะ 555)


อาท: คิดว่าถ้าในอนาคตเราจะต้องเรียนต่อ อาท คิดว่า วิชานี้น่าจะเป็นพื้นฐานที่ดีสำหรับการทำวิจัยต่อไปครับ


ออป: คิดว่าเกรดน่าจะง่ายค่ะ


พิม: อยากเห็นภาพกว้างๆ ของ bioinformatics ในหลายๆ มุม ที่อาจมีมากกว่าที่เรารู้ค่ะ


ทุกคนได้ใช้งานทางด้าน bioinformatics หรือเปล่าค่ะ แล้วใช้ทางด้านไหนบ้าง

พวกเราได้ใช้ทุกคนเลยค่ะ(ครับ)


อาท: ผมใช้หาข้อมูลทั่วๆ ไป ใน NCBI และ GenBank


เมย์: เมย์ใช้ออกแบบไพร์เมอร์


ออป: ใช้ส่วนใหญ่จะเป็นฐานข้อมูลโปรตีน DNA และก็ใช้ทำ sequence alignment ค่ะ


ตอนเรียนเรารู้สึกว่าวิชา bioinformatics ที่เราได้เรียนมาส่วน ไหนยากคะ

ออป: PyMol ค่ะ ดูการ docking ต่างๆ หาระยะห่างระหว่างโมเลกุล และการดูโครงสร้างของโปรตีน ยากมากค่ะเพราะมันต้องใช้ command line ซึ่งเราต้องรู้ลึก สำหรับออปคิดว่ามันค่อนข้างซับซ้อนและเวลาที่ใช้สอนมีน้อยมาก และมันเหมือนค่อนข้างไกลตัว เพราะไม่ค่อยได้ใช้ เมื่อเปรียบเทียบกับการทำ alignment ที่เราได้ใช้ประจำอยู่แล้ว ก็คิดว่าง่ายกว่าค่ะ


คิดว่าวิชานี้เป็นพื้นฐานที่ดีสำหรับการเริ่มต้นในการทำวิจัยหรือเปล่าคะ

ถูกต้องค่ะ มีประโยชน์มากเลยค่ะ


ทุกคนคิดว่าวิชาควรที่จะบรรจุอยู่ในหลักสูตรของภาควิชามั๊ยคะ

ควรอย่างยิ่งค่ะ โดยปกติแล้วที่จุฬาฯ เองก็จะมีวิชานี้บรรจุอยู่ในแลปอยู่แล้วค่ะ ซึ่งแทรกอยู่เล็กน้อยในแลป แต่นอกจากนั้นก็จะมีวิชา bioinformatics ซึ่งเป็นวิชาเลือกสำหรับนิสิต ป.ตรี-โท-เอก ให้ได้เรียนกันด้วยค่ะ


แล้ววิชานี้ rating ดี มากน้อยแค่ไหนคะ

Rating ดีต่อเมื่อเกรดดีค่ะ เหมือนเกรดเป็นแรงดึงดูดเลยค่ะ เพราะว่าวิชานี้จะอยู่ในเกณฑ์ ปี 4 เลยต้องขวนขวายหาเกรดมากๆ


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

เมย์: เกี่ยวกับฐานข้อมูลค่ะ และการทำ alignment


ออป: ใช่ค่ะ ฐานข้อมูลเป็นส่วนสำคัญมาก เพราะอย่างน้อยถ้าเรารู้ว่าฐานข้อมูลมันมีอะไร ก็จะทำให้เราได้ใช้ประโยชน์มากขึ้นค่ะ


ถ้าให้พวกเราสอนวิชานี้ให้น้องๆ ม.ปลาย หรือน้อง ป.ตรี ปี 1 คิดว่าเราทำได้มั๊ยค่ะ

ออมสิน: ก็พอได้นะครับ แต่คิดว่า ณ ตอนนี้ วิชานี้ยังค่อนข้างไกลตัวน้องๆ ม.ปลาย หรือ ป.ตรี ปีต้นอยู่ น้องๆ อาจยังไม่ค่อยรู้จักกันเท่าไหร่นัก ถ้าจะสอนก็อาจจะเป็นการแนะนำฐานข้อมูลต่างๆ ทางด้าน bioinformatics ไม่ว่าจะเป็นโปรตีน หรือดีเอ็นเอ ให้น้องๆ ได้เห็นกันว่าข้อมูลเหล่านี้มีมากมายและสามารถสืบค้นหาความรู้ได้ไม่ยากครับ


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

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


ออป: ได้รู้ว่ามันมีวิชาแบบนี้อยู่ในโลกนี้ด้วยนะ แล้วก็เป็น guideline ให้เราได้นำไปใช้ในงานวิจัยต่อไปค่ะ


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


สุดท้ายแล้วพี่ปุ้มก็ขอโปรโมทเวปไซต์เราให้น้องๆ พี่ๆ เพื่อนๆ ให้รู้จักกันไปด้วยเลยนะคะ ตอนนี้สมัครเป็นสมาชิกกับ THAI Bioinformatics Network และ THAI Bioinformatics e-magazine ฟรีค่ะ เพียงแค่ส่งอีเมลเพื่อแจ้งชื่อ-นามสกุลเป็นภาษาไทยไปที่ thaibioinfo@gmail.com ค่ะ เขาก็จะมีทีมงาน ใจดีตอบกลับไปหาเพื่อนๆ กันเลยค่ะ แล้วทุกๆ เดือนก็จะมีข่าวคราวต่างๆ เกี่ยวกับ bioinformatic มาอัพเดทให้พวกเราติดตามกันค่ะ ในรูปแบบของ pdf ไฟล์สวยๆ ให้เพื่อนนั่งอ่าน นอนอ่านเล่นกันค่ะ ซึ่งจะจัดส่งให้ทางอีเมล์ของเพื่อนสมาชิกเลยค่ะ ฉบับนี้ปุ้มต้องขอลาไปก่อนนะคะ แล้วพบกันใหม่ใน Talk to… ฉบับหน้านะคะ สวัสดีค่ะ

Monday, September 13, 2010

ฉบัับที่ 13 (กันยายน 2010)

ร่วมฉลองครบรอบ 1 ปี THAI Bioinformatics


วันเวลาช่างผ่านไปอย่างรวดเร็วจริงๆ ครับ ผมจำได้ว่าพวกเราเริ่มต้นทำ THAI Bioinformatics Network กันเมื่อไม่นานมานี่เอง มารู้ตัวอีกทีก็ครบปีเสียแล้วครับ


เดือนสิงหาคมที่ผ่านมา ผมได้กลับไปเที่ยวเมืองไทย เนื่องจากช่วงนั้นเป็นวันหยุดหน้าร้อนครับ ก็ได้มีโอกาสพบปะเพื่อนๆ น้องๆ ที่เคยเรียน และเคยร่วมงานกันมาก่อน หลายคนถามถึง THAI Bioinformatics Network ว่ามีที่มาที่ไปอย่างไร ส่วนตัวผมเองก็รู้สึกดีใจครับ ที่เครือข่ายเล็ก��� ของพวกเราเริ่มมีคนรู้จักบ้างแล้ว ประกอบกับวาระครบรอบ 1 ปี ของ เครือข่ายของเรา ผมเลยขอยึดคอลัมน์ Highlight มาขีดเขียนบอกเล่าเรื่องราว และความเป็นมาของ THAI Bioinformatics Network (เครือข่ายเล็กๆ ที่แน่นแฟ้นของพวกเรา) และนิตยสารออนไลน์ THAI Bioinformatics ที่ท่านกำลังอ่านกันอยู่นี่แหละครับ


เนื้อหาในฉบับยังคงเต็มไปด้วยเรื่องราวน่าสนใจเหมือนเดิมครับ ในส่วนของ Python Programing ก็เป็นภาค 3 ของการทำ reverse complement ของสาย DNA กันนะครับ แต่เทคนิคคราวนี้จะพิเศษกว่าเก่าอย่างไร ต้องไปติดตามกันเอง ในส่วน spotlight ผมได้เขียนแนะนำโปรแกรมคอมพิวเตอร์ตัวหนึ่งชื่อ SeaView สำหรับใช้ในการทำ sequence alignment และ sequence analysis อื่นๆ ซึ่งอยากลองให้เพื่อนสมาชิกลองไปศึกษารายละเอียดเพิ่มเติมดูนะครับ


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


และที่พิเศษที่สุดก็คือ THAI Bioinformatics Network ของเราเปิดรับสมาชิกอย่างเป็นทางการแล้วครับ ใครที่ยังไม่ได้สมัครเป็นสมาชิกต้องรีบแล้วครับ เพราะว่าเราเปิดรับจนถึงวันที่ 31 ธันวาคม พ.ศ. 2553 นี้เท่านั้น งานนี้ไม่มีค่าสมัครใดๆ ทั้งสิ้นครับ เพียงแค่ ท่านส่ง e-mail มาหาเราที่ thaibioinfo@gmail.com พร้อมทั้งระบุ ชื่อ-นามสกุล เป็นภาษาไทย มาถึงเราและเขียน title ว่า สมัครสมาชิก THAI Bioinformatics ทางทีมงานจะจัดส่ง e-mail กลับไปหาท่านเพื่อแจ้งรหัสสมาชิกครับ สำหรับสิทธิเบื้องต้นของการเป็นสมาชิก ท่านจะได้รับข่าวสารของนิตยสารออนไลน์ทุกฉบับ และรับทราบข่าวสารเกี่ยวกับกิจกรรมของเครือข่ายก่อนใคร ส่วนสิทธิพิเศษอื่นๆ เราจะแจ้งให้ท่านทราบต่อไปครับ


ท่านที่มีข้อติชม หรือมีข้อเสนอแนะใดๆ ก็สามารถเขียน e-mail เข้ามาที่ thaibioinfo@gmail.com พวกเราทีมงาน THAI Bioinformatics จะนำข้อติชมและเสนอแนะของท่านมาปรับปรุงให้ดีขึ้นต่อไป และขอขอบคุณทุกกำลังใจที่มีให้เสมอมาครับ


---------------------------------------------------------------

ท่านสามารถ download นิตยสารออนไลน์ THAI Bioinformatics ในรูปแบบ pdf ได้ที่

http://thaibioinfo-vol13.4shared.com

Highlight

THAI Bioinformatics Network: การพัฒนาที่ไม่เคยหยุดนิ่ง

ประเวช อรรจวัฒนวงศ์


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


จุดประกายความคิด


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


นอกจากเรื่องเครือข่ายแล้ว ผมและเพื่อนๆ ยังคุยกันอีกหลายเรื่อง รวมทั้งถามไถ่ถึงงานที่แต่ละคนทำอยู่ หรือความชำนาญที่แต่ละคนมี แล้วนััทก็เป็นคนรวมรวมรายชื่อพวกเราที่มานั่งคุยกันในวันนั้น พร้อมทั้ง e-mail และข้อมูลของแต่ละคนแบบสั้นๆ แล้วก็ส่ง e-mail ให้ทุกคนได้รู้ว่าตอนนี้ คนทำงาน bioinformatics ที่นั่งคุยกันเมื่อตอนบ่าย มีใครบ้าง เรียนหรือทำงานอยู่ที่ไหนกันบ้าง รวมทั้งความเชี่ยวชาญที่แต่ละคนมี เพื่อที่พวกเราจะได้ทราบและได้พูดคุยแลกเปลี่ยน��วามรู้ได้ในอนาคต


หลังจากวันที่เราคุยกัน ผมเองก็ไม่ได้ทำอะไรเกี่ยวกับเครือข่ายเลย จนกระทั่ง วันหยุดพักร้อนของผมหมดลง และผมก็ต้องเดินทางกลับมาที่ประเทศสวีเดน แล้วก็ใช้เวลาช่วงที่เพิ่งจะกลับมาถึง (เป็นช่วงที่ยังไม่ค่อยมีงานเยอะเท่าไหร่) ได้มานั่งคิดพิจารณา e-mail ที่นัทส่งมาให้อย่างละเอียด คิดไปคิดมาผมก็เกิดไอเดียว่า เราจะต้องเริ่มต้นจากการรวมรวมเพื่อนๆ พี่ๆ น้องๆ ที่พวกเรารู้จักมาสร้างเป็นเครือข่ายขนาดจิ๋วก่อน แล้วค่อยๆ ขยายวงให้กว้างขึ้น ว่าแล้วผมก็เขียนรายชื่อของคนที่ผมรู้จัก และน่าจะชวนมาทำงานเพื่อสร้างเป็นเครือข่ายขนาดเล็กได้ คราวนี้ก็ลงมือทาบทามครับ สิ่งที่ผมดีใจมากคือ ทุกคนให้การสนับสนุนแนวความคิดนี้เป็นอย่างดี ในที่สุดเราก็มีเครือข่ายจิ๋วๆ เป็นที่เรียบร้อย ทีนี้ก็ต้องมีชื่อสิครับ เราก็ลงความเห็นกันและได้ชื่อที่ทุกคนพอใจ ว่า THAI Bioinformatics Network ครับ เราตั้งใจเขียนคำ��่า THAI ให้เป็นตัวอักษรตัวพิมพ์ใหญ่และใช้อักษรตัวเข้ม เพื่อให้สอดคล้องกับการออกเสียงในภาษาอังกฤษ ซึ่งจะต้องออกเสียงหนัก (stress) ที่คำว่า THAI นอกจากนี้เรายังให้คำว่า THAI พิมพ์ด้วยสีแดง เพราะสีแดงหมายถึงชาติ (ตามความหมายในธงชาติไทยครับ อย่าคิดมาก)


ทีนี้ก็เริ่มสนุกแล้วสิครับ เรามีก๊วนเล็กๆ แล้ว มีชื่อแล้ว แต่ว่าแค่มีก๊วนกับชื่อมันไม่พอน่ะสิครับ มันต้องมีกิจกรรมที่จะทำให้สมาชิกในกลุ่มได้เกิดการเคลื่อนไหวอยู่ตลอดเวลา ไม่อย่างนั้น สองสามเดือนผ่านไป ทุกคนก็ลืมไปว่าเรามีเครือข่ายอยู่ หรือว่าเรากำลังจะทำอะไรอยู่ สิ่งที่ผมพอจะทำได้ในขณะนั้น ก็คงจะไม่มากไปกว่าการส่งข่าวสารเกี่ยวกับแวดวง bioinformatics ให้เพื่อนๆ ได้รับทราบกัน เพราะตัวผมเองก็สมัครเป็นสมาชิกของ สมาคมหรือชมรม bioinformatics หลายแห่งในต่างประเทศ ก็ได้รับข่าวสารเกี่ยวกับเทคโนโลยีใหม่ๆ งานประชุม งานสัมมนาวิชาการ จากแหล่งข่าวเหล่านั้น ผมจึงรวบรวมข้อมูล เกี่ยวกับงานประชุมระดับนานาชาติที่เกี่ยวกับ bioinformatics ว่าในแต่ละเดือนต่อจากนั้นมีที่ไหนบ้าง แล้วก็ส่งไปให้เพื่อนสมาชิก เพื่อที่คนไหนสนใจจะได้เตรียมตัวหางบประมาณในการเดินทางได้ทันท่วงที และผมก็ได้เรียกกิจกรรมนี้ว่า Bioinformatics Network News หรือเรียกย่อๆ ว่า BNNews (บี เอ็น นิวส์) ผลก็ปรากฏว่าหลายคนชอบครับ (งานนี้ปลื้มครับ)


BNNews: กิจกรรมแรกของเครือข่าย


หลังจากที่ BNNews ถูกส่งออกไปพร้อมกับ e-mail ฉบับแรก (ฉบับเดือนกันยายน พ.ศ. 2552) ผมถือว่า THAI Bioinformatics Network ได้แจ้งเกิดอย่างสมบูรณ์แล้วครับ เมื่อมีกำลังใจ พวกเราก็มาคิดกันว่า BNNews ฉบับของเดือนต่อมาจะเป็นเนื้อหาอย่างไรดี ในที่สุด เราก็ตกลงกันว่า ในฉบับต่อๆ ไป เราจะมีเกร็ดความรู้ เล็กๆ น้อยๆ ที่น่าสนใจ ไว้ในส่วนของ Highlight ซึ่งเป็นส่วนต้นของ e-mail จากนั้นพี่เต่าก็เข้ามาร่วมด้วยกับ Python Programing เพื่อให้ความรู้เบื้องต้นกับ bioinformaticians หรือบุคคลทั่วไปที่อยากหัดเขียนโปรแกรมคอมพิวเตอร์ด้วยภาษา Python นอกจากนี้ พวกเรายังคิดว่าเพื่อนสมาชิกหลายคน คงจะมีเวลาว่างน้อย (เนื่องจากภาระงาน มากมายเหลือเกิน) ผมจึงไปขอร้องให้น้องอ้อ (ภัสสร วรรณพินิจ) ได้ช่วยสรุปงานวิจัยใหม่ๆ ที่เกี่ยวข้องกับ bioinformatics ที่ได้รับการตีพิมพ์ลงในวารสาร Science และ Nature ในช่วงเดือนที่ผ่านมา ซึ่งน้องอ้อก็น่ารักมากครับ พอได้รับการทาบทาม ก็จัดทำให้ทันที ทำให้งานนี้ น้องอ้อได้เขียนในหัวข้อ Focus on Bioinfo Researches ครับ และแล้วเราก็ได้ theme ของ BNNews เป็นที่เรียบร้อย


BNNews ในฉบับที่ 2 เดือนตุลาคม พ.ศ. 2552 ผมได้เลือก Highlight เป็นการเล่าชีวประวัติของ ชาร์ลส์ ดาร์วิน (Charles Darwin) ผู้ซึ่งได้รับการยกย่องให้เป็น “บิดาของวิชาวิวัฒนาการ” เพื่อเป็นการร่วมเฉลิมฉลองการครบรอบ 200 ของนักคิดท่านนี้ เป็นการเปิดตัว BNNews อย่างเต็มรูปแบบ ตามที่เราวางแผนกันไว้


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


Web Blog: ก้าวสูู่่สายตาสาธารณชน


หลังจากที่พวกเราได้จัดทำ BNNews ไปได้สัก 2-3 เดือน ก็มีเพื่อนสมาชิกบางคนส่งต่อ e-mail ไปให้ผู้ที่รู้จักบ้าง ทำให้ผมได้รับ e-mail มาขอเนื้อหาของ BNNews ในเดือนที่ผ่านมาแล้ว แรกๆ ผมก็จัดส่งให้โดยการ forward mail เก่าๆ ไปให้ท่านผู้สนใจเหล่านั้น ต่อมาชักไม่ไหว เลยมานั่งปรึกษากันว่าเราจะแก้ปัญหานี้อย่างไรดี และคำตอบของปัญหาดังกล่าวนี้เอง ได้กลายมาเป็นที่มาของ web blog ของ THAI Bioinformatics Network เพื่อนๆ สามารถเข้าไปตามอ่านงานเก่าๆ ได้ที่ http://thaibioinfonetwork.blogspot.com/ นะครับ ทั้งยังสามารถเขียนข้อความเพื่อ comment บทความต่างๆ ได้อีกด้วยครับ


นิตยสารออนไลน์ สไตล์เก๋ ในรูปแบบ pdf


ในช่วงปลายปี พ.ศ. 2552 เป็นช่วงที่ทีมงานพอจะมีเวลาว่าง​(เพราะเป็นช่วงหยุดยาว ในวันปีใหม่) ��ึงได้พูดคุยกันเกี่ยวกับปัญหาที่เกิดขึ้น และสิ่งที่พวกเราจะสามารถปรับปรุงให้ดีขึ้นได้ ก็สรุปออกมาได้ว่า เพื่อนๆ ในกลุ่มบางคนมีปัญหาเรื่อง font ภาษาไทยบนหน้า blog ทำให้ไม่สามารถอ่านภาษาไทยได้ หรือบางคนบ่นให้ผมฟังว่าอยากอ่านนิตยสารออนไลน์ แต่เผอิญว่าตอนนั้นไม่ได้เชื่อมต่ออินเตอร์เน็ต เราก็เห็นใจครับ พวกเราก็แก้ไขให้​โดยการจัดทำ THAI Bioinformatics ให้อยู่ในรูปแบบ pdf ด้วย เพื่อผู้อ่านบางคนจะสามารถ download ไปไว้อ่านในเครื่องคอมพิวเตอร์ หรือ e-book reader ในเวลาที่ไม่ได้เชื่อมต่ออินเตอร์เน็ต และพร้อมกันนี้ พวกเราก็วางแผนให้เนื้อหาในส่วนของ Highlight ในปี พ.ศ. 2553 เป็นเรื่องราวเกี่ยวกับ bioinformatics และสาขาใกล้เคียงตลอดทั้งเล่ม เพื่อเป็นการปรับโฉมของ BNNews ให้มาเป็น e-magazine เต็มตัว ดังนั้น ผู้อ่านที่ได้ติดดามผลงานของเรามาตั้งแต่ปีที่แล้วก็จะทราบว่า ตั้งแต่เดือน มกราคม พ.ศ. 2553 เราได้มี e-magazine ในรูปแบบ pdf โดยท่านสามารถตาม link สำหรับ download ได้ใน e-mail ที่เราแจ้งให้ท่านทราบทุกเดือน หรือจะไปที่ blog แล้วดูใน comment ก็จะพบ link สำหรับ download ด้วยครับ


พวกเรากำลังจะมีบ้านเป็นของตัวเอง


หลังจากที่ THAI bioinformatics e-magazine ฉบับ pdf วางแผงออนไลน์ได้ประมาณ 2 เดือน ผมกับพี่เต่าได้ปรึกษากันว่า พวกเราน่าจะมีเว็บไซต์เป็นของตัวเอง เพื่อเป็นสื่อกลางในการเผยแพร่ข้อมูลของเครือข่าย รวมทั้งผู้สนใจทั่วไป จะได้เข้ามาติดตามการเคลื่อนไหวของกลุ่มได้ง่ายขึ้น นอกจากนี้ยังสามารถใช้เป็นที่เก็บนิตยสารออนไลน์ไว้ได้อีกด้วย หลังจากที่คุยกันอยู่หลายครั้งหลายครา พี่เต่าผู้ใจดีของน้องๆ ก็จัดการเป็นสปอนเซอร์รายใหญ่เรื่องค่าใช้จ่าย รวมทั้งการจัดการระบบ server ทั้งหมด จนเรามี domain ของตัวเอง ภายใต้ชื่อ www.thaibioinfonetwork.org นั่นเองครับ


หลังจากที่เราได้บ้านเลขที่ (domain name) มาแล้ว ทีนี้ก็ต้องมองหา web master สิครับ งานนี้ก็ไม่พ้นนายบอลล่ะครับ งานนี้พอผมทาบทามไปปุ๊บ ก็ตอบว่าได้ปั๊บ แต่ว่าเราคงต้องใช้เวลาพักใหญ่ เพื่อวางแผนการจัดการกับเว็บไซต์ของเราอย่างรอบคอบ และจะประกาศให้ทราบในเร็ววันนี้ครับ เมื่อบ้านของพวกเราพร้อมให้การต้อนรับเพื่อนๆ


เข้าถึงกลุ่มผู้ใช้ facebook


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


เมื่อเราได้คุยกันในรายละเอียดว่า ฝนจะเข้ามาช่วยตรงส่วนไหนได้ ก็ปรากฏว่า ฝนเสนอให้เปิด facebook ขึ้นมา ซึ่งผมก็เห็นด้วยอย่างมาก และได้ขอร้องให้น้องฝน เป็น main moderator ของ facebook ของเครือข่ายเราไปเลย และยังมีน้องก้อยเป็น moderator ช่วยอีกแรงหนึ่งด้วยครับ งานนี้บอกได้เลยว่า สองสาวไฟแรงมากๆ ครับ ขยัน update กันเป็นประจำ เพื่อนๆ หรือผู้อ่านท่านใดที่ใช้ facebook เป็นประจำก็เข้าไปเป็น member กันได้ครับ ใครมีข้อเสนอแนะ ใครอยากให้เราจัดหากิจกรรมอะไรมาให้ท่าน ก็เข้ามาเขียนไว้ได้เลยครับ


e-magazine แบบใหม่ ไฉไลกว่าเดิม


หลังจากที่นิตยสารออนไลน์ ในรูปแบบ e-book หรือ pdf ได้วางแผงไปตั้งแต่เดือนมกราคม ทีมงานก็พยายามสรรหาสิ่งใหม่ๆ มาปรับปรุง พัฒนา นิตยสารของพวกเราให้ดีขึ้น เข้าถึงความต้องการของกลุ่มเป้าหมายเรามากขึ้น เราจัดทำคอลัมน์ใหม่ๆ อาทิ Talk to... เพื่อแนะนำให้เพื่อนๆ และผู้อ่านได้รู้จักนักวิจัย อาจารย์ หรือบุคคลที่ทำงานด้าน bioinformatics เพื่อที่เราจะได้รู้ว่าใครทำงานวิจัยเรื่องอะไรอยู่ ผมเชื่อว่านักวิจัยหลายคนเมื่อทำงานวิจัยซับซ้อนมากขึ้นไปเรื่อยๆ ก็เริ่มจะมองหาเพื่อนร่วมทาง​(วิจัย) ยากขึ้น เพราะงานที่ทำอาจจะใหม่และมีคนทำวิจัยคล้ายคลึงกันอยู่น้อย ผมคิดว่า คอลัมน์นี้จะสามารถเป็นหน้าต่างบานหนึ่งที่สะท้อนให้เห็นว่า คุณไม่ได้อยู่คนเดียวในโลกของ bioinformatics

ผมต้องขอย้ำอีกครั้งว่า ทีมงานของเราไม่เคยหยุดนิ่งกับสิ่งเดิมๆ ครับ พวกเราได้วางแผนปรับปรุง artwork ของนิตยสารเสียใหม่ ให้ดูสวยงามมากขึ้น พร้��มทั้งปรับรูปแบบของคอลัมน์ต่างๆ ภายในเล่มใหม่ทั้งหมดเลยครับ กล่าวคือ เราได้แบ่งเนื้อหาทั้งหมดออกเป็น 4 หมวดครับ หมวดแรกก็คือ Highlight ครับ เรายังคงรูปแบบเดิมที่จะนำเสนอเรื่องราวที่น่าสนใจทาง bioinformatics และสาขาใกล้เคียง หมวดต่อมาเป็น Software & Programing ครับ เราพยายามจะนำเสนอเรื่องราวน่าสนใจเกี่ยวกับเทคโนโลยีสารสนเทศ วิทยาการคอมพิวเตอร์ การเขียนโปรแกรมคอมพิวเตอร์ ซึ่ง Python Programing ก็อยู่ในส่วนนี้ด้วย ต่อมาเป็นหมวดใหม่ ซึ่งเราให้ชื่อว่า SPOTLIGHT ครับ ในหมวดนี้ผมจัดไว้เพื่อแนะนำหนังสือ โปรแกรมคอมพิวเตอร์ หรือเว็บไซต์ที่น่าสนใจหรือเห็นว่ามีประโยชน์ต่อเพื่อนๆ หรือใครอยากให้เราวิจารณ์เรื่องอะไรก็สามารถเขียนเข้ามาขอกันได้ครับ (จะนำเสนอให้เป็นกรณีไป) และหมวดสุดท้ายคือ SCIENCE & SOCIETY หมวดนี้เป็นเรื่องเบาสมองและบันเทิง และสอดแทรกบทสัมภาษณ์นักวิจัยหรือบุคคลในวงการ bioinformatics


งานพบปะสังสรรเครือข่ายครั้งที่ 1


หลังจากที่ทีมงานได้ร่วมแรงร่วมใจกันสร้างเครือข่ายขึ้นและยังจัดทำนิตยสารออนไลน์ ซึ่งเป็นกิจกรรมแรกของเครือข่ายมาเป็นเวลากว่า 11 เดือน ก็ได้เวลาอันสมควรที่พวกเราจะได้มาพบปะสังสรรกัน เพื่อกระชับความสามัคคีและได้พูดคุยถึงกิจกรรมต่างๆ ที่เราได้ทำมา และระดมความคิดว่าเราจะทำอะไรต่อไป เพื่อให้เกิดประโยชน์สูงสุดกับเพื่อนๆ และท่านผู้อ่านทั้งหลาย ประจวบเหมาะกับช่วงเวลานั้นเป็นช่วงที่เพื่อนๆ ผู้ที่เป็นแนวร่วมของเราหลายคนได้มีโอกาสกลับมาเยี่ยมบ้านที่เมืองไทย (เพราะเป็นช่วงวันหยุดฤดูร้อนในต่างประเทศ) ผมก็เลยจัดให้มีการ meeting ขึ้น (สำหรับรายละเอียดของการ meeting ท่านผู้อ่านสามารถไปติดตามอ่านได้ใน THAI Bioinformatics ฉบับที่ 12 เดือนสิงหาคม พ.ศ. 2553 ครับ)


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


วิสัยทัศน์


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


พันธกิจ


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


เปิดรับสมาชิกแล้วครับ


เพื่อเป็นการร่วมเฉลิมฉลองวาระที่ THAI Bioinformatics Network และ THAI Bioinformatics e-magazine มีอายุครบ 1 ปี ทีมงานได้เปิดให้มีการสมัครสมาชิกเครือข่ายโดยไม่เสียค่าใช้จ่ายใดๆ ทั้งสิ้น สมาชิกจะได้รับข่าวสารเกี่ยวกับเครือข่ายก่อนใครและได้รับแจ้งการวางแผงของนิตยสารออนไลน์ทุกฉบับ นอกจากนี้ยังได้รับสิทธิ์เข้าร่วมกิจกรรมของเครือข่ายในราคาพิเศษอีกด้วย


เราจะก้าวไปข้างหน้าต่อไปอย่างไม่หยุดยั้ง


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

Python Programming

Reverse complement สาย DNA ด้วย Python (ภาค 3)

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


มาถึงภาคสามของโปรแกรม reverse complement ครับ ครั้งนี้เราเหลืออีกหนึ่งฟังก์ชันที่หน้าตายังไม่เป็น Python สักเท่าไหร่ ก็คือฟังก์ชัน complement ดังด้านล่าง

def complement(dna):

____result = ''

____for base in dna:

________if base == 'a':

____________result = result + 't'

________elif base == 't':

____________result = result + 'a'

________elif base == 'g':

____________result = result + 'c'

________elif base == 'c':

____________result = result + 'g'

________else:

____________result = result + 'n'

____return result


Dictionary


ขอให้เรามองในส่วนของ if และ elif ก่อนนะครับ จะเห็นว่าดูยาวและซ้ำซ้อน ถ้าหากดูให้ดีเงื่อนไขในการเปรียบเทียบคล้ายกันมาก สิ่งที่ทำคือตรวจสอบว่าตัวแปร base มีค่าเป็นอะไร แล้วนำ nucleotide ที่ complementary กับเบสตัวนั้นไปต่อท้ายตัวแปร result การทำงานในลักษณะนี้ เหมาะกับรูปแบบ dictionary ของ Python มาก


เรามาดูกันสักนิดว่า dictionary ของ Python ทำงานอย่างไร เริ่มต้นด้วยการประกาศว่าตัวแปรนี้คือ dictionary ดังนี้

dic = {}

ให้สังเกตว่าการประกาศตัวแปร dictionary จะคล้ายกับการประกาศตัวแปร list แต่ว่าใช้สัญลักษณ์ {} แทนที่จะเป็น [] แบบ list


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

>>> dic = {}

>>> dic['one']=1

>>> dic['two']=2

>>> dic['three']=3


เรากำหนดค่าคำศัพท์หรือ key เอาไว้สามค่า โดย key เป็นคำศัพท์ภาษาอังกฤษ และคำแปลคือตัวเลขที่เป็นค่าของคำศัพท์นั้น ให่้สังเกตรูปแบบการกำหนดค่า dictionary ว่า ตัว key จะอยู่หลังชื่อตัวแปรโดยมีสัญลักษณ์ [] คร่อม (ไม่ใช่ {}) และตัว value จะอยู่หลังเครื่องหมาย = อาจจะดูยุ่งยากสักนิด แต่ว่าใช้ไปไม่นานก็จะคุ้นเคย และกลายเป็นเรื่องธรรมชาติไป


จากนั้นเราสามารถนำตัวแปร dictionary มาใช้ได้ ดังนี้ครับ


>>> dic['one']

1

>>> dic['two']

2


เราสามารถเรียกคำแปรมาใช้ได้ในรูปแบบที่คล้ายกับการกำหนดค่า


หากเรากำหนดค่าใหม่ให้กับ key ที่มีอยู่แล้ว ค่านั้นจะไปแทนที่ค่าเก่า แต่ถ้าหาก key นั้นยังไม่เคยมีอยู่ key และ value อันใหม่ก็จะถูกเพิ่มเข้าไป ลองดูตัวอย่างนะครับ ผมจะแทนที่ค่าเก่าของ key 'two' และจะเพิ่ม key 'four' เข้าไป


>>> dic['two']=20

>>> dic['four']=4


แล้วลองเรียกมาใช้งานดู


>>> dic['two']

20

>>> dic['two']+dic['four']

24


ค่า value ของ dictionary นั้น สามารถเป็นอะไรก็ได้ จะเป็นตัวเลข ตัวอักษร หรืออะไรก็ตามที่เราสามารถใส่ลงไปในตัวแปร แต่สำหรับค่าที่ใช้เป็น key นั้นจะมีข้อจำกัดอยู่ว่า ค่านั้นจะต้องเปลี่ยนแปลงไม่ได้ (immutable) ซึ่งในทางปฏิบัติจะแปลได้ว่า เราไม่สามารถใช้ list เป็น key ของ dictionary ได้


ลองมาดูตัวอย่างประกอบความเข้าใจนะครับ


>>> dic = {}

>>> dic[1] = 10

>>> dic[1]

10

>>> dic['a'] = 'ant'

>>> dic['a']

'ant'

>>> dic[[1,2]] = 10

Traceback (most recent call last):

File "", line 1, in

TypeError: unhashable type: 'list'


จะเห็นว่า เราใช้ key เป็นตัวเลขก็ได้ ตัวอักษรก็ได้ แต่ใช้ list ไม่ได้ ตัวอย่างสุดท้าย เราพยายามจะใส่ list [1,2] เพื่อเป็น key แต่ Python ไม่ยอม


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


List และเรื่องที่เรามักจะทำผิดพลาด


ลองมาดูตัวอย่างว่า list อาจจะทำให้เราสับสนได้อย่างไรนะครับ


>>> a = [1,2]

>>> b = [3,4]

>>> c = [a, b]

>>> c

[[1, 2], [3, 4]]

>>> a = [5,6]

>>> c

[[1, 2], [3, 4]]

>>> a

[5, 6]


ตัวอย่างนี้ ระบบทำงานได้อย่างที่เราต้องการ เราสร้าง list ขึ้นมา 2 ตัว คือ a และ b จากนั้น เราสร้างตัวแปร c ซึ่งเป็น list ของตัวแปร a และ b


เมื่อเราดูว่าตัวแปร c มีอะไรอยู่ข้างในบ้าง จะพบว่ามีค่าเป็น [[1, 2], [3, 4]] ตามที่เราคาดไว้

เมื่อเราเปลี่ยนตัวแปร a ให้เป็น list [5, 6] เราก็ไม่คาดว่าตัวแปร c จะมีการเปลี่ยนแปลงอะไร เพราะเราได้กำหนดค่าให้ c เท่ากับ a และ b ไปแล้ว และเมื่อเราเปลี่ยนแปลง a เราไม่ได้ไปกำหนดค่าของ c ใหม่ ซึ่งจากที่เราลองพิมพ์ค่าออกมาดูหลังจากเปลี่ยนแปลงค่าของ a เราก็พบว่าเป็นเช่นนั้น ตัวแปร c ยังคงค่าเดิมอยู่ และตัวแปร a ก็เปลี่ยนค่าไปตามที่เราต้องการ


คราวนี้มาลองดูตัวอย่างข้างล่างกัน


>>> a = [1,2]

>>> b = [3,4]

>>> c = [a, b]

>>> c

[[1, 2], [3, 4]]

>>> a[0] = 5

>>> c

[[5, 2], [3, 4]]

>>> a

[5, 2]


เกิดอะไรขึ้น!!! เมื่อเราเปลี่ยนค่าแรกของ list ในตัวแปร a ค่านั้นไปเปลี่ยนอยู่ในตัวแปร c ด้วย ดังจะเห็นได้ว่า เมื่อเรากำหนด a[0] = 5 แล้วดูค่าในตัวแปร c ค่าเดิมที่เคยเป็นเลข 1 ก็พลอยเปลี่ยนเป็นเลข 5 ด้วย คำอธิบายจะค่อนข้างยุ่งยาก ผมขอยกยอดไปอธิบายในครั้งต่อๆ ไป เมื่อผมจะเล่าเรื่องการจัดการหน่วยความจำกับตัวแปรนะครับ


Tuple = List ที่เปลี่ยนแปลงไม่ได้


เรามาดูวิธีแก้ปัญหาข้างต้นก่อนนะครับ สิ่งที่เราต้องการคือเราไม่ต้องการให้มีการแก้ไขค่าใน list ถ้าจะแก้ไข ก็คือต้องเปลี่ยนใหม่หมดทั้ง list เลย ซึ่ง python มีคำตอบให้แล้วคือ tuple ดังตัวอย่างครับ


>>> a = (1,2)

>>> b = (3,4)

>>> c = (a,b)

>>> c

((1, 2), (3, 4))

>>> a

(1, 2)

>>> a = (5,6)

>>> c

((1, 2), (3, 4))

>>> a

(5, 6)


จากตัวอย่างนี้ จะเห็นว่า เราสามารถใช้ tuple แทนตัวแปร list ได้เลย การสร้าง tuple ก็เขียนเหมือน list เพียงแต่เปลี่ยนสัญลักษณ์จาก [] เป็น () เท่านั้น


>>> a = (1,2)

>>> b = (3,4)

>>> c = (a,b)

>>> c

((1, 2), (3, 4))

>>> a[0] = 5

Traceback (most recent call last):

File "", line 1, in

TypeError: 'tuple' object does not support item assignment


จากตัวอย่างนี้ จะเห็นว่า python ไม่อนุญาตให้เราแก้ไขค่าในตัวแปร tuple เพราะฉะนั้นจะไม่เกิดปัญหาที่เราเจอแบบ list ข้างต้น เพราะ python ไม่ยอมให้เราทำ


ย้อนกลับมาที่ dictionary นะครับ ที่เรากล่าวมายืดยาว ก็เพื่อจะบอกว่า เราไม่สามารถใช้ list เป็น key ของ dictionary ได้ แต่เราสามารถใช้ tuple แทนได้ครับ ดังตัวอย่าง


>>> dic[(1, 2)] = 10

>>> dic[(1, 2)]

10


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


การ declare dictionary พร้อมค่าเริ่มต้น


โดยปกติ เราจะสร้างตัวแปร dictionary เปล่าๆ แล้วค่อยใส่ค่า key และ value ในภายหลัง แต่เราสามารถใส่ค่าเริ่มต้นตอนสร้างตัวแปรได้เลย ดังตัวอย่าง


>>> complementary_dict = {'a':'t', 't':'a','g':'c','c':'g'}

>>> complementary_dict['a']

't'

>>> complementary_dict['g']

'c'

เราทำได้โดยใส่ค่า key และ value แยกกันด้วยเครื่องหมายโคลอน (:) และแยกแต่ละชุดด้วยเครื่องหมายคอมม่า (,)


มาถึงจุดนี้ เราก็พร้อมที่จะเปลี่ยนจากการใช้ if เป็นใช้ dictionary แทนแล้ว


function complement ก็จะมีหน้าตาเป็นอย่างนี้

def complement(dna):

____complementary_dict = {'a':'t', 't':'a', 'g':'c', 'c':'g'}

____result = ''

____for base in dna:

________result = result + complementary_dict[base]

____return result

เราจะจบไว้ที่ตรงนี้ก่อนนะครับ อันที่จริง function complement ยังไปตามสไตล์ python ได้ต่ออีก ซึ่งเราจะมาว่ากันต่อครั้งหน้่าครับ


ครั้งนี้เราได้เรียนรู้เกี่ยวกับ dictionary และเพิ่มเติมในส่วนของ list อีกพอสมควร ผมแนะนำให้หาข้อมูลเพิ่มใน help manual ที่มาพร้อมกับ python และหาข้อมูลเพิ่มเติมจาก Internet ครับ จะได้ความรู้มากขึ้น แล้วพบกันฉบับหน้าครับ