ソフトウェア

研究室で大窪が開発したプログラムを紹介しています。ほとんどがプロトタイプで頻繁に変更を加えているため、自由配布できませんが、ソフトウェアの利用に興味がある方は、お気軽に大窪(ohkubo.takahiro[at]faculty.chiba-u.jp)までご連絡下さい。なおオマケとして、学会やワークショップ等の事務処理を行うプログラムもあります。

XRD

rdfn.py

X線回折実験から得られる強度データに各種補正を行い、強度の規格化を行って二体分布関数と構造因子S(Q)を導出するプログラム。強度補正は、(1)ローレンツ因子(2)偏光因子(3)コンプトン散乱補正を行う。規格化は、バックグラウンド強度Ibackを変化させながら、(1)Krogh-Moe-Norman法と(2)高角度領域法で得られる規格化定数(αkとαh)が一致するIbackを探す。この規格化定数を使って、強度データの規格化を行い、干渉関数を求め、さらに、フーリエ変換により2体分布関数を求める。得られた2体分布関数で近距離のゴーストピークを0にしてフーリエ逆変換・フーリエ変換を行い、2対分布関数と構造因子をもとめる。なお、このような手続きによる規格化定数の決定は、大工研(現在の産総研)の梅咲先生が提案された方法です。

15年くらい前に作成してメンテナンスしていませんでしたが、問い合わせが何度かありましたのでgoogle colab上で動くようにして公開しました。
https://colab.research.google.com/drive/1BJUv8nLRHYeoW0VX8NPKFNgujbuY3Oed?usp=sharing

RMC用のツール

雑多なものですが、SPring-8で測定した結果を解析するために作成したものを整理しています。
https://amorphous.tf.chiba-u.jp/memo.files/rmc/rmc.html

NMR関係

日本電子のDeltaで生成されるjdfファイルをプロットしたり解析するプログラムです。大窪が、CUI人間なため全てコマンドラインから引数を渡してプログラムを起動するよう作成しています。不幸なことに、jdfファイルのフォーマットが不明なので、Delta付属の”convert”コマンド(ImageMagickと紛らわしい)を外部起動して、asciiに変換してデータを読む込みます。

mqplot.py

mqmasの結果をプロットするプログラム。傾き1の等方ケミカルシフト軸を引いて、指定範囲の最大ピーク位置から等方ケミカルシフト値と四極子結合定数を計算してくれて標準出力に吐き出す。指定範囲のプロジェクションスペクトルを求めて、Delta風の出力(?)が得られます。matplotlibを介して適当な画像ファイルフォーマットに保存できる。コンタープロットするライン数、刻みの間隔、プロットしない最小値を指定できます。なお最大値を1で規格化します。詳細はsoftware.files.ssnmr/readme.htmlをご覧ください。

617x617(56662bytes) 617x617(56662bytes) 617x617(56662bytes)

masplot.py

たくさん測定したMAS NMRのスペクトルをサクリとプロットしたいために作ったプログラム。引数で複数のjdfファイルを指定すると、asciiに変換した後、ファイル名でラベルをつけてスタックした図を作り、ピークトップの位置を標準出力に吐き出す。スタックする間隔、X軸の範囲、ラベルの位置、スペクトル毎に最大値で規格化するか否かを選べる。たとえば以下のようなグラフがコマンドライン1行で得られる。下図はスタック間隔を変えて6本のスペクトルをプロットした図。詳細はsoftware.files.ssnmr/readme.htmlをご覧ください。

517x717(71865bytes) 517x717(71865bytes) 517x717(71865bytes)

diffusion.py

めずらしく作ったGUIプログラム。wxpythonを使いたかってみたかったというのが本音。wxpythonとscipyがインストールされている必要がある。あまり考えずにつくったのでかなり汚いプログラム。Delta上では、拡散や緩和時間を評価するときに、強度としてスペクトルの1点だけしか拾ってフィッテングしない。そこで、指定範囲の面積で強度をカウントして拡散係数を評価するためのプログラム。S/Nが悪いときに有用。n個の指数フィッテングまたは対数をとる直線フィッテングの両方に対応。また不要な点をポチポチ選んで消してフィッテングしてくれる。下左図は緑色の領域で積分して2成分のexpでフィッテングした結果。下右図は対数とって直線フィッテングして拡散係数を評価した結果を示します。
1079x717(226529bytes) 1079x717(226529bytes)

osilap

指数関数的な信号減衰を仮定した解析は、NMRパラメータ(緩和時間や拡散係数等)を決定する際によく使われます。NMRパラメータが複数存在したり連続分布する場合、信号減衰は、単一の指数関数になりません。このような信号減衰の解析は、複数のNMRパラメータもしくはそれらが連続分布しているとを仮定した解析が必要になります。NMR実験の応用の一つとして、Inversion RecoveryでT1エンコードしてCPMGでT2測定するような2Dデータの二次元ラプラス逆変換を行い、下図のようなT1-T2相関を得ることができます。1D解析では、CONTIN法、Butler-Reeds-Dawson法、Non-negative least squares法により、NMRパラメータが離散的もしくは連続分布しているとを仮定した解析を一括して行い計算結果を比較できます。詳細はosilapのページをご覧ください。

303x210(35014bytes)303x210(35014bytes)

 

 

xls2ternary.py

3元系の相図をプロットするプログラムです。3成分でガラス化範囲を調べるために作成しました。3成分の組成とガラスと結晶の比x(x=0 ガラス, x=1 結晶, 0<x<1 ガラスと結晶の不混和物
を列で並べたデータから以下のような図を作成します。詳細はsoftware.files/xls2ternary/xls2ternary.htmlを参照ください。

スペクトル解析

NMRスペクトルをピーク分離したり、dead timeのシミュレーションを行うプ ログラム。詳細はsoftware.files/Mg-slag/Mg-slag.htmlを参照ください。

その他

addpagepdf.py

これまた学会関係のプログラムで配布する要旨(Proceedings)用に作成したもの。講演者から提出してもらった複数のpdfファイル(何ページでも良い)から、ページ番号を加えた1つのpdfファイルを作成する場合に使用します。まず空のディレクトリに数字から始まるpdfファイルを配置します。ファイル名はページの小さい方から順番にソートするようします。数字は連続でなくてもかまいません。ディレクトリにaddpagepdf.pyを置いてプログラムを走らせると、同じディレクトリにFINAL-date.pdfが生成されます。この時、ページ番号を加えたくないファイルには、ファイル名に_NN_を含むようにします。

わかりにくいので… 表紙用0001_NN_title.pdfと1番目要旨0005_contenta.pdf、…N番目要旨0010_contentb.pdfを準備してプログラムを実行するとページ番号を加えたFINAL-2012-08-25-16-04-40.pdfが生成されます。おまけでヘッダとフッタを少し修飾しています。プログラム内部でpdftkとpdflatexを呼び出しています。1ページ毎にページ番号とヘッダ、フッタの入ったpdfファイルをpdflatexで生成し、もとのページにはめ込む仕組みです。プログラム中のPIC_LEFTとPIC_RIGHTを書き換えれば、latexコマンドで好きなようにヘッダとフッタをいじれます。会議によっていろいろしきたりがあるでしょうが、プログラムを少し書き換えればどうとでも対応できるでしょう。