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 ครับ จะได้ความรู้มากขึ้น แล้วพบกันฉบับหน้าครับ