Tuesday, December 1, 2009

Highlight

การใช้ Bioinformatics และ Phylogenetics ในการศึกษาเชื้อไวรัสไข้หวัดใหญ่ 2009

เจษฎา เด่นดวงบริพันธ์

สวัสดีครับสมาชิกของ Bioinformatics Network News ผมรู้สึกดีใจมากครับที่เห็นการก่อตั้งเครือข่ายของผู้สนใจทางด้าน ชีวสารสนเทศ อย่างนี้ ขอให้กิจกรรมดีๆ ของเครือข่าย อย่างเช่น การทำ e-magazine ประสบความสำเร็จอย่างต่อเนื่องยิ่งๆ ขึ้นไปนะครับ วันนี้ผมก็เลยขอร่วมเขียนบทความให้กับทางเครือข่ายบ้าง ซึ่งเนื้อหาอาจจะง่ายไปหรือธรรมดาไปสำหรับหลายๆ ท่าน ก็ต้องขออภัยด้วยนะครับ

จากการที่เมื่อกลางปีนี้ เกิดการระบาดใหญ่ระดับโลกของเชื้อไวรัสไข้หวัดใหญ่สายพันธุ์ใหม่ 2009 (Pandemic 2009 A/H1N1 influenza virus) หรือที่เมืองนอกเรียกกันว่า ไข้หวัดหมู (swine flu) ผมก็ได้รับมอบหมายจากหัวหน้าหน่วยวิจัยที่ผมร่วมอยู่ด้วยคือ ศ.ดร.ธีระวัฒน์ เหมะจุฑา (ผู้อำนวยการศูนย์ความร่วมมือองค์การอนามัยโลกด้านโรคติดต่อจากสัตว์สู่คน) ให้ลองติดตามวิเคราะห์ลักษณะทางพันธุกรรมและไฟโลเจเนติกส์ (phylogenetics) ของเชื้อนี้ ตั้งแต่เมื่อเริ่มต้นระบาดใหม่ๆ ว่ามันมีที่มาที่ไปอย่างไรกัน และมีแนวทางในการเปลี่ยนแปลงไปในทิศทางไหนบ้าง

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

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

เว็บไซต์ขององค์การแรกๆ ที่มีบทบาทอย่างมากต่อเรื่องนี้ คือ เว็บของ GISAID หรือ The Global Initiative on Sharing Avian Influenza Data ซึ่งเป็นฐานข้อมูลแรกที่ข้อมูลลำดับพันธุกรรมของไข้หวัดใหญ่จากห้องแล็บทั่วโลกที่เป็นสมาชิกเครือข่ายจะถูกเผยแพร่ออกสู่ภายนอก โดยผู้ที่สนใจสามารถเข้ามาหาข้อมูลได้ฟรีโดยการลงทะเบียนก่อนใช้ (ตอนนั้น การลงทะเบียนทำได้ช้ามากเนื่องจากมีคนแห่กันเข้าไปสมัคร) พร้อมทั้งเริ่มมีเครื่องมือพื้นฐานทาง bioinformatics หลายอย่างเพื่อความสะดวกในการวิเคราะห์ข้อมูล เช่น การทำ alignment ลำดับที่ค้นหาได้

จากนั้น ภายใน 1-2 วัน ข้อมูลจาก GISAID จะถูกส่งไปที่ฐานข้อมูล GenBank อันโด่งดังของ NCBI หรือ National Center for Biotechnology Information ซึ่งทาง NCBI ก็ได้มีการสร้างหน้าเว็บใหม่ขึ้นมารองรับโดยเฉพาะ คือInfluenza Virus Resource: Information, Search and Analysis เว็บไซต์นี้ก็มีพัฒนาการไปอย่างรวดเร็วมาก สมกับที่เป็นส่วนหนึ่งของเว็บ NCBI ที่สร้าง BLAST และ ENTREZ มาให้พวกเราใช้กัน นั่นคือ แทนที่เราจะค่อยๆ เลือกดึงเอาข้อมูลพันธุกรรมเชื้อไข้หวัดใหญ่ทีละลำดับเหมือนปรกติ ซึ่งน่าจะกินเวลานานมาก เว็บนี้ก็มีตัวเลือกในการค้นหาฐานข้อมูลทั้งตามชนิดย่อย (subtype) ของเชื้อ ตามเจ้าบ้าน (host) ตามประเทศหรือเดือนที่พบเชื้อ ฯลฯ หรือจะเลือกเฉพาะisolate ที่มีการหาลำดับทั้งจีโนมแล้วก็ได้ นอกจากนี้ ยังสามารถทำ alignment ของลำดับพันธุกรรมเชื้อของเราเทียบกับลำดับของเชื้ออื่นได้เป็น 1,000 ลำดับพร้อมๆ กัน รวมทั้งการสร้างแผนภูมิต้นไม้ (tree) การค้นหาแบบ BLAST และการส่งต่อข้อมูลที่หาได้ด้วยวิธีการต่างๆ

ในเวลาเดียวกันนั้น พัฒนาการสำคัญอย่างหนึ่งของระบบอินเตอร์เนตและ bioinformatics ที่มีต่อการศึกษาวิจัยไข้หวัดใหญ่สายพันธุ์ใหม่นี้ คือ การที่กลุ่มนักวิทยาศาสตร์ชั้นนำของวงการนี้หลายคนซึ่งนำโดย Dr. Andrew Rambaut จาก University of Edinburgh แทนที่จะ submit paper และรอการ review และตีพิมพ์เหมือนปรกติกลับเลือกที่จะนำเอาระบบ blog ของ Wiki มาใช้เผยแพร่ผลการศึกษาในทันทีที่วิเคราะห์เสร็จ แล้วค่อยมาปรับปรุงเปลี่ยนแปลงหรือแก้ไขในภายหลัง ทั้งการเพิ่มเติมผลการวิเคราะห์ รูปภาพประกอบ และไอเดียใหม่ๆ หรือการวิพากษ์วิจารณ์ผลการศึกษาที่ได้ผ่านกระทู้ โดยสมาชิกของกลุ่มวิจัยที่อาจจะอยู่คนละมุมโลก (เช่น อเมริกา ยุโรป ฮ่องกง) ซึ่งวิธีการใช้ social networking หรือ WEB2.0 เช่นนี้ถือได้ว่า ฉีกแนวทางการเผยแพร่ผลงานวิจัยที่เคยทำมาแต่ดั้งเดิมของวงการวิทยาศาสตร์เลยทีเดียว

แนวคิดในการเสนอผลงานวิจัยผ่านระบบอินเตอร์เน็ตเช่นนี้ ถึงแม้ว่าจะถูกวิจารณ์อยู่มากเหมือนกันถึงความถูกต้องเหมาะสม แต่กลับเป็นที่นิยมมากขึ้นอย่างต่อเนื่อง ทั้งในรูปแบบของ e-journal ต่างๆ ผ่านระบบ open access ที่ใครก็สามารถเข้ามาอ่านบทความวิจัยบนนั้นได้ โดยไม่ต้องเสียค่าใช้จ่ายใดๆ (เพราะผู้เขียนบทความเป็นผู้จ่ายแทน) สำหรับในวงการไข้หวัดใหญ่ เว็บไซต์เผยแพร่ผลงานวิจัยผ่านเน็ต ดังเช่น PLoS Current ของPublic Library of Science ได้เพิ่มหน้าเว็บ PLoS Currents: Influenza ขึ้นมาโดยเฉพาะสำหรับการแลกเปลี่ยนผลการศึกษาไข้หวัดใหญ่อย่างรวดเร็ว แทนที่จะต้องรอการตีพิมพ์ใน journal ต่างๆ ซึ่งต้องใช้เวลาอีกนานมากกว่าจะได้พิมพ์จริงๆ แม้ว่าจะเป็นการออกฉบับพิเศษก็ตาม

ย้อนกลับไปดูที่เว็บ Wiki “Human/Swine H1N1 Influenza” ของ Andrew Rambaut และเพื่อนพ้อง จะพบว่าเว็บนี้ได้ให้แนวทางสมัยใหม่ในการศึกษาวิจัยพันธุกรรมและวิวัฒนาการของเชื้อไข้หวัดใหญ่เอาไว้แทบจะครบถ้วนทุกด้าน ทำเอานักไฟโลเจเนติกส์แบบโบราณอย่างผม คือพวก parsimony-based กลายเป็นมนุษย์ถ้ำไปเลย จึงขอนำมาเสนอไว้ตรงนี้เป็นพิเศษ ซึ่งผลการวิเคราะห์ของพวกเขาแบ่งออกเป็น 4 ด้าน คือ ด้านการวิเคราะห์ไฟโลเจเนติกส์และประวัติศาสตร์ของการเรียงยีนสลับใหม่ของจีโนมไวรัส (Phylogenetic analysis and reassortment history) ด้านระบาดวิทยาเชิงโมเลกุลและการวิเคราะห์นาฬิกาโมเลกุล (Molecular epidemiology and molecular clock analysis) ด้านไฟโลเจเนติกส์เชิงภูมิศาสตร์ (Phylogeography) และวิวัฒนการและการปรับตัวเชิงโมเลกุล (Molecular evolution and adaptation)


เป็นส่วนที่พูดถึงการวิเคราะห์ทางไฟโลเจเนติกส์ถึงจุดกำเนิดของเชื้อ โดยตั้งแต่วันแรกๆ ที่ลำดับพันธุกรรมของเชื้อเริ่มเผยแพร่ออกมา พวกเขาก็ได้วิเคราะห์เบื้องต้นโดยการสร้าง Neighbor-Joining (NJ) trees ซึ่งใช้distance metric แบบ HKY ด้วยโปรแกรม PAUP* 4.0 ต่อมาจึงใช้โปรแกรม MrModeltest 2.2 ในการหาโมเดลDNA substitution และ γ-rate heterogeneity ที่เหมาะสม ได้ออกมาเป็นโมเดล GTR+I+G สำหรับ NJ trees

นอกจากนี้แล้ว ยังมีการวิเคราะห์อย่างละเอียดขึ้นในด้านประวัติศาสตร์วิวัฒนาการ (Evolutionary history) ของยีนต่างๆ ของเชื้อ ซึ่งสร้าง Bayesian trees มาวิเคราะห์ร่วมกับ molecular clock โดยใช้โมเดล GTR+G และrelaxed clock ทำให้พวกเขาสามารถที่จะเริ่มประมาณค่าเฉลี่ยของช่วงเวลาที่น่าจะเกิด reassortment ของยีนแต่ละยีนในจีโนมของเชื้อสายพันธุ์ใหม่นี้ได้

จากผลการวิเคราะห์ทั้งหมดพวกเขาสามารถสรุปได้ว่า ถึงแม้เชื้อไข้หวัดใหญ่ 2009 นี้จะแพร่ระหว่างคนสู่คน แต่มันก็มีที่มาจากเชื้อไข้หวัดในหมู โดยเป็นการเรียงตัวใหม่ (reassortment) ระหว่างไวรัสในหมู 2 สายพันธุ์ดังที่กล่าวมาแล้ว โดยที่หนึ่งในนั้นคือ พันธุ์ Triple reassortant ที่ลึกๆ แล้วจีโนมของมันมียีนบางยีนที่สืบทอดมาจากไข้หวัดในนกและบางยีนมาจากไข้หวัดใหญ่ตามฤดูกาลH3N2 ในคน ซึ่งนี่เป็นเหตุผลที่ทำให้ตอนแรกมีหลายคนตกใจกันไปผิดๆ ว่าที่เชื้อนี้มันน่ากลัว เพราะมันเป็นลูกผสมระหว่างไข้หวัดนก ไข้หวัดคน และไข้หวัดหมู


ในการวิเคราะห์ส่วนนี้ พวกเขาได้ประมาณค่าวันเวลาที่เป็นจุดกำเนิดของการระบาดของโรค หรือเวลาที่เริ่มปรากฏว่ามีบรรพบุรุษร่วมเมื่อไม่นานมานี้ (TMRCA, time of the most recent common ancestor) ของการระบาด โดยที่พวกเขาได้วิเคราะห์ลำดับพันธุกรรมของเชื้อด้วยโปรแกรม BEAST ภายใต้โมเดล relaxed clock (หรือ lognormal distribution) รวมทั้งมีใช้โมเดล GTR+gamma substitution วิเคราะห์บน 10-step Bayesian skyline plot ซึ่งน่าสนใจมากว่า ผลการวิเคราะห์ค่าเวลาที่เกิดบรรพบุรุษร่วมของการระบาดขึ้นนั้น ย้อนกลับไปถึงเดือนกันยายนของปีที่แล้ว (ค.ศ. 2008) ทั้งๆ ที่การระบาดจริงๆ ของเชื้อไข้หวัดใหญ่ในประเทศเม็กซิโกเท่าที่เราพอจะทราบข่าวกันนั้น เกิดขึ้นในเดือนเมษายนของปีนี้ (2009) แสดงว่าเชื้อสายพันธุ์ใหม่นี้เกิดขึ้นมาและอยู่ร่วมกับมนุษย์เราโดยไม่มีใครสังเกตเห็นมานานหลายเดือนแล้ว

นอกจากการวิเคราะห์หา TMRCA ของเชื้อแล้ว พวกเขายังวิเคราะห์หาค่าอื่นๆ ที่น่าสนใจในด้านการระบาด (epidemiology) และการถ่ายทอด (transmission) เชิงโมเลกุลของโรคด้วย ดังเช่น การทำแผนภาพการกระจายของเชื้อโดยวิธี Median joining network ด้วยโปรแกรม Networks 4.510 การประมาณค่าอัตราการเกิดวิวัฒนาการ (evolutionary rate) ของเชื้อผ่านการวิเคราะห์อัตราเร็วของ molecular clock ด้วยโปรแกรม BEASTรวมถึงการประมาณค่าจำนวนการเพิ่มขึ้นของเชื้อหรือค่า reproductive number (R0) จากค่าอัตราเร็วเบื้องต้นในการแพร่ของเชื้อ ตามสมการของ Lotka-Euler ซึ่งทำให้เราทราบว่าเชื้อไข้หวัดใหญ่สายพันธุ์ใหม่นี้มีค่า R0 ในระดับที่ไม่แพ้กับเชื้อที่ระบาดใหญ่ใน Fort Dix เมื่อปี ค.ศ. 1976


ส่วนนี้เป็นส่วนที่ผมคิดว่าน่าสนใจมากเป็นพิเศษเพราะเป็นการใช้วิธีการวิเคราะห์แบบใหม่ที่ยังไม่ได้ถูกตีพิมพ์เลย โดยพวกเขาเรียกวิธีนี้ว่า Bayesian phylogeographic reconstruction ซึ่งเป็นการสร้าง Bayesian inferencesแยกตามภูมิภาคต่างๆ ที่สนใจ ซึ่งวิธีนี้ใช้โมเดลแบบ discrete diffusion ซึ่งเป็นการนำเอาโมเดล continuous-time Markov chain (CTMC) มาใช้บอกการแผ่ขยายออกไปทีละขั้นของไฟโลเจนีในช่วงเวลาต่างๆ ทำให้พวกเขาสามารถบอกพลวัตร (dynamics) ของเชื้อได้ นอกจากนี้ ยังใช้กระบวนการ Bayesian stochastic search variable selection (BSSVS) ในการปรับค่าอัตราการแพร่ขยายตามพื้นที่ (spatial diffusion) อีกด้วย ซึ่งทั้งหมดนี้ใช้โปรแกรมBEAST ในการทำ MCMC sampling (ยอมรับเลยครับว่าตามเทคนิคสมัยใหม่แบบนี้ไม่ทันแล้ว) จากนั้นเอาผลการวิเคราะห์ที่ได้มาร่วมเข้ากับแผนที่โลกใน Google Earth จนทำให้เห็นเป็นภาพอนิเมชั่นของการแพร่กระจายของเชื้อไปตามภูมิภาคต่างๆ


เป็นส่วนที่รวมผลการวิเคราะห์เล็กๆ น้อยๆ ที่น่าสนใจอีกหลายอย่างของไข้หวัดใหญ่ 2009 ตั้งแต่การศึกษาตำแหน่งเบสที่เกิดการกลายพันธุ์และอัตราการเปลี่ยนแปลงทางพันธุกรรมของเชื้อ ซึ่งแสดงให้เห็นถึงวิวัฒนาการเชิงการปรับตัว (adaptive evolution) ด้วยการคำนวณค่าอัตราส่วนการแทนที่ของเบสระหว่าง non-synonymous กับ synonymous substitution (dN/dS) การวิเคราะห์ลำดับพันธุกรรมของเชื้อที่พบว่ามีการติดต่อกลับไปสู่หมูในเมือง Alberta ประเทศแคนาดา ตลอดจนการตรวจพบตำแหน่งที่มีการกลายพันธุ์เกิดขึ้นในยีนNeuraminidase ของเชื้อซึ่งทำให้เชื้อนั้นดื้อต่อยาโอเซลทามิเวียร์ (ยาทามิฟลู) ได้ และรวมถึงการเฝ้าระวังการกลายพันธุ์บนยีน Polymerase ซึ่งกลัวกันว่าอาจจะทำให้เชื้อมีความรุนแรงคล้ายกับเชื้อไข้หวัดนก H5N1 ได้

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

Python Programming


Variable and the First Python Program!!

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

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

เราสามารถกำหนดค่าตัวแปรได้ง่ายๆ โดยการตั้งชื่อค่าตัวแปรทางซ้าย แล้วใช้เครื่องหมายเท่ากับ (
=) พร้อมกับใส่ค่าที่ต้่องการทางด้านขวาดังตัวอย่าง

a = 1
b = 'letter'
c = 1+2

เราสามารถดูค่าที่อยู่ในตัวแปรได้ ด้วยการใช้คำสั่ง print

>>> print a
1

เมื่อเราใช้คำสั่ง print a เราจะได้ 1 ออกมา คำสั่ง print จึงเป็นเครื่องมือที่ดี ที่เราสามารถใช้ในการตรวจสอบดูว่า ณ ขณะนั้น ตัวแปรเก็บค่าอะไรอยู่บ้าง ค่าในตัวแปร ไม่คงที่ เราสามารถกำหนดค่าให้ให้ตัวแปรได้เสมอ อย่างเช่น ตอนนี้ ตัวแปร a เก็บค่าเลข 1 อยู่ เราสามารถเปลี่ยนให้ตัวแปรเก็บเลข 2 ได้ ด้วยการใช้คำสั่ง

>>> a = 2

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

>>> a = a + 1

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

แบบฝึกหัด

1. ใช้คำสั่ง print เพื่อดูค่าตัวแปร b และ c

2. ลองนำตัวแปรมาใช้ในการคำนวณทางคณิตศาสตร์ดู แล้วใช้
print พิมพ์สิ่งที่อยู่ในตัวแปรออกมาดู

3. ลองนำตัวแปรที่เป็นตัวเลข แล้วนำตัวอักษรไปบวก เกิดอะไรขึ้น

4. ลองนำตัวแปรที่เป็นตัวอักษร แล้วนำตัวเลขไปบวก เกิดอะไรขึ้น

5. ลองนำตัวแปรที่เป็นตัวอักษร แล้วบวกกับตัวอักษร เกิดอะไรขึ้น

6. ลองตั้งตัวแปร ดังนี้

d = 'hello'
e = ' my friend'
f = d + e

ลอง print ค่าตัวแปร d, e และ f ดู จากนั้น เปลี่ยนค่า e ด้วยคำสั่ง

e = ' your friend'

ลอง print ดูอีกครั้งว่า ตัวแปร f เปลี่ยนแปลงตาม e หรือไม่

Raw_input function And My first program

ครั้งนี้เราจะเขียนโปรแกรมที่ทำงานได้จริงๆ โดยใช้ความรู้ที่เราได้เรียนมาจากครั้งก่อน ร่วมกับฟังก์ชันใหม่หนึ่งฟังก์ชันที่ชื่อว่า
raw_input

ฟังก์ชัน
raw_input ใช้สำหรับรับค่าจากผู้ใช้

จากตัวอย่างเดิม เราเคยกำหนดค่าตัวแปรโดยใช้คำสั่ง

a=1

เราสามารถเปลี่ยนคำสั่งนี้ให้เป็น

a=raw_input()

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

print "Please give value for variable a"
a=raw_input()
print "variable a now contains", a

ลองพิมพ์โปรแกรมข้างบนลงใน text editor แล้ว save ในชื่อ program1.py จากนั้น ลองรันโปรแกรมนี้ดู ใน dos box (หากจำไม่ได้ว่า dos box คืออะไร ให้กลับไปดูที่ Python Tutorial ครั้งแรก)

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

a=raw_input("Please give value for variable a")
print "variable a now contains", a

ลอง save ชื่อ program2.py แล้วลองรันดู ดูสิว่า จะได้ผลเหมือน program1.py หรือไม่

คราวนี้ เราจะมาลองเขียนโปรแกรมคำนวณพื้นที่สี่เหลี่ยมดู

พื้นที่สี่เหลี่ยม = ความยาวฐาน x สูง
โปรแกรมของเราหน้าตาจะเป็นประมาณนี้

print "Program to calculate Area of Rectangle"
base = raw_input("Please enter base -> ")
height = raw_input("Please enter height -> ")
base_int = int(base)
height_int = int(height)
print "Rectangle area of base", base, "and height", height, "is", base_int*height_int

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

int(
ตัวแปร)

คำสั่งนี่้จะคืนค่าตัวเลขออกมา

แบบฝึกหัด

ลองเขียนโปรแกรมเพื่อคำนวณค่าพื้นที่ของสามเหลี่ยม สูตรคำนวณคือ

พื้นที่สามเหลี่ยม = 0.5 x ฐาน x สูง

Focus on Bioinfo Researches


Bioinformatics Researches in Science and Nature

ภัสสร วรรณพินิจ

สวัสดีค่ะพี่ๆ และเพื่อนๆ ทุกคน พบกันอีกเช่นเคยนะคะใน “Focus on Bioinfo Researches” ครั้งนี้ดิฉันขอหยิบยกเรื่องราวที่น่าสนใจจากวารสาร Nature และ Science ตลอดช่วงเดือนพฤศจิกายนมาเล่าสู่กันฟังค่ะ

เริ่มกันที่ข่าวคราวความเคลื่อนไหวในแวดวง Genomics กันก่อนค่ะ เมื่อเร็วๆ นี้มีประกาศที่จะเริ่มโครงการ “Genome 10K” ขึ้น โดยโครงการนี้เป็นความร่วมมือกันของนานาชาติจากทุกทวีป เพื่อหาลำดับเบสของสิ่งมีชีวิตที่มีกระดูกสันหลัง (vertebrates) จำนวน 10,000 สายพันธุ์ เพื่อทำความเข้าใจเกี่ยวกับความหลากหลายทางชีววิทยา รวมถึงเป็นฐานข้อมูลสำหรับการศึกษาในเรื่องอื่นๆ Nature ได้พูดถึงเรื่องนี้อย่างคร่าวๆ ในหัวข้อ “10,000 genomes to comeและ Science วิเคราะห์เรื่องนี้ในเรื่องความพร้อมทางเทคนิคและการวิเคราะห์ข้อมูลลำดับเบสจำนวนมหาศาลนี้ในหัวข้อ “No Genome Left Behindนอกจากสิ่งมีชีวิตที่มีกระดูกสันหลังแล้ว ยังมีอีกหนึ่งโครงการที่กำลังริเริ่มในประเทศสหรัฐอเมริกาเกี่ยวกับการหาลำดับเบสของจุลินทรีย์สายพันธุ์ต่างๆ เพื่อเพิ่มจำนวนข้อมูลลำดับเบสให้ครอบคลุมความถึงหลากหลายของจุลินทรีย์ชนิดต่างๆ ในโลก รายละเอียดและความคืบหน้าต่างๆ สามารถหาอ่านเพิ่มเติมได้จากหัวข้อ “Biologists rally to sequence ‘neglected’ microbes

มาถึงงานทางด้าน epigenomics กันบ้างค่ะ epigenomics เป็นการศึกษาการควบคุมการแสดงออกของ gene ผ่าน epigenetic mechanisms อย่างเช่น DNA methylation และ histone protein modification ในระดับ genome ในเดือนที่ผ่านมา Nature ได้ตีพิมพ์เรื่องราวเกี่ยวกับการสร้างแผนที่ Genome-wide methylated cytosine ในมนุษย์ซึ่งคาดว่าจะเป็นประโยชน์ต่อการศึกษาการแสดงออกของ genes ในช่วงต่างๆ ของพัฒนาการมนุษย์ พี่ๆ และเพื่อนๆ ที่สนใจ สามารถอ่านบทความเกี่ยวกับเรื่องนี้ได้ที่Epigenomics: Methylation Matters และ “Human DNA methylomes at base resolution show widespread epigenomic differences ค่ะ

ส่วนงานทางด้าน transcriptome นั้น Sciene ได้ตีพิมพ์เรื่องราวเกี่ยวกับการใช้เทคนิค strand-specific tiling arrays ร่วมกับ transcriptome sequencing ในการศึกษา transciptome ของ
Mycoplasmy pneumoniae ผลการศึกษาบ่งชี้ถึงความหลากหลายของ transcripts ในจุลินทรีย์ชนิดนี้ที่มีความใกล้เคียงกับความหลากหลายของ eukaryotic transcriptome สำหรับรายละเอียดของเรื่องนี้สามารถหาอ่านได้จากหัวข้อ “Transcriptome Complexity in a Genome-Reduced Bacteriumนอกจากนี้ในวารสารฉบับเดียวกัน ยังมีการตีพิมพ์เรื่องราวการศึกษา proteome ของสิ่งมีชีวิตชนิดเดียวกัน โดยใช้เทคนิค tandem affinity purification-mass spectrometry (TAP-MS) ในการศึกษา protein-protein interaction และจำแนกชนิดของโปรตีน รวมไปถึงการใช้ single-particle electron microscopy และ cellular electron tomogram ในการวิเคราะห์การจัดเรียงตัวของโปรตีนต่างๆ ในระดับ proteome ผลการศึกษาชิ้นนี้ ช่วยให้เราเข้าใจถึงกระบวนการภายในเซลล์ที่จำเป็นต่อการดำรงชีวิต รายละเอียดของงานวิจัยชิ้นนี้สามารถหาอ่านเพิ่มเติมได้จาก “Proteome Organization in a Genome-Reduced Bacterium ค่ะ

สำหรับผู้ที่สนใจการสร้างและประยุกต์ใช้เครื่องมือใหม่ๆ ทาง Bioinformatics ในการทำวิจัย ดิฉันก็มีเรื่องราวที่น่าสนใจมาเล่าสู่กันฟังเช่นกันค่ะ เริ่มกันที่เรื่องราวเกี่ยวกับการสร้างกระบวนการศึกษารูปแบบใหม่เพื่อใช้ในการทำนาย spatio-temporal cis-regulatory activity ในระดับ genome โดยใช้ข้อมูล transcription factor binding และ enhancer activity ซึ่งกระบวนการนี้ได้มีการนำไปประยุกต์ใช้สร้างแผนที่ของ cis-regulatory modules ที่มีความละเอียดสูง เพื่อทำความเข้าใจเกี่ยวกับการควบคุมการ transcription ในช่วงพัฒนาการของ
Drosophila mesoderm รายละเอียดต่างๆ ของงานวิจัยชิ้นนี้สามารถหาอ่านได้จาก “Combinatorial binding predicts spatio-temporal cis-regulatory activity และยังคงอยู่ในเรื่องของ transcription factor นะคะ แต่คราวนี้เป็นเรื่องเกี่ยวกับการใช้เทคนิคทาง network analysis ในการศึกษาความสัมพันธ์ของ genes ต่างๆ ที่เกี่ยวข้องกับ transcription factor FOXP2 (forkhead box P2) ซึ่ง genes ต่างๆเหล่านี้มีความสำคัญเกี่ยวข้องกับการทำงานของสมองในส่วนที่เกี่ยวข้องกับพัฒนาการทางภาษาของมนุษย์ รายละเอียดของงานวิจัยชิ้นนี้สามารถหาอ่านเพิ่มเติมได้ที่ “Human-specific transcriptional regulation of CNS development genes by FOXP2 ค่ะ

สำหรับเรื่องสุดท้ายที่ดิฉันจะขอนำมาเล่าในครั้งนี้เป็นเรื่องเกี่ยวกับการศึกษา target ใหม่ๆ ของยาที่มีอยู่ในท้องตลาดในปัจจุบันโดยใช้เทคนิคทางคอมพิวเตอร์ในการเปรียบเทียบความคล้ายคลึงระหว่างโครงสร้างของยากับ ligand ของ drug target ต่างๆ ผลการศึกษาครั้งนี้ช่วยในการระบุ drug target ใหม่ๆ ทั้งหมด 23 ชนิด ซึ่งข้อมูลเหล่านี้จะเป็นประโยชน์ในการศึกษาผลข้างเคียงต่างๆของยาที่มีขายอยู่ในปัจจุบัน สำหรับรายละเอียดเกี่ยวกับขั้นตอนการศึกษาวิจัยสามรถอ่านเพิ่มเติมได้ในหัวข้อ “Predicting new molecular targets for known drugs ค่ะ

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