CellProfilerで解析をしているときに文字コードエラーで少し悩んだのでメモしておきます.
CellProfilerで画像ファイルとメタデータ(画像ファイルとWell配置,処理条件などが記載されたファイル)を”Metadata”モジュールで紐つけて,実行したところ下記エラーがでました.
Encountered unrecoverable error in ExportToSpreadsheet during post-processing: 'ascii' codec can't encode character u'\ufeff' in position 9 : ordinal not in range(128)
プレテストではうまく行っていたのですが,最後の"ExportToSpreadsheet"モジュールで結果が出てこず残念…と思っていたのですが,エラー内容を見ると結果の出力の際に,「'ascii' codec can't encode character u'\ufeff' 」とのことでした.
文字コードとか全く知らないよ…という方(自分)のためのメモです.
"ascii"は文字コードの一つであるASCII(American Standard Code for Information Interchange)のことです.
ASCIIとは、アルファベットや数字、記号などを収録した文字コードの一つ。最も基本的な文字コードとして世界的に普及している。7ビットの整数(0~127)で表現され、ラテンアルファベット(ローマ字)、数字、記号、空白文字、制御文字など128文字を収録している。
ASCII(アスキーコード)とは - IT用語辞典 e-Words
文字コードについて意識していなかったので色々と勉強になりました.
unicodeとは?文字コードとは?UTF-8とは? - Qiita
u"\ufeff"はUTF-8のBOMのユニコード表示のことを意味します.
\ufeffって??? - Qiita
BOMとは、Unicodeで記述された文書の冒頭に記載される短い符号で、使用されている文字符号化方式(文字エンコーディング)の種類や、そのバイト順(エンディアン)を指定するためのもの。
BOM(バイトオーダーマーク)とは - IT用語辞典 e-Words
ASCIIはUTF-8のBOMを認識できないようです.
参考:新人さんに知ってほしい「文字コードのお話」 - Qiita
UTF-8のBOMは他にも問題になることがあるらしい.
UTF-8のBOMにはまった話 - Qiita
ということで,メタデータファイルの形式がおかしいということがわかりました.
実はメタデータファイルはもともと.xlsx形式だったのですが,CellProfilerのメタデータ読み込みは.csvなので,エクセルファイルをCSVに変換したのですが,何も考えずに「CSV UTF-8 (Comma delimited)」を選んでしまったのがすべての原因のようでした.
「Comma Separated Values」で出力したらエラーを出さずに解決しました.
文字コードとかあまり考えずに生きてきたので勉強になりました…基礎大事