Commit message:
"planemo upload for repository https://github.com/Marie59/Data_explo_tools commit 60627aba07951226c8fd6bb3115be4bd118edd4e" |
added:
LICENSE.md funct_anomy.r functions.r graph_homogeneity_normality.r graph_lcbd.r graph_link_var.r graph_pres_abs_abund.r graph_stat_presence_abs.r lcbd.xml macro.xml test-data/Data.tabular test-data/Missing_species.txt test-data/Reel_life_survey_fish_modif.tabular test-data/Reel_life_survey_fish_modif2.tabular test-data/SCBD.txt test-data/data_frenchbbs.tabular test-data/levene.txt test-data/species.txt test-data/test_bbs2.txt test-data/test_fish2.tabular test-data/test_value_fish2.txt |
b |
diff -r 000000000000 -r fb7b2cbd80bb LICENSE.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LICENSE.md Fri Aug 13 18:17:38 2021 +0000 |
b |
b'@@ -0,0 +1,674 @@\n+ GNU GENERAL PUBLIC LICENSE\n+ Version 3, 29 June 2007\n+\n+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n+ Everyone is permitted to copy and distribute verbatim copies\n+ of this license document, but changing it is not allowed.\n+\n+ Preamble\n+\n+ The GNU General Public License is a free, copyleft license for\n+software and other kinds of works.\n+\n+ The licenses for most software and other practical works are designed\n+to take away your freedom to share and change the works. By contrast,\n+the GNU General Public License is intended to guarantee your freedom to\n+share and change all versions of a program--to make sure it remains free\n+software for all its users. We, the Free Software Foundation, use the\n+GNU General Public License for most of our software; it applies also to\n+any other work released this way by its authors. You can apply it to\n+your programs, too.\n+\n+ When we speak of free software, we are referring to freedom, not\n+price. Our General Public Licenses are designed to make sure that you\n+have the freedom to distribute copies of free software (and charge for\n+them if you wish), that you receive source code or can get it if you\n+want it, that you can change the software or use pieces of it in new\n+free programs, and that you know you can do these things.\n+\n+ To protect your rights, we need to prevent others from denying you\n+these rights or asking you to surrender the rights. Therefore, you have\n+certain responsibilities if you distribute copies of the software, or if\n+you modify it: responsibilities to respect the freedom of others.\n+\n+ For example, if you distribute copies of such a program, whether\n+gratis or for a fee, you must pass on to the recipients the same\n+freedoms that you received. You must make sure that they, too, receive\n+or can get the source code. And you must show them these terms so they\n+know their rights.\n+\n+ Developers that use the GNU GPL protect your rights with two steps:\n+(1) assert copyright on the software, and (2) offer you this License\n+giving you legal permission to copy, distribute and/or modify it.\n+\n+ For the developers\' and authors\' protection, the GPL clearly explains\n+that there is no warranty for this free software. For both users\' and\n+authors\' sake, the GPL requires that modified versions be marked as\n+changed, so that their problems will not be attributed erroneously to\n+authors of previous versions.\n+\n+ Some devices are designed to deny users access to install or run\n+modified versions of the software inside them, although the manufacturer\n+can do so. This is fundamentally incompatible with the aim of\n+protecting users\' freedom to change the software. The systematic\n+pattern of such abuse occurs in the area of products for individuals to\n+use, which is precisely where it is most unacceptable. Therefore, we\n+have designed this version of the GPL to prohibit the practice for those\n+products. If such problems arise substantially in other domains, we\n+stand ready to extend this provision to those domains in future versions\n+of the GPL, as needed to protect the freedom of users.\n+\n+ Finally, every program is threatened constantly by software patents.\n+States should not allow patents to restrict development and use of\n+software on general-purpose computers, but in those that do, we wish to\n+avoid the special danger that patents applied to a free program could\n+make it effectively proprietary. To prevent this, the GPL assures that\n+patents cannot be used to render the program non-free.\n+\n+ The precise terms and conditions for copying, distribution and\n+modification follow.\n+\n+ TERMS AND CONDITIONS\n+\n+ 0. Definitions.\n+\n+ "This License" refers to version 3 of the GNU General Public License.\n+\n+ "Copyright" also means copyright-like laws that apply to other kinds of\n+works, such as semiconductor masks.\n+\n+ "The Program" refers to '..b'HE PROGRAM\n+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\n+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n+\n+ 16. Limitation of Liability.\n+\n+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\n+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\n+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\n+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\n+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\n+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\n+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\n+SUCH DAMAGES.\n+\n+ 17. Interpretation of Sections 15 and 16.\n+\n+ If the disclaimer of warranty and limitation of liability provided\n+above cannot be given local legal effect according to their terms,\n+reviewing courts shall apply local law that most closely approximates\n+an absolute waiver of all civil liability in connection with the\n+Program, unless a warranty or assumption of liability accompanies a\n+copy of the Program in return for a fee.\n+\n+ END OF TERMS AND CONDITIONS\n+\n+ How to Apply These Terms to Your New Programs\n+\n+ If you develop a new program, and you want it to be of the greatest\n+possible use to the public, the best way to achieve this is to make it\n+free software which everyone can redistribute and change under these terms.\n+\n+ To do so, attach the following notices to the program. It is safest\n+to attach them to the start of each source file to most effectively\n+state the exclusion of warranty; and each file should have at least\n+the "copyright" line and a pointer to where the full notice is found.\n+\n+ <one line to give the program\'s name and a brief idea of what it does.>\n+ Copyright (C) <year> <name of author>\n+\n+ This program is free software: you can redistribute it and/or modify\n+ it under the terms of the GNU General Public License as published by\n+ the Free Software Foundation, either version 3 of the License, or\n+ (at your option) any later version.\n+\n+ This program is distributed in the hope that it will be useful,\n+ but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+ GNU General Public License for more details.\n+\n+ You should have received a copy of the GNU General Public License\n+ along with this program. If not, see <https://www.gnu.org/licenses/>.\n+\n+Also add information on how to contact you by electronic and paper mail.\n+\n+ If the program does terminal interaction, make it output a short\n+notice like this when it starts in an interactive mode:\n+\n+ <program> Copyright (C) <year> <name of author>\n+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w\'.\n+ This is free software, and you are welcome to redistribute it\n+ under certain conditions; type `show c\' for details.\n+\n+The hypothetical commands `show w\' and `show c\' should show the appropriate\n+parts of the General Public License. Of course, your program\'s commands\n+might be different; for a GUI interface, you would use an "about box".\n+\n+ You should also get your employer (if you work as a programmer) or school,\n+if any, to sign a "copyright disclaimer" for the program, if necessary.\n+For more information on this, and how to apply and follow the GNU GPL, see\n+<https://www.gnu.org/licenses/>.\n+\n+ The GNU General Public License does not permit incorporating your program\n+into proprietary programs. If your program is a subroutine library, you\n+may consider it more useful to permit linking proprietary applications with\n+the library. If this is what you want to do, use the GNU Lesser General\n+Public License instead of this License. But first, please read\n+<https://www.gnu.org/licenses/why-not-lgpl.html>.\n' |
b |
diff -r 000000000000 -r fb7b2cbd80bb funct_anomy.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/funct_anomy.r Fri Aug 13 18:17:38 2021 +0000 |
[ |
@@ -0,0 +1,39 @@ +#Rscript + +########################### +## Anonymization ## +########################### + +#####Packages : tangles + +#Load arguments + +args <- commandArgs(trailingOnly = TRUE) + +if (length(args) == 0) { + stop("This tool needs at least one argument") +}else{ + table <- args[1] + hr <- args[2] + latitude <- as.numeric(args[3]) + longitude <- as.numeric(args[4]) +} + +if (hr == "false") { + hr <- FALSE +}else{ + hr <- TRUE +} + +#####Import data +data <- read.table(table, sep = "\t", dec = ".", header = hr, fill = TRUE, encoding = "UTF-8") + +randomized_data <- tangles::tangles(data = as.matrix(data[, c(latitude, longitude)]), depth = 3, rasterdata = FALSE, raster_object = FALSE, saveTangles = FALSE, path = NULL) + +data[, c(latitude, longitude)] <- NULL + +tab_anon <- data.frame(longitude = randomized_data[[1]]$X, latitude = randomized_data[[1]]$Y) + +tab_anon <- cbind(data, tab_anon) + +write.table(tab_anon, "anonym_data.tabular", row.names = FALSE, quote = FALSE, sep = "\t", dec = ".", fileEncoding = "UTF-8") |
b |
diff -r 000000000000 -r fb7b2cbd80bb functions.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/functions.r Fri Aug 13 18:17:38 2021 +0000 |
[ |
@@ -0,0 +1,22 @@ +#Rscript + +######################################################################################### +####################### Exploration data tools function ################################# +######################################################################################### +#### Based on Romain Lorrillière R script +#### Modified by Alan Amosse, Benjamin Yguel and Marie Jossé for integrating within Galaxy-E + +######################################### start of the function makeTableAnalyse +##Species are placed in separated columns and addition of zero on plots where at least one selected species is present +make_table_analyse <- function(data, var, spe, var2, var3) { + tab <- reshape(data + , v.names = var + , idvar = c(var2, var3) + , timevar = spe + , direction = "wide") + tab[is.na(tab)] <- 0 ###### remplace les na par des 0 / replace NAs by 0 + + colnames(tab) <- sub(paste0(var, "."), "", colnames(tab))### remplace le premier pattern "abond." par le second "" / replace the column names "abond." by "" + return(tab) +} +######################################### end of the function makeTableAnalyse |
b |
diff -r 000000000000 -r fb7b2cbd80bb graph_homogeneity_normality.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graph_homogeneity_normality.r Fri Aug 13 18:17:38 2021 +0000 |
[ |
@@ -0,0 +1,130 @@ +#Rscript + +####################################### +## Homogeneity and normality ## +####################################### + +#####Packages : car +# ggplot2 +# ggpubr +# Cowplot + +#####Load arguments + +args <- commandArgs(trailingOnly = TRUE) + +if (length(args) == 0) { + stop("This tool needs at least one argument") +}else{ + table <- args[1] + hr <- args[2] + date <- as.numeric(args[3]) + spe <- as.numeric(args[4]) + var <- as.numeric(args[5]) +} + +if (hr == "false") { + hr <- FALSE +}else{ + hr <- TRUE +} + +#####Import data +data <- read.table(table, sep = "\t", dec = ".", header = hr, fill = TRUE, encoding = "UTF-8") +data <- na.omit(data) +coldate <- colnames(data)[date] +colspe <- colnames(data)[spe] +colvar <- colnames(data)[var] + +#####Your analysis + +####Homogeneity of the variance#### + +##Test of Levene## +testlevene <- function(data, col1, col2) { + data[, col1] <- as.numeric(data[, col1]) + data[, col2] <- as.factor(data[, col2]) + tb_levene <- car::leveneTest(y = data[, col1], group = data[, col2]) + + return(tb_levene) + } +levene <- capture.output(testlevene(data = data, col1 = colvar, col2 = colspe)) + +cat("\nwrite table with levene test. \n--> \"", paste(levene, "\"\n", sep = ""), file = "levene.txt", sep = "", append = TRUE) + +##Two boxplots to visualize it## + +homog_var <- function(data, col1, col2, col3, mult) { + data[, col1] <- as.factor(data[, col1]) + if (mult) { + for (spe in unique(data[, col2])) { + data_cut <- data[data[, col2] == spe, ] + graph_2 <- ggplot2::ggplot(data_cut, ggplot2::aes_string(x = col1, y = col3, color = col1)) + + ggplot2::geom_boxplot() + + ggplot2::theme(legend.position = "none", axis.text.x = ggplot2::element_text(angle = 90, vjust = 0.5, hjust = 1), panel.background = ggplot2::element_rect(fill = "#d9d4c5", colour = "#d9d4c5", linetype = "solid"), + panel.grid.major = ggplot2::element_line(linetype = "solid", colour = "white"), + panel.grid.minor = ggplot2::element_line(linetype = "solid", colour = "white")) + + ggplot2::ggsave(paste("Homogeneity_of_", spe, ".png"), graph_2, width = 16, height = 9, units = "cm") + } + }else{ + graph_1 <- ggplot2::ggplot(data, ggplot2::aes_string(x = col1, y = col3, color = col1)) + + ggplot2::geom_boxplot() + + ggplot2::theme(legend.position = "none", axis.text.x = ggplot2::element_text(angle = 90, vjust = 0.5, hjust = 1)) + + #Put multiple panels + graph_2 <- graph_1 + ggplot2::facet_grid(rows = ggplot2::vars(data[, col2]), scales = "free") + + ggplot2::theme(panel.background = ggplot2::element_rect(fill = "#d9d4c5", colour = "#d9d4c5", linetype = "solid"), + panel.grid.major = ggplot2::element_line(linetype = "solid", colour = "white"), + panel.grid.minor = ggplot2::element_line(linetype = "solid", colour = "white")) + + ggplot2::ggsave("Homogeneity.png", graph_2, width = 16, height = 9, units = "cm") + } +} + +####Normality of the distribution#### +# Kolmogorov-Smirnov test + +ks <- capture.output(ks.test(x = data[, var], y = "pnorm", alternative = "two.sided")) + +cat("\nwrite table with Kolmogorov-Smirnov test. \n--> \"", paste(ks, "\"\n", sep = ""), file = "ks.txt", sep = "", append = TRUE) + +#Histogramm with distribution line +graph_hist <- function(data, var1) { + graph_hist <- ggplot2::ggplot(data) + + ggplot2::geom_histogram(ggplot2::aes_string(x = var1), binwidth = 2, color = "black", fill = "white") + + ggplot2::geom_density(ggplot2::aes_string(var1), alpha = 0.12, fill = "red") + + ggplot2::ggtitle("Distribution histogram") + +return(graph_hist) +} + +#Add the mean dashed line +add_mean <- function(graph, var1) { + graph_mean <- graph + ggplot2::geom_vline(xintercept = mean(data[, var1]), + color = "midnightblue", linetype = "dashed", size = 1) + +return(graph_mean) +} + +#Adding a QQplot +graph_qqplot <- function(data, var1) { + graph2 <- ggpubr::ggqqplot(data, var1, color = "midnightblue") + ggplot2::ggtitle("Q-Q plot") + +return(graph2) +} + +#On suppose que les données sont distribuées normalement lorsque les points suivent approximativement la ligne de référence à 45 degrés. + +graph_fin <- function(graph1, graph2) { + graph <- cowplot::plot_grid(graph1, graph2, ncol = 2, nrow = 1) + + ggplot2::ggsave("Normal_distribution.png", graph, width = 10, height = 7, units = "cm") +} + +mult <- ifelse(length(unique(data[, colspe])) == 2, FALSE, TRUE) +homog_var(data, col1 = coldate, col2 = colspe, col3 = colvar, mult = mult) + +graph_hist1 <- graph_hist(data, var1 = colvar) +graph_mean <- add_mean(graph = graph_hist1, var1 = colvar) +graph_fin(graph1 = graph_mean, graph2 = graph_qqplot(data, var1 = colvar)) |
b |
diff -r 000000000000 -r fb7b2cbd80bb graph_lcbd.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graph_lcbd.r Fri Aug 13 18:17:38 2021 +0000 |
[ |
b'@@ -0,0 +1,225 @@\n+#Rscript\n+\n+#########################\n+## Beta diversity ##\n+#########################\n+\n+#####Packages : ggplot2\n+# vegan\n+# adespatial\n+# dplyr\n+# tibble\n+# tdyr\n+\n+#####Load arguments\n+\n+args <- commandArgs(trailingOnly = TRUE)\n+\n+if (length(args) < 2) {\n+ stop("This tool needs at least 2 arguments")\n+}else{\n+ table <- args[1]\n+ hr <- args[2]\n+ abund <- as.numeric(args[3])\n+ loc <- as.numeric(args[4])\n+ spe <- as.numeric(args[5])\n+ date <- as.numeric(args[6])\n+ map <- as.logical(args[7])\n+ sepa <- as.logical(args[8])\n+ not <- as.logical(args[9])\n+ lat <- as.numeric(args[10])\n+ long <- as.numeric(args[11])\n+ var <- as.numeric(args[12])\n+ source(args[13])\n+}\n+\n+if (hr == "false") {\n+ hr <- FALSE\n+}else{\n+ hr <- TRUE\n+}\n+\n+#####Import data\n+data <- read.table(table, sep = "\\t", dec = ".", header = hr, fill = TRUE, encoding = "UTF-8")\n+colabund <- colnames(data)[abund]\n+colloc <- colnames(data)[loc]\n+if (map) {\n+ collat <- colnames(data)[lat]\n+ collong <- colnames(data)[long]\n+}\n+colspe <- colnames(data)[spe]\n+coldate <- colnames(data)[date]\n+data[, coldate] <- as.factor(data[, coldate])\n+\n+data <- data[grep("^$", data[, spe], invert = TRUE), ]\n+\n+if (sepa) {\n+colvar <- colnames(data)[var]\n+}\n+\n+# Data for species\n+data_num <- make_table_analyse(data, colabund, colspe, colloc, coldate)\n+nb_spe <- length(unique(data[, spe]))\n+nb_col <- ncol(data_num) - nb_spe + 1\n+\n+#Data with coordinates and environmental\n+if (map) {\n+ data_xy <- data_num[, c(collat, collong)]\n+ colnames(data_xy) <- c("latitude", "longitude")\n+ # Data for environment\n+ data_env <- data_num[, c(colloc, collat, collong)]\n+ colnames(data_env) <- c("site", "latitude", "longitude")\n+}\n+\n+# Data with only species and their abundance\n+data_spe <- data_num[, nb_col:ncol(data_num)]\n+rownames(data_spe) <- paste0(data_num[, colloc], " - ", data_num[, coldate])\n+\n+#####Your analysis\n+\n+# Computation beta.div {adespatial}\n+# Beta.div on Hellinger-transformed species data\n+data_beta <- adespatial::beta.div(data_spe, method = "hellinger", nperm = 9999)\n+\n+save(data_beta, file = "beta_diversity.Rdata")\n+cat("##############################################################################",\n+ "\\n########################### Beta Diversity Summary ###########################",\n+ "\\n##############################################################################",\n+ "\\n\\n### All data ###",\n+ "\\nBeta diversity: ", data_beta$beta[[2]],\n+ "\\nSum of Squares: ", data_beta$beta[[1]],\n+ "\\n\\n### Vector of Local Contributions to Beta Diversity (LCBD) for the sites each date ###",\n+ "\\n", capture.output(data_beta$LCBD),\n+ "\\n\\n### Vector of P-values associated with the LCBD indices ###",\n+ "\\n", capture.output(data_beta$p.LCBD),\n+ "\\n\\n### Vector of Corrected P-values for the LCBD indices, Holm correction ###",\n+ "\\n", capture.output(data_beta$p.adj),\n+ "\\n\\n### Vector of Species contributions to beta diversity (SCBD) ###",\n+ "\\n", capture.output(data_beta$SCBD), file = "LCBD.txt", fill = 1, append = TRUE)\n+\n+# Which species have a SCBD larger than the mean SCBD?\n+scbd <- capture.output(data_beta$SCBD[data_beta$SCBD >= mean(data_beta$SCBD)])\n+write(scbd, "SCBD.txt")\n+\n+##1st fonction\n+beta_div_ext <- function(data_beta, data_xy, data_env) {\n+ data_beta_ext <- data.frame(data_xy, data_env, LCBD = data_beta$LCBD * 100, p.LCBD = data_beta$p.LCBD, signif = data_beta$p.LCBD < 0.05)\n+\n+ graph_beta_ext <- ggplot2::ggplot(data = data_beta_ext, ggplot2::aes(x = latitude, y = longitude, size = LCBD, col = signif)) +\n+ ggplot2::geom_point() +\n+ ggplot2::scale_colour_manual(values = c("#57bce0", "#ce0b0b"), labels = c("Non significant", "Significant"), name = "Significance at 0.05") +\n+ ggplot2::xlab("Longitude") + ggplot2::ylab("Latitude")\n+\n+ ggplot2::ggsave("Beta_diversity_through_space.png", graph_beta_ext)\n+}\n+\n'..b'###\n+\n+####LCBD####\n+lcbd_site <- adespatial::beta.div(data_spe, "hellinger", nperm = 999)\n+\n+compute_lcbd <- function(data_beta, data_spe, data_num) {\n+\n+#############\n+ mat_lcbd_site <- data.frame(data_spe, LCBD = data_beta$LCBD * 100, p.LCBD = data_beta$p.LCBD, signif = data_beta$p.LCBD < 0.05, site = data_num[, colloc], date = data_num[, coldate])\n+\n+## Map spatio-temp\n+##################\n+ p1 <- ggplot2::qplot(date, site, size = LCBD, col = signif, data = mat_lcbd_site)\n+ p1 <- p1 + ggplot2::scale_colour_manual(values = c("#57bce0", "#ce0b0b"), labels = c("Non significant", "Significant"), name = "Significance at 0.05")\n+ p1 <- p1 + ggplot2::theme_bw() + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 90)) + ggplot2::xlab("Date") + ggplot2::ylab("Site")\n+\n+ ggplot2::ggsave("LCBD_sites_time.png", p1)\n+\n+\n+## Par ann\xc3\xa9es\n+#############\n+ mean_time <- tapply(mat_lcbd_site$LCBD, mat_lcbd_site$date, mean)\n+ sd_time <- tapply(mat_lcbd_site$LCBD, mat_lcbd_site$date, sd)\n+ date <- unique(mat_lcbd_site$date)\n+\n+ data <- data.frame(date, mean_time, sd_time)\n+\n+ time <- ggplot2::ggplot() + ggplot2::geom_pointrange(ggplot2::aes(x = date, y = mean_time, ymin = mean_time - sd_time, ymax = mean_time + sd_time), data = data)\n+ time <- time + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 90), axis.line.y = ggplot2::element_line(size = 0.5)) + ggplot2::ylab("mean LCBD")\n+\n+ ggplot2::ggsave("Mean_LCBD_through_time.png", time)\n+}\n+\n+## Choose another graph\n+#######################\n+compute_lcbd2 <- function(data_beta, data_spe, data_num) {\n+\n+#############\n+ mat_lcbd_site <- data.frame(data_spe, LCBD = data_beta$LCBD * 100, p.LCBD = data_beta$p.LCBD, signif = data_beta$p.LCBD < 0.05, site = data_num[, colloc], date = data_num[, coldate], variable = data_num[, colvar])\n+\n+ p1 <- ggplot2::qplot(date, variable, size = LCBD, col = signif, data = mat_lcbd_site)\n+ p1 <- p1 + ggplot2::scale_colour_manual(values = c("#57bce0", "#ce0b0b"), labels = c("Non significant", "Significant"), name = "Significance at 0.05")\n+ p1 <- p1 + ggplot2::theme_bw() + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 90)) + ggplot2::xlab("Date") + ggplot2::ylab(colvar)\n+\n+ ggplot2::ggsave(paste0("LCBD_per_", colvar, "_through_time.png"), p1)\n+}\n+\n+####SCBD###\n+# Function to compute SCBD\n+library(dplyr)\n+make_scbd_uvc <- function(data_spe, z, data_beta) {\n+ # Computation using beta.div {adespatial} on\n+ # Hellinger-transformed species data\n+\n+ # Which species have a SCBD larger than the mean SCBD?\n+ spe_scbd <- data_beta$SCBD[data_beta$SCBD >= mean(data_beta$SCBD)] %>%\n+ as.data.frame() %>%\n+ tibble::rownames_to_column(var = "Taxon") %>%\n+ dplyr::mutate("Methode" = z)\n+\n+ return(spe_scbd)\n+}\n+\n+# Function to make a radar plot\n+\n+coord_radar <- function(theta = "x", start = 0, direction = 1) {\n+ theta <- match.arg(theta, c("x", "y"))\n+ r <- if (theta == "x") "y" else "x"\n+ ggplot2::ggproto("CordRadar", ggplot2::coord_polar(theta = theta, start = start,\n+ direction = sign(direction)),\n+ is_linear = function(coord) TRUE)\n+}\n+\n+# Make the radar plot\n+radar_plot <- function(scbd_uvc_tc) {\n+ uvc_rd_plot_data <- scbd_uvc_tc %>%\n+ rename(scbd_score = ".")\n+\n+ rad_uvc <- ggplot2::ggplot(uvc_rd_plot_data, ggplot2::aes(x = Taxon, y = scbd_score, group = Methode)) +\n+ ggplot2::geom_line() +\n+ ggplot2::geom_point(size = 3) +\n+ coord_radar() +\n+ ggplot2::theme_bw() +\n+ ggplot2::theme(axis.text.x = ggplot2::element_text(size = 10),\n+ legend.position = "bottom")\n+\n+ ggplot2::ggsave("SCBD_Species_Radar_plot.png", rad_uvc)\n+}\n+\n+## LCBD\n+\n+if (map) {\n+ #Beta diversity\n+ beta_div_ext(data_beta, data_xy, data_env)\n+}\n+\n+#Lcbd per places and time\n+compute_lcbd(data_beta, data_spe, data_num)\n+\n+#Lcbd of your choice\n+if (sepa) {\n+ compute_lcbd2(data_beta, data_spe, data_num)\n+}\n+\n+##SCBD\n+\n+scbd_uvc_tc <- make_scbd_uvc(data_spe, z = "TC", data_beta)\n+\n+radar_plot(scbd_uvc_tc)\n' |
b |
diff -r 000000000000 -r fb7b2cbd80bb graph_link_var.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graph_link_var.r Fri Aug 13 18:17:38 2021 +0000 |
[ |
b'@@ -0,0 +1,296 @@\n+#Rscript\r\n+\r\n+################################################\r\n+## Link between variables and themselves ##\r\n+################################################\r\n+\r\n+#####Packages : ggplot2\r\n+# Cowplot\r\n+# Car\r\n+# faraway\r\n+# dplyr\r\n+# GGally\r\n+# FactoMiner\r\n+# factoextra\r\n+# ggcorrplot\r\n+\r\n+#####Load arguments\r\n+\r\n+args <- commandArgs(trailingOnly = TRUE)\r\n+\r\n+if (length(args) == 0) {\r\n+ stop("This tool needs at least one argument")\r\n+}else{\r\n+ table <- args[1]\r\n+ hr <- args[2]\r\n+ colli <- as.logical(args[3])\r\n+ vif <- as.logical(args[4])\r\n+ pca <- as.logical(args[5])\r\n+ interr <- as.logical(args[6])\r\n+ auto <- as.logical(args[7])\r\n+ spe <- as.numeric(args[8])\r\n+ col <- as.numeric(strsplit(args[9], ",")[[1]])\r\n+ var <- as.numeric(args[10])\r\n+ var2 <- as.numeric(args[11])\r\n+ var4 <- as.numeric(args[12])\r\n+}\r\n+\r\n+if (hr == "false") {\r\n+ hr <- FALSE\r\n+}else{\r\n+ hr <- TRUE\r\n+}\r\n+\r\n+if (length(col) == 1) {\r\n+stop("Please select two or more numerical columns")\r\n+}\r\n+\r\n+#####Import data\r\n+data <- read.table(table, sep = "\\t", dec = ".", header = hr, fill = TRUE, encoding = "UTF-8")\r\n+if (vif | pca) {\r\n+data_active <- data[col]\r\n+#Define the active individuals and the active variables for the PCA\r\n+}\r\n+\r\n+if (colli | interr) {\r\n+colspe <- colnames(data)[spe]\r\n+}\r\n+\r\n+if (colli) {\r\n+data_num <- data[col]\r\n+data_num$species <- data[, spe]\r\n+data_num <- data_num[grep("^$", data_num$spe, invert = TRUE), ]\r\n+}\r\n+\r\n+if (interr | auto) {\r\n+colvar <- colnames(data)[var]\r\n+}\r\n+\r\n+if (interr) {\r\n+colvar2 <- colnames(data)[var2]\r\n+colvar4 <- colnames(data)[var4]\r\n+}\r\n+\r\n+#####Your analysis\r\n+\r\n+####Independence of the observations####\r\n+\r\n+acf_tb <- function(data, var) {\r\n+obj <- acf(data[, var], na.action = na.pass)\r\n+ return(obj)\r\n+}\r\n+\r\n+acf_df <- function(data, var) {\r\n+\r\n+tb <- data.frame(acf = acf_tb(data, var)$acf, lag = acf_tb(data, var)$lag)\r\n+\r\n+ return(tb) # Lag: intervalle temporel entre mesures, fr\xc3\xa9quence \xc3\xa0 laquelle on mesure l\'auto corr\xc3\xa9lation.\r\n+# ACF: ind\xc3\xa9pendance temporelle\r\n+}\r\n+\r\n+autocorr <- function(var1, var2) {\r\n+ cat("\\nACF\\n", var2$acf, file = "acf.txt", fill = 1, append = TRUE)\r\n+ graph <- ggplot2::ggplot() +\r\n+ ggplot2::geom_bar(ggplot2::aes(x = var2$lag, y = var2$acf), stat = "identity", position = "identity", fill = "midnightblue") +\r\n+ ggplot2::geom_hline(mapping = ggplot2::aes(yintercept = qnorm((1 + 0.95) / 2) / sqrt(var1$n.used)),\r\n+ linetype = "dashed") + # calcul interval de confiance \xc3\xa0 95% sans correction du bruit blanc.\r\n+ ggplot2::geom_hline(mapping = ggplot2::aes(yintercept = -qnorm((1 + 0.95) / 2) / sqrt(var1$n.used)), linetype = "dashed") + ggplot2::labs(title = "Autocorrelation") + ggplot2::xlab("lag") + ggplot2::ylab("acf")\r\n+ ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5))\r\n+\r\n+ ggplot2::ggsave("autocorrelation.png", graph)\r\n+}\r\n+\r\n+####Interractions####\r\n+\r\n+graph <- function(data, var1, var2, var3) {\r\n+ graph <- ggplot2::ggplot(data, ggplot2::aes_string(x = var1, y = var2, group = var3, color = var3)) +\r\n+ ggplot2::geom_point() +\r\n+ ggplot2::geom_smooth(method = lm, se = FALSE) +\r\n+ ggplot2::theme(plot.title = ggplot2::element_text(color = "black", size = 12, face = "bold"))\r\n+\r\n+return(graph)\r\n+}\r\n+\r\n+# Put multiple panels\r\n+interraction <- function(data, var1, var2, var3, var4) {\r\n+ cat("\\nSpecies\\n", spe, file = "Species.txt", fill = 1, append = TRUE)\r\n+ if (mult1) {\r\n+ for (spe in unique(data[, var3])) {\r\n+ data_cut <- data[data[, var3] == spe, ]\r\n+ mult_graph <- graph(data_cut, var1, var2, var3) + ggplot2::facet_grid(cols = ggplot2::vars(data_cut[, var4]), scales = "free") +\r\n+ cowplot::background_grid(major = "xy", minor = "none") +\r\n+ cowplot::panel_border() + ggplot2::ggtitle("Interactions")\r\n+\r\n+ ggplot2::ggsave(paste("interaction_of_", spe'..b'+}\r\n+\r\n+####PCA method####\r\n+\r\n+plot_pca <- function(data) {\r\n+ #Correlation circle\r\n+ graph_corr <- factoextra::fviz_pca_var(active_data(data), col.var = "cos2",\r\n+ gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),\r\n+ repel = TRUE #Avoid text overlap\r\n+ )\r\n+ ggplot2::ggsave("Pca_circle.png", graph_corr)\r\n+}\r\n+\r\n+plot_qual <- function(data) {\r\n+ #PCA results for variables\r\n+ var <- factoextra::get_pca_var(active_data(data))\r\n+\r\n+ #representation quality\r\n+ graph_quality <- ggcorrplot::ggcorrplot(var$cos2[!apply(var$cos2, 1, anyNA), ], method = "circle",\r\n+ ggtheme = ggplot2::theme_gray,\r\n+ colors = c("#00AFBB", "#E7B800", "#FC4E07"))\r\n+\r\n+ ggplot2::ggsave("Pca_quality.png", graph_quality)\r\n+}\r\n+\r\n+#### Variance inflation factor ####\r\n+\r\n+myvif <- function(mod) {\r\n+ v <- vcov(mod)\r\n+ assign <- attributes(model.matrix(mod))$assign\r\n+ if (names(coefficients(mod)[1]) == "(Intercept)") {\r\n+ v <- v[-1, -1]\r\n+ assign <- assign[-1]\r\n+ } else warning("No intercept: vifs may not be sensible.")\r\n+ terms <- labels(terms(mod))\r\n+ n_terms <- length(terms)\r\n+ if (n_terms < 2) stop("The model contains fewer than 2 terms")\r\n+ if (length(assign) > dim(v)[1]) {\r\n+ diag(tmp_cor) <- 0\r\n+ if (any(tmp_cor == 1.0)) {\r\n+ return("Sample size is too small, 100% collinearity is present")\r\n+ } else {\r\n+ return("Sample size is too small")\r\n+ }\r\n+ }\r\n+ r <- cov2cor(v)\r\n+ detr <- det(r)\r\n+ result <- matrix(0, n_terms, 3)\r\n+ rownames(result) <- terms\r\n+ colnames(result) <- c("GVIF", "Df", "GVIF^(1/2Df)")\r\n+ for (term in 1:n_terms) {\r\n+ subs <- which(assign == term)\r\n+ result[term, 1] <- det(as.matrix(r[subs, subs])) * det(as.matrix(r[-subs, -subs])) / detr\r\n+ result[term, 2] <- length(subs)\r\n+ }\r\n+ if (all(result[, 2] == 1)) {\r\n+ result <- data.frame(GVIF = result[, 1])\r\n+ } else {\r\n+ result[, 3] <- result[, 1] ^ (1 / (2 * result[, 2]))\r\n+ }\r\n+ invisible(result)\r\n+}\r\n+corvif1 <- function(dataz) {\r\n+ dataz <- as.data.frame(dataz)\r\n+ #correlation part\r\n+ tmp_cor <- cor(dataz, use = "complete.obs")\r\n+ return(tmp_cor)\r\n+}\r\n+corvif2 <- function(dataz) {\r\n+ dataz <- as.data.frame(dataz)\r\n+ #vif part\r\n+ form <- formula(paste("fooy ~ ", paste(strsplit(names(dataz), " "), collapse = " + ")))\r\n+ dataz <- data.frame(fooy = 1, dataz)\r\n+ lm_mod <- lm(form, dataz)\r\n+\r\n+ return(myvif(lm_mod))\r\n+}\r\n+\r\n+#Autocorrelation\r\n+if (auto) {\r\n+obj1 <- acf_tb(data, var = colvar)\r\n+obj2 <- acf_df(data, var = colvar)\r\n+autocorr(var1 = obj1, var2 = obj2)\r\n+}\r\n+\r\n+if (interr) {\r\n+#Interractions\r\n+mult1 <- ifelse(length(unique(data[, colspe])) <= 6, FALSE, TRUE)\r\n+interraction(data, var1 = colvar, var2 = colvar2, var3 = colspe, var4 = colvar4)\r\n+}\r\n+\r\n+#Collinearity\r\n+if (colli) {\r\n+mult2 <- ifelse(length(unique(data[, spe])) < 3, FALSE, TRUE)\r\n+coli(data = data_num, var = spe)\r\n+}\r\n+\r\n+#PCA\r\n+if (pca) {\r\n+active_data <- function(data) {\r\n+ #Calcul of PCA for the active data\r\n+ res_pca <- FactoMineR::PCA(data, graph = FALSE)\r\n+\r\n+return(res_pca)\r\n+}\r\n+\r\n+#eigenvalue\r\n+eig_val <- capture.output(factoextra::get_eigenvalue(active_data(data_active)))\r\n+\r\n+cat("\\nwrite table with eigenvalue. \\n--> \\"", paste(eig_val, "\\"\\n", sep = ""), file = "valeurs.txt", sep = "", append = TRUE)\r\n+\r\n+plot_pca(data_active)\r\n+plot_qual(data_active)\r\n+}\r\n+\r\n+#VIF\r\n+if (vif) {\r\n+#Compute 2 tables#\r\n+tb_corr <- as.data.frame(corvif1(dataz = data_active))\r\n+tb_corr <- cbind(x = rownames(tb_corr), tb_corr)\r\n+tb_vif <- corvif2(dataz = data_active)\r\n+\r\n+write.table(tb_corr, "corr.tabular", row.names = FALSE, quote = FALSE, sep = "\\t", dec = ".", fileEncoding = "UTF-8")\r\n+\r\n+if (all(is.na(tb_vif))) {\r\n+ tb_vif <- NULL\r\n+ cat("Vif couldn\'t be calculated, selected data isn\'t correlated")\r\n+}else{\r\n+write.table(tb_vif, "vif.tabular", row.names = FALSE, quote = FALSE, sep = "\\t", dec = ".", fileEncoding = "UTF-8")\r\n+}\r\n+}\r\n' |
b |
diff -r 000000000000 -r fb7b2cbd80bb graph_pres_abs_abund.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graph_pres_abs_abund.r Fri Aug 13 18:17:38 2021 +0000 |
[ |
@@ -0,0 +1,195 @@ +#Rscript + +######################################################### +## Presence abscence and abundance in environment ## +######################################################### + +#####Packages : ggplot2 +# vegan + +#####Load arguments + +args <- commandArgs(trailingOnly = TRUE) + +if (length(args) < 5) { + stop("This tool needs at least 5 arguments") +}else{ + table <- args[1] + hr <- args[2] + abundance <- as.logical(args[3]) + presabs <- as.logical(args[4]) + rarefaction <- as.logical(args[5]) + lat <- as.numeric(args[6]) + long <- as.numeric(args[7]) + ind <- as.character(args[8]) + loc <- as.numeric(args[9]) + num <- as.character(args[10]) + spe <- as.numeric(args[11]) + abond <- as.numeric(args[12]) +} + +if (hr == "false") { + hr <- FALSE +}else{ + hr <- TRUE +} + +#####Import data +data <- read.table(table, sep = "\t", dec = ".", header = hr, fill = TRUE, encoding = "UTF-8") + +if (abundance) { +collat <- colnames(data)[lat] +collong <- colnames(data)[long] +} + +if (presabs) { +colloc <- colnames(data)[loc] +} + +if (presabs | rarefaction | abundance) { +colabond <- colnames(data)[abond] +colspe <- colnames(data)[spe] +data <- data[grep("^$", data[, colspe], invert = TRUE), ] +} + +#####Your analysis + +####The abundance in the environment#### + +##Representation of the environment## + +## Mapping +graph_map <- function(data, collong, collat, colabond, ind, colspe) { + cat("\nCoordinates range\n\nLatitude from ", min(data[, collat], na.rm = TRUE), " to ", max(data[, collat], na.rm = TRUE), "\nLongitude from ", min(data[, collong], na.rm = TRUE), " to ", max(data[, collong], na.rm = TRUE), file = "Data_abund.txt", fill = 1, append = TRUE) + if (mult0) { + mappy <- ggplot2::ggplot(data, ggplot2::aes_string(x = collong, y = collat, cex = colabond, color = colspe)) + + ggplot2::geom_point() + ggplot2::ggtitle(paste("Abundance of", ind, "in the environment")) + ggplot2::xlab("Longitude") + ggplot2::ylab("Latitude") + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 90, vjust = 0.5, hjust = 1), legend.text = ggplot2::element_text(size = 8)) + ggplot2::guides(cex = ggplot2::guide_legend(reverse = TRUE)) + + }else{ + mappy <- ggplot2::ggplot(data, ggplot2::aes_string(x = collong, y = collat, cex = colabond, color = colabond)) + + ggplot2::geom_point() + ggplot2::ggtitle(paste("Abundance of", ind, "in the environment")) + ggplot2::xlab("Longitude") + ggplot2::ylab("Latitude") + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 90, vjust = 0.5, hjust = 1), legend.text = ggplot2::element_text(size = 8)) + ggplot2::guides(cex = ggplot2::guide_legend(reverse = TRUE)) + } + ggplot2::ggsave("mappy.png", mappy, width = 20, height = 9, units = "cm") +} + +####Presence absence abundance#### + +## Histogram +graph_hist <- function(data, col1, col2, col3) { + cat("\nLocations\n", unique(data[, col1]), file = "Locations.txt", fill = 1, append = TRUE) + if (mult1) { + for (loc in unique(data[, col1])) { + data_cut <- data[data[, col1] == loc, ] + data_cut <- data_cut[data_cut[, col3] > 0, ] + if (length(unique(data_cut[, col2])) <= 40) { + top <- nrow(data_cut) + var <- nchar(as.character(round(top * 0.1, digits = 0))) + step <- round(top * 0.1, digits = ifelse(var == 1, 1, -var + 1)) + graph <- ggplot2::ggplot(data_cut) + + ggplot2::geom_bar(ggplot2::aes_string(x = col1, fill = col2)) + + ggplot2::scale_y_continuous(breaks = seq(from = 0, to = top, by = step)) + + ggplot2::theme(plot.title = ggplot2::element_text(color = "black", size = 12, face = "bold")) + + ggplot2::ggtitle("Number of presence") + + ggplot2::ggsave(paste("number_in_", loc, ".png"), graph) + }else{ + cat(paste0("\n", loc, " had more than 40 species and plot isn't readable please select a higher taxon level or cut your data")) + } + } + }else{ + top <- nrow(data) + var <- nchar(as.character(round(top * 0.1, digits = 0))) + step <- round(top * 0.1, digits = ifelse(var == 1, 1, -var + 1)) + graph <- ggplot2::ggplot(data) + + ggplot2::geom_bar(ggplot2::aes_string(x = col1, fill = col2)) + + ggplot2::scale_y_continuous(breaks = seq(from = 0, to = top, by = step)) + + ggplot2::theme(plot.title = ggplot2::element_text(color = "black", size = 12, face = "bold")) + + ggplot2::ggtitle("Number of individuals") + + ggplot2::ggsave("number.png", graph) + } +} + +rare <- function(data, spe, abond, rare, num) { +# Put the data in form + new_data <- as.data.frame(data[, spe]) + colnames(new_data) <- c("Species") + new_data$total <- data[, abond] + + new_data$rarefaction <- as.integer(rare) + + end <- length(unique(new_data$Species)) + out <- vegan::rarecurve(new_data[, 2:3], step = 10, sample = rarefy_sample, label = FALSE) + names(out) <- paste(unique(new_data$Species), sep = "") + +# Coerce data into "long" form. + protox <- mapply(FUN = function(x, y) { + mydf <- as.data.frame(x) + colnames(mydf) <- "value" + mydf$species <- y + mydf$subsample <- attr(x, "Subsample") + mydf <- na.omit(mydf) + mydf + }, x = out, y = as.list(names(out)), SIMPLIFY = FALSE) + + xy <- do.call(rbind, protox) + rownames(xy) <- NULL # pretty + +# Plot. + + if (mult2) { + for (spe in unique(data[, spe])) { + xy_cut <- xy[xy$species == spe, ] + top <- max(xy_cut$subsample) + var <- nchar(as.character(round(top * 0.1, digits = 0))) + step <- round(top * 0.1, digits = ifelse(var == 1, 1, -var + 1)) + courbe <- ggplot2::ggplot(xy_cut, ggplot2::aes(x = subsample, y = value)) + + ggplot2::theme_gray() + + ggplot2::geom_line(size = 1) + + ggplot2::scale_x_continuous(breaks = seq(from = 0, to = top, by = step)) + + ggplot2::xlab("Abundance") + ggplot2::ylab("Value") + + ggplot2::ggtitle("rarefaction curve") + + ggplot2::ggsave(paste("rarefaction_of_", spe, ".png"), courbe) + } + }else{ + top <- max(xy$subsample) + var <- nchar(as.character(round(top * 0.1, digits = 0))) + step <- round(top * 0.1, digits = ifelse(var == 1, 1, -var + 1)) + courbe <- ggplot2::ggplot(xy, ggplot2::aes(x = subsample, y = value, color = species)) + + ggplot2::theme_gray() + + ggplot2::geom_line(size = 1) + + ggplot2::scale_x_continuous(breaks = seq(from = 0, to = top, by = step)) + + ggplot2::xlab("Subsample") + ggplot2::ylab("Value") + + ggplot2::ggtitle("rarefaction curves") + + ggplot2::ggsave("rarefaction.png", courbe) + } +} + +if (abundance) { +#Maps +mult0 <- ifelse(length(unique(data[, colspe])) > 10, FALSE, TRUE) +graph_map(data, collong = collong, collat = collat, colabond = colabond, ind = ind, colspe = colspe) +} + +if (presabs) { +#Presence absence count +mult1 <- ifelse(length(unique(data[, colloc])) <= 10, FALSE, TRUE) +graph_hist(data, col1 = colloc, col2 = colspe, col3 = colabond) +} + +if (rarefaction) { +#rarefaction + +#### rarefaction indice #### +rarefy_sample <- as.numeric(num) + +## Calcul de la rarefaction +rarefaction <- vegan::rarefy(data[, abond], rarefy_sample) + +write.table(rarefaction, "rare.tabular") + +mult2 <- ifelse(length(unique(data[, colspe])) <= 30, FALSE, TRUE) +rare(data, spe = colspe, abond = colabond, rare = rarefaction, num = rarefy_sample) +} |
b |
diff -r 000000000000 -r fb7b2cbd80bb graph_stat_presence_abs.r --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graph_stat_presence_abs.r Fri Aug 13 18:17:38 2021 +0000 |
[ |
@@ -0,0 +1,105 @@ +#Rscript + +################################ +## Median and dispersion ## +################################ + +#####Packages : Cowplot +# ggplot2 + +#####Load arguments + +args <- commandArgs(trailingOnly = TRUE) + +if (length(args) == 0) { + stop("This tool needs at least one argument") +}else{ + table <- args[1] + hr <- args[2] + var <- as.numeric(args[3]) + spe <- as.numeric(args[4]) + loc <- as.numeric(args[5]) + time <- as.numeric(args[6]) + source(args[7]) +} + +if (hr == "false") { + hr <- FALSE +}else{ + hr <- TRUE +} + +#####Import data +data <- read.table(table, sep = "\t", dec = ".", header = hr, fill = TRUE, encoding = "UTF-8") +data <- na.omit(data) +colvar <- colnames(data)[var] +colspe <- colnames(data)[spe] +colloc <- colnames(data)[loc] +coltime <- colnames(data)[time] + +data <- data[grep("^$", data[, spe], invert = TRUE), ] + +#####Your analysis + +####Median and data dispersion#### + +#Median +graph_median <- function(data, var) { + graph_median <- ggplot2::ggplot(data, ggplot2::aes_string(y = var)) + + ggplot2::geom_boxplot(color = "darkblue") + + ggplot2::theme(legend.position = "none") + ggplot2::ggtitle("Median") + +return(graph_median) + +} + +#Dispersion +dispersion <- function(data, var, var2) { + graph_dispersion <- ggplot2::ggplot(data) + + ggplot2::geom_point(ggplot2::aes_string(x = var2, y = var, color = var2)) + + ggplot2::scale_fill_brewer(palette = "Set3") + + ggplot2::theme(legend.position = "none", axis.text.x = ggplot2::element_text(angle = 90, vjust = 0.5, hjust = 1), plot.title = ggplot2::element_text(color = "black", size = 12, face = "bold")) + ggplot2::ggtitle("Dispersion") + +return(graph_dispersion) + +} + +#The 2 graph +med_disp <- function(med, disp) { + graph <- cowplot::plot_grid(med, disp, ncol = 1, nrow = 2, vjust = -5, scales = "free") + + ggplot2::ggsave("Med_Disp.png", graph, width = 12, height = 20, units = "cm") +} + + +#### Zero problem in data #### + +#Put data in form + +data_num <- make_table_analyse(data, colvar, colspe, colloc, coltime) +nb_spe <- length(unique(data[, spe])) +nb_col <- ncol(data_num) - nb_spe + 1 +data_num <- data_num[, nb_col:ncol(data_num)] + +#Presence of zeros in the data +mat_corr <- function(data) { + cor(data) +} +p_mat <- function(data) { + ggcorrplot::cor_pmat(data) +} # compute a matrix of correlation p-values + +graph_corr <- function(data_num) { + graph <- ggcorrplot::ggcorrplot(mat_corr(data_num), method = "circle", p.mat = p_mat(data_num), #barring the no significant coefficient + ggtheme = ggplot2::theme_gray, colors = c("#00AFBB", "#E7B800", "#FC4E07")) + + ggplot2::ggsave("0_pb.png", graph) +} + +##Med and disp +med <- graph_median(data, var = colvar) +disp <- dispersion(data, var = colvar, var2 = colspe) +med_disp(med = med, disp = disp) + +##O problem +graph_corr(data_num) |
b |
diff -r 000000000000 -r fb7b2cbd80bb lcbd.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lcbd.xml Fri Aug 13 18:17:38 2021 +0000 |
[ |
b'@@ -0,0 +1,168 @@\n+<tool id="ecology_beta_diversity" name="Local Contributions to Beta Diversity (LCBD)" version="@VERSION@" profile="20.01">\r\n+ <description>Computes a measure of beta diversity, SCBD and representations</description>\r\n+ <macros>\r\n+ <import>macro.xml</import>\r\n+ </macros>\r\n+ <requirements> \r\n+ <requirement type="package" version="3.3.3">r-ggplot2</requirement>\r\n+ <requirement type="package" version="2.5_7">r-vegan</requirement>\r\n+ <requirement type="package" version="0.3_14">r-adespatial</requirement>\r\n+ <requirement type="package" version="3.1.3">r-tibble</requirement>\r\n+ <requirement type="package" version="1.0.7">r-dplyr</requirement>\r\n+ <requirement type="package" version="1.1.3">r-tidyr</requirement>\r\n+ </requirements>\r\n+ <command detect_errors="exit_code"><![CDATA[\r\n+ Rscript\r\n+ \'$__tool_directory__/graph_lcbd.r\'\r\n+ \'$input\'\r\n+ \'$colnames\'\r\n+ \'$abundance\'\r\n+ \'$location\'\r\n+ \'$species\'\r\n+ \'$date\'\r\n+ #if $method.type == \'Graph\':\r\n+ \'TRUE\'\r\n+ \'FALSE\'\r\n+ \'FALSE\'\r\n+ \'$method.latitude\'\r\n+ \'$method.longitude\'\r\n+ \'\'\r\n+ #elif $method.type == \'Separation\':\r\n+ \'FALSE\'\r\n+ \'TRUE\'\r\n+ \'FALSE\'\r\n+ \'\'\r\n+ \'\'\r\n+ \'$method.variable\'\r\n+ #elif $method.type == \'Nothing\':\r\n+ \'FALSE\'\r\n+ \'FALSE\'\r\n+ \'TRUE\'\r\n+ \'\'\r\n+ \'\'\r\n+ \'\'\r\n+ #end if\r\n+ \'$__tool_directory__/functions.r\'\r\n+ \'$output_lcbd\'\r\n+ \'$output_scbd\'\r\n+ \'$plots\'\r\n+ #if $rdata==\'true\'\r\n+ \'$output_beta\'\r\n+ #end if\r\n+ ]]>\r\n+ </command>\r\n+ <inputs>\r\n+ <expand macro="explo_input"/>\r\n+ <param name="abundance" label="Select column with abundances" type="data_column" data_ref="input" numerical="true" multiple="false" use_header_names="true"/>\r\n+ <param name="location" label="Select column with locations" type="data_column" data_ref="input" multiple="false" use_header_names="true"/>\r\n+ <param name="species" label="Select column containing taxon" type="data_column" data_ref="input" multiple="false" use_header_names="true"/>\r\n+ <param name="date" label="Select column containing dates" type="data_column" data_ref="input" multiple="false" use_header_names="true"/>\r\n+ <param name="rdata" type="boolean" checked="yes" label="Beta diversity object as .Rdata output ?"/>\r\n+ <conditional name="method">\r\n+ <param name="type" type="select" label="Other LCBD : spatialized representation or xy plot.">\r\n+ <option value="Nothing">Don\'t want to do another graph</option>\r\n+ <option value="Graph">Spatialized representation</option>\r\n+ <option value="Separation">Separation to construct a new lcbd graph</option>\r\n+ </param>\r\n+ <when value="Graph">\r\n+ <param name="latitude" label="Select column containing latitudes in decimal degrees" type="data_column" numerical="true" data_ref="input" multiple="false" use_header_names="true"/>\r\n+ <param name="longitude" label="Select column containing longitudes in decimal degrees" type="data_column" numerical="true" data_ref="input" multiple="false" use_header_names="true"/>\r\n+ </when>\r\n+ <when value="Separation">\r\n+ <param name="variable" type="data_column" data_ref="input" label="Select a column to make another graph according to the separation of the variable you choose" use_header_names="true"/>\r\n+ </when>\r\n+ <when value="Nothing"/>\r\n+ </conditional>\r\n+ </inputs>\r\n+ <outputs>\r\n+ <data name="out'..b'ssert_contents>\r\n+ <has_n_lines n="186"/>\r\n+ </assert_contents>\r\n+ </output>\r\n+ <output name="output_scbd" value="SCBD.txt"/>\r\n+ <output_collection name="plots" type="list" count="3">\r\n+ <element name="LCBD_sites_time" ftype="png">\r\n+ <assert_contents>\r\n+ <has_text text="PNG"/>\r\n+ </assert_contents>\r\n+ </element>\r\n+ <element name="Mean_LCBD_through_time" ftype="png">\r\n+ <assert_contents>\r\n+ <has_text text="PNG"/>\r\n+ </assert_contents>\r\n+ </element>\r\n+ <element name="SCBD_Species_Radar_plot" ftype="png">\r\n+ <assert_contents>\r\n+ <has_text text="PNG"/>\r\n+ </assert_contents>\r\n+ </element>\r\n+ </output_collection>\r\n+ </test>\r\n+ </tests>\r\n+ <expand macro="topic"/> \r\n+ <help><![CDATA[\r\n+=======================================================================================\r\n+Computes measures of beta diversity : Species and Local Contributions to Beta Diversity \r\n+=======================================================================================\r\n+\r\n+**What it does**\r\n+\r\n+This tool computes Species and Local Contributions to Beta Diversity (SCBD and LCBD) with Hellinger method and 9999 permutations from a species occurence file :\r\n+\r\n+- **Creates two text files** : LCBD comparative indicators of the ecological uniqueness of the sites and SCBD degree of variation for individual species across the study area. The LCBD represents the degree of uniqueness of the sites in their taxonomic compositions. The "Beta diversity" value represents the total LCBD, hence if it equals 1, there is no taxon in common in sites, each site is entirely unique and if it equals 0, each site is identical in terms of their taxon composition.\r\n+\r\n+- 3, 4 or 5 plots according to what you choose : \r\n+ - A plot representing LCBD repartition according to sites and date ; \xe2\x9a\xa0\xef\xb8\x8f hard to read over 40 dates and/or 70 sites\r\n+ - A plot representing mean LCDB and confidence intervals for each date ; \xe2\x9a\xa0\xef\xb8\x8f hard to read over 40 dates\r\n+ - A radar plot representing SCDB for each taxon ; \xe2\x9a\xa0\xef\xb8\x8f hard to read over 80 taxons but every taxon is alphabetically classified clockwise on the radar plot so it should be easy to find the correspondance over this number\r\n+ - If you choose to get a spatialized representation, a map of LCBD values according to longitudes and latitudes ;\r\n+ - If you choose to get an additional LCBD representation, a plot of LCBD values through time for each values of the separation factor you chose. \xe2\x9a\xa0\xef\xb8\x8f hard to read over 40 dates and/or 70 levels\r\n+\r\n+\r\n+**Input description**\r\n+\r\n+A tabular file with observation data. Must at least contain four columns\r\n+which associate abundance, sites, dates and species ID.\r\n+\r\n++------------+-----------+--------------+------------+\r\n+| abundance | dates | species.code | site |\r\n++============+===========+==============+============+\r\n+| 2 | 2014 | speciesID | |\r\n++------------+-----------+--------------+------------+\r\n+| ... | ... | ... | ... |\r\n++------------+-----------+--------------+------------+\r\n+\r\n+If you choose to get a spatialized representation of the LCBD, you\'ll need to have two columns with your spatial coordinates latitude and longitude in decimal degrees.\r\n+\r\n+**Output**\r\n+\r\n+A text and png files. The text file contains a table with information on the beta diversity and the png files shows multiple plots according to one type of variable in order to vizualize the beta diversity.\r\n+|\r\n+\r\n+ ]]></help>\r\n+ \r\n+<expand macro="book_bibref"/>\r\n+\r\n+</tool>\r\n' |
b |
diff -r 000000000000 -r fb7b2cbd80bb macro.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macro.xml Fri Aug 13 18:17:38 2021 +0000 |
[ |
@@ -0,0 +1,65 @@ +<macros> + <token name="@VERSION@">0.0.0</token> + <xml name="Explo_requirements"> + <requirements> + <requirement type="package" version="3.3.3">r-ggplot2</requirement> + <yield /> + </requirements> + </xml> + <xml name="explo_input"> + <param name="input" type="data" format="tabular" label="Input table"/> + <param name="colnames" type="boolean" label="First line is a header line" checked="true"/> + </xml> + <xml name="explo_filter_colli"> + <filter> method['type'] == 'collinearity'</filter> + </xml> + <xml name="explo_filter_pca"> + <filter> method['type'] == 'pca'</filter> + </xml> + <xml name="explo_filter_vif"> + <filter> method['type'] == 'vif'</filter> + </xml> + <xml name="explo_filter_interr"> + <filter> method['type'] == 'interr'</filter> + </xml> + <xml name="explo_filter_autocorr"> + <filter> method['type'] == 'autocorr'</filter> + </xml> + <xml name="explo_filter_abund"> + <filter> method['type'] == 'abund'</filter> + </xml> + <xml name="explo_filter_pres_abs"> + <filter> method['type'] == 'pres_abs'</filter> + </xml> + <xml name="explo_filter_rare"> + <filter> method['type'] == 'rare'</filter> + </xml> + <xml name="explo_bibref"> + <citations> + <citation type="bibtex"> + @unpublished{ + title={ A protocol for data exploration to avoid common statistical problems }, + authors={Alain F. Zuur, Elena N. Ieno, Chris S. Elphick}, + url={https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/j.2041-210X.2009.00001.x} + } + </citation> + </citations> + </xml> + <xml name="book_bibref"> + <citations> + <citation type="bibtex"> + @unpublished{ + title={ Numerical Ecology with R }, + author={Daniel Borcard, François Gillet, Pierre Legendre}, + } + </citation> + </citations> + </xml> + <xml name="topic"> + <edam_topics> + <edam_topic>topic_0610</edam_topic> + <edam_topic>topic_3050</edam_topic> + </edam_topics> + </xml> +</macros> + |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/Data.tabular --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/Data.tabular Fri Aug 13 18:17:38 2021 +0000 |
b |
@@ -0,0 +1,2 @@ +"x" +"1" 29 |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/Missing_species.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/Missing_species.txt Fri Aug 13 18:17:38 2021 +0000 |
b |
@@ -0,0 +1,6 @@ + +There is not enough data on these species they appear too few times in the tabular-file + +Scorpaenidae +Plesiopidae +Serranidae |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/Reel_life_survey_fish_modif.tabular --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/Reel_life_survey_fish_modif.tabular Fri Aug 13 18:17:38 2021 +0000 |
[ |
b'@@ -0,0 +1,290 @@\n+FID\tKey\tSurveyID\tCountry\tEcoregion\tRealm\tSiteCode\tSite\tSiteLat\tSiteLong\tSurveyDate\tDepth\tPhylum\tClass\tFamily\tTaxon\tBlock\tTotal\tDiver\tgeom\n+M2_FISH_DATA.1\t1\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tBlenniidae\tEcsenius mandibularis\t2\t2\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.2\t2\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tBlenniidae\tEcsenius stictus\t1\t5\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.3\t3\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tBlenniidae\tEcsenius stictus\t2\t8\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.4\t4\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tGobiidae\tEviota guttata\t1\t6\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.5\t5\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tGobiidae\tEviota guttata\t2\t9\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.6\t6\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tGobiidae\tEviota hoesei\t1\t3\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.7\t7\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tGobiidae\tEviota hoesei\t2\t19\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.8\t8\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tGobiidae\tGobiodon histrio\t1\t1\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.9\t9\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tGobiidae\tGobiodon histrio\t2\t3\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.10\t10\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tGobiidae\tGobiodon sp. [3 GA]\t1\t12\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.11\t11\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tGobiidae\tGobiodon spp.\t2\t5\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.12\t12\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tScorpaenidae\tParascorpaena aurita\t2\t1\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.13\t13\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tTripterygiidae\tUcla xenogrammus\t1\t1\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.14\t14\t912347736\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6\tChordata\tActinopterygii\tTripterygiidae\tUcla xenogrammus\t2\t1\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.15\t15\t912347737\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T13:00:00Z\t6.1\tChordata\tActinopterygii\tPlesiopidae\tAssessor macneilli\t2\t20\tLVS\tPOINT (151.92 -23.18)\n+M2_FISH_DATA.16\t16\t912347737\tAustralia\tCentral and Southern Great Barrier Reef\tCentral Indo-Pacific\tAIMS12\tNorth Island Site 3\t-23.18\t151.92\t2017-02-13T1'..b'te Northern Atlantic\tAND8\tAlmeria puerto\t36.83\t-2.46\t2013-11-27T13:00:00Z\t1.8\tChordata\tActinopterygii\tBlenniidae\tParablennius pilicornis\t2\t5\tJASF\tPOINT (-2.46 36.83)\n+M2_FISH_DATA.272\t272\t912349134\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND8\tAlmeria puerto\t36.83\t-2.46\t2013-11-27T13:00:00Z\t1.8\tChordata\tActinopterygii\tScorpaenidae\tScorpaena porcus\t1\t1\tJASF\tPOINT (-2.46 36.83)\n+M2_FISH_DATA.273\t273\t912349134\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND8\tAlmeria puerto\t36.83\t-2.46\t2013-11-27T13:00:00Z\t1.8\tChordata\tActinopterygii\tScorpaenidae\tScorpaena porcus\t2\t1\tJASF\tPOINT (-2.46 36.83)\n+M2_FISH_DATA.274\t274\t912344582\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2014-07-14T14:00:00Z\t3\tChordata\tActinopterygii\tGobiidae\tGobius bucchichi\t1\t27\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.275\t275\t912344582\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2014-07-14T14:00:00Z\t3\tChordata\tActinopterygii\tGobiidae\tGobius bucchichi\t2\t27\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.276\t276\t912344582\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2014-07-14T14:00:00Z\t3\tChordata\tActinopterygii\tGobiesocidae\tLepadogaster candolii\t1\t1\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.277\t277\t912344582\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2014-07-14T14:00:00Z\t3\tChordata\tActinopterygii\tBlenniidae\tParablennius pilicornis\t1\t6\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.278\t278\t912344582\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2014-07-14T14:00:00Z\t3\tChordata\tActinopterygii\tBlenniidae\tParablennius pilicornis\t2\t14\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.279\t279\t912344582\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2014-07-14T14:00:00Z\t3\tChordata\tActinopterygii\tScorpaenidae\tScorpaena porcus\t1\t1\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.280\t280\t912344582\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2014-07-14T14:00:00Z\t3\tChordata\tActinopterygii\tTripterygiidae\tTripterygion delaisi\t1\t1\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.281\t281\t912349135\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2013-11-27T13:00:00Z\t2.4\tChordata\tActinopterygii\tGobiidae\tGobius bucchichi\t1\t3\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.282\t282\t912349135\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2013-11-27T13:00:00Z\t2.4\tChordata\tActinopterygii\tGobiidae\tGobius bucchichi\t2\t2\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.283\t283\t912349135\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2013-11-27T13:00:00Z\t2.4\tChordata\tActinopterygii\tBlenniidae\tParablennius pilicornis\t1\t4\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.284\t284\t912349135\tSpain\tAlboran Sea\tTemperate Northern Atlantic\tAND9\tCamping\t36.82\t-2.51\t2013-11-27T13:00:00Z\t2.4\tChordata\tActinopterygii\tBlenniidae\tParablennius pilicornis\t2\t6\tJASF\tPOINT (-2.51 36.82)\n+M2_FISH_DATA.285\t285\t912345928\tAntarctica\tAntarctic Peninsula\tSouthern Ocean\tANT4\tEnd Runway\t-67.57\t-68.13\t2016-01-05T13:00:00Z\t9\tChordata\tActinopterygii\tNototheniidae\tTrematomus hansoni\t1\t1\tSM\tPOINT (-68.13 -67.57)\n+M2_FISH_DATA.286\t286\t912346517\tAntarctica\tAntarctic Peninsula\tSouthern Ocean\tANT5\tWharf\t-67.57\t-68.13\t2016-01-06T13:00:00Z\t9\tChordata\tActinopterygii\tNototheniidae\tNotothenia coriiceps\t2\t1\tSM\tPOINT (-68.13 -67.57)\n+M2_FISH_DATA.287\t287\t912346517\tAntarctica\tAntarctic Peninsula\tSouthern Ocean\tANT5\tWharf\t-67.57\t-68.13\t2016-01-06T13:00:00Z\t9\tChordata\tActinopterygii\tNototheniidae\tTrematomus newnesi\t1\t1\tSM\tPOINT (-68.13 -67.57)\n+M2_FISH_DATA.288\t288\t912346518\tAntarctica\tAntarctic Peninsula\tSouthern Ocean\tANT7\tTrovall\t-67.6\t-68.21\t2016-02-11T13:00:00Z\t12\tChordata\tActinopterygii\tHarpagiferidae\tHarpagifer antarcticus\t1\t1\tSM\tPOINT (-68.21 -67.6)\n+M2_FISH_DATA.289\t289\t912346518\tAntarctica\tAntarctic Peninsula\tSouthern Ocean\tANT7\tTrovall\t-67.6\t-68.21\t2016-02-11T13:00:00Z\t12\tChordata\tActinopterygii\tNototheniidae\tNototheniid spp.\t2\t1\tSM\tPOINT (-68.21 -67.6)\n' |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/Reel_life_survey_fish_modif2.tabular --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/Reel_life_survey_fish_modif2.tabular Fri Aug 13 18:17:38 2021 +0000 |
[ |
@@ -0,0 +1,30 @@ +FID Key SurveyID Country Ecoregion Realm SiteCode Site SiteLat SiteLong SurveyDate Depth Phylum Class Family Taxon Block Total Diver geom +M2_FISH_DATA.1 1 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Blenniidae Ecsenius mandibularis 2 2 LVS POINT (151.92 -23.18) +M2_FISH_DATA.2 2 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Blenniidae Ecsenius stictus 1 5 LVS POINT (151.92 -23.18) +M2_FISH_DATA.3 3 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Blenniidae Ecsenius stictus 2 8 LVS POINT (151.92 -23.18) +M2_FISH_DATA.4 4 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Gobiidae Eviota guttata 1 6 LVS POINT (151.92 -23.18) +M2_FISH_DATA.5 5 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Gobiidae Eviota guttata 2 9 LVS POINT (151.92 -23.18) +M2_FISH_DATA.6 6 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Gobiidae Eviota hoesei 1 3 LVS POINT (151.92 -23.18) +M2_FISH_DATA.7 7 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Gobiidae Eviota hoesei 2 19 LVS POINT (151.92 -23.18) +M2_FISH_DATA.8 8 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Gobiidae Gobiodon histrio 1 1 LVS POINT (151.92 -23.18) +M2_FISH_DATA.9 9 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Gobiidae Gobiodon histrio 2 3 LVS POINT (151.92 -23.18) +M2_FISH_DATA.10 10 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Gobiidae Gobiodon sp. [3 GA] 1 12 LVS POINT (151.92 -23.18) +M2_FISH_DATA.11 11 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Gobiidae Gobiodon spp. 2 5 LVS POINT (151.92 -23.18) +M2_FISH_DATA.12 12 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Scorpaenidae Parascorpaena aurita 2 1 LVS POINT (151.92 -23.18) +M2_FISH_DATA.13 13 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Tripterygiidae Ucla xenogrammus 1 1 LVS POINT (151.92 -23.18) +M2_FISH_DATA.14 14 912347736 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6 Chordata Actinopterygii Tripterygiidae Ucla xenogrammus 2 1 LVS POINT (151.92 -23.18) +M2_FISH_DATA.15 15 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Plesiopidae Assessor macneilli 2 20 LVS POINT (151.92 -23.18) +M2_FISH_DATA.16 16 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Blenniidae Ecsenius bicolor 1 4 LVS POINT (151.92 -23.18) +M2_FISH_DATA.17 17 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Blenniidae Ecsenius bicolor 2 1 LVS POINT (151.92 -23.18) +M2_FISH_DATA.18 18 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Blenniidae Ecsenius mandibularis 1 5 LVS POINT (151.92 -23.18) +M2_FISH_DATA.19 19 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Blenniidae Ecsenius mandibularis 2 6 LVS POINT (151.92 -23.18) +M2_FISH_DATA.20 20 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Blenniidae Ecsenius stictus 1 1 LVS POINT (151.92 -23.18) +M2_FISH_DATA.21 21 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Blenniidae Ecsenius stictus 2 3 LVS POINT (151.92 -23.18) +M2_FISH_DATA.22 22 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Tripterygiidae Enneapterygius similis 1 3 LVS POINT (151.92 -23.18) +M2_FISH_DATA.23 23 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Serranidae Epinephelus fasciatus 2 1 LVS POINT (151.92 -23.18) +M2_FISH_DATA.24 24 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Gobiidae Eviota guttata 1 6 LVS POINT (151.92 -23.18) +M2_FISH_DATA.25 25 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Gobiidae Eviota guttata 2 8 LVS POINT (151.92 -23.18) +M2_FISH_DATA.26 26 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Gobiidae Eviota hoesei 1 7 LVS POINT (151.92 -23.18) +M2_FISH_DATA.27 27 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Gobiidae Eviota hoesei 2 12 LVS POINT (151.92 -23.18) +M2_FISH_DATA.28 28 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Gobiidae Gobiodon sp. [3 GA] 2 16 LVS POINT (151.92 -23.18) +M2_FISH_DATA.29 29 912347737 Australia Central and Southern Great Barrier Reef Central Indo-Pacific AIMS12 North Island Site 3 -23.18 151.92 2017-02-13T13:00:00Z 6.1 Chordata Actinopterygii Gobiidae Gobiodon spp. 2 7 LVS POINT (151.92 -23.18) |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/SCBD.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/SCBD.txt Fri Aug 13 18:17:38 2021 +0000 |
b |
@@ -0,0 +1,4 @@ + Blenniidae Gobiidae Scorpaenidae Tripterygiidae Plesiopidae + 0.13452280 0.12622864 0.05950360 0.15163110 0.07035376 + Apogonidae Nototheniidae + 0.06153987 0.14519360 |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/data_frenchbbs.tabular --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/data_frenchbbs.tabular Fri Aug 13 18:17:38 2021 +0000 |
b |
b'@@ -0,0 +1,851 @@\n+"carre"\t"annee"\t"espece"\t"abond"\r\n+"440072"\t2014\t"ALAARV"\t4\r\n+"440072"\t2014\t"PARCAE"\t5\r\n+"440168"\t2014\t"ALAARV"\t1\r\n+"440168"\t2014\t"PARCAE"\t10\r\n+"440168"\t2017\t"ALAARV"\t2\r\n+"440168"\t2017\t"PARCAE"\t12\r\n+"440168"\t2018\t"ALAARV"\t2\r\n+"440168"\t2018\t"PARCAE"\t20\r\n+"440211"\t2014\t"ALAARV"\t10\r\n+"440211"\t2014\t"PARCAE"\t5\r\n+"440211"\t2015\t"ALAARV"\t11\r\n+"440211"\t2015\t"PARCAE"\t6\r\n+"440211"\t2016\t"ALAARV"\t11\r\n+"440211"\t2016\t"PARCAE"\t2\r\n+"440211"\t2017\t"ALAARV"\t9\r\n+"440211"\t2017\t"PARCAE"\t2\r\n+"440211"\t2018\t"ALAARV"\t10\r\n+"440211"\t2018\t"PARCAE"\t8\r\n+"440235"\t2005\t"ALAARV"\t3\r\n+"440235"\t2005\t"PARCAE"\t15\r\n+"440235"\t2006\t"ALAARV"\t6\r\n+"440235"\t2006\t"PARCAE"\t12\r\n+"440235"\t2007\t"ALAARV"\t1\r\n+"440235"\t2007\t"PARCAE"\t10\r\n+"440235"\t2008\t"ALAARV"\t1\r\n+"440235"\t2008\t"PARCAE"\t12\r\n+"440235"\t2009\t"ALAARV"\t0\r\n+"440235"\t2009\t"PARCAE"\t13\r\n+"440278"\t2008\t"ALAARV"\t7\r\n+"440278"\t2008\t"PARCAE"\t7\r\n+"440278"\t2009\t"ALAARV"\t8\r\n+"440278"\t2009\t"PARCAE"\t14\r\n+"440278"\t2010\t"ALAARV"\t7\r\n+"440278"\t2010\t"PARCAE"\t5\r\n+"440278"\t2011\t"ALAARV"\t8\r\n+"440278"\t2011\t"PARCAE"\t7\r\n+"440278"\t2012\t"ALAARV"\t7\r\n+"440278"\t2012\t"PARCAE"\t8\r\n+"440278"\t2013\t"ALAARV"\t10\r\n+"440278"\t2013\t"PARCAE"\t8\r\n+"440278"\t2014\t"ALAARV"\t6\r\n+"440278"\t2014\t"PARCAE"\t7\r\n+"440278"\t2015\t"ALAARV"\t7\r\n+"440278"\t2015\t"PARCAE"\t7\r\n+"440278"\t2016\t"ALAARV"\t7\r\n+"440278"\t2016\t"PARCAE"\t7\r\n+"440278"\t2017\t"ALAARV"\t6\r\n+"440278"\t2017\t"PARCAE"\t2\r\n+"440278"\t2018\t"ALAARV"\t7\r\n+"440278"\t2018\t"PARCAE"\t7\r\n+"440310"\t2011\t"ALAARV"\t12\r\n+"440310"\t2011\t"PARCAE"\t5\r\n+"440310"\t2012\t"ALAARV"\t15\r\n+"440310"\t2012\t"PARCAE"\t13\r\n+"440310"\t2013\t"ALAARV"\t26\r\n+"440310"\t2013\t"PARCAE"\t12\r\n+"440310"\t2014\t"ALAARV"\t14\r\n+"440310"\t2014\t"PARCAE"\t8\r\n+"440310"\t2015\t"ALAARV"\t11\r\n+"440310"\t2015\t"PARCAE"\t8\r\n+"440310"\t2016\t"ALAARV"\t14\r\n+"440310"\t2016\t"PARCAE"\t10\r\n+"440310"\t2017\t"ALAARV"\t13\r\n+"440310"\t2017\t"PARCAE"\t12\r\n+"440310"\t2018\t"ALAARV"\t12\r\n+"440310"\t2018\t"PARCAE"\t11\r\n+"440398"\t2012\t"ALAARV"\t2\r\n+"440398"\t2012\t"PARCAE"\t2\r\n+"440398"\t2013\t"ALAARV"\t2\r\n+"440398"\t2013\t"PARCAE"\t2\r\n+"440398"\t2014\t"ALAARV"\t4\r\n+"440398"\t2014\t"PARCAE"\t6\r\n+"440411"\t2004\t"ALAARV"\t16\r\n+"440411"\t2004\t"PARCAE"\t5\r\n+"440411"\t2005\t"ALAARV"\t14\r\n+"440411"\t2005\t"PARCAE"\t8\r\n+"440411"\t2006\t"ALAARV"\t18\r\n+"440411"\t2006\t"PARCAE"\t10\r\n+"440411"\t2007\t"ALAARV"\t15\r\n+"440411"\t2007\t"PARCAE"\t7\r\n+"440411"\t2008\t"ALAARV"\t12\r\n+"440411"\t2008\t"PARCAE"\t9\r\n+"440411"\t2009\t"ALAARV"\t11\r\n+"440411"\t2009\t"PARCAE"\t5\r\n+"440411"\t2010\t"ALAARV"\t11\r\n+"440411"\t2010\t"PARCAE"\t2\r\n+"440411"\t2011\t"ALAARV"\t16\r\n+"440411"\t2011\t"PARCAE"\t5\r\n+"440411"\t2012\t"ALAARV"\t18\r\n+"440411"\t2012\t"PARCAE"\t2\r\n+"440411"\t2013\t"ALAARV"\t14\r\n+"440411"\t2013\t"PARCAE"\t11\r\n+"440411"\t2014\t"ALAARV"\t15\r\n+"440411"\t2014\t"PARCAE"\t9\r\n+"440411"\t2015\t"ALAARV"\t16\r\n+"440411"\t2015\t"PARCAE"\t3\r\n+"440411"\t2016\t"ALAARV"\t9\r\n+"440411"\t2016\t"PARCAE"\t3\r\n+"440411"\t2017\t"ALAARV"\t14\r\n+"440411"\t2017\t"PARCAE"\t13\r\n+"440411"\t2018\t"ALAARV"\t12\r\n+"440411"\t2018\t"PARCAE"\t6\r\n+"440430"\t2006\t"ALAARV"\t0\r\n+"440430"\t2006\t"PARCAE"\t5\r\n+"440430"\t2007\t"ALAARV"\t0\r\n+"440430"\t2007\t"PARCAE"\t4\r\n+"440430"\t2008\t"ALAARV"\t0\r\n+"440430"\t2008\t"PARCAE"\t7\r\n+"440430"\t2010\t"ALAARV"\t0\r\n+"440430"\t2010\t"PARCAE"\t3\r\n+"440430"\t2012\t"ALAARV"\t0\r\n+"440430"\t2012\t"PARCAE"\t2\r\n+"440430"\t2014\t"ALAARV"\t0\r\n+"440430"\t2014\t"PARCAE"\t3\r\n+"440456"\t2001\t"ALAARV"\t3\r\n+"440456"\t2001\t"PARCAE"\t10\r\n+"440456"\t2002\t"ALAARV"\t4\r\n+"440456"\t2002\t"PARCAE"\t11\r\n+"440456"\t2003\t"ALAARV"\t4\r\n+"440456"\t2003\t"PARCAE"\t14\r\n+"440456"\t2004\t"ALAARV"\t6\r\n+"440456"\t2004\t"PARCAE"\t16\r\n+"440456"\t2005\t"ALAARV"\t6\r\n+"440456"\t2005\t"PARCAE"\t13\r\n+"440456"\t2006\t"ALAARV"\t4\r\n+"440456"\t2006\t"PARCAE"\t9\r\n+"440456"\t2007\t"ALAARV"\t5\r\n+"440456"\t2007\t"PARCAE"\t11\r\n+"440456"\t2008\t"ALAARV"\t2\r\n+"440456"\t2008\t"PARCAE"\t8\r\n+"440456"\t2009\t"ALAARV"\t4\r\n+"440456"\t2009\t"PARCAE"\t10\r\n+"440456"\t2010\t"ALAARV"\t2\r\n+"440456"\t2010\t"PARCAE"\t15\r\n+"440456"\t2011\t"ALAARV"\t4\r\n+"440456"\t2011\t"PARCAE"\t14\r\n+"440456"\t2012\t"ALAARV"\t0\r\n+"440456"\t2012\t"PARCAE"\t11\r\n+"440456"\t2014\t"ALAARV"\t2\r\n+"440456"\t2014\t"PARCAE"\t12\r\n+"440462"\t2001\t"ALAARV"\t3\r\n+"440462"\t2001\t"PARCAE"\t3\r\n+"440462"\t2002\t"ALAARV"\t6\r\n+"440462"\t2002\t"PARCAE"\t5\r\n+"4'..b'07\t"PARCAE"\t6\r\n+"441242"\t2008\t"ALAARV"\t0\r\n+"441242"\t2008\t"PARCAE"\t8\r\n+"441242"\t2009\t"ALAARV"\t0\r\n+"441242"\t2009\t"PARCAE"\t7\r\n+"441242"\t2010\t"ALAARV"\t0\r\n+"441242"\t2010\t"PARCAE"\t3\r\n+"441242"\t2011\t"ALAARV"\t0\r\n+"441242"\t2011\t"PARCAE"\t6\r\n+"441242"\t2012\t"ALAARV"\t0\r\n+"441242"\t2012\t"PARCAE"\t9\r\n+"441242"\t2013\t"ALAARV"\t0\r\n+"441242"\t2013\t"PARCAE"\t9\r\n+"441242"\t2014\t"ALAARV"\t0\r\n+"441242"\t2014\t"PARCAE"\t10\r\n+"441242"\t2015\t"ALAARV"\t0\r\n+"441242"\t2015\t"PARCAE"\t9\r\n+"441242"\t2016\t"ALAARV"\t0\r\n+"441242"\t2016\t"PARCAE"\t5\r\n+"441242"\t2017\t"ALAARV"\t0\r\n+"441242"\t2017\t"PARCAE"\t5\r\n+"441242"\t2018\t"ALAARV"\t0\r\n+"441242"\t2018\t"PARCAE"\t4\r\n+"441259"\t2018\t"ALAARV"\t2\r\n+"441259"\t2018\t"PARCAE"\t14\r\n+"441265"\t2004\t"ALAARV"\t2\r\n+"441265"\t2004\t"PARCAE"\t6\r\n+"441265"\t2005\t"ALAARV"\t2\r\n+"441265"\t2005\t"PARCAE"\t3\r\n+"441265"\t2006\t"ALAARV"\t2\r\n+"441265"\t2006\t"PARCAE"\t0\r\n+"441265"\t2007\t"ALAARV"\t0\r\n+"441265"\t2007\t"PARCAE"\t4\r\n+"441265"\t2008\t"ALAARV"\t1\r\n+"441265"\t2008\t"PARCAE"\t7\r\n+"441265"\t2009\t"ALAARV"\t1\r\n+"441265"\t2009\t"PARCAE"\t4\r\n+"441265"\t2010\t"ALAARV"\t1\r\n+"441265"\t2010\t"PARCAE"\t2\r\n+"441265"\t2011\t"ALAARV"\t2\r\n+"441265"\t2011\t"PARCAE"\t13\r\n+"441265"\t2012\t"ALAARV"\t0\r\n+"441265"\t2012\t"PARCAE"\t5\r\n+"441265"\t2013\t"ALAARV"\t1\r\n+"441265"\t2013\t"PARCAE"\t4\r\n+"441307"\t2016\t"ALAARV"\t2\r\n+"441307"\t2016\t"PARCAE"\t10\r\n+"441307"\t2017\t"ALAARV"\t2\r\n+"441307"\t2017\t"PARCAE"\t3\r\n+"441307"\t2018\t"ALAARV"\t1\r\n+"441307"\t2018\t"PARCAE"\t6\r\n+"441311"\t2015\t"ALAARV"\t0\r\n+"441311"\t2015\t"PARCAE"\t12\r\n+"441311"\t2016\t"ALAARV"\t0\r\n+"441311"\t2016\t"PARCAE"\t6\r\n+"441311"\t2017\t"ALAARV"\t0\r\n+"441311"\t2017\t"PARCAE"\t6\r\n+"441311"\t2018\t"ALAARV"\t0\r\n+"441311"\t2018\t"PARCAE"\t15\r\n+"441340"\t2004\t"ALAARV"\t0\r\n+"441340"\t2004\t"PARCAE"\t10\r\n+"441340"\t2005\t"ALAARV"\t0\r\n+"441340"\t2005\t"PARCAE"\t10\r\n+"441340"\t2006\t"ALAARV"\t0\r\n+"441340"\t2006\t"PARCAE"\t8\r\n+"441340"\t2007\t"ALAARV"\t0\r\n+"441340"\t2007\t"PARCAE"\t7\r\n+"441340"\t2008\t"ALAARV"\t0\r\n+"441340"\t2008\t"PARCAE"\t6\r\n+"441340"\t2009\t"ALAARV"\t0\r\n+"441340"\t2009\t"PARCAE"\t7\r\n+"441340"\t2010\t"ALAARV"\t0\r\n+"441340"\t2010\t"PARCAE"\t2\r\n+"441340"\t2011\t"ALAARV"\t0\r\n+"441340"\t2011\t"PARCAE"\t6\r\n+"441340"\t2012\t"ALAARV"\t0\r\n+"441340"\t2012\t"PARCAE"\t6\r\n+"441340"\t2013\t"ALAARV"\t0\r\n+"441340"\t2013\t"PARCAE"\t7\r\n+"441340"\t2014\t"ALAARV"\t0\r\n+"441340"\t2014\t"PARCAE"\t6\r\n+"441340"\t2015\t"ALAARV"\t0\r\n+"441340"\t2015\t"PARCAE"\t5\r\n+"441376"\t2014\t"ALAARV"\t0\r\n+"441376"\t2014\t"PARCAE"\t15\r\n+"441376"\t2015\t"ALAARV"\t0\r\n+"441376"\t2015\t"PARCAE"\t10\r\n+"441376"\t2016\t"ALAARV"\t0\r\n+"441376"\t2016\t"PARCAE"\t7\r\n+"441376"\t2017\t"ALAARV"\t0\r\n+"441376"\t2017\t"PARCAE"\t13\r\n+"441376"\t2018\t"ALAARV"\t0\r\n+"441376"\t2018\t"PARCAE"\t18\r\n+"441558"\t2001\t"ALAARV"\t2\r\n+"441558"\t2001\t"PARCAE"\t6\r\n+"441558"\t2002\t"ALAARV"\t1\r\n+"441558"\t2002\t"PARCAE"\t0\r\n+"441558"\t2003\t"ALAARV"\t1\r\n+"441558"\t2003\t"PARCAE"\t0\r\n+"441558"\t2004\t"ALAARV"\t2\r\n+"441558"\t2004\t"PARCAE"\t3\r\n+"441558"\t2005\t"ALAARV"\t1\r\n+"441558"\t2005\t"PARCAE"\t1\r\n+"441558"\t2006\t"ALAARV"\t1\r\n+"441558"\t2006\t"PARCAE"\t3\r\n+"441558"\t2007\t"ALAARV"\t2\r\n+"441558"\t2007\t"PARCAE"\t4\r\n+"441558"\t2008\t"ALAARV"\t1\r\n+"441558"\t2008\t"PARCAE"\t4\r\n+"441558"\t2009\t"ALAARV"\t1\r\n+"441558"\t2009\t"PARCAE"\t5\r\n+"441558"\t2011\t"ALAARV"\t1\r\n+"441558"\t2011\t"PARCAE"\t0\r\n+"441558"\t2012\t"ALAARV"\t0\r\n+"441558"\t2012\t"PARCAE"\t1\r\n+"441594"\t2004\t"ALAARV"\t12\r\n+"441594"\t2004\t"PARCAE"\t3\r\n+"441594"\t2005\t"ALAARV"\t9\r\n+"441594"\t2005\t"PARCAE"\t3\r\n+"441594"\t2006\t"ALAARV"\t10\r\n+"441594"\t2006\t"PARCAE"\t1\r\n+"441594"\t2007\t"ALAARV"\t5\r\n+"441594"\t2007\t"PARCAE"\t3\r\n+"441594"\t2008\t"ALAARV"\t6\r\n+"441594"\t2008\t"PARCAE"\t6\r\n+"441594"\t2009\t"ALAARV"\t1\r\n+"441594"\t2009\t"PARCAE"\t5\r\n+"441640"\t2012\t"ALAARV"\t12\r\n+"441640"\t2012\t"PARCAE"\t4\r\n+"441680"\t2012\t"ALAARV"\t2\r\n+"441680"\t2012\t"PARCAE"\t4\r\n+"441680"\t2013\t"ALAARV"\t1\r\n+"441680"\t2013\t"PARCAE"\t7\r\n+"441680"\t2014\t"ALAARV"\t0\r\n+"441680"\t2014\t"PARCAE"\t7\r\n+"441680"\t2015\t"ALAARV"\t1\r\n+"441680"\t2015\t"PARCAE"\t5\r\n+"441680"\t2016\t"ALAARV"\t0\r\n+"441680"\t2016\t"PARCAE"\t2\r\n+"441680"\t2017\t"ALAARV"\t0\r\n+"441680"\t2017\t"PARCAE"\t5\r\n+"441680"\t2018\t"ALAARV"\t0\r\n+"441680"\t2018\t"PARCAE"\t7\r\n+"Ile de"\t2018\t"ALAARV"\t3\r\n+"Ile de"\t2018\t"PARCAE"\t7\r\n+"Le Mas"\t2018\t"ALAARV"\t0\r\n+"Le Mas"\t2018\t"PARCAE"\t7\n\\ No newline at end of file\n' |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/levene.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/levene.txt Fri Aug 13 18:17:38 2021 +0000 |
b |
@@ -0,0 +1,8 @@ + +write table with levene test. +--> "Levene's Test for Homogeneity of Variance (center = median)" + Df F value Pr(>F) " +group 1 22.02 3.145e-06 ***" + 848 " +---" +Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1" |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/species.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/species.txt Fri Aug 13 18:17:38 2021 +0000 |
b |
@@ -0,0 +1,6 @@ +Blenniidae +Gobiidae +Scorpaenidae +Tripterygiidae +Plesiopidae +Serranidae |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/test_bbs2.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/test_bbs2.txt Fri Aug 13 18:17:38 2021 +0000 |
b |
@@ -0,0 +1,8 @@ + +write table with levene test. +--> "Levene's Test for Homogeneity of Variance (center = median)" + Df F value Pr(>F) " +group 1 22.02 3.145e-06 ***" + 848 " +---" +Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1" |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/test_fish2.tabular --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/test_fish2.tabular Fri Aug 13 18:17:38 2021 +0000 |
b |
@@ -0,0 +1,2 @@ +"x" +"1" 6 |
b |
diff -r 000000000000 -r fb7b2cbd80bb test-data/test_value_fish2.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/test_value_fish2.txt Fri Aug 13 18:17:38 2021 +0000 |
b |
@@ -0,0 +1,10 @@ + +write table with eigenvalue. +--> " eigenvalue variance.percent cumulative.variance.percent" +Dim.1 2.849961e+00 5.699922e+01 56.99922" +Dim.2 1.229238e+00 2.458475e+01 81.58397" +Dim.3 7.482796e-01 1.496559e+01 96.54956" +Dim.4 1.725220e-01 3.450440e+00 100.00000" +Dim.5 1.948918e-14 3.897836e-13 100.00000" +Dim.6 9.545002e-34 1.909000e-32 100.00000" +Dim.7 2.137718e-35 4.275436e-34 100.00000" |