Monthly Archives: 6月 2015

KNIME: MCSを利用したクラスタリング (1)


MCSを利用したクラスタリングを行いたいと思います。
今回は、MCSから距離行列の生成を行うワークフローを構築します。

knime_mcs_clust_01a

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

分子の入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Use molecule name as row IDと、Extract molecule nameにチェックを入れて、分子IDを利用することにします。

knime_mcs_clust_02

RDMolに変換1

SDFからRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

knime_mcs_clust_03

分子IDでソート

Sorterノードを使って、分子IDでソートを行います。

knime_mcs_clust_04

原子数の計算

RDKit Descriptor Calculationノードを使って、重原子の数を取得します。
Include枠の中に、NumHeavyAtomsを加えます。

knime_mcs_clust_05

分子ペアの生成

Cross Joinerノードを使って、分子ペアの生成を行います。
分子数がNの場合、N×Nの行が生成されます。

knime_mcs_clust_06

MCSの計算

Column Aggregatorノードを使ってMCSの計算を行います。
この機能は、とても便利な機能だと思います。
Columnタブで、MCSを計算したい分子を選択します。ここでは、RDMolとRDMol2をAggregation column(s)枠に加えます。

knime_mcs_clust_07

次に、OptionsタブでAggregation methodsからRDKit MCSを選択します。

knime_mcs_clust_08a

RDMolに変換2

MCSをRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

knime_mcs_clust_09

MCSの原子数の計算

RDKit Descriptor Calculationノードを使って、MCSの重原子の数を取得します。
Include枠の中に、NumHeavyAtomsを加えます。

knime_mcs_clust_10

Tanimoto係数を用いた非類似度の計算

Java Snippet(simple)を使って、Tanimoto係数から非類似度の計算を行います。

knime_mcs_clust_11

分子IDでGroupBy

GroupByノードを使って、分子IDでAggregationを行います。
まずは、Groupタブで、Molecule nameをGroup column(s)の枠の中に加えます。

knime_mcs_clust_12

次に、Manual Aggregationタブで、Tanimotoを選択し、Aggregation(click to change)において、Listを選択します。

knime_mcs_clust_13

Distance Matrixの生成

Java Snippet(simple)ノードを使って、Distance Matrixの生成を行います。

knime_mcs_clust_14

Distance Matrixの取り出し

Column Filterノードを使ってDistance Matrixのみ取り出します。

knime_mcs_clust_15

Distance Matrixのファイル出力

CSV Writerノードを使って、Distance matrixをファイル出力します。

knime_mcs_clust_16

以上で設定は終わりです。
実行するとDistance Matrixがファイル出力されます。
次回は、このDistance Matrixを使ってクラスタリングを行う予定です。


利用したソフトウェア:
KNIME 2.11.3

KNIME: SVMを用いた機械学習 (2)


今回は、Databaseに収められているデータを逐次的に取り出しながら、SVMによる予測を行うワークフローを構築します。
膨大なデータを処理したいときに、利用する場面があると思います。

knime_svmdb_01
各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

JDBCドライバーの登録

今回は、Databaseとして、PostgreSQLを使いますので、対応するJDBCドライバーをKNIMEに登録する必要があります。
私の環境では、以下のドライバーを使いました。

入手先:https://jdbc.postgresql.org/download.html#current
入手ファイル名:postgresql-9.1-903.jdbc4.jar

メニューから、[File]→[Preferences]→[KNIME]→[Databases]でダウンロードしたJDBCドライバーを登録します。

knime_svm_02

DBから学習用データの読み込み

Database Readerノードを使って、PostgreSQLから、学習用データを読み込みます。
学習用データは、knimedbに入っており、”SELECT * FROM descTrainTable”で取り出します。

knime_svmdb_02

今回、学習モデルは、事前に学習したものをファイルから読み込んで利用します。
しかしながら、ここで、学習用データを読み込む目的は、正規化のパラメータを得るためです。もっといい方法があると思いますが。。。

正規化1

Normalizerノードを使って、記述子の正規化を行います。
正規化を行う列を右のInclude枠に入れます。
ここでは、Min-Max Normalizationを選択します。

knime_svm_06

学習モデルの読み込み

Model Readerノードを使て、学習モデルの読み込みを行います。
学習モデルは、以下の記事で作成したものを使っています。

KNIME: SVMを用いた機械学習 (1)

knime_svmdb_04

繰り返しのためのoffset値の計算

Database Readerノードを使って、逐次的なデータの読み込みのためのoffset値の設定を行います。
SQL Statementに以下を記述します。

SELECT generate_series(0,(select count(*) from descTestTable)::integer ,$${Ilimit}$$) as offset

limit値の設定は、KNIME ExplorerからWorkfrow名の上で右クリックし、Workflow Variablesを選択し設定します。

knime_svmdb_06

knime_svmdb_05

ここでは、以下のテーブルが作成されます。

knime_svmdb_07

ループ開始

事前のノードで作成したoffset値をflow variableとして用います。
offset値の数だけループさせることができます。

knime_svmdb_08

DBからテスト用データの読み込み

Database Readerノードを使って、PostgreSQLから、テスト用データを読み込みます。
SQL Statementには、以下を記載します。

SELECT * FROM (select * from descTestTable order by rid) t offset $${Ioffset}$$ limit $${Ilimit}$$

ここで、$${Ioffset}$$は、flow variableとして、得ることができ、0, 50, 100, 150, 200, 250と値が変化します。また、$${Ilimit}$$は、workflow variableで50と設定しています。従って、逐次的にテスト用データを50個ずつ取り出すことができます。

knime_svmdb_09

活性値の変換

Java Snippet(simple)ノードを使って、act1に収められている数値を文字に変換します。
具体的には、0→’L’, 1→’M’, 2→’H’に変換します。

knime_svm_05

正規化2

Normalizer(Apply)ノードを使って、正規化を行います。
ここでは、正規化1のNormalizerノードで計算された値を利用して正規化を実施しています。
特にConfigureで設定する内容はありません。

予測

LIBSVMPredictorノードを使って、テスト用データのlogSのカテゴリーの予測を行います。
特にConfigureで設定する内容はありません。

ファイル出力データの抽出

Column Filterを使って、ファイル出力する列を選択します。

knime_svmdb_10

ループ終了

Loop Endノードを使ってループの終わりを設定します。

knime_svmdb_11

予測結果のファイル出力

CSV Writerを使って、予測結果のファイル出力を行います。

knime_svmdb_12

以上で設定は終わりです。
実行すると、予測結果をファイルとして得ることができます。


利用したソフトウェア:
KNIME 2.11.3
参考にしたサイト:
http://lab.synergy-marketing.co.jp/blog/statistic/data-mining/knime-classification4

KNIME: Maximum Common Substructure


今回は、Maximum Common Substructure (MCS)の検索を行うワークフローを構築します。
RDKit MCSノードでは、2つの分子間のMCSだけではなく、複数の分子間のMCSを検索することができます。
例えば、複数の分子の中で6割の分子がもっているMCSがほしい場合は、閾値を0.6と設定します。
ここでは、閾値を0.2, 0.4, 0.8, 1.0と変化させることにより、各閾値におけるMCSを取得し、ファイル出力しています。

knime_mcs_01

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

閾値の入力

File Readerノードを使って、閾値の入ったテキストファイルを入力します。
閾値は、以下のように、各行に1つの閾値が記載されています。
1.0
0.8

0.2

knime_mcs_02

ループ開始

Table Row To Variable Loop Startノードを使います。

knime_mcs_03

分子の入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。

knime_mcs_04

RDKit MCSノードを使って、MCSを検索します。
ここでは、Thresholdの値は、Flow Variablesで指定しますので、The “threshold” parameter is controlled by a variable.と表示されます。

knime_mcs_05

Thresholdの値の設定は、Flow variablesタブで行います。
thresholdをCol0と指定します。

knime_mcs_06

ループ終了

Loop Endノードを使って、Loopの終わりを設定します。

knime_mcs_07

RDMolに変換

SDFからRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

knime_mcs_08

SDFファイル出力

SDF Writerノードを使って検索したMCSをSDFで出力します。

knime_mcs_09

以上で設定は終わりです。
実行すると、MCSがSDFで出力されています。


利用したソフトウェア:
KNIME 2.11.3

KNIME: SVMを用いた機械学習 (1)


今回は、SVMを用いて機械学習を行うワークフローを構築します。
学習用データとテスト用データは共に、Databaseから取得します。
データセットは、以下のサイトにある化合物のlogS値(Huuskonen dataset)を利用しました。
入手先: http://sourceforge.net/p/rdkit/code/HEAD/tree/trunk/Docs/Book/data/


knime_svm_01a

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

JDBCドライバーの登録

今回は、Databaseとして、PostgreSQLを使いますので、対応するJDBCドライバーをKNIMEに登録する必要があります。
私の環境では、以下のドライバーを使いました。

入手先:https://jdbc.postgresql.org/download.html#current
入手ファイル名:postgresql-9.1-903.jdbc4.jar

メニューから、[File]→[Preferences]→[KNIME]→[Databases]でダウンロードしたJDBCドライバーを登録します。

knime_svm_02

DBから学習用データの読み込み

Database Readerノードを使って、PostgreSQLから、学習用データを読み込みます。
学習用データは、knimedbに入っており、”SELECT * FROM descTrainTable”で取り出します。

knime_svm_03

PostgreSQLから、読み込んだ学習用データは、テーブルの左から、rid, comp_id, act1, act2, 記述子1 ,記述子2, ….という構成になっています。
ここで、act1は、logS値のカテゴリーを表す数値,0(低),1(中),2(高)であり、act2は、logS値となります。

knime_svm_04

活性値の変換1

Java Snippet(simple)ノードを使って、act1に収められている数値を文字に変換します。
具体的には、0→’L’, 1→’M’, 2→’H’に変換します。

knime_svm_05

正規化1

Normalizerノードを使って、記述子の正規化を行います。
正規化を行う列を右のInclude枠に入れます。
ここでは、Min-Max Normalizationを選択します。

knime_svm_06

学習データのみ抽出

Column Filterを使って、学習に使う列のみ選択を行います。

knime_svm_07

学習

LIBSVMLearnerノードを使って、機械学習を行います。
Target columnでact1を選択して、教師データとします。

knime_svm_08

学習モデルのファイル出力

Model Writerノードを使って、LIBSVMLearnerで構築した学習モデルをファイル出力します。

knime_svm_09

DBからテスト用データの読み込み

Database Readerノードを使って、PostgreSQLから、テスト用データを読み込みます。”SELECT * FROM descTestTable”で取り出します。

knime_svm_10

活性値の変換2

活性値の変換1と同様に、Java Snippet(simple)ノードを使って、act1に収められている数値を文字に変換します。
具体的には、0→’L’, 1→’M’, 2→’H’に変換します。

knime_svm_05

正規化2

Normalizer(Apply)ノードを使って、正規化を行います。
ここでは、正規化1のNormalizerノードで計算された値を利用して正規化を実施しています。
特にConfigureで設定する内容はありません。

予測

LIBSVMPredictorノードを使って、テスト用データのlogSのカテゴリーの予測を行います。
特にConfigureで設定する内容はありません。

評価

Scorerノードを使って、予測結果の評価を行います。
First Columnには、答えであるact1を、Second Columnには、予測値であるLIBSVM_Classを選択します。

knime_svm_11

以上で設定は終わりです。
実行して、ScorerノードからConfusion matrixを選択すると以下の様な結果を得ることができます。

knime_svm_12


利用したソフトウェア:
KNIME 2.11.3

KNIME: k-Medoids法によるクラスタリング


今回は、k-Medoids法によりクラスタリングを行うワークフローを構築します。
k-Medoids法では、Medoidを各クラスの代表点とします。
Medoidとは、各クラスにおいて、自分以外の点からの非類似度の総和が最小の点のことです。
アルゴリズムは、k-Meands法と類似しています。

knime_kmed_01

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

分子の入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Use molecule name as row IDにチェックをいれ、分子IDを行のIDとして使います。

knime_kmed_02

RDMolに変換

SDFからRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

knime_kmed_03

Fpの計算

RDKit Fingerprintノードを使って、Fingerprintの計算を行います。
ここでは、Fingerprint typeとしてMorganを選択しています。

knime_kmed_04

距離行列の計算

Distance Matrix Caluculateノードを使って距離(非類似)行列を作成します。
Distance Selectionでは、Tanimotoを選択しています。
また、右のInclude枠に、前のノードで作成したFingerprintを入れています。

knime_kmed_05

クラスタリング

k-Medoidsノードを使って、クラスタリングを行います。
クラス数は、Partion count (k)で設定します。ここでは3としています。

knime_kmed_06

各クラスに色の割り付け

クラスタリングの結果を可視化するために、各クラスに色を割り付けます。
ここでは、Color Managerノードを使って実現しています。

knime_kmed_07

散布図の作成

Scatter Plotを用いて、散布図を作成します。

knime_kmed_08

散布図と連携したテーブル作成

散布図で示された点と、化合物の構造式の関係を確認するために、Interactive Tableノードを使います。特別な設定は必要ありません。

以上で設定は終わりです。
ワークフローを実行し、Scatter PlotのView: Scatter PlotとInteractive TableのView: Table Viewを立ち上げます。
まずは、Interactive Tableで表示されている上から3つの化合物を選択し、メニューから[Hilight]->[Hilight Selected]を選択します。

knime_kmed_09

そうすると、Interactive Tableで選択された化合物に対応する散布図上の点が、橙色の四角でハイライトされます。

knime_kmed_10

クラスタリングの結果は、もちろんファイル出力できますので、次の機会に説明したいと思います。


利用したソフトウェア:
KNIME 2.11.3

KNIME: 部分構造検索


今回は、部分構造検索で一致した領域をハイライト表示するワークフローを構築します。
クエリー構造の入力は、分子エディターから行いますが、この情報は、flow variablesを介して、部分構造検索ノードの内で利用されています。

knime_substr_01

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

クエリ構造の描画

MarvinSketchノードを使って、クエリ構造を入力します。
まずは、optionsタブで、検索したい構造式を描画します。

knime_substr_02

次に、Output optionsタブでStructure typeをSmilesCellsにします。

knime_substr_03

構造を変数に設定

Table Raw to Variableノードを使って、行に収められているSMILES(構造情報)をflow variableに変換します。

knime_substr_04

化合物の入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Extract molecule nameにチェックをいれ、分子IDを取得しています。

knime_substr_05

RDMol

SDFからRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

knime_substr_06

部分構造検索

RDKit Substructure Filterノードを使って、部分構造検索を行います。
本ノード上で右クリックし、Show flow variable portを選択すると赤い丸がノードの上に現れます。
Table Row to Variableと本ノードの赤丸を繋げることにより、変数の受け渡しが可能となりなり、Optionsタブにおいて、”smarts_value” parameter is controlled by a variable.と表示されます。

knime_substr_07

次に、Flow Variablesタブのsmarts_valueをMoleculeとします。
この操作により、分子エディタで書いた構造が、クエリとして使えるようになります。

knime_substr_08

一致領域のハイライト表記

RDKit Molecule Hightlightingノードを使って、部分構造検索で一致した領域をハイライトして表示させます。

knime_substr_09

以上で、設定は終わりです。
実行して、RDKit Molecule Highlightingノードの上で右クリックし、Hilighted Moleculesを選択すると、以下の結果が表示されます。

knime_substr_10


利用したソフトウェア:
KNIME 2.11.3

KNIME: 3D構造アライメント


今回は、3D構造アライメントを行うワークフローの構築を行います。
ここでは、複数の化合物を1つの参照化合物に対して重ね合わせを行い、そのスコアで順位付けをしています。

KNIME-3Dalign

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

化合物の入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Extract molecule nameにチェックをいれ、分子IDを取得しています。

KNIME-3Dalign_02

RDMolに変換

SDFからRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

KNIME-3Dalign_03

水素付加

RDKit Add Hsを使って、水素原子の付加を行います。

KNIME-3Dalign_04

複数配座の生成

RDKit Add Conformersを使って、複数の配座生成を行います。
Reference columnは、Molecule nameとしており、化合物のユニークなIDとなります。
あとで、化合物とその配座の関係を識別するのに必要となります。
Number of conformersとNumber of tries to generate conformersは、値が大きい程、適切なアライメントを得られる可能性が高くなりますが、その分、計算時間が増大します。

KNIME-3Dalign_05

構造最適化

RDKit Optimize Geometryを使って、構造最適化を実施します。
ここでは、分子力場としてMMFF94Sを選択しています。

KNIME-3Dalign_06

参照化合物の入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Use molecule name as row IDにチェックをいれ、分子IDを行のIDとして利用します。

KNIME-3Dalign_07

3Dアライメント

RDKit Open 3D Alignmentを使って、3D構造アライメントを行います。

KNIME-3Dalign_08

化合物ごとにScoreでソート

Sorterを使って、化合物ごとに、アライメントのスコアでソートを行います。
この操作により、化合物ごとに、最もスコアの高い配座が上位に位置するようになります。

KNIME-3Dalign_09

化合物ごとにベストScoreを抽出

GroupByノードを使って、化合物ごとにスコアの最も高い配座を抽出します。
入力化合物のIDの収められている列(Reference)を使ってグループ化を行います。

KNIME-3Dalign_10

Reference以外の列のAggregationタイプの指定を行います。
ここでは、すべてFirstとします。SorterノードですでにScore順に並んでいるので、Firstを指定することにより、Scoreの最も高い配座を抽出することができます。

KNIME-3Dalign_11

化合物をScoreでソート

事前のノードまでで、化合物ごとにベストなScoreの計算が終わっています。
ここでは、Scorterノードを使って、最終的な化合物の順位付けを行います。

KNIME-3Dalign_12

アライメントされた配座のファイル出力

SDF Writerを使ってアライメントされた配座とすのスコアをSDFで出力します。

KNIME-3Dalign_13

以上で、設定は終わりです。
実行すると、アライメントされたSDFを得ることができます。
以下の図は、参照化合物(黄色)を加えた結果となります。

KNIME-3Dalign_14


利用したソフトウェア:
KNIME 2.11.3

KNIME: Virtual Screeningのベンチマークテスト


今回は、Virtual Screeningのベンチマークテストを行うワークフローの構築を行います。
ここでは、活性化合物として、ACE阻害剤41化合物、活性の無い化合物として、1426化合物を用いています。化合物データは、DUDより取得しました。

knime_vs01

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

活性有化合物の入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Extract molecule nameにチェックをいれ、分子IDを取得しています。

knime_vs02

Fp生成1

RDKit Fingerprintノードを用いて、活性有化合物のFingerprintを計算します。
ここでは、Fingerprint typeとしてMorganを指定しました。

knime_vs03

Active付加

活性有化合物の目印として、新たにActivity列を付加し、1を挿入します。
ここでは、Java Snippetノードを用いて、’return 1;’として実現しています。

knime_vs04

行の分割

活性有化合物の中から、クエリーとする化合物を選別します。
ここでは、ランダムに5化合物を選別してクエリーとし、残りは評価用データとします。
Partitioningノードを使って実現できます。

knime_vs05

活性無化合物の入力

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Extract molecule nameにチェックをいれ、分子IDを取得しています。

knime_vs06

Fp生成2

RDKit Fingerprintノードを用いて、活性有化合物のFingerprintを計算します。
ここでは、Fp生成1と同じFingerprint typeとしてMorganを指定します。

knime_vs07

Inactive付加

活性無化合物の目印として、新たにActivity列を付加し、0を挿入します。
ここでは、Java Snippetノードを用いて、’return 0;’として実現しています。

knime_vs08

行の結合

活性有化合物と活性無化合物を結合して、評価用データとします。
Concatenateノードを使って実現します。
row IDが重複した場合は、Append Suffixに定義されている’_dup’がrow IDに付加され、row_IDが重複しないようにします。

knime_vs09

類似度評価

Fingerprint Similarityノードを使って、クエリーと評価用データとの間の類似度を計算します。
ここでは、Similarity measureとして、Tanimotoを、Fusion methodとしてAverageを選択しています。
Fusion methodは、Averageの他にMaxSimが選択できます。今回は、5つのクエリーを使っていますので、この5つのクエリーのSimilarityの平均値を利用します。

knime_vs10

ソート

Sorterノードを使って、Similarityの降順にソートを行います。

knime_vs11

評価

Virtual Screening Metricsを使って、結果の評価を行います。

knime_vs12

以上で、設定は終わりです。
実行すると、ベンチマークテストの結果を得ることができます。

評価ノードの上で右クリックし、Metrics Outputを選択すると、評価結果が分かります。
ちなみに、EFの値が7.222となっています。これは、ランダムな状態と比較して、Virtual Screening後の上位10%には、7.222倍、活性化合物が濃縮されていることを示しています。

knime_vs13

本ノードで使われている評価指標の詳細は、以下の文献に記載されています。
RIE, Sheridan et al, JCICS, 2001, 41, 1395−1406
BEDROC, Truchon and Bayly, JCIM, 2007, 47 (2), pp 488–508


利用したソフトウェア:
KNIME 2.11.3

KNIME: 塩の除去と記述子の計算


今回は、塩を除去し、記述子の計算を行うワークフローの構築を行います。
塩の除去は、外部ファイルで定義されたSMARTSを用いて行うことにします。

salt_01a

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

Read SDF

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Extract molecule nameにチェックをいれ、分子IDを取得しています。

salt_02

RDMolに変換1

SDFからRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

salt_03a

Read SMARTS

塩(SMARTS)の定義されているファイルをFile Readerノードを用いて読み込みます。
読み込んだデータは、Previewで確認できます。

salt_04

SMARTSに変換

File Readerノードで読み込んだSMILESは、文字列型ですので、SMARTS型に変換します。

salt_05

RDMolに変換2

SMARTS型をRDMol型に変換します。

salt_06

Strip salts

RDKit Salt Stripperノードを用いて塩の除去を行います。
ここでは、外部ファイルで定義されたSMARTSにより塩の除去を行っています。
外部ファイルを用いない場合は、Input Port 1には何も接続する必要はありません。
デフォルトで定義された塩の情報を用いて除去が行われます。

salt_07

記述子の計算

RDKit Descriptor Calculationノードを使って、記述子の計算を行います。
計算する記述子は、右のIncludeに、計算しない記述子は、左のExcludeに入れます。

salt_08

列の選別

Column Filterノードを使って、CSVに出力する列を選別します。
Includeにある列のみ出力されます。

salt_09

Write Descriptor

CSV Writerノードを使って記述子をCSVでファイル出力します。
Output locationに出力ファイル名を記載します。

salt_10

以上で、設定は終わりです。
実行すると、記述子がファイル出力されます。


利用したソフトウェア:
KNIME 2.11.3

KNIME: 重複する分子の削除


今回は、重複する分子の削除を行うワークフローの構築を行います。
分子の重複の削除は、分子構造(SMILES)と分子IDで行っており、GroupByノードにより実現しています。

knime_dupli_01

各ノードの設定方法を説明します。
各ノードを配置、接続した後、ノードをダブルクリックするとConfigureが開き、設定を行うことができます。

Read SDF

SDFの読み込みには、SDF Readerノードを使います。
File selectionタブでSDFファイルの場所を指定します。
また、ここで入力するSDFにおいては、各分子の1行目に分子IDを記載していますので、Extract molecule nameにチェックをいれ、分子IDを取得しています。
さらに、SDF blocksの情報を出力ファイルに入れたいので、Extract SDF blocksにもチェックを入れます。

knime_dupli_02a

RDMolに変換

SDFからRDKitのMol形式(RDMol)にRDKit From Moleculeノードを用いて変換します。

knime_dupli_03a

CanSMILESの生成

RDMolからCanonical SMILESを生成します。
RDMolは、もう使わないのでRemove source columnにチェックを入れています。

knime_dupli_04

分子IDで重複除去

入力したSDFには、同じ分子IDをもつ分子が入っていますので、Group byノードを使って、分子IDで重複をとります。
Groupsタブで、重複を取りたい列を指定します。ここでは、分子IDの入っている列であるMolecule nameを指定します。

knime_dupli_05

Molecule name以外の列のAggregationの方法を指定します。
Manual Aggregationタブを選択し、MoleculeとCan smilesのAggregationをFirstとします。

knime_dupli_06

分子構造で重複除去

分子構造の重複除去は、Canonical SMILESで行います。
Groupsタブで、重複を取りたい列を指定します。ここでは、分子構造の入っている列であるFirst(Can smiles)を指定します。

knime_dupli_07

First(Can smiles)以外の列のAggregationの方法を指定します。
Manual Aggregationタブを選択し、Molecule nameとFirst(Molecule)のAggregationをFirstとします。

knime_dupli_08

Write SDF

SDF Writerノードを使って、分子構造をファイル出力します。
テキストボックスに、出力ファイル名を入力します。また、Overwrite OKにチェックを入れ、上書きを許可しています。

knime_dupli_09

以上で、設定は終わりです。
実行すると、重複の取れたSDFが出力されます。


利用したソフトウェア:
KNIME 2.11.3