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

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

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

【KNIME】バッシュをはいて、ちょっと高く跳んでみようぜ!

みなさま、お久しぶりです。前回の更新から3ヶ月。新しい仕事を覚えたりするのに頭を使ったり、イヤイヤ期真っ最中の娘(2)・諸々活発になってきた息子(0)に手一杯で、なかなかブログ更新ができないですね。

まあ、お金儲けで書いてるわけじゃないですし、のんびりと続けていきます。

 

さて、今回はバッシュの話。

f:id:sumtat:20180924220056p:plain

靴の話ではないんです。"bash"を使って、もう少し色んなことをしてみませんか?というご紹介です。KNIMEからね! 

さて、bashって何?っていう方もいらっしゃると思います。正しい答えではないんですが、超噛み砕いた言い方をすれば、

「ガチ勢が使ってる黒窓*1を使うこと

くらいに思っておけばいいのでは?と思います。mac, linuxならterminal、windowsならコマンドプロンプト(最近はpowershell?)ですね。こんな感じのやつです↓

f:id:sumtat:20180924221516p:plain

あー、もう見るだけで無理。こういうのが嫌だからKNIMEみたいなフローツールを使ってるのに…。という方も多くいるのではないかと思います。

そう言わずに、ちょっとだけ使ってみてください!難しいやつは難しい(当たり前)だけど、簡単なやつはめっちゃ便利ですから! 

今回は、新しいフォルダでも作ってみましょう。

 例として、今回はblog_testという中身が空のフォルダを事前に用意しました。この場所でターミナル(コマンドプロンプト)を開くとこんな感じです。あ、今回はmacをつかってるので、その他os(特にwindows)の方はわかりにくくてごめんなさい。

f:id:sumtat:20180924223034p:plain

ターミナルの後ろには、普段の感じでフォルダを開いたところを合わせてキャプチャしてあります。今いる場所が、思ってる場所と違う場合には"cd"を使って場所を移動してくださいね。この辺まで細かく書いてもいいですが、まずは一回触ってみたほうがいいです。

で、新しいフォルダを作るにはmkdirという呪文を唱えるわけです。mkdirの後ろに作りたいフォルダの名前を入れて、enterすれば新しいフォルダができます。

f:id:sumtat:20180924224007p:plain

たったこれだけ。簡単でしょ?

で、これの何が美味しいの?

まて、焦るな。…これをKNIMEでやるのさ。たくさんフォルダを作っちゃうのさ。

 

 flowの全体

f:id:sumtat:20180924230801p:plain

意味は特にない作業ですが、LoopとBashノードを組み合わせてTableCreatorで入力しておいた名前(複数)のフォルダを量産するというものです。順に見ていきます。

f:id:sumtat:20180924231126p:plain

TableCreatorではdir_nameというカラム名でa~pまでの文字列を入力しておきました。これが後で作成するフォルダ名だと思ってください。

 

f:id:sumtat:20180924231312p:plain

string manipulationでは"mkdir "という文字列と、先ほどの"dir_name"という文字列をくっつけてます。出来上がりはこんな感じ↓

f:id:sumtat:20180924231531p:plain

これを1行ずつLoopで回します。

 

bash

ここで今回のポイント、bashノードの登場です。

f:id:sumtat:20180924232125p:plain

f:id:sumtat:20180924232156p:plain

おおきめのキャプチャにしておきました。上段は実行したいコマンドを入力する欄、下段はコマンドを実行する場所を入力する欄です。こんな感じの設定で実行すると、結果はこうなります↓

f:id:sumtat:20180924232432p:plain

たっぷりできましたね!

こんな感じで、KNIME上からコマンドをターミナルへ投げることができるんです!

<注意>

windowsを使う場合はbashノードのbash commandのところは

cmd /cというおまけの呪文を最初に付け足してください。 今回の例だと"cmd /c mkdir a"みたいな感じです。

 

今回の例のTableCreatorに含まれる内容を、自分が解析してきたテーブルの中身から持ってくれば、種々のデータを保存する際に綺麗にまとめる手助けになるでしょうし、作業場所も変数でいじれるので、融通が利きます。

 

また他のアプリケーションへ処理を投げることも可能です*2

例えば

  • mecabなどのCUIアプリにデータを投げる
  • Local BLASTをKNIMEから動かす
  • anacondaで構築した環境を立ち上げて、.pyを実行する(source activate env && python hoge.py -option みたいな)
  • dockerコンテナの立ち上げ・処理をコマンド化して投げる(docker exec -i container_name /bin/bash -c "cd /home && ls" みたいな)

なんか流行り?波?がありそうな例をあげてみたつもりなんですが、こんなのは適当なことを例示しているだけです。

もっともっと、いろーんな使い方・素敵な使い方があると思います。

自分でプログラミングできたり、すらすらとシェルが書ける方にはあんまり使い道がないかもしれませんが、こんなのをきっかけにして、ちょっと新しい世界に足を突っ込んでみるのはいかがでしょうか?

 

いつもより、ちょっと説明が少なめですが、読者の皆様のお役に立てば幸いです。

それではまた次回!

 

 

*1:デザインのカスタマイズによっては黒ではないこともあります。

*2:正直、KNMEだけでは処理できないような内容や、他のアプリケーションに投げた方が便利な状況も出てくるはずです。