最新のJEOL NMR装置に付属しているソフトウェアでは、システムがどのように使用されたかを管理者が評価することができます。JEOL Delta ver.5およびDelta ver.6ソフトウェアは、異なるユーザーに使用料を請求する必要がある場合でも、特定の測定を実行するためにどれだけの装置時間を費やしたかを評価したい場合でも、詳細な情報を提供し、装置時間を要約し、課金率が割り当て、各ユーザーにいくら請求するかを直接報告することができます。

 

しかし、すべてのプログラムがそのようなツールを提供しているわけではありません。例えば、20年以上前にリリースされたDelta ver.4は、いまだに多くの日本電子の旧システムで動作していますが、そのようなツールは提供されていません。しかし、console.log と呼ばれる、装置が何をしていたかのログは出力されます。このログには、装置の動作に関する詳細情報がたくさん含まれています。では、各測定でどれくらいの時間が費やされたかという情報を抽出するにはどうすればよいのでしょうか?そのためには、ログから関連する行を抽出するスクリプトを使えばよいです。Pythonは科学界で広く使われているスクリプト言語であり、JASONは必要に応じてPythonスクリプトを直接実行することができます。このようなスクリプトは、使い慣れたプログラミング言語で作成することができます。

 

Pythonスクリプトを実行するには、まずPythonをインストールし、Windowsのコマンドラインでpython scriptname.pyと入力します。scriptname.pyと呼ばれるスクリプトが、それを呼び出したフォルダと同じ場所にあれば、そのスクリプトが実行されます。フルパスを追加するだけで、別の場所にあるスクリプトや、別のフォルダにあるスクリプト内のファイルを簡単に呼び出すことができます。

 

最初にすべきことは、抽出したい情報を提供する行を見つけることです。この場合、サンプル測定の実行にかかった時間に興味があるので、サンプルがロードされていることを示す’Changer Loaded Sample’を含む行と、測定がオートメーションで実行され終わって、処理されていることを示す’Processed file’を含む行に注目します。(オートメーション以外で実行されている測定は含まれないことに注意) このアクションは以下の行で実行できます:

 

with open(“console.log”, ‘r’) as read_obj:
file = open(“streamed.txt”, “w”)
for line in read_obj:
if (‘Changer Loaded Sample’ in line) or (“Processed file” in line):
file.write(line)
file.close()

 

これで、これらの文字列を含むすべての行を含むstreamed.txtができました。しかし、サンプルはロードされたが、ロックに失敗したなどの何らかのエラーで測定が実行されなかったという状況があるかもしれないので、サンプルを2回連続してロードした行を削除することができます:

 

file = open(“streamed.txt”, “r”)
finalfile = file.readlines()
file.close()
file = open(“streamed_final.txt”, “w”)

for x in range(1, len(finalfile), 1):
if (‘Changer Loaded Sample’ in finalfile[x-1]) and (‘Changer Loaded Sample’ not in finalfile[x]):
file.write(finalfile[x-1].lstrip())

 

このループを開いている間に、複数の測定がある行を削除し、サンプルの最後に実行された測定を参照する行だけを残すこともできます:

if (‘Processed file’ in finalfile[x-1]) and (‘Changer Loaded Sample’ in finalfile[x]):
file.write(finalfile[x-1].lstrip())

 

ループの記述により、ループの外で最後のチェックが必要になります:

if (‘Processed file’ in finalfile[len(finalfile)-1]):
file.write(finalfile[x].lstrip())
file.close()

streamed_final.txtには、2行ごとに各サンプルの開始時刻と終了時刻が書かれています:

28-OCT-2022 14:41:09 : ecx400 : INFO : Changer Loaded Sample
28-OCT-2022 14:45:21 : Processed file AB_sample1_PROTON-1.jdf in 0.20563[s]

 

スクリプトを拡張して、サンプル時間を計算し、ユーザーが使用した時間(この場合、ファイル名のイニシャルで示される)に加算することもできます。あるいは、このようなファイルを表計算ソフトに読み込ませ(スペースで区切って開く)、時間計算が必要な行(2行に1回)を評価し、それを計算する式を使って、各サンプルで使用された時間を簡単に計算することもできます:

 

この場合、各サンプルで使用された時間を計算する列を1つ追加しました。これらの時間をすべて足すことで、装置がどれくらい使われているかという情報が得られます。もしこれをユーザー別に分けたいのであれば、ユーザー名をチェックする条件を追加して、いくつかの列を追加することができます。

今後のブログでは、JEOL Delta 5.0以降で提供されるツールを使用して、この種の情報を抽出する方法についてコメントします。

 

コードはこちら: https://github.com/adolfobotana/delta4logtimes