comparison alpha_beta.r @ 0:a8dabbf47e15 draft

planemo upload for repository https://github.com/Marie59/Sentinel_2A/srs_tools commit b32737c1642aa02cc672534e42c5cb4abe0cd3e7
author ecology
date Mon, 09 Jan 2023 13:39:08 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:a8dabbf47e15
1 #Rscript
2
3 ###########################################
4 ## Mapping alpha and beta diversity ##
5 ###########################################
6
7 #####Packages : stars
8 # utils
9 # biodivmapr
10 # raster
11 # sf
12 # mapview
13 # leafpop
14 # RColorBrewer
15 # labdsv
16 # rgdal
17 # ggplot2
18 # gridExtra
19
20 #####Load arguments
21
22 args <- commandArgs(trailingOnly = TRUE)
23
24 #####Import the S2 data
25
26 if (length(args) < 1) {
27 stop("This tool needs at least 1 argument")
28 }else {
29 data_raster <- args[1]
30 rasterheader <- args[2]
31 data <- args[3]
32 # type of PCA:
33 # PCA: no rescaling of the data
34 # SPCA: rescaling of the data
35 typepca <- as.character(args[4])
36 alpha <- as.logical(args[5])
37 beta <- as.logical(args[6])
38 funct <- as.logical(args[7])
39 all <- as.logical(args[8])
40 nbcpu <- as.integer(args[9])
41 source(args[10])
42 }
43
44 ################################################################################
45 ## DEFINE PARAMETERS FOR DATASET TO BE PROCESSED ##
46 ################################################################################
47 if (data_raster == "") {
48 #Create a directory where to unzip your folder of data
49 dir.create("data_dir")
50 unzip(data, exdir = "data_dir")
51 # Path to raster
52 data_raster <- list.files("data_dir/results/Reflectance", pattern = "_Refl")
53 input_image_file <- file.path("data_dir/results/Reflectance", data_raster[1])
54 input_header_file <- file.path("data_dir/results/Reflectance", data_raster[2])
55
56 } else {
57 input_image_file <- file.path(getwd(), data_raster, fsep = "/")
58 input_header_file <- file.path(getwd(), rasterheader, fsep = "/")
59 }
60
61 ################################################################################
62 ## PROCESS IMAGE ##
63 ################################################################################
64 # 1- Filter data in order to discard non vegetated / shaded / cloudy pixels
65
66 print("PERFORM PCA ON RASTER")
67 pca_output <- biodivMapR::perform_PCA(Input_Image_File = input_image_file, Input_Mask_File = input_mask_file,
68 Output_Dir = output_dir, TypePCA = typepca, FilterPCA = filterpca, nbCPU = nbcpu, MaxRAM = maxram)
69
70 pca_files <- pca_output$PCA_Files
71 pix_per_partition <- pca_output$Pix_Per_Partition
72 nb_partitions <- pca_output$nb_partitions
73 # path for the updated mask
74 input_mask_file <- pca_output$MaskPath
75
76
77 selected_pcs <- seq(1, dim(raster::stack(input_image_file))[3])
78
79 selected_pcs <- all(selected_pcs)
80 ################################################################################
81 ## MAP ALPHA AND BETA DIVERSITY ##
82 ################################################################################
83 print("MAP SPECTRAL SPECIES")
84
85 kmeans_info <- biodivMapR::map_spectral_species(Input_Image_File = input_image_file, Output_Dir = output_dir, PCA_Files = pca_files, Input_Mask_File = input_mask_file, SelectedPCs = selected_pcs, Pix_Per_Partition = pix_per_partition, nb_partitions = nb_partitions, TypePCA = typepca, nbCPU = nbcpu, MaxRAM = maxram, nbclusters = nbclusters)
86
87 image_name <- tools::file_path_sans_ext(basename(input_image_file))
88 if (alpha == TRUE || beta == TRUE || all == TRUE) {
89 ## alpha
90 print("MAP ALPHA DIVERSITY")
91 index_alpha <- c("Shannon")
92 alpha_div <- biodivMapR::map_alpha_div(Input_Image_File = input_image_file, Output_Dir = output_dir, TypePCA = typepca, window_size = window_size, nbCPU = nbcpu, MaxRAM = maxram, Index_Alpha = index_alpha, nbclusters = nbclusters, FullRes = TRUE, LowRes = FALSE, MapSTD = FALSE)
93
94 alpha_zip <- file.path(output_dir, image_name, typepca, "ALPHA", "Shannon_10_Fullres.zip")
95 alpha_path <- file.path(output_dir, image_name, typepca, "ALPHA")
96 unzip(alpha_zip, exdir = alpha_path)
97 alpha_path <- file.path(output_dir, image_name, typepca, "ALPHA", "Shannon_10_Fullres")
98 alpha_raster <- raster::raster(alpha_path)
99 get_alpha <- convert_raster(alpha_raster)
100
101 if (alpha == TRUE || all == TRUE) {
102 colnames(get_alpha) <- c("Alpha", "longitude", "latitude")
103 plot_indices(get_alpha, titre = "Alpha")
104
105 write.table(get_alpha, file = "alpha.tabular", sep = "\t", dec = ".", na = " ", row.names = FALSE, col.names = TRUE, quote = FALSE)
106 }
107 if (beta == TRUE || all == TRUE) {
108 ## beta
109 print("MAP BETA DIVERSITY")
110 beta_div <- biodivMapR::map_beta_div(Input_Image_File = input_image_file, Output_Dir = output_dir, TypePCA = typepca, window_size = window_size, nb_partitions = nb_partitions, nbCPU = nbcpu, MaxRAM = maxram, nbclusters = nbclusters)
111
112 beta_path <- file.path(output_dir, image_name, typepca, "BETA", "BetaDiversity_BCdiss_PCO_10")
113 beta_raster <- raster::raster(beta_path)
114 get_beta <- convert_raster(beta_raster)
115
116 colnames(get_beta) <- c("Beta", "longitude", "latitude")
117 plot_indices(get_beta, titre = "Beta")
118
119 write.table(get_beta, file = "beta.tabular", sep = "\t", dec = ".", na = " ", row.names = FALSE, col.names = TRUE, quote = FALSE)
120 }
121 }
122
123
124 ################################################################################
125 ## COMPUTE ALPHA AND BETA DIVERSITY FROM FIELD PLOTS ##
126 ################################################################################
127
128 if (funct == TRUE || all == TRUE) {
129 mapper <- biodivMapR::map_functional_div(Original_Image_File = input_image_file, Functional_File = pca_files, Selected_Features = selected_pcs, Output_Dir = output_dir, window_size = window_size, nbCPU = nbcpu, MaxRAM = maxram, TypePCA = typepca, FullRes = TRUE, LowRes = FALSE, MapSTD = FALSE)
130
131 funct_zip <- file.path(output_dir, image_name, typepca, "FUNCTIONAL", "FunctionalDiversity_Map_MeanFilter_Fullres.zip")
132 funct_path <- file.path(output_dir, image_name, typepca, "FUNCTIONAL")
133 unzip(funct_zip, exdir = funct_path)
134 funct_path <- file.path(output_dir, image_name, typepca, "FUNCTIONAL", "FunctionalDiversity_Map_MeanFilter_Fullres")
135 funct_raster <- raster::raster(funct_path)
136 get_funct <- convert_raster(funct_raster)
137
138 colnames(get_funct) <- c("Functionnal", "longitude", "latitude")
139 plot_indices(get_funct, titre = "Functionnal")
140
141 write.table(get_funct, file = "Functionnal.tabular", sep = "\t", dec = ".", na = " ", row.names = FALSE, col.names = TRUE, quote = FALSE)
142 }