【KNIME】メモリが足りない…。ちょっと待って!がっかりするその前に!
みなさん、お元気ですか。
私は、ちょっと用事があって、昨日は久しぶりに都内に出かけました。田舎暮らしが長くなってきたせいなのか、単純に頭が老化しているのかはわかりませんが、
「都心の景観は、情報量が多い!」と感じました。
学生の頃は、都内で暮らしていました。そんなこと考えたことなかったんですよね。田舎からの"おのぼりさん"だったわけですが、あんまりこういう感覚を持ったことはなかったんですよね。やっぱり年のせいですかね。
さて先日、KNIMEフロー内でのエラー回避について、1例をあげて記事を書きました。
記事を投稿した後、その他に予定外の何かでフローが止まってがっかりする場面ってないかなーと考えていたら、1つ紹介しておくと良さそうな事柄がありました。それはKNIMEのメモリ不足問題です。
そうなんです。KNIMEは結構メモリを食うんです!
なので、重めの処理・loopの多い処理などをしていると、「おいおい旦那、もうメモリがいっぱいだぜ。悪いんだけど、もう働けねぇや」と言ってKNIMEが止まっちゃうことがあります。
その対応として
- ちょっとメモリ不足になりにくくする!
- メモリ不足になる前に気がつけるようにする!
の2つについて紹介します。
続きを読む
【KNIME】ノード紹介:Try, Catch Errors 〜折角流した処理がエラーで止まるのを回避する〜
みなさん、いかがお過ごしですか?
はてなブログには、どのくらいのページビューがあったのかを見ることができる機能があります。なんだか最近、ちょっとずつアクセスが増えているようです。
嬉しいので、もっと色々と更新したいのですが、今年度から担当になった新しい業務を覚えるのが大変で、なかなか記事を書けずにいます。*1
ちょっとずつですが書き続けますので、気長にお付き合いいただければ幸いです。
さて、今回はKNIMEのお話です。
ちょっと使い方に慣れて色々なことをフロー化していくと、「よーし、今日はこのフローを流して帰ろう!明日には終わってるだろから、朝になったら結果を見よう!」みたいなことがあると思います。
で、朝になってみたら
「うわー、途中でError吐いて、とまっとるやんけ」
みたいな、残念なことになってる…。
あるあるですよね!
なるべく堅牢なフローにするにはエラー対策は結構重要だと思います。そこで、今回はエラー回避に役立つTryとCatch Errorノードを紹介したいと思います。*2
*1:とはいうものの、今回のように更新していると、そんな暇があったら仕事を身につけろ・勉強しろ!などと叱咤激励を受けることもありそうですがね。別に仕事中にブログ書いてるわけじゃないんで許してくださいね。
*2:単純な例題が何かないかなーと考えても、なかなか出てこなくて記事を書くのに時間がかかりました。エラーを吐くケースを想像しようとしても中々出てこなかったりするので、実際の運用の際には、どこにエラーの可能性が潜んでいるかをよーく考えないといけないですね。
第7回ケモインフォマティクス若手の会に行ってきました!
みなさん、こんにちは。
今回はKNIMEや、その他ツールの話はないです。ただの雑記。
先週のことですが、第7回ケモインフォマティクス若手の会に参加してきました!
私は若手とはお世辞にも言えない年齢ですが、"超ど素人" = "若手"と勝手に解釈して参加することにしてみました!
共感できるタイプ・できないタイプがいると思いますが、まあそれは不安でしたよ。残念ながら私は、あんまりおしゃべりが上手な方ではないですし、若さもない・ケモインフォの知識もない…。社内でも、お前みたいなおっさんが未経験分野の担当になって何の役に立つ?な空気を感じることもあります。確かに一理あると思います。
でも、だからこそ、ビビらずに外の世界に触れて、少しでもレベルアップしなくてはと思い参加を決めたわけです。
行って良かった!とても良い会だった!
実に語彙不足な感想ですが、とても良い会だと思いました。お偉方・学会の自己満足のために、高圧的な感じで催されるものではなく、運営スタッフの方々が、地道に温めてきた感じの伝わる会でした。またDeNAさんのサポートも大きですね。
実際のところ、なんだかよくわからない部分もありましたが、初学者でもわかるように噛み砕いた説明・講演を皆様が心がけてくださっていたり、また素人質問も遠慮なくできる雰囲気で、大変有り難かったです。*1
懇親会では、いろんな方とお話ししたり、名刺の交換等させて頂きました。有難うございました。またこういう機会があれば、積極的に参加していきたいと思わせてくれる会でした!
*1:素人質問というと、"相手をボコボコにする前置き"みたいな感じでとらえられることがあるようですが、ここでの意味はそういうものではないです。「おいおい、その程度のこと質問してんじゃねーよ」みたいな強張った空気は流れていないという意味です。
【随時更新?】当ブログタイトル一覧 〜ブログの情報取得もKNIMEでやるよ〜
みなさまこんにちは。
先日、にほんごであそぼ(NHK)で草枕をとりあげていました。
智 に働けば角 が立つ。
情 に棹 させば流される。意地を
通 せば窮屈 だ。とかくに人の世は住みにくい。
(青空文庫より)
有名な冒頭部分ですね。日々のストレス、 大型連休ですっきりさせたいものです。
さてさて、当ブログですが、アクセス解析(はてなブログの機能)を見る限り、100~200PV/日くらいのアクセスがあるようです。ありがたいことです。折角多くの方に見ていただいているので、内容をまとめて見ることにしました。経緯はこんな感じ↓
ですが、ただまとめても面白くないので、KNIMEを使って当ブログのタイトル一覧を作ってみました。タイトルは当該記事のポイントを表している(はず)なので、このテーブルは簡易的な"まとめ"と呼べるのでは?と思います。*1
テーブルを作ったフローについて解説を書きました。
興味のある方はご覧ください!
*1:と思ったが、実際作って見たらダサかった。もう少し見やすくした方がいいですね。反省しています。
【KNIME 】Excel?のMROUND関数と同じことをKNIMEでやってみよう!
新年度がスタートしましたね!
私はこの春から、新しいことに挑戦することになりました。これまでは薬品を混ぜたり、フラスコや試験管を触ったりする仕事をしていたのですが(いらすとやイメージだとこんな感じ↓)
4月からは、computerを使って化学する世界で頑張ることになりました。in silicoとかケモインフォマティクスとか、そういう感じのワード紹介される分野です。ゼロからのスタートなので不安も多いですが頑張ろうと思います。
同業?の方々との繋がりができることも期待しています。*1
さて、今日"Ari"さんからコメントを頂きました。
時間をキーに2つのテーブルを結合させようとしているのですが、片方のテーブルは5分きざみ、もう片方は30分きざみとなっています。時間をまるめる、mroundのような機能をご存知でしたら教えてください。
ちょっと実際の状況がイメージできなかったのですが、
上のような2つのテーブルを
こんな感じにしたいというようなことでしょうか?的外れだったらごめんなさい!
これをExcelのMROUND関数を使った風にして作成してみます。
*1:製薬会社の合成は、社外の方との横の繋がりを作りにくいんですよね。どうしても仕事の話をしようとすると構造式が無いとなかなか深い話はできないですが、構造出しちゃうとターゲットや社内の状況がダダ漏れになっちゃう。
【初心者レビュー】PyCharm使ったら、勉強が捗る!ちょいハードル下がる!
こんにちは。花粉が飛んでいますね。
さて、KNIMEの使い方を主な題材としている本ブログですが、前回
こんな記事を書いてみました。
記事内でも触れましたが、私プログラミングとか全然やったことないです。なので、pythonコード書く部分は結構時間かかりました。既存ライブラリを使ってるだけなので特に頭を使うこともなく簡単なはずなんですが、
- お作法がわからん場合が多い
- ライブラリ名、関数(class)名を知らない
など低経験値が引き起こす問題が結構あります。
で、少しずつ慣れていこう!と思って、もう一度復習してたんですが、
こんな記事が目について、PyCharmをインストールしみました。右も左もわからない私に、"最強"とかキャッチーなフレーズ。食いついてしまいました。
結果、入れてよかったです。
前回のtSNEのコードは何も見なくてもかけるようになりました。
インストールの方法とかは、色々と記事がありましたので割愛しますが、ど素人の私が覚えたいくつかの使い方を紹介します。
続きを読む【KNIME 】scikit-learnをKNIMEで動かすよ 〜t-SNEを題材に〜
みなさん、年度末が近づいてきました。色々と忙しい日々ですが体調には気をつけないといけません(私は、先日発熱しました…)。
さてさて、今回はKNIME上でpython書いて、scikit-learnを動かしてみます。
で紹介した可視化を、t-SNEを使ってやってみます。
その前に!
KNIME上でpython、どうやって使うの?に軽くふれます。
まず、python3を使いたければ、KNIME3.5以上が良い気がします(3.4でもいけそうですが)。
File >> preferencesと進んで、検索窓にpythonと入れれば、下のような設定画面にたどり着きます。ここに使いたいpythonの実行ファイルを指定すればOKです。私の場合はanacondaを使ってpython環境を用意しているので、所望のenvのbinの中のpythonを指定しています。
ここで、私のようなど素人+化合物情報を扱いたい&windowsユーザーの方!!!
RDKitってのを入れることになると思います。anaconda環境であれば
conda install -c rdkit rdkit
をすればinstallできますし、ターミナル・コマンドプロンプトやjupyterでは動くはずです。でもでも、KNIME上だと多分動かないです。同じようなことを言っている人がいましたので、リンクを貼っておきます。
私もlinux(centos7)、mac(sierra)では特に気になりませんでしたが、win7ではうまくいきませんでしたので、システム環境変数のPathに、anaconda系の足りない部分を強引に追記しました(強引だと思うので自己責任でお願いしますね)。
環境変数の足りない部分は
import os
print(os.environ["PATH"])
をrdkitが動く環境と、動かない環境(KNIME)でくらべてやればわかると思います。*1
前置きはこのくらいにします。
今回の全体像は次のようなものです。
以前と同様にNS5Bポリメラーゼ阻害剤関する5つの文献に記載されている化合物を、構造ベースでクラスタリングしていきます。過去記事ではKNIMEのMDSノードを利用して次元を削減し(対distance matrix)可視化を行いましたが、今回はdistance matrixを挟まず、fingerprintに対して直接t-SNEを用いて次元を落とし、可視化してみます。
t-SNE
次元削減法の一つで、人気なんだそうです。下記サイトが雰囲気を掴みやすかったです。
perplexityという調整可能なパラメータ…(中略)…は、おおざっぱに言うと、データの局所的な特性と全体的な特性のどちらをより考慮するか、そのバランスを表しています。
と書かれており、このパラメータを動かしながら可視化をやってみます。
*1:ここにたどり着くのに数時間かかった。動かすための環境を用意するので一苦労です。