時系列比較(maSigPro)

maSigPro パッケージを利用して時系列データから発現変動遺伝子を検出する方法を示す。maSigPro はもともとマイクロアレイの時系列データ解析に使われているが、現在では次世代シーケンサーから得られるリードカウントデータも解析できるように拡張が行われた。

library(MASS)
library(maSigPro)
packageVersion("maSigPro")
##[1] ‘1.40.0’

サンプルデータ

サンプルデータは条件を設定して負の二項分布に従うように乱数生成により作成した。A 群と B 群の 2 つの実験群からなる。A 群には薬剤 A を投与し、0 時間、3 時間、6 時間の 3 つの時刻においてサンプルを採取した。B 群には薬剤 B を投与し、0 時間、3 時間、6 時間の 3 つの時刻においてサンプルを採取した。各実験の各時刻において 2 つの biological replicate があり、実験全体で計 12 biological replicate を使用したとする。また、全遺伝子数は 1,000 であり、その発現パターンは以下のように設定した。

遺伝子 A 群の発現パターン B 群の発現パターン
gene_1 ~ gene_40 A6h > A3h > A0h, B6h > B3h > B0h
A0h = B0h, A3h = B3h, A0h = B0h
gene_41 ~ gene_80 A6h = A3h > A0h A0h = B0h = B3h = B6h
gene_81 ~ gene_120 A0h = A3h = A6h A0h = B6h = B3h > B0h
gene_121 ~ gene_160 A0h = A6h < A3h A0h = B0h = B3h = B6h
gene_161 ~ gene_200 A0h = A6h < A3h A0h = B0h = B3h < B6h
gene_201 ~ gene_1000 A0h = A3h = A6h = B0h = B3h = B6h

サンプルデータを読み込んでから行列型に変換し、count 変数に代入する。

count <- read.table("https://bi.biopapyrus.jp/data/counts_6_6_timecourse.txt", sep = "\t", header = T, row.names = 1)
count <- as.matrix(count)

dim(count)
## [1] 1000    12

head(count)
##        A1_0h A2_0h A3_3h A4_3h A5_6h A6_6h B1_0h B2_0h B3_3h B4_3h B5_6h B6_6h
## gene_1     1     7    11     0    22    24     0     0     9     3    22    16
## gene_2   170   182   744   683   918   637   128   112   645   517  1248  1234
## gene_3     8    12    37    46   100    94     9     8    30    46    47    63
## gene_4    44    38   109   187   354   225    40    97   103   146   505   343
## gene_5     0     0     5     0     4    10     0     0     1     0     7     4
## gene_6    88   112   372   459  1010   611   129    80   486   360   678   767

maSigPro で解析する際に利用するデザインオブジェクトを作成する。

design <- data.frame(
    Time       = c(0, 0, 3, 3, 6, 6, 0, 0, 3, 3, 6, 6),
    Replicates = c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6),
    Group.A    = c(1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0),
    Group.B    = c(0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1)
)

rownames(design) <- colnames(count)

発現変動遺伝子の検出

次に maSigPro を利用して、 A 群と B 群のデータを比較した際に、発現量に有意差をもつ遺伝子を検出していく。p.vector 関数を実行する前に必要であれば一度正規化してみるのもよい。また、発現量がすべてゼロの行が存在すると、p.vector 関数を実行するときに GLM 関連のエラーが生じるため、予め行合計がゼロの行を取り除きたほうがよい。

d <- make.design.matrix(design)

p <- p.vector(count, d, counts = TRUE)
t <- T.fit(p)

解析結果は get.siggenes 関数を利用して取得する。

res <- get.siggenes(t, vars = "all")
head(res$sig.genes$sig.pvalues)
##             p-value R-squared p.valor_beta0 p.valor_Group.BvsGroup.A
## gene_2 5.663454e-98 0.9846966  5.412354e-11              0.005281268
## gene_3 1.040187e-52 0.9690156  4.160167e-08                       NA
## gene_4 1.041425e-12 0.8502937  4.857296e-10                       NA
## gene_6 1.431419e-38 0.9521809  6.916261e-12                       NA
## gene_7 5.231860e-11 0.7797428  3.536549e-03                       NA
## gene_8 6.574223e-11 0.8450034  2.114619e-04                       NA
##        p.valor_Time p.valor_TimexGroup.B p.valor_Time2 p.valor_Time2xGroup.B
## gene_2 3.930817e-06                   NA  7.612456e-05           0.001298054
## gene_3 5.735014e-05                   NA  1.363964e-02           0.008595316
## gene_4 2.801832e-05                   NA            NA                    NA
## gene_6 6.014336e-05                   NA  9.429070e-03                    NA
## gene_7 1.043090e-04           0.03488876            NA                    NA
## gene_8 9.874559e-04                   NA  1.118752e-02                    NA

解析に用いたサンプルデータには 4 パターンの発現変動遺伝子が存在することがわかっているので、ここでは、解析結果を 4 つのクラスタに分けてみてみる。gene_1 〜 gene_40 は群間に差がないので、群間比較の際に発現変動遺伝子といえないが、なぜかそのパターンが検出されている。

cl <- see.genes(res$sig.genes, k = 4)
head(cl$cut)
## gene_2 gene_3 gene_4 gene_6 gene_7 gene_8
##      1      1      1      1      1      1

tail(cl$cut)
## gene_848 gene_897 gene_936 gene_942 gene_954 gene_999
##        4        1        3        3        2        4
maSigProの解析結果
 
maSigProの解析結果

References

  • Conesa A, Nueda MJ, Ferrer A, Talón M. maSigPro: a method to identify significantly differential expression profiles in time-course microarray experiments. Bioinformatics. 2006, 22(9):1096-102. PubMed Abstract Bioconductor
  • Conesa A and Nueda MJ. maSigPro: Significant Gene Expression Profile Differences in Time Course Microarray Data. Website