Repository 'ecoregion_geonearestneighbor'
hg clone https://toolshed.g2.bx.psu.edu/repos/ecology/ecoregion_geonearestneighbor

Changeset 0:5cde56683579 (2024-03-21)
Next changeset 1:36637718c51d (2024-09-11)
Commit message:
planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Ecoregionalization_workflow commit 5d48df67919fbc9d77b98a8243d438c397f61a0e
added:
GeoNN.R
GeoNearestNeighbor.xml
brt.R
cluster_ceamarc.R
crea_carte_G.R
nb_clust_G.R
recup_liste_taxon.R
test-data/1_brts_pred_ceamarc.tsv
test-data/Data.bio_table.tsv
test-data/Data_to_cluster.tsv
test-data/List_of_taxa.txt
test-data/List_of_taxa_clean.txt
test-data/SIH_index_plot.png
test-data/Summary_of_taxa_model.tsv
test-data/ceamarc_env.tsv
test-data/cnidaria_filtered.tsv
test-data/ecoregions.png
test-data/fish_wide.tsv
test-data/points_clus.tsv
b
diff -r 000000000000 -r 5cde56683579 GeoNN.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GeoNN.R Thu Mar 21 14:05:01 2024 +0000
[
@@ -0,0 +1,77 @@
+#Date : 09/02/2024
+#Author : Seguineau Pauline
+
+#Load libraries
+library(tidyr)
+library(dplyr)
+library(sf)
+
+#load arguments
+args = commandArgs(trailingOnly=TRUE) 
+if (length(args)==0)
+{
+    stop("This tool needs at least one argument")
+}else{
+    enviro <- args[1]
+    envlong <- as.numeric(args[2])
+    envlat <- as.numeric(args[3])
+    occu <- args[4]
+    occulat <- as.numeric(args[5])
+    occulong <- as.numeric(args[6])
+}

+env = read.table(enviro, header = TRUE, sep="\t")
+occ = read.table(occu, header = TRUE, sep = "\t")
+
+cols_env = c(names(env[envlong]),names(env[envlat]))
+cols_occ = c(names(occ[occulong]),names(occ[occulat]))
+
+###calculate distances### 
+#transform tables into sf object
+
+env_sf <- st_as_sf(env, coords = cols_env, crs = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+occ_sf <- st_as_sf(occ, coords = cols_occ, crs = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
+
+#Find the indices of env_sf entities closest to each point in occ_sf.
+
+nearest_indices <- st_nearest_feature(occ_sf, env_sf)
+
+nearest_points <- env[nearest_indices, ]
+
+# Calculate distances between env_sf and occ_sf points
+distances <- st_distance(env_sf, occ_sf)
+
+#Extract the corresponding distances between occ and env
+
+nearest_distances <- numeric(length(nearest_indices))
+
+for (i in 1:length(nearest_indices)) {
+  nearest_distances[i] <- st_distance(env_sf[nearest_indices[i],], occ_sf[i,])
+}
+
+#assemble occurrences and environmental parameters in the same file
+
+nearest_points <- nearest_points[, !names(nearest_points) %in% cols_env] #remove lat and long from env to clean data
+new_occ = cbind(occ, nearest_points)
+
+#Save the file 
+
+write.table(new_occ, file = "occurrence_env.tsv",sep ="\t",quote = F, row.names = F,col.names = T)
+
+#create an information file with the distances between the points of the two files 
+
+distance_info <- data.frame(
+  occ_geometry = occ_sf$geometry,
+  env_geometry = env_sf$geometry[nearest_indices],
+  distance = nearest_distances
+)
+
+colnames(distance_info)[1] <- "occ_geometry"
+colnames(distance_info)[2] <- "env_geometry"
+colnames(distance_info)[3] <- "Distances (meters)"
+#save the information file
+
+write.table(distance_info, file = "infos_file.tsv",sep ="\t",quote = F, row.names = F,col.names = T)
+
+
+
b
diff -r 000000000000 -r 5cde56683579 GeoNearestNeighbor.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GeoNearestNeighbor.xml Thu Mar 21 14:05:01 2024 +0000
[
@@ -0,0 +1,135 @@
+<tool id="ecoregion_GeoNearestNeighbor" name="GeoNearestNeighbor" version="0.1.0+galaxy0" profile="21.05">
+    <description>Merge two data tables by finding the closest points based on latitude and longitude coordinates (WGS84 projection).</description>
+    <requirements>
+       <requirement type="package" version="4.3.2">r-base</requirement>
+       <requirement type="package" version="1.3.1">r-tidyr</requirement>
+       <requirement type="package" version="1.0_15">r-sf</requirement>
+       <requirement type="package" version="1.1.4">r-dplyr</requirement>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+        Rscript
+         '$__tool_directory__/GeoNN.R'
+         '$env_file.env'
+         '$env_file.envgeolong'
+         '$env_file.envgeolat'
+         '$occ_file.occ'
+         '$occ_file.occgeolat'
+         '$occ_file.occgeolong'
+    ]]></command>
+    <inputs>
+      <section name="env_file" title="Your environment file (or table 1)" >
+        <param name="env" type="data" format="tabular" label="Input your environment data file (tabular format only)" help="See example below"/>
+        <param name="envgeolat" type="data_column" label="Choose columns where your latitude is in your environment data file." data_ref="env" multiple="false" use_header_names="true"/>
+        <param name="envgeolong" type="data_column" label="Choose columns where your longitude is in your environment data file." data_ref="env" multiple="false" use_header_names="true"/>
+      </section>
+      <section name="occ_file" title="Your occurrence file (or table 2)" >
+        <param name="occ" type="data" format="tabular" label="Input your occurrence data file (tabular format only)" help="See example below"/>
+        <param name="occgeolat" type="data_column" label="Choose columns where your latitude is in your occurrence data file." data_ref="occ" multiple="false" use_header_names="true"/>
+         <param name="occgeolong" type="data_column" label="Choose columns where your longitude is in your occurrence data file." data_ref="occ" multiple="false" use_header_names="true"/>
+      </section>
+    </inputs>
+    <outputs>
+      <data name="occ_env_out" from_work_dir="occurrence_env.tsv" format="tabular" label="Merged table"/>
+      <data name="info_out" from_work_dir="infos_file.tsv" format="tabular" label="Information file"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="env" value="ceamarc_env.tsv"/>
+            <param name="envgeolat" value="2"/>
+            <param name="envgeolong" value="1"/>
+            <param name="occ" value="fish_wide.tsv"/>
+            <param name="occgeolat" value="1"/>
+            <param name="occgeolong" value="2"/>
+            <output name='occ_env_out'>
+                <assert_contents>
+                 <has_size value="2234" delta="50"/>
+             </assert_contents>
+            </output>
+            <output name='info_out'>
+                <assert_contents>
+                    <has_n_columns n="3"/>   
+                    <has_text text="occ_geometry"/>
+                    <has_text text="env_geometry"/> 
+                    <has_text text="Distances (meters)"/>
+                </assert_contents>
+            </output>
+        </test>
+    </tests>
+    <help><![CDATA[
+
+==================    
+**What it does ?**
+==================
+
+This Galaxy tool allows you to merge two data tables (tabular format only) according to their latitude and longitude coordinates (in **WGS84** projection), finding the closest points.
+This tool can be used as part of the Ecoregionalization workflow data preparation that allows you to create ecoregions from occurrence and environmental data. 
+
+===================         
+**How to use it ?**
+===================
+        
+This tool takes in input the environmental data as well as the species occurrence data. See examples of inputs below. These files must be in tabular format. You also need to select the column(s) where your latitude and longitude parameters are located in both files.
+To be as precise as possible, the latitude and longitude in both files must be of the same precision.
+
+This tool gives in output two files: 
+
+ - Information file conataining the coordinates of occurrence data, the coordinates retains from environemental data and the distances between the two. See example below.  
+ - Occurrence and Environement merge file containing occurrence data and environmental data cooresponding. See example below.
+
+#############################################################
+
+**Example of occurence data input:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
++----------+-----------+------------------------+-----------+
+|   lat    |   long    |Acanthorhabdus_fragilis | Acarnidae |
++----------+-----------+------------------------+-----------+
+|-67.22    |139,96     |           0            |     1     |
++----------+-----------+------------------------+-----------+
+|-66,52    | 140       |           0            |     1     |
++----------+-----------+------------------------+-----------+
+|   ...    |   ...     |          ...           |    ...    |
++----------+-----------+------------------------+-----------+ 
+
+#############################################################
+
+**Example of environmental data input:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
++------+------+---------+------+--------------+-----+
+| long | lat  |  Carbo  | Grav |  Maxbearing  | ... |
++------+------+---------+------+--------------+-----+
+|140.13|-66.7 |   0.88  |28.59 |     3.67     | ... |
++------+------+---------+------+--------------+-----+
+|140   |-66.52|   0.88  |28.61 |     3.64     | ... |
++------+------+---------+------+--------------+-----+
+| ...  | ...  |   ...   | ...  |     ...      | ... |
++------+------+---------+------+--------------+-----+ 
+
+#####################################################
+
+**Example of information file output:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
++-------------------+------------------+--------------------+
+|   occ_geometry    |   env_geometry   | Distances (meters) |
++-------------------+------------------+--------------------+
+| c(139.96, -67.22) | c(140.13, -66.7) |       58292.77     |
++-------------------+------------------+--------------------+
+| c(140, -66.52)    | c(140, -66.52)   |          0         |
++-------------------+------------------+--------------------+
+|   ...             |   ...            |         ...        |
++-------------------+------------------+--------------------+

+#############################################################
+
+**Example of Occurrence and environment merge file output:**
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
++----------+-----------+------------------------+-----------+---------+------+--------------+-----+
+|   lat    |   long    |Acanthorhabdus_fragilis | Acarnidae |  Carbo  | Grav |  Maxbearing  | ... |
++----------+-----------+------------------------+-----------+---------+------+--------------+-----+
+|-67,22    |  139.96   |           0            |     1     |   0.88  |28.59 |     3.67     | ... |
++----------+-----------+------------------------+-----------+---------+------+--------------+-----+
+|-66,52    |    140    |           0            |     1     |   0.88  |28.61 |     3.64     | ... |
++----------+-----------+------------------------+-----------+---------+------+--------------+-----+
+|   ...    |   ...     |          ...           |    ...    |   ...   | ...  |     ...      | ... |
++----------+-----------+------------------------+-----------+---------+------+--------------+-----+
+    ]]></help>
+</tool>
b
diff -r 000000000000 -r 5cde56683579 brt.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/brt.R Thu Mar 21 14:05:01 2024 +0000
[
@@ -0,0 +1,121 @@
+#16/02/2023
+## Analyse BRT data
+
+### Clean environment 
+rm(list = ls(all.names = TRUE))
+options(warn=-1)
+
+### load packages
+
+library(dismo, warn.conflicts = FALSE)
+library(gbm, warn.conflicts = FALSE)
+library(ggplot2, warn.conflicts = FALSE)
+
+
+#load arguments
+args = commandArgs(trailingOnly=TRUE) 
+if (length(args)==0)
+{
+    stop("This tool needs at least one argument")
+}else{
+    enviro <- args[1]
+    species_files <- args[2]
+    abio_para <- args[3]
+    dec_env <- args[8]
+    dec_species <- args[9]
+}
+
+### load data
+
+env = read.table(enviro, dec = dec_env, header = TRUE, sep="\t", na.strings = "-9999")
+pred_vars = strsplit(abio_para, ",")[[1]] 
+data_files = strsplit(species_files,",")
+
+pred.vars <- character(length(pred_vars))
+
+for (i in seq_along(pred_vars)) {
+       pred_var_col <- as.numeric(pred_vars[i])
+       pred.vars[i] <- names(env)[pred_var_col]}
+       
+#environemental parameters
+#Carbo,Grav,Maxbearing,Maxmagnit,Meancurmag,Meansal,Meantheta,Mud,Prof,Rugosity,Sand,Seaice_prod,Sili,Slope,Standcurmag,Standsal,Standtheta
+
+#Load functions
+
+make.brt <- function(spe,data,pred.vars,env,nb_file){
+   brt_step <- gbm.step(data= data, gbm.x = pred.vars, gbm.y = spe, family = "bernoulli", tree.complexity = 2, learning.rate = 0.0001,max.trees = 10000,plot.main = F)
+   #plot
+   if (is.null(brt_step)==FALSE){
+     pdf(file = paste("BRT-",spe,".pdf"))
+     gbm.plot(brt_step, write.title = T,show.contrib = T, y.label = "fitted function",plot.layout = c(3,3))
+     dev.off()
+     #total deviance explained as (Leathwick et al., 2006)
+     total_deviance <- brt_step$self.statistics$mean.null
+     cross_validated_residual_deviance <- brt_step$cv.statistics$deviance.mean
+     total_deviance_explained <- (total_deviance - cross_validated_residual_deviance)/total_deviance
+     #Validation file
+     valid = cbind(spe,brt_step$cv.statistics$discrimination.mean,brt_step$gbm.call$tree.complexity,total_deviance_explained)
+     write.table(valid, paste(nb_file,"_brts_validation_ceamarc.tsv",sep=""), quote=FALSE, dec=".",sep="\t" ,row.names=F, col.names=F,append = T)}
+   
+   return(brt_step)
+   }
+
+make.prediction.brt <- function(brt_step){
+  #predictions
+  preds <- predict.gbm(brt_step,env,n.trees=brt_step$gbm.call$best.trees, type="response")
+  preds <- as.data.frame(cbind(env$lat,env$long,preds))
+  colnames(preds) <- c("lat","long","Prediction.index")
+  #carto
+  ggplot()+
+    geom_raster(data = preds , aes(x = long, y = lat, fill = Prediction.index))+
+    geom_raster(data = preds , aes(x = long, y = lat, alpha = Prediction.index))+
+    scale_alpha(range = c(0,1), guide = "none")+
+    scale_fill_viridis_c(
+      alpha = 1,
+      begin = 0,
+      end = 1,
+      direction = -1,
+      option = "D",
+      values = NULL,
+      space = "Lab",
+      na.value = "grey50",
+      guide = "colourbar",
+      aesthetics = "fill")+
+    xlab("Longitude") + ylab("Latitude")+ ggtitle(paste(spe,"Plot of BRT predictions"))+
+    theme(plot.title = element_text(size = 10))+
+    theme(axis.title.y = element_text(size = 10))+
+    theme(axis.title.x = element_text(size = 10))+
+    theme(axis.text.y = element_text(size = 10))+
+    theme(axis.text.x = element_text(size = 10))+
+    theme(legend.text = element_text(size = 10))+
+    theme(legend.title = element_text(size = 10))+ 
+    coord_quickmap()
+  output_directory <- ggsave(paste("BRT-",spe,"_pred_plot.png"))
+  
+  #Write prediction in a file
+  preds <- cbind(preds,spe)
+  write.table(preds, paste(nb_file,"_brts_pred_ceamarc.tsv",sep=""), quote=FALSE, dec=".", row.names=F, col.names=T,append = T,sep="\t")
+}
+
+#### RUN BRT ####
+nb_file = 0
+
+for (file in data_files[[1]]) {
+  species_data <- read.table(file, dec = dec_species, sep = "\t", header = TRUE, na.strings = "NA", colClasses = "numeric")
+  nb_file = nb_file + 1
+  `%!in%` <- Negate(`%in%`)
+  sp = list()
+  for (n in names(species_data)) {
+    if (n %!in% names(env) && n != 'station'){
+       sp = cbind(sp,n)
+    }
+  }     
+  for (spe in sp){
+   try(make.prediction.brt(make.brt(spe,species_data,pred.vars,env,nb_file)))
+   }
+}
+
+cat("Here is the list of your abiotic parameters:\n")
+cat(paste(pred.vars, collapse = ", "), "\n")
+
+
b
diff -r 000000000000 -r 5cde56683579 cluster_ceamarc.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cluster_ceamarc.R Thu Mar 21 14:05:01 2024 +0000
[
@@ -0,0 +1,52 @@
+##13/04/2023
+##Seguineau Pauline
+### Clustering with Clara algorithm
+
+#load library 
+library(cluster)
+library(dplyr)
+library(tidyverse)
+
+#load arguments
+args = commandArgs(trailingOnly=TRUE) 
+if (length(args)==0)
+{
+    stop("This tool needs at least one argument")
+}else{
+    data <- args[1]
+    enviro <- args[2]
+    data.bio <- args[3]
+    k <- as.numeric(args[4])
+    metric <- args[5]
+    sample <- as.numeric(args[6])
+}
+
+#load data 
+env.data <- read.table(enviro, header=TRUE, sep="\t",dec = ".", na.strings = "-9999")
+data.bio <- read.table(data.bio, header=TRUE, sep="\t")
+test3 <- read.table(data, header = TRUE, sep="\t") 
+
+######################################################################################################
+#Make clustering
+
+k <- k  #number of clusters
+test5 <- clara(test3, k, metric = metric,  samples = sample, sampsize = min(nrow(test3), (nrow(data.bio)/nrow(test3))+2*k))
+
+#######################################################################################################
+#save results
+
+png("sih.png")
+plot(silhouette(test5))
+dev.off()
+
+clus <- cbind(data.bio[1:nrow(test3), 1:2],test5$clustering)
+names(clus) <- c("lat", "long", "cluster")
+clus <- cbind(clus,test3,env.data[,3:19])
+
+write.table(clus[1:3], file = "points_clus.tsv", quote = FALSE, sep="\t", row.names = FALSE)
+write.table(clus, file = "clus.tsv", quote = FALSE, sep="\t", row.names = FALSE)
+
+
+
+
+
b
diff -r 000000000000 -r 5cde56683579 crea_carte_G.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/crea_carte_G.R Thu Mar 21 14:05:01 2024 +0000
[
@@ -0,0 +1,38 @@
+#Author : Seguineau Pauline
+
+
+#Create a map from cluster
+
+library(sf)
+library(tmap)
+library(dplyr)
+
+args = commandArgs(trailingOnly=TRUE) 
+if (length(args)==0)
+{
+    stop("This tool needs at least one argument")
+}else{
+    data <- args[1]
+}
+
+clus <- read.table(data, sep="\t" ,header=TRUE, na.strings = "na")
+
+#tmap method
+
+sf_data <- st_as_sf(clus, coords = c("long", "lat"), crs =4326)
+
+grouped_data <- sf_data %>%
+  group_by(cluster) %>%
+  summarize()
+
+map <- tm_shape(grouped_data) + 
+  tm_dots(col = "cluster", palette = "Accent", n=256, size = 0.1, title = "ecoregions")+
+  tm_scale_bar(position = c("right","top"))+
+  tm_compass(position = c("right","top"))+
+  tm_layout(frame = FALSE,legend.position = c("left","bottom"))+
+  tm_xlab("Longitude")+
+  tm_ylab("Latitude")+
+  tm_grid(alpha = 0.2)
+
+#Save the map 
+tmap_save(map, "ecoregions.png")
b
diff -r 000000000000 -r 5cde56683579 nb_clust_G.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nb_clust_G.R Thu Mar 21 14:05:01 2024 +0000
[
@@ -0,0 +1,73 @@
+# Script to determine the optimal number of clusters thanks to the optimization of the SIH index and to produce the files needed in the next step of clustering
+
+#load packages
+library(cluster)
+library(dplyr)
+library(tidyverse)
+
+#load arguments
+args = commandArgs(trailingOnly=TRUE) 
+if (length(args)==0)
+{
+    stop("This tool needs at least one argument")
+}else{
+    enviro <- args[1]
+    taxa_list <- args[2]
+    preds <- args[3]
+    max_k <- as.numeric(args[4])
+    metric <- args[5]
+    sample <- as.numeric(args[6])
+}
+
+#load data 
+
+env.data <- read.table(enviro, sep="\t", header = TRUE, dec = ".", na.strings = "-9999") 
+
+##List of modelled taxa used for clustering
+tv <- read.table(taxa_list, dec=".", sep=" ", header=F, na.strings = "NA") 
+names(tv) <- c("a")
+
+################Grouping of taxa if multiple prediction files entered ################
+
+data_split = str_split(preds,",")
+data.bio = NULL
+
+for (i in 1:length(data_split[[1]])) {
+data.bio1 <- read.table(data_split[[1]][i], dec=".", sep="\t", header=T, na.strings = "NA")
+data.bio <- rbind(data.bio,data.bio1)
+remove(data.bio1)
+}
+
+names(data.bio) <- c("lat", "long", "pred", "taxon")
+
+#keep selected taxa
+data.bio <- data.bio[which(data.bio$taxon %in% tv$a),]
+
+write.table(data.bio,file="data_bio.tsv",sep="\t",quote=F,row.names=F)
+
+#format data
+
+test3 <- matrix(data.bio$pred , nrow = nrow(env.data),  ncol = nrow(data.bio)/nrow(env.data))
+test3 <- data.frame(test3)
+names(test3) <- unique(data.bio$taxon)
+
+write.table(test3, file="data_to_clus.tsv", sep="\t",quote=F,row.names=F)
+
+#Max number of clusters to test
+max_k <- max_k
+
+# Initialization of vectors to store SIH indices
+sih_values <- rep(0, max_k)
+
+# Calculation of the SIH index for each number of clusters
+for (k in 2:max_k) {
+  # Clara execution
+  clara_res <- clara(test3, k,  metric =metric,  samples = sample, sampsize = min(nrow(test3), (nrow(data.bio)/nrow(test3))+2*k))
+  # Calculation of the SIH index
+  sih_values[k] <- clara_res$silinfo$avg.width
+}
+
+# Plot SIH Index Chart by Number of Clusters
+png("Indices_SIH.png")
+plot(2:max_k, sih_values[2:max_k], type = "b", xlab = "Number of clusters", ylab = "SIH index")
+dev.off()
b
diff -r 000000000000 -r 5cde56683579 recup_liste_taxon.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/recup_liste_taxon.R Thu Mar 21 14:05:01 2024 +0000
[
@@ -0,0 +1,93 @@
+#This script allows us to create a file telling us for each taxon if we obtained a BRT model. As well as the list of taxa.
+
+#load packages
+library(dplyr, warn.conflicts = FALSE)
+library(taxonomyCleanr, warn.conflicts = FALSE)
+library(stringr, warn.conflicts = FALSE)

+#load arguments
+args = commandArgs(trailingOnly=TRUE) 
+
+if (length(args)==0){
+    stop("This tool needs at least one argument")
+}else{
+    data <- args[1]
+    preds <- args[2]
+    enviro <- args[3]
+}
+
+env = read.table(enviro, sep="\t", dec=".", header=T, na.strings = "-9999")
+occurrence_files = strsplit(data,",")
+preds_files = strsplit(preds,",")
+
+#########functions##########
+
+`%!in%` <- Negate(`%in%`)
+
+have_model = data.frame()
+pres = 0
+
+have.model <- function(taxon_phylum,noms_sp,comptage_sp,brt_phylum){
+  for (tax in taxon_phylum) {
+    if (tax %in% names(noms_sp)){
+      pres = sum(comptage_sp[tax])
+    }
+    if (tax %in% brt_phylum$spe  ) {
+      brt = c(tax,"Yes", pres)
+      have_model = rbind(have_model,brt, make.row.names = F)}
+    else {
+      brt = c(tax,"No", pres)
+      have_model = rbind(have_model,brt, make.row.names = F)}
+  }
+  colnames(have_model) = c("Taxa","Model","Occurences")
+  return(have_model)}
+
+##########Execution########
+brt = NULL
+for (j in 1:length(preds_files[[1]])){
+    brt <- rbind(brt,read.table(preds_files[[1]][j], sep="\t", header = TRUE, na.strings = "na"))
+}
+
+for (i in 1:length(occurrence_files[[1]])) {
+  occurrence <- NULL
+  cmpt <- NULL
+  taxon <- list()
+  
+  occurrence <- read.table(occurrence_files[[1]][i], sep = "\t", header = TRUE, na.strings = "na")
+  
+  taxon_names <- names(occurrence)
+  new_taxon <- taxon_names[!(taxon_names %in% names(env)) & taxon_names != "station"]
+  taxon <- c(taxon, new_taxon)
+  
+  cmpt <- occurrence[, new_taxon]
+  cmpt <- as.data.frame(cmpt)
+  
+  have_model <- have.model(taxon, occurrence, cmpt, brt)
+}
+
+#Taxa for which a model was obtained
+have_model2 = subset(have_model, have_model$`Model` != "No")
+have_model3 = subset(have_model, have_model$`Model` != "No")
+
+#Obtain a list of taxa (cleaned) that have obtained a BRT model (file that can be submitted to the match taxa tool of the WoRMS database to obtain their classification and be able to sort duplicates between taxonomic ranks)
+
+have_model2$Taxa <- as.character(trim_taxa(have_model2$Taxa))
+
+#Second clean-up (elimination of all taxa ending in sp1./sp2 etc which represents a duplicate)
+
+have_model2 <- have_model2 %>% filter(!str_ends(Taxa, "sp.1|sp[0-9]"))
+have_model3 <- have_model3 %>% filter(!str_ends(Taxa, "sp.1|sp[0-9]"))
+have_model <- have_model %>% filter(!str_ends(Taxa, "sp.1|sp[0-9]"))
+
+#extraction of the have_model object
+write.table(have_model,file = "have_model.tsv", sep="\t", quote = F, row.names = F)
+
+#getting list of taxa for next step if not using worms
+list_taxon = have_model3$Taxa
+write.table(list_taxon, file= "list_taxa.txt", quote = F, row.names = F, col.names = F)
+
+#getting the final list to submit to worms
+liste_taxon = have_model2$Taxa
+write.table(liste_taxon,file = "list_taxa_clean.txt", quote = F, row.names = F, col.names = F)
+
+
b
diff -r 000000000000 -r 5cde56683579 test-data/1_brts_pred_ceamarc.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1_brts_pred_ceamarc.tsv Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,32 @@
+lat long Prediction.index spe
+-65.57 139.22 0.841140843659849 Actiniaria
+-65.57 139.22 0.84803516905332 Actiniaria
+-65.57 139.23 0.845987230372577 Actiniaria
+-65.57 139.24 0.845807234659773 Actiniaria
+-65.57 139.24 0.845815355113451 Actiniaria
+-65.57 139.25 0.838300654503413 Actiniaria
+-65.57 139.26 0.836294936412005 Actiniaria
+-65.57 139.26 0.836091676730536 Actiniaria
+-65.57 139.27 0.835788235641246 Actiniaria
+-65.57 139.28 0.83554848351174 Actiniaria
+-65.57 139.28 0.842919257873871 Actiniaria
+-65.57 139.29 0.843113627396164 Actiniaria
+-65.57 139.3 0.837674310999705 Actiniaria
+-65.57 139.3 0.78950055854148 Actiniaria
+-65.57 139.31 0.789217507689643 Actiniaria
+lat long Prediction.index spe
+-65.57 139.22 0.247351772498557 Thouarella_vulpicauda
+-65.57 139.22 0.247098939858693 Thouarella_vulpicauda
+-65.57 139.23 0.246144373571671 Thouarella_vulpicauda
+-65.57 139.24 0.245908115738853 Thouarella_vulpicauda
+-65.57 139.24 0.245908115738853 Thouarella_vulpicauda
+-65.57 139.25 0.245908115738853 Thouarella_vulpicauda
+-65.57 139.26 0.292387985632338 Thouarella_vulpicauda
+-65.57 139.26 0.24323878088903 Thouarella_vulpicauda
+-65.57 139.27 0.233523508895553 Thouarella_vulpicauda
+-65.57 139.28 0.222381660561301 Thouarella_vulpicauda
+-65.57 139.28 0.22225741167332 Thouarella_vulpicauda
+-65.57 139.29 0.215965799041526 Thouarella_vulpicauda
+-65.57 139.3 0.224167139202414 Thouarella_vulpicauda
+-65.57 139.3 0.251901045968841 Thouarella_vulpicauda
+-65.57 139.31 0.251653126333346 Thouarella_vulpicauda
b
diff -r 000000000000 -r 5cde56683579 test-data/Data.bio_table.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/Data.bio_table.tsv Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,31 @@
+lat long pred taxon
+-65.57 139.22 0.841140843659849 Actiniaria
+-65.57 139.22 0.84803516905332 Actiniaria
+-65.57 139.23 0.845987230372577 Actiniaria
+-65.57 139.24 0.845807234659773 Actiniaria
+-65.57 139.24 0.845815355113451 Actiniaria
+-65.57 139.25 0.838300654503413 Actiniaria
+-65.57 139.26 0.836294936412005 Actiniaria
+-65.57 139.26 0.836091676730536 Actiniaria
+-65.57 139.27 0.835788235641246 Actiniaria
+-65.57 139.28 0.83554848351174 Actiniaria
+-65.57 139.28 0.842919257873871 Actiniaria
+-65.57 139.29 0.843113627396164 Actiniaria
+-65.57 139.3 0.837674310999705 Actiniaria
+-65.57 139.3 0.78950055854148 Actiniaria
+-65.57 139.31 0.789217507689643 Actiniaria
+-65.57 139.22 0.247351772498557 Thouarella_vulpicauda
+-65.57 139.22 0.247098939858693 Thouarella_vulpicauda
+-65.57 139.23 0.246144373571671 Thouarella_vulpicauda
+-65.57 139.24 0.245908115738853 Thouarella_vulpicauda
+-65.57 139.24 0.245908115738853 Thouarella_vulpicauda
+-65.57 139.25 0.245908115738853 Thouarella_vulpicauda
+-65.57 139.26 0.292387985632338 Thouarella_vulpicauda
+-65.57 139.26 0.24323878088903 Thouarella_vulpicauda
+-65.57 139.27 0.233523508895553 Thouarella_vulpicauda
+-65.57 139.28 0.222381660561301 Thouarella_vulpicauda
+-65.57 139.28 0.22225741167332 Thouarella_vulpicauda
+-65.57 139.29 0.215965799041526 Thouarella_vulpicauda
+-65.57 139.3 0.224167139202414 Thouarella_vulpicauda
+-65.57 139.3 0.251901045968841 Thouarella_vulpicauda
+-65.57 139.31 0.251653126333346 Thouarella_vulpicauda
b
diff -r 000000000000 -r 5cde56683579 test-data/Data_to_cluster.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/Data_to_cluster.tsv Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,16 @@
+Actiniaria Thouarella_vulpicauda
+0.841140843659849 0.247351772498557
+0.84803516905332 0.247098939858693
+0.845987230372577 0.246144373571671
+0.845807234659773 0.245908115738853
+0.845815355113451 0.245908115738853
+0.838300654503413 0.245908115738853
+0.836294936412005 0.292387985632338
+0.836091676730536 0.24323878088903
+0.835788235641246 0.233523508895553
+0.83554848351174 0.222381660561301
+0.842919257873871 0.22225741167332
+0.843113627396164 0.215965799041526
+0.837674310999705 0.224167139202414
+0.78950055854148 0.251901045968841
+0.789217507689643 0.251653126333346
b
diff -r 000000000000 -r 5cde56683579 test-data/List_of_taxa.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/List_of_taxa.txt Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,2 @@
+Actiniaria
+Thouarella_vulpicauda
b
diff -r 000000000000 -r 5cde56683579 test-data/List_of_taxa_clean.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/List_of_taxa_clean.txt Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,2 @@
+Actiniaria
+Thouarella vulpicauda
b
diff -r 000000000000 -r 5cde56683579 test-data/SIH_index_plot.png
b
Binary file test-data/SIH_index_plot.png has changed
b
diff -r 000000000000 -r 5cde56683579 test-data/Summary_of_taxa_model.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/Summary_of_taxa_model.tsv Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,8 @@
+Taxa Model Occurences
+Acanthogorgiidae No 0
+Actiniaria Yes 50
+Ainigmaptilon_edisto No 2
+Alcyonacea No 43
+Anthozoa No 62
+Thouarella_variabilis No 3
+Thouarella_vulpicauda Yes 24
b
diff -r 000000000000 -r 5cde56683579 test-data/ceamarc_env.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ceamarc_env.tsv Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,16 @@
+long lat Carbo Grav Maxbearing Maxmagnit Meancurmag Meansal Meantheta Mud Prof Rugosity Sand Seaice_prod Sili Slope Standcurmag Standsal Standtheta
+139.22 -65.57 0.88 28.59 3.67 0.03 0.03 34.62 -0.13 22.72 -441 -9999 55.76 0.24 3.27 0.28 0.01 0.01 0.18
+139.22 -65.57 0.88 28.61 3.64 0.02 0.03 34.62 -0.13 22.48 -439 -9999 55.74 0.24 3.29 0.27 0.01 0.01 0.18
+139.23 -65.57 0.92 28.62 3.59 0.02 0.03 34.62 -0.14 22.25 -438 -9999 56.28 0.25 3.32 0.22 0.01 0.01 0.19
+139.24 -65.57 0.92 28.63 3.51 0.01 0.03 34.62 -0.14 21.95 -436 -9999 56.57 0.26 3.3 0.08 0.01 0.01 0.19
+139.24 -65.57 0.92 28.64 3.35 0.01 0.03 34.62 -0.14 21.7 -437 -9999 56.58 0.26 3.28 0.05 0.01 0.01 0.19
+139.25 -65.57 0.93 28.65 3 0.0096293305978179 0.03 34.62 -0.15 21.44 -436 -9999 56.63 0.26 3.26 0.29 0.01 0.01 0.19
+139.26 -65.57 0.93 28.63 2.49 0.00871255807578564 0.03 34.62 -0.15 21.11 -432 -9999 56.67 0.26 3.23 0.43 0.01 0.01 0.19
+139.26 -65.57 0.93 28.64 2.01 0.01 0.03 34.62 -0.16 20.83 -429 -9999 56.71 0.26 3.21 0.37 0.01 0.01 0.19
+139.27 -65.57 0.94 28.65 1.71 0.01 0.03 34.62 -0.16 20.55 -427 -9999 56.75 0.26 3.19 0.32 0.01 0.01 0.2
+139.28 -65.57 0.94 28.66 1.54 0.01 0.03 34.62 -0.16 20.21 -424 -9999 56.8 0.26 3.17 0.28 0.01 0.01 0.2
+139.28 -65.57 0.94 28.67 1.44 0.02 0.03 34.62 -0.17 19.74 -422 -9999 56.84 0.26 3.14 0.26 0.01 0.01 0.2
+139.29 -65.57 0.94 28.68 1.74 0.01 0.03 34.62 -0.17 20.86 -421 -9999 56.87 0.26 3.13 0.22 0.01 0.01 0.2
+139.3 -65.57 0.95 28.7 3.46 0.01 0.03 34.62 -0.17 21.3 -420 -9999 56.91 0.26 3.11 0.32 0.01 0.01 0.2
+139.3 -65.57 0.95 28.71 3.91 0.03 0.03 34.62 -0.18 21.01 -414 -9999 57.18 0.26 3.09 0.59 0.01 0.01 0.21
+139.31 -65.57 0.96 28.72 4.03 0.05 0.03 34.62 -0.18 20.76 -406 -9999 57.54 0.26 3.07 0.53 0.01 0.01 0.21
b
diff -r 000000000000 -r 5cde56683579 test-data/cnidaria_filtered.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cnidaria_filtered.tsv Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,64 @@
+station lat long Carbo Grav Maxbearing Maxmagnit Meancurmag Meansal Meantheta Mud Prof Rugosity Sand Seaice_prod Sili Slope Standcurmag Standsal Standtheta Acanthogorgiidae Actiniaria Ainigmaptilon_edisto Alcyonacea Anthozoa Thouarella_variabilis Thouarella_vulpicauda
+1 1 -65,99 142,33 5,51 12,59 2,03 0,16 0,07 34,6 -1,47 29,8 -233 1 56,16 0,11 3,94 0,05 0,03 0,03 0,24 0 1 0 0 1 0 0
+2 10 -66,33 141,3 3,17 5,31 5,2 0,18 0,08 34,61 -1,35 21,5 -215 1 67,39 0,17 5,8 0,24 0,03 0,02 0,28 0 1 0 1 1 0 0
+3 11 -66,56 141,29 3,1 3,28 4,93 0,2 0,08 34,65 -1,73 34,89 -192 1 73,13 0,87 4,48 0,71 0,03 0,04 0,24 0 0 0 1 1 0 0
+4 12 -66,55 140,82 2,78 3,08 3,74 0,34 0,1 34,59 -1,19 25,83 -217 1 68,37 2,62 4,05 2,57 0,06 0,02 0,24 0 1 0 1 1 1 0
+5 13 -66,15 140,65 2,06 7,62 5,36 0,21 0,09 34,56 -1,04 13,18 -217 1 71,68 0,07 2,89 0,37 0,04 0,02 0,26 0 1 0 0 1 0 0
+6 14 -66,33 140,67 2,96 3,12 2,42 0,16 0,08 34,54 -1,02 12,15 -171 1 73,16 0,78 1,17 0,08 0,03 0,01 0,22 0 1 0 0 1 0 0
+7 15 -66,38 139,8 1,06 1,65 1,87 0,14 0,05 34,64 -1,53 69,08 -855 1 48,44 1,43 13,55 2,94 0,03 0,01 0,06 0 1 0 1 1 0 0
+8 16 -66,34 139,99 1,34 2,78 1,61 0,15 0,05 34,6 -1,12 41,06 -538 1 54,72 1,23 5,97 3,7 0,03 0,00839 0,08 0 1 0 0 1 0 0
+9 17 -66,17 139,96 1,71 8,13 4,39 0,31 0,12 34,54 -0,96 17,16 -151 1 61,42 0,54 1,99 0,25 0,05 0,02 0,3 0 1 0 1 1 1 0
+10 18 -66,16 139,65 1,49 7,75 2,24 0,15 0,06 34,59 -1,01 32,71 -432 1 51,4 0,56 3,35 0,42 0,03 0,01 0,26 0 1 0 1 1 0 1
+11 19 -66,15 139,31 1,18 8,58 5,7 0,12 0,04 34,61 -1,36 47,4 -674 1 46,41 0,34 9,92 0,31 0,02 0,00722 0,09 0 1 0 0 1 0 0
+12 2 -65,99 141,32 3,3 14,21 5,01 0,16 0,07 34,6 -1,26 14,05 -235 1 67,07 -0,01 2,09 0,13 0,03 0,03 0,32 0 1 1 1 1 0 1
+13 20 -66 139,99 1,95 20,59 4,98 0,19 0,09 34,56 -1,05 13,25 -192 1 63,46 0,27 1,92 0,21 0,03 0,03 0,26 0 1 0 0 1 0 0
+14 21 -66 139,64 2,26 18,21 2,85 0,16 0,07 34,58 -1,04 44,81 -277 1 57,14 0,76 5,88 1,66 0,03 0,01 0,26 0 1 0 0 1 0 0
+15 22 -66 139,31 1,39 19,2 4,87 0,1 0,04 34,6 -1,05 37,84 -476 1 49,4 0,65 7,09 0,25 0,02 0,00884 0,15 0 1 0 1 1 0 0
+16 26 -66,52 140,02 1,51 1,47 4,4 0,12 0,05 34,6 -1,11 49,11 -247 1 49,52 2,38 10,29 3,16 0,02 0,00984 0,16 0 1 0 0 1 0 0
+17 27 -66,02 142,74 2,61 11,58 5,42 0,13 0,05 34,64 -1,73 25,07 -440 1 46,97 0,24 2,19 0,23 0,02 0,03 0,17 0 1 0 1 1 0 1
+18 28 -65,99 143,02 2,15 11,5 5,37 0,14 0,05 34,64 -1,77 39,29 -467 1 38,66 0,24 2,07 0,32 0,02 0,03 0,12 0 1 0 1 1 0 1
+19 29 -66,02 143,29 1,77 9,98 5,41 0,14 0,05 34,64 -1,78 62,2 -470 1 38,73 0,33 4,81 0,19 0,02 0,03 0,1 0 1 0 1 1 0 1
+20 3 -65,99 141,98 5,27 14,32 5,31 0,01 0,06 34,6 -1,4 22,84 -245 1 61,04 -0,00886 3,93 0,15 0,03 0,03 0,25 0 1 0 0 1 0 0
+21 30 -66 143,68 2,06 9,47 5,42 0,15 0,06 34,61 -1,71 54,73 -429 1 41,27 0,39 1,03 0,22 0,03 0,03 0,19 0 1 0 0 1 0 0
+22 31 -66,55 144,99 1,05 19,55 5,28 0,12 0,03 34,62 -1,73 35,57 -437 1 39,47 5,14 1,77 0,45 0,02 0,03 0,16 0 0 0 1 1 0 1
+23 34 -66,33 144,34 1,26 6,31 4,92 0,13 0,04 34,63 -1,77 44,96 -455 1 40,49 1,87 2,96 0,39 0,02 0,03 0,12 0 1 0 1 1 0 1
+24 35 -66,33 144,01 1,2 4,9 2,11 0,12 0,04 34,64 -1,78 49,09 -511 1 39,41 1,54 4,15 0,32 0,02 0,02 0,1 0 1 0 1 1 0 0
+25 36 -66,32 143,65 1,12 4,29 2,16 0,12 0,04 34,64 -1,79 53,85 -565 1 38,83 1,26 8,68 0,38 0,02 0,02 0,13 0 1 0 1 1 0 1
+26 37 -66,55 143,31 1,34 4,32 2,02 0,12 0,04 34,66 -1,82 78,15 -820 1 47,92 2,76 13,57 0,26 0,02 0,03 0,11 0 1 0 0 1 0 0
+27 38 -66,33 143,31 0,82 3,84 2,2 0,1 0,04 34,65 -1,8 84,13 -703 1 41,01 0,98 16,47 0,25 0,02 0,03 0,12 0 1 0 1 1 1 0
+28 39 -66,56 143,02 1,67 4,11 1,5 0,13 0,05 34,65 -1,8 47,63 -862 1 56,71 2,22 7,3 0,18 0,02 0,02 0,1 0 1 0 0 1 0 0
+29 40 -66,65 142,98 1,94 3,93 5,42 0,13 0,04 34,63 -1,75 41,4 -598 1 58,72 3,57 5,71 1,57 0,02 0,03 0,12 0 0 0 1 1 0 1
+30 41 -66,76 142,65 2,67 2,67 0,14 0,15 0,04 34,65 -1,76 38,32 -598 1 62,33 4,43 6,01 4,29 0,02 0,04 0,16 0 0 0 1 1 0 1
+31 42 -66,87 142,66 2,92 1,71 5,49 0,13 0,04 34,63 -1,72 47,93 -391 1 62,77 8,27 6,89 1,19 0,02 0,05 0,2 0 0 0 1 1 0 1
+32 43 -66,74 143,33 2 3,28 4,67 0,19 0,06 34,61 -1,74 62,82 -332 1 54,92 7,42 9,35 3,78 0,03 0,05 0,16 0 1 0 1 1 0 0
+33 45 -66,75 144 2,19 3,12 5,5 0,16 0,04 34,61 -1,8 42,36 -661 1 43,64 7,49 5,95 4,51 0,03 0,02 0,07 0 1 0 1 1 0 1
+34 46 -66,87 144,1 2,59 1,31 5,89 0,17 0,05 34,59 -1,78 38,87 -561 1 43,42 10,54 4,09 1,16 0,03 0,04 0,14 0 0 0 1 1 0 1
+35 48 -66,93 144,65 1,59 0,58 5,75 0,21 0,06 34,6 -1,83 73,19 -407 1 40,23 11,89 10,52 5,23 0,03 0,03 0,09 0 1 0 1 1 0 0
+36 5 -66,32 142,29 3,03 4,93 5,05 0,2 0,1 34,63 -1,61 39,53 -216 1 61,67 0,27 2,63 0,11 0,04 0,02 0,17 0 0 0 1 1 0 1
+37 50 -66,75 145,27 1,02 5,5 5,49 0,13 0,04 34,64 -1,77 52,4 -596 1 39,8 9,53 4,66 0,23 0,02 0,03 0,1 0 1 0 1 1 0 1
+38 51 -66,74 145,48 0,95 6,47 5,5 0,2 0,05 34,62 -1,78 49,32 -535 1 40,91 10,66 3,37 0,55 0,03 0,04 0,11 0 1 0 0 1 0 0
+39 52 -66,55 145,31 1,04 19,26 5,26 0,09 0,03 34,59 -1,67 36,48 -409 1 42,62 6,4 1,12 0,09 0,01 0,03 0,22 0 1 0 0 1 0 0
+40 53 -66,33 144,66 1,24 6,73 5,36 0,13 0,04 34,61 -1,71 62,77 -420 1 42,45 2,27 3,99 0,17 0,02 0,04 0,18 0 1 0 0 1 0 0
+41 54 -65,91 144,02 3,17 12,05 5,16 0,15 0,06 34,57 -0,92 31,38 -375 1 46,27 0,41 2,1 2,62 0,02 0,02 0,4 0 1 1 1 1 0 1
+42 55 -66,33 145,01 1,12 8,85 5,25 0,12 0,04 34,56 -1,68 40,75 -387 1 44,3 3,06 2,2 0,58 0,02 0,03 0,26 0 1 0 1 1 0 1
+43 56 -66,56 144,67 1,3 16,82 2,34 0,13 0,04 34,65 -1,79 45,94 -582 1 39,22 4,26 3,93 0,38 0,02 0,03 0,1 0 1 0 0 1 0 0
+44 57 -66,74 145 1,18 5,21 2,42 0,16 0,05 34,65 -1,8 53,42 -646 1 38,62 7,59 7,28 0,68 0,03 0,03 0,09 0 1 0 0 1 0 0
+45 58 -66,75 144,67 1,28 4,2 2,34 0,18 0,05 34,65 -1,81 79,28 -837 1 34,69 7,08 12,46 0,61 0,03 0,03 0,08 0 1 0 1 1 0 1
+46 6 -66,32 142,66 1,83 4,69 1,69 0,1 0,08 34,65 -1,74 18,2 -384 1 58,78 0,43 2,05 0,09 0,03 0,02 0,15 0 1 0 1 1 0 0
+47 60 -66,56 143,93 1,51 7,74 2,05 0,14 0,05 34,65 -1,82 47,04 -799 1 38,88 3,65 7,36 0,94 0,03 0,03 0,09 0 1 0 1 1 0 0
+48 61 -66,33 142,97 1,15 4,14 5,31 0,13 0,05 34,64 -1,74 52,04 -644 1 49,19 0,67 9,1 0,82 0,02 0,03 0,16 0 1 0 1 1 0 0
+49 62 -66,15 143,32 1,06 10,88 2,17 0,12 0,04 34,64 -1,76 59,46 -545 1 37,97 0,52 5,25 0,23 0,02 0,02 0,14 0 1 0 1 1 0 0
+50 63 -65,85 142,98 3,71 20,11 5,24 0,27 0,11 34,61 -1,22 24,73 -423 1 41,04 0,19 1,03 0,56 0,05 0,02 0,44 0 0 0 1 1 0 1
+51 65 -65,81 143 3,89 21,43 5,23 0,39 0,13 34,61 -0,67 25,78 -777 1 41,24 0,18 1,56 7,69 0,06 0,02 0,33 0 1 0 1 1 0 1
+52 66 -65,75 143,04 NA NA 4,48 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 0 0 1 1 0 0
+53 7 -66,55 142,64 2,12 4,31 1,77 0,18 0,07 34,66 -1,75 15,34 -255 1 65,49 1,46 1,38 6,15 0,03 0,03 0,18 0 0 0 0 0 0 0
+54 70 -66,42 140,52 2,3 2,63 5,35 0,08 0,03 34,64 -1,49 20,33 -1109 1 67,5 1,56 3,67 5,9 0,01 0,01 0,05 0 1 0 0 1 0 0
+55 71 -66,39 140,48 2,22 2,24 5,27 0,06 0,02 34,62 -1,36 19,67 -768 1 67,65 1,36 3,1 7,04 0,01 0,01 0,04 0 1 0 1 1 0 1
+56 72 -66,34 140,48 2,18 2,6 2,34 0,09 0,04 34,58 -1,14 17,49 -407 1 67,61 1,01 2,1 2,74 0,01 0,01 0,11 0 1 0 1 1 0 0
+57 79 -65,7 140,56 1,83 25,43 4,77 0,34 0,16 34,6 -0,94 3,7 -506 1 66,84 0,09 1,91 5,63 0,06 0,02 0,38 0 1 0 1 1 0 1
+58 8 -66,56 142,33 3,36 3,2 1,96 0,16 0,06 34,68 -1,85 67,67 -374 1 60,65 1,04 11,68 1,03 0,03 0,03 0,1 0 1 0 1 1 0 1
+59 81 -65,65 140,44 1,42 28,49 4,93 0,3 0,15 34,62 -0,81 3,75 -1193 1 66,73 0,13 1,29 5,59 0,05 0,02 0,32 0 0 0 1 1 0 0
+60 84 -65,45 139,37 0,98 28,81 1,16 0,06 0,03 34,62 -0,21 17,56 -395 NA 58,04 0,28 2,92 0,29 0,01 0,01 0,22 0 0 0 1 1 0 0
+61 86 -65,47 139,35 0,96 28,78 2,13 0,00947 0,03 34,62 -0,2 18,67 -398 NA 57,91 0,27 2,96 0,26 0,01 0,01 0,22 0 1 0 1 1 0 0
+62 87 -65,49 139,33 0,95 28,75 4,01 0,05 0,03 34,62 -0,19 20,03 -400 NA 57,77 0,27 3,02 0,42 0,01 0,01 0,21 0 1 0 0 1 0 0
+63 9 -66,55 141,99 3,19 3,31 5,38 0,17 0,05 34,68 -1,85 40,51 -357 1 65,13 0,81 6,85 3,19 0,03 0,03 0,1 0 0 0 1 1 0 1
b
diff -r 000000000000 -r 5cde56683579 test-data/ecoregions.png
b
Binary file test-data/ecoregions.png has changed
b
diff -r 000000000000 -r 5cde56683579 test-data/fish_wide.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fish_wide.tsv Thu Mar 21 14:05:01 2024 +0000
b
@@ -0,0 +1,20 @@
+lat long rajidae_bathyraja_sp. myctophidae_electrona_antarctica myctophidae_protomyctophum_bolini
+-67.22 139.96 4 1 0
+-65.46 139.31 0 4 0
+-65.82 142.96 0 0 1
+-65.77 142.92 0 1 1
+-65.64 140.45 0 2 0
+-65.74 142.86 0 1 0
+-65.85 144.04 0 2 0
+-65.44 139.32 0 0 0
+-65.71 140.6 0 0 0
+-66.75 143.95 0 0 0
+-66.41 140.51 0 0 0
+-66.34 140.03 0 0 0
+-66.17 139.35 0 0 0
+-66.33 143.36 0 0 0
+-66.39 140.43 0 0 0
+-66.75 144.96 0 0 0
+-66.34 143.04 0 0 0
+-67.05 145.15 0 0 0
+
b
diff -r 000000000000 -r 5cde56683579 test-data/points_clus.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/points_clus.tsv Thu Mar 21 14:05:01 2024 +0000
b
b'@@ -0,0 +1,155824 @@\n+lat\tlong\tcluster\n+-65.57\t139.22\t1\n+-65.57\t139.22\t1\n+-65.57\t139.23\t1\n+-65.57\t139.24\t1\n+-65.57\t139.24\t1\n+-65.57\t139.25\t1\n+-65.57\t139.26\t1\n+-65.57\t139.26\t1\n+-65.57\t139.27\t1\n+-65.57\t139.28\t1\n+-65.57\t139.28\t1\n+-65.57\t139.29\t1\n+-65.57\t139.3\t1\n+-65.57\t139.3\t1\n+-65.57\t139.31\t1\n+-65.57\t139.32\t1\n+-65.57\t139.32\t1\n+-65.57\t139.33\t1\n+-65.57\t139.34\t1\n+-65.57\t139.34\t1\n+-65.57\t139.35\t1\n+-65.57\t139.36\t1\n+-65.57\t139.36\t1\n+-65.57\t139.37\t1\n+-65.57\t139.38\t1\n+-65.57\t139.38\t1\n+-65.57\t139.39\t1\n+-65.57\t139.4\t1\n+-65.57\t139.4\t1\n+-65.57\t139.41\t1\n+-65.57\t139.42\t1\n+-65.57\t139.42\t2\n+-65.57\t139.43\t2\n+-65.57\t139.44\t2\n+-65.57\t139.44\t1\n+-65.57\t139.45\t1\n+-65.57\t139.46\t1\n+-65.57\t139.46\t1\n+-65.57\t139.47\t1\n+-65.57\t139.48\t1\n+-65.57\t139.48\t1\n+-65.57\t139.49\t1\n+-65.57\t139.5\t1\n+-65.57\t139.5\t1\n+-65.57\t139.51\t1\n+-65.57\t139.52\t1\n+-65.57\t139.52\t1\n+-65.57\t139.53\t1\n+-65.57\t139.54\t3\n+-65.57\t139.54\t3\n+-65.57\t139.55\t3\n+-65.57\t139.56\t3\n+-65.57\t139.56\t3\n+-65.57\t139.57\t3\n+-65.57\t139.58\t3\n+-65.57\t139.58\t3\n+-65.57\t139.59\t3\n+-65.57\t139.6\t3\n+-65.57\t139.6\t3\n+-65.57\t139.61\t3\n+-65.57\t139.62\t3\n+-65.57\t139.62\t3\n+-65.57\t139.63\t3\n+-65.57\t139.64\t3\n+-65.57\t139.64\t3\n+-65.57\t139.65\t3\n+-65.57\t139.66\t3\n+-65.57\t139.66\t3\n+-65.57\t139.67\t3\n+-65.57\t139.68\t3\n+-65.57\t139.68\t3\n+-65.57\t139.69\t3\n+-65.57\t139.7\t3\n+-65.57\t139.7\t3\n+-65.57\t139.71\t3\n+-65.57\t139.72\t3\n+-65.57\t139.72\t3\n+-65.57\t139.73\t3\n+-65.57\t139.74\t3\n+-65.57\t139.74\t3\n+-65.57\t139.75\t3\n+-65.57\t139.76\t3\n+-65.57\t139.76\t3\n+-65.57\t139.77\t3\n+-65.57\t139.78\t3\n+-65.57\t139.78\t3\n+-65.57\t139.79\t3\n+-65.57\t139.8\t3\n+-65.57\t139.8\t3\n+-65.57\t139.81\t3\n+-65.57\t139.82\t3\n+-65.57\t139.82\t3\n+-65.57\t139.83\t3\n+-65.57\t139.84\t3\n+-65.57\t139.84\t3\n+-65.57\t139.85\t3\n+-65.57\t139.85\t3\n+-65.57\t139.86\t3\n+-65.57\t139.87\t3\n+-65.57\t139.87\t3\n+-65.57\t139.88\t3\n+-65.57\t139.89\t3\n+-65.57\t139.89\t3\n+-65.57\t139.9\t3\n+-65.57\t139.91\t3\n+-65.57\t139.91\t3\n+-65.57\t139.92\t3\n+-65.57\t139.93\t3\n+-65.57\t139.93\t3\n+-65.57\t139.94\t3\n+-65.57\t139.95\t3\n+-65.57\t139.95\t3\n+-65.57\t139.96\t3\n+-65.57\t139.97\t3\n+-65.57\t139.97\t3\n+-65.57\t139.98\t3\n+-65.57\t139.99\t3\n+-65.57\t139.99\t3\n+-65.57\t140\t3\n+-65.57\t140.01\t3\n+-65.57\t140.01\t3\n+-65.57\t140.02\t3\n+-65.57\t140.03\t3\n+-65.57\t140.03\t3\n+-65.57\t140.04\t3\n+-65.57\t140.05\t3\n+-65.57\t140.05\t3\n+-65.57\t140.06\t3\n+-65.57\t140.07\t3\n+-65.57\t140.07\t3\n+-65.57\t140.08\t3\n+-65.57\t140.09\t3\n+-65.57\t140.09\t3\n+-65.57\t140.1\t3\n+-65.57\t140.11\t3\n+-65.57\t140.11\t3\n+-65.57\t140.12\t3\n+-65.57\t140.13\t3\n+-65.57\t140.13\t3\n+-65.57\t140.14\t3\n+-65.57\t140.15\t3\n+-65.57\t140.15\t3\n+-65.57\t140.44\t3\n+-65.57\t140.45\t3\n+-65.57\t140.45\t3\n+-65.57\t140.46\t3\n+-65.57\t140.47\t3\n+-65.57\t140.47\t3\n+-65.57\t140.48\t3\n+-65.57\t140.49\t3\n+-65.57\t140.49\t3\n+-65.57\t140.5\t3\n+-65.57\t140.51\t3\n+-65.57\t140.51\t3\n+-65.57\t140.52\t3\n+-65.57\t140.53\t3\n+-65.57\t140.53\t3\n+-65.57\t140.54\t3\n+-65.57\t140.55\t3\n+-65.57\t140.55\t3\n+-65.57\t140.56\t3\n+-65.57\t140.57\t3\n+-65.57\t140.57\t3\n+-65.57\t140.58\t3\n+-65.57\t140.59\t3\n+-65.57\t140.59\t3\n+-65.57\t140.6\t3\n+-65.57\t140.61\t3\n+-65.57\t140.61\t3\n+-65.57\t140.62\t3\n+-65.57\t140.63\t3\n+-65.57\t140.63\t3\n+-65.57\t140.64\t3\n+-65.57\t140.65\t3\n+-65.57\t140.65\t3\n+-65.57\t140.66\t3\n+-65.57\t140.67\t3\n+-65.57\t140.67\t3\n+-65.57\t140.68\t3\n+-65.57\t140.69\t3\n+-65.57\t140.69\t3\n+-65.57\t140.7\t3\n+-65.57\t140.71\t3\n+-65.57\t140.71\t3\n+-65.57\t140.72\t3\n+-65.57\t140.73\t3\n+-65.57\t140.73\t3\n+-65.57\t140.74\t3\n+-65.57\t140.75\t3\n+-65.57\t140.75\t3\n+-65.57\t140.76\t3\n+-65.57\t140.76\t3\n+-65.57\t140.77\t3\n+-65.57\t140.78\t3\n+-65.57\t140.78\t3\n+-65.57\t140.79\t3\n+-65.57\t140.8\t3\n+-65.57\t140.8\t3\n+-65.57\t140.81\t3\n+-65.57\t140.82\t3\n+-65.57\t140.82\t3\n+-65.57\t140.83\t3\n+-65.57\t140.84\t3\n+-65.57\t140.84\t3\n+-65.57\t140.85\t3\n+-65.57\t140.86\t3\n+-65.57\t140.86\t3\n+-65.57\t140.92\t3\n+-65.57\t140.93\t3\n+-65.57\t140.94\t3\n+-65.57\t140.94\t3\n+-65.57\t140.95\t3\n+-65.57\t140.96\t3\n+-65.57\t140.96\t3\n+-65.57\t140.97\t3\n+-65.57\t140.98\t3\n+-65.57\t140.98\t3\n+-65.57\t140.99\t3\n+-65.57\t141\t3\n+-65.57\t141.4\t3\n+-65.57\t141.4\t3\n+-65.57\t141.41\t3\n+-65.57\t141.42\t3\n+-65.57\t141.42\t3\n+-65.57\t141.43\t3\n+-65.57\t141.44\t3\n+-65.57\t141.44\t3\n+-65.57\t141.45\t3\n+-65.57\t141.46\t3\n+-65.57\t141.46\t3\n+-65.57\t141.47\t3\n+-65.57\t141.48\t3\n+-65.57\t141.48\t3\n+-65.57\t141.49\t3\n+-65.57\t1'..b'\t2\n+-67.01\t144.82\t1\n+-67.01\t144.83\t1\n+-67.01\t144.84\t1\n+-67.01\t144.84\t1\n+-67.01\t144.85\t1\n+-67.01\t144.86\t1\n+-67.01\t144.86\t1\n+-67.01\t144.87\t1\n+-67.01\t144.88\t1\n+-67.01\t144.88\t1\n+-67.01\t144.89\t1\n+-67.01\t144.9\t5\n+-67.01\t144.9\t5\n+-67.01\t144.91\t5\n+-67.01\t144.92\t5\n+-67.01\t144.92\t5\n+-67.01\t144.93\t5\n+-67.01\t144.94\t5\n+-67.01\t144.94\t5\n+-67.01\t144.95\t5\n+-67.01\t144.96\t5\n+-67.01\t144.96\t5\n+-67.01\t144.97\t5\n+-67.01\t144.98\t5\n+-67.01\t144.98\t5\n+-67.01\t144.99\t5\n+-67.01\t145\t5\n+-67.01\t145\t5\n+-67.01\t145.01\t5\n+-67.01\t145.02\t5\n+-67.01\t145.02\t5\n+-67.01\t145.03\t5\n+-67.01\t145.04\t5\n+-67.01\t145.04\t5\n+-67.01\t145.05\t5\n+-67.01\t145.06\t5\n+-67.01\t145.06\t5\n+-67.01\t145.07\t5\n+-67.01\t145.08\t5\n+-67.01\t145.08\t5\n+-67.01\t145.09\t5\n+-67.01\t145.1\t5\n+-67.01\t145.1\t5\n+-67.01\t145.11\t5\n+-67.01\t145.12\t5\n+-67.01\t145.18\t5\n+-67.01\t145.18\t5\n+-67.01\t145.19\t5\n+-67.01\t145.2\t5\n+-67.01\t145.2\t5\n+-67.01\t145.21\t5\n+-67.01\t145.22\t5\n+-67.01\t145.22\t5\n+-67.01\t145.23\t5\n+-67.01\t145.24\t5\n+-67.01\t145.24\t5\n+-67.01\t145.25\t5\n+-67.01\t145.25\t5\n+-67.01\t145.26\t5\n+-67.01\t145.27\t5\n+-67.01\t145.27\t5\n+-67.01\t145.28\t5\n+-67.01\t145.29\t5\n+-67.01\t145.29\t5\n+-67.01\t145.3\t5\n+-67.01\t145.31\t5\n+-67.01\t145.31\t5\n+-67.01\t145.32\t5\n+-67.01\t145.33\t5\n+-67.01\t145.33\t5\n+-67.01\t145.34\t5\n+-67.01\t145.35\t5\n+-67.01\t145.35\t5\n+-67.01\t145.36\t5\n+-67.01\t145.37\t5\n+-67.01\t145.37\t5\n+-67.01\t145.38\t5\n+-67.01\t145.39\t5\n+-67.01\t145.39\t5\n+-67.01\t145.4\t5\n+-67.01\t145.41\t5\n+-67.01\t145.41\t5\n+-67.01\t145.42\t5\n+-67.01\t145.43\t5\n+-67.01\t145.43\t5\n+-67.01\t145.44\t5\n+-67.01\t145.45\t5\n+-67.01\t145.45\t5\n+-67.01\t145.46\t5\n+-67.01\t145.47\t5\n+-67.01\t145.47\t5\n+-67.01\t145.48\t5\n+-67.01\t145.49\t5\n+-67.01\t145.49\t5\n+-67.01\t145.5\t5\n+-67.01\t145.51\t5\n+-67.01\t145.51\t5\n+-67.01\t145.52\t5\n+-67.01\t145.53\t5\n+-67.01\t144.01\t2\n+-67.01\t144.02\t1\n+-67.01\t144.03\t1\n+-67.01\t144.03\t1\n+-67.01\t144.04\t1\n+-67.01\t144.05\t1\n+-67.01\t144.05\t1\n+-67.01\t144.06\t1\n+-67.01\t144.07\t1\n+-67.01\t144.07\t1\n+-67.01\t144.08\t1\n+-67.01\t144.09\t1\n+-67.01\t144.09\t2\n+-67.01\t144.1\t2\n+-67.01\t144.11\t2\n+-67.01\t144.11\t2\n+-67.01\t144.12\t2\n+-67.01\t144.13\t2\n+-67.01\t144.13\t2\n+-67.01\t144.14\t2\n+-67.01\t144.15\t2\n+-67.01\t144.15\t2\n+-67.01\t144.16\t2\n+-67.01\t144.64\t2\n+-67.01\t144.65\t2\n+-67.01\t144.66\t2\n+-67.01\t144.66\t2\n+-67.01\t144.68\t2\n+-67.01\t144.69\t2\n+-67.01\t144.7\t2\n+-67.01\t144.7\t2\n+-67.01\t144.71\t2\n+-67.01\t144.72\t2\n+-67.01\t144.72\t2\n+-67.01\t144.73\t2\n+-67.01\t144.74\t2\n+-67.01\t144.74\t2\n+-67.01\t144.75\t2\n+-67.01\t144.76\t2\n+-67.01\t144.76\t2\n+-67.01\t144.77\t2\n+-67.01\t144.78\t2\n+-67.01\t144.78\t2\n+-67.01\t144.79\t2\n+-67.01\t144.8\t2\n+-67.01\t144.8\t2\n+-67.01\t144.81\t2\n+-67.01\t144.82\t2\n+-67.01\t144.82\t2\n+-67.01\t144.83\t1\n+-67.01\t144.84\t1\n+-67.01\t144.84\t1\n+-67.01\t144.85\t1\n+-67.01\t144.86\t1\n+-67.01\t144.86\t1\n+-67.01\t144.87\t1\n+-67.01\t144.88\t1\n+-67.01\t144.88\t1\n+-67.01\t144.89\t1\n+-67.01\t144.9\t5\n+-67.01\t144.9\t5\n+-67.01\t144.91\t5\n+-67.01\t144.92\t5\n+-67.01\t144.92\t5\n+-67.01\t144.93\t5\n+-67.01\t144.94\t5\n+-67.01\t144.94\t5\n+-67.01\t144.95\t5\n+-67.01\t144.96\t5\n+-67.01\t144.96\t5\n+-67.01\t144.97\t5\n+-67.01\t144.98\t5\n+-67.01\t144.98\t5\n+-67.01\t144.99\t5\n+-67.01\t145\t5\n+-67.01\t145\t5\n+-67.01\t145.01\t5\n+-67.01\t145.02\t5\n+-67.01\t145.02\t5\n+-67.01\t145.03\t5\n+-67.01\t145.04\t5\n+-67.01\t145.06\t5\n+-67.01\t145.06\t5\n+-67.01\t145.07\t5\n+-67.01\t145.08\t5\n+-67.01\t145.08\t5\n+-67.01\t145.19\t5\n+-67.01\t145.2\t5\n+-67.01\t145.2\t5\n+-67.01\t145.21\t5\n+-67.01\t145.22\t5\n+-67.01\t145.22\t5\n+-67.01\t145.23\t5\n+-67.01\t145.24\t5\n+-67.01\t145.24\t5\n+-67.01\t145.25\t5\n+-67.01\t145.25\t5\n+-67.01\t145.26\t5\n+-67.01\t145.27\t5\n+-67.01\t145.27\t5\n+-67.01\t145.28\t5\n+-67.01\t145.29\t5\n+-67.01\t145.29\t5\n+-67.01\t145.3\t5\n+-67.01\t145.31\t5\n+-67.01\t145.31\t5\n+-67.01\t145.32\t5\n+-67.01\t145.33\t5\n+-67.01\t145.33\t5\n+-67.01\t145.34\t5\n+-67.01\t145.35\t5\n+-67.01\t145.35\t5\n+-67.01\t145.36\t5\n+-67.01\t145.37\t5\n+-67.01\t145.37\t5\n+-67.01\t145.38\t5\n+-67.01\t145.39\t5\n+-67.01\t145.39\t5\n+-67.01\t145.4\t5\n+-67.01\t145.41\t5\n+-67.01\t145.41\t5\n+-67.01\t145.42\t5\n+-67.01\t145.43\t5\n+-67.01\t145.43\t5\n+-67.01\t145.44\t5\n+-67.01\t145.45\t5\n+-67.01\t145.45\t5\n+-67.01\t145.46\t5\n+-67.01\t145.47\t5\n+-67.01\t145.47\t5\n+-67.01\t145.48\t5\n+-67.01\t145.49\t5\n+-67.01\t145.49\t5\n+-67.01\t145.5\t5\n+-67.01\t145.51\t5\n+-67.01\t145.51\t1\n+-67.01\t145.52\t1\n+-67.01\t145.53\t1\n'