1 điểm bởi GN⁺ 2024-09-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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-SEP và đượ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-SEP và 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

 
GN⁺ 2024-09-15
Ý 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”.

    • Đúng vậy, lý do cuối mới là cốt lõi. Đó là vì tính tương thích ngược, bao gồm cả lỗi.
      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 đó.
    • Có lý do gì mà khi nhập dữ liệu lại không chỉ định kiểu dữ liệu không? Nếu đó là định dạng tệp dữ liệu hay dùng, cũng có thể tự động hóa việc nhập bằng VBA và chỉ định kiểu dữ liệu đúng.
    • Vấn đề tự động chuyển đổi các chuỗi trông giống ký pháp khoa học thành số xảy ra với tôi một, hai lần mỗi tuần. Phát điên mất.
    • LibreOffice miễn phí mà, không hiểu sao vẫn còn dùng MS Office.
  • 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.

    • Nếu từng làm trong lĩnh vực này, sẽ thấy phần lớn vấn đề nằm ở việc các nhà xuất bản yêu cầu nộp các bộ dữ liệu nhỏ ở định dạng xls khi gửi bài.
      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.
    • Đúng, công cụ không được tạo ra cho người dùng mà được tạo ra cho người làm công cụ. Tất cả những người còn lại phải thích nghi.
  • 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^2 và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ống
    Tô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ích
    Ngượ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

    • Vấn đề này trông giống như hệ quả phụ của toán tử nhị phân ^ đượ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ác
      Theo 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
    • Trong C, -a*b được phân tích cú pháp thành (-a)*b, nhưng c-a*b được phân tích thành c-(a*b). Dấu trừ đơn ngôi có độ ưu tiên cao hơn toán tử nhị phân
      Thườ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ành 0 - (INT_MIN / 2) nên ổn, nhưng -INT_MIN/2 được phân tích thành (-INT_MIN) / 2 nên không ổn. Do đặc tính của biểu diễn bù hai, INT_MIN có thể không có phần tử đối trong phép cộng
    • Điều này nghe như bới lông tìm vết quá mức để làm lý do không dùng một chương trình
      Tô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^2 phả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)^2 là tự nhiên, còn phải đọc là “số âm của bình phương 3” thì -9 mới đúng
      Hồ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
    • Trên diễn đàn Nim cũng có câu chuyện tương tự. Trong Nim, -2^2=4 nhưng 0-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ừa
      Có 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
    • Trong Excel, toán tử lũy thừa chỉ là dạng viết tắt của hàm 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 Excel
  • Vấ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

    • Chi phí phát triển để tạo ra một giải pháp “tốt hơn một chút” so với một bảng tính Excel phức tạp thường là con số khổng lồ
      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 đề của tôi với Excel là tôi thích nó quá. Tôi biết là không nên, nhưng vẫn vậy
      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
    • Excel có thể gửi email bằng script VBA, nên thỏa mãn định luật Zawinski
      http://www.catb.org/jargon/html/Z/Zawinskis-Law.html
    • Tuy nhiên, vì là phần mềm độc quyền nên một ngày nào đó nó sẽ ngừng được bảo trì và ngừng hoạt động. Nhưng bảng tính nói chung thuộc về hiệu ứng Lindy, và phần mềm mã nguồn mở sẽ tiếp tục duy trì chúng trong nhiều thế kỷ tới
  • 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

    • Đồng thời, trong thiết kế trải nghiệm người dùng cũng có câu đừng đổ lỗi cho người dùng
      Í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ư SEPT2 thà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 ra
      Rõ 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
    • Thợ vụng thì đổ lỗi cho công cụ, nhưng không ai có thể dùng củ cà rốt để viết Kinh Thánh lên một con tem cả
    • Câu tục ngữ này có một sắc thái thường bị bỏ sót. Ý là đừng đổ lỗi cho “công cụ của mình”
      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
    • Tôi nghĩ thứ đáng biết ơn ở đây không phải Excel, mà là sự tồn tại của ứng dụng bảng tính
      https://simple.wikipedia.org/wiki/Spreadsheet
    • Trong tiếng Ba Lan có câu “vũ công ballet vụng thì bị gấu váy cản trở”
  • 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?

    • Nếu nhét một ô chọn sâu trong phần cài đặt, sẽ có thêm nhiều đường dẫn khiến mọi thứ đi sai
      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
    • Ngoài cách đặt tất cả ô thành văn bản, giờ đây đã có thêm một ô chọn cho vấn đề này
      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 timestamp HH:MM:SS.uuuuuu thà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 awk dù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ểu
    Tệ 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

    • Sự bực bội của tôi với Excel ở chỗ làm không hẳn nằm ở bản thân Excel, mà ở việc mọi người làm hỏng hoặc xóa công thức, không hiểu chúng, hoặc đụng vào để “cải thiện”, rồi kết quả cuối cùng thành rác
      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ư SEPT2MARCH1 mặc định bị chuyển lần lượt thành 2-Sep, 1-Mar