Mercurial > repos > ecology > estimate_endem
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 |
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 |