KNIME・EXCEL倉庫

KNIMEやEXCELの備忘録です。

・Table Creator

【KNIME】全角と半角を変換したい

・全角と半角が混在している文字列があったとする。 ・表記の揺れは小さい方が良いので、KNIMEでこの揺れを半角か全角のどちらかに揃えたいと思ったのだが、やっぱりやり方が分からなかった。 ・そこで、Python Scriptノードを使って、Pythonで実装してみた…

【KNIME】単位を揃えたい

・化合物の活性情報を弄っていると、単位がmMやμmol/L、mg/Lなど揃っていないことがある。このままでは比較するのに不便なので、単位を揃えるワークフローを組んでみた。 ・サンプルデータは以下。ここまでバラバラなことはまずないと思うが、これが一つの単…

【KNIME】同じ基準でNormalizeしたい

・例えば、学習データでにNormalizeを施してモデルを構築した場合に、テストデータをモデルに適用する前に学習データと同じNormalizeを施したいとする。 ・どうすればよいかと調べてみると、Normalizer (Apply)というノードがあった。サンプルのワークフロー…

【KNIME】アルファベットを含むセルをmissing"?"にしたい

・KNIMEでいろいろ扱っていると、特定の条件を満たすセルのデータを消したくなることがある。例えば、数値データばかりのところに、よくわからないアルファベットを含む文字列が混ざっている場合など。 ・こういう場合、文字列を含むセルをmissingにしたいが…

【KNIME】エラーの出た記述子列を除去したい

・先日、化学構造からMordredを用いてDescriptorをたくさん算出した。 ・1600を超えるDescriptorを提示いただけたが、エラーが生じているものも少なくなかった。そこで、エラーが生じた記述子列を除去するワークフローを考えてみた(下図)。 ・ここでいうエ…

【KNIME】化合物のDescriptorをたくさん計算してみたい

・先日、化合物の記述子をRDKitを使って算出した。この方法で、記述子を100個強得ることができたが、もっと得たい。 ・Pythonも含めて調べてみると、mordredというライブラリを利用するのが良さそうだった。mordredに関しては、以下を参照。 github.com ・ま…

【KNIME】化合物のDescriptorを計算してみたい

・分子の性質を語るために、計算科学的に算出される指標のことを、記述子(Descriptor)と呼ぶ。このDescriptorにはいろいろな種類があり、ケモインフォマティクスの分野では必要に応じていろいろ使い分けられている。 ・KNIMEで化合物の構造情報を扱ってい…

【KNIME】文字列を文字数で区切って別々の列に分けたい

・文字列を固定長の別々の列に分けたいことがあった。 ・やることはCell Splitterとほぼ同じなので、Cell Splitterで調べてみると、Cell Splitter By Positionなるノードがあった。如何にもこれっぽい。 ・このノードは、①区切る文字の隙間の番号と②区切った…

【KNIME】数値に応じて表を分割したい。

・表中の何らかの数値を基準として、表を分割したいことがあるとする。そんな時には、Rule-based Row Splitterノードが便利。 ・ワークフローを組んでみた(下図)。 ・Rule-based Row Splitterノードの設定は以下の通り。 ・ちなみに、Rule-based Row Filte…

【KNIME】Missing Valueのある列または行を丸ごと消したい

・Missing ValueのあるTableを処理する際に、何らかの方法でこの穴に対処する必要がある(例えば以下のTable)。 ・数値が何等か予想できるのであれば予測値で埋めることもできると思う。群内の欠損地であれば、平均値や中央値で補うこともあるかもしれない…

【KNIME】化合物のChEMBL IDから構造情報を纏めてとってきたい

・諸般の事情で、化合物のChEMBL IDのリストと活性情報が手に入ったが、構造情報が付与されていなかったとする。 ・化合物数が10や20なら個別に構造を検索しても問題ないだろうが、それが数十、数百にもなるといよいよ面倒になってくる。 ・そこで、ChEMBLの…

【KNIME】列をセミコロン区切りでくっつけたい

・諸般の事情で、別々のセルに分かれている文字列をセミコロン区切りで一つにまとめ上げたいケースがあった。 ・以下の例でいえば、それぞれの行に対して、「A;B;C」と「あ;い;う」という列をまとめた列を作成するイメージ。 ・なんとなく、ノード検索で"com…

【KNIME】行に含まれる値でcountifしたい。

・表の行に含まれている特定の値(文字列や数値)の数を数えたかった。 ・調べたところ、それらしい答えが見つかったので、メモしておく。 ・真似したのは以下の記事。 forum.knime.com ・以下、組んだワークフローの例(元記事と全く同じ) ・工程は以下の…

【KNIME】列または行の数値を集計したい。

・KNIMEで解析をしていて、列の数値または行の数値を集計したいことがあった。 ・それぞれに使うノードが異なるので、メモしておく(下図)。 ・列のデータを足す場合はGroupByを使う(以下設定)。ワイルドカードですべての列を選択し、処理にSumを設定。 …

【KNIME】同じ列をとってきたい

・ワークフローを作成している際に、表から列名を基準に列を抽出したい場面があった。 ・これまでは、Extract Column Headerで列名を抽出してCreate Collection Columnで列名を纏め、variableに変換し、Column Filterでvariableを指標に列を抽出していたが、…

【KNIME】KNIMEで逆相補鎖、翻訳、分子量、等電点を算出してみたい(python)。

・KNIMEで分子生物学的なワークフローを構築しようと思ったが、いまひとつしっくりこない。翻訳ワークフローのように、頑張って組むのも不可能ではなさそうだが、何とかならないか。 ・pythonで何とかなりそうなので、pythonを入れ込んでバイオしてみた。 ・…

【KNIME】生存時間解析してみたい。

・生存時間を評価する手法として、Kaplan-Meier法という手法がある。これは、生存率曲線を描くことで、生存時間(期間)を推定する手法。 ・2群間の生存時間を比較する統計手法としてよく用いられるのは、ログランク検定と一般化Wilcoxon検定だろう。Cox比例…

【KNIME】棒グラフに色を付けたい。

・散布図はcolor managerノードで簡単に色を付けることができたが、棒グラフ(Bat Chart)のカラムに色を付ける方法が分からなかった。 ・少し癖があったので、メモしておく。 ・以下のようなフローを組んだ。 ・左のウィンドウはTable Creatorの中身。各列…

【KNIME】Spectral Clusteringでクラスタリングしたい。

・先日KNIMEでk-meansクラスタリングなどを実施してみた。k-meansクラスタリングの特徴は、プロットした空間中で中心から距離をベースに考えるところで、要は2次元グラフ上なら丸く分布していないと綺麗に分けることができない。 ・歪んだ分布の場合、Spectr…

【KNIME】curve fittingで酵素反応速度論的パラメータを推定してみたい(非線形回帰)。

・酵素反応速度論的解析をする際に、モデルの式に数値を当てはめてパラメータを推定するcurve fittingをやりたかったのだけれど、KNIMEでのやり方が分からなかった。 ・Pythonなら出来そうだったので、KNIMEにPythonを入れ込んで、サンプルデータのfittingを…

【KNIME】データをNormalizationしたい

・数値データを解析する際に、複数の特徴量を使う場合、単位の違いが問題になることがある。Random Forestなどの決定木系の手法ではそれほど問題にならないかも知れないが、その他多くの場合では何らかの手法でNormalizationされることが多い。 ・KNIMEでNor…

【KNIME】KNIMEでPythonを使ってみたい。

・KNIMEにはデータ分析に関連する様々な機能が搭載されており、Extensionを用いることにより、PythonやRなどを動かすこともできる。 ・少し解析をやっていて、Pythonを回したいシチュエーションに出くわした。それならPythonだけで十分じゃないかという話は…

【KNIME】重複した列を削除したい

・データ処理の不備で、同じ項目が複数混ざってしまうことがある。 ・そのような場合は、項目の行を削除するなどする必要がある。 ・そのような場合は、Duplicate Row Filterノードが便利。 ・例えば、同じ生徒が複数回含まれてしまっている表から、被ってい…

【KNIME】主成分分析したい

・機械学習で多変量を扱う際に、変量(特徴量)を減らしたいことがある。 ・Uncle Bernie's ruleというもので、学習に必要なデータの数は、説明変数の数の10倍以上は準備しましょうというもので、いたずらに特徴量や説明変数を増やしてモデルするのはよろし…

【KNIME】データをピックアップしたい。

・KNIMEでデータからモデルを作成する際に、データ全体ではなく、その一部からピックアップして使いたくなることがある。 ・例えば、「100行ある表から、30行だけピックアップして何らかの解析に使いたい」、「被りありで50行ピックアップしたい」、「分類問…

【KNIME】外れ値も加味したクラスタリングをしてみたい(DBSCAN)

・クラスタリングの手法として、密度を基準に、ぎゅっと集まっているところを一つのクラスタ、疎なところを外れ値として解釈するDBSCANという手法がある。 ・ざっくりと組んでみた(下図)。これもデータ間の距離を算出してやる必要があるので、Numeric Dist…

【KNIME】階層型クラスタリングをやってみたい(Hierarchical Clustering)

・これまでは非階層型クラスタリングを試していたが、今回は階層型クラスタリングを試してみたい。 ・試しに組んでみた(下図)。 ・階層型クラスタリングといえば、デンドログラム(樹形図)での表示だと思う。 ・Hierarchical Clusteringのノードを右クリ…

【KNIME】One Row To Manyで行を複製したい

・データを処理していると、行を複製したくなることがあった。 ・行を複製するOne Row To Manyというノードがあったので、記載する。 ・このノードは、表中の整数データの入った列の数値の数だけ行を複製する機能がある(下図)。 ・左が入力テーブル、真ん…

【KNIME】アルファベットの文字列を大文字または小文字に変換したい

・文字列をKNIMEで弄る際に、アルファベットを大文字又は小文字に統一したい場合がある。 ・そのような場合は、String Manipulationで変換可能できる(下図)。 ・大文字に変換したい場合はupperCase関数、小文字に変換したい場合はlowerCase関数を使用する…

【KNIME】円グラフの色も綺麗に塗りたい

・先に、散布図のプロットを綺麗に塗り分けたが、円グラフも綺麗に塗り分けたいと思った。 ・これもColor ManagerでRowにつけた色で塗ることができるのだが、Scatter Plotとは違ってデフォルトでは駄目らしい。 ・Pie/Donut Chartノードの設定を少し弄り、Us…