Capítulo 1

Survey of Monilinia fructicola sensitivity to tebuconazole and reverse a shift towards resistance in Brazil

Authors
Paulo S.F. Lichtemberg
Walmes M. Zeviani
Louise L. May De Mio

Institutions
LEMID
LEG


Objectives

Paulo, passar tudo para o inglês.

Guias gerais. 1) usar sempre dois sinais de hash nos comentários, 2) não deixar linhas ultrapassagem 72 caracters para não ter código fora das margens, 3) evitar de deixar mais de uma linha em branco entre paragrafos e instruções do R, 4) usar quadro asteriscos seguidos para fazer linhas divisórias horizontais.

  1. Verificar mudanças na sensibilidade de Monilinia fructicola ao tebuconazol entre populações de isolados.

  2. Verificar diferenças na sensibilidade de Monilinia fructicola ao tebuconazol entre origens de isolados (na população atual).

  3. Determinar a frequência da resistência de isolados de Monilinia fructicola ao tebuconazole empregando três diferentes métodos (na população atual).


Material and methods

Paulo, veja que eu fiz pequenas modificações na forma de escrever o texto.

A total of 295 isolates of M. fructicola were obtained from symptomatic and mummified peach fruits collected in the States of São Paulo (SP), Paraná (PR) and Rio Grande do Sul (RS), Brazil, during 2009 to 2011. Single-spores isolates were cultured in full strength acidified potato dextrose agar – APDA (2.5 ml of lactic acid at 25% [w/v] from Hi-Media Laboratories, Mumbai) and incubated for 4 days at 22°C with 12 hours light regime. A 4-mm mycelial plug was used as a start inoculum by transferring from the colony edge to a fresh fungicide amended media. Tebuconazole stock solution was prepared by dissolving the commercial product –Folicur 200 EC Bayer S.A.– (a.i. 200 g/l) in 100% ethanol to obtain a 10 and 100 mg a.i./ml concentrations.

The frequency of M. fructicola resistance to tebuconazole was determined by two different approaches. First, the 295 isolates were tested for relative growth under the discriminatory dose. The second approach utilized EC50 values, determined for 120 selected isolates. Data was taken by averaging two perpendicular diameters of colony growth after 5 days incubation at 22°C with a 12 hours light regime and subtracting the 5 mm of the inoculum plug.

For the relative growth, tebuconazole stock solution was added to APDA cooled at 45°C after sterilization, to produce a final concentration of 0.3 μg/ml (discriminatory dose determined for propiconazole). Inoculum was placed into the tebuconazole amended and unamended APDA media, performing three repetitions for each sample. The percentage of culture growth in amended media was recorded and expressed as a percentage of its growth in unamended media. Resistant isolates were defined as those with at least 50% of the growth recorded in unamended media.

The EC50 value was determined for tebuconazole amended media at concentrations of 0, 0.01, 0.04, 0.16, 0.64, 2.56 and 10.24 μg/ml. The EC50 results allowed us to segregate sensitivity in two different ways: one as performed by the approach of May De Mio et al. (2011), where an isolate of M. fructicola was considered resistant when its EC50 value was greater than 0.3 μg/ml, and other way was based on a baseline value of 0.04 μg/ml reported by May De Mio et al. (2011) for isolates from Southern Brazil without tebuconazole sprays. Two repetitions for each isolate were prepared per concentration. Tebuconazole EC50 value was calculated from the corresponding simple regression equation for each isolate estimated for y (relative growth) as function of log(x) (tebuconazole dose). Arithmetic mean of EC50 values were calculated separately by origin and statistical differences were verified using the Student’s t-test at 5% nominal significance. The statistical software R was used for data analysis.


Data analysis

Session definitions

##----------------------------------------------------------------------------
## Session Definition      

pkg <- c("lattice", 
         "latticeExtra",
         "gridExtra",
         "doBy", 
         "multcomp",
         "plyr",
         "MASS", 
         "wzRfun")

sapply(pkg, library, character.only=TRUE, logical.return=TRUE)

##-----------------------------------------------------------------------------
## Trellis plots settings.

lattice.options(default.theme=modifyList(standard.theme(color=FALSE),
                    list(strip.background=list(col="transparent"))))
## trellis.device(color=FALSE)

Reading data

##----------------------------------------------------------------------------
## Read the data.

da <- read.table("ec50result.txt", header=TRUE,
                 sep="\t", dec=",",
                 stringsAsFactors=TRUE)
## str(da)

da <- transform(da,
                iso=factor(iso),
                ori=factor(ori),
                yrs=factor(yrs)) 
str(da)
## 'data.frame':    239 obs. of  4 variables:
##  $ iso : Factor w/ 225 levels "2","3","6","10",..: 125 126 127 128 129 1 3 5 6 13 ...
##  $ ori : Factor w/ 4 levels "PR","RS","SC",..: 2 2 2 2 2 1 1 1 1 1 ...
##  $ yrs : Factor w/ 11 levels "2000","2002",..: 1 1 1 1 1 2 2 2 2 2 ...
##  $ ec50: num  0.01 0.05 0.05 0.07 0.02 ...
## Order of isolates inside year.
newl <- by(data=da$iso, INDICES=da$yrs, FUN=function(x) levels(droplevels(x)))

## Os número para os isolados são identificações únicas dentro de cada
## ano. Tem isolados em anos diferentes com o mesmo número
## identificador. Trata-se do mesmo isolado ou não?

length(unlist(newl))
## [1] 239
nlevels(da$iso)
## [1] 225
## Combinar ano e número de isolado para indentificá-los de forma única.
da$iso <- with(da, interaction(yrs, iso, drop=TRUE))

## Ordenar níveis de isolados dentro dos anos pelo valor da EC50, apenas
## para ter um gráfico de mais fácil leitura.
da <- arrange(da, yrs, ec50)
da$iso <- factor(da$iso, levels=as.character(da$iso))

## Frequency table with total in the margins.
addmargins(xtabs(~yrs+ori, data=da))
##       ori
## yrs     PR  RS  SC  SP Sum
##   2000   0   5   0   0   5
##   2002   9   0   4   0  13
##   2003   5   4   0   0   9
##   2004   4   0   0   0   4
##   2005   0   4   1   3   8
##   2006   0   0   0  10  10
##   2007   6   0   0   8  14
##   2008   6  17  24   9  56
##   2009   3   0   0  29  32
##   2010  11  17   0   8  36
##   2011  18  26   0   8  52
##   Sum   62  73  29  75 239
##----------------------------------------------------------------------------
## EC50 preliminaries.

## Number of missings values.
sum(is.na(da$ec50))
## [1] 0
## Scatter plot.
xyplot(log(ec50)~iso, data=da,
       xlab="Isolates", ylab=expression(log(EC[50])),
       scales=list(x=list(rot=90, draw=TRUE)))

plot of chunk unnamed-chunk-4

qqmath(~log(ec50)|yrs, data=da,
       xlab="Teoretical quantiles",
       ylab=expression(log(EC[50])))

plot of chunk unnamed-chunk-4

p1 <- xyplot(log(ec50)~iso|yrs, data=da, layout=c(NA,1),
             xlab="Isolates", ylab=expression(log(EC[50])),
             scales=list(x=list(rot=90, relation="free", draw=FALSE)))


## Nember of isolates in each year.
n <- by(data=da$iso, INDICES=da$yrs,
        FUN=function(x) nlevels(droplevels(x)))
## str(n)

resizePanels(p1, w=n)

plot of chunk unnamed-chunk-5

da$year <- as.integer(as.character(da$yrs))
xyplot(log(ec50)~year, data=da, jitter.x=TRUE,
       xlab="Year", ylab=expression(log(EC[50])),
       panel = function(...) {
           panel.xyplot(...)
           panel.smoother(..., span=0.5, se=TRUE)
       })

plot of chunk unnamed-chunk-6

Olhando para o padrão zig-zag desse gráfico tem-se indicativo de crescimento de EC50 de 2000 para 2006, cai para 2007 que sobe até 2009, então cai novamente em 2010. O que será que está associado à queda de 2006 para 2007 e 2009 para 2010? Não seria mais interessante dividir os anos de estudo em 2000 até 2006, 2007 até 2009 e 2010 com 2011? Tal padrão é no mínimo curioso.


Sensitivity distribution between populations along the years

Na minha opinião, não tem-se a necessidade de remover os isolados de SC, haja visto que o que está sendo avaliado são os anos sem considerar origem.

##----------------------------------------------------------------------------
## Density and acumulated frequency plot (shift entre populações).

da$estud <- cut(as.integer(as.character(da$yrs)),
                c(2000, 2005, 2009, 2011),
                labels=c("2000-2004", "2005-2008", "2009-2011"),
                right=FALSE, include=TRUE)
xtabs(~estud+yrs, da)
##            yrs
## estud       2000 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011
##   2000-2004    5   13    9    4    0    0    0    0    0    0    0
##   2005-2008    0    0    0    0    8   10   14   56    0    0    0
##   2009-2011    0    0    0    0    0    0    0    0   32   36   52
p1 <-
    densityplot(~ec50,
                groups=estud,
                scales=list(x=list(log=10)),
                data=da,
                ## data=subset(da, ori!="SC"),
                auto.key=list(columns=3), n=500,
                xlab=expression(log[10]~EC[50]),
                ylab="Density", plot.points="rug",
                xscale.components=xscale.components.log10.3,
                page=function(page){
                    grid.text("(A)", x=0.05, y=0.95)
                })

p2 <-
    ecdfplot(~ec50,
             groups=estud,
             scales=list(x=list(log=10)),
             data=da,
             ## data=subset(da, ori!="SC"),
             auto.key=list(columns=3),
             xlab=expression(log[10]~EC[50]),
             ylab="Cumulative relative frequency",
             xscale.components=xscale.components.log10.3,
             page=function(page){
                 grid.text("(B)", x=0.05, y=0.95)
             })

## plot(p1, split=c(1,1,1,2), more=TRUE)
## plot(p2, split=c(1,2,1,2), more=FALSE)
grid.arrange(p1, p2, ncol=1)

plot of chunk unnamed-chunk-7

##-----------------------------------------------------------------------------
## Kolmogorov-smirnov test for equal EC50 distribution.

E <- split(da$ec50, f=da$estud)

ks.test(x=E[["2000-2004"]], y=E[["2005-2008"]])
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  E[["2000-2004"]] and E[["2005-2008"]]
## D = 0.3842, p-value = 0.002304
## alternative hypothesis: two-sided
ks.test(x=E[["2000-2004"]], y=E[["2009-2011"]])
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  E[["2000-2004"]] and E[["2009-2011"]]
## D = 0.3282, p-value = 0.009902
## alternative hypothesis: two-sided
ks.test(x=E[["2005-2008"]], y=E[["2009-2011"]])
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  E[["2005-2008"]] and E[["2009-2011"]]
## D = 0.3795, p-value = 8.883e-07
## alternative hypothesis: two-sided

Sensitivity distribution between origins

##-----------------------------------------------------------------------------

p1 <-
    densityplot(~ec50,
                groups=ori,
                scales=list(x=list(log=10)),
                data=droplevels(subset(da, estud=="2009-2011")),
                auto.key=list(columns=3), n=500,
                xlab=expression(log[10]~EC[50]),
                ylab="Density", plot.points="rug",
                xscale.components=xscale.components.log10.3,
                page=function(page){
                    grid.text("(A)", x=0.05, y=0.95)
                })

p2 <-
    ecdfplot(~ec50,
             groups=ori,
             scales=list(x=list(log=10)),
             data=droplevels(subset(da, estud=="2009-2011")),
             auto.key=list(columns=3),
             xlab=expression(log[10]~EC[50]),
             ylab="Cumulative relative frequency",
             xscale.components=xscale.components.log10.3,
             page=function(page){
                 grid.text("(B)", x=0.05, y=0.95)
             })

## plot(p1, split=c(1,1,1,2), more=TRUE)
## plot(p2, split=c(1,2,1,2), more=FALSE)
grid.arrange(p1, p2, ncol=1)

plot of chunk unnamed-chunk-9

##-----------------------------------------------------------------------------
## Kolmogorov-smirnov test for equal EC50 distribution.

L <- with(droplevels(subset(da, estud=="2009-2011")),
          split(ec50, f=ori))

ks.test(x=L[["PR"]], y=L[["RS"]])
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  L[["PR"]] and L[["RS"]]
## D = 0.2391, p-value = 0.198
## alternative hypothesis: two-sided
ks.test(x=L[["PR"]], y=L[["SP"]])
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  L[["PR"]] and L[["SP"]]
## D = 0.5097, p-value = 5.824e-05
## alternative hypothesis: two-sided
ks.test(x=L[["RS"]], y=L[["SP"]])
## 
##  Two-sample Kolmogorov-Smirnov test
## 
## data:  L[["RS"]] and L[["SP"]]
## D = 0.5767, p-value = 1.897e-07
## alternative hypothesis: two-sided

Na minha opinião, testar médias de EC50 entre anos ou origens requer cuidado. Mesmo as médias sendo iguais, não quer dizer que a distribuição da EC seja, pois em uma delas pode haver mais variação (amplitude) que em outra. Então por mais que seja possível comparar médias, aceitar a hipótese de que as médias são iguais não significa aceitar a hipótese de que a distribuição também é.

Por causa da diferença de variância (amplitude) entre as distribuições, não será feito o teste t baseado ou após a anova. Será feito o teste t para populações com variância não igual. Como já se antecipou pelos gráficos, o log da EC50 tem disitribuição mais simétrica que a EC50, então o teste será feito na escala log para haver atendimento dos pressupostos.

##-----------------------------------------------------------------------------
## Estimativas de médias, medianas e percentis de 10 e 90%.

stats <- function(x){
    s <- c(mean(x), median(x),
           quantile(x, probs=c(0.1,0.9)))
    names(s) <- c("mean","median","10%perc","90%perc")
    return(s)
}

aggregate(log(ec50)~estud, data=da, FUN=stats)
##       estud log(ec50).mean log(ec50).median log(ec50).10%perc log(ec50).90%perc
## 1 2000-2004        -3.3089          -3.3242           -3.9120           -2.6593
## 2 2005-2008        -2.2602          -2.8134           -3.8860           -0.6327
## 3 2009-2011        -3.5184          -3.4718           -5.5643           -1.2675
## aggregate(log(ec50)~estud, data=da, FUN=each(mean, median))

##-----------------------------------------------------------------------------
## Welch t teste para comparar médias entre os anos de estudo.

t.test(x=E[["2000-2004"]], y=E[["2005-2008"]])
## 
##  Welch Two Sample t-test
## 
## data:  E[["2000-2004"]] and E[["2005-2008"]]
## t = -1.973, df = 87, p-value = 0.05168
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -11.14882   0.04141
## sample estimates:
## mean of x mean of y 
##   0.04661   5.60032
t.test(x=E[["2000-2004"]], y=E[["2009-2011"]])
## 
##  Welch Two Sample t-test
## 
## data:  E[["2000-2004"]] and E[["2009-2011"]]
## t = -2.797, df = 146.9, p-value = 0.005851
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.08043 -0.01383
## sample estimates:
## mean of x mean of y 
##   0.04661   0.09374
t.test(x=E[["2005-2008"]], y=E[["2009-2011"]])
## 
##  Welch Two Sample t-test
## 
## data:  E[["2005-2008"]] and E[["2009-2011"]]
## t = 1.956, df = 87, p-value = 0.05366
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.08858 11.10174
## sample estimates:
## mean of x mean of y 
##   5.60032   0.09374

Frequency distribution to the sensibility classification

##----------------------------------------------------------------------------
## Read data.

## Não fazer a coluna dos totais.

m <- read.table("freqres.txt", header=TRUE, sep="\t")
## m

m <- subset(m, origem!="total")

m1 <- subset(m, select=c("R","S"), metodo=="relative growth")
m2 <- subset(m, select=c("R","S"), metodo=="larissa")
m3 <- subset(m, select=c("R","S"), metodo=="baseline")

rownames(m1) <- rownames(m2) <- rownames(m3) <-
    c("SP","PR","RS")
    ## c("SP","PR","RS","total")

##-----------------------------------------------------------------------------
## A function to made a mosaictplot with frequency annotations.

mosaicplot2 <- function(M, ...){
    mosaicplot(M, ...)
    te <- rowSums(M) 
    pv <- rep((cumsum(te)-0.5*te)/sum(te), 2) 
    mr <- M/te 
    ms <- t(apply(mr[rev(seq_len(ncol(mr)))], 1,
                  function(x) cumsum(x)-1*x))
    ph <- t(apply(M[, rev(1:ncol(M))], 1,
                  function(te){
                      (cumsum(te)-0.5*te)/sum(te)
                  }))
    u <- unlist(M[,2:1])
    v <- unlist(mr[,2:1])
    pt <- paste(u, " (",
                formatC(100*v, digits=1, format="f"),
                ")", sep="")
    pt[grep("^0", pt)]  <- ""
    text(x=pv, y=ph, labels=pt, cex=0.8)
    mtext(side=1, at=pv[1:4], cex=0.7, text=te)
}
##-----------------------------------------------------------------------------
## Mosaicplot.

cols <- c("gray80","white")
par(mfrow=c(1,3), mar=c(4,2,4,1))
mosaicplot2(m1, off=c(2,1), col=cols, cex.axis=1,
            main=expression((A) - Relative~growth>=0.5))
mosaicplot2(m2, off=c(2,1), col=cols, cex.axis=1,
            main=expression((B) - EC[50]~to~0.3~mu*g/ml))
mosaicplot2(m3, off=c(2,1), col=cols, cex.axis=1,
            main=expression((C) - EC[50]~to~0.04~mu*g/ml))

plot of chunk unnamed-chunk-13


Software and packages version

##----------------------------------------------------------------------------
## Versions.

sessionInfo()
## R version 3.1.1 (2014-07-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=pt_BR.UTF-8       
##  [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=pt_BR.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=pt_BR.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
## [10] LC_TELEPHONE=C             LC_MEASUREMENT=pt_BR.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] splines   grid      stats     graphics  grDevices utils     datasets  base     
## 
## other attached packages:
##  [1] wzRfun_0.4          plyr_1.8.1          multcomp_1.3-6      TH.data_1.0-3      
##  [5] mvtnorm_0.9-9997    doBy_4.5-10         MASS_7.3-34         survival_2.37-7    
##  [9] gridExtra_0.9.1     latticeExtra_0.6-26 RColorBrewer_1.0-5  lattice_0.20-29    
## [13] rmarkdown_0.3.10    knitr_1.6          
## 
## loaded via a namespace (and not attached):
##  [1] digest_0.6.4    evaluate_0.5.5  formatR_1.0     htmltools_0.2.6 lme4_1.1-7     
##  [6] Matrix_1.1-4    methods_3.1.1   minqa_1.2.3     nlme_3.1-117    nloptr_1.0.4   
## [11] Rcpp_0.11.0     sandwich_2.3-0  stringr_0.6.2   tools_3.1.1     yaml_2.1.13    
## [16] zoo_1.7-10
##-----------------------------------------------------------------------------
## Citation.

citation()
## 
## To cite R in publications use:
## 
##   R Core Team (2014). R: A language and environment for statistical computing. R
##   Foundation for Statistical Computing, Vienna, Austria. URL
##   http://www.R-project.org/.
## 
## A BibTeX entry for LaTeX users is
## 
##   @Manual{,
##     title = {R: A Language and Environment for Statistical Computing},
##     author = {{R Core Team}},
##     organization = {R Foundation for Statistical Computing},
##     address = {Vienna, Austria},
##     year = {2014},
##     url = {http://www.R-project.org/},
##   }
## 
## We have invested a lot of time and effort in creating R, please cite it when
## using it for data analysis. See also 'citation("pkgname")' for citing R
## packages.
##-----------------------------------------------------------------------------
## Last modification.

Sys.time()
## [1] "2014-12-17 18:48:15 BRST"