This function quantifies the statistical significance of an observed phylotranscriptomic pattern. In detail, the Flat Line Test quantifies any significant deviation of an observed phylotranscriptomic pattern from a flat line.

  permutations = 1000,
  plotHistogram = FALSE,
  runs = 10,
  parallel = FALSE,
  custom.perm.matrix = NULL



a standard PhyloExpressionSet or DivergenceExpressionSet object.


a numeric value specifying the number of permutations that shall be performed for the FlatLineTest.


a logical value indicating whether a detailed statistical analysis concerning the goodness of fit should be performed.


specify the number of runs to be performed for goodness of fit computations. In most cases runs = 100 is a reasonable choice.


performing runs in parallel (takes all cores of your multicore machine).


a custom bootMatrix (permutation matrix) to perform the underlying test statistic. Default is custom.perm.matrix = NULL.


a list object containing the list elements:

  • p.value the p-value quantifying the statistical significance (deviation from a flat line) of the given phylotranscriptomics pattern.

  • the standard deviation of the N sampled phylotranscriptomics patterns for each developmental stage S.


Internally the function performs N phylotranscriptomics pattern computations (TAI or TDI) based on sampled PhyloExpressionSets or DivergenceExpressionSets (see bootMatrix). The test statistics is being developed as follows:

The variance V_pattern of the S phylotranscriptomics values defines the test statistic for the FlatLineTest. The basic assumption is, that the variance of a flat line should be equivalent to zero for a perfect flat line. Any deviation from a flat line can be measured with a variance value > 0.

To determine the null distribution of V_p, all PS or DS values within each developmental stage s are randomly permuted, S surrogate phylotranscriptomics values are computed from this permuted dataset, and a surrogate value of V_p is computed from these S phylotranscriptomics values. This permutation process is repeated N times, yielding a histogram of V_p.

After applying a Lilliefors Kolmogorov-Smirnov Test for gamma distribution, V_p is approximated by a gamma distribution. The two parameters of the gamma distribution are estimated by the function fitdist from the fitdistrplus package by moment matching estimation. The fitted gamma distribution is considered the null distribution of V_pattern, and the p-value of the observed value of V_p is computed from this null distribution.

In case the parameter plotHistogram = TRUE, a multi-plot is generated showing:

(1) A Cullen and Frey skewness-kurtosis plot generated by descdist).

(2) A histogram of V_p combined with the density plot using the Method of Moments estimated parameters returned by the fitdist function using a gamma distribution.

(3) A plot showing the p-values for N independent runs to verify that a specific p-value is biased by a specific permutation order.

The goodness of fit for the random vector V_p is quantified statistically by an adapted Lilliefors (Kolmogorov-Smirnov) test for gamma distributions.


In case there are extreme outlier expression values stored in the dataset (PhyloExpressionSet or DivergenceExpressionSet), the internal fitdist function that is based on the bootMatrix output might return a warning: "In densfun(x, parm[1], parm[2], ...) : NaNs were produced" which indicates that permutation results caused by extreme outlier expression values that could not be fitted accordingly. This warning will not be printed out when the corresponding outlier values are extracted from the dataset.


Drost HG et al. (2015) Mol Biol Evol. 32 (5): 1221-1231 doi:10.1093/molbev/msv012

Quint M et al. (2012). A transcriptomic hourglass in plant embryogenesis. Nature (490): 98-101.

M. L. Delignette-Muller, R. Pouillot, J.-B. Denis and C. Dutang (2014), fitdistrplus: help to fit of a parametric distribution to non-censored or censored data.

Cullen AC and Frey HC (1999) Probabilistic techniques in exposure assessment. Plenum Press, USA, pp. 81-159.

Evans M, Hastings N and Peacock B (2000) Statistical distributions. John Wiley and Sons Inc.

Sokal RR and Rohlf FJ (1995) Biometry. W.H. Freeman and Company, USA, pp. 111-115.

Juergen Gross and bug fixes by Uwe Ligges (2012). nortest: Tests for Normality. R package version 1.0-2.

Dallal, G.E. and Wilkinson, L. (1986): An analytic approximation to the distribution of Lilliefors test for normality. The American Statistician, 40, 294-296.

Stephens, M.A. (1974): EDF statistics for goodness of fit and some comparisons. Journal of the American Statistical Association, 69, 730-737.

See also


Hajk-Georg Drost


# read standard phylotranscriptomics data

# example PhyloExpressionSet using 1000 permutations
             permutations  = 1000, 
             plotHistogram = FALSE)
#> $p.value
#> [1] 1.149108e-10
#> $
#> [1] 0.05435870 0.05397902 0.05287674 0.05161667 0.05002024 0.05078462 0.05514320

# use your own permutation matrix based on which p-values (FlatLineTest)
# shall be computed
custom_perm_matrix <- bootMatrix(PhyloExpressionSetExample,100)

             custom.perm.matrix = custom_perm_matrix)
#> $p.value
#> [1] 4.398572e-15
#> $
#>     Zygote   Quadrant   Globular      Heart    Torpedo       Bent     Mature 
#> 0.05767655 0.05655764 0.05540385 0.05411558 0.05380763 0.05307761 0.05320929