diff --git a/R/analysis/lmer.nolog.output-fun.R b/R/analysis/lmer.nolog.output-fun.R
deleted file mode 100644
index 2b7ee7a39d4c5d408b1fff66fdc7a43d7d340f1d..0000000000000000000000000000000000000000
--- a/R/analysis/lmer.nolog.output-fun.R
+++ /dev/null
@@ -1,121 +0,0 @@
-#### function to analyse lmer output
-
-
-library(lme4)
-
-
-read.lmer.output <- function(file.name){
-  tryCatch(readRDS(file.name), error=function(cond)return(NULL))   # Choose a return value in case of error
-}
-
-
-
-summarise.lmer.output <- function(x){
- list( nobs = nobs(x),
-       R2m =Rsquared.glmm.lmer(x)$Marginal,
-       R2c =Rsquared.glmm.lmer(x)$Conditional,
-       AIC = AIC(x),
-       deviance = deviance(x),
-       conv=x@optinfo$conv,
-       effect.response.var=variance.fixed.glmm.lmer.effect.and.response(x),
-       fixed.coeff.E=fixef(x),
-       fixed.coeff.Std.Error=sqrt(diag(vcov(x))),
-       fixed.var=variance.fixed.glmm.lmer(x))
-}
-
-
-summarise.lmer.output.list <- function(f ){
-    output.lmer <- read.lmer.output(f)
-    if(!is.null(output.lmer)){
-	res <- list(files.details=files.details(f),
-		   lmer.summary=summarise.lmer.output( output.lmer))
-    }else{
-        res <- NULL
-    }
-    return(res)
-}
-
-
-
-files.details <- function(x){
-	s <- data.frame(t(strsplit(x, "/", fixed=TRUE)[[1]]), stringsAsFactors= FALSE)
-	names(s)  <- c("d1", "d2", "set", "ecocode", "trait", "filling", "model", "file" )
-	s[-(1:2)]
-}
-
-
-
-#### R squred functions
-
-# Function rsquared.glmm requires models to be input as a list (can include fixed-
-# effects only models,but not a good idea to mix models of class "mer" with models
-# of class "lme") FROM http://jslefche.wordpress.com/2013/03/13/r2-for-linear-mixed-effects-models/
-
-Rsquared.glmm.lmer <- function(i){
-# Get variance of fixed effects by multiplying coefficients by design matrix
-      VarF <- var(as.vector(fixef(i) %*% t(i@pp$X)))
-      # Get variance of random effects by extracting variance components
-      VarRand <- colSums(do.call(rbind,lapply(VarCorr(i),function(j) j[1])))
-      # Get residual variance
-      VarResid <- attr(VarCorr(i),"sc")^2
-      # Calculate marginal R-squared (fixed effects/total variance)
-      Rm <- VarF/(VarF+VarRand+VarResid)
-      # Calculate conditional R-squared (fixed effects+random effects/total variance)
-      Rc <- (VarF+VarRand)/(VarF+VarRand+VarResid)
-      # Bind R^2s into a matrix and return with AIC values
-      Rsquared.mat <- data.frame(Class=class(i),Family="Gaussian",Marginal=Rm,
-                              Conditional=Rc,AIC=AIC(i))
-      return(Rsquared.mat)
-}
-
-
-variance.fixed.glmm.lmer <- function(i){
-
-# Get variance of for each fixed effects by multiplying coefficients by design matrix
-var.vec <- apply(fixef(i) * t(i@pp$X),MARGIN=1,var)
-# Get variance of fixed effects by multiplying coefficients by design matrix
-VarF <- var(as.vector(fixef(i) %*% t(i@pp$X)))
-# Get variance of random effects by extracting variance components
-VarRand <- colSums(do.call(rbind,lapply(VarCorr(i),function(j) j[1])))
-# Get residual variance
-VarResid <- attr(VarCorr(i),"sc")^2
-var.vec <- var.vec/(VarF+VarRand+VarResid)
-names(var.vec) <- paste(names(var.vec),"VAR",sep=".")
-return(var.vec)
-}
-
-variance.fixed.glmm.lmer.effect.and.response <- function(i){
-if(sum(c("sumTfBn","sumTnBn") %in% names(fixef(i)))==2){
-# Get variance of for each fixed effects by multiplying coefficients by design matrix
-var.vec <- var(as.vector(fixef(i)[c("sumTfBn","sumTnBn")] %*% t(i@pp$X[,c("sumTfBn","sumTnBn")])))
-# Get variance of fixed effects by multiplying coefficients by design matrix
-VarF <- var(as.vector(fixef(i) %*% t(i@pp$X)))
-# Get variance of random effects by extracting variance components
-VarRand <- colSums(do.call(rbind,lapply(VarCorr(i),function(j) j[1])))
-# Get residual variance
-VarResid <- attr(VarCorr(i),"sc")^2
-var.vec <- var.vec/(VarF+VarRand+VarResid)
-}else{
-var.vec <- NA
-}    
-names(var.vec) <- paste("effect.response","VAR",sep=".")
-return(var.vec)
-}
-
-
-
-
-## function to turn lmer output from list to DF
-fun.format.in.data.frame <- function(list.res,names.param){
-dat.t <- data.frame(t(rep(NA,3*length(names.param))))
-names(dat.t) <-  c(names.param,paste(names.param,"Std.Error",sep=".")
-                   ,paste(names.param,"VAR",sep="."))
-dat.t[,match(names(list.res$lmer.summary$fixed.coeff.E),names(dat.t))] <-
-    list.res$lmer.summary$fixed.coeff.E
-dat.t[,length(names.param)+match(names(list.res$lmer.summary$fixed.coeff.E),names(dat.t))] <-
-    list.res$lmer.summary$fixed.coeff.Std.Error
-dat.t[,match(names(list.res$lmer.summary$fixed.var),names(dat.t))] <-
-    list.res$lmer.summary$fixed.var
-res <- data.frame(list.res$files.details,list.res$lmer.summary[1:7],dat.t)
-return(res)
-}
diff --git a/R/analysis/lmer.nolog.output.R b/R/analysis/lmer.nolog.output.R
index fc341038e910eaaff1d303837d633f600480df30..af6bc99ae6461c700fbbc255831b4abc72f988cf 100644
--- a/R/analysis/lmer.nolog.output.R
+++ b/R/analysis/lmer.nolog.output.R
@@ -1,7 +1,7 @@
 #!/usr/bin/env Rscript
 
-source("R/analysis/lmer.nolog.output-fun.R")
-source("R/analysis/lmer.nolog.run.R")
+source("R/analysis/lmer.output-fun.R")
+source("R/analysis/lmer.run.nolog.R")
 
 ## TODO NEED TO CHANGE THAT TO LOOP OVER FILES AND NOT SCAN ALL FILES
 sets <-  c('BCI','Canada','France','Fushan','NVS','Paracou',
@@ -13,12 +13,12 @@ for (set in sets){
 ecoregions <- get.ecoregions.for.set(set)
     for (ecoregion in ecoregions){
       for (trait in traits){
-          for (model in c(model.files.lmer.Tf.1,model.files.lmer.Tf.2)){
+          for (model in c(model.files.lmer.Tf.1)){
        source(model, local = TRUE)
        model.obj <- load.model()
 
        pathout <- output.dir.lmer(model=model.obj$name, trait, set, ecoregion,type.filling)
-       files <- c(files,file.path(pathout,"results.no.std.nolog.rds"))
+       files <- c(files,file.path(pathout,"results.nolog.rds"))
           }
       }
     }
@@ -27,8 +27,10 @@ ecoregions <- get.ecoregions.for.set(set)
 
 out <- lapply(files, summarise.lmer.output.list)
 names(out) <- lapply(lapply(files,files.details),function(x) paste(as.vector(x[-6]),collapse="_"))
-saveRDS(out,file='output/lmer.list.out.rds')
+### remove missing
+out <- out[!unlist(lapply(out,FUN=function(x) is.null(x$lmer.summary)))]
+saveRDS(out,file='output/lmer.list.out.nolog.rds')
 names.param <- unique(unlist(lapply(out,function(list.res) names(list.res$lmer.summary$fixed.coeff.E))))
 DF.results <- do.call("rbind",lapply(out,fun.format.in.data.frame,names.param=names.param))
 DF.results$id <- paste(DF.results$set,DF.results$ecocode,sep=".")
-saveRDS(DF.results,file='output/lmer.DF.rds')
+saveRDS(DF.results,file='output/lmer.nolog.DF.rds')
diff --git a/R/analysis/lmer.output-fun.R b/R/analysis/lmer.output-fun.R
index 9b99e5111f76ea73e434a3838f6ed94966281ac6..a8d8145f46044022e53d1b91416337094cb1d4bb 100644
--- a/R/analysis/lmer.output-fun.R
+++ b/R/analysis/lmer.output-fun.R
@@ -283,10 +283,13 @@ segments( df.selected[[var.x]]-small.bar,df.selected[[param]] + 1.96*df.selected
           df.selected[[var.x]]+small.bar,df.selected[[param]] + 1.96*df.selected[[paste(param,"Std.Error",sep=".")]],col=col.vec)
 }
 
-fun.plot.all.param.x.y.c <- function(model.selected,trait.name,DF.results,var.x,params,small.bar,threshold.delta.AIC,col.vec,col.set=TRUE,...){
+fun.plot.all.param.x.y.c <- function(model.selected,trait.name,DF.results,var.x,params,
+                                     small.bar,threshold.delta.AIC,col.vec,col.set=TRUE,...){
 df.selected <- fun.select.ecoregions.trait(DF.results,trait.name=trait.name,model.selected=model.selected,threshold.delta.AIC=threshold.delta.AIC)
 if(col.set) {col.vec2 <- col.vec[unclass(df.selected[['set']])]}else{col.vec2 <- 1}
-plot(df.selected[[var.x]],df.selected[[params[1]]],col=col.vec2,...)
+ylim <- range(c(df.selected[[params[1]]] - 1.96*df.selected[[paste(params[1],"Std.Error",sep=".")]],
+                df.selected[[params[1]]] + 1.96*df.selected[[paste(params[1],"Std.Error",sep=".")]]),na.rm=TRUE)
+plot(df.selected[[var.x]],df.selected[[params[1]]],col=col.vec2,ylim=ylim,...)
 fun.plot.param.error.bar(df.selected,var.x,param=params[1],small.bar,col=col.vec2)
 }
 
diff --git a/R/analysis/lmer.output.R b/R/analysis/lmer.output.R
index 3cb83da29f87f5a123c67c3853b7b81fede17455..24be42fae687d89ae5095b7e3845a98be6be3346 100755
--- a/R/analysis/lmer.output.R
+++ b/R/analysis/lmer.output.R
@@ -27,6 +27,8 @@ ecoregions <- get.ecoregions.for.set(set)
 
 out <- lapply(files, summarise.lmer.output.list)
 names(out) <- lapply(lapply(files,files.details),function(x) paste(as.vector(x[-6]),collapse="_"))
+### remove missing
+out <- out[!unlist(lapply(out,FUN=function(x) is.null(x$lmer.summary)))]
 saveRDS(out,file='output/lmer.list.out.rds')
 names.param <- unique(unlist(lapply(out,function(list.res) names(list.res$lmer.summary$fixed.coeff.E))))
 DF.results <- do.call("rbind",lapply(out,fun.format.in.data.frame,names.param=names.param))
diff --git a/R/analysis/run.local.R b/R/analysis/run.local.R
index 67fc8ec12f994b9d2c39a439f1f124ee662d9438..7fe9188cf00a1db00094341c37c85f2d5be29af6 100644
--- a/R/analysis/run.local.R
+++ b/R/analysis/run.local.R
@@ -15,6 +15,16 @@ run.models.for.set.all.traits('Paracou',model.files.lmer.Tf.1, run.lmer,type.fil
 run.models.for.set.all.traits('Mbaiki',model.files.lmer.Tf.1, run.lmer,type.filling='species',std=TRUE)
 run.models.for.set.all.traits('US',model.files.lmer.Tf.1, run.lmer,type.filling='species',std=TRUE)
 
+sets <- c('France','Spain','Sweden','Swiss','BCI','Fushan','Luquillo','NVS','Japan','Canada','Paracou','Mbaiki','US')
+library(doParallel)
+cl <- makeCluster(7)
+registerDoParallel(cl)
+
+foreach(set=sets) %dopar% run.models.for.set.all.traits(set,model.files.lmer.Tf.1, run.lmer,type.filling='species',std=FALSE)
+foreach(set=sets) %dopar% run.models.for.set.all.traits(set,model.files.lmer.Tf.2, run.lmer,type.filling='species',std=FALSE)
+    
+foreach(set=sets) %dopar% run.models.for.set.all.traits(set,model.files.lmer.Tf.2, run.lmer,type.filling='species',std=TRUE)
+
 
 
 
diff --git a/R/find.trait/France.R b/R/find.trait/France.R
index 997351e5bd66764bd85b98bfb6060655e2d5064d..80faee900e396546a9bb01b518348400677a99f4 100644
--- a/R/find.trait/France.R
+++ b/R/find.trait/France.R
@@ -14,20 +14,53 @@ species.clean$Latin_name_syn<- (gsub("_", " ", species.clean$Latin_name_syn))
 species.clean <-  subset(species.clean,subset=!is.na(species.clean$Latin_name_syn))
 species.clean$sp <- paste("sp",species.clean$code,sep=".")
 species.clean$code <- NULL
+## remove duplicated sp
+species.clean <- species.clean[!duplicated(species.clean$sp),]
+
 ## read in data
 data.TRY.std <- readRDS("output/formatted/TRY/data.TRY.std.rds")
 
 max.height <- read.csv(file="output/formatted/France/max.height.csv", stringsAsFactors = FALSE)
 max.height$Max.height.genus <- FALSE
 ### extract and add height
-data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],sp.syno.table=species.clean,data=data.TRY.std)
+data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],
+                                                sp.syno.table=species.clean,
+                                                data=data.TRY.std)
 data.traits <- merge(data.traits,
                      subset(max.height,select=c("sp","Max.height.mean","Max.height.sd","Max.height.genus")),
                      by="sp",all.x=TRUE,all.y=FALSE)
 
-height.genus.DF <- do.call("rbind",lapply(data.traits$Latin_name,fun.compute.mean.genus,data.traits,"Max.height.mean"))
+height.genus.DF <- do.call("rbind",lapply(data.traits$Latin_name,
+                                          fun.compute.mean.genus,data.traits,"Max.height.mean"))
 data.traits[is.na(data.traits[["Max.height.mean"]]),
-            c("Max.height.mean","Max.height.sd","Max.height.genus")] <- height.genus.DF[is.na(data.traits[["Max.height.mean"]]),]
+            c("Max.height.mean","Max.height.sd","Max.height.genus")] <-
+            height.genus.DF[is.na(data.traits[["Max.height.mean"]]),]
+
+
+#### TODO GET THE ANGIO/CONIF AND EVERGREEN/DECIDUOUS
+
+# read try categrocial data
+try.cat <- read.csv("data/raw/TRY/TRY_Categorical_Traits_Lookup_Table_2012_03_17_TestRelease.csv",
+         stringsAsFactors=FALSE,na.strings = "")
+Pheno.Zanne <- read.csv("data/raw/ZanneNature/GlobalLeafPhenologyDatabase.csv",
+         stringsAsFactors=FALSE)
+data.cat.extract <- do.call("rbind",lapply(data.traits$sp ,fun.get.cat.var.from.try,
+                                           data.traits,try.cat,Pheno.Zanne))
+
+data.cat.extract[data.cat.extract$Pheno.T=='deciduous'
+                 & !is.na(data.cat.extract$Pheno.T),'Pheno.T'] <- 'D'
+data.cat.extract[data.cat.extract$Pheno.T=='evergreen'
+                 & !is.na(data.cat.extract$Pheno.T),'Pheno.T'] <- 'EV'
+data.cat.extract[data.cat.extract$Pheno.T=='deciduous/evergreen'
+                 & !is.na(data.cat.extract$Pheno.T),'Pheno.T'] <- 'D_EV'
+     
+data.traits <- merge(data.traits,data.cat.extract,by="sp")
+
+## check if leaf Phenology agree with Zanne
+sum(Pheno.Zanne$Binomial %in%  try.cat$AccSpeciesName)
+merge.pheno <- merge(Pheno.Zanne,try.cat,by.x="Binomial",by.y="AccSpeciesName",all=FALSE)
+
+table(merge.pheno$LeafPhenology,merge.pheno$Phenology)
 
 ### 
 write.csv(data.traits,file="output/formatted/France/traits.csv",row.names = FALSE)
diff --git a/R/find.trait/trait.fun.R b/R/find.trait/trait.fun.R
index bda4b4e7004db85cbdc3e74ee9881360e2712fe2..708279a7adf73bdfa3c600874933f629b6532758 100644
--- a/R/find.trait/trait.fun.R
+++ b/R/find.trait/trait.fun.R
@@ -278,3 +278,50 @@ extract.species.traits <- rbind.fill(lapply(Latin_name,FUN=fun.spe.traits.notry
     return(data.frame.TRAITS)
 }
 
+## FUNCTION TO GET angio /confi genus is enough FROM TRY and Zanne
+fun.get.cat.var.from.try <- function(sp,data.traits,try.cat,Pheno.Zanne){
+ if(sum(data.traits[data.traits$sp==sp,"Latin_name"] == try.cat$AccSpeciesName)>0){
+     if(sum(data.traits[data.traits$sp==sp,"Latin_name"] ==
+                           Pheno.Zanne$Binomial)>0){
+            data.res <- data.frame(sp=sp,
+                       Latin_name=data.traits[data.traits$sp==sp,"Latin_name"],
+                       Phylo.group=try.cat[data.traits[data.traits$sp==sp,"Latin_name"] ==
+                           try.cat$AccSpeciesName,"PhylogeneticGroup"][1],
+                       Pheno.T=try.cat[data.traits[data.traits$sp==sp,"Latin_name"] ==
+                           try.cat$AccSpeciesName,"LeafPhenology"][1],
+                       Pheno.Z=Pheno.Zanne[data.traits[data.traits$sp==sp,"Latin_name"] ==
+                           Pheno.Zanne$Binomial,'Phenology'][1] ,
+                       stringsAsFactors=FALSE)
+        }else{
+            data.res <- data.frame(sp=sp,
+                       Latin_name=data.traits[data.traits$sp==sp,"Latin_name"],
+                       Phylo.group=try.cat[data.traits[data.traits$sp==sp,"Latin_name"] ==
+                           try.cat$AccSpeciesName,"PhylogeneticGroup"][1],
+                       Pheno.T=try.cat[data.traits[data.traits$sp==sp,"Latin_name"] ==
+                           try.cat$AccSpeciesName,"LeafPhenology"][1],
+                       Pheno.Z=NA ,
+                       stringsAsFactors=FALSE)
+        }
+ }else{
+     if(sum(data.traits[data.traits$sp==sp,"Latin_name"] ==
+                           Pheno.Zanne$Binomial)>0){
+            data.res <- data.frame(sp=sp,
+                       Latin_name=data.traits[data.traits$sp==sp,"Latin_name"],
+                       Phylo.group=try.cat[fun.get.genus(data.traits[data.traits$sp==sp,"Latin_name"]) ==
+                           sapply(try.cat$AccSpeciesName,fun.get.genus),"PhylogeneticGroup"][1],
+                       Pheno.T=NA,
+                       Pheno.Z=Pheno.Zanne[data.traits[data.traits$sp==sp,"Latin_name"] ==
+                           Pheno.Zanne$Binomial,'Phenology'][1] ,
+                       stringsAsFactors=FALSE)
+        }else{
+            data.res <- data.frame(sp=sp,
+                       Latin_name=data.traits[data.traits$sp==sp,"Latin_name"],
+                       Phylo.group=try.cat[fun.get.genus(data.traits[data.traits$sp==sp,"Latin_name"]) ==
+                           sapply(try.cat$AccSpeciesName,fun.get.genus),"PhylogeneticGroup"][1],
+                       Pheno.T=NA,
+                       Pheno.Z=NA ,
+                       stringsAsFactors=FALSE)
+        }
+ }    
+return(data.res)    
+}