非プログラマーのためのインフォマティクス入門。(仮)

非プログラマーがインフォマティクスについて勉強したことを記録します。主にKNIMEというソフトを使用しています。

非プログラマーのためのインフォマティクス入門。(仮)

【KNIME】ノード紹介:Parallel Chunk Start 〜多重影分身するってばよ〜

今回の記事は短めですが、活用できる場面にかなり高い確率で遭遇できると思います。

どんな場面かというと…

この処理、重いんですけど!

という時です。

 

そんな時は、Parallel Chunkを使いましょう!

 

Parallel Chunk Start (End)

 重たい処理の前後をParallel Chunk StartとEndで挟むことによって、その区間内の処理を分散させて並列処理をすることができます。

 今回は、以前に紹介したRenderer to Imageについて並列処理をしていこうと思います。

f:id:sumtat:20170822222833p:plain

Loopを使って、複数のファイルを読む方法について紹介した記事の例題で作成した、4335化合物のデータを持つテーブルの構造式部分を画像ファイル(png)に変換しようとする場面を想定してください。

Renderer to Imageノードを接続すれば目的は達成できるのですが、ちょっと処理に時間がかかるんです。私の場合は約100秒かかりました。

 

やっぱり、ちょっと重い作業を一人で抱え込むのはよくないですよね。そこで、分身を作って作業を分散させるのがParallel Chunkです。

続きを読む

【KNIME】ノード紹介:Group Loop Start 〜カテゴリごとに処理したい〜

 先日、KNIMEでloopを回すにはどうするか?という記事を書きました。割と興味を持っていただけたのか、たくさんブックマークもして頂きました。ありがとうございます。

 こんなニッチな内容でも読んでくださる方がいるというのは嬉しいですし、今後も頑張って書いてみよう!とモチベーションも上がりました。

 私も分からないことの方が多いです。もし、もっとお詳しい方がいらっしゃれば、是非コメントなどいただけると嬉しいです。 

sumtat.hatenablog.com

 

さてさて、上のリンク記事の例題は、複数のファイルを一気に読むというものでしたが、今回はその逆で

【データの内容を複数のファイルに書き出す】

という作業について紹介してみようと思います。

 例では、もう少しひねくれて"1つのエクセルファイルに複数のシートとして分割させる"という内容にしてみました。

f:id:sumtat:20170819002437p:plain

 キャプチャに掲げたように、以前の例で紹介したfile_0 ~ file_9をひとまとめにして出来上がったテーブルを、シート名を元のファイル名とした1つのエクセルファイルに書き出してみます。

 

全体像のキャプチャを載せます↓

f:id:sumtat:20170819003610p:plain

 基本的には赤枠の部分(青枠を除く)で目的は達成できますが、もう少しおまけ要素を盛り込みました。緑枠部分は過去記事を参照いただければと思います。

 

それでは順に紹介していきます。

 

続きを読む

【KNIME】小ネタ:** to variableノードを使わない変数の作り方

ここ何回かの記事で、変数を使った内容を書きました。

 

 個人的には、変数に関しては「これが基本かな?」という方法を書きましたが、他にも何かしらの値を変数に指定する方法があるので、2つ紹介します。

 

Workflow内のどこでも使えるglobalな変数

この場合は、変数は固定値になりますが。

まずはKNIME explorerの中から、指定のflowを選び右クリックメニューを出します。今回の例ではtest10という名前のflowです。メニューの中にWorkflow Variables...というのがあるので、選択します。

f:id:sumtat:20170816104622p:plain

次のような新たなウインドウが開くので、addを選びます。今回の例ではfix_valueという名前の変数を設定することにします。タイプは整数値、値は2として設定します。

入力が終わったらOKします。

 

f:id:sumtat:20170816104948p:plain

 これでおしまいです。このworkflow上では、どこでもfix_value(値は2)という変数が使えるようになっています。確認してみます。

f:id:sumtat:20170816105625p:plain

 以前にちょっと紹介したTable Creator使って、1から9が入っているテーブルを作りました。Tableというタブではなくて、Flow Variablesというタブを探して内容を確認すると確かにfix_valueという変数名で2という値を持っていることが分かります。

 

続きを読む

【超入門】Loopを回せ! 〜KNIMEを使って複数のファイルを一気に読んでみよう〜

 勝手に偉そうな命名をした"超入門シリーズ"ですが、これまでに

について紹介してきました。

さていよいよ今回はループの回し方について紹介したいと思います。

 

 この3つが揃えば、データサイエンティストやプログラミングガチ勢ではない、私のような専門外の人間でも、ある程度のルーチンワークをKNIMEにお願いすることができるようになります。

 

今回は例として、

【複数のファイルを一気に全部読み込む】という作業にtryしてみます。

読み込むファイルの形式はsdfというものにして説明しますが、エクセルでもcsvでも、大体流れは同じです。

 

さて、状況のイメージです。

f:id:sumtat:20170814211938p:plain

 ひとつのフォルダに読みたいファイルが全て入っているものとします。今回の場合は、testという名前のフォルダにfile_0.sdf ~ file_9.sdfという10個のファイルが格納されています*1。これを一気に読んでいこうと思います。

あんまりピンとこないでしょうか?

  • 10人から集めたファイルを一つにしたい
  • 毎月のレポートを10ヶ月分まとめて解析したい

などなど、色んな場面が考えられると思うので、皆様の状況によく合うものをイメージすると活用に繋がるのではないでしょうか?

 

それでは、KNIMEの操作について紹介します。

*1:ファイルの日付に注目して下さい。全部同じ時間ですね。今回の例題として使った10個のファイルは、もともと1つだったファイルをKNIMEを使って私が10分割したものです。これもloopを使った処理により作成しています。色々簡単にできます

続きを読む

【KNIME】小ネタ:変数受け渡しに使う"赤線"の活用法

前回の記事の最後に、こんなキャプチャを載せました。

f:id:sumtat:20170812235908p:plain

 ●ー●の繋がりは、基本的には変数の受け渡しを行うためのものです。上記の例だと、Table Row to Variableで日付データを変数として、Excel Writerに渡す部分だけあれば目的は達成できるはずなんですよね。解説にもそう書きました。

 では、最初のExcel ReaderとTime Generatorを赤線で繋ぐことに、何かadvantageがあるんでしょうか?

 

…無いのにわざわざ話題にしないですよね。はい、いいことあります。

結論を言うと、

workflowの動きをコントロールできる

ということです。

 

では例を挙げて紹介します。

続きを読む

【超入門】KNIMEで変数を使うには 〜今日の日付をエクセルのシート名にして書き出してみよう〜

 今回*1は変数*2の使い方について、基本的な部分を書いてみようと思います。あまり馴染みのない方もいらっしゃるかもしれませんが、

くらいに幅が広がると思います。

(さらにループ処理ができればルーラですかね。それはまた別の機会にしましょう)

 

題材として、

【作業(stock:noを取ってくる)をしている日付を、書き出すエクセルのシート名にする】

ということをしてみようと思います。 

f:id:sumtat:20170812221019p:plain

*1:記事の作成日は2017/08/12です

*2:変数について書かれている記事はweb上にたっぷりあるので、好みのものを探して読んでみるのが1番いいと思いますが、"状況により変わる数(データ)"のことです。

 例えば今回の記事では【変数="本日の日付グループご担当者様"】みたいな感じでしょうか?今日の時点では【"2017/08/12さん"が実際の担当者=実際の変数の値】みたいな感じです。明日の担当者は"2017/08/13さん"になるし、その後も変わっていく数ですよね。

*場合によっては変数といいながらも内容が変わらないこともあります。"変わることができる数"といったほうが適当かもしれません

続きを読む

【KNIME】ノード紹介:Nominal Value Row Filter 〜欲しいカテゴリのrowを抽出したい〜

お盆休みですね。まったりと更新してきます。

 

 さて、行(row)の抽出のために使うrow filterやrow splitterには結構色々な種類があります。これまでの記事では

なんかを紹介しました。個人的には上記のsplitter2つをよく使います。

今回はより一段とお手軽な設定で、欲しいカテゴリのデータを抽出するときに活用できそうなノードを紹介します。

 

例題としては、

f:id:sumtat:20170811222111p:plain上記のようなテーブルから、"犬と猿"のデータを取ってこようと思います。

続きを読む