- ระหว่างที่มีการจัดการข้อมูลวิจัยด้านพันธุศาสตร์ในสเปรดชีต ฟีเจอร์ การจัดรูปแบบอัตโนมัติของ Excel ได้เปลี่ยนชื่อยีนจนทำให้เกิดข้อผิดพลาดในงานวิจัย
- พบข้อผิดพลาดลักษณะนี้ในบทความพันธุศาสตร์ 1 ใน 5 ฉบับจากวารสารวิทยาศาสตร์ชั้นนำ สะท้อนให้เห็นถึงจุดอ่อนของกระบวนการตรวจสอบข้อมูล
- สาเหตุหลักคือ ชื่อยีน ถูก Excel แปลงเป็นค่าวันที่หรือตัวเลขโดยอัตโนมัติ ทำให้ค่าที่ป้อนกับค่าที่บันทึกไว้ไม่ตรงกัน
- ตัวย่อที่อาจถูกตีความเป็นวันที่ เช่น SEPT2 จะถูกเปลี่ยนเป็น
2-SEPและอาจถูกบันทึกเป็นค่าวันที่อย่าง 2 กันยายน 2016 - หากยังต้องใช้ Excel ควรกำหนดคอลัมน์เป็นรูปแบบข้อความและตรวจสอบผลลัพธ์ด้วยตนเอง ขณะที่ Google Sheets อาจเป็นทางเลือกที่ช่วยหลีกเลี่ยงข้อผิดพลาดจากการแปลงอัตโนมัติแบบเดียวกันได้
ข้อผิดพลาดของชื่อยีนที่เกิดจากการจัดรูปแบบอัตโนมัติของ Excel
- ฟีเจอร์ การจัดรูปแบบอัตโนมัติ ของ Microsoft Excel ได้สร้างข้อผิดพลาดในข้อมูลงานวิจัยด้านพันธุศาสตร์ และการวิเคราะห์ใหม่ยืนยันว่าบทความพันธุศาสตร์ 1 ใน 5 ฉบับจากวารสารวิทยาศาสตร์ชั้นนำมีข้อผิดพลาดประเภทนี้
- ปัญหาเกิดขึ้นเมื่อสเปรดชีตตีความ ชื่อยีน บางรายการเป็นวันที่ในปฏิทินหรือค่าตัวเลข
- ผู้ใช้อาจคิดว่าป้อนชื่อยีนเข้าไปแล้ว แต่ข้อมูลที่ถูกบันทึกจริงอาจกลายเป็นค่าอื่น
กรณีตัวอย่าง
- ยีน Septin-2 มักเขียนย่อเป็น SEPT2
- Excel สามารถเปลี่ยน SEPT2 เป็น
2-SEPและบันทึกเป็นวันที่ 2 กันยายน 2016 ได้ - การแปลงเช่นนี้อาจบั่นทอนความน่าเชื่อถือของรายชื่อยีนหรือข้อมูลการวิเคราะห์ที่รวมอยู่ในงานวิจัย
วิธีรับมือและทางเลือก
- หากยังจำเป็นต้องใช้ Excel ควรกำหนดคอลัมน์นั้นเป็น รูปแบบข้อความ และตรวจสอบอย่างรอบคอบว่าไม่มีการแปลงอัตโนมัติเกิดขึ้น
- Google Sheets เก็บชื่อยีนตามที่ป้อนเข้าไป จึงอาจเป็นทางเลือกที่ช่วยหลีกเลี่ยงข้อผิดพลาดจากการแปลงอัตโนมัติประเภทเดียวกันได้
- การวิเคราะห์ที่เกี่ยวข้องเผยแพร่ใน Genome Biology
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เรื่องที่ Excel แปลงเป็นตัวเลขโดยอัตโนมัติ สำหรับสตริงที่ดูเหมือนสัญกรณ์วิทยาศาสตร์นี่น่าหงุดหงิดจริง ๆ ปิดก็ไม่ได้
เวลาส่งออกข้อมูลขนาดใหญ่ที่มีค่าพวกโค้ดตำแหน่งเฉพาะอยู่ด้วย พอถึงจุดหนึ่งบางค่าก็ดูแปลก ๆ และไม่ใช่แค่การแสดงผลที่เปลี่ยนไป แต่เนื้อหาในเซลล์เองถูก Excel เปลี่ยนโดยไม่ถามสักคำ
ผ่านไปหลายปีก็ยังไม่แก้ปัญหาเล็ก ๆ แต่คอยทำให้คนสะดุดซ้ำ ๆ แบบนี้ มันไม่สมเหตุสมผลเลย โดยปกติ Microsoft มักบอกว่า “เราทำเฉพาะเรื่องที่กระทบลูกค้าจำนวนมาก” แต่ถ้าปิดรายงานบั๊กทิ้งไปเรื่อย ๆ ก็จะพูดได้ทุกครั้งว่า “กระทบแค่คนเดียว” แล้วก็ปิดอีก
ถ้าจำลองปัญหาไม่ได้ อย่างน้อยก็ควรเพิ่มการดีบักไว้สำหรับครั้งถัดไป หรือจัดการให้ถูกต้องด้วยการทิ้งเหตุผลที่ติดตามได้ไว้ เช่น “มีคนขอน้อย แต่ถ้าเปลี่ยนอาจทำให้ส่วนอื่นหรือ ความเข้ากันได้ย้อนหลัง เสียหาย”
มีมาโคร, สคริปต์ VBA และ workflow จำนวนมากที่ผู้ใช้สายไม่เทคนิคสร้างไว้ ซึ่งพึ่งพาพฤติกรรมแบบนี้อย่างละเอียดอ่อน คล้าย ๆ กับข้อบกพร่องแปลก ๆ ของ JavaScript ถ้าเปลี่ยนไป ของเก่า ๆ ที่ไหนสักแห่งก็จะพัง
Microsoft อาจพูดตรงกว่านี้ได้ แต่แน่นอนว่าคงอยากหลีกเลี่ยงการถกเถียงแบบนั้น
กระทู้ยอดนิยมก่อนหน้านี้เมื่อเดือนสิงหาคม 2020: https://news.ycombinator.com/item?id=24070385
เป็นเรื่อง “นักวิทยาศาสตร์เปลี่ยนชื่อยีนมนุษย์เพื่อไม่ให้ MS Excel อ่านชื่อยีนผิดเป็นวันที่”
รายละเอียดที่เกี่ยวข้องคือในปี 2023 Microsoft ออกอัปเดตสำหรับ Excel เพื่อป้องกันปัญหาการแปลงสัญลักษณ์ยีนเป็นวันที่ และยังมี Gene Updater ที่แก้ไขและอัปเดตชื่อยีนที่ Excel ระบุผิดโดยอัตโนมัติด้วย
https://www.pcmag.com/news/microsoft-finally-fixes-excel-gli...
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9325790/
ต้องรู้จักเครื่องมือให้ดี พอเห็นพาดหัวแบบนี้ก็รู้สึกเศร้ากับสภาพของโลกและอุปสรรคที่ขวางความก้าวหน้า โกรธกับความโง่เขลาของการออกแบบเครื่องมือทุกอย่างเพื่อผู้ใช้ที่ขี้เกียจที่สุด และในขณะเดียวกันก็รู้สึกขำกับความล้มเหลวของ ซอฟต์แวร์ปิดกรรมสิทธิ์ และผู้ใช้ของมัน
เครื่องมือที่ใช้อยู่อาจห่วยก็ได้ ถ้าอย่างนั้นก็ควรจัดการกับเครื่องมือห่วย ๆ นั้นเอง เรียนรู้เครื่องมือที่ดีกว่า หรือพาผู้เชี่ยวชาญคอมพิวเตอร์ที่มีความสามารถ ซึ่งสำรวจระบบนิเวศของเครื่องมือแล้วทำให้ได้ผลลัพธ์มาช่วย
ยังไม่ได้พูดถึงปัญหาการตรวจสอบผลลัพธ์เลยด้วยซ้ำ ในสภาพแวดล้อมการวิจัยที่ใช้เงินสาธารณะ การจ่ายเงินให้ Microsoft เพื่อใช้เครื่องมือปิดกรรมสิทธิ์แล้วทำงานพังนี่เป็นสภาพที่น่าขมขื่น
ดังนั้นใครสักคนในห่วงโซ่ ไม่ว่าจะเป็นผู้เขียนผู้รับผิดชอบการติดต่อ บรรณาธิการ หรือเจ้าหน้าที่วารสาร ก็เปิดไฟล์ด้วย Excel แล้วบันทึกใหม่ นักชีวสารสนเทศไม่ได้ใช้ Excel วิเคราะห์กันหรอก
เหตุผลหนึ่งที่เลิกใช้สเปรดชีตในการสอน คือมันยังคงสืบทอด บั๊กเรื่องลำดับความสำคัญของการคำนวณทางเลขคณิต มาตลอด โดย “บั๊ก” ในที่นี้หมายถึงการขัดแย้งกับธรรมเนียมทางคณิตศาสตร์ที่ใช้กันมานาน
ถ้าใส่
-3^2ลงในเซลล์แล้วกด Enter สเปรดชีตจะบอกว่าเป็น9แต่ในคณิตศาสตร์ การยกกำลังมีลำดับความสำคัญสูงกว่าเครื่องหมายลบเอกภาค ดังนั้นควรเป็น-9ตัวอย่างเช่น ถ้าสั่งให้นักเรียนวาดกราฟy = -x^2ก็ต้องวาดพาราโบลาที่เปิดลงExcel รุ่นล่าสุดตรวจสอบไม่ได้ แต่ใน Excel 97 เป็นแบบนั้น และ LibreOffice Calc ปัจจุบันก็คืนค่า
9เช่นกัน คาดว่าสเปรดชีตยุคแรกตัวหนึ่งคงใช้ลำดับความสำคัญผิด แล้วหลังจากนั้นทุกตัวก็ทำตามเพื่อความเข้ากันได้ในทางกลับกัน maxima และ Python ต่างให้ค่า
-9ทั้งคู่ สงสัยเหมือนกันว่าคนที่คัดลอกสูตรจากหนังสือคณิตศาสตร์ไปใส่สเปรดชีตจะเจอปัญหานี้ด้วยไหม^ที่ถูกประดิษฐ์ขึ้น ในคณิตศาสตร์ เลขชี้กำลังเป็นตัวยก จึงไม่ใช่ตัวดำเนินการทวิภาค แต่เป็นส่วนหนึ่งของพจน์ในข้อความคอมพิวเตอร์ มีการสร้างตัวดำเนินการทวิภาคขึ้นมาเพื่อแทนสิ่งที่แสดงโดยตรงไม่ได้ โดยคาเร็ตเป็นแบบที่พบได้ทั่วไปและเกิดขึ้นก่อนที่สุด แต่
**ก็เป็นอีกตัวอย่างหนึ่งตามธรรมเนียม เครื่องหมายลบเอกภาคมักถูกมองว่าเป็นส่วนหนึ่งของพจน์ จึงมีลำดับความสำคัญสูงกว่าตัวดำเนินการทวิภาค แต่เมื่อเปลี่ยนเลขชี้กำลังให้เป็นตัวดำเนินการ แล้วยังคงใช้ตรรกะนั้นต่อ ปัญหาก็ยุ่งขึ้น
ในการหารก็เห็นปัญหาคล้ายกัน
/เป็นตัวดำเนินการทวิภาคที่สร้างขึ้นในสภาพแวดล้อมที่ไม่มีเครื่องหมายหารจริง ๆ และเดิมทีควรแทนเส้นแนวนอนของเศษส่วน เส้นเศษส่วนมีหน้าที่ครอบนิพจน์ทั้งสองฝั่งไว้ทั้งหมด แต่เมื่อแทนอย่างง่ายด้วย/ก็อาจได้รับผลจากกฎลำดับความสำคัญและให้ผลลัพธ์ที่ผิดได้-a*bจะถูก parse เป็น(-a)*bแต่c-a*bจะถูก parse เป็นc-(a*b)เครื่องหมายลบเอกภาค มีลำดับความสำคัญสูงกว่าตัวดำเนินการทวิภาคโดยปกติเรามักย้ายเครื่องหมายได้จึงไม่ทันสังเกต แต่ในกรณีขอบที่เกี่ยวกับพฤติกรรมที่ไม่ได้กำหนดไว้ จะเกิดปัญหา
0 - INT_MIN/2ถูก parse เป็น0 - (INT_MIN / 2)จึงไม่เป็นไร แต่-INT_MIN/2ถูก parse เป็น(-INT_MIN) / 2จึงไม่โอเค ด้วยคุณสมบัติของการแทนค่าแบบ two's complement ค่าINT_MINอาจไม่มีอินเวอร์สภายใต้การบวกรู้ว่าปัญหานี้มีธรรมเนียมอยู่สองแบบ ดังนั้นถ้าต้องการพฤติกรรมแบบไหนก็แค่ใส่วงเล็บ
สมัยเรียนคณิตศาสตร์ผมก็ทำได้ดี แต่ไม่เคยรู้ว่ามีคนคิดว่า
-3^2ควรเป็น-9และมองว่าเป็นแค่คุณสมบัติแปลก ๆ ของเครื่องคิดเลขหรือโปรแกรมบางตัวเท่านั้น ยังสงสัยด้วยว่านิพจน์นี้อ่านออกเสียงอย่างไร ถ้าคิดว่า “ลบสามยกกำลังสอง”(-3)^2ก็ดูเป็นธรรมชาติ และถ้าจะให้เป็น-9ก็ต้องอ่านว่า “ค่าลบของสามยกกำลังสอง”ตอนมัธยมเคยถูกสอนให้ป้อนนิพจน์แบบนี้ลงเครื่องคิดเลขเพื่อดูผลลัพธ์ที่ต่างจากที่คาดไว้ หลังจากนั้นก็แค่คิดว่า “งั้นต้องใส่วงเล็บสินะ” เท่านั้น ไม่ถึงขั้นทิ้งเครื่องคิดเลขหรือบอกคนอื่นว่าอย่าใช้ เพียงเพราะชอบธรรมเนียมลำดับความสำคัญที่ต่างกันเล็กน้อย
-2^2=4แต่0-2^2=-4เพราะกรณีแรกมองว่า-เอกภาคมีลำดับความสำคัญสูงกว่าการยกกำลังจะอ้างว่าถูกต้องในเชิงเทคนิคก็ได้ แต่สำหรับคนที่มีพื้นฐานวิศวกรรมหรือวิทยาศาสตร์ทั่วไปและอยากทำงานธรรมดา ๆ มัน ขัดกับสัญชาตญาณ มาก ผมคิดว่าสิ่งนี้อาจทำให้หลายคนเลิกใช้ Nim ได้
POWERเท่านั้น จากมุมมองนั้น แม้ในเชิงคณิตศาสตร์อาจผิด แต่ก็ถือว่าถูกต้องตามพฤติกรรมของ Excelปัญหาของ Excel คือพยายามทำแทบทุกอย่างด้วยเครื่องมือซอฟต์แวร์เพียงตัวเดียว: ตั้งแต่การแก้ไขและการนำเสนอส่วนหน้า การวิเคราะห์ การสร้างแบบจำลองเชิงความหมาย ไปจนถึงที่เก็บข้อมูลและฐานข้อมูล
วิศวกรที่มีเหตุผลส่วนใหญ่จะมองว่าวิธีนี้มีอะไรบางอย่างผิดปกติ แต่ผู้ใช้คอมพิวเตอร์ทั่วไปส่วนใหญ่กลับคิดว่าการคอมพิวติ้งควรเป็นแบบนั้นอยู่แล้ว
บางครั้งผมก็สงสัยว่าทำไมตัวเองถึงสมัครใจเปิด Excel เพื่อทำงานบางอย่าง แต่ถึงจะถูกวิจารณ์อย่างไร Excel ก็ข้ามเกณฑ์ของ Lindy effect สำหรับผมไปแล้ว และจะยังคงอยู่ต่อไป
https://en.wikipedia.org/wiki/Lindy_effect
สตาร์ทอัพเทคโนโลยีจำนวนมากคือ “การแทนที่สิ่งที่ผู้คนเคยทำด้วย Excel ด้วยเครื่องมือเฉพาะทาง”
เพราะมันแตะจุดที่สมบูรณ์แบบระหว่างข้อมูลมีโครงสร้างกับไม่มีโครงสร้าง จึงเหมาะมากที่จะเติมเซลล์แล้วดูว่าเกิดอะไรขึ้น
เหตุผลที่บอกว่า “ไม่ควรทำแบบนั้น” คือเส้นทางออกจากโซลูชันที่ใช้งานได้ดี ไปสู่แนวทางที่เป็น codebase ซึ่งถูกทำให้เป็นผลิตภัณฑ์อย่างเหมาะสม อาจเจ็บปวดมาก
http://www.catb.org/jargon/html/Z/Zawinskis-Law.html
ในภาษาเยอรมันมีสำนวนว่า “ช่างที่แย่มักโทษเครื่องมือเสมอ”
Excel มีจุดประหลาดอยู่มาก แต่ก็ยังรู้สึกขอบคุณที่มันมีอยู่ เพราะช่วยรวบรวมตัวเลขได้อย่างรวดเร็วและยังให้แก้ค่าอินพุตของสูตรได้
อย่างน้อยในช่วงที่บทความนั้นออก ยังไม่มีวิธีปิดฟังก์ชันที่แปลงสตริงเฉพาะอย่าง
SEPT2เป็นวันที่โดยอัตโนมัติ แค่มีการตั้งค่าให้ปิดสิ่งนี้ได้ ก็น่าจะป้องกันข้อผิดพลาดจำนวนมากที่นักวิจัยซึ่งทำงานดึกหรือถูกเดดไลน์กดดันเป็นคนทำให้ลุกลามได้แน่นอนว่ามีจุดที่ผู้ใช้เครื่องมือต้องพยายามเรียนรู้วิธีใช้งานที่ดีที่สุด แต่ฝั่งนักพัฒนาก็สามารถลงแรงเพื่อป้องกันข้อผิดพลาดที่พบบ่อยและประหยัดเวลาผู้ใช้ได้อย่างมากเช่นกัน
ไม่ใช่เครื่องมือทุกอย่าง ไม่ใช่เครื่องมือที่ถูกบังคับให้ใช้เพราะมาตรฐานอุตสาหกรรมหรือธรรมเนียมเก่า ๆ และไม่ใช่กรณีที่เป็นเครื่องมือโง่ ๆ ซึ่งปกติคงไม่มีวันใช้ แต่ไม่มีทางเลือก
Excel ไม่ได้เป็นผู้คิดค้นสเปรดชีตขึ้นมาเสียหน่อย ต่อให้ไม่มี Excel ตอนนั้นก็คงใช้โปรแกรมทายาทอะไรสักอย่างของ WhateverCalc อยู่ดี และ Excel ก็แค่เติมสิ่งไม่จำเป็นเข้าไปในนั้นเท่านั้น
https://simple.wikipedia.org/wiki/Spreadsheet
ทำไมถึงปิด การตรวจจับวันที่อัตโนมัติ ไม่ได้เสียที? แค่ใส่เช็กบ็อกซ์ไว้ในการตั้งค่า ให้ผู้ใช้อย่างฉันบอก Excel ได้ว่าอย่าทำเรื่องไร้สาระแบบนั้นก็พอ
มีใครสามารถโต้แย้งแบบไร้ช่องโหว่ได้ไหมว่าทำไมต้องเปิดสิ่งนี้ไว้ตลอด?
ค่าเริ่มต้นคืออะไร? ค่าเริ่มต้นต่างกันไปตามแต่ละเวอร์ชันหรือไม่? จะรักษาความสอดคล้องได้อย่างไรเมื่อคอมพิวเตอร์และสภาพแวดล้อมการติดตั้งต่างกัน? ถ้าจู่ ๆ ต้องใช้ฟังก์ชันนั้นจริง ๆ จะทำอย่างไร?
นึกถึงการส่งออก CSV ขึ้นมาเลย ผมไม่ได้ใช้ Windows มา 10 ปีแล้ว แต่จำได้ว่าถ้าจะเปลี่ยนวิธีส่งออกตัวเลขทศนิยม ต้องเปลี่ยน locale แล้วรีบูตคอมพิวเตอร์ การต้องทำแบบนั้นเพียงเพื่อเปลี่ยนการตั้งค่า Excel อันเดียวมันบ้ามาก การโปรยแพตช์เช็กบ็อกซ์ไปทั่วก็ไม่ได้ต่างจากเรื่องนี้มากนัก
https://insider.microsoft365.com/en-us/blog/control-data-con...
เมื่อ 2 สัปดาห์ก่อนเจอเรื่องคล้ายกันที่ทำงาน ผมดึงไฟล์ล็อกมา แล้วเขียนสคริปต์
awkเพื่อแปลงไทม์สแตมป์HH:MM:SS.uuuuuuให้เป็นจำนวนนาโนวินาทีนับจาก epoch เพื่อให้เครื่องมืออื่นกินต่อได้แต่ไม่รู้ว่า
awkใช้ floating point ภายในสำหรับตัวเลข และฟังก์ชันแปลงก็ปัดเศษผลลัพธ์ผิด ทำให้การวิเคราะห์หลังจากนั้นพังในแบบที่ไล่หาสาเหตุได้ยากแย่ไปกว่านั้น ตอนเปิดดูข้อมูลใน Visidata ก็เกิดปัญหาเดียวกันอีกครั้ง แต่มีวิธีเลี่ยงง่าย ๆ อยู่ ซึ่งจำรายละเอียดไม่ได้แล้ว
ที่ทำงานเคยเจอหลายครั้งว่า Excel เปลี่ยนค่าตัวเลขที่ป้อนเข้าไปเพราะ รูปแบบ locale ที่ต่างกัน และเสียเวลาไปหลายชั่วโมงกว่าจะพบว่าสาเหตุคือ Excel
ค่าประเภทเลขประจำตัวประชาชนหรือเบอร์โทรศัพท์ก็เป็นชนิดข้อมูลที่ใช้งานใน Excel ได้ลำบากมาก ทั้งที่เป็นการใช้งานทั่วไปกว่ายีนมาก และน่าจะใกล้กับกรณีใช้งานมาตรฐานของ Excel กว่าด้วยซ้ำ แต่มันก็ยังทำพัง
แม้ในปี 2024 การเปิดไฟล์ CSV ใน Excel ก็ยังไม่ใช่งานง่าย ๆ ที่ดับเบิลคลิกแล้วจบ แต่กลับซับซ้อนเกินจำเป็น โปรแกรมสเปรดชีตอื่น ๆ จัดการไฟล์ CSV ได้ง่ายกว่านี้มาก
สิ่งที่แย่ที่สุดคือโดยปกติ Excel ถูกใช้โดยผู้ใช้ที่ไม่ใช่สายเทคนิค และพฤติกรรมแปลก ๆ เหล่านี้ถูกเข้าใจผิด ทำให้เสียเวลาซ้ำแล้วซ้ำเล่า
อย่างไรก็ตาม ส่วนใหญ่ก็มักเป็นเพราะผมใช้ ฟีเจอร์ป้องกันและล็อก ได้ไม่ดีพอ และก็รู้ด้วยว่าบันทึกคำอธิบายมักถูกมองข้าม
ดังนั้นในไฟล์ที่แชร์ ผมจึงแทบจะเก็บไฟล์สำรองเริ่มต้นแบบว่างไว้อีกไฟล์หนึ่งเสมอ แล้วแยกไฟล์สำหรับใช้งานจริงไว้ต่างหาก เพื่อบรรเทาปัญหาลงบ้าง
บทความปี 2016 ในหัวข้อเดียวกัน “Gene name errors are widespread in the scientific literature” ก็น่าสนใจเช่นกัน
https://genomebiology.biomedcentral.com/articles/10.1186/s13...
ตามบทความ ปัญหาที่ซอฟต์แวร์ Excel แปลงสัญลักษณ์ยีนเป็นวันที่และตัวเลข floating point โดยไม่ตั้งใจ ถูกอธิบายครั้งแรกในปี 2004 ตัวอย่างเช่น สัญลักษณ์ยีน อย่าง
SEPT2และMARCH1จะถูกแปลงตามค่าเริ่มต้นเป็น2-Sepและ1-Marตามลำดับ