こんにちは、Macyです。
以前こちらの記事で、NMRやMS、旋光度のデータを一つのExcelにまとめて管理し、NMR帰属の確認と補助が可能なExcelファイルを公開しました。
これをベースに、より高精度に書式変換が行えるプログラムにアップデートしたのでご紹介します。
新プログラムは以前公開したwebサーバーと同様のURLにver13として公開しました(こちらをクリック)。
自動で読みやすい形式にデータを整形
これまでのデータ出力欄は、セルの統合をしていたり、特徴量が規則的に並んでいなかったりと、プログラムで自動的にセルを見つけ出すのが極めて困難な状況でした。
そこで、プログラムに読ませるための新しい「Python」という名前のシートを作成し、データの種類(タイトル)とデータの内容の2列に全てのコンテンツを格納しました。

A列:データタイトル、B列:データ内容
ChatGPTでプログラム作成
過去に作成したVBAプログラムをベースに、ChatGPTに色々指示を出して、以下のようなプログラムを作成しました。
① 帰属チェックリスト.xlsxを指定して開く
② Pythonという名前のシートを参照し、A1:B5の内容を抽出
③ 化学式の数値下付きや核種の上付き、タイトルの太字、フォントサイズ、行間などのフォーマットを整えて、Wordに出力
④ 出力されたデータを再度チェックし、1H数の合計と13C数の合計を算出し、HRMS用の分子式のH数・C数と比較して整合性が取れているかチェック
⑤ 判定結果を末尾に記載
⑥ Excelファイル名_SI.docxという名前のWordファイルを保存
過去に公開したバージョンでは、文字列を検索し、カーソルを移動して範囲選択をして書式変更をかけるといったプログラムだったので、例外的なデータがあると対応できなくなっていました。
今回のバージョンでは、規則に則って書式を変換するプログラムになっているので、あらゆるケースに対応可能です。
Python実行環境の整備
このPythonプログラムは、再現性、安全性、柔軟性の観点からvenv(virtual environment)にて実行するのが良いです。
terminalやwindows powershellでvenvを構築する方法はChatGPTに次のように聞いて方法を教えてもらってください。
venvを<mac/windows>で構築する方法を教えて下さい。
venv環境ができたら、terminal上でvenvを有効化し、以下のコマンドで実行します。
以下最初のみ実行
pip install python-docx pandas openpyxl以下のコマンドでpythonを実行:
cdコマンドでExceltoWord.pyを保存したディレクトリに移動
(mac)
python3 ExceltoWord.py ~/pass/to/帰属チェックリストVer13.xlsx
<python3で動かない場合はpythonコマンドを試してみてください。>(windows)
python .\ExceltoWord.py .\帰属チェックリストVer13.xlsx
<ファイルが見つかりませんといわれる場合は、ExceltoWord.pyが存在するディレクトリにいないか、帰属チェックリストのpass指定が間違っています。>
おまけ: 実験項のミス発見AI
もうやっている人も多いかと思いますが、ChatGPTなどのオープンAIで機械的にSIの単純なミスを探すと大幅な時短になる上に、探しても見つからないミスまで見つかります。
全データを同時に読ませると判定精度が下がるので、読ませるデータは以下のように分類します。
- 化合物タイトル+合成プロトコルの文章のみ
- 化合物タイトル+NMR/MS/IR/mp/旋光度などのデータのみ
- 化合物タイトル+合成プロトコルの文章+NMR/MS/IR/mp/旋光度などのデータ
テキストエディタなどにSI wordファイルの内容を添付し、上のようにデータを整形します。化合物タイトルはCompound Xという形式を推奨します。ブロックの判定がうまく行きやすくデータ抽出精度が上がります。
このテキストを.txtファイルとして保存し、ChatGPTにアップロードし、色々とチェックしてもらいましょう。論文の査読にもかなり使えます。
質問例1: 添付.txtファイル中のCompound Xから始まるブロック内のデータを読み、帰属のH/C数がMSのH/C数と整合性が取れているか判定してください。
質問例2: 添付.txtファイル中のCompound Xから始まるブロック内のデータを読み、MS記載の分子式からイオンを除き、分子量を算出してください。to give の後ろに続く(収量 (g or mg), 収率%)の値を取得し、分子量と収量(g or mg)から収量 (mol)および収率を計算してください。同一ブロック内の原料と思われる化合物の使用量(g, mol, 1 equiv.)のモル数を取得し、収率計算が正しいか判定して下さい。
表記ブレがあるとミス判定をすることがあるのですが、数値はあっているのにミス判定がでている場合は逆に表記ブレの疑いがあるので、間接的なミス発見も可能です。
おわりに
記事だけでは伝わりづらい部分もあると思いますので、ケムステSlack内のMacyにDMでご相談ください。
直接の連絡先を知っている人はご連絡いただければと思います。
関連記事
化学者のためのWordマクロ -Supporting Informationの作成作業効率化-
電子実験ノートSignals Notebookを紹介します ①
電子実験ノートSignals Notebookを紹介します ②
電子実験ノートSignals Notebookを紹介します ③
IASO R7の試薬データベースを構造式検索できるようにしてみた
電子実験ノートSignals Notebookを紹介します ④































