Commit 4372effe authored by patrick.lambert's avatar patrick.lambert
Browse files

run EsayRun function in R:

still error
parent 01b7001f
library(tidyverse)
#source("../GR3D_Rdescription/GR3D_NEA_XML_parameters.R")
setwd("~/Documents/workspace/GR3D/exploration/NEA_sensitivity_analysis")
fishXML <- xmlToList(xmlParse("../../data/input/northeastamerica/fishRIOBasin_Sapidissima_Rjava.xml"))
fishXML[["species.DiadromousFishGroup"]][["processes"]]
no_processesEachStep = tibble( process = names(fishXML[["species.DiadromousFishGroup"]][["processes"]][["processesEachStep"]][])) %>%
mutate(no_R = row_number()) %>%
filter(process != "comment") %>%
mutate(no_java = row_number()-1) %>%
select(no_R, no_java, process)
no_processesAtEnd = tibble( process = names(fishXML[["species.DiadromousFishGroup"]][["processes"]][["processesAtEnd"]][])) %>%
mutate(no_R = row_number()) %>%
filter(process != "comment") %>%
mutate(no_java = row_number()-1) %>%
select(no_R, no_java, process)
\ No newline at end of file
......@@ -23,6 +23,7 @@ rm(list = ls())
# GR3D arguments -----------------------------------------
## to have the same working directory as GR3D
#setwd("~/Documents/workspace/GR3D/exploration/NEA_sensitivity_analysis")
setwd("../..")
# path to outputs
......@@ -51,13 +52,41 @@ arguments = c('-q','-simDuration', simDuration, '-simBegin',simBegin,
.jinit(classpath = jarfile, force.init = TRUE)
# modification of xlm parameters -----------------------
parametersNames = c("processes.processesEachStep.10.tempMinRep",
"processes.processesEachStep.10.ratioS95_S50",
"processes.processesEachStep.6.pHomingAfterEquil")
thetas = c(10, 2, 0.7)
parametersNamesANG = c("processes.processesEachStep.11.Soffset")
thetasANG = c(0)
parametersNamesENV = c("simulationName")
thetasENV = c("noAllee")
runEasyRun = function(arguments, parametersNamesANG,thetasANG, parametersNamesENV, thetasENV ){
# run the GR3D with updated parameter values in processes --------------------------------------------
.jclassPath()
.jcall("analysis.EasyRun", "V", "runSimulation", arguments,
.jarray(parametersNamesANG), .jarray(thetasANG),
.jarray(parametersNamesENV), .jarray(thetasENV))
# call GR3D method to get model outputs ----------------------------------------------
#1. northern limit and distribution centroid ----
out = .jcall("analysis.EasyRun","[[Ljava/lang/String;","getValuesFromAquanismGroupProcess","processes.processesEachStep.10.exportToR")
range <- data.frame(matrix(convertToR(out[[2]]), nrow = 1, dimnames = list(NULL, convertToR(out[[1]])))) %>% type_convert()
return(list(range = range))
}
runEasyRun(arguments, parametersNamesANG,thetasANG, parametersNamesENV, thetasENV )
# run the GR3D with updated parameter values in processes --------------------------------------------
.jclassPath()
.jcall("analysis.EasyRun", "V", "runSimulation", arguments, .jarray(parametersNames), .jarray(thetas))
.jcall("analysis.EasyRun", "V", "runSimulation", arguments,
.jarray(parametersNamesANG), .jarray(thetasANG),
.jarray(parametersNamesENV), .jarray(thetasENV))
# call GR3D method to get model outputs ----------------------------------------------
......@@ -65,14 +94,14 @@ thetas = c(10, 2, 0.7)
#TODO export [char] and then data.frame(toto) %>% type_convert()
# ----------------------------------------------------------------------------------#
# 1. northern limit and distribution centroid ----
# only basins with more than 50 recruits in average in the last 10 years (colonised basins)
# only basins with more than 50 recruits in average in the last 50 years (colonised basins)
# compute only in SPRING
# access through getRangeDistribution in DiadromousFishGroup ==== NOT CORRECT
# range[1] = latitude of the median distribution ( 50 % of effectives are northern)
# range[2] = southern limit latitude of the fish distribution
out = .jcall("analysis.EasyRun","[[Ljava/lang/String;","getValuesFromAquanismGroupProcess","processes.processesEachStep.9.exportToR")
out = .jcall("analysis.EasyRun","[[Ljava/lang/String;","getValuesFromAquanismGroupProcess","processes.processesEachStep.10.exportToR")
range <- data.frame(matrix(convertToR(out[[2]]), nrow = 1, dimnames = list(NULL, convertToR(out[[1]])))) %>% type_convert()
......@@ -98,11 +127,16 @@ range <- data.frame(matrix(convertToR(out[[2]]), nrow = 1, dimnames = list(NULL
out = .jcall("analysis.EasyRun","[[Ljava/lang/String;","getValuesFromAquanismGroupProcess","processes.processesEachStep.8.exportToR")
out2 = matrix(unlist(lapply(out, convertToR)), nrow = length(out) , byrow = TRUE)
out3 <- out2[-1,]
colnames(out3) <- unlist(out2[1,])
as.data.frame(out3) %>% type_convert()
convertFromSALtoR = function(java_out){
require(jdx)
out2 = matrix(unlist(lapply(java_out, convertToR)), nrow = length(java_out) , byrow = TRUE)
out3 <- out2[-1,]
colnames(out3) <- unlist(out2[1,])
R_out <- as.data.frame(out3) %>% type_convert()
return(R_out)
}
convertFromSALtoR(java_out = out)
# ------------------------------------------------------------ #
......@@ -118,23 +152,6 @@ as.data.frame(out3) %>% type_convert()
#TODO A FAIRE !!!
# =================================================================================
toto <- .jcall("analysis.EasyRun","Ljava/util/List;",
"getAListFromAquanismGroupProcess","processes.processesAtEnd.1.getRecords")
as.list(toto)
# truc = .jcall("analysis.EasyRun","Ljava/util/List;",
# "getAListFromAquanismGroupProcess","processes.processesAtEnd.1.getRecords")
#
# trucMieux = .jcast(truc, "ljava/util/ArrayList", convert.array = FALSE)
#
# i <- .jnew("java/lang/Integer", as.integer(10))
# print(i)
# print(.jsimplify(i))
# .jcall(trucMieux, "java/lang/Object", "get", i)
#
# with(trucMieux, {get(0)})
# ArrayList = J("java.util.ArrayList")
# .jclassPath()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment