🙆

Code Interpreterで実験データを自動で処理する

2023/08/01に公開

TL; DR

Code InterpreterにX線回折スペクトルの生データを渡して、数回のプロンプトを与えるとヘッダとデータを分離して、データのみをCSVとして出力し、またプロットすることもできた。またヘッダ部を分離してJSONで保存することもできた。データの列名は自動で推定してくれたが、たまたまかも?

はじめに

前回の記事ではcsvのデータを渡し、数回のプロンプトで簡単な機械学習ができそうなことがわかりました。一方で、実務的に実験データ等を用いて機械学習を行う場合、データ分析コンペのように前処理が行われていることは少ないです。そのため専用のツールや自分でスクリプトを組んで生データから必要なデータを抽出する作業が発生します。生データのフォーマットは各社各様ですし、また装置によっても異なります。そのため、都度データの抽出コードも装置ごとに書く必要があり非常に手間です。

こんな苦行をCodeInterpreterで解決できないかな?というのが今回の狙いです。

検証対象:XRDスペクトル

世の中には様々な実験データがありますが、今回はたまたま見つけた物質材料機構(NIMS)のX線回折(XRD)スペクトルのデータを用います。XRDスペクトルとは何なのかというと

X線回折(XRD)スペクトルは、結晶構造内の原子の配置を分析する手法で、物質の結晶相の同定と構造解析に用いられます。
XRDでは、X線が物質内の格子平面に回折される現象を観測し、これによって結晶の格子定数、原子の位置、結晶サイズなどを決定できます。
スペクトルから得られるピークの位置と強度は、特定の物質に固有であり、これによって物質の相や純度も評価できるため、鉱物学、材料科学、化学、薬学など、多岐にわたる分野で重要な分析手法とされています。

ということです。ちなみに著者はXRD自体は知ってはいますが、使ったことはありません。

やりとりの全体

https://chat.openai.com/share/785afaf9-f995-4218-8b0e-7f8ddcbdb6b4

(いつのまにチャットをシェアするという便利な機能があったんだ・・・)

やりとり1:データをCSVとして抽出

プロンプト1

このデータはRIGAKUというメーカーのX線回折(XRD)スペクトルの生データです。この生データから2Θと強度を列に持つcsvデータを出力してください。

渡したデータはこちら

回答1

もちろん、ファイルを分析して2Θと強度のデータをCSV形式で出力します。まず、ファイルの内容を調べてみましょう。
--中略--
このプレビューには、データセクションが表示されています。各行には3つの値が含まれており、最初の値はおそらく2Θの値で、2番目の値は強度であると思われます。3番目の値の意味は不明ですが、分析には必要ない可能性があります。

人間っぽい。

やりとり2:プロットしてもらう

プロンプト2

2Θと強度のデータをプロットしてもらっていいですか?

回答2

もちろんです!2Θと強度のデータをプロットしてみましょう。

ちなみに正解はこちら。完璧にあっているように見える。

やりとり3:ヘッダをJSONで構造化

プロンプト3

ヘッダ情報をJSONとして出力できますか?

回答3

もちろん、ヘッダ情報をJSON形式で出力できます。このファイルのヘッダ情報は特定のキーと値のペアで構成されているため、JSON形式に変換するのは適切です。

ヘッダ情報を抽出してJSONに変換しましょう。

完璧なJSONが返ってきた。凄い。。。

やりとり4:前処理はできる?

プロンプト4-1

先ほどはXRDの生データをプロットしてもらいましたが、実際に実験結果を解釈する場合補正などの何らかの前処理はしなくてもいいですか?

回答4-1

XRD(X線回折)スペクトルの解釈に際しては、通常、いくつかの前処理と補正手順が必要です。これらの手順は、データの品質を向上させ、解釈を容易にするために行われます。以下は一般的な前処理と補正手順のいくつかです:

バックグラウンド補正: ノイズや非特異的な信号を除去するために行われます。
平滑化: データに存在するランダムなノイズを減らすために行われることがあります。
Kα2除去: Kα1とKα2のピークが混在している場合、Kα2を除去して解析を容易にすることがあります。
異常値の除去: データ中の異常値やスパイクを検出し、除去または補正することがあります。
正規化: 様々なサンプル間での比較を可能にするために、データを正規化することがあります。
粉末平均化: 粉末XRDでは、粒子のランダムな配向を考慮して補正することがあります。
極端な条件下での補正: 温度、圧力などの極端な条件下での測定では、これらの要素を補正する必要があります。
これらの前処理と補正は、分析の目的、サンプルの性質、使用される装置、求められるデータの精度などに応じて選択されます。

実際に解析を行う際には、具体的な目的に合わせた適切な前処理と補正手順を検討することが重要です。専門的なXRD解析ソフトウェアは、これらのプロセスを容易にするための多くのツールを提供しています。

何か具体的な分析や補正についてご質問があれば、お知らせください!

プロンプト4-2

1, 2, 4, 5の前処理を行ってもらってもいいですか?

回答4-2

もちろん、指定された前処理を行いましょう。

バックグラウンド補正: データからバックグラウンドノイズを除去します。
平滑化: データに平滑化を適用してランダムノイズを減らします。
異常値の除去: データから異常値またはスパイクを検出して除去します。
正規化: 強度を最大値で割って0から1の範囲に正規化します。
これらの手順を適用して、データをプロットし直します。

いまいち。指示が悪いのかもしれない・・・。

感想

今回のデータではうまいことできたが、もっとややこしいデータだとどうなるのかが気になる。

Discussion