t_kahi’s blog

KNIMEやCellProfiler、創薬に関する記事と,日々のメモです

KNIME WorkflowをGUI画面を介さずにコマンドプロンプトで実行する!(Windows)

こんばんは,@PKです.

これまでブログで紹介してきたように,KNIMEはGUIの画面上でプログラムを実行するものですが,作り込んだWorkflowを定期的に実行する場合に,毎回KNIMEを立ち上げてWorkflowを開いて実行するのは少しめんどくさいですよね.

今回はGUIの画面を介さずに,KNIME Workflowをコマンドプロンプトで実行する方法について紹介します.

KNIMEのCUI実行の概要

以下のイメージ図のように,GUIでKNIMEを動かす場合は,
KNIMEを立ち上げてWorkflowの実行を行い解析結果を出力します.
f:id:t_kahi:20190831132539p:plain  

一方で,CUIで動かす場合は,実行したいWorkflowを動かす.batファイルをクリックするだけで,Workflowが自動実行されて解析結果が出力されます.

GUI画面を介さない利点としては,

  • ルーチンの解析Workflowを実行するために(起動の遅い)KNIMEを立ち上げる必要がない
  • Windowsのタスクスケジューラと組み合わせてWorkflowの定期実行ができる

などがあります.

.batファイルとはWindowsのバッチファイル(処理を自動で実行してくれるファイル) のことです.
コマンドプロンプトで動くWindows10のバッチファイルの作成と実行 | サービス | プロエンジニア

KNIMEのバッチファイル実行については下記Q&Aでまとまっているのでこちらを参考にしました.
Is there any way to run KNIME in batch mode, i.e. only on command line and without the graphical user interface?

今回はWindowsでの自動実行について紹介しますが,もちろんMacLinuxでも実行できます!

Workflowの概要

今回バッチファイルで実行するWorkflowの中身を以下に示します.
f:id:t_kahi:20190831135909p:plain

Workflowの流れとしては,以下のとおりです.

  1. 検索ワードと検索数を記入したCSVファイルの読み込み
  2. PubMed APIを使って論文情報を取得する
  3. 検索結果をEXCELファイルに出力

PubMed APIを使って論文情報を取得する」部分は以下の記事で紹介しています.
【KNIME】〈後編〉QuickFormが便利!PubMed APIで論文の要旨を取得する - t_kahi’s blog

また,Workflowの中身については最後の動画で紹介しているので参考にして下さい.

CSVファイルには,以下のように検索ワードと検索数を記入しておきます.
f:id:t_kahi:20190831140637p:plain

Workflowを実行すると,以下のようにタイトルやアブストラクトを含んだExcelファイが出力されます.
f:id:t_kahi:20190831141125p:plain

このWorkflowをバッチファイルで実行していきます.

バッチファイルの作成

まずは.batファイルをメモ帳で作成します.

KNIMEをバッチファイルで動かす際に,Windowsの場合は以下のようなコマンドが例として示されています.

On a Windows system, you need to add two more options to enable system messages (by default any message to System.out is suppressed):

knime.exe -consoleLog -noexit -nosplash -application org.knime.product.KNIME_BATCH_APPLICATION
FAQ | KNIME

最初のknime.exeは自身のKNIME.exeが保存されている場所を指定します.
自分の場合は"C:\Program Files\KNIME\knime.exe"となります.

続いて"- ○○"で示されているオプションについて簡単に紹介します.

-nosplash
スプラッシュ画面を立ち上げない

-consoleLog
ログメッセージを含む新しいウィンドウを開く.Workflow実行終了後もウィンドウは開いたままになる

--launcher.suppressErrors
Workflow実行中に問題が発生してもエラーのメッセージボックスを表示しなくなる

-nosave
Workflow実行後にWorkflowを保存しない

-preferences=file.epf
KNIMEのpreferenceファイルの場所を指定する
*KNIMEのExtention nodeなどがWorkflowに含まれている場合は,preference fileを予めExportして,そのファイルの場所を指定する必要があります.
preferenceのexportはKNIME上でFile => Export Preference... で出力できます.

-reset
Workflowを実行する前にリセットする.

-workflowDir="workspace/Knime_project"
実行したいWorflowディレクトリを指定する.

上記を参考にしながら,以下のように記載したテキストファイルを.batファイルで保存しました.

 "C:\Program Files\KNIME\knime.exe" -nosplash -reset -nosave -consoleLog -application org.knime.product.KNIME_BATCH_APPLICATION -preferences="D:\KNIME\20190824_preference.epf" -workflowDir="C:\Users\xxx\knime-workspace\Workflow_sample\KNIME_bat" 

バッチファイルの実行

説明するまでも無いのですが…
作成したKNIME_pubmed.batをクリックすると,バッチファイルが実行されて指定したKNIME Workflowが動いて結果が出力されます.

f:id:t_kahi:20190831143838p:plain

実際にバッチファイルを実行している様子を動画でご紹介します.

動画では,

  • 前半:KNIME Workflowの中身について
  • 後半:バッチファイルでのKNIME Workflowの実行

を紹介しています.

youtu.be

最後に

今回はPubmed検索のバッチファイル実行をご紹介しましたが,実際には実験結果のルーチン解析などで非常に役に立つのではないでしょうか.

KNIMEのバッチファイル実行を覚えて,効率のよい研究生活を送ります…!