Skip to content

Commit

Permalink
added figures for paper
Browse files Browse the repository at this point in the history
  • Loading branch information
Konrad1991 committed Oct 29, 2024
1 parent cb11202 commit 5412faf
Show file tree
Hide file tree
Showing 42 changed files with 935 additions and 81 deletions.
4 changes: 4 additions & 0 deletions .lintr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
linters: linters_with_defaults(
object_name_linter = NULL,
commented_code_linter = NULL
)
113 changes: 113 additions & 0 deletions Paper/.$Overview.drawio.bkp
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17">
<diagram name="Page-1" id="HnJ3nRGEBLMsVnPNde7O">
<mxGraphModel dx="2074" dy="1198" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="1" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="0JIacsvV9MGdMcNl1dDF-27" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="40" y="620" width="600" height="760" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-21" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="40" y="465" width="600" height="130" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontStyle=1" edge="1" parent="1" source="0JIacsvV9MGdMcNl1dDF-1" target="0JIacsvV9MGdMcNl1dDF-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-1" value="States (Host, Guest or Dye) &amp;amp; Signal" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="120" y="290" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontStyle=1" edge="1" parent="1" source="0JIacsvV9MGdMcNl1dDF-2" target="0JIacsvV9MGdMcNl1dDF-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-2" value="Additional Parameters e.g. parameter boundaries" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="280" y="290" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-3" value="Particle swarm optimization" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="280" y="390" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontStyle=1" edge="1" parent="1" source="0JIacsvV9MGdMcNl1dDF-6" target="0JIacsvV9MGdMcNl1dDF-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-6" value="Loss function" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="440" y="290" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-8" value="&lt;span&gt;Initialisation&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="530" y="497" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-13" value="$$&lt;br&gt;\begin{bmatrix}&lt;br&gt;x_{11} &amp;amp; x_{12} &amp;amp; x_{13} &amp;amp; x_{14} \\&lt;br&gt;x_{21} &amp;amp; x_{22} &amp;amp; x_{23} &amp;amp; x_{24} \\&lt;br&gt;\vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \vdots \\&lt;br&gt;x_{40,1} &amp;amp; x_{40,2} &amp;amp; x_{40,3} &amp;amp; x_{40,4}&lt;br&gt;\end{bmatrix}$$" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="400" y="497" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="0JIacsvV9MGdMcNl1dDF-14">
<mxGeometry relative="1" as="geometry">
<mxPoint x="330" y="512" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-14" value="\begin{bmatrix}&lt;br/&gt;u_1 \\&lt;br/&gt;u_2 \\&lt;br/&gt;u_3 \\&lt;br/&gt;u_4&lt;br/&gt;\end{bmatrix}" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="100" y="497" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-15" value="\begin{bmatrix}&lt;br/&gt;l_1 \\&lt;br/&gt;l_2 \\&lt;br/&gt;l_3 \\&lt;br/&gt;l_4&lt;br/&gt;\end{bmatrix}" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="50" y="497" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-18" value="&lt;b&gt;Boundaries&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="80" y="557" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-19" value="&lt;b&gt;Swarm&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="395" y="557" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-22" value="&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="870" y="600" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-26" value="\begin{bmatrix}&lt;br&gt;Row_{10} &amp;amp; Row_{21} &amp;amp; Row_{24}&amp;nbsp; \\&lt;br&gt;Row_{3} &amp;amp; Row_{11} \\&lt;br&gt;\vdots \\&amp;nbsp;&lt;br&gt;Row_{1}&lt;br&gt;\end{bmatrix}" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="225" y="800" width="200" height="120" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-28" value="&lt;span&gt;Optimization&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="480" y="680" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-29" value="&lt;b&gt;While&lt;/b&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;Generation &amp;lt; ngen&lt;/b&gt;&lt;/div&gt;" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="280" y="640" width="100" height="110" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-30" value="$$&lt;br&gt;\begin{bmatrix}&lt;br&gt;x_{11} &amp;amp; x_{12} &amp;amp; x_{13} &amp;amp; x_{14} \\&lt;br&gt;x_{21} &amp;amp; x_{22} &amp;amp; x_{23} &amp;amp; x_{24} \\&lt;br&gt;\vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \vdots \\&lt;br&gt;x_{40,1} &amp;amp; x_{40,2} &amp;amp; x_{40,3} &amp;amp; x_{40,4}&lt;br&gt;\end{bmatrix}$$" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="295" y="990" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-33" value="&lt;span&gt;Calculate neighberhood&lt;/span&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="480" y="840" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-34" value="&lt;b&gt;Update Swarm&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="480" y="980" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="0JIacsvV9MGdMcNl1dDF-35" target="0JIacsvV9MGdMcNl1dDF-40">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-35" value="Loss function" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="280" y="1105" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-36" value="$$&lt;br&gt;\begin{bmatrix}&lt;br&gt;x_{11} &amp;amp; x_{12} &amp;amp; x_{13} &amp;amp; x_{14} \\&lt;br&gt;x_{21} &amp;amp; x_{22} &amp;amp; x_{23} &amp;amp; x_{24} \\&lt;br&gt;\vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \vdots \\&lt;br&gt;x_{40,1} &amp;amp; x_{40,2} &amp;amp; x_{40,3} &amp;amp; x_{40,4}&lt;br&gt;\end{bmatrix}$$" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="140" y="1120" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-39" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="0JIacsvV9MGdMcNl1dDF-35">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="250" y="1135.9302325581393" as="sourcePoint" />
<mxPoint x="380" y="1080" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-40" value="\begin{bmatrix}&lt;br&gt;E_1 \\&lt;br&gt;E_2 \\&lt;br&gt;\vdots \\&lt;br&gt;E_{40}&lt;br&gt;\end{bmatrix}" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="420" y="1120" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-44" value="&lt;b&gt;Evaluate Swarm&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="480" y="1105" width="110" height="30" as="geometry" />
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="0JIacsvV9MGdMcNl1dDF-45" target="0JIacsvV9MGdMcNl1dDF-29">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="70" y="1290" />
<mxPoint x="70" y="695" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="0JIacsvV9MGdMcNl1dDF-45" value="&lt;b&gt;If&amp;nbsp;&lt;/b&gt;&lt;div&gt;&lt;b&gt;best particle error &amp;gt;threshold&lt;/b&gt;&lt;/div&gt;" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="270" y="1230" width="120" height="120" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file modified Paper/DecentFitParameterVariance/FigNr1.pdf
Binary file not shown.
Binary file modified Paper/DecentFitParameterVariance/FigNr1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 62 additions & 2 deletions Paper/DecentFitParameterVariance/FigNr1_Run_Simulations.R
Original file line number Diff line number Diff line change
@@ -1,12 +1,72 @@
library(tsf)
library(parallel)
num_cores <- detectCores() - 1

# Figure Nr. 1
# one measured curve & 5 simulated curves (created by vastly different parameter sets)
# one measured curve & 10 curves (created by vastly different parameter sets)
# ============================================================

# Creating the 5 different simulations
# Creating the 10 different simulations
# ============================================================

# GDA new data set
# ============================================================
gda_new <- function() {
lowerBounds <- c(
kG = 100,
I0 = 0,
IHD = 0,
ID = 100
)
# NOTE: upper bounds are set due to results of preliminary runs
upperBounds <- c(
kG = 10^6,
I0 = 10^3,
IHD = 10^10,
ID = 10^6
)
additionalParameters <- c(
host = 50 * 10^-6,
guest = 292 * 10^-6,
kHD = 33000
)

# NOTE: data var column [M]
data <- readLines("../NewGDA/GDA_system_3.txt")
var <- lapply(data, function(x) {
strsplit(x, split = "\t")[[1]][1]
}) |> unlist()
signal <- lapply(data, function(x) {
strsplit(x, split = "\t")[[1]][2]
}) |> unlist()
# NOTE: Only the first dataset is used
df <- data.frame(var = var[2:25], signal = signal[2:25])
df$var <- as.numeric(df$var)
df$signal <- as.numeric(df$signal)
set.seed(1234)
seeds <- sample(1:1e6, 20)
result <- mclapply(seeds, function(seed) {
opti(
case = "gda",
lowerBounds = lowerBounds,
upperBounds = upperBounds,
path = df,
seed = seed,
ngen = 1000,
errorThreshold = 0.6,
additionalParameters = additionalParameters,
add_info = as.character(seed)
)
}, mc.cores = num_cores)
# Filter the 10 best ones
m <- lapply(result, function(x) x$metrices)
m <- Reduce(rbind, m)
result <- result[order(m[, 1])[1:10]]
save(result, file = "GDA_10_different_seeds.RData")
}
gda_new()
stop()

# GDA
# ============================================================
gda <- function() {
Expand Down
34 changes: 32 additions & 2 deletions Paper/DecentFitParameterVariance/FigNr1_Visualisation.R
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ dotsize <- 0.5
boxplot_size <- 0.5
outlier_size <- 0.5

calc_errors <- function(df) {
df <- split(df, df$seed)
lapply(df, function(x) {
signal <- x[, 2]
signalInsilico <- x[, 3]
return(sum(abs(signal - signalInsilico) / signal))
}) |> unlist()
}

sig_plot <- function(case, path, legend = FALSE) {
load(path)
seeds <- lapply(result, function(x) x$seed)
Expand All @@ -14,6 +23,20 @@ sig_plot <- function(case, path, legend = FALSE) {
})
df <- Reduce(rbind, df)

errors <- calc_errors(df)
errors_df <- data.frame(errors = errors)
p_errors <- ggplot() +
geom_boxplot(
data = errors_df,
aes(x = "", y = errors)
) +
labs(x = "", y = "rel. Error") +
theme(
axis.text = element_text(size = 5),
axis.title = element_text(size = 5),
) +
coord_flip()

df_forward_sim <- lapply(seq_len(length(result)), function(idx) {
res <- result[[idx]][[1]]
params <- result[[idx]][[2]]
Expand Down Expand Up @@ -66,6 +89,12 @@ sig_plot <- function(case, path, legend = FALSE) {
colour = guide_legend(override.aes = list(fill = NA))
)

p_signal <- plot_grid(
p_signal, p_errors,
nrow = 2,
rel_heights = c(1, 0.3)
)

if (!legend) {
p_signal <- p_signal + theme(legend.position = "none")
}
Expand Down Expand Up @@ -108,6 +137,7 @@ param_plot <- function(path) {
strip.text = element_text(size = 6)
)
}

empty_plot <- ggplot() +
theme_void()
size_dashes <- 0.25
Expand Down Expand Up @@ -164,10 +194,10 @@ p_param <- ggdraw(p_param) +
)

p <- plot_grid(p_signal, p_param, nrow = 2)
ggsave("../FigNr1.pdf", p,
ggsave("FigNr1.pdf", p,
width = 8, height = 8 * 2 / 3
)
ggsave("../FigNr1.png", p,
ggsave("FigNr1.png", p,
width = 8, height = 8 * 2 / 3,
bg = "white", dpi = 800
)
Binary file modified Paper/DecentFitParameterVariance/GDA_10_different_seeds.RData
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Paper/DecentFitParameterVariance/Rplots.pdf
Binary file not shown.
80 changes: 28 additions & 52 deletions Paper/MeasurementVariance/MeasurementVariance.R
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ dba <- function() {
ID = 0
)
upperBounds <- c(
kHD = 10^7,
kHD = 10^5,
I0 = 10^5,
IHD = 10^8,
ID = 10^7
Expand All @@ -18,73 +18,50 @@ dba <- function() {
lowerBounds, upperBounds,
path = "../DBA.txt",
additionalParameters,
ngen = 1000,
num_rep = 5, num_cores = 4,
ngen = 150,
num_rep = 5, num_cores = 5,
errorThreshold = 0.6
)
}
res <- dba()
save(res, file = "dba.RData")

ida <- function() {
lowerBounds <- c(
kG = 0,
I0 = 0,
IHD = 0,
ID = 0
)
upperBounds <- c(
kG = 10^10,
I0 = 10^2,
IHD = 10^10,
ID = 10^10
)
additionalParameters <- c(
host = 4.3 * 10^-6,
dye = 6 * 10^-6,
kHD = 1.7E07
)

tsf::batch("ida",
lowerBounds, upperBounds,
path = "../IDA.txt",
additionalParameters,
ngen = 1000,
num_rep = 5, num_cores = 4,
errorThreshold = 0.6
)
}
res <- ida()
save(res, file = "ida.RData")
m <- res[[1]]$metrices
m <- Reduce(rbind, m)
print(m)
p <- res[[1]]$params
p <- Reduce(rbind, p)
p$error <- m[, 1]
print(p)

save(res, file = "dba.RData")
stop()


gda <- function() {
lowerBounds <- c(
kG = 10,
kG = 100,
I0 = 0,
IHD = 0,
ID = 0
ID = 100
)
# NOTE: upper bounds are set due to results of preliminary runs
upperBounds <- c(
kG = 10^9,
I0 = 700,
IHD = 10^9,
ID = 10^9
kG = 10^6,
I0 = 10^3,
IHD = 10^10,
ID = 10^6
)
additionalParameters <- c(
host = 103 * 10^-6,
guest = 1050 * 10^-6,
kHD = 2431.14
host = 50 * 10^-6,
guest = 292 * 10^-6,
kHD = 33000
)

tsf::batch("gda",
lowerBounds, upperBounds,
path = "../GDA.txt",
path = "../NewGDA/GDA_system_3.txt",
additionalParameters,
ngen = 1000,
num_rep = 5, num_cores = 4,
errorThreshold = 0.6
ngen = 100,
num_rep = 5, num_cores = 5,
errorThreshold = 1
)
}
res <- gda()
Expand Down Expand Up @@ -112,14 +89,13 @@ dba <- function() {
path = "../DBA.txt",
additionalParameters,
ngen = 1000,
num_rep = 5, num_cores = 4,
num_rep = 5, num_cores = 5,
errorThreshold = 0.6
)
}
res <- dba()
save(res, file = "dba.RData")


ida <- function() {
lowerBounds <- c(
kG = 0,
Expand All @@ -144,7 +120,7 @@ ida <- function() {
path = "../IDA.txt",
additionalParameters,
ngen = 1000,
num_rep = 5, num_cores = 4,
num_rep = 5, num_cores = 5,
errorThreshold = 0.6
)
}
Expand Down
Binary file modified Paper/MeasurementVariance/dba.RData
Binary file not shown.
Binary file modified Paper/MeasurementVariance/gda.RData
Binary file not shown.
Binary file modified Paper/MeasurementVariance/ida.RData
Binary file not shown.
Binary file modified Paper/MeasurementVariance/variance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 5412faf

Please sign in to comment.