いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

KNIME

【KNIME】構造情報を一覧で見やすくしたい

・先日、Tile Viewで情報を見やすく成型したが、構造情報をうまく表示することができなかった。 ・Tile Viewは対応するセルの情報をカードに出力してくれるのだから、画像データをそのまま渡せばよいのでは?と思って調べたところ、SMILESの構造情報を画像と…

【KNIME】相対パスでデータを読み込みたい

・KNIMEでいろいろワークフローを作成していると、データの保存場所に対してアクセス権のないPCではワークフローが使えないなどのトラブルが起こる。 ・対処方法の一案として、相対パスでアクセスするという手がある。 ・以降、参照ファイルの場所などは、あ…

【KNIME】データの表を見やすくしたい

・化合物情報などを扱う際に、列名が冗長化したりして、視認性が悪くなる場合がある。そこで、冗長なところを纏めつつ、表をTile Viewで視認性良く表示するワークフローを作成した。 ・入力データは以下の表(化合物のID、分子量、IC50(_等号・不等号、_値…

【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の…