dplyr::select(-time) %>%
beta.div.comp(coef = "J", quant = TRUE, save.abc = FALSE)
beta_div_comp_patch
df %>%
group_by(plot,Species) %>%
dplyr::summarise(abundance = sum(Abundance)) %>%
spread(key = Species, value = abundance, fill = 0) %>%
ungroup() %>%
dplyr::select(-plot) %>%
beta.div.comp(coef = "J", quant = TRUE, save.abc = FALSE)
df %>%
group_by(Sampling_date_order,Species) %>%
dplyr::summarise(Abundance = sum(Abundance)) %>%
spread(key = Species, value = Abundance, fill = 0) %>%
ungroup() %>%
dplyr::select(-time) %>%
beta.div.comp(coef = "J", quant = TRUE, save.abc = FALSE)
library(vegan)
library(plyr)
library(ggplot2)
library(DNCImper)
load("Data_Matrix_Tutorial.RData") #Data already loaded with DNCImper package. Can be call like that: DNCImper::Matrix
DNCImper::Matrix
DNCImper::Group
X1 <- DNCImper:::PerSIMPER(Matrix, Group) #Default = 1000 permutations, Plot = TRUE
comm_df_for_DNCI<-read.csv("~/.julia/dev/MetaCommunityMetrics/benchmarks/benchmark_r/data/DNCI_comm.csv")%>%
as.matrix()
comm_df_for_DNCI
grouping_for_DNCI<-read.csv("~/.julia/dev/MetaCommunityMetrics/benchmarks/benchmark_r/data/cluster_list_t1.csv")%>%
as.vector()
grouping_for_DNCI
grouping_for_DNCI<-read.csv("~/.julia/dev/MetaCommunityMetrics/benchmarks/benchmark_r/data/cluster_list_t1.csv")%>%
select(Group)%>%
as.vector()
grouping_for_DNCI
result <- DNCImper:::DNCI_multigroup(comm_df_for_DNCI, grouping_for_DNCI, Nperm = 10)
DNCImper:::PerSIMPER(comm_df_for_DNCI, grouping_for_DNCI, Nperm = 10)
X2 <- DNCImper:::DNCI.ses(Matrix, Group) #Original DNCI function, limited to 2 groups
X2 <- DNCImper:::DNCI_multigroup(Matrix, Group, plotSIMPER = F) #Wraper, 2 or more groups
DNCImper:::DNCI_multigroup(comm_df_for_DNCI, grouping_for_DNCI, Nperm = 10, symmetrize = TRUE)
comm_df_for_DNCI
DNCImper::Matrix
str(Matrix)
str(comm_df_for_DNCI)
grouping=groups
groups
groups<-grouping_for_DNCI$Group
groups
grouping=groups
x=comm_df_for_DNCI
x
group.combinations <- combn(unique(sort(grouping)),2)
ddelta <- NULL
for(i in 1:NCOL(group.combinations)) {
splitx <- split(x,grouping)
#Ici symmetrize:
if(symmetrize == TRUE)
{
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
if(Add == 1)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
}
if(Add == 2)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[2,i]]][,1]),
length(splitx[[group.combinations[1,i]]][,1]))
splitx[[group.combinations[2,i]]] <- splitx[[group.combinations[2,i]]][sampled_lines,]
}
}
paired.x <- rbind(splitx[[group.combinations[1,i]]],
splitx[[group.combinations[2,i]]])
# remove empty species
ifzero <- which(apply(paired.x, 2, sum) == 0)
if(length(ifzero > 0)){
paired.x <- paired.x[,-which(colSums(paired.x)==0)]}
if(length(which(rowSums(paired.x) == 0)) != 0){stop("ERROR : A row/sample is empty")}
group.pair <- c(rep(group.combinations[1,i], NROW(splitx[[group.combinations[1,i]]])),
rep(group.combinations[2,i], NROW(splitx[[group.combinations[2,i]]])))
ddelta <- rbind(ddelta, DNCImper:::DNCI.ses(x=paired.x,grouping=group.pair,id=id, Nperm = Nperm, count = count, plotSIMPER = plotSIMPER, dataTYPE = dataTYPE)) #here is the part that calculates the index based on PERSIMPER
}
for(i in 1:NCOL(group.combinations)) {
splitx <- split(x,grouping)
#Ici symmetrize:
if(symmetrize == TRUE)
{
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
if(Add == 1)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
}
if(Add == 2)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[2,i]]][,1]),
length(splitx[[group.combinations[1,i]]][,1]))
splitx[[group.combinations[2,i]]] <- splitx[[group.combinations[2,i]]][sampled_lines,]
}
}
paired.x <- rbind(splitx[[group.combinations[1,i]]],
splitx[[group.combinations[2,i]]])
# remove empty species
ifzero <- which(apply(paired.x, 2, sum) == 0)
if(length(ifzero > 0)){
paired.x <- paired.x[,-which(colSums(paired.x)==0)]}
if(length(which(rowSums(paired.x) == 0)) != 0){stop("ERROR : A row/sample is empty")}
group.pair <- c(rep(group.combinations[1,i], NROW(splitx[[group.combinations[1,i]]])),
rep(group.combinations[2,i], NROW(splitx[[group.combinations[2,i]]])))
ddelta <- rbind(ddelta, DNCImper:::DNCI.ses(x=paired.x,grouping=group.pair,id=id, Nperm = Nperm, count = count, plotSIMPER = plotSIMPER, dataTYPE = dataTYPE)) #here is the part that calculates the index based on PERSIMPER
}
str(groups)
grouping=groups%>%unlist()
grouping
str(groupings)
str(grouping)
group.combinations <- combn(unique(sort(grouping)),2)
for(i in 1:NCOL(group.combinations)) {
splitx <- split(x,grouping)
#Ici symmetrize:
if(symmetrize == TRUE)
{
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
if(Add == 1)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
}
if(Add == 2)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[2,i]]][,1]),
length(splitx[[group.combinations[1,i]]][,1]))
splitx[[group.combinations[2,i]]] <- splitx[[group.combinations[2,i]]][sampled_lines,]
}
}
paired.x <- rbind(splitx[[group.combinations[1,i]]],
splitx[[group.combinations[2,i]]])
# remove empty species
ifzero <- which(apply(paired.x, 2, sum) == 0)
if(length(ifzero > 0)){
paired.x <- paired.x[,-which(colSums(paired.x)==0)]}
if(length(which(rowSums(paired.x) == 0)) != 0){stop("ERROR : A row/sample is empty")}
group.pair <- c(rep(group.combinations[1,i], NROW(splitx[[group.combinations[1,i]]])),
rep(group.combinations[2,i], NROW(splitx[[group.combinations[2,i]]])))
ddelta <- rbind(ddelta, DNCImper:::DNCI.ses(x=paired.x,grouping=group.pair,id=id, Nperm = Nperm, count = count, plotSIMPER = plotSIMPER, dataTYPE = dataTYPE)) #here is the part that calculates the index based on PERSIMPER
}
splitx <- split(x,grouping)
symmetrize = TRUE
#Ici symmetrize:
if(symmetrize == TRUE)
{
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
if(Add == 1)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
}
if(Add == 2)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[2,i]]][,1]),
length(splitx[[group.combinations[1,i]]][,1]))
splitx[[group.combinations[2,i]]] <- splitx[[group.combinations[2,i]]][sampled_lines,]
}
}
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
Add
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]][,1]
group.combinations[1,i]]][,1
length(splitx[[group.combinations[1,i]]][,1])
splitx[[group.combinations[1,i]]][,1]
group.combinations[1,i]
splitx[[group.combinations[1,i]]]
splitx[[group.combinations[1,i]]][,1]
splitx <- split(x,grouping)
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx
splitx <- split(x,grouping)
splitx
x=Matrix
load("Data_Matrix_Tutorial.RData") #Data already loaded with DNCImper package. Can be call like that: DNCImper::Matrix
library(vegan)
library(plyr)
library(ggplot2)
library(DNCImper)
load("Data_Matrix_Tutorial.RData") #Data already loaded with DNCImper package. Can be call like that: DNCImper::Matrix
DNCImper::Matrix
DNCImper::Group
grouping=Group
x=Matrix
group.combinations <- combn(unique(sort(grouping)),2)
ddelta <- NULL
for(i in 1:NCOL(group.combinations)) {
splitx <- split(x,grouping)
#Ici symmetrize:
if(symmetrize == TRUE)
{
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
if(Add == 1)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
}
if(Add == 2)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[2,i]]][,1]),
length(splitx[[group.combinations[1,i]]][,1]))
splitx[[group.combinations[2,i]]] <- splitx[[group.combinations[2,i]]][sampled_lines,]
}
}
paired.x <- rbind(splitx[[group.combinations[1,i]]],
splitx[[group.combinations[2,i]]])
# remove empty species
ifzero <- which(apply(paired.x, 2, sum) == 0)
if(length(ifzero > 0)){
paired.x <- paired.x[,-which(colSums(paired.x)==0)]}
if(length(which(rowSums(paired.x) == 0)) != 0){stop("ERROR : A row/sample is empty")}
group.pair <- c(rep(group.combinations[1,i], NROW(splitx[[group.combinations[1,i]]])),
rep(group.combinations[2,i], NROW(splitx[[group.combinations[2,i]]])))
ddelta <- rbind(ddelta, DNCImper:::DNCI.ses(x=paired.x,grouping=group.pair,id=id, Nperm = Nperm, count = count, plotSIMPER = plotSIMPER, dataTYPE = dataTYPE)) #here is the part that calculates the index based on PERSIMPER
}
splitx <- split(x,grouping)
splitx
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
splitx[[group.combinations[1,i]]][,1]
i
group.combinations[1,i]
group.combinations
(splitx[[group.combinations[1,i]]]
)
splitx[[group.combinations[1,i]]]
splitx[[1]]
splitx
splitx[[group.combinations[1,i]]][,1]
grouping=groups
grouping
x=comm_df_for_DNCI
x
group.combinations <- combn(unique(sort(grouping)),2)
group.combinations
splitx <- split(x,grouping)
splitx
Matrix
Group
?split()
x
grouping
split(x,grouping)
comm_df_for_DNCI<-read.csv("~/.julia/dev/MetaCommunityMetrics/benchmarks/benchmark_r/data/DNCI_comm.csv")
comm_df_for_DNCI
split(x,grouping)
grouping
x
grouping
split(x,grouping)
x=Matrix
grouping=Group
x
grouping
split(x,grouping)
x=comm_df_for_DNCI
x
x=as.matrix(comm_df_for_DNCI)
x
grouping
grouping=groups
grouping
split(x,grouping)
str(Matrix)
str(comm_df_for_DNCI)
split(comm_df_for_DNCI, groups)
x=comm_df_for_DNCI
str(X)
str(x)
grouping=groups
split(x,grouping)
group.combinations <- combn(unique(sort(grouping)),2)
group.combinations
ddelta <- NULL
for(i in 1:NCOL(group.combinations)) {
splitx <- split(x,grouping)
#Ici symmetrize:
if(symmetrize == TRUE)
{
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
if(Add == 1)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
}
if(Add == 2)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[2,i]]][,1]),
length(splitx[[group.combinations[1,i]]][,1]))
splitx[[group.combinations[2,i]]] <- splitx[[group.combinations[2,i]]][sampled_lines,]
}
}
paired.x <- rbind(splitx[[group.combinations[1,i]]],
splitx[[group.combinations[2,i]]])
# remove empty species
ifzero <- which(apply(paired.x, 2, sum) == 0)
if(length(ifzero > 0)){
paired.x <- paired.x[,-which(colSums(paired.x)==0)]}
if(length(which(rowSums(paired.x) == 0)) != 0){stop("ERROR : A row/sample is empty")}
group.pair <- c(rep(group.combinations[1,i], NROW(splitx[[group.combinations[1,i]]])),
rep(group.combinations[2,i], NROW(splitx[[group.combinations[2,i]]])))
ddelta <- rbind(ddelta, DNCImper:::DNCI.ses(x=paired.x,grouping=group.pair,id=id, Nperm = Nperm, count = count, plotSIMPER = plotSIMPER, dataTYPE = dataTYPE)) #here is the part that calculates the index based on PERSIMPER
}
splitx <- split(x,grouping)
splitx
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
Add
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
paired.x <- rbind(splitx[[group.combinations[1,i]]],
splitx[[group.combinations[2,i]]])
length(which(rowSums(paired.x)
)
)
length(which(rowSums(paired.x) == 0))
if(symmetrize == TRUE)
{
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
if(Add == 1)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
}
if(Add == 2)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[2,i]]][,1]),
length(splitx[[group.combinations[1,i]]][,1]))
splitx[[group.combinations[2,i]]] <- splitx[[group.combinations[2,i]]][sampled_lines,]
}
}
splitx <- split(x,grouping)
#Ici symmetrize:
if(symmetrize == TRUE)
{
Add <- which(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]])) == max(c(NROW(splitx[[group.combinations[1,i]]]),
NROW(splitx[[group.combinations[2,i]]]))))
if(Add == 1)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[1,i]]][,1]),
length(splitx[[group.combinations[2,i]]][,1]))
splitx[[group.combinations[1,i]]] <- splitx[[group.combinations[1,i]]][sampled_lines,]
}
if(Add == 2)
{
sampled_lines <- sample(1:length(splitx[[group.combinations[2,i]]][,1]),
length(splitx[[group.combinations[1,i]]][,1]))
splitx[[group.combinations[2,i]]] <- splitx[[group.combinations[2,i]]][sampled_lines,]
}
}
i
paired.x <- rbind(splitx[[group.combinations[1,i]]],
splitx[[group.combinations[2,i]]])
ifzero <- which(apply(paired.x, 2, sum) == 0)
if(length(ifzero > 0)){
paired.x <- paired.x[,-which(colSums(paired.x)==0)]}
if(length(which(rowSums(paired.x) == 0)) != 0){stop("ERROR : A row/sample is empty")}
length(which(rowSums(paired.x) == 0))
rowSums(paired.x)
paired.x
rowSums(paired.x)
which(rowSums(paired.x) == 0)
rowSums(paired.x) == 0
which(rowSums(paired.x) == 0)
length(which(rowSums(paired.x) == 0))
apply(paired.x, 2, sum)
paired.x
which(apply(paired.x, 2, sum) == 0)
comm_df_for_DNCI
library(data.table)
library(tidyverse)
library(bench)
## R packages that provide equivalent functions of my package
library(adespatial)
library(DNCImper)
comm_df_for_DNCI<-read.csv("~/.julia/dev/MetaCommunityMetrics/benchmarks/benchmark_r/data/DNCI_comm_t50.csv")
grouping_for_DNCI<-read.csv("~/.julia/dev/MetaCommunityMetrics/benchmarks/benchmark_r/data/cluster_list_t50.csv")
groups <- grouping_for_DNCI$Group
groups
omm_df_for_DNCI
comm_df_for_DNCI
groups
DNCI_multigroup_result <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 100,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 1000,
check = TRUE,
time_unit = "ms")
DNCI_multigroup_result
comm_df_for_DNCI
DNCI_multigroup_result <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 100,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 100,
check = TRUE,
time_unit = "ms")
DNCI_multigroup_result <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 100,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 10,
check = TRUE,
time_unit = "ms")
DNCI_multigroup_result <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 10,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 10,
check = TRUE,
time_unit = "ms")
DNCI_multigroup_result <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 100,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 1,
check = TRUE,
time_unit = "ms")
DNCI_multigroup_result <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 100,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 2,
check = FALSE,
time_unit = "ms")
DNCI_multigroup_result
DNCI_multigroup_result <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 10,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 100,
check = FALSE,
time_unit = "ms")
DNCI_multigroup_result <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 100,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 10,
check = FALSE,
time_unit = "ms")
DNCI_multigroup_result
execution_time_millisecond <- as.numeric(mean(temporal_beta_div_3$time[[1]])) * 1000
execution_time_millisecond <- as.numeric(mean(DNCI_multigroup_result $time[[1]])) * 1000
memory_usage_mib <- as.numeric(DNCI_multigroup_result $mem_alloc) / 1.048576e+6
cat("Execution Time (Milliseconds):", execution_time_millisecond, "\n")
cat("Memory Usage (MiB):", memory_usage_mib, "\n")
as.numeric(DNCI_multigroup_result $mem_alloc)
DNCI_multigroup_result $mem_alloc
11073560448/1.048576e+6
mean(DNCI_multigroup_result $time[[1]])
41.2*1000
DNCI_multigroup_result_2 <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 100,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 10,
check = FALSE,
time_unit = "ms")
DNCI_multigroup_result_2
DNCI_multigroup_result_3 <- mark(DNCImper:::DNCI_multigroup(comm_df_for_DNCI,
groups, Nperm = 100,
symmetrize = FALSE,
plotSIMPER = FALSE),
iterations = 100,
check = FALSE,
time_unit = "ms")
DNCI_multigroup_result_3
execution_time_millisecond <- as.numeric(mean(DNCI_multigroup_result_3$time[[1]])) * 1000
memory_usage_mib <- as.numeric(DNCI_multigroup_result_3$mem_alloc) / 1.048576e+6
# Print the results
cat("Execution Time (Milliseconds):", execution_time_millisecond, "\n")
cat("Memory Usage (MiB):", memory_usage_mib, "\n")
saveRDS(DNCI_multigroup_result_3, "~/.julia/dev/MetaCommunityMetrics/benchmarks/benchmark_r/benchmarking_result_R/DNCI_multigroup_result_100iter.rds")
DNCI_multigroup_result_3$time
