EXPOでRietveld

OUOperatingGrant.png

EXPOでRietveld解析のみ行う


EXPOについて

(2022/03/20 EXPOはいつの間にか多相対応になってたので、それに合わせて以下内容を更新してます)
EXPOは粉末回折X線データから未知結晶構造を解く直接法のプログラムだが、解いた構造のRietveld法による構造精密化もできる。EXPOの使い方については[EXPO2013の使用方法]もご覧ください。学生実習で使う予定もあって、2020年末年始に(沢山降った雪と格闘する合間に)EXPOとGSAS-IIで色々と遊んでみた。EXPOは結晶構造を解くために使ったことはあるが、Rietveld法には普段RIETAN-FPを使うので、これまで実際にEXPOのRietveld法部分を使ったことはなかったが、今回初めて使ってみた。

 最初は直接法で構造を求めて、そこからRietveld法で構造をrefineしていた。これが普通の解析のフロー。しかし、遊んでいるうちに、cifファイルを最初に読んでおけば、構造を求めるプロセス(Le Bail, indexing, extract, phase ...)は全てパスして、直ちにRietveld法を使うことができることが分かった。これはEXPOとしては変則的な(不本意な?)使い方ではあるが、非常に簡単にRietveld法を試すことができる。Rietveld法のquickなデモに使える。さらに最近、多相も扱えるようになったので、本格的なRietveld法としても実用的であると感じた。ただ、Bragg-Brentano型回折計しかサポートされてないと思う。角度分散の中性子回折には対応している。GSAS-IIと比較したくなるが、私の個人的な感想ではEXPOの方が直感的に使えるところが良いと思った。多相の扱いはまだGUI化されていないが、それでもGSAS-IIよりは遥に使い方が簡単である。ただ、多様な回折データには対応してないなど万能ではない。GSAS-IIについては[GSAS-IIの使用方法]に書いた。

EXPO_splash.png

EXPOでRietveld法のみ実施する際の手順(単相の場合)

  1. EXPO起動。Newで、粉末回折データを読み込む。実例としてMg2SiO4の測定データがダウンロードできる。組成を要求されるが、これは適当で良い(直接法の時は正しい情報が必要)。波長の選択など。必要なら解析で使用する角度範囲を変える。Ka2が出ている場合はKa2をチェック(forsteriteの例ではチェックしない)。ダイアログでGoをクリック。データを読み込み、回折パターンが表示される。通常ならここからバックグラウンド推定、ピークサーチ、個別ピークフィッティング、指数付けに進むが、今回は何もしない。
  2. RefineメニューからRietveldを選択。Missing Informationのダイアログが出るが、OKを押す。そこでファイル選択ダイアログが出るので、回折データに対応する結晶構造のcifファイルを選ぶ。構造が別ウィンドウに表示される。実例としてMg2SiO4のcifがダウンロードできる。
  3. RefineメニューからRietveldを選択。出てきたウインドウでAutomatic Proceduresの2つをチェック。Le Bail法もここからできる(その場合は構造のrefineはできない)。Refineボタンを押すと構造精密化(プロファイル等の精密化も)が始まる。Rwpが十分下がったらおしまい。結晶構造の個々のパラメータやプロファイル関数をrefineするかどうかはチェックボックスで選択できる。パラメータ間の制約も簡単につけられる(GSAS-IIの制約の付け方よりは遥に簡単)。
    EXPO-Rietveld.png
  4. 詳しい結果が欲しい場合はPrint Optionsを使う。格子定数の誤差が出力に見つけられなかったが、出力されたcifには入っている。もちろんrefineしてない場合は誤差はついてない。
  5. そうやって得られた回折パターン等を右に示す。図の右下はRwpの改善の様子。この例(forsterite)だとプログラムの起動からたった1分で解析が終わった…

    Rpで比べると(Rwpはweightの取り方に依存すると思うので)、同じデータでRIETAN-FPを使うとEXPOの結果よりもう少しRpが下がった。GSAS-IIはRpが何故か表示されないので比較しづらいが、Rwpや残差パターンから見て明らかにEXPOより悪い。GSAS-IIはまだ初心者なので、十分使いこなせてないためかもしれないが…GSAS-IIは使えるピーク関数は1つのみで、Thompsonら(1987)のpsudo-Voigtに、Finger et al.(1994)の軸分散ブロード化を使っている。非対称性はFinger et al.(1994)の方法を単純化して使っているようだ。ちなみにFinger et al.(1994)の第3著者のJephcoatさんは数年前にこちらの研究所の教授だった。

多相のRietveld

 最近のバージョンでは多相も解析できるようになっているが、マニュアルには方法が書かれていないようである(2022/03/20時点)。また、GUIに対応してないようである。なので、上記と同じように1相でまずexpファイルを作っておく。そしてそのexpファイルをEdit機能か、エディターで直接修正することで多相に対応させることができる。%crystal directiveで相を追加できるようにしたようである。ただ%crystalはマニュアルには記載がない…最近出たEXPOの論文に少しそれについて書かれていたので、それを参考に試してみて、計算できるようになった。実例のexpファイルを以下に示す。

%structure sandstone
%job structure sandstone
%init
%data
pattern /Users/masami/sandstone.xy
wave 1.540560

%crystal
name quartz
file quartz.cif

%crystal
name coesite
file coesite.cif

%crystal
name stishovite
file stishovite.cif

%rietveld

%continue
EXPO-multiphase.png

 これはアリゾナの隕石孔の砂岩試料の粉末X線回折パターンで、quartz > coesite >> stishoviteの3相含む例であり、sandstone.xyが回折データファイル。波長はCu Ka1。%crystalで相を定義しており、そのcifファイル名を与えている。%crystalを繰り返せば、多相のRietveldが可能となる。3相のcifファイルは、quartzcoesitestishovite。試しに実施した結果のパターンを示す。特に何もしなくても順調に収束した。こちらも出力ファイルに細かい結果があるので、そちらに例えば定量分析結果などが出ている。この例の場合はRIETAN-FPでの計算も行っているが(Plot2のマクロ利用)、ほぼ同じ定量分析結果が得られた。
 なお、このページではRietveld法だけについて触れているが、現在結晶構造を解く際にも多相対応となっている。構造未知相以外の相の構造が知られているか、最低格子定数が決まっていることが必要である。ただ、私は多相データで試してみたが、なかなかうまくいかない。まずindexingで引っかかる。

多相のRietveld解析をより簡単にするPythonスクリプト

 上記のやり方では.expファイルを作る部分が面倒なので、多相Rietveldを行うexpファイルを自動作成するPythonのスクリプトを作った。もちろん単相にも使える。ついでにウチの場合はリガクの装置なので、測定データが入っているrasファイルをまずEXPOが読めるxy形式に直すことも行う。rasファイルはコーディングがcp932のようなので、読み込む時に指定してやる必要があった。実行の時には以下のようにrasファイル名、cifファイル名(複数可)を引数として与えてやる。当然、ras, cifファイルが存在しないといけない。実行するとxy, expファイルが作成される。

> ./ras2exp.py test.ras test1.cif test2.cif test3.cif ...  

 出来たexpファイルをEXPOからファイルメニューの"Load and Go"で選択する。GoボタンをクリックするとすぐRietveld解析の画面になるので、Automatic refinement profileをチェックして、必要に応じてその他も設定して、Refineボタンをクリックすると計算が始まる。普通は数分以内に終了。fittingが悪い場合はrefineするパラメータを色々変えてみる。定量分析結果を見たい場合はInfoメニューからView Output fileをクリック。一番最後に出ている。
 参考に作成したPythonプログラムras2exp.pyを置いておきます。ただ、ウチの環境(リガク、Mac)で作ったもので、エラー等の処理もちゃんとしてません。テストも1つのデータセットでしか行なってません。波長等も必要に応じて変更する必要があります(現在はCu Ka1単色での指定)。Ka2の補正が必要ならalphaが波長指定の次行に必要。


Last-modified: 2022-05-29 (日) 10:07:15