0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

nmrglueでjeolの.jdfファイルを読めるようにする

Last updated at Posted at 2025-10-14

Introduction

nmrglueはNMRデータを処理できるPythonモジュールで、たくさんのNMRを処理する際などに役立ちます。

各社のNMRのデータを読み込む関数がnmrglueに実装されていて、例えば日本でもよく見られるBrukerのファイルの読み込みは簡単にできます。

一方で、日本のNMRメーカーであるJEOLのデータ(jdfファイル)を読み込む関数は最新版には入っておらず、単にpip install nmrglueと打ってゲットできるバージョンではJEOLのファイルは読み込めません。

最近、githubにてJEOLのデータを読み込む関数が実装されたようなので、このバージョンをインストールする方法を備忘録として記します。

環境

Windows 11 Home
miniforge3 (conda 25.3.0)
Python 3.13.5
普段はmainという環境に色々入れています。

1. Gitをダウンロードする

ここからGitをダウンロードします。適当にYesを押していったらインストールされます。

Miniforge Promptでgit --versionと入力して以下のようなものが出たら勝ちです。

git version 2.51.0.windows.2

2. 仮想環境をアクティベート

Miniforge Promptを立ち上げ、nmrglueを入れたい仮想環境をアクティベートします。

conda activate main

3. pipインストール

こいつを実行します。

pip install git+https://github.com/jjhelmus/nmrglue.git@68f8ecd0dd3d8f5a1b6092a2c320e72f00bc6e42

最後の文字列はこのコミットの識別番号らしいです(Gitわからない)

色々出て最後にこういうのが出たらOKです。

...
Successfully built nmrglue
Installing collected packages: nmrglue
Successfully installed nmrglue-0.12.dev0

4. 利用例

nmrglue.jeol.read(data_dir)のような形で使えます。
make_uc関数はまだないっぽいのでng.fileio.fileiobase.unit_conversionで変換させています。

def read_nmr(filename):
    dic, fid = ng.jeol.read(filename)
    udic = ng.jeol.guess_udic(dic,fid)

    data = ng.process.proc_base.em(fid)
    data = ng.proc_base.zf_size(data, udic[0]['size']*2)    # zero fill to 65536 points
    
    uc = ng.fileio.fileiobase.unit_conversion(udic[0]['size']*2,
                                              udic[0]['complex'],
                                              udic[0]['sw'],
                                              udic[0]['obs'],
                                              udic[0]['car'])
    ppm = uc.ppm_scale()
    
    data = ng.proc_base.fft(data)               # Fourier transform
    data = ng.process.proc_autophase.autops(data, 'acme') # Phase correction
    data = ng.proc_base.di(data)                # discard the imaginaries
    data = ng.proc_base.rev(data)               # reverse the data

    return ppm, data

dic['parameters']に色々測定パラメータが入ってそうですね

Conclusion

  • JEOLのデータがpythonで読めてハッピー

編集履歴

2025/10/15 データ処理の下りが怪しかったので書き換えました

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?