パスワードを忘れた? アカウント作成
12895928 story
バイオテック

Excelの自動書式により、遺伝子のリストを使用する論文の約20%に誤った遺伝子シンボルが掲載されているとの調査結果 97

ストーリー by headless
確認 部門より
Microsoft Excelの自動書式機能により、遺伝子のリストを使用する論文の約20%で、遺伝子シンボルが日付や浮動小数点値に変換されたまま掲載されていることがわかったそうだ(論文Softpediaの記事WinBetaの記事)。

たとえば「Septin 2」の遺伝子シンボルは「SEPT2」だが、デフォルトの状態でExcelに入力すると「2-Sep」に変換される。また、「Membrane-Associated Ring Finger (C3HC4) 1, E3 Ubiquitin Protein Ligase」の遺伝子シンボル「MARCH1」は「1-Mar」に変換されるほか、理研の「2310009E13」のようなクローンIDは「2.31E+19」に変換されてしまう。保持されるデータ自体が変換されてしまうため、後で書式を変更しても復元することはできない。

同様の変換はExcelだけでなく、LibreOffice CalcやApache OpenOffice Calcでも発生する。Googleスプレッドシートでは発生しないとのことだが、試してみたところクローンIDは変換されてしまった。

こういった問題と回避方法は10年以上前から注目されている。しかし、事前にセルの書式設定で「文字列」を選ぶか、先頭に「'」を付加して文字列として 入力する方法ぐらいで、完全に無効化する方法はないこともあり、簡単にはなくならないようだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2016年08月28日 11時55分 (#3071328)

    なんなんでしょうね、あのおせっかい機能。
    変換したいんだったら自分でやるっていうのに。設定でオフにできる代物じゃないというのがさらに腹立つ。
    その上一旦変換されちゃうとCtrl+Zで戻るしかなくて、あとから書式を設定しても元のデータを得られないという非可逆性を持っているのがさらにさらに腹立たしい。

    ストーリーの例の他にも、表に見出しつけようと思ってチャプターのつもりで数字とハイフンの組み合わせを入力したら日付に変換されるとかね。これは手入力だったからすぐわかったけど、外部ファイルをインポートしたり、他からコピペして持ってきたときとかはわかりづらい。
    正直なんでMSはこんな糞機能を搭載したのかがわからない。この件に関するフィードバックは結構なユーザーが送っていると思うんだけど、一向に改善される気配がない。

    • by Anonymous Coward

      そうそう。セルの入力内容を書き換えるのはおかしい。フォントや色はメチャクチャに設定できるのに、直接内容を変更するのは間違ってる。

      • by BlueRain (37857) on 2016年08月28日 22時07分 (#3071502)
        測定器が出したCSVを読みこませたら全部指数表示になっていたのには泣けた。

        お節介機能といえば、コピーする時に書式がくっついてくるのも困り物。
        標準は「値のコピー」か「計算式のコピー」にしてほしい。
        せっかく書式設定をしたのに誰かが編集するとぐちゃぐちゃになってメンテが大変。
        下手に書式設定なんかしたくないのだけど、その誰かさんが「見やすくするためにこういう形にしてくれ」と言うからしかたない。確かに見やすくなるけど。

        ついでに値/計算式の移動も実装してほしい。
        親コメント
    • by Anonymous Coward

      Excelに限らず、イルカが登場したあたりから勝手に発動するおせっかい機能にイライラすることが増えた気がする。

    • by Anonymous Coward

      最低限の仕様として
      データ型や書式を判別する際、行単位列単位でデータを見た上で総合的に判別してほしいですよね
      セルに入力された1個の短いサンプルだけで判別するから間違った値に変換される可能性が跳ね上がる
      それから、入力内容の生のデータはそのまま保持してほしいかなぁ
      1-1って入力したら、後から入力し直すことなく書式設定だけで1月1日にも0にも1-1にもできるような

  • by Anonymous Coward on 2016年08月28日 13時37分 (#3071359)

    エクセルの自動変換機能は大変に迷惑でかつ外せないので,まあこの被害に会う奴がでるのはわかる.

    しかし 2%ならともかく 20% はでかすぎる.
    この分野の研究者が論文の正確さをこんなにないがしろにしているとは…

    # 著者が気づかなくても,査読者が気づくだろう,普通は.
    # 生物系は査読もいい加減ということか?

    • by sumiyaki (39613) on 2016年08月28日 14時12分 (#3071371) ホームページ 日記

      最近の論文には多くの場合、supplementary filesというのが付加されてます。

      そこにおかしくなった遺伝子名のようなものが含まれていて、その割合が、5論文につき1つくらい、と言う話でしょう。
      元記事の論文もちらっとみましたが、supplementary filesの問題のようです。

      Supplementary filesは網羅的に非常に多くの遺伝子名などを扱っていることもあるため、論文の主旨に直接関係ない遺伝子名などが含まれています。査読者もSupplementary filesを熟読したりはしないでしょう。チェックのためのソフトやスクリプトが雑誌の編集部から提供されていれば、別でしょうが。

      論文の英語の綴りはスペルチェッカにかける著者がほとんどでしょうが、supplementary filesのこまかなチェックはおろそかになってしまうのでしょう。

      ということで、誰かが汎用のチェックソフトなりサイトを作成すれば多くの人が喜びます。Microsoftに頼みましょうか w)

      親コメント
  • たとえば「Septin 2」の遺伝子シンボルは「SEPT2」だが、デフォルトの状態でExcelに入力すると「1-Sep」に変換される。

    ちがうよね。
    「SEPT2」と入力すると、「2-Sep」に変換されるよね。

  • by Anonymous Coward on 2016年08月28日 16時04分 (#3071417)

    やたらと、Excel方眼紙を使いすぎた弊害だろう。
    あくまで数値扱うのが主体の表計算ソフトだからね。

  • by Anonymous Coward on 2016年08月28日 9時48分 (#3071299)

    データの集計には持ってこいなのに微妙な仕様なんだよなぁ
    有効数字や小数位の設定なんかもOptionレベルで実装して欲しいなーと思い続けて何年も経ってるぞ

  • by Anonymous Coward on 2016年08月28日 10時18分 (#3071301)

    カップ焼きそばの調理に失敗する問題と回避方法は10年以上前から注目されている。しかし、お湯を捨ててからソースを入れる方法ぐらいで、完全に無効化する方法はないこともあり、簡単にはなくならないようだ。

    ……みたいな話と同じくらいの違和感しか無い。
    どこまでが「やってあたりまえ」で、どこからが「バッドノウハウ」なのかなんて、誰にも決められないと分かっていても。

    • オートコレクト・オートフォーマットはお節介な機能だ、という話はずっと昔からある
      オートフィルと Excel 2013 以降のフラッシュ フィルはあまりそういう話は聞かない

      親コメント
      • オートフィルと Excel 2013 以降のフラッシュ フィルはあまりそういう話は聞かない

        ユーザが明示的な操作で指定したときのみ、機能するからじゃない?

        元データを書き換えてしまうような重大な機能なのに、ユーザが特に指定しないのに、自動的に機能しちゃうのが嫌がられているのでは?
        しかも、それをオフにできないと来ちゃ、ねぇ。

        親コメント
      • >オートコレクト・オートフォーマットはお節介な機能だ、という話はずっと昔からある

        MS-Office全般でこれらの完全OFFをデフォにして欲しい。
        トラブルの元になりすぎるし、各アプリ各バージョンで解除の仕方が変わったりしてややこしいイメージしか無い

        #万年MS-Office初心者の愚痴

        親コメント
    • by Anonymous Coward on 2016年08月28日 11時31分 (#3071323)

      カップ焼きそばの調理に失敗するのは単に調理する本人の問題でしょ?
      だってカップ焼きそばのパッケージに調理手順が事細かに図まで載せて書いてあるのだから
      本人がそれを見忘れた、もしくは見てたけど手順を間違えたってことで。

      本件はそうじゃなく、そもそも「事前の書式設定」的な手順書がないとか
      その手順書に従って初期設定をすることが徹底されていないと思われるところが一番の問題。

      親コメント
      • by Anonymous Coward

        カップ焼きそばのカップは、(上方投影面積は減らしても)もう少し深い方が、お湯が零れ難くて安全だと思う。

      • by Anonymous Coward

        ヒント:食べる当人が作るとは限らない。

        書式設定だって、いくら自分じゃ気を付けてたって他人が作った糞ファイルで嫌な思いをすることあるでしょ。

    • by Anonymous Coward

      カップ焼きそばの容器に3分経ったら蓋が自動で外れる機能があって、知らないとだばぁする感じ。その機能で救われた人より困らされた人の方がたぶん多い。

  • by Anonymous Coward on 2016年08月28日 10時31分 (#3071306)

    Originでやれ

  • by Anonymous Coward on 2016年08月28日 10時38分 (#3071307)

    日ごろからよくある話だから気づくだろ?とも思ったが・・・

    直接手入力なら気づきやすいだろうが、CSVとかから読み込むデータに「混じってたら」気づきにくいだろうなぁ

  • by Anonymous Coward on 2016年08月28日 11時30分 (#3071322)

    ハイフンで区切って入力しましょう。

  • by Anonymous Coward on 2016年08月28日 12時01分 (#3071329)
    ファイルの拡張子がCSVだと関連付けで開くと、通常のファイルを開く状態で勝手に変換されて開いてしまうんで、いちいちテキストからのインポート機能を使わないと各列に書式指定してから読み込まなければならない。めんどー。

    16進テキストデータとかでも13E5など数字とEで構成されたセルがあると浮動小数点にされて困る。
    • by ogino (1668) on 2016年08月28日 17時48分 (#3071447) 日記

      ファイルの拡張子がCSVだと関連付けで開くと、通常のファイルを開く状態で勝手に変換されて開いてしまうんで、いちいちテキストからのインポート機能を使わないと各列に書式指定してから読み込まなければならない。めんどー。

      あまりに面倒なので回避用のスクリプトを作って Excel 専用文字列 CSV に変換するようにしていました。

      1. 文字コードが UTF-8 のようなら BOM を先に出力する
      2. CSV をパースして各要素を ="...." で囲み、文字列を値とする計算式に変換する

      データを計算に使用するときには変換前の CSV も開いて切り張りか、まっとうに「テキストからのインポート機能」が必要ですが、「表」機能だけをつかって「計算」機能を使わないときにはこれだけで事足ります。

      親コメント
  • by Anonymous Coward on 2016年08月28日 12時07分 (#3071333)

    全文検索とかで、I(沃素) が、I (私) と誤認されて、ストップワード扱いになりインデックスされないという問題があったな。

  • by Anonymous Coward on 2016年08月28日 12時32分 (#3071341)

    中国郵便の安いやつ(Small Packet Plusだったかな?)は03から始まる11ケタなんですが、スプレッドシートにそのまま入れると3から始まる10ケタに自動変換され、番号追跡に入れるとエラーになっちゃうので「'を付けなきゃ」と思いつつよく忘れてひどいことになります。

  • by Anonymous Coward on 2016年08月28日 14時22分 (#3071374)

    Option Explicit
    Dim WithEvents xla As Application
    Private Sub Workbook_Open()
            Set xla = Application
    End Sub

    Private Sub Workbook_NewSheet(ByVal sh As Object)
            Dim ws As Worksheet
            Set ws = sh
            Dim rng As Range
            ws.Cells.NumberFormat = "@"
    End Sub

    Private Sub xla_NewWorkbook(ByVal Wb As Workbook)
            Dim ws As Worksheet
            For Each ws In Wb.Worksheets
                    ws.Cells.NumberFormat = "@"
            Next
    End Sub

    Private Sub xla_WorkbookOpen(ByVal Wb As Workbook)
            Dim path As String
            Dim fso As New FileSystemObject: Dim ts As TextStream:
            Dim line As String: Dim v As Variant: Dim i As Integer: Dim r As Range

            path = Wb.FullName
            If (Right(path, 4) ".csv") Then
                    Exit Sub
            End If
            Wb.Close False
            Set Wb = xla.Workbooks.Add
            For Each ws In Wb.Worksheets
                    ws.Cells.NumberFormat = "@"
            Next
            Set r = Wb.Worksheets(1).Cells(1, 1)
            Set ts = fso.OpenTextFile(path)
            Do While Not ts.AtEndOfLine
                    line = ts.ReadLine
                    v = Split(line, ",")
                    For i = 0 To UBound(v)
                            r.Offset(0, i).Value2 = v(i)
                    Next
                    Set r = r.Offset(1, 0)
            Loop
    End Sub

typodupeerror

普通のやつらの下を行け -- バッドノウハウ専門家

読み込み中...