annotate EstimEndem.R @ 1:f3a977826375 draft default tip

planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit cbd0cb48be9f2aa5e30c917d6a9031ef1a7a83c8
author ecology
date Thu, 05 Jun 2025 16:50:45 +0000
parents f7a55ccf2a3e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
1 #!/bin/Rscript
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
2 # phyloregions
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
3
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
4 args = commandArgs(trailingOnly=TRUE)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
5 #args = c("input/matrix_file", "input/tree_file.txt", "input/grid_aq_3_PF.shp")
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
6
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
7 # library
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
8 library(phyloregion)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
9 library(ape)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
10 library(Matrix)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
11 library(SparseArray)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
12 library(sf)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
13 library(sp)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
14 library(raster)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
15 library(dplyr)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
16
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
17
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
18 save_sf <- function(){
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
19 #st_write(phyloreg_sf[,-(3:5)], paste0(tempdir(), "/", "output.shp"), delete_layer = TRUE)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
20 write_sf(phyloreg_sf, "output.shp")
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
21 }
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
22
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
23
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
24 if (length(args)<5){stop('Usage : sparseMatrix.csv tree.txt grid.shp nb_clust clust_method')
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
25 }else{
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
26 # read enter files
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
27 comm_tree <- read.tree(args[1])
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
28
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
29 comm_matrix <- readSparseCSV(args[2], sep = "\t")
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
30 comm_matrix <- as(comm_matrix,"dgCMatrix")
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
31
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
32 grid <- read_sf(args[3])
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
33
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
34 nb_clust <- as.integer(args[4])
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
35
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
36 clust_method <- toString(args[5])
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
37
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
38 # calculate phylogenetic Beta diversity - a phylogenetic distance matrix between grid cells
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
39 phylo_beta <- phylobeta(comm_matrix, comm_tree, index.family = "sorensen")
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
40
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
41 #select the less distorting clustering method, best fitting between phylogenetic distances in phylobeta matrix
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
42 # and raw distances from branch lengths of the tree
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
43 select_linkage(phylo_beta[[1]])
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
44
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
45 #select optimal number of clusters with selected method
1
f3a977826375 planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit cbd0cb48be9f2aa5e30c917d6a9031ef1a7a83c8
ecology
parents: 0
diff changeset
46 optim <- optimal_phyloregion(phylo_beta[[3]])
0
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
47 print(paste("the best number of cluster is :", optim$optimal$k))
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
48 #plot(optim$df$k, optim$df$ev, pch = 20) # k - nbr of clusters VS explained variance given k
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
49 # k has to be selected by a user
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
50
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
51 # pass the grid cell to spatial format
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
52 grid_sp <- as_Spatial(grid)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
53 #proj4string(grid_sp)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
54
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
55 # calculate phyloregions clusters
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
56 y <- phyloregion(phylo_beta[[3]], pol = grid_sp, k = nb_clust, method = clust_method)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
57 #summary(y)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
58 #phylo_nmds <- y$NMDS
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
59
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
60 # take an shp spatial file for phyloregions and put it to sf format
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
61 phyloreg_sf <- y$pol
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
62 # print(st_crs(phyloreg_sf))
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
63 #plot(phyloreg_sf)
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
64 phyloreg_sf <- st_as_sf(phyloreg_sf, crs = st_crs(grid))
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
65 # print(st_crs(phyloreg_sf))
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
66
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
67 names(phyloreg_sf)[3:8] <- c("R_val", "G_val", "B_val", "r_code", "g_code", "b_code")
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
68
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
69
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
70 save_sf()
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
71 }
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
72
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
73
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
74 # sf_recup <- read_sf("output.shp")
f7a55ccf2a3e planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/master/tools/Phylodiversity_workflow commit 0de557d919c26eb0b5ab61504bc597d551503ac3
ecology
parents:
diff changeset
75