logo
更新日: 2017/07/16 14:39:33
日本語 | ENGLISH

ソフトウェア

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

XRD

rdfn.py

X線回折実験から得られる強度データに対し各種補正を行い、動径分布関数と散乱因子を導出するプログラム。pythonで書かれていて実行するためには、numpy,matplotlibが必要。強度補正は、(1)ローレンツ因子(2)偏光因子(3)コンプトン散乱補正を行った強度データに対し、1電子あたりの強度に規格化する。規格化する方法は、バックグラウンド強度Ibackを変化させながら(1)Krogh-Moe-Norman Method(2)高角度領域法で行い、(1)と(2)の方法で得られる規格化定数(αkおよびαh)が一致するバックグラウンド強度Ibackを探す。この時の規格化定数を使って、強度データの規格化を行い干渉性散乱因子を求め、さらに、散乱因子のフーリエ変換により動径分布関数を求める。得られた動径分布関数D(r)およびG(r)で近距離のゴーストピークを0にしてフーリエ逆変換を行い散乱因子さらにこれをフーリエ変換して干渉性散乱因子を求める。なお非晶質材料の構造解析については、第4版実験化学講座<10> 6章非晶質X線回折が詳しい。

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)

decay2distr.py

指数関数的な信号減衰を仮定した解析は、NMRパラメータ(緩和時間や拡散係数等)を決定する際によく使われます。NMRパラメータが複数存在したり連続分布する場合、信号減衰は、単一の指数関数になりません。このような信号減衰の解析は、複数のNMRパラメータもしくはそれらが連続分布しているとを仮定した解析が必要になります。このプログラムは、CONTIN法、Butler-Reeds-Dawson法、Non-negative least squares法により、NMRパラメータが離散的もしくは連続分布しているとを仮定した解析を一括して行い計算結果を比較するプログラムです。詳細はsoftware.files.decay2distr/readme.htmlをご覧ください。

osilap

二次元ラプラス逆変換を行います。科研費をもらって開発しました。C言語で作成しOpenBlasをリンクしており、複数のCPUを搭載しているPCでは並列で計算します。Venkataramananらの論文(http://dx.doi.org/10.1109/78.995059)と同等の処理を行いますが、スムージングパラメータを決定するアルゴリズムを複数選択できます。。NMR実験の応用の一つとして、Inversion RecoveryでT1エンコードしてCPMGでT2測定するようなデータをプログラムによって、二次元ラプラス逆変換を行い、T1-T2相関を得ることができます。下図は、セメント系材料のT1-T2データの二次元ラプラス逆変換で得たT1-T2相関スペクトル。
303x210(35014bytes) 303x210(35014bytes)

xls2ternary.py

3元系の相図をプロットするプログラムです。3成分でガラス化範囲を調べるために作成しました。3成分の組成とガラスと結晶の比x(x=0 ガラス, x=1 結晶, 0<x<1 ガラスと結晶の不混和物
を列で並べたデータから以下のような図を作成します。詳細はsoftware.files/xls2ternary/xls2ternary.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コマンドで好きなようにヘッダとフッタをいじれます。会議によっていろいろしきたりがあるでしょうが、プログラムを少し書き換えればどうとでも対応できるでしょう。