Mercurial > repos > mnhn65mo > vigiechiro
changeset 0:0e3db3a308c0 draft default tip
Uploaded
author | mnhn65mo |
---|---|
date | Mon, 06 Aug 2018 09:13:29 -0400 |
parents | |
children | |
files | BilanEnrichiPF.R BilanEnrichiPFen.xml BilanEnrichiRP.R BilanEnrichiRPen.xml ClassifEspC2b_180222.learner GroupList_HF.csv IdCorrect_2ndLayer.R IdCorrect_2ndLayer_en.xml IdValid.R IdValiden.xml Referentiel_seuils_C2.csv SpeciesList.csv refPF.csv refRPSeuil50.csv |
diffstat | 14 files changed, 1695 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BilanEnrichiPF.R Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,249 @@ +library(data.table) +library(DT) +library(htmlwidgets) + +f2p <- function(x) #get date-time data from recording file names +{ + if (is.data.frame((x)[1])) {pretemps <- vector(length = nrow(x))} + op <- options(digits.secs = 3) + pretemps <- paste(substr(x, nchar(x) - 18, nchar(x)-4), ".", substr(x, nchar(x) - 2, nchar(x)), sep = "") + strptime(pretemps, "%Y%m%d_%H%M%OS",tz="UTC")-7200 +} + +args <- commandArgs(trailingOnly = TRUE) +#print(args) +EchelleErreur=c("","POSSIBLE","PROBABLE","SUR") +EchelleNumErreur=c(99,50,10,1) + +#for test +#inputest=list.files("C:/Users/Yves Bas/Documents/GitHub/65MO_Galaxy-E/raw_scripts/Vigie-Chiro/output_IdValid_input_BilanEnrichi/",pattern="IdC2.csv",full.names=T) +#for (i in 1:length(inputest)) +#{ +# args=c(inputest[i],"refPF.csv","SpeciesList.csv") + + +IdC2=fread(args[1]) +refPF=fread(args[2]) +GroupList=fread(args[3]) + +if(substr(IdC2$`nom du fichier`[1],2,2)!="a") +{ + print("Protocole non conforme, ce script doit etre lance pour un protocole Point Fixe") +}else{ + + +#compute error risk by species (minimum error among files) +#to be replaced by glm outputs if I'll have time +RisqueErreurT=aggregate(IdC2$IdProb,by=list(IdC2$IdExtrap),FUN=function(x) ceiling((1-max(x-0.0001))*100)) +barplot(RisqueErreurT$x,names.arg=RisqueErreurT$Group.1,las=2) +#compute error risk accoring to observer/validator (a little dirty because it relies on alphabetical order of confidence classes: POSSIBLE < PROBABLE < SUR) +RisqueErreurOV0=match(IdC2$ConfV,EchelleErreur) +RisqueErreurOV=aggregate(RisqueErreurOV0,by=list(IdC2$IdExtrap) + ,FUN=max) +RisqueErreurOV2=EchelleNumErreur[RisqueErreurOV$x] +#compute minimum error risk between man and machine +RisqueErreur=pmin(RisqueErreurT$x,RisqueErreurOV2) + +#compute number of files validated per species +FichValid=aggregate(IdC2$IdV,by=list(IdC2$IdExtrap,IdC2$'nom du fichier') + ,FUN=function(x) sum(x!="")) +NbValid2=aggregate(FichValid$x,by=list(FichValid$Group.1),FUN=function(x) sum(x>0)) + +DiffC50=vector() # to store the median of confidence difference between unvalidated records and validated ones +DiffT50=vector() # to store the median of time difference between unvalidated records and validated ones +for (j in 1:nlevels(as.factor(IdC2$IdExtrap))) +{ + IdSp=subset(IdC2 + ,IdC2$IdExtrap==levels(as.factor(IdC2$IdExtrap))[j]) + IdSp=IdSp[order(IdSp$IdProb),] + IdSpV=subset(IdSp,IdSp$IdV!="") + if(nrow(IdSpV)>0) + { + cuts <- c(-Inf, IdSpV$IdProb[-1]-diff(IdSpV$IdProb)/2, Inf) + CorrC=findInterval(IdSp$IdProb, cuts) + CorrC2=IdSpV$IdProb[CorrC] + DiffC=abs(IdSp$IdProb-CorrC2) + DiffC50=c(DiffC50,median(DiffC)) + + IdSp=IdSp[order(IdSp$TimeNum),] + IdSpV=subset(IdSp,IdSp$IdV!="") + cuts <- c(-Inf, IdSpV$TimeNum[-1]-diff(IdSpV$TimeNum)/2, Inf) + CorrT=findInterval(IdSp$TimeNum, cuts) + CorrT2=IdSpV$TimeNum[CorrT] + DiffT=abs(IdSp$TimeNum-CorrT2) + DiffT50=c(DiffT50,median(DiffT)) + }else{ + DiffC50=c(DiffC50,Inf) + DiffT50=c(DiffT50,Inf) + } +} +#compute an index of validation effort per species +EffortV=1/DiffC50/DiffT50 +EffortClass=(EffortV>0.0005)+(EffortV>0.005)+RisqueErreurOV$x +cbind(RisqueErreurOV,EffortV,DiffC50,DiffT50) +barplot(EffortClass-1,names.arg=NbValid2$Group.1,las=2) +ClassEffortV=c("-","FAIBLE","SUFFISANT","SUFFISANT","FORT","FORT") +EffortClassMot=ClassEffortV[EffortClass] + + +#get date-night +pourDateNuit=IdC2$TimeNum-12*3600 #bricolage-decalage de 12 heures pour ramener a la date du debut de nuit +DateNuit=as.Date.POSIXct(pourDateNuit) # date of the beginning of the night +DateJour=as.Date.POSIXct(IdC2$TimeNum) # date (UTC+0) +IdC2$DateNuit=DateNuit +IdC2$DateJour=DateJour +NbNuit=as.numeric(max(IdC2$DateNuit)-min(IdC2$DateNuit))+1 + +#compare activity / reference frame +ActMoy=aggregate(IdC2$`nom du fichier` + ,by=list(IdC2$IdExtrap),FUN=function(x) length(x)/NbNuit) +ListSpref=match(ActMoy$Group.1,refPF$Espece) +Subref=refPF[ListSpref] +QualifAct=vector() +for (k in 1:nrow(ActMoy)) +{ + if(is.na(Subref$Q25[k])) + { + QualifAct=c(QualifAct,NA) + }else{ + cuts=cbind(-Inf,as.numeric(Subref$Q25[k]),as.numeric(Subref$Q75[k]) + ,as.numeric(Subref$Q98[k]),Inf) + + QualifAct=c(QualifAct,findInterval(ActMoy$x[k],cuts,left.open=T)) + } +} +ClassAct=c("FAIBLE","MODEREE","FORTE","TRES FORTE") +QualifActMot=ClassAct[QualifAct] + +#compute activity by nights (to be completed) +#ActNuit=aggregate(IdC2$`nom du fichier`,by=list(IdC2$DateNuit,IdC2$IdExtrap),FUN=length) + +#organize the csv summary +SummPart0=cbind(Esp=levels(as.factor(IdC2$IdExtrap)) + ,RisqueErreur,NbValid=NbValid2$x,EffortValid=EffortClassMot + ,Contacts_Nuit=round(ActMoy$x),Niveau_Activite=QualifActMot) + + +InfoSp=c("GroupFR","NomFR","Scientific name","Esp") +GroupShort=GroupList[,InfoSp,with=FALSE] +#GroupShort=GroupList[,..InfoSp] +SummPart=merge(GroupShort,SummPart0,by="Esp") +IndexGroupe=c("Autre","Sauterelle","Chauve-souris") +SummPart$IndexSumm=match(SummPart$GroupFR,IndexGroupe) +SummPart=SummPart[with(SummPart + ,order(IndexSumm,as.numeric(Contacts_Nuit),decreasing=T)),] +colnames(SummPart)=c("Code","Groupe","Nom francais","Nom scientifique" + ,"Risque d'erreur (%)","Nb Validations" + ,"Effort de validation","Nb de Contacts par Nuit" + ,"Niveau d'Activite","TriGroupe") + +#to do: extend colors to other columns to improve readability +SummHTML=datatable(SummPart, rownames = FALSE) %>% + formatStyle(columns = c("Code","Groupe","Nom francais","Nom scientifique","Risque d'erreur (%)"),valueColumns="Risque d'erreur (%)", + background = styleInterval(c(1, 10, 50), c("white", "khaki", "orange", "orangered"))) %>% + formatStyle(columns = "Effort de validation", + background = styleEqual(c("-","FAIBLE","SUFFISANT","FORT"), c("white", "cyan", "royalblue", "darkblue"))) %>% + formatStyle(columns = c("Nb de Contacts par Nuit","Niveau d'Activite"),valueColumns="Niveau d'Activite", + background = styleEqual(c("FAIBLE","MODEREE","FORTE","TRES FORTE"), c("palegoldenrod", "greenyellow", "limegreen", "darkgreen"))) + +saveWidget(SummHTML,"output-summary.html") +write.table(SummPart,"output-summary.tabular",sep="\t",row.names=F) + +#compute number of files validated per night/hour +IdC2$Heure=sapply(IdC2$`nom du fichier`,FUN=function(x) substr(x,nchar(x)-9,nchar(x)-8)) + +ActNuit=aggregate(IdC2$`nom du fichier`,by=list(IdC2$IdExtrap,IdC2$Session),FUN=length) +ListSpref=match(ActNuit$Group.1,refPF$Espece) +Subref=refPF[ListSpref] + + +QualifActN=vector() +for (k in 1:nrow(ActNuit)) +{ + if(is.na(Subref$Q25[k])) + { + QualifActN=c(QualifActN,NA) + }else{ + cuts=cbind(-Inf,as.numeric(Subref$Q25[k]),as.numeric(Subref$Q75[k]) + ,as.numeric(Subref$Q98[k]),Inf) + + QualifActN=c(QualifActN,findInterval(ActNuit$x[k],cuts,left.open=T)) + } +} +ActNuit$QualifActN=QualifActN + +ActNuitT=dcast(data=ActNuit,formula=Group.1~Group.2 + ,value.var="x") +ActNuitT[is.na(ActNuitT)]=0 +RefNuitT=dcast(data=ActNuit,formula=Group.1~Group.2 + ,value.var="QualifActN") +ARNuit=merge(ActNuitT,RefNuitT,by="Group.1") + +SummPartshort=cbind(SummPart[,c(1:5)],TriGroupe=SummPart[,TriGroupe]) +SummPartN=merge(SummPartshort,ARNuit,by.x="Code",by.y="Group.1") +SummPartN=SummPartN[order(TriGroupe,decreasing=T),] + +test=grepl(".x",colnames(SummPartN)) +colnames(SummPartN)=mapply(FUN=function(x,y) if(y){substr(x,1,2)}else{x} + ,colnames(SummPartN),test) +ListNuit=subset(colnames(SummPartN),test) +ListRef=subset(colnames(SummPartN),grepl(".y",colnames(SummPartN))) +testHide=match(ListRef,colnames(SummPartN))-1 +#to do: extend colors to other columns to improve readability +SummHTMLN=datatable(SummPartN, rownames = FALSE,options = list( + columnDefs = list(list(targets = testHide,visible = FALSE)))) %>% + formatStyle(columns = c("Code","Groupe","Nom francais","Nom scientifique","Risque d'erreur (%)"),valueColumns="Risque d'erreur (%)", + background = styleInterval(c(1, 10, 50), c("white", "khaki", "orange", "orangered"))) %>% + formatStyle(columns = ListNuit,valueColumns=ListRef, + background = styleEqual(c(1,2,3,4), c("palegoldenrod", "greenyellow", "limegreen", "darkgreen"))) + +saveWidget(SummHTMLN,"output-nightly.html") +write.table(SummPartN,"output-nightly.tabular",sep="\t",row.names=F) + + +#summary by hour +ActMoyH=dcast(data=IdC2,formula=IdExtrap~Heure + ,fun.aggregate=length) +ActMoyHA=aggregate(IdC2$`nom du fichier` + ,by=list(IdC2$IdExtrap,IdC2$Heure) + ,FUN=length) + +test=(as.numeric(colnames(ActMoyH))>12) +ColDebut=subset(colnames(ActMoyH),test) +ColFin=subset(colnames(ActMoyH),test==F) +ListH=c(ColDebut,ColFin) +neworder=c("IdExtrap",ColDebut,ColFin) +ActMoyH=ActMoyH[,..neworder] + +SummPartH=merge(SummPartshort,ActMoyH,by.x="Code",by.y="IdExtrap") +SummPartH=SummPartH[order(TriGroupe,decreasing=T),] + + +brks <- quantile(ActMoyHA$x, probs = seq(.05, .95, .05), na.rm = TRUE)-1 +clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>% +{paste0("rgb(255,", ., ",", ., ")")} + + +SummHTMLH=datatable(SummPartH, rownames = FALSE) %>% + formatStyle(columns = c("Code","Groupe","Nom francais","Nom scientifique","Risque d'erreur (%)"),valueColumns="Risque d'erreur (%)", + background = styleInterval(c(1, 10, 50), c("white", "khaki", "orange", "orangered"))) %>% + formatStyle(columns=ListH, backgroundColor = styleInterval(brks, clrs)) + +saveWidget(SummHTMLH,"output-hourly.html") +write.table(SummPartH,"output-hourly.tabular",sep="\t",row.names=F) + + +#saveWidget(SummHTML,paste0(substr(args[1],1,nchar(args[1])-9),"-summary.html")) +#write.table(SummPart,paste0(substr(args[1],1,nchar(args[1])-9),"-summary.csv"),sep="\t",row.names=F) +#saveWidget(SummHTMLN,paste0(substr(args[1],1,nchar(args[1])-9),"-nightly.html")) +#write.table(SummPartN,paste0(substr(args[1],1,nchar(args[1])-9),"-nightly.csv"),sep="\t",row.names=F) +#saveWidget(SummHTMLH,paste0(substr(args[1],1,nchar(args[1])-9),"-hourly.html")) +#write.table(SummPartH,paste0(substr(args[1],1,nchar(args[1])-9),"-hourly.csv"),sep="\t",row.names=F) + + +} + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BilanEnrichiPFen.xml Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,86 @@ +<tool id="BilanEnrichiPF" name="Advanced restitution: summary" version="0.1"> + <description>from Animal Detection on Acoustic Recordings</description> + <requirements> + <requirement type="package" version="1.4.3">r-reshape2</requirement> + <requirement type="package" version="1.10.4">r-data.table</requirement> + <requirement type="package" version="0.2">r-dt</requirement> + <requirement type="package" version="0.9">r-htmlwidgets</requirement> + <requirement type="package" version="2.1.1">pandoc</requirement> + </requirements> + <command detect_errors="exit_code"><![CDATA[ + Rscript + '$__tool_directory__/BilanEnrichiPF.R' '$IdC2' '$__tool_directory__/refPF.csv' '$__tool_directory__/SpeciesList.csv' + + && + tail -n +2 output-summary.html > tmp && mv tmp output-summary.html && + tail -n +2 output-nightly.html > tmp && mv tmp output-nightly.html && + tail -n +2 output-hourly.html > tmp && mv tmp output-hourly.html +]]> + </command> + <inputs> + <param name="IdC2" type="data" format="tabular" label="IdValid output"/> + </inputs> + <outputs> + <data name="output_summary_tabular" format="tabular" from_work_dir="output-summary.tabular" label="${tool.name} on ${on_string} Summary"/> + <data name="output_summary_html" format="html" from_work_dir="output-summary.html" label="${tool.name} on ${on_string} Summary"/> + + <data name="output_nightly_tabular" format="tabular" from_work_dir="output-nightly.tabular" label="${tool.name} on ${on_string} Nightly"/> + <data name="output_nightly_html" format="html" from_work_dir="output-nightly.html" label="${tool.name} on ${on_string} Nightly"/> + + <data name="output_hourly_tabular" format="tabular" from_work_dir="output-hourly.tabular" label="${tool.name} on ${on_string} Hourly"/> + <data name="output_hourly_html" format="html" from_work_dir="output-hourly.html" label="${tool.name} on ${on_string} Hourly"/> + </outputs> + + <tests> + <test> + <param name="IdC2" value="BilanEnrichiPF_Test1.tabular"/> + <output name="output_tab" file="BilanEnrichiPF_Test1_out_tab.tabular" ftype="tabular"/> + </test> + </tests> + + <help><![CDATA[ + +.. class:: infomark + +========================== +Advanced restitution +========================== + +**What it does** + +The tool treats observations made with the "Point fixe" protocol: https://www.vigienature-ecole.fr/node/954> + +**Arguments** + +- Input is an observation/participation file corrected by the tools IdCorrect_2ndLayer and IdValid. +- Outputs are Summary/Nightly/Hourly raw tabulars, and html visualisations. + + ]]></help> + + <citations> + <citation type="bibtex"> + @article{kerbiriou2015vigie, + title={Vigie-Chiro: 9 ans de suivi des tendances des esp{\`e}ces communes}, + author={Kerbiriou, C and Julien, JF and Bas, Y and Marmet, J and Le Viol, I and Lorrilliere, R and Azam, C and Gasc, A and Lois, G}, + journal={Symbioses, nouvelle s{\'e}rie}, + number={34}, + year={2015} + } + </citation> + <citation type="bibtex"> + @inproceedings{bas2013automatic, + title={Automatic echolocation calls identification in Europe vs. Neotropics: more species does not mean more difficult}, + author={Bas, Yves and Escallon, Antoine and Ferre, Matthieu and Haquart, Alexandre and Rufray, Vincent and Disca, Thierry and Julien, Jean-Fran{\c{c}}ois} + } + </citation> + <citation type="bibtex"> + @inproceedings{kerbiriou2010long, + title={Long term trends monitoring of bats, from biodiversity indicator production to species specialization assessment}, + author={Kerbiriou, C and Bas, Y and Dufr{\^e}ne, L and Robert, A and Julien, JF}, + booktitle={24th Annual Meeting of the Society for Conservation Biology, Edmonton, Canada}, + year={2010} + } + </citation> + <citation type="doi">10.5334/jors.154</citation> + </citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BilanEnrichiRP.R Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,238 @@ +library(data.table) +library(DT) +library(htmlwidgets) + +args <- commandArgs(trailingOnly = TRUE) +#print(args) +EchelleErreur=c("","POSSIBLE","PROBABLE","SUR") +EchelleNumErreur=c(99,50,10,1) + +#for test +#inputest=list.files("C:/Users/Yves Bas/Documents/GitHub/65MO_Galaxy-E/raw_scripts/Vigie-Chiro/output_IdValid_input_BilanEnrichi/",pattern="IdC2.csv",full.names=T) +#for (i in 1:length(inputest)) +#{ +# args=c(inputest[i],"refRPSeuil50.csv","SpeciesList.csv") + +IdC2=fread(args[1]) +refRP=fread(args[2]) +GroupList=fread(args[3]) + + +if(substr(IdC2$`nom du fichier`[1],2,2)!="i") +{ + print("Protocole non conforme, ce script doit etre lance pour un protocole Routier ou Pedestre") +}else{ + +Routier=grepl("-",substr(IdC2$`nom du fichier`[1],4,7)) +#compute error risk by species (minimum error among files) +#to be replaced by glm outputs if I'll have time +RisqueErreurT=aggregate(IdC2$IdProb,by=list(IdC2$IdExtrap),FUN=function(x) ceiling((1-max(x-0.0001))*100)) +barplot(RisqueErreurT$x,names.arg=RisqueErreurT$Group.1,las=2) +#compute error risk accoring to observer/validator (a little dirty because it relies on alphabetical order of confidence classes: POSSIBLE < PROBABLE < SUR) +RisqueErreurOV0=match(IdC2$ConfV,EchelleErreur) +RisqueErreurOV=aggregate(RisqueErreurOV0,by=list(IdC2$IdExtrap) + ,FUN=max) +RisqueErreurOV2=EchelleNumErreur[RisqueErreurOV$x] +#compute minimum error risk between man and machine +RisqueErreur=pmin(RisqueErreurT$x,RisqueErreurOV2) + +#compute number of files validated per species +FichValid=aggregate(IdC2$IdV,by=list(IdC2$IdExtrap,IdC2$'nom du fichier') + ,FUN=function(x) sum(x!="")) +NbValid2=aggregate(FichValid$x,by=list(FichValid$Group.1),FUN=function(x) sum(x>0)) + +DiffC50=vector() # to store the median of confidence difference between unvalidated records and validated ones +DiffT50=vector() # to store the median of time difference between unvalidated records and validated ones +for (j in 1:nlevels(as.factor(IdC2$IdExtrap))) +{ + IdSp=subset(IdC2 + ,IdC2$IdExtrap==levels(as.factor(IdC2$IdExtrap))[j]) + IdSp$IdProb[is.na(IdSp$IdProb)]=0 + IdSp=IdSp[order(IdSp$IdProb),] + IdSpV=subset(IdSp,IdSp$IdV!="") + if(nrow(IdSpV)>0) + { + cuts <- c(-Inf, IdSpV$IdProb[-1]-diff(IdSpV$IdProb)/2, Inf) + CorrC=findInterval(IdSp$IdProb, cuts) + CorrC2=IdSpV$IdProb[CorrC] + DiffC=abs(IdSp$IdProb-CorrC2) + DiffC50=c(DiffC50,median(DiffC)) + + IdSp=IdSp[order(IdSp$TimeNum),] + IdSpV=subset(IdSp,IdSp$IdV!="") + cuts <- c(-Inf, IdSpV$TimeNum[-1]-diff(IdSpV$TimeNum)/2, Inf) + CorrT=findInterval(IdSp$TimeNum, cuts) + CorrT2=IdSpV$TimeNum[CorrT] + DiffT=abs(IdSp$TimeNum-CorrT2) + DiffT50=c(DiffT50,median(DiffT)) + }else{ + DiffC50=c(DiffC50,Inf) + DiffT50=c(DiffT50,Inf) + } +} +#compute an index of validation effort per species +EffortV=1/DiffC50/DiffT50 +EffortClass=(EffortV>0.0005)+(EffortV>0.005)+RisqueErreurOV$x +#cbind(RisqueErreurOV,EffortV,DiffC50,DiffT50) +barplot(EffortClass-1,names.arg=NbValid2$Group.1,las=2) +ClassEffortV=c("-","FAIBLE","SUFFISANT","SUFFISANT","FORT","FORT") +EffortClassMot=ClassEffortV[EffortClass] + + +#compare activity / reference frame +FileInfo=as.data.table(tstrsplit(IdC2$`nom du fichier`,"-")) +IdC2$Tron=FileInfo$V4 + +MicTempsInfo=as.data.table(tstrsplit(as.data.frame(FileInfo)[,(ncol(FileInfo))],"_")) +MicDroit=(as.data.frame(MicTempsInfo)[,(ncol(MicTempsInfo)-2)]=="1") +IdC2$MicDroit=MicDroit + +testTempsFin=aggregate(IdC2$temps_fin,by=list(MicDroit),FUN=max) +testTempsFin$Direct=(testTempsFin$x>0.5) +testTF2=sum((testTempsFin$x>0.5)) +if(testTF2>1){stop("Probleme stereo : les 2 canaux semblent etre en enregistrement direct")} +IdC2M=merge(IdC2,testTempsFin,by.x="MicDroit",by.y="Group.1") + +ActMoy=aggregate(IdC2$`nom du fichier` + ,by=list(IdC2M$IdExtrap,IdC2M$Direct),FUN=length) +ListSpref=match(levels(as.factor(ActMoy$Group.1)),refRP$Espece) +Subref=refRP[ListSpref] +if(Routier) +{ + Subref=Subref[,c(1:17)] +}else{ + Subref=Subref[,c(1,18:33)] +} +QualifActE=vector() +QualifActD=vector() + +for (k in 1:nlevels(as.factor(ActMoy$Group.1))) +{ + Actsub=subset(ActMoy,ActMoy$Group.1==levels(as.factor(ActMoy$Group.1))[k]) + if(is.na(Subref[k,2])) + { + QualifActE=c(QualifActE,NA) + QualifActD=c(QualifActD,NA) + }else{ + ActE=subset(Actsub,Actsub$Group.2==F) + if(nrow(ActE)==0) + { + QualifActE=c(QualifActE,NA) + + }else{ + cuts=cbind(-Inf,as.numeric(Subref[k,6]),as.numeric(Subref[k,7]) + ,as.numeric(Subref[k,8]),Inf) + QualifActE=c(QualifActE,findInterval(ActE$x,cuts,left.open=T)) + } + ActD=subset(Actsub,Actsub$Group.2==T) + if(nrow(ActD)==0) + { + QualifActD=c(QualifActD,NA) + + }else{ + cuts=cbind(-Inf,as.numeric(Subref[k,14]),as.numeric(Subref[k,15]) + ,as.numeric(Subref[k,16]),Inf) + QualifActD=c(QualifActD,findInterval(ActD$x,cuts,left.open=T)) + } + + } +} +ClassAct=c("FAIBLE","MODEREE","FORTE","TRES FORTE") +QualifActMotE=ClassAct[QualifActE] +QualifActMotD=ClassAct[QualifActD] + +#compute activity by nights (to be completed) +#ActNuit=aggregate(IdC2M$`nom du fichier`,by=list(IdC2M$DateNuit,IdC2M$IdExtrap),FUN=length) +ActED=dcast(data=ActMoy,formula=Group.1~Group.2,value=x) +ActED[is.na(ActED)]=0 +#organize the csv summary +SummPart0=cbind(Esp=levels(as.factor(IdC2M$IdExtrap)) + ,RisqueErreur,NbValid=NbValid2$x,EffortValid=EffortClassMot) + +test=match("FALSE",colnames(ActED)) +if(is.na(test)==F) +{ + SummPart0=cbind(SummPart0,Contacts_Expansion=ActED$'FALSE' + ,Niveau_Activite_Expansion=QualifActMotE) +}else{ + SummPart0=cbind(SummPart0,Contacts_Expansion="" + ,Niveau_Activite_Expansion="") +} +test=match("TRUE",colnames(ActED)) +if(is.na(test)==F) +{ + + SummPart0=cbind(SummPart0,Contacts_Direct=ActED$'TRUE' + ,Niveau_Activite_Direct=QualifActMotD) +}else{ + SummPart0=cbind(SummPart0,Contacts_Direct="" + ,Niveau_Activite_Direct="") +} + +InfoSp=c("GroupFR","NomFR","Scientific name","Esp") +GroupShort=GroupList[,..InfoSp] +SummPart=merge(GroupShort,SummPart0,by="Esp") +IndexGroupe=c("Autre","Sauterelle","Chauve-souris") +SummPart$IndexSumm=match(SummPart$GroupFR,IndexGroupe) +SummPart=SummPart[with(SummPart + ,order(IndexSumm,as.numeric(Contacts_Direct),as.numeric(Contacts_Expansion),decreasing=T)),] +colnames(SummPart)=c("Code","Groupe","Nom francais","Nom scientifique" + ,"Risque d'erreur (%)","Nb Validations" + ,"Effort de validation","Nb de Contacts en expansion" + ,"Niveau d'Activite en expansion" + ,"Nb de Contacts en direct" + ,"Niveau d'Activite en direct","TriGroupe") + +#to do: extend colors to other columns to improve readability +SummHTML=datatable(SummPart, rownames = FALSE) %>% + formatStyle(columns = c("Code","Groupe","Nom francais","Nom scientifique","Risque d'erreur (%)"),valueColumns="Risque d'erreur (%)", + background = styleInterval(c(1, 10, 50), c("white", "khaki", "orange", "orangered"))) %>% + formatStyle(columns = "Effort de validation", + background = styleEqual(c("-","FAIBLE","SUFFISANT","FORT"), c("white", "cyan", "royalblue", "darkblue"))) %>% + formatStyle(columns = c("Nb de Contacts en expansion","Niveau d'Activite en expansion"),valueColumns="Niveau d'Activite en expansion", + background = styleEqual(c("FAIBLE","MODEREE","FORTE","TRES FORTE"), c("palegoldenrod", "greenyellow", "limegreen", "darkgreen"))) %>% + formatStyle(columns = c("Nb de Contacts en direct","Niveau d'Activite en direct"),valueColumns="Niveau d'Activite en direct", + background = styleEqual(c("FAIBLE","MODEREE","FORTE","TRES FORTE"), c("palegoldenrod", "greenyellow", "limegreen", "darkgreen"))) + + +saveWidget(SummHTML,"output-summaryRP.html") +write.table(SummPart,"output-summaryRP.tabular",row.names=F,sep="\t") + +#summary for each point/transect + +#compute number of files validated per species +IdC2M$Canal=sapply(IdC2M$Direct,FUN=function(x) if(x){"Direct"}else{"Expansion"}) + +ActMoyTA=aggregate(IdC2M$`nom du fichier`,by=list(IdC2M$IdExtrap,IdC2M$Canal,IdC2M$Session),FUN=length) +ActMoyT=dcast(data=IdC2M,formula=IdExtrap+Canal~Session + ,fun.aggregate=length) +SummPartshort=cbind(SummPart[,c(1:5)],TriGroupe=SummPart[,TriGroupe]) +SummPartTron=merge(SummPartshort,ActMoyT,by.x="Code",by.y="IdExtrap") +SummPartTron=SummPartTron[order(TriGroupe,decreasing=T),] + +ListSession=levels(as.factor(IdC2M$Session)) +brks <- quantile(ActMoyTA$x, probs = seq(.05, .95, .05), na.rm = TRUE)-1 +clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>% +{paste0("rgb(255,", ., ",", ., ")")} + + +#to do: extend colors to other columns to improve readability +SummHTMLT=datatable(SummPartTron, rownames = FALSE) %>% + formatStyle(columns = c("Code","Groupe","Nom francais","Nom scientifique","Risque d'erreur (%)"),valueColumns="Risque d'erreur (%)", + background = styleInterval(c(1, 10, 50), c("white", "khaki", "orange", "orangered"))) %>% + formatStyle(columns=ListSession, backgroundColor = styleInterval(brks, clrs)) + +saveWidget(SummHTMLT,"output-detailRP.html") +write.table(SummPartTron,"output-detailRP.tabular",row.names=F,sep="\t") + +#saveWidget(SummHTML,paste0(substr(args[1],1,nchar(args[1])-9),"-summary.html")) +#write.table(SummPart,paste0(substr(args[1],1,nchar(args[1])-9),"-summary.csv"),row.names=F,sep="\t") +#saveWidget(SummHTMLT,paste0(substr(args[1],1,nchar(args[1])-9),"-detail.html")) +#write.table(SummPartTron,paste0(substr(args[1],1,nchar(args[1])-9),"-detail.csv"),row.names=F,sep="\t") + + + +} + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BilanEnrichiRPen.xml Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,74 @@ +<tool id="BilanEnrichiRP" name="Advanced restitution: raw approach" version="0.1"> + <description>from Animal Detection on Acoustic Recordings</description> + <requirements> + <requirement type="package" version="1.4.3">r-reshape2</requirement> + <requirement type="package" version="1.10.4">r-data.table</requirement> + <requirement type="package" version="0.2">r-dt</requirement> + <requirement type="package" version="0.9">r-htmlwidgets</requirement> + <requirement type="package" version="2.1.1">pandoc</requirement> + </requirements> + <command detect_errors="exit_code"><![CDATA[ + Rscript + '$__tool_directory__/BilanEnrichiRP.R' '$IdC2' '$__tool_directory__/refRPSeuil50.csv' '$__tool_directory__/SpeciesList.csv' + && + tail -n +2 output-summaryRP.html > tmp && mv tmp output-summaryRP.html && + tail -n +2 output-detailRP.html > tmp && mv tmp output-detailRP.html +]]> + </command> + <inputs> + <param name="IdC2" type="data" format="tabular" label="IdValid output"/> + </inputs> + <outputs> + <data name="output_summary_tabular" format="tabular" from_work_dir="output-summaryRP.tabular" label="${tool.name} on ${on_string} Summary"/> + <data name="output_summary_html" format="html" from_work_dir="output-summaryRP.html" label="${tool.name} on ${on_string} Summary"/> + <data name="output_detail_tabular" format="tabular" from_work_dir="output-detailRP.tabular" label="${tool.name} on ${on_string} Detail"/> + <data name="output_detail_html" format="html" from_work_dir="output-detailRP.html" label="${tool.name} on ${on_string} Detail"/> + </outputs> + + <tests> + <test> + <param name="IdC2" value="BilanEnrichiPF_Test1.tabular"/> + <output name="output_tab" file="BilanEnrichiPF_Test1_out_tab.tabular" ftype="tabular"/> + </test> + </tests> + + <help><![CDATA[ +**What it does** + +The tool analyses the observations made with the "Routier" or "Pedestre" protocols. + +**Arguments** + +- Input is an observation/participation file corrected by the tools IdCorrect_2ndLayer and IdValid. +- Outputs are Summary and details raw tabulars, and html visualisations. + + + ]]></help> + + <citations> + <citation type="bibtex"> + @article{kerbiriou2015vigie, + title={Vigie-Chiro: 9 ans de suivi des tendances des esp{\`e}ces communes}, + author={Kerbiriou, C and Julien, JF and Bas, Y and Marmet, J and Le Viol, I and Lorrilliere, R and Azam, C and Gasc, A and Lois, G}, + journal={Symbioses, nouvelle s{\'e}rie}, + number={34}, + year={2015} + } + </citation> + <citation type="bibtex"> + @inproceedings{bas2013automatic, + title={Automatic echolocation calls identification in Europe vs. Neotropics: more species does not mean more difficult}, + author={Bas, Yves and Escallon, Antoine and Ferre, Matthieu and Haquart, Alexandre and Rufray, Vincent and Disca, Thierry and Julien, Jean-Fran{\c{c}}ois} + } + </citation> + <citation type="bibtex"> + @inproceedings{kerbiriou2010long, + title={Long term trends monitoring of bats, from biodiversity indicator production to species specialization assessment}, + author={Kerbiriou, C and Bas, Y and Dufr{\^e}ne, L and Robert, A and Julien, JF}, + booktitle={24th Annual Meeting of the Society for Conservation Biology, Edmonton, Canada}, + year={2010} + } + </citation> + <citation type="doi">10.5334/jors.154</citation> +</citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GroupList_HF.csv Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,112 @@ +Nesp;France;Turquie;Espagne;Norfolk;Scientific name;Group;Seuil_grossier;NomFR;GroupFR +amph;x;x;x;x;Amphibia sp.;frog;0;Amphibien sp.;Autre +Antius;x;;x;;Antaxius spinibrachius;bush-cricket;0;Antaxie voyageuse;Sauterelle +Antped;x;;;;Antaxius pedestris;bush-cricket;0.6;Antaxie marbree;Sauterelle +Antsor;x;;;;Antaxius sorrezensis;bush-cricket;0;Antaxie cevenole;Sauterelle +Aposp;x;x;x;;Apodemus sp.;other mammal;0;Mulot sp.;Autre +Barbar;x;x;x;x;Barbastella barbastellus;bat;0.45;Barbastelle d'Europe;Chauve-souris +Barfis;x;;;;Barbitistes fischeri;bush-cricket;0.25;Barbitiste languedocien;Sauterelle +Barsan;x;;x;;Barbitistes cf. sanzii;bush-cricket;0;Barbitiste cryptique;Sauterelle +Barser;x;;x;;Barbitistes serricauda;bush-cricket;0;Barbitiste des bois;Sauterelle +Bicbic;x;;x;;Bicolorana bicolor;bush-cricket;0.5;Decticelle bicolore;Sauterelle +chirp;x;;;;chirp;noise;0;chirp;Autre +Cicorn;x;x;x;;Cicada orni;cicada;0;Cigale grise;Autre +Condor;x;x;x;x;Conocephalus dorsalis;bush-cricket;0.7;Conocephale des marais;Sauterelle +Confus;x;;x;x;Conocephalus fuscus;bush-cricket;0.7;Conocephale bigarre;Sauterelle +criq;x;x;x;x;Acrididae sp.;grasshopper;0;Criquet sp.;Autre +Cympud;x;;x;;Cymbalophora pudica;moth;0;Ecaille pudique;Autre +Cyrscu;x;;x;;Cyrtaspis scutatus;bush-cricket;0;Meconeme a bouclier;Sauterelle +Decalb;x;x;x;;Decticus albifrons;bush-cricket;0;Dectique a front blanc;Sauterelle +Epheph;x;;x;;Ephippiger ephippiger;bush-cricket;0.7;Ephippigere des vignes;Sauterelle +Eptana;;x;;;Eptesicus anatolicus;bat;0;Serotine d'Anatolie;Chauve-souris +Eptisa;;;x;;Eptesicus isabellinus;bat;0;Serotine isabelle;Chauve-souris +Eptser;x;x;x;x;Eptesicus serotinus;bat;0.35;Serotine commune;Chauve-souris +Eumbor;x;x;x;;Eumodycogryllus bordigalensis;ground-cricket;0;Grillon bordelais;Autre +Eupcha;x;x;;;Eupholidoptera chabrieri;bush-cricket;0;Decticelle splendide;Sauterelle +Hypsav;x;x;x;;Hypsugo savii;bat;0.63;Vespere de Savi;Chauve-souris +Inssp1;x;;x;x;Insect sp.1;insect;0;Insecte sp. type 1;Autre +Inssp2;x;;x;x;Insect sp.2;insect;0;Insecte sp. type 2;Autre +Inssp5;x;;x;x;Insect sp.5;insect;0;Insecte sp. type 5;Autre +Inssp6;x;;x;x;Insect sp.6;insect;0;Insecte sp. type 6;Autre +Inssp7;x;;x;x;Insect sp.7;insect;0;Insecte sp. type 7;Autre +InsTu1;;x;;;Insect sp. from Turkey 1;insect;0;Insecte sp. Tu1;Autre +Isopyr;x;x;x;;Isophya pyrenea;bush-cricket;0.6;Barbatiste pyreneen;Sauterelle +Lamsp.;x;x;x;x;Lampyris sp.;beetle;0;Lampyre sp.;Autre +Lepalb;;x;;;Leptophyes albovittata;bush-cricket;0;Sauterelle rayee;Sauterelle +Lepbos;x;;;;Leptophyes boscii;bush-cricket;0;Sauterelle sarmate;Sauterelle +Leppun;x;;x;x;Leptophyes punctatissima;bush-cricket;0.7;Sauterelle ponctuee;Sauterelle +Llusta;;;x;;Lluciapomaresius stalii;bush-cricket;0;Ephippigere de Stal;Sauterelle +mamm;x;x;x;x;Mammalia sp.;other mammal;0;Mammifere sp.;Autre +Metbra;x;;;x;Metrioptera brachyptera;bush-cricket;0;Decticelle des bruyeres;Sauterelle +Micagr;x;x;x;x;Microtus agrestis;other mammal;0;Campagnol agreste;Autre +Minsch;x;x;x;;Miniopterus schreibersii;bat;0.57;Minioptere;Chauve-souris +Mussp;x;x;x;x;Crocidura russula;other mammal;0;Musaraigne sp.;Autre +Myoalc;x;x;x;x;Myotis alcathoe;bat;0.35;Murin d'Alcathoe;Chauve-souris +Myobec;x;x;x;x;Myotis bechsteinii;bat;0;Murin de Bechstein;Chauve-souris +Myobra;x;x;;x;Myotis brandtii;bat;0;Murin de Brandt;Chauve-souris +Myocap;x;x;x;;Myotis capaccinii;bat;0.69;Murin de Capaccini;Chauve-souris +Myodas;x;x;;;Myotis dasycneme;bat;0;Murin des marais;Chauve-souris +Myodau;x;x;x;x;Myotis daubentonii;bat;0.27;Murin de Daubenton;Chauve-souris +Myoema;x;x;x;x;Myotis emarginatus;bat;0.42;Murin a oreilles echancrees;Chauve-souris +MyoGT;x;x;x;;Myotis cf. myotis;bat;0.35;Murin de grande taille;Chauve-souris +Myomys;x;x;x;x;Myotis mystacinus;bat;0.55;Murin a moustaches;Chauve-souris +Myonat;x;x;;x;Myotis cf. nattereri;bat;0.46;Murin groupe Natterer;Chauve-souris +noise;x;x;x;x;noise;noise;0;bruit;Autre +Nyclas;x;x;x;;Nyctalus lasiopterus;bat;0.5;Grande Noctule;Chauve-souris +Nyclei;x;x;x;x;Nyctalus leisleri;bat;0.42;Noctule de Leisler;Chauve-souris +Nycnoc;x;x;x;x;Nyctalus noctula;bat;0.5;Noctule commune;Chauve-souris +Odomac;;;x;;Odontura macphersoni;bush-cricket;0;Sauterelle de MacPherson;Sauterelle +Phafal;x;x;x;;Phaneroptera falcata;bush-cricket;0;Phaneroptere commun;Sauterelle +Phanan;x;x;x;;Phaneroptera nana;bush-cricket;0.55;Phaneroptere meridional;Sauterelle +Phofem;x;x;;;Pholidoptera femorata;bush-cricket;0;Decticelle des friches;Sauterelle +Phogri;x;x;x;x;Pholidoptera griseoaptera;bush-cricket;0.8;Decticelle cendree;Sauterelle +piaf;x;x;x;x;Aves sp.;bird;0;Oiseau sp.;Autre +Pipkuh;x;x;x;x;Pipistrellus kuhlii;bat;0.43;Pipistrelle de Kuhl;Chauve-souris +Pipnat;x;x;x;x;Pipistrellus nathusii;bat;0.68;Pipistrelle de Nathusius;Chauve-souris +Pippip;x;x;x;x;Pipistrellus pipistrellus;bat;0.24;Pipistrelle commune;Chauve-souris +Pippyg;x;x;x;x;Pipistrellus pygmaeus;bat;0.68;Pipistrelle soprane;Chauve-souris +Plaaff;x;;x;;Platycleis affinis;bush-cricket;0;Decticelle cotiere;Sauterelle +Plaalb;x;;x;x;Platycleis albopunctata;bush-cricket;0;Decticelle chagrinee;Sauterelle +Plafal;x;;x;;Platycleis falx;bush-cricket;0;Decticelle a serpe;Sauterelle +Plaibe;;;x;;Platycleis iberica;bush-cricket;0;Decticelle iberique;Sauterelle +Plaint;x;;x;;Platycleis intermedia;bush-cricket;0;Decticelle intermediaire;Sauterelle +Plasab;x;;x;;Platycleis sabulosa;bush-cricket;0;Decticelle des sables;Sauterelle +Pleaur;x;;x;x;Plecotus auritus;bat;0.3;Oreillard roux;Chauve-souris +Pleaus;x;;x;x;Plecotus austriacus;bat;0.52;Oreillard gris;Chauve-souris +Plekol;;x;;;Plecotus kolombatovici;bat;0;Oreillard des Balkans;Chauve-souris +Plemac;x;x;x;;Plecotus macrobullaris;bat;0.5;Oreillard montagnard;Chauve-souris +Pteger;x;x;;;Pterolepis germanica;bush-cricket;0;Decticelle orientale;Sauterelle +Ptegra;;x;x;;Pterolepis grallata;bush-cricket;0;Decticelle a pattes fines;Sauterelle +Ptepon;x;x;x;;Pterolepis poneli;bush-cricket;0;Decticelle varoise;Sauterelle +Pycjug;;;x;;Pycnogaster jugicola;bush-cricket;0;Ephippigere droite;Sauterelle +Ratnor;x;x;x;x;Rattus norvegicus;other mammal;0;Surmulot;Autre +Rhibla;x;x;;;Rhinolophus blasii;bat;0;Rhinolophe de Blasius;Chauve-souris +Rhieur;x;x;x;;Rhinolophus euryale;bat;0.2;Rhinolophe euryale;Chauve-souris +Rhifer;x;x;x;x;Rhinolophus ferrumequinum;bat;0.3;Grand Rhinolophe;Chauve-souris +Rhihip;x;x;x;x;Rhinolophus hipposideros;bat;0.53;Petit Rhinolophe;Chauve-souris +Rhimeh;;x;x;;Rhinolophus mehelyi;bat;0;Rinolophe de Mehely;Chauve-souris +Roeroe;x;x;x;x;Roeseliana roeselii;bush-cricket;0;Decticelle bariolee;Sauterelle +Rusnit;x;x;x;x;Ruspolia nitidula;bush-cricket;0;Conocephale gracieux;Sauterelle +SauTu4;;x;;;Tettigoniidae sp. from Turkey 4;bush-cricket;0;Sauterelle sp. Tu4;Sauterelle +SauTu5;;x;;;Tettigoniidae sp. from Turkey 5;bush-cricket;0;Sauterelle sp. Tu5;Sauterelle +SauTu6;;x;;;Tettigoniidae sp. from Turkey 6;bush-cricket;0;Sauterelle sp. Tu6;Sauterelle +SauTu7;;x;;;Tettigoniidae sp. from Turkey 7;bush-cricket;0;Sauterelle sp. Tu7;Sauterelle +SauTurquiesp1;;x;;;Tettigoniidae sp. from Turkey 1;bush-cricket;0;Sauterelle sp. Tu1;Sauterelle +SauTurquiesp2;;x;;;Tettigoniidae sp. from Turkey 2;bush-cricket;0;Sauterelle sp. Tu2;Sauterelle +SauTurquiesp3;;x;;;Tettigoniidae sp. from Turkey 3;bush-cricket;0;Sauterelle sp. Tu3;Sauterelle +Sepsep;x;;x;;Sepiana sepium;bush-cricket;0;Decticelle echassiere;Sauterelle +Tadten;x;x;x;;Tadarida teniotis;bat;0.4;Molosse;Chauve-souris +Tesori;;;;;Tessellana orina;bush-cricket;0;Decticelle orina;Sauterelle +Testes;x;x;x;;Tessellana tessellata;bush-cricket;0;Decticelle carroyee;Sauterelle +Tetarg;x;;x;;Tettigetta argentata;cicada;0;Cigale argentee;Autre +Tetcan;x;x;x;;Tettigonia cantans;bush-cricket;0;Sauterelle cymbaliere;Sauterelle +Tethis;;;x;;Tettigonia hispanica;bush-cricket;0;Sauterelle hispanique;Sauterelle +Tetpyg;x;;x;;Tettigetta pygmea;cicada;0;Cigale pygmee;Autre +Tetvir;x;x;x;x;Tettigonia viridissima;bush-cricket;0;Sauterelle verte;Sauterelle +Thycor;x;;x;;Thyreonotus corsicus;bush-cricket;0;Decticelle marocaine;Sauterelle +Tyllil;x;x;x;;Tylopsis lilifolia;bush-cricket;0;Phaneroptere liliace;Sauterelle +Urorug;x;;x;;Uromenus rugosicollis;bush-cricket;0;Ephippigere carenee;Sauterelle +Vesmur;x;x;x;;Vespertilio murinus;bat;0.5;Serotine bicolore;Chauve-souris +Yerbey;x;;;;Yersinella beybienkoi;bush-cricket;0;Decticelle italienne;Sauterelle +Yerray;x;;x;;Yersinella raymondii;bush-cricket;0;Decticelle frele;Sauterelle +Zeuabb;x;;x;;Zeuneriana abbreviata;bush-cricket;0;Decticelle aquitaine;Sauterelle
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IdCorrect_2ndLayer.R Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,181 @@ +library(data.table) +library(randomForest) +args <- commandArgs(trailingOnly = TRUE) + +set.seed(1) #To test reproductibility + + +#for test +#inputest=list.files("C:/Users/Yves Bas/Documents/GitHub/65MO_Galaxy-E/raw_scripts/Vigie-Chiro/input_examples",full.names=T,pattern="participation-") +#for (i in 1:length(inputest)) +#{ +# args=c(inputest[i],"ClassifEspC2b_180222.learner") +#args[3]=basename(args[1]) + +filename=args[3] +if (exists("ClassifEspC2b")==F){load(args[2])} + +DataPar=fread(args[1]) #id to be corrected +DataPar$participation=substr(filename,nchar(filename)-40,nchar(filename)-17) +test1=duplicated(cbind(DataPar$'nom du fichier',DataPar$tadarida_taxon)) +test2=(DataPar$tadarida_taxon=="empty") +DataPar=subset(DataPar,(!test1)|(test2)) +DataPar$tadarida_probabilite[DataPar$tadarida_probabilite==""]="0" +DataPar$tadarida_probabilite=as.numeric(DataPar$tadarida_probabilite) + + +#tableau comptabilisant le nombre de contacts par espèces +nbcT=as.matrix(table(DataPar$participation,DataPar$tadarida_taxon)) + +DataPar$tadarida_probabilite=as.numeric(DataPar$tadarida_probabilite) + +#generating input variables for second layer classification + +Q25=vector() +Q50=vector() +Q75=vector() +Q90=vector() +Q95=vector() +Q98=vector() +Q100=vector() +compt=0 +PropSp=nbcT[0,] +VoteO=DataPar[0,] +for (j in 1:nlevels(as.factor(DataPar$tadarida_taxon))) + { + Datasub2=subset(DataPar,DataPar$tadarida_taxon==levels(as.factor(DataPar$tadarida_taxon))[j]) + + Q25=c(Q25,rep(quantile(Datasub2$tadarida_probabilite,0.25),nrow(Datasub2))) + Q50=c(Q50,rep(quantile(Datasub2$tadarida_probabilite,0.50),nrow(Datasub2))) + Q75=c(Q75,rep(quantile(Datasub2$tadarida_probabilite,0.75),nrow(Datasub2))) + Q90=c(Q90,rep(quantile(Datasub2$tadarida_probabilite,0.90),nrow(Datasub2))) + Q95=c(Q95,rep(quantile(Datasub2$tadarida_probabilite,0.95),nrow(Datasub2))) + Q98=c(Q98,rep(quantile(Datasub2$tadarida_probabilite,0.98),nrow(Datasub2))) + Q100=c(Q100,rep(max(Datasub2$tadarida_probabilite),nrow(Datasub2))) + Ncont1=nrow(Datasub2) + VoteO=rbind(VoteO,Datasub2) + PropSp0=nbcT/Ncont1 + PropSp=rbind(PropSp,PropSp0[rep(seq_len(nrow(PropSp0)),nrow(Datasub2)),]) + compt=compt+nrow(Datasub2) + #print(paste(compt,levels(as.factor(DataPar$tadarida_taxon))[j])) + } + +VoteC2=cbind(VoteO,PropSp,Q25,Q50,Q75,Q90,Q95,Q98,Q100) + + +#édition des titres de colonne pour identifier les variables de type "proportions d'abondances" +for (i in 15:(ncol(VoteC2)-7)) +{ + colnames(VoteC2)[i]=paste0(names(VoteC2)[i],"_prop") +} + +#rajouter les espèces manquantes +EspForm=subset(row.names(ClassifEspC2b$importance) + ,substr(row.names(ClassifEspC2b$importance) + ,nchar(row.names(ClassifEspC2b$importance))-4 + ,nchar(row.names(ClassifEspC2b$importance))) + =="_prop") +test=match(EspForm,colnames(VoteC2)) +EspM=subset(EspForm,is.na(test)) +Zeros=matrix(nrow=nrow(VoteC2),ncol=length(EspM)) +Zeros[is.na(Zeros)]=0 +colnames(Zeros)=EspM +VoteC2=cbind(VoteC2,Zeros) + +ListDV=levels(as.factor(DataPar$'nom du fichier')) +#calcule les probabilités max par espèce et par fichier +#(utile pour corriger les erreurs dues à la coexistence de taxons dans le même fichier +#ex: cris sociaux de Pipistrelles identifiées comme autre chose (Noctule, oreillard...)) +MaxI=tapply(DataPar$tadarida_probabilite + ,INDEX=list(c(DataPar$'nom du fichier'),c(DataPar$tadarida_taxon)) + ,FUN=max) +MaxI2=as.data.frame(cbind(row.names(MaxI),MaxI)) +for (i in 2:ncol(MaxI2)) +{ + MaxI2[,i]=as.numeric(as.character(MaxI2[,i])) +} +MaxI2[is.na(MaxI2)]=0 + +#édition des titres de colonne pour identifier les variables de type "indices max" +for (i in 2:(ncol(MaxI2))) +{ + colnames(MaxI2)[i]=paste0(names(MaxI2)[i],"_maxI") +} + + +#rajouter les espèces manquantes +EspForm=subset(row.names(ClassifEspC2b$importance) + ,substr(row.names(ClassifEspC2b$importance) + ,nchar(row.names(ClassifEspC2b$importance))-4 + ,nchar(row.names(ClassifEspC2b$importance))) + =="_maxI") +test=match(EspForm,colnames(MaxI2)) +EspM=subset(EspForm,is.na(test)) +Zeros=matrix(nrow=nrow(MaxI2),ncol=length(EspM)) +Zeros[is.na(Zeros)]=0 +colnames(Zeros)=EspM +MaxI2=cbind(MaxI2,Zeros) + + + + +#indice de confiance à l'echelle de l'observation (groupe de cris identifié comme provenant d'une seule espèce par la première couche) +if(exists("IdS3")){rm(IdS3)} +for (i in 1:nlevels(as.factor(DataPar$tadarida_taxon))) +{ + Idsub=subset(DataPar,DataPar$tadarida_taxon==levels(as.factor(DataPar$tadarida_taxon))[i]) + IdS2=cbind('nom du fichier'=Idsub$'nom du fichier',tadarida_taxon=Idsub$tadarida_taxon,prob=Idsub$tadarida_probabilite) + colnames(IdS2)[3]=paste(levels(as.factor(DataPar$tadarida_taxon))[i]) + if(exists("IdS3")){IdS3=merge(IdS3,IdS2,all=T)}else{IdS3=IdS2} + #print(i) +} + +for (i in 3:ncol(IdS3)) +{ + IdS3[,i]=as.numeric(as.character(IdS3[,i])) +} + +#édition des titres de colonne pour identifier les variables de type "indices de l'observation" +for (i in 3:(ncol(IdS3))) +{ + colnames(IdS3)[i]=paste0(names(IdS3)[i],"_ValI") +} + +IdS3[is.na(IdS3)]=0 + +#rajouter les espèces manquantes +EspForm=subset(row.names(ClassifEspC2b$importance) + ,substr(row.names(ClassifEspC2b$importance) + ,nchar(row.names(ClassifEspC2b$importance))-4 + ,nchar(row.names(ClassifEspC2b$importance))) + =="_ValI") +test=match(EspForm,colnames(IdS3)) +EspM=subset(EspForm,is.na(test)) +Zeros=matrix(nrow=nrow(IdS3),ncol=length(EspM)) +Zeros[is.na(Zeros)]=0 +colnames(Zeros)=EspM +IdS3=cbind(IdS3,Zeros) + +#on merge les prop d'espèces, les quantiles et les indices par fichiers et par observations +VoteC3=merge(VoteC2,MaxI2,by.x="nom du fichier",by.y="V1") +VoteC4=merge(VoteC3,IdS3,by=c("nom du fichier","tadarida_taxon")) +VoteC4$temps_fin=as.numeric(as.character(VoteC4$temps_fin)) +VoteC4$temps_debut=as.numeric(as.character(VoteC4$temps_debut)) +VoteC4$frequence=as.numeric(as.character(VoteC4$frequence_mediane)) +VoteC4$durseq=VoteC4$temps_fin-VoteC4$temps_debut + +ProbEsp_C2b=predict(ClassifEspC2b,VoteC4,type="prob",norm.votes=TRUE) +ProbEsp_C2bs=predict(ClassifEspC2b,VoteC4,type="response",norm.votes=TRUE) + +colnum=match("participation",colnames(VoteC4)) +DataCorrC2=cbind(VoteC4[,1:colnum],ProbEsp_C2b,ProbEsp_C2bs) +DataCorrC2=DataCorrC2[order(DataCorrC2$tadarida_probabilite,decreasing=T),] +DataCorrC2=DataCorrC2[order(DataCorrC2$'nom du fichier'),] + +DataCorrC2$ProbEsp_C2bs=as.character(DataCorrC2$ProbEsp_C2bs) +DataCorrC2$ProbEsp_C2bs[is.na(DataCorrC2$ProbEsp_C2bs)]="empty" + +fout_name="output.tabular" + +write.table(DataCorrC2,file=fout_name,row.names=FALSE,sep="\t") +#write.table(DataCorrC2,paste0(substr(args[1],nchar(args[1])-40,nchar(args[1])-17),"-DataCorrC2.csv"),row.names=F,sep="\t")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IdCorrect_2ndLayer_en.xml Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,102 @@ +<tool id="IdCorrect_2ndLayer" name="Tadarida data cleaner" version="0.1"> + <description>clean data from animal detection on acoustic recordings</description> + <requirements> + <requirement type="package" version="1.10.4">r-data.table</requirement> + <requirement type="package" version="4.6_12">r-randomforest</requirement> + </requirements> + <command detect_errors="exit_code"><![CDATA[ + Rscript + '$__tool_directory__/IdCorrect_2ndLayer.R' '$participation_file' + + #if $learner.condi_learner == "custom": + '$learner.user_learner' + #else + '$__tool_directory__/ClassifEspC2b_180222.learner' + #end if + + '${participation_file.name}' + + '$output' +]]> + </command> + <inputs> + <param name="participation_file" type="data" format="csv" label="Participation file"/> + <param name="learner" type="data" label="Choose your leaner" format="rdata"/> + + <conditional name="learner"> + <param name="condi_learner" type="select" label="Select a classifier" help="Default is ClassifEspC2b_180222"> + <option value="c18">ClassifEspC2b_180222</option> + <option value="custom">Custom Classifier</option> + </param> + + <when value="c18"> + </when> + <when value="custom"> + <param name="user_learner" type="data" label="Choose your classifier" format="rdata"/> + </when> + </conditional> + + </inputs> + <outputs> + <data name="output" from_work_dir="output.tabular" format="tabular"/> + </outputs> + <tests> + <test> + <param name="participation_file" value="IdCor2Layer_Test1_obs.csv"/> + <param name="condi_learner" value="default_learner"/> + <output name="output" file="IdCor2Layer_Test1_out.tabular"/> + </test> + <test> + <param name="participation_file" value="IdCor2Layer_Test1_obs.csv"/> + <param name="condi_learner" value="custom_learner"/> + <param name="user_learner" value="ClassifEspC2b_171206.learner"/> + <output name="output" file="IdCor2Layer_Test1_out.tabular"/> + </test> + + </tests> + <help><![CDATA[ + +.. class:: infomark + +========================== +Tadarida data cleaner +========================== + +**What it does** + +This tool intend to correct ids from 1st layer of Tadarida software, and improve data output according to context (= the whole output of a sampling session). + +**Arguments** + +It should be called with 2 consecutive arguments : + +- a summary table of TadaridaC output from vigiechiro.herokuapp.com web portal. +- the 2nd layer classifier built on validated id in Vigie-Chiro database (eg : "ClassifEspC2b_180222.learner") + ]]></help> + <citations> + <citation type="bibtex"> + @article{kerbiriou2015vigie, + title={Vigie-Chiro: 9 ans de suivi des tendances des esp{\`e}ces communes}, + author={Kerbiriou, C and Julien, JF and Bas, Y and Marmet, J and Le Viol, I and Lorrilliere, R and Azam, C and Gasc, A and Lois, G}, + journal={Symbioses, nouvelle s{\'e}rie}, + number={34}, + year={2015} + } + </citation> + <citation type="bibtex"> + @inproceedings{bas2013automatic, + title={Automatic echolocation calls identification in Europe vs. Neotropics: more species does not mean more difficult}, + author={Bas, Yves and Escallon, Antoine and Ferre, Matthieu and Haquart, Alexandre and Rufray, Vincent and Disca, Thierry and Julien, Jean-Fran{\c{c}}ois} + } + </citation> + <citation type="bibtex"> + @inproceedings{kerbiriou2010long, + title={Long term trends monitoring of bats, from biodiversity indicator production to species specialization assessment}, + author={Kerbiriou, C and Bas, Y and Dufr{\^e}ne, L and Robert, A and Julien, JF}, + booktitle={24th Annual Meeting of the Society for Conservation Biology, Edmonton, Canada}, + year={2010} + } + </citation> + <citation type="doi">10.5334/jors.154</citation> +</citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IdValid.R Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,180 @@ +library(data.table) + +ValidHier=function(x,y) #used to write validator id over observer id +{ + if(y==""){x}else{y} +} + +f2p <- function(x) #get date-time data from recording file names +{ + if (is.data.frame((x)[1])) {pretemps <- vector(length = nrow(x))} + op <- options(digits.secs = 3) + pretemps <- paste(substr(x, nchar(x) - 18, nchar(x)-4), ".", substr(x, nchar(x) - 2, nchar(x)), sep = "") + strptime(pretemps, "%Y%m%d_%H%M%OS",tz="UTC")-7200 +} + +args <- commandArgs(trailingOnly = TRUE) + + +#print(args) + + +#for test +#inputest=list.files("C:/Users/Yves Bas/Documents/GitHub/65MO_Galaxy-E/raw_scripts/Vigie-Chiro/output_IdCorrect_2ndLayer_input_IdValid/",full.names=T) +#for (i in 1:length(inputest)) +#{ +#args=c(inputest[i],"Referentiel_seuils_C2.csv") +#args=c("5857d56d9ebce1000ed89ea7-DataCorrC2.csv","Referentiel_seuils_C2.csv") + + + +IdCorrect=fread(args[1]) +RefSeuil=fread(args[2]) +#IdV=as.data.frame(subset(IdCorrect,select=observateur_taxon:validateur_probabilite)) + +#Step 0 :compute id score from 2nd Layer +test=match("participation",names(IdCorrect)) +IdCorrect$IdScore=apply(as.data.frame(IdCorrect)[,(test+1):(ncol(IdCorrect)-1)],MARGIN=1,FUN=max) +#compute true success probabilities according to logistic regression issued from "Referentiel_seuils" +CorrSp=match(IdCorrect$ProbEsp_C2bs,RefSeuil$Espece) +PSp=RefSeuil$Pente[CorrSp] +ISp=RefSeuil$Int[CorrSp] + +suppressWarnings(IdCorrect$IdProb<-mapply(FUN=function(w,x,y) if((!is.na(y))&(y>0)&(y<1000)) {(exp(y*w+x)/(1+exp(y*w+x)))}else{w} ,IdCorrect$IdScore,ISp,PSp)) + + + + +#Step 1 :compute id with confidence regarding a hierarchy (validator > observer) +IdCorrect$IdV=mapply(ValidHier,IdCorrect$observateur_taxon,IdCorrect$validateur_taxon) +IdCorrect$ConfV=mapply(ValidHier,IdCorrect$observateur_probabilite + ,IdCorrect$validateur_probabilite) + + +#print(paste(args[1],length(subset(IdCorrect$ConfV,IdCorrect$ConfV!="")))) + +#Step 2: Get numerictime data +suppressWarnings(IdCorrect$Session<-NULL) +suppressWarnings(IdCorrect$TimeNum<-NULL) + +if (substr(IdCorrect$`nom du fichier`[1],2,2)=="i") #for car/walk transects +{ + FileInfo=as.data.table(tstrsplit(IdCorrect$`nom du fichier`,"-")) + IdCorrect$Session=as.numeric(substr(FileInfo$V4,5,nchar(FileInfo$V4))) + TimeSec=as.data.table(tstrsplit(FileInfo$V5,"_")) + TimeSec=as.data.frame(TimeSec) + if(sum(TimeSec[,(ncol(TimeSec)-1)]!="00000")==0) #to deal with double Kaleidoscope treatments + { + print("NOMS DE FICHIERS NON CONFORMES") + print("Vous les avez probablement traiter 2 fois par Kaleidoscope") + stop("Merci de nous signaler cette erreur par mail pour correction") + }else{ + IdCorrect$TimeNum=(IdCorrect$Session*800 + +as.numeric(TimeSec[,(ncol(TimeSec)-1)]) + +as.numeric(TimeSec[,(ncol(TimeSec))])/1000) + } + +}else{ + if(substr(IdCorrect$`nom du fichier`[1],2,2)=="a") #for stationary recordings + { + DateRec=as.POSIXlt(f2p(IdCorrect$`nom du fichier`)) + Nuit=format(as.Date(DateRec-43200*(DateRec$hour<12)),format="%d/%m/%Y") + #Nuit[is.na(Nuit)]=0 + IdCorrect$Session=Nuit + IdCorrect$TimeNum=as.numeric(DateRec) + + }else{ + print("NOMS DE FICHIERS NON CONFORMES") + stop("Ils doivent commencer par Cir (routier/pedestre) ou par Car (points fixes") + } +} + + + + +#Step 3 :treat sequentially each species identified by Tadarida-C +IdExtrap=vector() #to store the id extrapolated from validations +IdC2=IdCorrect[0,] #to store data in the right order +TypeE=vector() #to store the type of extrapolation made +for (j in 1:nlevels(as.factor(IdCorrect$ProbEsp_C2bs))) +{ + IdSp=subset(IdCorrect + ,IdCorrect$ProbEsp_C2bs==levels(as.factor(IdCorrect$ProbEsp_C2bs))[j]) + if(sum(IdSp$IdV=="")==(nrow(IdSp))) #case 1 : no validation no change + { + IdC2=rbind(IdC2,IdSp) + IdExtrap=c(IdExtrap,rep(IdSp$ProbEsp_C2bs[1],nrow(IdSp))) + TypeE=c(TypeE,rep(0,nrow(IdSp))) + }else{ #case 2: some validation + Vtemp=subset(IdSp,IdSp$IdV!="") + #case2A: validations are homogeneous + if(nlevels(as.factor(Vtemp$IdV))==1) + { + IdC2=rbind(IdC2,IdSp) + IdExtrap=c(IdExtrap,rep(Vtemp$IdV[1],nrow(IdSp))) + TypeE=c(TypeE,rep(2,nrow(IdSp))) + }else{ + #case 2B: validations are heterogeneous + #case 2B1: some validations confirms the species identified by Tadarida and highest confidence are confirmed + subVT=subset(Vtemp,Vtemp$IdV==levels(as.factor(IdCorrect$ProbEsp_C2bs))[j]) + subVF=subset(Vtemp,Vtemp$IdV!=levels(as.factor(IdCorrect$ProbEsp_C2bs))[j]) + if((nrow(subVT)>0)&(max(subVT$IdProb)>max(subVF$IdProb))) + { + Vtemp=Vtemp[order(Vtemp$IdProb),] + test=(Vtemp$IdV!=Vtemp$ProbEsp_C2bs) + Fr1=max(which(test == TRUE)) #find the error with highest indices + Thr1=mean(Vtemp$IdProb[(Fr1):(Fr1+1)]) #define first threshold as the median confidence between the first error and the confirmed ID right over it + #id over this threshold are considered right + IdHC=subset(IdSp,IdSp$IdProb>Thr1) + IdC2=rbind(IdC2,IdHC) + IdExtrap=c(IdExtrap,rep(Vtemp$IdV[nrow(Vtemp)],nrow(IdHC))) + TypeE=c(TypeE,rep(2,nrow(IdHC))) + #id under this threshold are attributed to validated id closest in time + Vtemp=Vtemp[order(Vtemp$TimeNum),] + cuts <- c(-Inf, Vtemp$TimeNum[-1]-diff(Vtemp$TimeNum)/2, Inf) + CorrV=findInterval(IdSp$TimeNum, cuts) + IdE=Vtemp$IdV[CorrV] + IdEL=subset(IdE,IdSp$IdProb<=Thr1) + IdLC=subset(IdSp,IdSp$IdProb<=Thr1) + IdExtrap=c(IdExtrap,IdEL) + TypeE=c(TypeE,rep(1,length(IdEL))) + IdC2=rbind(IdC2,IdLC) + + + }else{ + #case 2B2: all validations concerns errors + #id are extrapolated on time only + Vtemp=Vtemp[order(Vtemp$TimeNum),] + cuts <- c(-Inf, Vtemp$TimeNum[-1]-diff(Vtemp$TimeNum)/2, Inf) + CorrV=findInterval(IdSp$TimeNum, cuts) + IdE=Vtemp$IdV[CorrV] + IdExtrap=c(IdExtrap,IdE) + TypeE=c(TypeE,rep(1,length(IdE))) + IdC2=rbind(IdC2,IdSp) + } + } + + + } + + +} +test1=(nrow(IdC2)==length(IdExtrap)) +test2=(nrow(IdC2)==nrow(IdCorrect)) +if((test1==F)|(test2==F)) +{ + (stop("Erreur de traitement !!!")) +} + +IdC2$IdExtrap=IdExtrap +IdC2$TypeE=TypeE + + +IdC2=IdC2[order(IdC2$IdProb,decreasing=T),] +IdC2=IdC2[order(IdC2$ConfV,decreasing=T),] +IdC2=IdC2[order(IdC2$`nom du fichier`),] +#discard duplicated species within the same files (= false positives corrected by 2nd layer) +IdC2=unique(IdC2,by=c("nom du fichier","IdExtrap")) + +write.table(IdC2,"output.tabular",row.names=F,sep="\t") +#write.table(IdC2,paste0(substr(args[1],1,nchar(args[1])-15),"-IdC2.csv"),row.names=F,sep="\t")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IdValiden.xml Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,71 @@ +<tool id="IdValid" name="Tadarida identifications integration" version="0.1"> + <description>Integrate identifications from animal detection on acoustic recordings</description> + <requirements> + <requirement type="package" version="1.10.4">r-data.table</requirement> + </requirements> + <command detect_errors="exit_code"><![CDATA[ + Rscript + '$__tool_directory__/IdValid.R' '$inputfile' '$__tool_directory__/Referentiel_seuils_C2.csv' '$output' +]]> + </command> + <inputs> + <param name="inputfile" type="data" format="tabular" label="IdCorrect 2nd layer output"/> + </inputs> + <outputs> + <data name="output" format="tabular" from_work_dir="output.tabular" label="${tool.name} on ${on_string}"/> + </outputs> + + <tests> + <test> + <param name="inputfile" value="IdCor2Layer_Test1_out.tabular"/> + <output name="output" file="BilanEnrichiPF_Test1.tabular"/> + </test> + </tests> + + + <help><![CDATA[ + +.. class:: infomark + +===================================== +Tadarida identifications integration +===================================== + +**What it does** + +This tool allows to integrate identifications made by observers and validators and will provide an input for synthesis of participations. + + +**Arguments** + +- The input is a tabular file, output from the tool IdCorrect_2ndLayer. +- The output is a single tabular file with validated Ids + + ]]></help> + <citations> + <citation type="bibtex"> + @article{kerbiriou2015vigie, + title={Vigie-Chiro: 9 ans de suivi des tendances des esp{\`e}ces communes}, + author={Kerbiriou, C and Julien, JF and Bas, Y and Marmet, J and Le Viol, I and Lorrilliere, R and Azam, C and Gasc, A and Lois, G}, + journal={Symbioses, nouvelle s{\'e}rie}, + number={34}, + year={2015} + } + </citation> + <citation type="bibtex"> + @inproceedings{bas2013automatic, + title={Automatic echolocation calls identification in Europe vs. Neotropics: more species does not mean more difficult}, + author={Bas, Yves and Escallon, Antoine and Ferre, Matthieu and Haquart, Alexandre and Rufray, Vincent and Disca, Thierry and Julien, Jean-Fran{\c{c}}ois} + } + </citation> + <citation type="bibtex"> + @inproceedings{kerbiriou2010long, + title={Long term trends monitoring of bats, from biodiversity indicator production to species specialization assessment}, + author={Kerbiriou, C and Bas, Y and Dufr{\^e}ne, L and Robert, A and Julien, JF}, + booktitle={24th Annual Meeting of the Society for Conservation Biology, Edmonton, Canada}, + year={2010} + } + </citation> + <citation type="doi">10.5334/jors.154</citation> + </citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Referentiel_seuils_C2.csv Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,77 @@ +Espece;Int;Pente;Seuil50;Seuil90;FN50;FN90;FP50;FP90;Int;Pente;Seuil50;Seuil90;FN50;FN90;FP50;FP90;Perftot;PerfP2;ratio;;PerfPFtot;Espece;FN50;FN90;FP50;FP90;Int;Pente;Seuil50;Seuil90 +chirp;-9.796506402;46.92990813;0.209;0.256;0.08;0.12;0.041666667;0;-9.56313307;44.09513566;0.217;0.267;0.08;0.08;0;0;0.060416667;0.04;0.662068966;0.662068966;0.060416667;chirp;0.08;0.12;0.041666667;0;-9.621801388;46.06782011;0.209;0.257 +Rhifer;-5.993856471;15.08754459;0.398;0.543;0.298076923;0.298076923;0.058064516;0.058064516;-5.889843127;16.57369156;0.356;0.488;0.281553398;0.296116505;0.051282051;0.052287582;0.17807072;0.170309884;0.956417115;0.99245238;0.171605094;Rhifer;0.291262136;0.291262136;0.051948052;0.051948052;-5.851562087;15.04050575;0.39;0.536 +Rhihip;-5.969614204;11.40700358;0.524;0.716;0.225;0.35;0.099585062;0.056994819;-5.819466659;11.41414973;0.51;0.703;0.221428571;0.321428571;0.084033613;0.054726368;0.18289497;0.170404281;0.931705672;0.933067009;0.182628128;Rhihip;0.225;0.353571429;0.099585062;0.052356021;-5.790678559;11.13511299;0.521;0.718 +Barbar;-5.673386605;11.75110344;0.483;0.67;0.291366906;0.356115108;0.08372093;0.057894737;-5.564489618;11.74868047;0.474;0.661;0.321285141;0.389558233;0.10106383;0.067484663;0.19727442;0.219847966;1.114427132;1.033526108;0.212716413;Barbar;0.309236948;0.385542169;0.094736842;0.061349693;-5.561291853;11.24861482;0.495;0.69 +Rusnit;-5.761885307;27.00734744;0.214;0.295;0.369491525;0.379661017;0.046153846;0.021390374;-5.999840427;37.36156155;0.161;0.22;0.397959184;0.413265306;0.070866142;0.025423729;0.204174191;0.22687859;1.111201123;1.001041207;0.226642608;Rusnit;0.408163265;0.408163265;0.056910569;0.033333333;-5.880405916;32.26404124;0.183;0.251 +Myonat;-5.634559403;11.86614368;0.475;0.661;0.338645418;0.474103586;0.117021277;0.050359712;-5.528792174;11.69073573;0.473;0.661;0.331950207;0.443983402;0.095505618;0.042857143;0.245032498;0.228574093;0.932831744;0.962409212;0.237501979;Myonat;0.32780083;0.452282158;0.119565217;0.050359712;-5.527766673;11.52009507;0.48;0.671 +Nyclei;-4.935905731;10.51420089;0.47;0.679;0.382882883;0.45045045;0.121794872;0.057915058;-4.867531773;10.39089138;0.469;0.68;0.36097561;0.443902439;0.105802048;0.053941909;0.253260816;0.241155501;0.952202182;1.011251568;0.238472314;Nyclei;0.36097561;0.429268293;0.114864865;0.048780488;-4.875184583;10.49761466;0.465;0.674 +Nycnoc;-5.915598202;13.74409497;0.431;0.591;0.398963731;0.492227979;0.165467626;0.066666667;-6.139379694;17.74192449;0.347;0.47;0.37012987;0.396103896;0.118181818;0.051020408;0.280831501;0.233858998;0.832737772;0.959975533;0.243609332;Nycnoc;0.344155844;0.435064935;0.151260504;0.043956044;-6.179570269;14.61424023;0.423;0.574 +Lamsp.;-7.244082473;21.93899668;0.331;0.431;0.351851852;0.518518519;0.125;0.103448276;-6.954350212;18.69608095;0.372;0.49;0.377358491;0.528301887;0.153846154;0.137931034;0.274704662;0.299359391;1.089749951;1.159077941;0.258273737;Lamsp.;0.339622642;0.471698113;0.125;0.096774194;-7.11431275;21.74802941;0.328;0.429 +Leppun;-4.219470191;9.460363122;0.447;0.679;0.35551142;0.550148957;0.120596206;0.111764706;-4.315732499;9.578325998;0.451;0.68;0.295641932;0.551236749;0.123167155;0.120092379;0.284505322;0.272534554;0.957924272;1.017906068;0.267740376;Leppun;0.293286219;0.542991755;0.126637555;0.108045977;-4.368656949;9.338141008;0.468;0.704 +Pippip;-3.700038171;8.471925149;0.437;0.697;0.318051576;0.58739255;0.14017341;0.119804401;-3.791687392;8.188349216;0.464;0.732;0.288392213;0.583273252;0.143972246;0.120243531;0.291355484;0.283970311;0.974652361;1.004162485;0.282793188;Pippip;0.281903389;0.584715213;0.147989735;0.116564417;-3.82796986;8.341092474;0.459;0.723 +Pleaus;-5.939604546;11.86576121;0.501;0.686;0.351694915;0.555084746;0.172972973;0.110169492;-5.900088719;11.82314875;0.5;0.685;0.308035714;0.571428571;0.171122995;0.127272727;0.297480531;0.294465002;0.989863103;1.016773712;0.289607214;Pleaus;0.330357143;0.540178571;0.175824176;0.112068966;-5.885720467;11.67405029;0.505;0.693 +Cympud;-7.467398698;62.2463892;0.12;0.156;0.461538462;0.512820513;0.16;0.05;-7.06821093;46.59940666;0.152;0.199;0.512820513;0.538461538;0.136363636;0.052631579;0.296089744;0.310069317;1.047213973;1.047213973;0.296089744;Cympud;0.461538462;0.512820513;0.16;0.05;-7.293299422;60.78611347;0.12;0.157 +Tetvir;-3.839332428;10.95821523;0.351;0.551;0.448083624;0.601393728;0.136314068;0.110419907;-3.939088148;11.46248808;0.344;0.536;0.421343146;0.578656854;0.126388889;0.101960784;0.324052832;0.307087418;0.94764615;0.985117137;0.311726806;Tetvir;0.421343146;0.585096596;0.130013831;0.110453649;-3.952681976;11.40274117;0.347;0.54 +Pipkuh;-3.935647122;10.11542846;0.39;0.607;0.447322971;0.57253886;0.131614654;0.1;-3.873786517;9.941049967;0.39;0.611;0.450148075;0.570582428;0.128325509;0.101239669;0.312869121;0.31257392;0.999056472;0.999179586;0.312830571;Pipkuh;0.446199408;0.573543929;0.131578947;0.1;-3.866704605;9.764599849;0.396;0.622 +Minsch;-5.502466359;10.69059862;0.515;0.721;0.439393939;0.579545455;0.2;0.082644628;-5.35750292;9.923424881;0.54;0.762;0.421455939;0.586206897;0.196808511;0.092436975;0.325396006;0.32422708;0.996407684;1.020864571;0.317600482;Minsch;0.429118774;0.559386973;0.194594595;0.087301587;-5.350126413;10.65721406;0.503;0.709 +Pippyg;-4.993728468;8.884931398;0.563;0.81;0.37398374;0.601626016;0.176470588;0.147826087;-4.908838834;8.6498083;0.568;0.822;0.347921225;0.636761488;0.174515235;0.165829146;0.324976608;0.331256774;1.019324978;1.031798922;0.3210478;Pippyg;0.33916849;0.623632385;0.177111717;0.144278607;-4.993509006;8.658151865;0.577;0.831 +Yerray;-5.768708319;15.7866469;0.366;0.505;0.524096386;0.626506024;0.177083333;0.114285714;-5.664644872;17.85467018;0.318;0.441;0.49382716;0.574074074;0.136842105;0.103896104;0.360492864;0.327159861;0.907534915;1.008188606;0.324502637;Yerray;0.487654321;0.580246914;0.161616162;0.068493151;-5.703609328;17.53037583;0.326;0.451 +Hypsav;-5.183551814;10.23704603;0.507;0.721;0.478405316;0.641196013;0.190721649;0.084745763;-5.036273386;10.25479797;0.492;0.706;0.462068966;0.624137931;0.191709845;0.084033613;0.348767185;0.340487589;0.976260391;1.003410792;0.339330204;Hypsav;0.45862069;0.634482759;0.178010471;0.086206897;-5.03785292;9.966892785;0.506;0.726 +Phanan;-4.907304692;12.9540152;0.379;0.549;0.551246537;0.609418283;0.160621762;0.113207547;-4.90266083;13.66282189;0.359;0.52;0.538461538;0.583333333;0.157894737;0.103448276;0.358623532;0.345784471;0.964199056;1.010557338;0.342172045;Phanan;0.528846154;0.573717949;0.164772727;0.101351351;-4.937673415;13.47858367;0.367;0.53 +Eptser;-4.637318472;9.757768523;0.476;0.701;0.409618574;0.645107794;0.208888889;0.097046414;-4.668976424;9.636573944;0.485;0.713;0.389344262;0.696721311;0.219895288;0.09202454;0.340165418;0.34949635;1.027430574;1.014447619;0.344518873;Eptser;0.403688525;0.668032787;0.211382114;0.094972067;-4.661646285;9.610032858;0.486;0.714 +piaf;-5.338582211;11.89500325;0.449;0.634;0.548523207;0.632911392;0.207407407;0.103092784;-5.221324425;12.27010585;0.426;0.605;0.527659574;0.617021277;0.183823529;0.134615385;0.372983698;0.365779941;0.980686136;1.010447805;0.361997858;piaf;0.531914894;0.604255319;0.172932331;0.138888889;-5.203402394;12.81563043;0.407;0.578 +Myobec;-6.727529403;52.83445897;0.128;0.169;0.731707317;0.731707317;0;0;-6.567545871;40.3518877;0.163;0.218;0.731707317;0.780487805;0.153846154;0;0.365853659;0.416510319;1.138461538;1.138461538;0.365853659;Myobec;0.731707317;0.731707317;0;0;-6.549456703;50.64935199;0.13;0.173 +Roeroe;-6.395548233;20.24459737;0.316;0.425;0.509433962;0.688679245;0.235294118;0.23255814;-6.949466798;30.28709394;0.23;0.302;0.583333333;0.766666667;0.242424242;0.125;0.416491366;0.429356061;1.030888262;1.105314481;0.38844697;Roeroe;0.566666667;0.65;0.212121212;0.125;-6.805784278;29.20411398;0.234;0.309 +Testes;-5.044777274;14.11676742;0.358;0.514;0.59223301;0.702265372;0.202531646;0.171171171;-5.180729882;16.00004712;0.324;0.462;0.545081967;0.676229508;0.177777778;0.168421053;0.4170503;0.391877576;0.939641038;0.99471782;0.393958536;Testes;0.56557377;0.655737705;0.203007519;0.151515152;-5.141041553;15.20004489;0.339;0.483 +Micagr;-7.30742752;38.18366444;0.192;0.249;0.567567568;0.648648649;0.2;0.133333333;-6.899576188;28.07090552;0.246;0.325;0.648648649;0.648648649;0.235294118;0.133333333;0.387387387;0.416481187;1.075102599;1.049305715;0.396911197;Micagr;0.567567568;0.648648649;0.238095238;0.133333333;-7.13431494;37.95591797;0.188;0.246 +Myoema;-5.341274303;12.47278151;0.429;0.605;0.526923077;0.719230769;0.245398773;0.098765432;-5.174513053;12.13193446;0.427;0.608;0.523076923;0.734615385;0.253012048;0.148148148;0.397579513;0.414713126;1.043094809;1.043094809;0.397579513;Myoema;0.526923077;0.719230769;0.245398773;0.098765432;-5.168960507;12.10225971;0.428;0.609 +Myodau;-4.917720513;15.43303043;0.319;0.462;0.595061728;0.659259259;0.226415094;0.103896104;-4.875952289;16.95513701;0.288;0.418;0.613941019;0.672922252;0.217391304;0.14084507;0.396158046;0.411274911;1.038158672;1.032239382;0.398429782;Myodau;0.605898123;0.664879357;0.222222222;0.100719424;-4.801623032;15.06157712;0.319;0.465 +Tadten;-5.544484677;17.16108333;0.324;0.452;0.605263158;0.642105263;0.257425743;0.15;-5.350025507;17.95305461;0.299;0.421;0.597883598;0.645502646;0.224489796;0.12987013;0.413698541;0.399436542;0.965525625;0.977931236;0.408450541;Tadten;0.597883598;0.634920635;0.232323232;0.168674699;-5.421962976;18.26248643;0.297;0.418 +Plaint;-5.547518332;17.38455457;0.32;0.446;0.570048309;0.739130435;0.293650794;0.068965517;-5.500372689;17.01768723;0.324;0.453;0.558375635;0.670050761;0.25;0.057971014;0.417948764;0.384099353;0.91901062;0.930534522;0.412772813;Plaint;0.553299492;0.736040609;0.290322581;0.071428571;-5.457312497;17.22904135;0.317;0.445 +Pipnat;-5.131325747;8.792229272;0.584;0.834;0.467787115;0.882352941;0.309090909;0.066666667;-5.166919202;8.992278526;0.575;0.819;0.425867508;0.858044164;0.274900398;0.134615385;0.431474408;0.423356864;0.981186499;1.010412073;0.418994265;Pipnat;0.425867508;0.883280757;0.291828794;0.075;-5.175554764;8.78127701;0.59;0.84 +noise;-3.256587804;10.62476011;0.307;0.514;0.493617021;0.839458414;0.262119504;0.246823956;-3.664800846;13.29531804;0.276;0.441;0.515489467;0.78314746;0.247353224;0.152542373;0.460504724;0.424633131;0.922103746;0.980282532;0.43317423;noise;0.519826518;0.799256506;0.264007597;0.149606299;-3.632179643;14.71461173;0.247;0.397 +Plasab;-6.83258536;44.73730748;0.153;0.202;0.769230769;0.974358974;0.357142857;0.8;-7.062938471;60.87514223;0.117;0.153;0.939393939;1;0.666666667;1;0.72518315;0.901515152;1.243155127;2.07860262;0.433712121;Plasab;0.727272727;0.757575758;0.25;0;-7.049037058;63.43853864;0.112;0.146 +Myomys;-5.507763046;17.82145051;0.31;0.433;0.606498195;0.736462094;0.273333333;0.197802198;-5.432337684;17.72688044;0.307;0.431;0.56133829;0.732342007;0.248407643;0.191011236;0.453523955;0.433274794;0.955351508;0.966865126;0.448123303;Myomys;0.594795539;0.73605948;0.268456376;0.193181818;-5.393767643;17.38505824;0.311;0.437 +Confus;-6.169639483;18.42093366;0.335;0.455;0.676767677;0.848484848;0.36;0.347826087;-6.952751002;47.33694267;0.147;0.194;0.630434783;0.891304348;0.291666667;0.375;0.558269653;0.547101449;0.979994965;1.172490294;0.466614907;Confus;0.630434783;0.760869565;0.260869565;0.214285714;-6.876458914;31.60435878;0.218;0.288 +Ptepon;-7.332424548;64.49138524;0.114;0.148;0.609756098;0.829268293;0.333333333;0.125;-7.082820808;47.05481086;0.151;0.198;0.609756098;0.756097561;0.304347826;0.090909091;0.474339431;0.440277644;0.928191112;0.928191112;0.474339431;Ptepon;0.609756098;0.829268293;0.333333333;0.125;-7.172669627;62.90935519;0.115;0.149 +Phogri;-4.456753937;12.95786701;0.344;0.514;0.701818182;0.887272727;0.305084746;0.261904762;-4.585179837;13.18820322;0.348;0.515;0.620283019;0.849056604;0.268181818;0.272727273;0.539020104;0.502562178;0.932362586;1.004408708;0.500356254;Phogri;0.627358491;0.870283019;0.300884956;0.202898551;-4.630113081;12.87022437;0.36;0.531 +Mussp;-6.750199027;19.24574917;0.351;0.465;0.660714286;0.839285714;0.344827586;0.181818182;-6.582703206;18.68706535;0.353;0.47;0.654545455;0.854545455;0.296296296;0.2;0.506661442;0.501346801;0.989510469;0.993969109;0.504388715;Mussp;0.654545455;0.836363636;0.344827586;0.181818182;-6.596767575;18.89450545;0.35;0.466 +Plaalb;-5.649746181;22.57201572;0.251;0.348;0.652920962;0.828178694;0.391566265;0.253731343;-5.514207527;22.73820373;0.243;0.34;0.692;0.828;0.3984375;0.25862069;0.531599316;0.544264547;1.02382477;1.066594672;0.510282455;Plaalb;0.628;0.812;0.371621622;0.229508197;-5.685222309;23.69551957;0.24;0.333 +Tyllil;-6.829023273;60.99570472;0.112;0.148;0.85;0.875;0.333333333;0;-6.706935787;61.38977365;0.11;0.146;0.85;0.85;0.142857143;0;0.514583333;0.460714286;0.895315211;0.895315211;0.514583333;Tyllil;0.85;0.875;0.333333333;0;-6.659825718;58.57251427;0.114;0.152 +Myoalc;-6.759437431;27.82530968;0.243;0.322;0.728571429;0.771428571;0.269230769;0.304347826;-6.718265713;26.44853222;0.255;0.338;0.720588235;0.75;0.387096774;0.19047619;0.518394649;0.5120403;0.987742256;0.994797389;0.514718178;Myoalc;0.720588235;0.764705882;0.269230769;0.304347826;-6.667536504;27.34986783;0.244;0.325 +Epheph;-5.60465571;21.54293117;0.261;0.363;0.720930233;0.813953488;0.376623377;0.238095238;-5.587189463;21.99282213;0.255;0.354;0.691275168;0.812080537;0.333333333;0.151515152;0.537400584;0.497051047;0.924917208;0.940313072;0.528601656;Epheph;0.704697987;0.798657718;0.38028169;0.230769231;-5.597321386;20.80170383;0.27;0.375 +Rhieur;-6.750800216;25.67017725;0.263;0.349;0.693548387;0.903225806;0.321428571;0.333333333;-6.609080848;23.93395239;0.277;0.368;0.580645161;0.806451613;0.277777778;0.2;0.562884025;0.466218638;0.828267667;0.837617387;0.556600956;Rhieur;0.693548387;0.903225806;0.296296296;0.333333333;-6.580831133;25.27691842;0.261;0.348 +Plaaff;-6.296266962;29.87082452;0.211;0.285;0.806818182;0.897727273;0.484848485;0.307692308;-6.531023615;30.95852806;0.211;0.282;0.796875;0.828125;0.434782609;0.153846154;0.624271562;0.553407191;0.886484704;0.989726233;0.559151786;Plaaff;0.734375;0.859375;0.392857143;0.25;-6.641111541;31.74061749;0.21;0.279 +MyoGT;-6.013132083;13.20420935;0.456;0.622;0.684684685;0.918918919;0.416666667;0.307692308;-5.912227382;13.0765132;0.453;0.621;0.682692308;0.884615385;0.365384615;0.294117647;0.581990644;0.556702489;0.956548862;0.980722839;0.567645074;MyoGT;0.663461538;0.913461538;0.385964912;0.307692308;-5.9330197;13.09016436;0.454;0.622 +Isopyr;-6.361463821;30.07422199;0.212;0.285;0.711711712;0.846846847;0.466666667;0.37037037;-6.19941515;31.5831722;0.197;0.266;0.636363636;0.848484848;0.379310345;0.318181818;0.598898899;0.545585162;0.910980406;0.918905907;0.593733436;Isopyr;0.676767677;0.858585859;0.448275862;0.391304348;-6.310680986;30.80716235;0.205;0.277 +Cyrscu;-6.763537187;55.63798439;0.122;0.162;0.835820896;0.910447761;0.45;0.142857143;-6.635833896;51.68529985;0.129;0.171;0.776119403;0.895522388;0.347826087;0.222222222;0.58478145;0.560422525;0.95834525;0.942783674;0.594433846;Cyrscu;0.850746269;0.910447761;0.473684211;0.142857143;-6.596618154;54.05258862;0.123;0.163 +Urorug;-6.177135085;33.51952723;0.185;0.25;0.73553719;0.842975207;0.396226415;0.366666667;-5.954931596;31.31543234;0.191;0.261;0.765217391;0.860869565;0.413043478;0.384615385;0.58535137;0.605936455;1.035167057;1.009464897;0.600255102;Urorug;0.747826087;0.852173913;0.408163265;0.392857143;-6.093067199;33.74516056;0.181;0.246 +Plemac;-6.927928622;34.32308744;0.202;0.266;0.828571429;0.914285714;0.454545455;0.25;-6.757381994;34.8871726;0.194;0.257;0.8;0.942857143;0.222222222;0.5;0.611850649;0.616269841;1.007222664;1.007222664;0.611850649;Plemac;0.828571429;0.914285714;0.454545455;0.25;-6.730987907;33.76365591;0.2;0.265 +Aposp;-6.427214849;17.75173966;0.363;0.486;0.731343284;0.910447761;0.419354839;0.4;-6.347590193;17.42238048;0.365;0.491;0.712121212;0.924242424;0.457142857;0.375;0.615286471;0.617126623;1.002990725;0.984131778;0.627077224;Aposp;0.712121212;0.909090909;0.387096774;0.5;-6.254850911;17.50488803;0.358;0.483 +Eupsp;-6.449263369;44.83019059;0.144;0.193;0.975609756;0.975609756;0;0;-6.390159464;46.90293532;0.137;0.184;0.975609756;1;0.666666667;NaN;0.487804878;0.880758808;1.805555556;1.33744856;0.658536585;Eupsp;0.975609756;1;0;NaN;-6.269735303;42.02284175;0.15;0.202 +Myocap;-5.595441093;26.84231882;0.209;0.291;0.860927152;0.947019868;0.603773585;0.333333333;-5.509789821;26.97579739;0.205;0.286;0.847682119;0.940397351;0.566037736;0.25;0.686263485;0.651029302;0.948657937;0.970075533;0.671111969;Myocap;0.860927152;0.947019868;0.603773585;0.272727273;-5.426781253;25.87586342;0.21;0.295 +Nyclas;-6.991660694;45.47414128;0.154;0.203;0.821428571;1;0.375;1;-7.19386406;63.34689222;0.114;0.149;0.769230769;0.961538462;0.4;0.666666667;0.799107143;0.699358974;0.875175476;0.904322084;0.773351648;Nyclas;0.807692308;1;0.285714286;1;-6.936656805;47.35606046;0.147;0.193 +Pleaur;-5.970916717;18.61510204;0.321;0.439;0.79245283;0.943396226;0.435897436;0.4;-6.005379095;19.61763268;0.307;0.419;0.797752809;0.988764045;0.454545455;0.666666667;0.642936623;0.726932244;1.130643702;0.934595917;0.777803787;Pleaur;0.853932584;0.988764045;0.518518519;0.75;-5.940304196;19.21162101;0.31;0.424 +Decalb;-6.26328128;41.46237641;0.152;0.205;0.918918919;0.972972973;0.666666667;0.666666667;-6.146747664;47.78079953;0.129;0.175;0.904109589;1;0.5;1;0.806306306;0.851027397;1.055464146;1.078247035;0.789269406;Decalb;0.917808219;0.97260274;0.666666667;0.6;-6.108989447;40.27878201;0.152;0.207 +Eptnil;-7.09881739;39.42396532;0.181;0.236;0.96;1;0.666666667;NaN;-6.900807963;40.69349629;0.17;0.224;1;1;1;NaN;0.875555556;1;1.14213198;1.14213198;0.875555556;Eptnil;0.96;1;0.666666667;NaN;-6.923361423;38.13078002;0.182;0.24 +Inssp7;-7.15594089;89.73266508;0.08;0.105;0.958333333;1;0.75;1;-6.810368524;64.66269367;0.106;0.14;1;1;1;1;0.927083333;1;1.078651685;1.107692308;0.902777778;Inssp7;0.958333333;1;0.75;NaN;-6.988297976;86.69935725;0.081;0.106 +Phofem;-6.284700415;37.71118876;0.167;0.225;0.987804878;1;0.875;1;-6.057110807;32.87618686;0.185;0.252;1;1;1;1;0.96570122;1;1.035516969;1.063400576;0.940379404;Phofem;0.987804878;1;0.833333333;NaN;-6.117618555;36.21632879;0.169;0.23 +amph;-6.613007553;29.60649332;0.224;0.298;1;1;NaN;NaN;-6.453524869;25.19228889;0.257;0.344;1;1;NaN;NaN;1;1;1;1;1;amph;1;1;NaN;NaN;-6.428283677;29.23542026;0.22;0.296 +Antius;-7.209034432;44.45763374;0.163;0.212;1;1;NaN;NaN;-7.093154616;62.64559091;0.114;0.149;1;1;NaN;NaN;1;1;1;1;1;Antius;1;1;NaN;NaN;-7.030447669;42.62283057;0.165;0.217 +Antped;-7.383650573;54.11490894;0.137;0.178;1;1;NaN;NaN;-7.366972966;95.90806245;0.077;0.1;1;1;NaN;NaN;1;1;1;1;1;Antped;1;1;NaN;NaN;-7.338949392;77.28965393;0.095;0.124 +Barfis;-7.280210474;79.98729907;0.092;0.119;1;1;NaN;NaN;-7.119002646;79.79382786;0.09;0.117;1;1;NaN;NaN;1;1;1;1;1;Barfis;1;1;NaN;NaN;-7.164452894;77.53293265;0.093;0.121 +Barser;-6.900683371;57.16826361;0.121;0.16;1;1;NaN;NaN;-6.747200288;67.29234702;0.101;0.133;1;1;NaN;NaN;1;1;1;1;1;Barser;1;1;NaN;NaN;-6.720980361;53.61251354;0.126;0.167 +Bicbic;-7.003205608;-42.11519506;Inf;Inf;1;1;NaN;NaN;-6.840974246;-3251.15631;Inf;Inf;1;1;NaN;NaN;1;1;1;1;1;Bicbic;1;1;NaN;NaN;-6.88877136;-34.19678581;Inf;Inf +Concon;-7.03108139;9.716391437;0.724;0.95;1;1;NaN;NaN;-6.896771627;28.02818149;0.247;0.325;1;1;NaN;NaN;1;1;1;1;1;Concon;1;1;NaN;NaN;-6.837427338;0.725449539;Inf;Inf +Corcho;-6.078521756;46.46199314;0.131;0.179;1;1;NaN;NaN;-5.943690586;58.34822938;0.102;0.14;1;1;NaN;NaN;1;1;1;1;1;Corcho;1;1;NaN;NaN;-5.896190668;43.50768289;0.136;0.187 +gril;-7.555488435;57.43438716;0.132;0.17;1;1;NaN;NaN;-7.314404425;53.32962265;0.138;0.179;1;1;NaN;NaN;1;1;1;1;1;gril;1;1;NaN;NaN;-7.374075354;55.22552599;0.134;0.174 +Lyrple;-7.395620042;44.41474239;0.167;0.216;1;1;1;1;-7.224794267;31.41678532;0.23;0.3;1;1;1;1;1;1;1;1;1;Lyrple;1;1;1;1;-7.218299801;43.07791371;0.168;0.219 +Metsau;-7.263224642;32.44449421;0.224;0.292;1;1;NaN;NaN;-7.167714665;52.63620533;0.137;0.178;1;1;NaN;NaN;1;1;1;1;1;Metsau;1;1;NaN;NaN;-7.077134949;26.37920707;0.269;0.352 +Myobra;-7.352433699;50.75933419;0.145;0.189;1;1;NaN;NaN;-7.175938172;49.8921739;0.144;0.188;1;1;NaN;NaN;1;1;1;1;1;Myobra;1;1;NaN;NaN;-7.173365265;48.37787777;0.149;0.194 +Phafal;-7.544411986;62.8376307;0.121;0.156;0.947368421;1;0.8;1;-7.721059773;59.19348597;0.131;0.168;1;1;1;1;0.936842105;1;1.06741573;1;1;Phafal;1;1;1;1;-7.751398334;62.73816799;0.124;0.159 +Ptebon;-7.104430767;-90.42057688;Inf;Inf;1;1;NaN;NaN;-6.864251121;-3122.119677;Inf;Inf;1;1;NaN;NaN;1;1;1;1;1;Ptebon;1;1;NaN;NaN;-6.909678589;-107.7304759;Inf;Inf +Pteger;-6.806622284;87.05551581;0.079;0.104;1;1;1;1;-6.626389738;84.39747813;0.079;0.105;1;1;1;1;1;1;1;1;1;Pteger;1;1;1;1;-6.671816986;87.04908905;0.077;0.102 +Sepsep;-6.572236956;44.50635929;0.148;0.198;1;1;NaN;NaN;-6.457679388;46.23209872;0.14;0.188;0.970588235;1;0;NaN;1;0.656862745;0.656862745;0.656862745;1;Sepsep;1;1;NaN;NaN;-6.413986714;41.92249556;0.153;0.206 +Tetcan;-6.224979865;31.00464875;0.201;0.272;1;1;NaN;NaN;-6.073393155;34.28510365;0.178;0.242;1;1;NaN;NaN;1;1;1;1;1;Tetcan;1;1;NaN;NaN;-6.040290768;29.26243379;0.207;0.282 +Ratnor;-7.634127214;58.5655848;0.131;0.168;1;1;1;NaN;;;;;;;;;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;;;;;;;;;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SpeciesList.csv Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,214 @@ +Esp;Nesp;France;Turquie;Espagne;Norfolk;Scientific name;Group;NomFR;GroupFR +Aegcau;piaf;x;x;x;x;Aegithalos caudatus;bird;Mésange à longue queue;Autre +Alcatt;piaf;x;x;x;x;Alcedo atthis;bird;Martin-pêcheur d'Europe;Autre +amph;amph;x;x;x;x;Amphibia sp.;frog;Amphibien sp.;Autre +Antius;Antius;x;;x;;Antaxius spinibrachius;bush-cricket;Antaxie voyageuse;Sauterelle +Antped;Antped;x;;;;Antaxius pedestris;bush-cricket;Antaxie marbree;Sauterelle +Antpet;piaf;x;x;;;Anthus petrosus;bird;Pipit maritime;Autre +Antsor;Antsor;x;;;;Antaxius sorrezensis;bush-cricket;Antaxie cevenole;Sauterelle +Apoagr;Aposp;x;;;;Apodemus agrarius;other mammal;Mulot rayé;Autre +Apofla;Aposp;x;x;x;;Apodemus flavicollis;other mammal;Mulot à collier;Autre +Aposp;Aposp;x;x;x;x;Apodemus sp.;other mammal;Mulot sp.;Autre +Aposyl;Aposp;x;x;x;x;Apodemus sylvaticus;other mammal;Mulot sylvestre;Autre +Apuapu;piaf;x;x;x;x;Apus apus;bird;Martinet noir;Autre +Barbar;Barbar;x;x;x;x;Barbastella barbastellus;bat;Barbastelle d'Europe;Chauve-souris +Barfis;Barfis;x;;;;Barbitistes fischeri;bush-cricket;Barbitiste languedocien;Sauterelle +Barsan;Barsan;x;;x;;Barbitistes 'sanzii';bush-cricket;Barbitiste cryptique;Sauterelle +Barser;Barser;x;;x;;Barbitistes serricauda;bush-cricket;Barbitiste des bois;Sauterelle +Bicbic;Bicbic;x;;x;;Bicolorana bicolor;bush-cricket;Decticelle bicolore;Sauterelle +buzz;noise;x;x;x;x;insect wingbeats;noise;bourdonnement;Autre +car;noise;x;x;x;x;vehicle;noise;véhicule;Autre +Carcar;piaf;x;x;x;x;Carduelis carduelis;bird;Chardonneret élégant;Autre +Cerbra;piaf;x;x;x;x;Certhia brachydactyla;bird;Grimpereau des jardins;Autre +Cetcet;piaf;x;x;x;x;Cettia cettia;bird;Bouscarle de Cetti;Autre +chirp;chirp;x;;;;chirp;noise;chirp;Autre +Chlchl;piaf;x;x;x;x;Chloris chloris;bird;Verdier d'Europe;Autre +Chovag;criq;x;x;x;x;Chorthippus vagans;grasshopper;Criquet des pins;Autre +Cicatr;Cicatr;x;x;x;;Cicadatra atra;cicada;Cigale noire;Autre +Cicorn;Cicorn;x;x;x;;Cicada orni;cicada;Cigale grise;Autre +Cisjun;piaf;x;x;x;x;Cisticola juncidis;bird;Cisticole des joncs;Autre +Concon;Concon;x;x;x;;Conocephalus conocephalus;bush-cricket;Conocéphale africain;Sauterelle +Condor;Condor;x;x;x;x;Conocephalus dorsalis;bush-cricket;Conocephale des marais;Sauterelle +Confus;Confus;x;;x;x;Conocephalus fuscus;bush-cricket;Conocephale bigarre;Sauterelle +Corcho;Epheph;x;;;;Corsteropleurus chopardi;bush-cricket;Ephippigère corse;Sauterelle +Cornix;piaf;x;x;x;x;Corvus cornix;bird;Corneille mantelée;Autre +criq;criq;x;x;x;x;Caelifera sp.;grasshopper;Criquet sp.;Autre +Crorus;Mussp;x;x;x;x;Crocidura russula;other mammal;Crocidure musette;Autre +Cyacae;piaf;x;x;x;x;Cyanistes caerulea;bird;Mésange bleue;Autre +Cympud;Cympud;x;;x;;Cymbalophora pudica;moth;Ecaille pudique;Autre +Cyrscu;Cyrscu;x;;x;;Cyrtaspis scutatus;bush-cricket;Meconeme a bouclier;Sauterelle +Decalb;Decalb;x;x;x;;Decticus albifrons;bush-cricket;Dectique a front blanc;Sauterelle +Denmaj;piaf;x;x;x;x;Dendrocopos major;bird;Pic épeiche;Autre +elec;noise;x;x;x;x;electronical noise;noise;parasite;Autre +Embcae;piaf;x;x;x;x;Emberiza caesia;bird;Bruant cendrillard;Autre +Embcal;piaf;x;x;x;x;Emberiza calandra;bird;Bruant proyer;Autre +Embcir;piaf;x;x;x;x;Emberiza cirlus;bird;Bruant zizi;Autre +Embcit;piaf;x;x;x;x;Emberiza citrinella;bird;Bruant jaune;Autre +Epheph;Epheph;x;;x;;Ephippiger ephippiger;bush-cricket;Ephippigere des vignes;Sauterelle +Eptana;Eptnil;x;x;;;Eptesicus anatolicus;bat;Serotine d'Anatolie;Chauve-souris +Eptisa;Eptisa;;;x;;Eptesicus isabellinus;bat;Serotine isabelle;Chauve-souris +Eptnil;Eptnil;x;;x;;Eptesicus nilssonii;bat;Sérotine boréale;Chauve-souris +Eptser;Eptser;x;x;x;x;Eptesicus serotinus;bat;Serotine commune;Chauve-souris +Erirub;piaf;x;x;x;x;Erithacus rubecula;bird;Rougegorge familier;Autre +Euccho;criq;x;x;x;x;Euchorthippus chopardii;grasshopper;Criquet des bragalous;Autre +Eumbor;gril;x;x;x;;Eumodycogryllus bordigalensis;ground-cricket;Grillon bordelais;Autre +Eupcha;Eupsp;x;x;;;Eupholidoptera chabrieri;bush-cricket;Decticelle splendide;Sauterelle +Eupsp;Eupsp;x;x;;;Eupholidoptera sp.;bush-cricket;Decticelle splendide;Sauterelle +Euptyr;Eupsp;x;x;x;;Eupholidoptera tyrrhenica;bush-cricket;Decticelle corse;Sauterelle +Fricoe;piaf;x;x;x;x;Fringilla coelebs;bird;Pinson des arbres;Autre +gril;gril;x;x;x;x;Gryllidae sp.;ground-cricket;grillon sp.;Autre +Grycam;gril;x;x;x;;Gryllus campestris;ground-cricket;Grillon champêtre;Autre +Homsap;mamm;x;x;x;x;Homo sapiens;other mammal;voix;Autre +Hylmer;amph;x;;x;;Hyla meridionalis;frog;Rainette méridionale;Autre +Hypsav;Hypsav;x;x;x;;Hypsugo savii;bat;Vespere de Savi;Chauve-souris +Insp10;Insp10;x;x;x;x;Insect sp.10;insect;Insecte sp. type 10;Autre +Insp11;Insp11;x;x;x;x;Insect sp.11;insect;Insecte sp. type 11;Autre +Insp12;Insp12;x;x;x;x;Insect sp.12;insect;Insecte sp. type 12;Autre +Inssp1;Inssp1;x;;x;x;Insect sp.1;insect;Insecte sp. type 1;Autre +Inssp2;Inssp2;x;;x;x;Insect sp.2;insect;Insecte sp. type 2;Autre +Inssp5;Inssp5;x;;x;x;Insect sp.5;insect;Insecte sp. type 5;Autre +Inssp6;Inssp6;x;;x;x;Insect sp.6;insect;Insecte sp. type 6;Autre +Inssp7;Inssp7;x;;x;x;Insect sp.7;insect;Insecte sp. type 7;Autre +Inssp8;Inssp8;x;x;x;x;Insect sp. 8;insect;Insecte sp. type 8;Autre +Inssp9;Inssp9;x;x;x;x;Insect sp. 9;insect;Insecte sp. type 9;Autre +InsTu1;InsTu1;;x;;;Insect sp. from Turkey 1;insect;Insecte sp. Tu1;Autre +Isopyr;Isopyr;x;x;x;;Isophya pyrenea;bush-cricket;Barbatiste pyreneen;Sauterelle +Lamsp.;Lamsp.;x;x;x;x;Lampyris sp.;beetle;Lampyre sp.;Autre +Lepalb;Lepalb;x;x;;;Leptophyes albovittata;bush-cricket;Sauterelle rayee;Sauterelle +Lepbos;Lepbos;x;;;;Leptophyes boscii;bush-cricket;Sauterelle sarmate;Sauterelle +Leppun;Leppun;x;;x;x;Leptophyes punctatissima;bush-cricket;Sauterelle ponctuee;Sauterelle +Llusta;Llusta;;;x;;Lluciapomaresius stalii;bush-cricket;Ephippigere de Stal;Sauterelle +Lopcri;piaf;x;x;x;x;Lophophanes cristatus;bird;Mésange huppée;Autre +Lusmeg;piaf;x;x;x;x;Luscinia megarhynchos;bird;Rossignol philomèle;Autre +Lyrple;Lyrple;x;x;x;;Lyristes plebejus;cicada;Cigale commune;Autre +mamm;mamm;x;x;x;x;Mammalia sp.;other mammal;Mammifere sp.;Autre +mec;noise;x;x;x;x;mechanical noise;noise;autre bruit;Autre +Metbra;Metbra;x;;;x;Metrioptera brachyptera;bush-cricket;Decticelle des bruyeres;Sauterelle +Metsau;Metsau;x;x;x;;Metrioptera saussuriana;bush-cricket;Decticelle des alpages;Sauterelle +Micagr;Micagr;x;x;x;x;Microtus agrestis;other mammal;Campagnol agreste;Autre +Minsch;Minsch;x;x;x;;Miniopterus schreibersii;bat;Minioptere;Chauve-souris +Mmasp1;mamm;x;x;x;x;micromammals sp.1;other mammal;Micromammifère type 1;Autre +Mmasp2;mamm;x;x;x;x;micromammals sp.2;other mammal;Micromammifère type 2;Autre +Mmasp3;mamm;x;x;x;x;micromammals sp.3;other mammal;Micromammifère type 3;Autre +Mmasp4;mamm;x;x;x;x;micromammals sp.4;other mammal;Micromammifère type 4;Autre +MmaTu1;mamm;x;x;x;;micromammals sp. from Turkey 1;other mammal;Micromammifère de Turquie type 1;Autre +Motcin;piaf;x;x;x;x;Motacilla cinerea;bird;Bergeronnette des ruisseaux;Autre +Motfla;piaf;x;x;x;x;Motacilla flava;bird;Bergeronnette printanière;Autre +Mussp;Mussp;x;x;x;x;Soricidae sp.;other mammal;Musaraigne sp.;Autre +Myoalc;Myoalc;x;x;x;x;Myotis alcathoe;bat;Murin d'Alcathoe;Chauve-souris +Myobec;Myobec;x;x;x;x;Myotis bechsteinii;bat;Murin de Bechstein;Chauve-souris +Myobly;MyoGT;x;x;x;;Myotis blythii;bat;Petit Murin;Chauve-souris +Myobra;Myomys;x;x;;x;Myotis brandtii;bat;Murin de Brandt;Chauve-souris +Myocap;Myocap;x;x;x;;Myotis capaccinii;bat;Murin de Capaccini;Chauve-souris +Myodas;Myodas;x;x;;;Myotis dasycneme;bat;Murin des marais;Chauve-souris +Myodau;Myodau;x;x;x;x;Myotis daubentonii;bat;Murin de Daubenton;Chauve-souris +Myoema;Myoema;x;x;x;x;Myotis emarginatus;bat;Murin a oreilles echancrees;Chauve-souris +MyoGT;MyoGT;x;x;x;x;Myotis cf. myotis;bat;Murin de grande taille;Chauve-souris +Myomyo;MyoGT;x;x;x;;Myotis myotis;bat;Grand Murin;Chauve-souris +Myomys;Myomys;x;x;x;x;Myotis mystacinus;bat;Murin a moustaches;Chauve-souris +Myonat;Myonat;x;x;;x;Myotis nattereri;bat;Murin groupe Natterer;Chauve-souris +MyospA;Myonat;x;x;x;x;Myotis sp. A ('southern' Natterer);bat;Murin sp. A;Chauve-souris +noise;noise;x;x;x;x;noise;noise;bruit;Autre +Nyclas;Nyclas;x;x;x;;Nyctalus lasiopterus;bat;Grande Noctule;Chauve-souris +Nyclei;Nyclei;x;x;x;x;Nyctalus leisleri;bat;Noctule de Leisler;Chauve-souris +Nycnoc;Nycnoc;x;x;x;x;Nyctalus noctula;bat;Noctule commune;Chauve-souris +Odomac;Odomac;;;x;;Odontura macphersoni;bush-cricket;Sauterelle de MacPherson;Sauterelle +Omovir;criq;x;x;x;x;Omocestus viridulus;grasshopper;Criquet verdelet;Autre +Oriori;piaf;x;x;x;x;Oriolus oriolus;bird;Loriot d'Europe;Autre +Ortsp.;Ortsp.;x;x;x;x;Orthoptera sp.;insect;Orthoptère sp.;Autre +Panbia;piaf;x;x;x;x;Panurus biarmicus;bird;Panure à moustaches;Autre +Parmaj;piaf;x;x;x;x;Parus major;bird;Mésange charbonnière;Autre +Pasdom;piaf;x;x;x;x;Passer domesticus;bird;Moineau domestique;Autre +Pelbed;amph;x;x;x;x;Pelophylax bedriagae;frog;Grenouille de Bedriaga;Autre +Pelesc;amph;x;;;;Pelophylax esculantus;frog;Grenouille verte;Autre +Pelgra;amph;x;;x;;Pelophylax grafi;frog;Grenouille de Graf;Autre +Pelrid;amph;x;x;x;x;Pelophylax ridibundus;frog;Grenouille rieuse;Autre +Perate;piaf;x;x;x;x;Periparus ater;bird;Mésange noire;Autre +Phafal;Phafal;x;x;x;;Phaneroptera falcata;bush-cricket;Phaneroptere commun;Sauterelle +Phanan;Phanan;x;x;x;;Phaneroptera nana;bush-cricket;Phaneroptere meridional;Sauterelle +Phofem;Phofem;x;x;;;Pholidoptera femorata;bush-cricket;Decticelle des friches;Sauterelle +Phogri;Phogri;x;x;x;x;Pholidoptera griseoaptera;bush-cricket;Decticelle cendree;Sauterelle +Phopho;piaf;x;x;x;x;Phoenicurus phoenicurus;bird;Rougequeue à front blanc;Autre +Phycol;piaf;x;x;x;x;Phylloscopus collybita;bird;Pouillot véloce;Autre +piaf;piaf;x;x;x;x;Aves sp.;bird;Oiseau sp.;Autre +Picpic;piaf;x;x;x;x;Pica pica;bird;Pie bavarde;Autre +Pipkuh;Pipkuh;x;x;x;x;Pipistrellus kuhlii;bat;Pipistrelle de Kuhl;Chauve-souris +Pipmad;Pipmad;;;;;Pipistrellus madeirensis;bat;Pipistrelle de Madère;Chauve-souris +Pipnat;Pipnat;x;x;x;x;Pipistrellus nathusii;bat;Pipistrelle de Nathusius;Chauve-souris +Pippip;Pippip;x;x;x;x;Pipistrellus pipistrellus;bat;Pipistrelle commune;Chauve-souris +Pippyg;Pippyg;x;x;x;x;Pipistrellus pygmaeus;bat;Pipistrelle soprane;Chauve-souris +Plaaff;Plaaff;x;;x;;Platycleis affinis;bush-cricket;Decticelle cotiere;Sauterelle +Plaalb;Plaalb;x;;x;x;Platycleis albopunctata;bush-cricket;Decticelle chagrinee;Sauterelle +Plafal;Plafal;x;;x;;Platycleis falx;bush-cricket;Decticelle a serpe;Sauterelle +Plaibe;Plaibe;;;x;;Platycleis iberica;bush-cricket;Decticelle iberique;Sauterelle +Plaint;Plaint;x;;x;;Platycleis intermedia;bush-cricket;Decticelle intermediaire;Sauterelle +Plasab;Plasab;x;;x;;Platycleis sabulosa;bush-cricket;Decticelle des sables;Sauterelle +Pleaur;Pleaur;x;;x;x;Plecotus auritus;bat;Oreillard roux;Chauve-souris +Pleaus;Pleaus;x;;x;x;Plecotus austriacus;bat;Oreillard gris;Chauve-souris +Plekol;Plekol;;x;;;Plecotus kolombatovici;bat;Oreillard des Balkans;Chauve-souris +Plemac;Plemac;x;x;x;;Plecotus macrobullaris;bat;Oreillard montagnard;Chauve-souris +Poepal;piaf;x;x;x;x;Poecilus palustris;bird;Mésange nonnette;Autre +Prumod;piaf;x;x;x;x;Prunella modularis;bird;Accenteur mouchet;Autre +Ptebon;Ptebon;x;;;;Pterolepis bonfilsi;bush-cricket;Decticelle d'Evisa;Sauterelle +Ptecor;Ptecor;x;;;;Pterolepis corsicana;bush-cricket;Decticelle de Porto-Vecchio;Sauterelle +Pteger;Pteger;x;x;;;Pterolepis germanica;bush-cricket;Decticelle orientale;Sauterelle +Ptegra;Ptegra;;x;x;;Pterolepis grallata;bush-cricket;Decticelle a pattes fines;Sauterelle +Ptehey;gril;x;x;x;;Pteronemobius heydenii;ground-cricket;Grillon des marais;Autre +Ptepon;Ptepon;x;x;x;;Pterolepis poneli;bush-cricket;Decticelle varoise;Sauterelle +Pycgos;piaf;x;x;x;;Pycnonotus xanthopygos;bird;Bulbul d'Arabie;Autre +Pycjug;Pycjug;;;x;;Pycnogaster jugicola;bush-cricket;Ephippigere droite;Sauterelle +rain;noise;x;x;x;x;rain;noise;pluie;Autre +Ratnor;Ratnor;x;x;x;x;Rattus norvegicus;other mammal;Surmulot;Autre +Regign;piaf;x;x;x;x;Regulus ignicapillus;bird;Roitelet triple-bandeau;Autre +Regreg;piaf;x;x;x;x;Regulus regulus;bird;Roitelet huppé;Autre +Rhibla;Rhibla;;x;;;Rhinolophus blasii;bat;Rhinolophe de Blasius;Chauve-souris +Rhieur;Rhieur;x;x;x;;Rhinolophus euryale;bat;Rhinolophe euryale;Chauve-souris +Rhifer;Rhifer;x;x;x;x;Rhinolophus ferrumequinum;bat;Grand Rhinolophe;Chauve-souris +Rhihip;Rhihip;x;x;x;x;Rhinolophus hipposideros;bat;Petit Rhinolophe;Chauve-souris +Rhimeh;Rhimeh;;x;x;;Rhinolophus mehelyi;bat;Rinolophe de Mehely;Chauve-souris +river;noise;x;x;x;x;watercourse;noise;cours d'eau;Autre +RodTu1;mamm;x;x;x;;Rodentia sp. from Turkey 1;other mammal;Rongeur de Turquie type 1;Autre +Roeroe;Roeroe;x;x;x;x;Roeseliana roeselii;bush-cricket;Decticelle bariolee;Sauterelle +Rusnit;Rusnit;x;x;x;x;Ruspolia nitidula;bush-cricket;Conocephale gracieux;Sauterelle +SauIn1;SauIn1;;;;;Tettigoniidae sp. from India 1;bush-cricket;Sauterelle sp. In1;Sauterelle +SauIn2;SauIn2;;;;;Tettigoniidae sp. from India 2;bush-cricket;Sauterelle sp. In2;Sauterelle +SauIn3;SauIn3;;;;;Tettigoniidae sp. from India 3;bush-cricket;Sauterelle sp. In3;Sauterelle +SauTu4;SauTu4;;x;;;Tettigoniidae sp. from Turkey 4;bush-cricket;Sauterelle sp. Tu4;Sauterelle +SauTu5;SauTu5;;x;;;Tettigoniidae sp. from Turkey 5;bush-cricket;Sauterelle sp. Tu5;Sauterelle +SauTu6;SauTu6;;x;;;Tettigoniidae sp. from Turkey 6;bush-cricket;Sauterelle sp. Tu6;Sauterelle +SauTu7;SauTu7;;x;;;Tettigoniidae sp. from Turkey 7;bush-cricket;Sauterelle sp. Tu7;Sauterelle +SauTurquiesp1;SauTurquiesp1;;x;;;Tettigoniidae sp. from Turkey 1;bush-cricket;Sauterelle sp. Tu1;Sauterelle +SauTurquiesp2;SauTurquiesp2;;x;;;Tettigoniidae sp. from Turkey 2;bush-cricket;Sauterelle sp. Tu2;Sauterelle +SauTurquiesp3;SauTurquiesp3;;x;;;Tettigoniidae sp. from Turkey 3;bush-cricket;Sauterelle sp. Tu3;Sauterelle +Sepsep;Sepsep;x;;x;;Sepiana sepium;bush-cricket;Decticelle echassiere;Sauterelle +Serser;piaf;x;x;x;x;Serinus serinus;bird;Serin cini;Autre +Siteur;piaf;x;x;x;x;Sitta europaea;bird;Sittelle torchepot;Autre +Sorcor;Mussp;x;x;x;x;Soricinus coronatus;bush-cricket;Musaraigne couronnée;Autre +Stralu;piaf;x;x;x;x;Strix aluco;bird;Effraie des clochers;Autre +Strdec;piaf;x;x;x;;Streptopelia decaocto;bird;Tourterelle turque;Autre +Stuvul;piaf;x;x;x;x;Sturnus vulgaris;bird;Etourneau sansonnet;Autre +Sylatr;piaf;x;x;x;x;Sylvia atricapilla;bird;Fauvette à tête noire;Autre +Sylcom;piaf;x;x;x;x;Sylvia communis;bird;Fauvette grisette;Autre +Sylmel;piaf;x;x;x;x;Sylvia melanocephala;bird;Fauvette mélanocéphale;Autre +Tadten;Tadten;x;x;x;;Tadarida teniotis;bat;Molosse;Chauve-souris +Tesori;Tesori;;;;;Tessellana orina;bush-cricket;Decticelle orina;Sauterelle +Testes;Testes;x;x;x;;Tessellana tessellata;bush-cricket;Decticelle carroyee;Sauterelle +Tetarg;Tetarg;x;;x;;Tettigetta argentata;cicada;Cigale argentee;Autre +Tetcan;Tetcan;x;x;x;;Tettigonia cantans;bush-cricket;Sauterelle cymbaliere;Sauterelle +Tethis;Tethis;;;x;;Tettigonia hispanica;bush-cricket;Sauterelle hispanique;Sauterelle +Tetpyg;Tetpyg;x;;x;;Tettigetta pygmea;cicada;Cigale pygmee;Autre +Tetvir;Tetvir;x;x;x;x;Tettigonia viridissima;bush-cricket;Sauterelle verte;Sauterelle +Thycor;Thycor;x;;x;;Thyreonotus corsicus;bush-cricket;Decticelle marocaine;Sauterelle +Trotro;piaf;x;x;x;x;Troglodytes troglodytes;bird;Troglodyte mignon;Autre +Turmer;piaf;x;x;x;x;Turdus merula;bird;Merle noir;Autre +Turphi;piaf;x;x;x;x;Turdus philomelos;bird;Grive musicienne;Autre +Tyllil;Tyllil;x;x;x;;Tylopsis lilifolia;bush-cricket;Phaneroptere liliace;Sauterelle +Urobre;Urosp;x;;;;Uromenus brevicollis;bush-cricket;Ephippigère d'Algérie;Sauterelle +Urorug;Urosp;x;;x;;Uromenus rugosicollis;bush-cricket;Ephippigere carenee;Sauterelle +Urosp;Urosp;x;x;;;Uromenus sp.;bush-cricket;Ephippigère carénée/d'Algérie;Sauterelle +Vesmur;Vesmur;x;x;x;;Vespertilio murinus;bat;Serotine bicolore;Chauve-souris +wind;noise;x;x;x;x;wind;noise;vent;Autre +Yerbey;Yerbey;x;;;;Yersinella beybienkoi;bush-cricket;Decticelle italienne;Sauterelle +Yerbey;Yerbey;x;;;;Yersinella beybienkoi;bush-cricket;Decticelle italienne;Sauterelle +Yerray;Yerray;x;;x;;Yersinella raymondii;bush-cricket;Decticelle frele;Sauterelle +Zeuabb;Zeuabb;x;;x;;Zeuneriana abbreviata;bush-cricket;Decticelle aquitaine;Sauterelle
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/refPF.csv Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,83 @@ +"","Espece","Q25","Q75","Q98","nbocc","DM25","DM10","DM02" +"25%","Antius","1","2","20.4","37","1507.76416134834","-264.611728382111","-1373.67915743828" +"25%","Antped","4.5","11.5","14.72","2","4808.81578743458","4051.92529139519","3648.25036017418" +"25%","Antsor","1","1","1","1","15191.5848600864","15191.5848600864","15191.5848600864" +"25%","Barbar","2","17","303.98","2102","3664.81756293774","2332.18326377869","1113.65489628792" +"25%","Barfis","1","1","1","3","6365.93376266956","4838.54704384803","4023.94079380989" +"25%","Bicbic","1.5","2.5","2.96","2","10996.9584002495","10901.6431913852","10850.8084133243" +"25%","chirp","34.75","50.25","57.38","2","-1080.94990348816","-1080.94990348816","-1080.94990348816" +"25%","Cicorn","1","2.75","3.82","10","-144.126234710217","-601.744369745255","-735.611527109146" +"25%","Condor","1","1","1","2","5638.88746488095","5109.16003108025","4826.63873305321" +"25%","Confus","1","9.5","143.36","135","803.39968407154","-464.592767357826","-1264.27222914219" +"25%","criq","1","1","1","2","749.71511721611","717.207648897171","699.870332460404" +"25%","Cympud","1","10","205.84","1159","2049.57697588206","-108.215761780739","-1468.71151192665" +"25%","Cyrscu","1","2","16.54","40","1990.10920786858","-64.0679782867432","-629.767778863907" +"25%","Decalb","1","3","9.1","20","451.158402323722","-169.394851446152","-1211.11368044853" +"25%","Epheph","1","13","120.24","179","3024.1285866499","516.397881603242","-1570.94668524743" +"25%","Eptser","2","10","110","2690","2509.24711275101","1584.50247135162","754.495276994705" +"25%","Eumbor","2.25","4.75","5.9","2","377.283349037171","234.136240005494","157.791115188599" +"25%","Eupcha","5.25","9.75","11.82","2","8215.7333689332","8009.95518920422","7900.20682668209" +"25%","Hypsav","1","9","103.1","1116","2248.41059011221","1301.39321923256","348.390803813934" +"25%","Inssp1","1","1","1","1","12292.344350338","12292.344350338","12292.344350338" +"25%","Inssp5","1","1","1.86","8","-728.431448936463","-782.042838144303","-823.320345506668" +"25%","Inssp6","1","5","40.1199999999999","500","2424.97865229845","914.47767071724","-1035.51150548935" +"25%","Isopyr","8","22","28.44","2","532.886808037758","368.638544750213","281.039470996856" +"25%","Lamsp.","1","3.75","47.98","702","2166.80326139927","844.690763473511","-947.457581233978" +"25%","Lepbos","2","2","2","1","19698.1210539341","19698.1210539341","19698.1210539341" +"25%","Leppun","41.25","1103","4140.86","990","1104.83912658691","-249.540919065476","-1406.85371873856" +"25%","mamm","1","1","2.7","16","6183.96875983477","10.0895879268645","-278.111182951928" +"25%","Micagr","1","1.5","13","47","2238.36066246033","530.938663005829","-16.9136964130399" +"25%","Minsch","1","6","130.5","826","4206.91477686167","3004.16962945461","1585.87503230571" +"25%","Mussp","1","1","1","1","1104.1836810112","1104.1836810112","1104.1836810112" +"25%","Myoalc","1","2.25","14.5999999999999","92","4125.00926113128","2734.64635419845","1854.23125097752" +"25%","Myobec","2","2","2.92","5","4397.38848257065","3523.56983032227","3057.5332157898" +"25%","Myobra","5","5","5","1","3503.78706097603","3503.78706097603","3503.78706097603" +"25%","Myocap","1","6","94.6199999999999","104","2953.33067560195","2095.68971920014","1288.69886338711" +"25%","Myodas","3.5","4.5","4.96","2","3451.95404314995","2941.47309875488","2669.21659507751" +"25%","Myodau","1","6","350.199999999996","2395","3523.05388474465","2357.6486802578","1277.44239184379" +"25%","Myoema","1","3","38.5999999999997","1035","4239.00043714046","2483.71984658241","1362.43170207977" +"25%","MyoGT","1","3","17.22","1040","4136.37232673169","2922.0745616436","1497.44925053597" +"25%","Myomys","1","4","37.14","444","4504.9568271041","2929.1723464489","1807.60458549976" +"25%","Myonat","1","6.75","52.2399999999998","2070","4100.53462767601","2735.82784142494","1745.14204066753" +"25%","noise","609","3111.25","7235.92","5060","-1766.10768318176","-1789.97119259834","-1797.40886205673" +"25%","Nyclas","1","5.5","38.68","7","1502.60388588905","1177.01388425827","887.68234380722" +"25%","Nyclei","2","14","174.68","2780","2101.66658043861","969.221526432037","-496.86254527092" +"25%","Nycnoc","1","6","123","950","1175.58238327503","418.189396619797","-994.488390636444" +"25%","Phafal","1","5","31.12","145","2818.22321665287","1387.89198203087","-1076.0002751255" +"25%","Phanan","5","196.75","1286.22","1390","-461.121517419815","-1228.30023024082","-1652.31356955051" +"25%","Phofem","1","2.5","49.7200000000001","39","2068.41903162003","-273.422169017792","-1017.87503848076" +"25%","Phogri","2","36","300","133","3167.28623771667","1046.13571507931","-124.318460326194" +"25%","piaf","10","121","771.199999999999","4681","-1486.967471838","-1711.17241072654","-1787.89137840271" +"25%","Pipkuh","7","89","1436","4189","1559.32718348503","1060.77260088921","357.113767185211" +"25%","Pipnat","1","5","45","1635","3598.21611785888","2652.12113056183","1204.36025017738" +"25%","Pippip","22","314.5","2862.8","4663","944.2108066082","285.986425304413","-682.368085184098" +"25%","Pippyg","2","56","1870.14","1850","1208.85102796555","491.482502508163","-473.14840514183" +"25%","Plaaff","2","39","518.399999999999","961","1186.96142053604","-579.112753868103","-1549.82554960251" +"25%","Plaalb","2","61.5","935.440000000002","1055","1016.66383886337","-568.569532346726","-1470.19973935128" +"25%","Plafal","1.25","1.75","1.98","2","4582.26300436258","2749.75668113232","1772.41997540951" +"25%","Plaint","2","119","2593.2","2231","242.273566842079","-900.83824698925","-1540.14236267566" +"25%","Plasab","1","10","339.76","455","1074.20996451378","-387.740073204041","-1394.40862154961" +"25%","Pleaur","1","1","4.76","63","4323.55943703652","2738.44387030601","1156.0819111824" +"25%","Pleaus","1","4","29","2122","3952.17004132271","2637.71873641015","1691.51609820366" +"25%","Plemac","3","3","3","1","1603.93373608589","1603.93373608589","1603.93373608589" +"25%","Pteger","1","8","104.16","624","1705.30042260885","258.537321424484","-1053.9468501854" +"25%","Ptepon","1","14","185.38","222","1737.58781033754","289.659371685982","-1012.17030680656" +"25%","Ratnor","1","1.25","1.94","4","6653.59038341046","6487.00690498352","6398.16238315582" +"25%","Rhieur","1","2.25","2.94","4","7479.47543311119","5479.32757034302","4412.58204353332" +"25%","Rhifer","1","7","112.68","967","2878.50191009045","1543.43428068161","-210.073269786834" +"25%","Rhihip","1","5","198.78","762","2793.44169855118","1538.45808842182","-72.6952844524384" +"25%","Roeroe","1","5","101.56","507","1533.86711502075","-419.310067510605","-1536.84663165092" +"25%","Rusnit","1","18.25","2461.22","2128","1446.99894690514","-318.348206520081","-1535.67664027214" +"25%","Sepsep","1","12","209.56","670","1171.77852892875","-410.145421075821","-1551.93597637176" +"25%","Tadten","1","6","159.48","1165","2972.54510653019","1141.22549757958","-718.695039167404" +"25%","Testes","2","61","3929.2","2681","856.26694393158","-589.754028081894","-1536.27879407883" +"25%","Tetarg","1","1","1","1","1427.14018034935","1427.14018034935","1427.14018034935" +"25%","Tetcan","2.5","4.5","4.96","3","-498.833418250084","-1007.41270055771","-1278.65498445511" +"25%","Tetpyg","1","1","6.08","33","5812.14534193277","3825.1769472599","691.60439749718" +"25%","Tetvir","10","915.25","3517.03999999999","4510","-1245.37617117166","-1635.96713280678","-1767.07428184033" +"25%","Thycor","1","1.5","2.88","4","3827.87814813852","3648.21886131763","3552.40057501316" +"25%","Tyllil","1","2","9.2","21","2519.41863942146","1398.31712245941","134.294110488891" +"25%","Urorug","1","29","1204.6","1655","812.486474514008","-663.041796922684","-1598.88818309784" +"25%","Vesmur","1","2","11","6","3089.2149399519","2337.44215130806","1811.89018826484" +"25%","Yerray","2","26","1198.96","1822","1648.10248410702","335.5679915905","-1230.61568079949" +"25%","Zeuabb","1","1","1","1","12984.534954071","12984.534954071","12984.534954071"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/refRPSeuil50.csv Mon Aug 06 09:13:29 2018 -0400 @@ -0,0 +1,28 @@ +Espece,Q25RE,Q75RE,Q98RE,nboccRE,Q25cRE,Q75cRE,Q98cRE,nbocccRE,Q25RD,Q75RD,Q98RD,nboccRD,Q25cRD,Q75cRD,Q98cRD,nbocccRD,Q25PE,Q75PE,Q98PE,nboccPE,Q25cPE,Q75cPE,Q98cPE,nbocccPE,Q25PD,Q75PD,Q98PD,nboccPD,Q25cPD,Q75cPD,Q98cPD,nbocccPD +Barbar,1,1,2.3,36,1,1,3,33,1,2,5,283,1,3,7.29999999999998,186,1,2.25,8.5,16,1,2,9.48,14,1,2,7.48,77,1,3.25,8,60 +Confus,1,1,2.07999999999998,147,1,2,5.02,100,1,2,4.88,457,1,4,12.16,222,1,3,6.2,46,1,3.5,8.32,35,1,5,24.2,89,1,7,42.8,56 +Epheph,1,2,6.52,75,1,1.75,25,50,1,2,7.42000000000002,430,1,4,20,200,1,1,4,52,1,2,6,42,1,3,16.1,196,1,5,23.36,117 +Eptser,1,2,7,898,1,4,17,472,1,4,16,1732,3,15,53.6,521,1,3.5,13.32,135,1,5.5,29.76,79,1,5,25.6,261,2,10,59.28,127 +Leppun,1,1,4,410,1,3,19.18,192,1,3,10,1183,2,10,44,305,1,3,11.08,99,1,7.25,28.6,48,2,8,32.9,406,3,24,114.36,128 +Minsch,1,1,3,301,1,2,5,222,1,2,6,28,1,4.25,13.78,12,1,2,9,115,1,4,11,78,1,4,6.68,9,1,5.5,11.4,6 +Myodau,1,1,3.18,42,1,2,4.28,37,1,1,3,224,1,2,5,166,1,4.75,21,86,1,5,36.6,61,1,6.25,33.94,204,2,12,57,111 +MyoGT,1,1,4,473,1,2,7,329,1,1,3,322,1,2,6.53999999999999,224,1,2,7.51999999999998,82,1,3,11.44,65,1,2,4.59999999999999,71,1,2,6.75999999999999,57 +noise,47,66,96,12233,457,650,882.08,1250,56,70,98,11263,563,690,921,1151,23,72,79,4490,259.75,661.5,770.24,474,64,73,85,3994,580,728,813.86,420 +Nyclei,1,1,4,29,1,2,4.6,21,1,2,7,571,1,4,14.78,312,1,2.25,27.1,16,1,2.5,33.3,12,1,3,14.72,115,1,4,27.68,75 +Nycnoc,1,2,3.92,55,1,3,12,33,1,2,6,272,1,4,13.68,159,1,1.25,13.78,12,1,2,14.84,9,1,3,16.6,71,1,3.5,36,51 +Phanan,1,1,3,34,1,3,7.28,19,1,2,9.20000000000005,541,1,5,36.56,212,1,4,22.84,17,1,3,30.6,13,1,7,35,322,1,18.5,97.92,128 +Phogri,1,1,3,526,1,2,8.07999999999998,297,1,1,3.35999999999999,233,1,2,5.68000000000001,167,1,2,11,287,1,5,26.22,140,1,5,26,240,1,13.75,58.9,106 +Pipkuh,1,3,7,3067,2,10,26,876,1,5,17.7799999999997,2762,4,31,82.8399999999999,555,1,5,27.22,890,3,17,59.5999999999997,318,1,5,49.36,783,3,20,114.02,262 +Pipnat,1,1,4,26,1,1.5,8.48,19,1,1,3,291,1,2,5,211,1,1.5,3.8,31,1,2,5,26,1,2,10.52,175,1,3,19.78,112 +Pippip,1,4,12,5675,5,24,67,1033,1,6,18,4155,10,41,106.46,628,2,11,49,1568,6,51,135.88,404,2,14,55.5999999999999,1671,13.5,80,196.56,323 +Pippyg,1,2,6.52000000000001,88,1,2.75,21.9,58,1,1,5.77999999999998,30,1,1,9.6,25,1,3,34.8000000000001,81,1,3,51.22,50,1,5,55.32,47,1,4.5,110.72,27 +Plaalb,1,2,9,261,1,2,13,165,1,2,5,488,1,4,16,210,1,4.25,15.68,84,1,6.5,26.94,54,1,7.5,44,103,2,15.75,49.72,58 +Plaint,1,2.25,22.22,340,1,2,91.0000000000003,161,1,3,11,1270,2,8,47,366,1,4,24.1999999999999,117,1,5,28.7,66,1,6,47.74,364,2,14,109.4,148 +Plasab,1,1,3.7,16,1,2,4.76,13,1,1,2.52,75,1,2,4,53,1,1.5,3.76,7,1,1.5,3.76,7,1,4,34.78,20,1,6.25,35.54,18 +Pleaus,1,1,2,59,1,1,2,57,1,2,3,280,1,2,5,209,1,2,4.02,50,1,3,5,46,1,2,5,155,1,3,8,109 +Roeroe,1,1,1.42,30,1,1,1.42,30,1,1,2,26,1,1.25,2,24,2,2,3.8,6,2,2,3.8,6,1,2,5.28,13,1,2,5.34,12 +Rusnit,2,7,24.4200000000001,2430,4,46,128.36,448,3,14,47,2871,6,91,282.38,488,2,21,66.6,221,3.25,59,155.04,82,2,47,73,242,1,105.5,312.2,91 +Sepsep,1,1,1,7,1,2.25,2.94,4,1,1,3,37,1,2,4,29,1,1,1,1,1,1,1,1,1,3.75,7.66,18,1.5,4,7.74,14 +Testes,1,2,10.66,118,1,2.5,22.6,71,1,6,22,1692,3,29.5,113,371,1,11.5,71,51,1,5.75,286.32,30,1,8,62.04,275,1,24,141.08,113 +Tetvir,1,2,13,1252,1,6,55.6,423,2,12,37.2600000000002,5988,5,73,285,949,1,6,70,440,1,9,178.6,177,2,36.5,73,1703,8,165.5,391,339 +Yerray,1,2,3,33,1,2,10.32,22,1,2,6.08,24,1,10,16.44,8,1,1,1,5,1,1.25,1.94,4,1,2,8.40000000000001,11,1,3.25,13.9,6