t_kahi’s blog

KNIMEやCellProfiler、創薬に関する記事と,日々のメモです

KNIME Workflowによる実験データ処理について〈前編:データの読み込みについて〉

こんばんは,@PKです.

今日はKNIMEを用いた実験データ処理について,紹介したいと思います.

はじめに

実はこれまで,自身もKNIMEを使ってデータ解析をすることは多くはありませんでした.
スクリーニングのデータならともかく,毎日異なる実験(核酸実験や,タンパク質発現,ハイコンテントアナリシス等)をする場合は,どうしても慣れ親しんだEXCELを使ってしまいます.

以下に自分の例ですが,実験の流れを示しています.
f:id:t_kahi:20190608214524p:plain
まず,実験の目的(仮説立案)から実験デザインを考えて,実験を行います.そして得られたデータを加工して,最終的にグラフや統計的な処理を行い,結果を解釈できるようにします.

最近KNIMEの操作に慣れてきたこともあり,実験データがcsvexcel形式で数値として出力されるものについては,データの加工部分(+必要であれば可視化)をKNIMEで処理しています.
こうすることで,実験デザインを考えて手を動かした後に,すぐ結果を見ることができ,非常に生産性が上がりました.

実はこれまでも実験データの解析について,いくつかブログで紹介してきました. www.t-kahi.com

www.t-kahi.com

内容が重複する部分もありますが,今回はあまりKNIMEを使ったことが無い方向けに,「プレートレイアウトの読み込み(前編)」と「数字データの処理の仕方(後編)」の部分について説明していきます.
(なんでこの部分かというと,始めたばかり頃に一番つまづいたからです...)

KNIME workflowの概要

今回紹介するKNIME workflowは以下の通りです.
f:id:t_kahi:20190608223444p:plain

枠線で囲んだように,

  • データを入力する部分
  • 数値データを処理する部分

の2つのパートに分かれています.
前編として,まずはデータ入力について注意点やポイントなどを紹介していきます.

データ読み込みについて

データ読み込みについては,以下の通りの流れで進めていきます.

  1. プレートレイアウトファイルの読み込み
  2. 生データ読み込み
  3. プレート配置と対応付けるためのRow, Columnの位置情報を作成
  4. Joinerノードで結合

f:id:t_kahi:20190608221401p:plain

まず,「Load Layout」ノードでプレートレイアウト情報を読み込みます.
「Load Layout」は,人間が見やすい形でエクセルに書かれたものを,データ加工がしやすい形に変換してくれる便利ノードの一つです.

nodepit.com

このノードを使えるのは,「96 well plate」か「384 well plate」だけなのですが,実験で使用される頻度は高いと思います(もちろん実験内容によりますが…)

今回読み込んだプレートレイアウトは以下の通りです.
f:id:t_kahi:20190608223256p:plain

ポイントは,「情報はまとめずにそれぞれ違うプレートに記入すること」です.この場合だと,濃度(conc.)とサンプル(sample)は別のプレートに記載してあります.

悪い例と比較するとわかりやすいと思います. f:id:t_kahi:20190608222842p:plain 上のレイアウトは,これ単体で使用する分には良いのですが,ここから情報を取得する場合には,複数の情報が1つのセルに含まれているため逆に難しくなります. またセル内で改行されているので,これも厄介です. 自分はできるだけ,このような形でエクセルに入力するのをやめるようにしています.

さて,「Load Layout」ノードで先ほどのプレートレイアウトを読み込むと,以下のように,表としてデータが出力されます.

plateRowとplateColumnの列に,Wellの位置情報が含まれているので,これをキーとして「Joiner」でつなげます.

続いて,実験結果の生データの処理に移ります.
例として,(すごく適当ですが)実験データの例を以下に示します.

この例のように,出力されるデータは,「A1から始まるわけではない」「Wellの記載が統一されていない」ということがあります.

必要なデータの部分だけを読み込むのは「Excel Reader」の設定から簡単にできます. f:id:t_kahi:20190608225705p:plain 青枠の部分で読み込む行列を設定することで,必要な数値データだけを取得することができます.

続いて,Wellの記載についてです.
「Load Layout」で読み込んだデータでは,plateRowとplateColumnの列はそれぞれ数値データ入っていましたが,生データではA-1みたいに英語と数値が混ざった形になっています

これを,レイアウトデータの読み込みとデータを揃えていきます.
まず,「Cell Splitter」ノードで"-"をdelimiter(区切り記号)として設定します.処理を実行すると,以下のように,ノードを行と列にバラバラにすることができます.

続いて,行の情報が英語になっているので,これを数値に変換します.
これは「Plate Row Converter」で処理することができます.
Plate Row Converter — NodePit

変換したいカラムを選んで実行すると,以下のように数値データへと変換されました.

f:id:t_kahi:20190608230755p:plain

最後にわかりやすいように,「Column Rename」ノードで行列の名前を変更して,「Joiner」ノードで行と列の情報を紐付けてデータを統合します.
サンプル名と各データの値をまとめることができました.
f:id:t_kahi:20190608231255p:plain

最後に

KNIMEを使った実験データ処理について,かなり基本的な部分ですがデータ読み込みの部分について紹介しました.
バイオ実験者でもKNIMEは扱いやすいと思いますので,少しでも参考になればと思います.