Skip to contents

Germination T50 is the time at which 50% of the viable seeds in an experiment have germinated. One approach to calculate T50 values is to use Coolbear et al. (1984) formula modified by Farooq et al.(2005).

Coolbear et al. (1984) formula modified by Farooq et al.(2005)
Coolbear et al. (1984) formula modified by Farooq et al.(2005)

where N is the final number of germinating seeds and nj and ni are the cumulative number of seeds germinated by adjacent counts at times tj and ti , respectively, when ni < N/2 < nj. In essence, this formula identifies the midpoint of the cumulative germination sigmoidal curve, where the slope is steepest.

coolbear() requires a vector of cumulative germination, a vector of the dates or times at which these germinations were recorded, and the total number of viable seeds in the experiment.

total_viable_seeds<-25
time_germination_recorded<-c(seq(1,12,1)) #germination scored daily for 12 days
cumulative_germination<-c(0,0,0,0,1,3,6,7,15,16,23,25)

coolbear(time_germination_recorded,cumulative_germination,total_viable_seeds)
#> [1] 8.6875

If T50 can’t be calculated (e.g. not enough seeds germinated) the function will output NA. ‘coolbear()’ can efficiently be used within a loop to calculate T50 of several experiments at a time. Given the following germination experiment results (including a row with final viability):

germination_results<-data.frame(days=c(seq(1,12,1)),
                                exp1=c(0,0,0,0,0,0,0,9,9,9,9,9),
                                exp2=c(0,2,5,6,7,12,16,25,25,25,25,25),
                                exp3=c(0,0,0,10,15,20,25,26,27,28,28,30))

germination_results
#>    days exp1 exp2 exp3
#> 1     1    0    0    0
#> 2     2    0    2    0
#> 3     3    0    5    0
#> 4     4    0    6   10
#> 5     5    0    7   15
#> 6     6    0   12   20
#> 7     7    0   16   25
#> 8     8    9   25   26
#> 9     9    9   25   27
#> 10   10    9   25   28
#> 11   11    9   25   28
#> 12   12    9   25   30

coolbear() can easily be implemented like:

for (col in colnames(germination_results)[-1]) {
  
  T50<-coolbear(day=germination_results$days,
           cumulative=germination_results[[col]],
           n=25)
  
  print(paste(col,"- T50:", T50))
}
#> [1] "exp1 - T50: NA"
#> [1] "exp2 - T50: 6.125"
#> [1] "exp3 - T50: 4.5"

Note the function has been feed with a fixed number of viable seeds, but this can be modified to be a vector to adapt for different viabilities across experiments and replicates