วันอังคารที่ 20 สิงหาคม พ.ศ. 2556

MO ตอบคำถาม การแยกพีค GC ด้วยโปรแกรม fityk MO Memoir : Tuesday 20 August 2556

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

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

ก่อนหน้านี้ผมได้ตอบเขาไปว่าไนโตรเจนและออกซิเจนเป็นคู่หนึ่งที่แยกยาก เพราะขนาดโมเลกุลใกล้กันและจุดเดือดก็ใกล้กัน คอลัมน์บางชนิดแยก "อากาศ" ออกจากแก๊สตัวอื่น เช่น CO CO2 และ Ar ได้ แต่ไม่แยก N2 และ O2 ที่เคยเห็นในแคตตาล็อกขายคอลัมน์ GC บางคอลัมน์ที่เขาบอกว่าแยกได้นั้นจะกระทำที่อุณหภูมิไม่สูง เช่นประมาณ 20 หรือ 25ºC ซึ่งในบ้านเราแล้วอุณหภูมินี้มันต่ำกว่าอุณหภูมิห้องอีก ถ้าจะนำเอาคอลัมน์แบบนี้มาใช้ก็ต้องเพิ่มความยาวให้มากกว่าที่เขาระบุไว้ในแคตตาล็อก หรือไม่ก็หาทางทำให้เครื่อง GC นั้นทำให้คอลัมน์มีอุณหภูมิต่ำกว่าอุณหภูมิห้องให้ได้ คอลัมน์ที่เขาใช้คือ micropacked 13X Molecular sieve 80/100 2m 1.00 I.D. วิเคราะห์ที่ 28ºC ซึ่งตรงนี้เขาบอกว่าเขาทำแลปในห้องแอร์ที่แอร์เย็น เครื่อง GC ก็เลยทำงานที่อุณหภูมินี้ได้

อีกอันหนึ่งที่แนะนำเขาไปคือให้ลองปรับ carrier gas flow rate ให้ต่ำลง แต่ถ้าทำแบบนี้กับ TCD ก็ต้องไปทำ calibration curve ใหม่ด้วย

หลังจากพบกันแล้วเขาก็ไปทดลองปรับอัตราการไหลของ carrier gas ให้ลดลง ซึ่งก็ทำให้เวลาที่พีคออกมานั้นออกมาที่เวลาเดิมก่อนมีปัญหา แต่ก็ยังมีการเหลื่อมซ้อนกันอยู่ดี จนกระทั่งวันศุกร์ที่แล้วก็ได้ส่งรูปพีคและไฟล์ .txt และ .csv มาให้ ผมเห็นรูปพีคของเขาแล้ว (ดูรูปที่ ๑) ก็เห็นว่าไม่น่าจะมีปัญหาอะไรมากในการใช้โปรแกรม fityk ในการแยกพีค (ถ้าใช้โปรแกรมเป็นแล้วนะ) พีคทั้งสองนั้นวางตัวอยู่บน base line ที่ค่อนข้างจะวางตัวราบ (แทบไม่มีการเฉียงขึ้นหรือลง) ไม่มีการปรากฏของพีคอื่นข้างเคียง ก็เลยเอาข้อมูลของเขามาทำการแยกพีคด้วยโปรแกรม fityk เล่นดู

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

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

รูปที่ ๑ โครมาโทแกรมที่ได้รับมา เมื่อเปิดด้วยโปรแกรม fityk

รูปที่ ๒ เป็นภาพขยายบริเวณส่วนฐานของพีค จะเห็นว่าในความเป็นจริงเส้น base line มีการเคลื่อนตัวไต่ขึ้นอย่างช้า ๆ โดยข้อมูลส่วนหน้านั้นติดลบเล็กน้อย ส่วนข้อมูลส่วนหลังนั้นมีค่าเป็นบวก
  
เนื่องจากฟังก์ชันที่เราใช้ในการทำ peak fitting นั้นเป็นฟังก์ชันที่มีค่าเป็นบวกเสมอ (เรามักใช้ฟังก์ชันที่โปรแกรม fityk เรียกว่า "SplitGaussian" ซึ่งเป็นฟังก์ชัน Gaussian ที่ไม่สมมาตรนั่นเอง) ถ้าหากข้อมูลที่นำมาทำ peak fitting นั้นมีค่าติดลบ จะทำให้โปรแกรมทำการเติมพีคที่ "กลับหัว" เข้าไป วิธีการป้องกันคือทำการ "ยก" ข้อมูลในมีค่าเป็นบวกทั้งหมดก่อน แต่ในขณะเดียวกันนั้นฟังก์ชันที่เราใช้นั้นจะลู่เข้าหาศูนย์ แต่ไม่ตัดกัน x ดังนั้นการตัด base line จึงควรให้บริเวณที่ใกล้กับฐานของพีคนั้นมากกว่าศูนย์เล็กน้อย แต่อย่ามากเกินไป เพราะจะทำให้โปรแกรมทำการเติมพีคที่มีความสูงน้อย แต่ความกว้างมากเข้ามา พีคนี้จะเป็นพีคตัวแทนของเส้น base line

ในรูปที่ ๒ ผมจึงตัดโดยตามแนวเส้นสีแดงที่แสดงในรูป (ใช้ปุ่มวางเส้น base line ในการวางแนวเส้น base line)

รูปที่ ๒ ภาพขยายโครมาโทแกรมในรูปที่ ๑ บริเวณเส้น base line และแนวการตัดเส้น base line (เส้นสีแดง)

รูปที่ ๓ เป็นรูปหลังจากตัดเส้น base line แล้ว รูปนี้เป็นการเลือกจุดข้อมูลที่คาดว่าเป็นเฉพาะของพีคแรกเท่านั้น โดยการกดปุ่มที่ลูกศร (1) ชี้ จากนั้นใช้เมาส์กำหนดจุด การทำให้จุดข้อมูลที่ไม่ต้องการเป็นจุด inactive ทำโดยการกดปุ่มด้านขวาของเมาส์ค้างไว้แล้วลากเมาส์ไปตามจุดข้อมูลเหล่านั้น จุดข้อมูลที่เป็น inactive จะกลายเป็นจุดสีเทา ในที่นี้ผมทำให้จุดข้อมูลช่วงเวลาประมาณก่อน 2.00 นาทีและหลัง 2.75 นาทีเป็นจุดที่ inactive จุดก่อนเวลา 2.00 นาทีเป็นช่วงที่ยังไม่มีพีคปรากฏ ส่วนช่วงเวลาถัดจ่าก 2.75 นาทีนั้นเป็นจุดข้อมูลที่เป็นผลรวมระหว่างส่วนท้ายของพีคเล็กและส่วนหน้าของพีคใหญ่ ในขณะที่จุดข้อมูลในช่วงเวลา 2.00 - 2.75 นาทีนั้นประมาณว่าเป็นของพีคเล็กเท่านั้น


รูปที่ ๓ การเลือกจุดข้อมูลที่คาดว่าเป็นของเฉพาะพีคแรก (ในกรอบสีแดง) เพื่อทำการสร้างพีคแรกขึ้นมาก่อน

รูปที่ ๔ เป็นการทำ peak fitting ของพีคแรก โดยเลือกฟังก์ชันที่นำมาใช้ในการทำ peak fitting จากช่องตรงลูกศร 1 ชี้ การเลือกฟังก์ชันนั้นต้องเหมาะสมกับชนิดของพีค ในกรณีของโครมโทแกรมนั้นเนื่องจากพีคมักจะไม่สมมาตร จึงเลือกใช้ฟังก์ชันที่โปรแกรม fityk เรียกว่า SplitGaussian ซึ่งอันทีจริงก็คือฟังก์ชัน Gaussian นั่นเอง แต่เป็นฟังก์ชันที่มีความกว้างด้านซ้ายและด้านขวาแตกต่างกัน (ถ้าเท่ากันมันก็จะเป็นฟังก์ชัน Gaussian)

จากนั้นก็ให้โปรแกรมวางตำแหน่งพีคให้ด้วยการกดที่ icon ที่ลูกศร 2 ชี้ ถ้าพบว่าตำแหน่งและ/หรือรูปร่างพีคที่โปรแกรมวางให้นั้นไม่ถูกใจเรา เรายังสามารถปรับแต่งรูปร่างของพีคที่โปรแกรมวางให้ด้วยการใช้เมาส์ไปปรับที่ตัวพีคโดยตรงได้ การวางพีคนี้ต้องดูรูปร่างพีคเป็นหลัก บางครั้งวางพีคเดียวก็พอ แต่บางครั้งก็ต้องวางหลาย ๆ พีคหน่อย ตรงนี้ต้องทดลองทำเอาเอง อย่างเช่นในทีนี้พบว่าวางเพียงพีคเดียวก็พอแล้ว ก็ไปกด icon ที่ลูกศร 3 ชี้เพื่อให้โปรแกรมทำ peak fitting การกด icon นี้สามารถกดได้หลายครั้งจนกว่าจะพบว่ามันเข้าที่ ในที่นี้จะได้พีคที่เป็นเส้นสีน้ำเงิน และมีรายละเอียดตำแหน่งพีคปรากฏในแทป function ตรงลูกศร 4 ชี้ ส่วนรายละเอียดของพีคเช่นข้อมูลพารามิเตอร์ พื้นที่ ความสูง จะอยู่ข้างล่างตรงกรอบสีแดงที่ลูกศร 5 ชี้

เมื่อได้รูปร่างพีคแรกแล้วก็ทำการตรึงพีคนี้ไว้ เพื่อไม่ให้เกิดการเปลี่ยนแปลงใด ๆ ในการทำ peak fitting ให้กับพีคที่สอง การตรึงพีคนั้นทำได้โดยการไปกดเลือกพีคที่ต้องการตรึง (ในกรอบที่ลูกศร 4 ชี้) จากนั้นไปกดที่ icon ที่เป็นรูปแม่กุญแจข้างล่าง (ตรงกรอบสีน้ำเงินที่ลูกศร 6 ชี้) ทุกตัว มันจะเปลี่ยนจากเปิดอ้างอยู่เป็นล็อค การทำเช่นนี้จะทำให้พีคที่ทำการล็อกเอาไว้แล้วถูกตรึงเอาไว้ ไม่เกิดการเปลี่ยนแปลงใด ๆ ในการทำ peak fitting ในขั้นตอนถัดไป
 
รูปที่ ๔ การทำ peak fitting ของพีคแรก

รูปที่ ๕ เป็นการทำ peak fitting ให้กับพีคที่สอง เนื่องจากพีคนี้ค่อนข้างใหญ่ทำให้บ่อยครั้งการใช้ peak เพียงพีคเดียวไม่สามารถที่จะปรับเข้ากับข้อมูลดิบได้หมด จึงมักต้องทำการเติมเข้าไปหลายพีค การเติมเข้าไปหลายพีคนั้นทำได้หลายแบบ เช่นอาจเพิ่มพีคเข้าไปจำนวนหนึ่งก่อนจนเห็นว่ามันใกล้เคียงข้อมูลดิบ จากนั้นจึงค่อยกดไอคอนให้โปรแกรมเริ่มกระบวนการ peak fitting หรืออาจทำการเติมพีคเข้าไปก่อนหนึ่งพีค กดไอคอนให้โปรแกรมทำ peak fitting แล้วจึงค่อยเพิ่มพีคที่สอง กดไอคอนให้โปรแกรมทำ peak fitting ถ้าเห็นว่าผลที่ออกมายังไม่ดีก็เพิ่มพีคที่สามและทำเช่นนี้ต่อไปเรื่อย ๆ ตรงจุดนี้ต้องลองดูกับข้อมูลของตัวเอง แม้แต่ข้อมูลเดียวกันถ้าตัดเส้น base line ต่างกันก็อาจทำให้กระบวนการ peak fitting เพื่อให้พีครวมออกมาดูดีนั้นแตกต่างกันไปได้ แต่ถ้าคำนวณพื้นที่รวมของทุกพีคแล้วมักจะเห็นว่าพอ ๆ กัน
 
ในกรณีของพีคที่สองในรูปที่ ๕ นั้น ผมใช้การเติมเข้าไปทีละพีคและทำ peak fitting จากนั้นจึงค่อยเติมพีคที่สองและทำ peak fitting จากนั้นจึงเติมพีคที่สามและทำ peak fitting ก็พบว่าพีครวมที่ได้ปรับเข้ากับข้อมูลดิบได้ดี ดังนั้นพื้นที่พีคของพีคหลังจะคำนวณได้จากผลรวมของพื้นที่พีคที่เวลา 3.08811 นาที 3.15324 นาที และ 3.21724 นาที พึงสังเกตว่าแม้ว่าจะมีต้องใช้พีคถึงสามพีค แต่ตำแหน่งยอดพีคของทั้งสามพีคนั้นอยู่ประมาณเวลาเดียวกัน อันนี้เป็นไปได้ว่าแต่ละพีคนั้นเป็นตัวแทนของการคายออกมาจากอนุภาค (packing material ที่อยู่ในคอลัมน์) ที่มีขนาดต่าง ๆ กัน

รูปที่ ๕ การทำ peak fitting พีคที่สอง

เมื่อได้พีคที่สองแล้วก็ควรทำการตรวจสอบด้วยว่าการทำ peak fitting นั้นยอมรับได้หรือไม่ สิ่งที่ผมทำเป็นปรกติก็คือทำการลบพีคแรกทิ้งแล้วดูว่าผลรวมของฟังก์ชันที่ใช้ในการประมาณค่าพีคที่สองนั้นเข้ากับข้อมูลดิบหรือไม่ รูปที่ ๖ เป็นรูปที่ได้ลบฟังก์ชันของพีคแรกทิ้งไป เส้นสีน้ำเงินคือเส้นผลรวมของพีค 3 พีคที่ใช้ในการประมาณค่าพีคที่สอง ซึ่งก็พบว่าปรับเข้ากับข้อมูลดิบได้ดี
 
รูปที่ ๖ รูปร่างของพีคที่สองเมื่อทำการลบพื้นที่หนึ่งทิ้งไป
 
เนื่องจากขนาด packing material ใน packed column นั้นไม่ได้มีขนาดเท่ากันทุกอนุภาค แต่มีการกระจายตัวของขนาดอนุภาคอยู่ สารที่ถูกดูดซับเอาไว้ในรูพรุนของอนุภาคขนาดเล็กจะหลุดออกมาได้ง่ายกว่าสารที่ถูกดูดซับเอาไว้ในรูพรุนของอนุภาคขนาดใหญ่ เพราะรูพรุนของอนุภาคขนาดเล็กนั้นมีเส้นทางที่สั้นกว่าทำให้ใช้เวลาน้อยกว่าในการแพร่จากข้างในรูพรุนออกมายัง carrier gas ส่วนที่ทำให้พีคเกิดการลากหางจึงเป็นส่วนของสารที่หลุดออกมาจากรูพรุนของอนุภาคขนาดใหญ่ ด้วยเหตุนี้พีคที่ได้นั้นจึงมีลักษณะที่ไม่สมมาตร การใช้ฟังก์ชันที่สมมาตรเช่น Gaussian จะใช้ทำให้ต้องใช้พีคประมาณค่าจำนวนมากจึงจะปรับพีครวมให้เข้ากับข้อมูลดิบได้ การใช้ฟังก์ชัน Gaussian เช่นฟังก์ชันที่เรียกว่า SplitGaussian ของโปรแกรม fityk จะทำให้ใช้พีคประมาณค่าจำนวนน้อยกว่า และปรับเข้ากับข้อมูลดิบได้ดีกว่า

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

ไม่มีความคิดเห็น: