マニアックすぎる自分用まとめ。当方エクセル初心者につき、エクセルマスターの諸兄、もっと良い方法があればご教示ください。
- リスト用のシートを作って、そのリストにある項目を膨大なデータの中から抽出してくる方法
- エクセルでヒートマップを描く方法
についてのまとめです。そしてやっぱりエクセルはWindows版のほうが使いやすいな。。
追記 20200925
Excel 2019から、XLOOKUP関数が実装されました。簡単に該当の項目を引っ張ってこれます。これとフラッシュフィルを駆使すればかなりデータ抽出が楽になるかと。
今回自分が行ったのはRNA-seq, いわゆるトランスクリプトーム解析。あらかじめチップに載った数百〜数千の遺伝子を調べるマイクロアレイ法よりもさらに網羅的に、発現する全てのmRNA (メッセンジャーRNA、タンパクの設計図(=DNA)の現場用コピー)を断片化させ、そのフラグメント全てを読む方法。読み込まれた塩基配列がゲノム上のどこに相当するかをマッピングし、遺伝子発現レベルを調べることが可能。
今回は業界大手某社の機械を用いて12サンプルをそれぞれ40M reads解析した。コストは9000ドル弱で、去年ゲットしたグラントが全額吹っ飛んだ。得られたデータは合計100GB程度。何故かftpが使えず、httpで全部ダウンロードするのに2日かかった。データは某社のWebサービスにuploadすると、無料で使える範囲にも相当のアプリケーションが準備されているので、GUIで (コマンドを叩くことなく)基本的な解析を進められる。
次世代シークエンシングについては、ここに簡潔にまとめてある。
次世代シークエンサーにより得られたデータの解析 : ライフサイエンス 領域融合レビュー
で、自分が今回実際にやった流れ。エクセル技のまとめというよりはNGSの入門編みたいな感じだ。
シークエンシングのデータをエクセルファイルに
某社のWebから、読んだ全ての遺伝子発現の一覧をダウンロードする。発現の検出できない遺伝子はリストから除外されていることがあるので、それも含めたければ設定をいじって落とす (発現していないことに意味がある遺伝子もあるだろうし)。
テキスト形式で落ちてきた場合は、一度テキストエディタで開いて保存し、エクセルで読み込む。
ここを選択するとテキストファイル読み込みのオプションが開くので、
適切な区切り文字を設定すると表として開ける。ひとつは元データとして保存し、シートをコピーして解析を行う。
遺伝子のリストを作成する
某Q社の発現解析用アレイにあるGene listは、例えば神経新生 (Neurogenesis)とかアルツハイマー病とか、発生・生理・病理現象にかかわる遺伝子が84個セットになっていて、なんちゃってGene Ontologyとして使える。
Gene Ontologyとは、数多の遺伝子のなかで同じような機能をもつもののグループのことで、働きや発現している場所、細胞内での役割など種々の分類がある。
DAVID Functional Annotation Bioinformatics Microarray Analysis
のようなデータベースで探す。
最初から表になっていればいいが、Web上のテキスト形式で書いてあることもあるので、その場合は作業用の空きスペースに「形式を選択してペースト」してテキストを選ぶと、上記と同様テキスト貼付けのオプションが立ち上がるので、適切な区切り文字を選んでOK。
選んだ行の各セルにデータがコピーされた。
面倒だけどそれをもう一度コピーして「形式を選択して貼付け」。
行列を入れ替える、にチェックしてペースト。これで解析で使いやすい縦のGene listが作れる。面倒。もっと楽な方法ありそうだな…*1。
エクセルでGene listに合うデータを抽出する
今回やったのは、
OFFSET関数とMATCH関数の組み合わせで、上記で作成したGene listにある遺伝子だけを、シークエンシングのデータ一覧から抜き出してくる方法。
良いマクロとかありそうだけど、関数だけでも何とかなる。上記サイトの例を挙げると
こんな感じで、必要なデータは元シートのN行目、左からn番目、という関数を必要な分だけ並べた。
この例だと、O24349のセルに、Neurog2という遺伝子のVC2という情報を表示させるようにしてある。まずMATCH関数で、固定A列の24349番目つまりNeurog2の文字列を、「Gene」という名前で定義されたRNA-seqデータのセル範囲からピックアップする。「Gene」中にもNeurog2の行があるのでそれが呼びだされる。OFFSET関数で、そこから右に14セル目のマス (つまりVC2のデータ)を取り出す、という流れ。同様に、N24349には13番目、P24349には15番目のデータを参照する式を書いている (コピペしてn番目を書き換える)。
セル範囲の定義はここ、シートの真上でできる。関数にその定義を使えるので便利!
エクセルでヒートマップをつくる
d.hatena.ne.jp を参考にした。
先ほど取ってきたGene listのデータは関数なので、それを全て数値にすることで切った貼ったが容易になる。コピー>形式を選択してペースト>値。
大規模遺伝子発現解析の論文では、直接意味があまりなくても賑やかしのためにヒートマップを載せることが多い (ような気がする)。
出てきたデータをRPKM (Read per kb per million read)で標準化した場合、発現レベルの数値は0.01以下から数千までの範囲になる。そのままヒートマップにすると低い方に偏るし感覚的にわかりづらいので、底2の対数をとると-10〜13くらいになってわかりやすくなる。
ヒートマップにしたい範囲を選択し、条件付き書式を設定する。
カラースケール3色。真ん中を黒にして両側の色を決める。Max緑、Min赤という論文も多いけど、赤緑色盲の方へのユニバーサルデザインを考慮して赤とシアンを使った方が良い。で、赤が何か上昇しているイメージがあるので、上のようにした。
最後に、数字を「セルの書式設定」で「;;;」を入れることで消すと完成。
こんな感じ。さすがにクラスタリングとかまでやろうとすると専門のソフトが必要になるが、エクセルだけでもそれなりのものが作れる。注目している遺伝子とかパスウェイがある場合はこれで十分かもしれない。
もうちょっとちゃんとやろうと思えば、無料でヒートマップをつくってくれるWebサービスを使うのも良い。エクセルのデータをタブ区切りテキストファイルとして保存しアップロードするだけ。細かな設定、クラスタリングも可能。
これだけのことをやるのに、エクセル初心者なのと、他の実験や論文執筆などが重なったのもあって1か月以上かかってしまった。職場にこの手の解析に詳しい人がいるので色々相談しつつ進めているところ。これも帰国までに、投稿までいけないまでもちゃんとしたデータとして残していきたい (自分主導で論文を書くために)。
もっと時間があれば、Rを勉強して解析をやりやすくしたいのだが、どこまでいけるか。勉強する時間が取れたら、それも記録としてこのブログに残していこうと思う。
*1:TRANSPOSE関数とか、マクロ+ショートカットキーとかでできるらしい