- Trong quá trình dữ liệu nghiên cứu di truyền học được xử lý bằng bảng tính, định dạng tự động của Excel đã đổi tên gene, dẫn đến lỗi trong bài báo
- Loại lỗi này được phát hiện trong 1 trên 5 bài báo di truyền học trên các tạp chí khoa học hàng đầu, cho thấy điểm yếu trong quy trình kiểm chứng dữ liệu
- Nguyên nhân cốt lõi là tên gene bị Excel tự động chuyển đổi thành ngày hoặc giá trị số, khiến giá trị nhập vào khác với giá trị được lưu
- Những chữ viết tắt có thể bị diễn giải là ngày như SEPT2 có thể bị đổi thành
2-SEPvà được lưu dưới dạng giá trị ngày như ngày 2 tháng 9 năm 2016 - Nếu tiếp tục dùng Excel, cần đặt cột ở định dạng văn bản và tự kiểm tra kết quả; Google Sheets có thể là một lựa chọn thay thế để tránh cùng lỗi tự động chuyển đổi này
Lỗi tên gene do định dạng tự động của Excel gây ra
- Tính năng định dạng tự động của Microsoft Excel đã tạo lỗi trong dữ liệu bài báo di truyền học, và một phân tích mới xác nhận rằng 1 trên 5 bài báo di truyền học trên các tạp chí khoa học hàng đầu có chứa lỗi này
- Vấn đề xảy ra khi bảng tính diễn giải một số tên gene thành ngày trên lịch hoặc giá trị số
- Người dùng nghĩ rằng họ đã nhập tên gene, nhưng dữ liệu được lưu có thể đã bị đổi thành giá trị khác
Ví dụ tiêu biểu
- Gene có tên Septin-2 thường được viết tắt là SEPT2
- Excel có thể đổi SEPT2 thành
2-SEPvà lưu nó dưới dạng ngày 2 tháng 9 năm 2016 - Việc chuyển đổi như vậy có thể làm lung lay độ tin cậy của danh sách gene hoặc dữ liệu phân tích được đưa vào bài báo
Cách xử lý và lựa chọn thay thế
- Nếu tiếp tục sử dụng Excel, cần đặt cột tương ứng ở định dạng văn bản và kiểm tra cẩn thận xem có xảy ra tự động chuyển đổi hay không
- Google Sheets lưu tên gene đúng như được nhập, nên có thể là một lựa chọn thay thế để tránh cùng loại lỗi tự động chuyển đổi này
- Phân tích liên quan được công bố trên Genome Biology
1 bình luận
Ý kiến trên Hacker News
Việc Excel tự động chuyển đổi các chuỗi trông giống ký pháp khoa học thành số thật sự khiến người ta tức điên. Cũng không tắt được.
Khi xuất dữ liệu quy mô lớn có những giá trị như mã vị trí duy nhất, đến một lúc nào đó một số giá trị trông kỳ lạ, và không chỉ là phần hiển thị bị đổi, mà chính nội dung ô đã bị Excel tự ý thay đổi mà không hỏi gì cả.
Sau nhiều năm mà vẫn không sửa những vấn đề nhỏ nhặt nhưng liên tục làm người dùng vấp ngã như vậy thì thật vô lý. Microsoft thường nói “chỉ làm những thứ ảnh hưởng đến nhiều khách hàng”, nhưng nếu cứ đóng các báo cáo lỗi thì lần nào cũng có thể nói “chỉ ảnh hưởng đến một người” rồi lại đóng tiếp.
Thà rằng nếu không tái hiện được thì thêm cơ chế debug cho lần sau, hoặc xử lý đúng cách bằng cách để lại lý do có thể theo dõi được, chẳng hạn “ít người yêu cầu, nhưng nếu thay đổi có thể làm hỏng khu vực khác hoặc tính tương thích ngược”.
Vô số macro, script VBA và quy trình làm việc do người dùng không chuyên kỹ thuật tạo ra đang phụ thuộc một cách tinh vi vào hành vi này. Nó giống những điểm kỳ quặc của JavaScript: nếu thay đổi thì những thứ cũ kỹ ở đâu đó sẽ hỏng.
Microsoft có thể nói thẳng hơn, nhưng đương nhiên họ sẽ muốn tránh cuộc tranh cãi kiểu đó.
Một luồng nổi bật trước đây vào tháng 8 năm 2020: https://news.ycombinator.com/item?id=24070385
Nội dung là “các nhà khoa học đổi tên gene người để MS Excel không hiểu nhầm tên gene là ngày tháng”.
Chi tiết liên quan: năm 2023 Microsoft đã phát hành bản cập nhật ngăn vấn đề Excel chuyển đổi ký hiệu gene thành ngày tháng, và còn có Gene Updater để tự động sửa và cập nhật các tên gene bị Excel nhận diện sai.
https://www.pcmag.com/news/microsoft-finally-fixes-excel-gli...
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9325790/
Cần phải hiểu rõ công cụ. Nhìn những tiêu đề như thế này, tôi vừa buồn về tình trạng của thế giới và những chướng ngại cản trở tiến bộ, vừa tức giận trước sự ngu ngốc khi thiết kế mọi công cụ cho những người dùng lười nhất, đồng thời cũng thấy buồn cười trước thất bại của phần mềm độc quyền và người dùng của nó.
Công cụ bạn dùng có thể tệ. Nếu vậy thì phải tự xử lý công cụ tệ đó, hoặc học một công cụ tốt hơn, hoặc đưa vào một chuyên gia máy tính đủ năng lực để khám phá hệ sinh thái công cụ và tạo ra kết quả.
Tôi còn chưa nói đến vấn đề kiểm chứng kết quả. Trong môi trường nghiên cứu dùng ngân sách công, việc trả tiền cho Microsoft để dùng công cụ độc quyền rồi làm hỏng việc là một tình trạng cay đắng.
Vì vậy, ở đâu đó trong chuỗi — tác giả liên hệ, biên tập viên, nhân viên tạp chí — có người mở tệp bằng Excel rồi lưu lại. Không phải các nhà tin sinh học đang phân tích bằng Excel.
Một trong những lý do tôi không còn dùng bảng tính trong giảng dạy là vì chúng tiếp tục mang theo lỗi thứ tự ưu tiên phép toán số học. Ở đây “lỗi” có nghĩa là nó mâu thuẫn với quy ước toán học lâu đời
Nếu nhập
-3^2vào một ô rồi nhấn Enter, bảng tính sẽ trả về9. Nhưng trong toán học, lũy thừa được ưu tiên hơn dấu trừ đơn ngôi, nên kết quả phải là-9. Ví dụ, nếu yêu cầu học sinh vẽ đồ thịy = -x^2, các em phải vẽ một parabol mở xuốngTôi không kiểm tra được Excel mới nhất, nhưng Excel 97 đã như vậy, và LibreOffice Calc hiện tại cũng trả về
9. Có lẽ một bảng tính đời đầu đã triển khai sai thứ tự ưu tiên, rồi về sau tất cả đều làm theo để giữ tương thíchNgược lại, maxima và Python đều cho
-9. Tôi tò mò liệu những người sao chép công thức từ sách toán vào bảng tính có cũng vướng phải vấn đề này không^được phát minh ra. Trong toán học, số mũ là chỉ số trên, nên không phải là toán tử nhị phân mà là một phần của hạng tửTrong văn bản máy tính, người ta đã tạo ra toán tử nhị phân cho thứ không thể biểu diễn trực tiếp; dấu mũ caret là cách phổ biến và xuất hiện sớm nhất, nhưng
**cũng là một ví dụ khácTheo truyền thống, dấu trừ đơn ngôi được xem là một phần của hạng tử, nên có độ ưu tiên cao hơn toán tử nhị phân. Nhưng nếu đã biến số mũ thành một toán tử mà vẫn giữ logic đó thì vấn đề trở nên rối rắm
Phép chia cũng có vấn đề tương tự.
/là một toán tử nhị phân được tạo ra trong môi trường không có ký hiệu chia thực sự, và về bản chất nó phải biểu diễn vạch ngang của phân số. Vạch phân số có vai trò nhóm toàn bộ biểu thức ở hai bên, nhưng nếu thay thế đơn giản bằng/, nó có thể chịu ảnh hưởng của quy tắc ưu tiên và cho ra kết quả sai-a*bđược phân tích cú pháp thành(-a)*b, nhưngc-a*bđược phân tích thànhc-(a*b). Dấu trừ đơn ngôi có độ ưu tiên cao hơn toán tử nhị phânThường thì có thể chuyển dấu nên không nhận ra, nhưng trong các trường hợp biên liên quan đến hành vi không xác định thì nó gây vấn đề
0 - INT_MIN/2được phân tích thành0 - (INT_MIN / 2)nên ổn, nhưng-INT_MIN/2được phân tích thành(-INT_MIN) / 2nên không ổn. Do đặc tính của biểu diễn bù hai,INT_MINcó thể không có phần tử đối trong phép cộngTôi biết có hai quy ước cho vấn đề này, nên muốn có hành vi nào thì chỉ cần dùng ngoặc
Thời đi học tôi học toán khá tốt, nhưng không biết có người nghĩ
-3^2phải là-9; tôi chỉ xem đó là đặc tính kỳ lạ của một số máy tính bỏ túi hoặc chương trình. Tôi cũng tò mò biểu thức này được đọc thành tiếng thế nào. Nếu nghĩ là “bình phương của âm 3” thì(-3)^2là tự nhiên, còn phải đọc là “số âm của bình phương 3” thì-9mới đúngHồi cấp hai, chúng tôi được dạy nhập những biểu thức như vậy vào máy tính để thấy kết quả khác kỳ vọng, và từ đó tôi chỉ nghĩ “vậy thì phải dùng ngoặc”. Việc thích một quy ước ưu tiên hơi khác chưa đến mức khiến tôi bỏ máy tính hay khuyên người khác không dùng
-2^2=4nhưng0-2^2=-4, vì trường hợp đầu được xem là dấu-đơn ngôi có ưu tiên cao hơn phép lũy thừaCó thể lập luận rằng về mặt kỹ thuật điều đó đúng, nhưng với người có nền tảng kỹ thuật/khoa học thông thường muốn làm các việc bình thường thì nó rất trái trực giác. Tôi cho rằng điều này có thể khiến nhiều người không dùng Nim
POWER. Nhìn từ góc đó, dù có thể sai về mặt toán học, nó vẫn đúng theo hành vi của ExcelVấn đề của Excel là nó cố làm gần như mọi thứ bằng một công cụ phần mềm duy nhất: chỉnh sửa/biểu diễn ở mặt trước, phân tích, mô hình hóa ngữ nghĩa, cho đến kho dữ liệu/cơ sở dữ liệu
Hầu hết kỹ sư hợp lý đều thấy cách tiếp cận này có gì đó sai. Nhưng phần lớn người dùng máy tính hằng ngày lại nghĩ điện toán vốn nên như vậy
Đôi khi chính tôi cũng tự hỏi vì sao mình lại tự nguyện mở Excel cho một số tác vụ nhất định. Dù vậy, bất chấp mọi phê bình, với tôi Excel đã vượt qua ngưỡng của hiệu ứng Lindy và sẽ tiếp tục tồn tại
https://en.wikipedia.org/wiki/Lindy_effect
Nhiều startup công nghệ thực chất là “thay thế những việc mọi người từng làm bằng Excel bằng một công cụ chuyên dụng”
Vì nó chạm đúng điểm hoàn hảo giữa dữ liệu có cấu trúc và dữ liệu phi cấu trúc, nên chỉ cần điền các ô rồi xem chuyện gì xảy ra là rất tiện
Lý do người ta nói “không nên làm vậy” là vì con đường thoát khỏi một giải pháp đang chạy tốt để chuyển sang cách tiếp cận dựa trên code được sản phẩm hóa đúng nghĩa có thể cực kỳ đau đớn
http://www.catb.org/jargon/html/Z/Zawinskis-Law.html
Trong tiếng Đức có câu “thợ dở thì lúc nào cũng đổ lỗi cho công cụ”
Excel có rất nhiều điểm kỳ quặc, nhưng tôi vẫn biết ơn sự tồn tại của nó ở chỗ nó cho phép gom nhanh các con số lại với nhau mà vẫn có thể thay đổi giá trị đầu vào của công thức
Ít nhất vào thời điểm bài viết, không có cách nào tắt chức năng tự động chuyển đổi những chuỗi cụ thể như
SEPT2thành ngày tháng. Chỉ cần có một thiết lập để tắt nó thôi thì đã có thể ngăn rất nhiều lỗi do các nhà nghiên cứu làm việc khuya hoặc bị dí deadline gây raRõ ràng có những điểm mà người dùng công cụ cần bỏ công học cách sử dụng tốt nhất. Nhưng phía nhà phát triển cũng có thể bỏ công để ngăn các lỗi phổ biến và tiết kiệm rất nhiều thời gian cho người dùng
Không phải mọi công cụ. Cũng không phải công cụ bị ép dùng vì tiêu chuẩn hay tập quán công nghiệp lỗi thời, hay một công cụ ngu ngốc mà bình thường sẽ không bao giờ dùng nhưng lại không có lựa chọn nào khác
Excel cũng đâu có phát minh ra bảng tính. Nếu không có Excel thì vào thời điểm đó người ta cũng đã dùng một chương trình kế nhiệm kiểu WhateverCalc nào đó, và Excel chỉ thêm vào đó những thứ vô dụng mà thôi
https://simple.wikipedia.org/wiki/Spreadsheet
Rốt cuộc tại sao lại không thể tắt tự động nhận dạng ngày tháng? Chỉ cần thêm một ô chọn trong phần cài đặt để người dùng như tôi bảo Excel đừng làm mấy trò vớ vẩn đó là được
Có ai có thể lập luận không thể phản bác rằng thứ này phải luôn được bật không?
Giá trị mặc định là gì? Mỗi phiên bản có mặc định khác nhau không? Làm sao giữ nhất quán giữa các máy tính và môi trường cài đặt khác nhau? Nếu ngay lúc đó thực sự cần tính năng đó thì sao?
Tôi nghĩ đến việc xuất CSV. Tôi đã không dùng Windows 10 năm rồi, nhưng vẫn nhớ rằng để đổi cách xuất số thập phân, phải đổi locale rồi khởi động lại máy. Làm thế chỉ để đổi một thiết lập Excel thì thật điên rồ. Việc rải các bản vá bằng ô chọn khắp nơi cũng không khác nhiều
https://insider.microsoft365.com/en-us/blog/control-data-con...
Hai tuần trước tôi gặp chuyện tương tự ở chỗ làm. Khi quét các file log, tôi viết một script
awkđể chuyển timestampHH:MM:SS.uuuuuuthành số nano giây kể từ epoch cho một công cụ khác xử lýNhưng tôi không biết rằng bên trong
awkdùng số dấu phẩy động cho số, và hàm chuyển đổi đã làm tròn sai kết quả, phá hỏng bước phân tích sau đó theo một cách rất khó hiểuTệ hơn nữa, khi lướt dữ liệu trong Visidata, vấn đề tương tự lại xuất hiện, dù có một cách vòng tránh khá dễ mà tôi không nhớ chính xác
Ở chỗ làm, tôi đã nhiều lần gặp vấn đề Excel thay đổi các giá trị số đầu vào vì định dạng locale khác nhau, và đã không ít lần mất hàng giờ mới tìm ra nguyên nhân là Excel
Những giá trị như số định danh công dân hay số điện thoại cũng là các kiểu cực kỳ bất tiện với Excel. Chúng còn phổ biến hơn gene rất nhiều và chắc phải gần với các trường hợp sử dụng tiêu chuẩn của Excel hơn, vậy mà Excel vẫn làm hỏng
Ngay cả năm 2024, việc mở file CSV trong Excel vẫn trở thành một việc quá phức tạp, thay vì một thao tác đơn giản chỉ cần nhấp đúp. Các chương trình bảng tính khác xử lý file CSV dễ hơn nhiều
Điều tệ nhất là Excel thường được người dùng không chuyên kỹ thuật sử dụng, nên các hành vi kỳ quặc kiểu này bị hiểu sai và làm lãng phí thời gian lặp đi lặp lại
Dù vậy, thường thì cũng là do tôi chưa dùng đủ tốt các tính năng bảo vệ và khóa. Tôi cũng biết rằng các ghi chú giải thích sẽ bị bỏ qua
Vì thế với các file chia sẻ, tôi gần như luôn để một bản sao lưu khởi đầu trống và một file riêng để sử dụng thực tế, nhờ vậy giảm nhẹ được phần nào
Bài viết năm 2016 cùng chủ đề, “Gene name errors are widespread in the scientific literature”, cũng rất thú vị
https://genomebiology.biomedcentral.com/articles/10.1186/s13...
Theo bài viết, vấn đề phần mềm Excel vô tình chuyển các ký hiệu gene thành ngày tháng và số dấu phẩy động lần đầu được mô tả vào năm 2004. Ví dụ, các ký hiệu gene như
SEPT2vàMARCH1mặc định bị chuyển lần lượt thành2-Sep,1-Mar