Skip to content

Commit c3ad6da

Browse files
committed
added a forward run after each optimisation. The values are than interpolated at the points of the measured variable which was added continously. Afterwards, the forward simulated signal was used in the plots
1 parent a983879 commit c3ad6da

File tree

11 files changed

+95
-143
lines changed

11 files changed

+95
-143
lines changed

Rplots.pdf

-4.49 KB
Binary file not shown.

Tests/DBA_const_dye/Rplots.pdf

10.8 KB
Binary file not shown.

Tests/DBA_const_dye/tests.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ res <- opti(
2525
dye = 0.000151
2626
),
2727
npop = 40,
28-
ngen = 1000,
28+
ngen = 11,
2929
Topology = "random",
3030
errorThreshold = 0.7
3131
)

Tests/GDA/Rplots.pdf

-109 Bytes
Binary file not shown.

Tests/IDA/Rplots.pdf

-17.7 KB
Binary file not shown.

Tests/IDA/tests.R

Lines changed: 14 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -13,96 +13,38 @@ library(tsf)
1313
# Test several opti calls in parallel
1414
path <- "/home/konrad/Documents/GitHub/RProjects/Thermosimfit/Tests/IDA/idaBatch.csv"
1515
list_df <- tsf:::importDataBatch(path)
16+
1617
seeds <- 1:length(list_df)
1718
messages <- paste0(1:length(list_df))
18-
lowerBounds = c(
19+
lowerBounds <- c(
1920
kG = 1000,
2021
I0 = 0,
2122
IHD = 0,
2223
ID = 0
2324
)
24-
upperBounds = c(
25+
upperBounds <- c(
2526
kG = 10^8,
2627
I0 = 100, # started at 10^7 but it ended always at 0...
2728
IHD = 10^7,
2829
ID = 10^7
2930
)
30-
additionalParameters = c(
31+
additionalParameters <- c(
3132
host = 1e-6,
3233
dye = 1e-6,
3334
kHD = 3e6
3435
)
3536

36-
call_several_opti_in_bg <- function(case, lb, ub, df_list, ap,
37-
seed_list, npop, ngen, topo,
38-
et, messages) {
39-
process <- callr::r_bg(
40-
function(case, lb, ub, df_list, ap,
41-
seed_list, npop, ngen, topo,
42-
et, messages) {
43-
env <- new.env()
44-
env$intermediate_results <- lapply(seq_len(length((df_list))),
45-
function(x) x)
46-
47-
for (i in seq_len(length(df_list))) {
48-
tryCatch(
49-
expr = {
50-
df <- df_list[[i]]
51-
seed <- seed_list[[i]]
52-
m <- messages[[i]]
53-
result <- tsf::opti(
54-
case, lb, ub, df, ap, seed, npop, ngen,
55-
topo, et, m
56-
)
57-
env$intermediate_results[[i]] <- result
58-
return(env$intermediate_results)
59-
},
60-
interrupt = function(e) {
61-
warning("interrupted!")
62-
return(env$intermediate_results)
63-
},
64-
error = function(e) {
65-
warning("\n\n Probably not finished optimisation \n\n")
66-
return(env$intermediate_results)
67-
}
68-
)
69-
}
70-
},
71-
args = list(
72-
case, lb, ub, df_list,
73-
ap, seed_list, npop, ngen, topo,
74-
et, messages
75-
)
76-
)
77-
return(process)
78-
}
79-
80-
res <- call_several_opti_in_bg(
37+
res <- opti(
8138
case = "ida",
82-
lb = lowerBounds,
83-
ub = upperBounds,
84-
df_list = list_df,
85-
ap = additionalParameters,
86-
seed_list = seeds,
39+
lowerBounds = lowerBounds,
40+
upperBounds = upperBounds,
41+
path = list_df[[1]],
42+
seed = 1234,
43+
additionalParameters = additionalParameters,
8744
npop = 40,
88-
ngen = 20,
89-
topo = "random",
90-
et = 0.7,
91-
messages = messages
45+
ngen = 100,
46+
Topology = "random",
47+
errorThreshold = 0.3
9248
)
9349

94-
counter <- 1
95-
Sys.sleep(5)
96-
while (TRUE) {
97-
if (!res$is_alive()) break
98-
cat(res$read_output())
99-
res$interrupt()
100-
res$wait()
101-
}
102-
cat("Counter ", counter, "\n")
103-
print("Errors:")
104-
print(res$read_all_error())
105-
result <- res$get_result()
106-
cat("Length results ", length(result), "\n")
107-
trash <- lapply(result, function(x) print(class(x)))
108-
result
50+
res[[3]]

tsf/R/ForwardLossFunctions.R

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ forward_dba_host_const <- function(Kd, Id, Ihd, h0, d0_values) {
5757
upper = d0,
5858
tol = 1e-14,
5959
Kd = Kd,
60-
Kg = Kg,
6160
h0 = h0,
6261
d0 = d0
6362
)$root
@@ -83,9 +82,8 @@ forward_dba_host_const <- function(Kd, Id, Ihd, h0, d0_values) {
8382
silent = TRUE
8483
)
8584
}
86-
8785
results_table <- data.frame(
88-
h0 = valid_h0,
86+
d0 = valid_d0,
8987
Signal = Signal_values
9088
)
9189

tsf/R/ForwardSimulation.R

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ forward_simulation <- function(case, df, additionalParameters, parameter, n = 10
1818
if (n > 10000) {
1919
stop("n has to be smaller than 10000")
2020
}
21-
if (case == "hg" && length(additionalParameters) != 1) {
21+
if (case == "hg" && length(additionalParameters) != 1) { # TODO: add check for dba
2222
stop("additionalParameters have to be of length 1")
2323
}
2424
if (case == "ida" && length(additionalParameters) != 3) {
@@ -60,6 +60,7 @@ forward_simulation <- function(case, df, additionalParameters, parameter, n = 10
6060
params[[1]], params[[2]],
6161
params[[3]], params[[4]], params[[5]]
6262
)
63+
result[, 2] <- result[, 2] + parameter[2]
6364
} else if (case == "dba_dye_const") {
6465
params[[1]] <- parameter[1] # KaHD
6566
params[[2]] <- parameter[4] # I(D)
@@ -70,6 +71,7 @@ forward_simulation <- function(case, df, additionalParameters, parameter, n = 10
7071
params[[1]], params[[2]],
7172
params[[3]], params[[4]], params[[5]]
7273
)
74+
result[, 2] <- result[, 2] + parameter[2]
7375
} else if (case == "ida") {
7476
params[[1]] <- parameter[1] # KaHG
7577
params[[2]] <- parameter[4] # I(D)
@@ -83,6 +85,7 @@ forward_simulation <- function(case, df, additionalParameters, parameter, n = 10
8385
params[[2]], params[[3]],
8486
params[[4]], params[[5]], params[[7]]
8587
)
88+
result[, 2] <- result[, 2] + parameter[2]
8689
} else if (case == "gda") {
8790
params[[1]] <- parameter[1] # KaHD
8891
params[[2]] <- parameter[4] # I(D)
@@ -96,6 +99,7 @@ forward_simulation <- function(case, df, additionalParameters, parameter, n = 10
9699
params[[2]], params[[3]],
97100
params[[4]], params[[5]], params[[7]]
98101
)
102+
result[, 2] <- result[, 2] + parameter[2]
99103
}
100104
return(result)
101105
}

tsf/R/optimize.R

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,17 @@ opti <- function(case, lowerBounds, upperBounds,
215215
env, lowerBounds, upperBounds, lossFct, ngen, npop,
216216
errorThreshold, Topo, FALSE, runAsShiny, add_info
217217
)
218-
df <- create_data_df(df, res, case)
219218
params <- create_params_df(res, case)
219+
forwardResult <- forward_simulation(
220+
case, df,
221+
additionalParameters, params
222+
)
223+
df <- create_data_df(df, res, case)
224+
df[["Signal simulated"]] <- spline(
225+
x = forwardResult[, 1],
226+
y = forwardResult[, 2],
227+
xout = df[, 1]
228+
)$y
220229
lowerBounds <- correct_names_params(lowerBounds, case)
221230
upperBounds <- correct_names_params(upperBounds, case)
222231
additionalParameters <- correct_names_additional_param(
@@ -232,8 +241,17 @@ opti <- function(case, lowerBounds, upperBounds,
232241
},
233242
interrupt = function(e) {
234243
res <- runAsShiny$insilico
235-
df <- create_data_df(df, res, case)
236244
params <- create_params_df(res, case)
245+
forwardResult <- forward_simulation(
246+
case, df,
247+
additionalParameters, params
248+
)
249+
df <- create_data_df(df, res, case)
250+
df[["Signal simulated"]] <- spline(
251+
x = forwardResult[, 1],
252+
y = forwardResult[, 2],
253+
xout = df[, 1]
254+
)$y
237255
lowerBounds <- correct_names_params(lowerBounds, case)
238256
upperBounds <- correct_names_params(upperBounds, case)
239257
additionalParameters <- correct_names_additional_param(

0 commit comments

Comments
 (0)