Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
SimAquaLife
GR3D
Commits
4372effe
Commit
4372effe
authored
Apr 21, 2021
by
patrick.lambert
Browse files
run EsayRun function in R:
still error
parent
01b7001f
Changes
2
Hide whitespace changes
Inline
Side-by-side
exploration/NEA_sensitivity_analysis/extractNumeroProcess.R
0 → 100644
View file @
4372effe
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
exploration/NEA_sensitivity_analysis/tryFromJava.R
View file @
4372effe
...
...
@@ -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
1
0 years (colonised basins)
# only basins with more than 50 recruits in average in the last
5
0 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()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment