Question: Longitudinal Time-Course microarray experiment with two time points
gravatar for joanasabinopinto
4 weeks ago by
joanasabinopinto0 wrote:

Hi all,

I am currently trying to analyze a microarray dataset from a longitudinal time-course experiment that unfortunately only has two time points. The experiment has two treatments (Control and Infected) with six individuals each. The individuals were sampled at the beginning of the experiment (when all individuals were not infected, the ones in the Infected group were infected after the initial sampling) and at the end of the experiment (when the individuals from the Infected group were indeed infected). In the end I have the following design.

Sample Individual Time Treatment
1 I1 before Control
2 I1 after Control
3 I2 before Control
4 I2 after Control
5 I3 before Infected
6 I3 after Infected
... ... ... ...
23 I12 before Control
24 I12 after Control

I have looked at several techniques (limma, lefse, TcGSa, SAM, MMM, Edge) to try to figure out which probes differ between treatments taking into consideration the individual ID, but I haven't been able to succeed due to technique specifications, such as not allowing for time-course, or longitudinal data. (I know EdgeR would be perfect for it, but it doesn't allow microarray data).

It seems to me that Edge would be the way to go, but when I try to build the study, it gives me the following error:

>de_obj <- build_study(data = m, grp = Treatment, tme = Time,
+                     ind = Individual, sampling = "timecourse")

Error in validObject(object) : 
  invalid class “deSet” object: full model matrix is near singular.

Which I believe is related to the fact that I only have two time points. Is there a way to work around my time point limitation? Hope you can help me with this!

Cheers, Joana

> sessionInfo()
R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)

Matrix products: default

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] edge_2.14.0         Biobase_2.42.0      BiocGenerics_0.28.0

loaded via a namespace (and not attached):
 [1] magic_1.5-9          jackstraw_1.3        bit64_0.9-7          splines_3.5.3       
 [5] gtools_3.8.1         TcGSA_0.12.4         assertthat_0.2.1     stats4_3.5.3        
 [9] blob_1.2.0           backports_1.1.5      pillar_1.4.2         RSQLite_2.1.2       
[13] lattice_0.20-38      limma_3.38.3         glue_1.3.1           digest_0.6.22       
[17] qvalue_2.14.1        minqa_1.2.4          colorspace_1.4-1     cowplot_1.0.0       
[21] Matrix_1.2-15        plyr_1.8.4           XML_3.98-1.20        pkgconfig_2.0.3     
[25] genefilter_1.64.0    purrr_0.3.3          xtable_1.8-4         corpcor_1.6.9       
[29] scales_1.0.0         gdata_2.18.0         ClusterR_1.2.0       BiocParallel_1.16.6 
[33] lme4_1.1-21          tibble_2.1.3         annotate_1.60.1      mgcv_1.8-27         
[37] gmp_0.5-13.5         IRanges_2.16.0       ggplot2_3.2.1        lazyeval_0.2.2      
[41] survival_2.43-3      magrittr_1.5         crayon_1.3.4         snm_1.30.0          
[45] memoise_1.1.0        gplots_3.0.1.1       nlme_3.1-137         MASS_7.3-51.1       
[49] GSA_1.03.1           vegan_2.5-6          tools_3.5.3          matrixStats_0.55.0  
[53] FD_1.0-12            stringr_1.4.0        S4Vectors_0.20.1     lfa_1.12.0          
[57] munsell_0.5.0        cluster_2.0.7-1      irlba_2.3.3          AnnotationDbi_1.44.0
[61] ade4_1.7-13          compiler_3.5.3       rsvd_1.0.2           caTools_1.17.1.2    
[65] rlang_0.4.1          grid_3.5.3           RCurl_1.95-4.12      nloptr_1.2.1        
[69] rstudioapi_0.10      bitops_1.0-6         boot_1.3-20          multtest_2.38.0     
[73] geometry_0.4.4       gtable_0.3.0         abind_1.4-5          DBI_1.0.0           
[77] reshape2_1.4.3       R6_2.4.0             dplyr_0.8.3          zeallot_0.1.0       
[81] bit_1.1-14           KernSmooth_2.23-15   permute_0.9-5        ape_5.3             
[85] stringi_1.4.3        sva_3.30.1           Rcpp_1.0.3           vctrs_0.2.0         
[89] tidyselect_0.2.5
microarray dge edge • 50 views
ADD COMMENTlink modified 4 weeks ago by Gordon Smyth39k • written 4 weeks ago by joanasabinopinto0
Answer: Longitudinal Time-Course microarray experiment with two time points
gravatar for Gordon Smyth
4 weeks ago by
Gordon Smyth39k
Walter and Eliza Hall Institute of Medical Research, Melbourne, Australia
Gordon Smyth39k wrote:

I wonder what technical difficulties caused you problems with limma? You say that edgeR would be perfect, but limma and edgeR are identical in terms of design setup and so on.

Your experiment is almost a standard paired-comparison design. A simple way to setup the limma design matrix is like this:

Control <- Time=="after" & Treatment=="Control"
Infected <- Time=="after" & Treatment=="Infected"
design <- model.matrix(~Individual + Control + Infected)

This allows you to test for before-vs-after differential expression separately for the control and infected treatments.

Alternatively, you could follow the approach described in Section 9.7 of the limma User's Guide or the approach in Section 3.5 of the edgeR User's Guide. The code I've given above is actually equivalent to the edgeR Section 3.5 approach.

ADD COMMENTlink modified 4 weeks ago • written 4 weeks ago by Gordon Smyth39k

As far as I understand limma does not allow for longitudinal time course data. I initially did as you mentioned above, but doing that completely neglects the information available on the "state" of the individuals at the beginning of the experiment. I basically would like to include that data and compare the trends in the probes (after-before) between treatments, and not just compare the after time points.

ADD REPLYlink written 4 weeks ago by joanasabinopinto0
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 143 users visited in the last hour