cuffdiffの出力結果を受け取り比較解析できるRパッケージのcummeRbund。
ドライ解析教本ではサンプル遺伝子セットを用いてヒートマップを書く際にgetGenesは用いる。
cummeRbundによってcuffdiff出力結果を統合したデータベースが形成されるが、そこから任意の遺伝子セットを取り出すための関数である。

今回はTophatによるマッピング結果(.bam)を直接cuffdiffに供試したデータセットを用いた。こちらのデータセットより手元にある遺伝子リストに対応するデータを抽出し、ヒートマップを描画することが今回の目標だ。

まずはドライ解析教本にあるように進めていきヒートマップを描く。
ところがgetGenesの実行でエラー。
rsqlite_send_query(conn@ptr, statement) : near ")": syntax error
cummeRbundにより形成されたデータベースはMySQLで管理されているらしくその辺でエラーが起きている模様。

もう一度、同じコマンドを実行すると異なるエラーメッセージが
cannot start a transaction within a transaction


後者のエラーメッセージから調べてみるとRとMySQLの間ではその処理(受け渡し的な?)がキルされず残ってしまうそうでこれは
cuff <- readCufflinks()でキルできるようである。
なお、その後のcuff <- readCufflinks(extdataPath)は不要である。
これらはデータベース形成のコマンドであり、データベースが破壊されるわけではないためである。

次に前者のエラーメッセージであるが、非常に簡単なことであった。

ドライ解析教本やgetGenesマニュアルにあるようなテスト用のデータsampleIDsはXLOC_で始まるID、いわゆるcuffdiff IDであった。それに対して本データはtophatの出力をそのままcuffdiffで比較解析する際にオプションとしてEnsembleのアノテーション情報を付加していたため、遺伝子名とEnsembleIDの対応となっていた。


初めからデータベースないIDで検索をかければそれはエラーメッセージでますよね。
気が付くまでの時間が無駄だった…。
念のためcufflinks, merge, diffを行っているサンプルで同様の処理を行った場合、エラーなくスムーズにいきました。
なるほど…。



今回の検討時に非常に参考になるウェブサイトを発見。
SigMatrixで図示されるような発現変動遺伝子を遺伝子リストとして出力し、getGenesで遺伝子情報の取得ができる手法を紹介している。

またRで任意のヒートマップを書く際に多少困ったことがあるのでメモ。
getGenes(データベース、ベクトル形式のリスト)で実行できる。
この時に要求するベクトル形式のリストは、遺伝子名(gene_short_name)とID(先ほど問題があったやつ)のどちらでも可能である。
そこでベクトル変換であるがかなり面倒であった。
”遺伝子名/ID”, (改行)で、ずらっと並べる。

Rstudioで解析しているのだが、横一直線に並べると途中から文字色がデフォルトになり(長すぎて関数の対象から外れたか?)、さらに厄介なことに色がついている箇所でも関数の対象から外れているようであった。

面倒なので縦一列にして、ベクトルデータとして格納。

x <- c("遺伝子A",
   "遺伝子B",
   ”遺伝子C”)

z <- as.vector(x)
listedGene <- getGenes(cuff,z)


これで任意の遺伝子リストのgerGeneが可能である。
あとはヒートマップを描くだけである。
以上です。