
(概要) 当研究室および、いくつかのNMR研究グループで使われています。マルチスレッドな物性測定用オープンソースプログラム。 特にODMR/NMR専用という訳ではなく汎用です。 対応している測定器の組み合わせならばプログラム/スクリプトを書く必要がありません。本体はC++ですが、測定をPython/Rubyスクリプトで自動化できるのが特徴。Python及びJupyter notebook対応はオプションです。マルチプラットフォーム(Mac OS X/Windows)。(Linux版は現在メンテしていません。)
Features
一般
Python(+Jupyter notebook)/Rubyスクリプトによりほぼすべて制御可能
Pythonでもドライバ作製可能(部分対応中)
装置からの取得データを全記録/後日再解析可能
マルチスレッド(同期にソフトウェアトランザクショナルメモリ使用)
OpenGLによる高速なグラフ描画
スカラ量(温度、電圧等)の組み合わせは任意にグラフ化可能
ある程度の設定は全保存/読み込みが可能
NMR部分
緩和曲線(T1, T2, Tst.e.)リアルタイムフィット、Inverse Laplace Transformation可能
フーリエステップサムによる磁場/周波数スイープスペクトル測定
緩和・スペクトル測定において測定後でも窓関数(畳み込み)選択可能
ソースコード/バイナリ/マニュアル
- ソースコード全体のダウンロードはこちら:kame-7.2.4.zip (1.7MB, 2025/4/2)。
- インストール法と使用法をマニュアル(ver 7用)(2025/1/19更新))に書きました。English版(途中)。
- ソースzip等はこちら。 GitレポジトリはこちらGitHub。
- Windows用の64bit版バイナリ:7.2.4。 実行するには先にQtの6.8以降(MinGW64付)をQt5 compatibility付きでインストールして下さい。その後kame.batまたはkame-msyspython.batから起動して下さい。 複数バージョンのQtがあって起動に失敗する場合は、qtdir.txtの中で6.8以上の行のみを残して削除するか、パスを変更して下さい。
Windows用の32bit版バイナリ:5.8.5, 5.5.2。 実行するには先にQtの5.11以降(MinGW32付)をインストールして下さい。 その後kame.batから起動して下さい。 複数バージョンのQtがあって起動に失敗する場合は、qtdir.txtの中で5.11の行のみを残して削除するか、パスを変更して下さい。
ライセンスはGPL(GNU public license) 2 or laterです。
最近の変更点抜粋
Wed Apr 2 2025 (7.2.4)
– 7.2.3の安定性を改善、
Tue Jan 28 2025 (7.2.3)
– 7.2.2のWin版がクラッシュするのを修正
Sat Jan 25 2025 (7.2.2)
– メニュー等の使い勝手改善
Mon Jan 21 2025 (7.2.1)
– jupyter notebookが実用的に使えるようになった
Sat Jan 11 2025 (7.1.5)
– Pythonによるドライバとpdb対応のバグ修正
Wed Jan 2 2025 (7.1.3)
– PythonによるドライバとMath Tool作製にテスト対応
– Ruby 3.3までに対応。
– Win版のビルドの際に外部ライブラリのコンパイルが不要になった(msys2のものでOK)
Sat Nov 23 2024 (7.0.2)
– Pythonスクリプト制御に対応
– 7.0.0, 7.0.1は不良
Sun Oct 6 2024 (6.1.0)
– CopperMountainの通信エラー修正
– 計算ツールの実用性アップ
– フィルタホイール関係のサポート
– CVD2B/5B
Tue Dec 19 2023 (6.0.0)
– Windows 64bit版のコンパイルに対応
– Windows版でメッセージウィンドウが表示されないバグの修正
– グラフでいくつかの計算ツールを使えるようにした
– Firewireデジタルカメラ(OSX)
Sun Jun 25 2023 (5.8.5)
– LXI 3390任意波形発生器
– LibreVNAネットワークアナライザ
– AutoLCTuner: 機能追加
Fri Dec 9 2022 (5.8.3)
– 5.8.2でNI DAQパルサーに不具合が出たのを修正
Sun Nov 13 2022 (5.8.2)
– USB機器初期化の改善、ThamwayUSB機器のM1 macでの動作確認
– FlexARの停止に関するバグ修正
Sun Feb 13 2022 (5.5.1)
– Mac apple siliconでのarm64/Universal Binaryビルドに対応。
– グラフ:右ボタンのクリックで3D視点をリセットできるようにした。
– Thamway: libusbの初期化のバグ修正
Sun Dec 19 2020 (5.3.2)
– NMRT1のFlatten GeneratorがP1Maxに達しないのを修正
Sun Dec 1 2019 (5.3)
– NMRT1: Tikhonov正則化による密度マッピング
Fri Sep 6 2019 (5.2.2)
– NMRT1: CPMGでのT2測定
– NMREcho: 電圧リミットの警告、バックグラウンド警告のバグ訂正
– Thamway PROTで機器側のステータスをリアルタイムに反映
– Thamway DSO(USB3)のトリガ位置ずれ対策
– Mac版Qt OpenGLのメモリーリーク対策
Wed Jun 27 2018 (5.1.4)
– Thamway PROT3リアルタイム取り込みの改善
Thu Jun 22 2017 (5.0)
– Rubyスクリプトの実行時に、スリープ時間の表示、ログファイルの作成を追加
– PPMSで遅い磁場掃引を追加
Thu Jun 23 2016 (4.1.13-1)
– Quantum Design PPMSの温度・磁場・ポジション制御ドライバ及びNMR磁場掃引での対応
– Modbus RTUのエラー率低減
Sun Feb 7 2016 (4.1.11-1)
– ウェーブ形式データの保存がタイミングによっては複数回掃き出されるバグの修正
Mon May 18 2015 (4.1.0-1)
– NMR I=9/2緩和関数の間違いを修正
– Cryogenic SMSのver7に対する対策
– Windows版でのシリアルポートの動作とDAQmxドライバ、Windowの振る舞いに対する修正
全てのChangeLog
対応デバイス
()内は対応している通信手段。”(GPIB)”の場合は測定器のシリアルポートは未テスト・未調整。
DCソース
YOKOGAWA 7651 DC source (GPIB)
ADVANTEST TR6144/R6142/R6144 DC source (GPIB)
(untested) Optotune ICC4C2000 Current Source (Serialport)
MICROTASK/Leiden Triple Current Source (GPIB)
デジタルマルチメータ(DMM)
Keithley 2000/2001 DMM (GPIB)
HP/Agilent 34420A nanovolt meter (GPIB)
HP/Agilent 3458A/3478A DMM (GPIB)
Keithley 6482 picoammeter (GPIB)
SANWA PC500/510/520M/PC5000 DMM (IR SerialPort)
ファンクションジェネレータ
NF WAVE-FACTORY (GPIB)
液面計
Oxford ILM Helium levelmeter (GPIB, SerialPort)
Cryomagnetics LM-500 levelmeter (GPIB)
ロックインアンプ等
Stanford Resrearch SR830 lock-in amplifier (GPIB)
NF LI5640 lock-in amplifier (GPIB)
Andeen-Hagerling 2500A capacitance bridge (GPIB)
Signal Recovery lock-in amplifier 7265 (GPIB)
超伝導磁石用電源
Oxford PS/IPS-120 magnet power supply (GPIB, SerialPort)
Cryogenic SMS magnet power supply (USB serial port)
ネットワークアナライザ
HP/Agilent 8711/8712/8713/8714 network analyzer (GPIB)
Agilent E5061/E5062 network analyzer (GPIB)
Copper Mountain TR1300/1,5048,4530 Network Analyzer (TCP/IP)
DG8SAQ VNWA3E network analyzer (TCP/IP)
LibreVNA network analyzer (TCP/IP)
Thamway T300-1049A Impedance Analyzer (SerialPort)
標準信号発生器
KENWOOD SG7130/SG7200 signal generator (GPIB)
HP/Agilent 8643/8644/8648/8664/8665 signal generator (GPIB)
HP/Agilent E44*B signal generator (GPIB)
DSTech. DPL-3.2XGF (SerialPort)
Rhode-Schwartz SML-01/02/03/SMV-03 signal generator (GPIB, SerialPort)
Thamway NMR PROT built-in signal generator (USB,TCP/IP)
任意波形発生器
LXI 3390 (GPIB)
温度コントローラ
Cryocon M32/M62 temperature controller (GPIB)
LakeShore 340 temperature controller (GPIB)
LakeShore 350 temperature controller (GPIB)
LakeShore 370 temperature controller (GPIB)
Picowatt AVS-47 bridge (GPIB)
Oxford ITC-503 temperature controller (GPIB, SerialPort)
Neocera LTC-21 temperature controller (GPIB)
Keithley 2700 DMM w/ 7700 scanner as temperature controller (GPIB)
OMRON E5*C controller via modbus (SerialPort)
カウンター
Mutoh NPS counter (SerialPort)
流量制御弁
Fujikin FCST1000 Series Mass Flow Controllers (Serial Port 38400bps)
モーター制御
Sigma optics PAMC104 piezo motor driver (Serial Port)
OrientalMotor CVD2B/5B motor controller (Serial Port Modbus RTU 115200bps)
OrientalMotor FLEX CRK motor controller (Serial Port Modbus RTU 115200bps)
OrientalMotor FLEX AR/DG2 motor controller (Serial Port Modbus RTU 115200bps)
ターボ分子ポンプ制御
Pfeiffer Turbo molecular pump controller TC110 (Serial Port)
圧力ゲージ
Pfeiffer TPG361/362 Gauge Controller (Serial Port)
デジタルストレージオシロスコープ(DSO)
Tektronix DSO (GPIB)
Lecroy/Iwatsu DSO (GPIB)
DSO on NI-DAQ M,S series (NI-DAQmx)
Thamway A/D conversion DV14U25 (USB)
Digilent WaveForms AIN DSO (USB)
PPMS
Quantum Design PPMS low-level interface (GPIB, Serial Port 9600bps)
NMR用パルサー
NMR pulser on NI-DAQ M series (NI-DAQmx)
NMR handmade pulser on H8 (SerialPort)
NMR handmade pulser on SH2(SerialPort)
NMR pulser Thamway N210-1026 PG (USB,GPIB,TCP/IP)
光スペクトロメータ
OceanOptics/Seabreeze HR2000+/4000, USB4000 (USB)
デジタルカメラ
Generic IIDC Camera (IEEE1394)
Euresys Camera by eGrabber (coaxlink, grablink)
解析/制御ドライバ
電流反転抵抗測定
2軸回転制御
Gコード3軸制御
NMR FID/echo analyzer
NMR field-swept spectrum measurement
NMR frequency-swept spectrum measurement
NMR relaxation(T1/T2/Tst.e.) measurement
NMR LC circuit autotuner
実行環境
プログラムの実行には一般的なQt アプリケーションとしての他に以下の外部ライブラリが必要です。詳しくはマニュアルを参照。
- Python, numpy, pybind11 (測定の自動化等に使います。)
- IPython, Jupyter-notebook/qtconsole (オプション)
- Ruby (測定の自動化と設定の保存/読み込みに使います。)
- Eigen (ver.3系列。線形代数ライブラリ。)
- GSL (GNU Scientific Library。非線形フィットと補完。いずれscipy+pybind11に置き換えます。)
- FFTW (ver.3系列。FFTライブラリ。いずれ…同様。)
- linux-gpib (LinuxでGPIBを使用する場合に必要。)
もしくはNational Instruments NI-488.2ドライバ。
Apple siliconでGPIBを使用する場合はPrologixのGPIB-USBコンバーターをシリアルポート経由で使用してください。 - zlib (Rawデータの圧縮用)
Mac版のコンパイル時には上記に加え以下が必要です。
- libtool-ltdl (GNU libtool dynamic module loader。起動時にモジュールを読み込む為に必要。)
- libdc1394 (Macのみ。Firewireデジタルカメラ接続カメラを使用する場合。)
- Euresys egrabber (Macのみ。grablink/coaxlink接続カメラを使用する場合。)
技術的特徴
リアルタイム性を確保するため、ロックフリー(lock-free)アルゴリズムに凝った作りになっています。
- スレッド構成は測定スレッド+GUI(メイン)スレッド+Pythonスレッド+Rubyスレッド+Rawデータ読み込みスレッド。 GUIスレッドには関数オブジェクトとスナップショットをイベントとして渡してプールした後に遅延実行している。IPythonはembed_kernelによる埋め込みカーネルで、Jupyter notebook等のクライアントは別プロセス。
- グラフはOpen GLで描画。高速に半透明で描画できる。描画が追いつかない場合には古いイベントを捨てている。
- ドライバは測定データを生成/保持する為のXPrimaryDriverを 継承するクラスと、解析専門のXSecondaryDriver 由来クラスの2種類。 測定データは一度保存に適した形(rawData) にした後で、analyzeRaw関数内で処理される。XSecondaryDriverが 複数のドライバからのデータを処理する場合には、rawDataに 付けられたタイムスタンプをもとにcheckDependency関数で時間依存関係をチェックする。pybind11によるPythonバインディングでは、動的なドライバの再定義も可能。
- 内部のオブジェクトはツリー状に管理。Rubyスクリプトからのアクセスや測定の設定の読み込み/保存は全てオブジェクトツリーに対して行う。 Pythonバインディングでは、オブジェクトツリーへのアクセスの他、STMと大部分のpublic関数が利用できる。
- オブジェクトベースのソフトウェアトランザクショナルメモリ(STM)により、オブジェクトツリーとデータをアクセスする。 ツリーへのオブジェクトの追加・削除はトランザクション中で行える。巡回参照でなければハードリンクも可能になっている。測定装置との通信ではSTMが使えないのでMutexによる排他制御を使っている。
その他
メッセージ(gettextの翻訳リソース)は関西弁やで。