KNIME・EXCEL倉庫

KNIMEやEXCELの備忘録です。

【KNIME】不等号を分離したい

・低分子化合物の生理活性データが纏まっている表で、たまに不等号が入り込んでいることがある。溶解度やアッセイ条件によって濃度の上限または下限が決まっているのが原因なのだけれど、表中に不等号が入り込むと文字列データとして処理されるので、非常に…

【KNIME】正規表現を使って文字列を弄りたい

・正規表現を使って文字列を弄りたい場面があった。 ・例えば、以下の表の数字だけを*に置き換えることを考える。 ・String ManipulationノードにregexReplaceという数式がある。regexは正規表現のことっぽい。例えば以下のように正規表現で数字を表現するこ…

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

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

【KNIME】場合分けして処理したい

・先日のワークフローで、条件ごとに処理を変えたい場面があった。 ・やり方がよく分からなかったので、Row Splitterで表を条件の数だけカチ割って、それぞれでString ManipulationやMath Formulaで処理させていた。 ・調べてみると、Rule Engineというノー…

【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】ParameterをOptimizeしたい。

・機械学習のハイパーパラメータを最適化したいと思って調べてみたところ、以下のKNIME Hubの記事が参考になりそうだった。 hub.knime.com ・まず、Parameter Optimization関連のノードを使うためには、Extensionをインストールする必要がある(以下)。 ・…

【KNIME】Cross Validationしてみたい。

・モデルの汎化性能を評価する目的で、交差検証(Cross Validation)してみようと思った。 ・通常、機械学習の際には、データを学習用とテスト用に分割する。Cross Validationでは、これを何度も実施して、予測性能を検証することになる。例えば、学習用デー…

【KNIME】SMILESを前処理したい

・化合物の構造情報を使って色々解析する際に、前処理をしたい場合がある。 ・例えば、SDFをSMILESに変換するのであれば、SDF ReaderとRDKit Canon SMILESで何とかなる。 ・今回は、このSMILESを更にKNIMEで前処理するにはどうすれば良いか、少し調べてみた…

【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】化合物の共通構造と異なる構造を分かりやすくしたい。

・有機化学の基本的な考え方として、「似たような構造を持っている化合物は似たような活性を持つ」というものがある。一方で、化合物はそれぞれに異なる活性を持つことも事実と思う。 ・どこでその差が出るのか考えるときに役に立つのが、「どこが同じでどこ…

【KNIME】Chembl_IDから活性情報を収集したい

・前回、構造からChembl_IDを収集した。 ・Chembl_IDが分かると、ChemblやTargetMineなどで活性情報などを調べやすくなる。 ・今回は、Chembl_IDを使ってChemblで生物活性情報を収集してみた。 ・やったことは、前回とほとんど同じ(以下)。 ・String Manip…

【KNIME】化合物のChembl_IDをSMILESから引っ張ってきたい。

・例えば、化合物の構造だけ与えられて、「これと似たような化合物が、何かの生理活性を測定された報告はあるのかな?」と気になったとする。 ・個別の化合物を検索するのであれば、CHEMBL(以下)などでSmilarityも含めて、アッセイ結果を検索してみるのが…

【KNIME】化合物だって階層型クラスタリングしてみたい。

・前回に引き続き、化合物を構造でまとめたい。 ・今回は階層型クラスタリングをしてみたい。 ・ワークフローを組んでみた(下図)。 ・流れは以下の通り。 ①SDF読み込み。 ②情報抽出。今回はchembl_id(RowIDに設定)と構造情報だけにした(下図)。 ③Finge…

【KNIME】化合物の類似度をランキングしてみたい。

・化合物の構造を、何らかの形で纏めたいと思った。 ・一つのやり方として、機械的に類似度を算出し、似ている化合物は同じ性質をもつだろうと推測する手法があると思う。 ・例えば、A、B、C、Dの4つの化合物がある場合、Aと一番似ている(A-B、A-C、A-Dの…

【KNIME】sdfファイルから化合物の情報を抜き出したい。

・先日、化合物をKNIMEで扱ってみた。 ・化合物の構造ファイルとして、いろいろな記述法があり、中でもSMILESとSDFはよく見かける。 ・SMILESの特徴は、1次元の文字列の配列であり、記述自体がシンプルであること。SDFの特徴は、化合物の構造以外の情報も盛…

【KNIME】いろいろな分布の乱数を発生させたい。

・KNIMEでいろいろな分析をしていると、乱数を発生させたくなることがある。 ・EXCELでの乱数の発生のさせ方は以前記事にしたが、KNIMEだともっと簡単たくさんの乱数を発生させることができる。 ・Node Repositoryで調べると、以下の一群のノードが役に立ち…

【KNIME】同じ構造を強調したい。

・先日に引き続き、化合物を少し触ってみたい。例えば共通の構造を分かりやすく表示出来たら面白いな、と思ったので、少し調べてやってみた。 ・今回は、CheMBLから適当にsdfのデータセットを落としてきたので、読み込むのはsdf readerノードで実施した。構…