JASONの機能を拡張する (その1) :外部コマンド処理項目の使い方

JASONには、NMRデータを処理・解析するための強力なツールが揃っていますが、時にはJASONにはないような処理を行いたいこともあるでしょう。このブログ記事シリーズでは、「外部コマンド」という処理機能の使い方を紹介します。これにより、NMRデータを外部プログラムに渡し、何らかの処理を行わせ、その結果を再度JASONに返すようなことを実行することが出来ます。 この機能はどのような方に適しているでしょうか?例えば、Non-uniformサンプリング再構成法、新しい窓関数、信号処理技術など、新しい処理技術を開発している研究者は、このような機能が不可欠であることに気づくでしょう。実際、利用者はNMRデータの処理過程のどの時点でも、また何回でも、外部プログラムによる処理のためにデータを送ることが出来るので完全に自分のデータをコントロールすることが出来ます。 この機能はどのように動作するのでしょうか? JASONは、HDF5というファイル形式でデータを保存します。この形式は、Python、Matlab、R、Mathematicaなどを含む主要なプログラミング言語のHDF5ライブラリにより、さまざまなツールで読むことが出来ます。つまりあなたの好みの言語を外部スクリプトとして使うことが出来るのです! データは「外部コマンド」の引数として指定されます。JASONはそれをスリム化されたHDFファイルとして生成し、外部処理に渡します。外部計算が完了すると、JASONは出力を読み返し、処理は処理リストの次の項目に進みます。 このブログでは、簡単なpythonスクリプトを使った外部コマンド処理の使い方を紹介します。ここに紹介した例は、単純にスペクトルを反転させるだけのものですが、もちろん、もっと高度な計算も可能です。限界は、もしあるとすれば、あなたの想像の中だけに存在するものです! これから説明するpythonスクリプトを以下に示します。Pythonは、h5pyライブラリを使用してHDF5ファイルにアクセスすることができます。h5pyライブラリは、Pythonでの科学計算によく使用されるNumPy配列としてデータを返します。   スクリプトは、python標準ライブラリからh5pyとNumPy、sysをインポートする3つのステートメントから始まります。JASONから送られたHDF5ファイルは、h5py.File()関数を使ってファイルハンドルとして開かれます。セキュリティ上の理由から、NMRデータはJASONからランダムなファイル名で送信されるため、sys.argvリストを通して、これをpythonスクリプトの入力引数の一つとして取り込みます。 ファイルを開くと、その中のNMRデータはpythonのライブラリ構文を使ってアクセスできます。HDF5ファイルはデータを格納するためにパスのような階層構造を使用し、これらのパスはライブラリのキーとして使用されます。例えば、NMRスペクトルの実数部は/JasonDocument/DataPoints/0にあり、/JasonDocument/DataPoints/1は虚数部にあります。 [...]