RRUFFの粉末X線回折データで遊ぶ(20260128作成:最終更新20260128)
willemiteの測定回折パターンで検索したところ。ちゃんと候補に出ている。
前書き
RRUFFのラマンデータで遊ぶでRRUFFのラマンデータを使ったラマンスペクトルの検索プログラムを作ったのですが、それのindexを使ったプログラムの方を粉末X線パターンに書き直してみました。回折データもRRUFFが公開しているもの(dif)を使ってます。CODの結晶構造から作った粉末X線回折パターンを検索できるQualX2が既に存在するし、今使っているデータは3400個しかないので、有用かどうかは分かりませんが、鉱物については結構検索できると思います。またpython使っているのでOSには依存しません。
RRUFF difデータ
RRUFFはラマンだけではなくX線回折パターンデータセット(それ以外にもIRスペクトル、結晶構造なども)もあって、RRUFFのサイトから自由にダウンロードすることができます。dif.zipは実は2つあって、"Powder XRD"のところのものは3000個くらいしかありませんが、このdifとほぼ対応する粉末X線パターンデータ(XY_RAW.zip)が同じところにあるので、検索した後でパターンを比較するにはこちらの方が便利です。"AMCSD"の方にあるdif.zipはもっとサイズが大きく2万程度のデータがあります。ただそれに対応する粉末X線パターンデータはありません(cifがあるのでパターンを計算することは可能ですが)。今回は前者のdif.zipと同じところにあるXY_RAW.zipを使ってます。
indexファイルを使った検索
- 基本ラマンの時と同じです。プログラムはpythonで作成し、GUIにはTkinterを使ってます。
- データベースソフトは使わないで、テキストファイルで処理します。
- difデータ(回折ピークのd値が載っている)を1つづつ処理して、d値を強度高い方から10個拾って、それをindex_dif.txtファイルに書き込みます。
- 別途検索用プログラムを作り、まずindex_dif.txtを最初に読み込んでおきます。次に同定したい観測粉末回折パターンを読み込んで、プロット、平滑化して、必要ならバックグラウンドを取り除いて10個ピーク検出してリストアップします。必要ならそこから使わないピークを選択できます。それをindex_dif.txtファイルと比較して、一致のよいものをリストアップします。リストアップしたものから選択されたものをXY_RAWの回折パターンとして表示して、観察パターンと一致しているかどうかはユーザーが判断します。一致度はポイント制で、強度高いもので一致するとポイントを高くしてます。また、逆にreferenceの強度高いものと一致するかもポイントに使ってます。ここはもう少し改善の余地があると思います。
- 観察回折パターンはCu波長を使ったものを想定していて、相対波数と強度がカンマで区切られているcsvファイルかリガクのascファイルを想定してます。これは使っていた装置の関係です。もちろん別形式でも(プログラム直せば)対応できます。
- 楽するためになるべくnumpy, scipy等の機能を使います。たとえば平滑化はSavitzky-Golay法を使いますが、scipyのsignalにsavgol_filter()関数があるのでそれを使います。ピーク検出はscipy.signalのfind_peaks()関数を使います。
- 同定に使う観察回折パターンはほぼ単相のものを想定しています。不純物相のピーク位置が分かっている場合はそのピークを除外して検索することが可能です。主相以外の検索は現状できません。
- XY_RAWの回折パターンはCu Ka1,2で測定したもので、特に処理することなく観察パターンと比較してますが、私のデータはCu Ka1なので、ちょっとだけ違いがありますが、検索では問題になりません。
- プログラムは上からボタンをクリックしながらやっていけばほぼ自動的に処理されます。
- 手持ちのデータ10個ほどチェックして問題なく候補上位にリストアップされました。
- ラマンと同じく鉱物名で検索してパターンを比較することもできます(一番下)。
- difとXY_RAWが完全に対応していないようなので、場合によってはパターンが見えないことが起こります。
pythonコードのダウンロード
参考のためにコードを公開してます(Mac上で作成)。クリックするとファイル自体が開いてしまうので(その場合、セーブしてください)、リンク上で右クリックでダウンロードするを選んでください。また実際に使うためにはpythonライブラリの追加(matplotlib, numpy,scipyなど)、ファイルのディレクトリをPCに合わせて変更するなどが必要になります。Mac以外でも動くはずですが、フォントサイズがおかしいなどの問題があります(もちろんコードをいじれば直せますが)。
- index_dif.txtを作るプログラム。もちろんRRUFFのdifデータが必要。ターミナルから実行する。download
- 上記でdifデータセットから作ったindex.txt。download
- 検索するプログラム。index_dif.txtとXY_RAWのデータが必要。これはTKinterを使ったGUIプログラムで、実行例で示しているものです。download
RRUFFのデータを使って鉱物同定などを行った場合はRRUFFを引用してください。https://www.rruff.net/about/に引用すべき論文が示されていてダウンロードできます。このプログラム自体については特に引用の必要はありません。
アリゾナクレーターの砂岩の粉末X線回折パターン(青)を検索したところ。石英が候補になっていて大体合う。余分なピークは共存するコーサイトによるもの。