Commit 88c42fb8 authored by Georges Kunstler's avatar Georges Kunstler
Browse files

progress on slides

parent 7c7578ca
......@@ -9,7 +9,11 @@ type.filling <- 'species'
var.sample <- 'ecocode.id'
files <- c()
for (trait in traits){
for(model in c(model.files.glmer.Tf.1)){
for(model in c(model.files.glmer.Tf.1,
model.files.glmer.Tf.2,
model.files.glmer.Tf.3,
model.files.glmer.Tf.4,
model.files.glmer.Tf.5)){
source(model, local = TRUE)
model.obj <- load.model()
pathout <- output.dir.glmer('all.no.log', model.obj$name, trait,
......
......@@ -238,6 +238,7 @@ tree.id <- factor(data.tree[["tree.id"]])
plot.id <- factor(data.tree[["plot"]])
set.id <- factor(data.tree[["set"]])
ecocode.id <- factor(data.tree[['ecocode']])
biomes.id <- factor(data.tree[['biomes']])
#= multiply CWMs by BATOT
sumTnTfBn.abs <- data.tree[[abs.CWM.tntf]]*data.tree[[BATOT]]
sumTnBn <- data.tree[[CWM.tn]]*data.tree[[BATOT]]
......@@ -279,6 +280,7 @@ tree.id <- factor(data.tree[["tree.id"]])
plot.id <- factor(data.tree[["plot"]])
set.id <- factor(data.tree[["set"]])
ecocode.id <- factor(data.tree[['ecocode']])
biomes.id <- factor(data.tree[['biomes']])
#get the three cwm per cat
vec.CWM.tn <- paste(CWM.tn, c('A_EV', 'A_D', 'C'), sep = '.')
......
......@@ -12,7 +12,8 @@ for (trait in traits){
model.files.lmer.Tf.2,
model.files.lmer.Tf.3,
model.files.lmer.Tf.4,
model.files.lmer.Tf.5)){
model.files.lmer.Tf.5,
model.files.lmer.Tf.CAT.1)){
source(model, local = TRUE)
model.obj <- load.model()
pathout <- output.dir('lmer', model.obj$name, trait, 'all.no.log',
......@@ -33,30 +34,31 @@ names(out) <- lapply(lapply(files,files.details.all),
out <- out[!unlist(lapply(out,FUN=function(x) is.null(x$lmer.summary)))]
saveRDS(out,file='output/list.lmer.out.all.ecocode.id.no.log.rds')
## ## LOOP OVER FILES AND NOT SCAN ALL FILES
## traits <- c("SLA", "Wood.density","Max.height")
## type.filling <- 'species'
## files <- c()
## for (trait in traits){
## for(model in c(model.files.lmer.Tf.4b,
## model.files.lmer.Tf.3)){
## source(model, local = TRUE)
## model.obj <- load.model()
## pathout <- output.dir('lmer', model.obj$name, trait, 'all.no.log',
## type.filling=type.filling)
## LOOP OVER FILES AND NOT SCAN ALL FILES
traits <- c("SLA", "Wood.density","Max.height")
type.filling <- 'species'
files <- c()
for (trait in traits){
for(model in c(model.files.lmer.Tf.1,
model.files.lmer.Tf.2,
model.files.lmer.Tf.3)){
source(model, local = TRUE)
model.obj <- load.model()
pathout <- output.dir('lmer', model.obj$name, trait, 'all.no.log',
type.filling=type.filling)
## files <- c(files,file.path(pathout,"species.id.results.nolog.all.rds"))
files <- c(files,file.path(pathout,"species.id.results.nolog.all.rds"))
## }
## }
}
}
## out <- lapply(files, summarise.lmer.output.all.list, random.name = 'biomes.id')
## names(out) <- lapply(lapply(files,files.details.all),
## function(x) paste(as.vector(x[names(x) != 'file']),
## collapse="_"))
## ### remove missing
## out <- out[!unlist(lapply(out,FUN=function(x) is.null(x$lmer.summary)))]
## saveRDS(out,file='output/list.lmer.out.all.species.id.no.log.rds')
out <- lapply(files, summarise.lmer.output.all.list, random.name = 'biomes.id')
names(out) <- lapply(lapply(files,files.details.all),
function(x) paste(as.vector(x[names(x) != 'file']),
collapse="_"))
### remove missing
out <- out[!unlist(lapply(out,FUN=function(x) is.null(x$lmer.summary)))]
saveRDS(out,file='output/list.lmer.out.all.species.id.no.log.rds')
## ## LOOP OVER FILES AND NOT SCAN ALL FILES
......
## plot for test.traits
fun.plots.test.traits <- function(all.traits,
trait.name = c("Leaf.N.mean","SLA.mean",
"Wood.density.mean","Max.height.mean"),
pch.vec = fun.col.pch.set()$pch.vec,
col.vec = fun.col.pch.set()$col.vec){
col.vec = fun.col.pch.set()$col.vec,
vec.sets = sets){
trait.name <- c("Leaf.N.mean","SLA.mean",
"Wood.density.mean","Max.height.mean")
pdf("figs/test.traits/traits.XY.set.pdf",height=9,width=6)
t.min <- c(2,1,0.1,1)
t.max <- c(60,100,1.5,100)
par(mfrow=c(3,2))
for (i in 1:3) {
for (j in (i+1):4) {
for (i in 1:(length(trait.name) - 1)) {
for (j in (i+1):length(trait.name)) {
plot(all.traits[[trait.name[i]]] ,all.traits[[trait.name[j]]],
col=col.vec[all.traits$set],pch=pch.vec[all.traits$set],
xlab=trait.name[i],ylab=trait.name[j],
log="xy",xlim=c(t.min[i],t.max[i]),ylim=c(t.min[j],t.max[j]),
cex=0.2)
## lapply(sets,fun.ellipsoid.hull,
## lapply(vec.sets,fun.ellipsoid.hull,
## all.traits[[trait.name[i]]] ,
## all.traits[[trait.name[j]]],
## all.traits[['set']],col.vec=col.vec)
}
}
legend("topright", legend = sets, bty = "n", col = col.vec[sets],
pch = pch.vec[sets], cex = 0.7)
legend("topright", legend = vec.sets, bty = "n", col = col.vec[vec.sets],
pch = pch.vec[vec.sets], cex = 0.7)
dev.off()
......@@ -113,3 +115,44 @@ par(mfrow=c(2,2))
dev.off()
}
##
## plot for test.traits
fun.plots.test.traits.pres <- function(all.traits,
trait.name = c("SLA.mean",
"Wood.density.mean","Max.height.mean"),
trait.lab = c(expression(paste('SLA ' ,
(mm^2/mg))),
expression(paste('Wood density ',
( mg/mm^3))),
expression(paste('Max height ' ,
(m)))),
pch.vec = fun.col.pch.set()$pch.vec,
col.vec = fun.col.pch.set()$col.vec,
vec.sets = sets){
pdf("figs/test.traits/traits.XY.set.pres.pdf",height=6,width=6)
par(mfrow=c(2,2))
for (i in 1:(length(trait.name) - 1)) {
for (j in (i+1):length(trait.name)) {
plot(all.traits[[trait.name[i]]] ,
all.traits[[trait.name[j]]],
col=col.vec[all.traits$set],
pch=pch.vec[all.traits$set],
xlab=trait.lab[i],
ylab=trait.lab[j],
log="xy",
cex=0.5)
}
}
par(mar = c(0, 0, 0, 0))
plot(1,1,type="n", axes=F, xlab="", ylab="")
legend("center", legend = vec.sets, bty = "n", col = col.vec[vec.sets],
pch = pch.vec[vec.sets], cex = 0.7)
dev.off()
}
......@@ -40,6 +40,19 @@ names.biomes[8] <- 'Trop rain forest'
## DO PLOT OF PATTERN
## TODO IN PLOT REMOVE BIOMES Tundra and Subtropical desert
data.temp <- data.summarise[!data.summarise$biomes %in% c('Tundra',
'Temperate grassland desert',
'Subtropical desert'), ]
data.temp$biomes <- factor(data.temp$biomes)
## shorter name for biomes
names.biomes.t <- levels(factor(data.temp$biomes))
names.biomes.t[1] <- 'Boreal'
names.biomes.t[2] <- 'Temp forest'
names.biomes.t[3] <- 'Medit'
names.biomes.t[4] <- 'Temp rain forest'
names.biomes.t[5] <- 'Trop forest'
names.biomes.t[6] <- 'Trop rain forest'
## need to look at what is Temperate grassland desert
## Total basal area for each plots
......@@ -48,103 +61,91 @@ layout(m, widths=c(4,1.),
heights=c(1))
par.old <- par()
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(BATOT ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(BATOT ~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('Basal area ' ,(cm^2/m^2))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mar=c(0, 0, 0, 0))
plot(1,1,type="n", axes=F, xlab="", ylab="")
legend("center",legend = names.biomes,
fill = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
legend("center",legend = names.biomes.t,
fill = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
bty = 'n', cex = 1.1)
par(par.old)
tapply(data.summarise$n_sp, data.summarise$biomes, max, na.rm =TRUE)
## species diversity each plots
m <- matrix(c(1:2,3,3), 2, 2)
layout(m, widths=c(4,1),
heights=c(1,1))
par.old <- par()
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(n_sp~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(n_sp~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('Number of species' )),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(exp(shannon)~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(exp(shannon)~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('Number of species' )),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mar=c(0, 0, 0, 0))
plot(1,1,type="n", axes=F, xlab="", ylab="")
legend("center",legend = names.biomes,
fill = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
legend("center",legend = names.biomes.t,
fill = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
bty = 'n', cex = 1)
par(par.old)
## traits means
m <- matrix(c(1:4,5,5), 2, 3)
layout(m, widths=c(4,4,2),
m <- matrix(c(1:4), 2, 2)
layout(m, widths=c(4,4),
heights=c(1,1))
par.old <- par()
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(mean.SLA ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(mean.SLA ~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('SLA ' ,(mm^2/mg))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(mean.Leaf.N ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
ylab = expression(paste('Leaf N per mass ' ,(mg/g))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(mean.Wood.density ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(mean.Wood.density ~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('Wood density ' ,( mg/mm^3))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(mean.Max.height ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(mean.Max.height ~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('Max height ' ,(m))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mar=c(0, 0, 0, 0))
plot(1,1,type="n", axes=F, xlab="", ylab="")
legend("center",legend = names.biomes,
fill = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
legend("center",legend = names.biomes.t,
fill = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
bty = 'n', cex = 1.2)
par(par.old)
## traits sd
m <- matrix(c(1:4,5,5), 2, 3)
layout(m, widths=c(4,4,2),
m <- matrix(c(1:4), 2, 2)
layout(m, widths=c(4,4),
heights=c(1,1))
par.old <- par()
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(sd.SLA ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(sd.SLA ~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('SD SLA ' ,(mm^2/mg))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(sd.Leaf.N ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
ylab = expression(paste('SD Leaf N per mass ' ,(mg/g))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(sd.Wood.density ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(sd.Wood.density ~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('SD Wood density ' ,( mg/mm^3))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mgp=c(1.5,0.5,0), mar= c(.5, 3.1, 0.5, 0.))
boxplot(sd.Max.height ~ biomes, data.summarise,
col = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
boxplot(sd.Max.height ~ biomes, data.temp,
col = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
ylab = expression(paste('SD Max height ' ,(m))),
outline = FALSE, xaxt = 'n', cex.y = 1.5,cex.lab=1.2)
par(mar=c(0, 0, 0, 0))
plot(1,1,type="n", axes=F, xlab="", ylab="")
legend("center",legend = names.biomes,
fill = fun.col.pch.biomes()$col.vec[levels(data.summarise$biomes)],
legend("center",legend = names.biomes.t,
fill = fun.col.pch.biomes()$col.vec[levels(data.temp$biomes)],
bty = 'n', cex = 1.2)
par(par.old)
......
......@@ -6,22 +6,20 @@ library(rworldmap, quietly = TRUE)
world.map <- function(Lon, Lat, col = "red", add = FALSE, cex=0.2){
if(!add){
newmap <- getMap(resolution = 'low')
plot(newmap, col= "lightgrey")
par(mar = c(0, 0, 0, 0))
newmap <- getMap(resolution = 'low')
plot(newmap, col= "white")
}
points(Lon,Lat,pch=19,cex=cex, col = col)
}
world.map.all.sites <- function(data,add.legend=FALSE){
world.map.all.sites <- function(data,add.legend=FALSE,
cols = fun.col.pch.set()$col.vec){
sets <- unique(data$set)
# list of colours
cols <- as.list(niceColors(length(sets)))
names(cols) <- sets
# new map
world.map(NA, NA)
......@@ -29,9 +27,13 @@ for(set in sets){
i <- data$set ==set
cex = 0.4
if(sum(i) <100)
cex=2
world.map(data[i, "Lon"], data[i, "Lat"], col = cols[[set]], add=TRUE, cex=cex)
cex=1.5
world.map(data[i, "Lon"], data[i, "Lat"], col = cols[[set]],
add=TRUE, cex=cex)
}
if(add.legend)
legend(-150,40, col = unlist(cols), legend = names(cols), pch = rep(19,length(cols)), bty = "n")
legend(-70,170, col = unlist(cols), legend = names(cols),
pch = rep(19,length(cols)), bty = "n",
xpd = TRUE,
ncol = 3)
}
......@@ -302,8 +302,8 @@ plot.ellips.on.biome.map <- function(MAP, MAT, set,
lapply(unique(set), fun.ellipsoid.hull,
x = MAP, y = MAT, sets.v = set,
col.vec = cols, lty.vec = lty.vec)
legend("topright", pch = 16, legend = names(col.vec), bty = "n",
col = col.vec, ncol = 2)
legend("topright", pch = 16, legend = names(cols), bty = "n",
col = cols, ncol = 2)
}
......
......@@ -20,6 +20,7 @@ for trait in "'SLA'" "'Leaf.N'" "'Wood.density'" "'Max.height'" "'Seed.mass'"; d
echo "/usr/local/R/R-3.0.1/bin/Rscript -e \"source('R/analysis/glmer.run.R');run.multiple.model.for.set.one.trait(model.files.glmer.Tf.1, run.glmer,$trait,type.filling='species', sample.size = $samplesize, var.sample = 'ecocode.id');print('done')\"" > trait.workshop/glmerspecies1${trait}.sh
qsub trait.workshop/glmerspecies1${trait}.sh -l nodes=1:ppn=1,mem=8gb -N "glmerall1${trait}" -q opt32G -j oe
qsub trait.workshop/species1${trait}.sh -l nodes=1:ppn=1,mem=8gb -N "lmerall1${trait}" -q opt32G -j oe
echo "/usr/local/R/R-3.0.1/bin/Rscript -e \"source('R/analysis/glmer.run.R');run.multiple.model.for.set.one.trait(c(model.files.glmer.Tf.2,model.files.glmer.Tf.3), run.glmer,$trait,type.filling='species', sample.size = $samplesize, var.sample = 'ecocode.id');print('done')\"" > trait.workshop/glmerspecies2${trait}.sh
qsub trait.workshop/glmerspecies2${trait}.sh -l nodes=1:ppn=1,mem=8gb -N "glmerall2${trait}" -q opt32G -j oe
......@@ -32,8 +33,7 @@ for trait in "'SLA'" "'Leaf.N'" "'Wood.density'" "'Max.height'" "'Seed.mass'"; d
qsub trait.workshop/glmerspeciesS1${trait}.sh -l nodes=1:ppn=1,mem=8gb -N "glmerallS1${trait}" -q opt32G -j oe
echo "/usr/local/R/R-3.0.1/bin/Rscript -e \"source('R/analysis/glmer.run.R');run.multiple.model.for.set.one.trait(c(model.files.glmer.Tf.2,model.files.glmer.Tf.3), run.glmer,$trait,type.filling='species', sample.size = $samplesize, var.sample = 'species.id');print('done')\"" > trait.workshop/glmerspeciesS2${trait}.sh
qsub trait.workshop/glmerspeciesS2${trait}.sh -l nodes=1:ppn=1,mem=8gb -N "glmerallS
2${trait}" -q opt32G -j oe
qsub trait.workshop/glmerspeciesS2${trait}.sh -l nodes=1:ppn=1,mem=8gb -N "glmerallS2${trait}" -q opt32G -j oe
echo "/usr/local/R/R-3.0.1/bin/Rscript -e \"source('R/analysis/glmer.run.R');run.multiple.model.for.set.one.trait(c(model.files.glmer.Tf.4,model.files.glmer.Tf.5), run.glmer,$trait,type.filling='species', sample.size = $samplesize, var.sample = 'species.id');print('done')\"" > trait.workshop/glmerspeciesS3${trait}.sh
......
......@@ -62,6 +62,8 @@ write.csv(data.traits.std.global,file="output/formatted/traits.std.global.csv",
## do the plot for test.traits
fun.plots.test.traits(all.traits)
fun.plots.test.traits.pres(all.traits)
# end
print("check figures in figs/test.traits")
cat("finished", file = file.path("figs/test.traits", "Done.txt"))
......@@ -18,7 +18,7 @@ path.root <- git.root()
source.root("R/utils/plot.R")
source.root("R/utils/plot.biomes.R")
source.root("R/utils/maps.R")
#read.data
......@@ -26,8 +26,6 @@ clim <- read.csv(file.path(path.root, "output/processed/all.sites.clim.csv")
, header = TRUE,
stringsAsFactors = FALSE)
## to make Paracou and BCI not visible change slightly the mean T at Paracou
clim[clim$set %in% c('Paracou'), 'clim.all.MAT'] <- 26.5
## change NVS to NZ
#clim[clim$set %in% c('NVS'), 'set'] <- 'NZ' # problem NZ not ion col.vec !!
......@@ -49,20 +47,12 @@ data.ecocode <- data.frame(id = names(MAT), MAT = MAT,
data.ecocode <- merge(data.ecocode, clim[!duplicated(clim$id),
c('set', 'ecocode', 'id')], by = 'id',
all.x = TRUE, all.y = FALSE)
## rename NVS to NZ
## data.ecocode[data.ecocode$set=="NVS", 'set'] <- 'NZ'
to.pdf(plot.biome.map(),
file = file.path(path.root,"figs/biome.pdf")
, width = 6, height = 6)
to.pdf(plot.points.on.biome.map.panel(MAP = clim$MAP/10,
MAT = clim$MAT,
set = clim$set, ecocode = clim$ecocode),
file = file.path(path.root,"figs/biome-panel.pdf"),
width = 12, height = 12)
to.pdf(plot.points.on.biome.map(MAP = clim$MAP/10,
MAT = clim$MAT,
......@@ -85,3 +75,17 @@ to.pdf(plot.ellips.on.biome.map(MAP = clim$MAP/10,
set = clim$set),
file = file.path(path.root,"figs/biome.ellipse.pdf"),
width = 6, height = 6)
## TO DO WORLD MAP
png('figs/wolrd.map.png')
world.map.all.sites(clim,
add.legend=TRUE,
cols = fun.col.pch.set()$col.vec)
dev.off()
pdf('figs/wolrd.map.pdf')
world.map.all.sites(clim,
add.legend=TRUE,
cols = fun.col.pch.set()$col.vec)
dev.off()
......@@ -28,4 +28,15 @@ if(!identical(test.data.summarise[, colnames(test.data.all)], test.data.all)) st
saveRDS(data.summarise, 'output/data.summarise.rds')
#####################
#####################
### GET UNIQUE XY DATA
data.all$XY <- paste(data.all$Lon, data.all$Lat)
data.all.clim.lat.lon <- data.all[!duplicated(data.all$XY),
c('set', 'plot', 'cluster', 'Lon', 'Lat',
'ecocode', 'biomes', 'MAT', 'MAP')]
write.csv(data.all.clim.lat.lon, file = 'output/processed/all.sites.clim.csv',
row.names = FALSE)
% Functional traits and competitive interactions a global analysis
% based on forest ecisystems
% How are competitive interactions influenced by traits ? A global analysis based on tree radial growth
% Georges Kunstler
% 4 Jun 2014
# Competitive interaction
# Species strategies
## History of competition and traits
* Limiting similarity ressource partitioning
* Competitive ability
- mean demographic rate
- competition for single ressource effect / response
## what are traits
Discuss the different traits
## What results traits effect
## traits effect per biomes
## Traits effect time MAT MAP !! rpoble not go direction
## Can I show again a decrease of competition trait effect with MAP ?
## Parce que
- Le code source est lisible
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment