##Pacotes necessarios
require(untb)
require(distr)
require(vegan)

##Funcoes para rank-abundance plots e os esperados por uma SAD teorica
w.plot <- function(x,...){
  plot(1:length(x),x[order(x,decreasing=T)],
       xlab="Species Rank",ylab="Species Abundance",log="y",...)
}

## Acrescenta novos conjuntos de dados ao grafico
points.w.plot <- function(x,...){
  points(1:length(x),x[order(x,decreasing=T)],...)
}

## Grafico rankabundancia com as linahs dos previstos pelos modelos classicos
radplot <- function(y,cores=c("black","blue","red","darkgreen","darkorange"),
                    lwd=rep(1,4),...){
  w.plot(y,col="darkgrey")
  lines(rad.null(y),col=cores[1],lwd=lwd[1],...)#brokenstick
  curve(rad.lnormtf(y)(x),add=T,col=cores[2],lwd=lwd[2],...)#lognormal truncada
  curve(rad.logserf(y)(x),add=T,col=cores[3],lwd=lwd[3],...)#logserie
  lines(rad.preempt(y),col=cores[4],lwd=lwd[4],...)#geometrica
  legend(x="topright", c("Brokenstick","Lognormal","Logseries","Geometric"),lty=1,col=cores,...)
}

##Para calculo da abundancia esperada para cada rank
## o argumento sad já deve ser a funcao de distribuicao de probabilidades
## com os parametros ajustados. O argumento padroniza indica
## se é preciso padronizar a distribuicao para ter integral 1
w.plot.exp <- function(sad,S,N,padroniza=F,...){
  f1 <- AbscontDistribution(d=sad,withStand=padroniza,...)
  p <- ppoints(S)
  ab <- q(f1)(p)
  data.frame(rank=1:S, abund=ab[S:1])
}


