From 19ec3a93f7bb9b653a0b3d4374794a583805fce7 Mon Sep 17 00:00:00 2001 From: Alex Zarebski <aezarebski@gmail.com> Date: Wed, 8 Jul 2020 15:39:05 +0100 Subject: [PATCH 01/10] include the plotting script in this example --- README.md | 9 +-- examples/manceau-comparison/README.md | 5 ++ examples/manceau-comparison/makefile | 13 +++++ .../manceau-comparison/src/plot-comparison.R | 57 +++++++++++++++++++ 4 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 examples/manceau-comparison/README.md create mode 100644 examples/manceau-comparison/makefile create mode 100644 examples/manceau-comparison/src/plot-comparison.R diff --git a/README.md b/README.md index ec53efb..4a32b2e 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,7 @@ various observation processes. ## Running the Manceau example -``` -$ stack build -$ stack test -$ stack exec manceau-comparison -$ Rscript R/manceau-comparison.R -``` - -This creates `out/manceau-comparison.pdf`. +See `examples/manceau-comparison/README.md` for details of the comparison ## Simulation study diff --git a/examples/manceau-comparison/README.md b/examples/manceau-comparison/README.md new file mode 100644 index 0000000..04a4555 --- /dev/null +++ b/examples/manceau-comparison/README.md @@ -0,0 +1,5 @@ +# Manceau Comparison + +``` +make figure +``` diff --git a/examples/manceau-comparison/makefile b/examples/manceau-comparison/makefile new file mode 100644 index 0000000..4aad016 --- /dev/null +++ b/examples/manceau-comparison/makefile @@ -0,0 +1,13 @@ + + +out/computed-values.csv: + stack exec -- manceau-comparison + +out/manceau-comparison.pdf: out/computed-values.csv src/plot-comparison.R + Rscript src/plot-comparison.R + +figure: out/manceau-comparison.pdf + +clean: + rm -f out/manceau-comparison.pdf + rm -f out/computed-values.csv diff --git a/examples/manceau-comparison/src/plot-comparison.R b/examples/manceau-comparison/src/plot-comparison.R new file mode 100644 index 0000000..8ed24a4 --- /dev/null +++ b/examples/manceau-comparison/src/plot-comparison.R @@ -0,0 +1,57 @@ +library(ggplot2) + +llAnkit <- c( + -40.4552507476100, + -40.8703238897302, + -41.3817906577664, + -41.9806102480506, + -42.6589107277071, + -43.4097480561603, + -44.2269395654317, + -45.1049441532352, + -46.0387725346941, + -47.0239173599859 +) + +llZar <- c( + -40.4550918517829 + ,-40.87013575276441 + ,-41.38157282061684 + ,-41.9803636161457 + ,-42.658637698856054 + ,-43.40945251151045 + ,-44.226626725508694 + ,-45.104620318860626 + ,-46.03844474479797 + ,-47.02359300426023 +) + +lambdaVals <- 1.0 + 1:10 / 10 + +plot_df <- data.frame(lambda = lambdaVals, ankit = llAnkit, zarebski = llZar) + +font_scale_factor <- 0.5 +fig_theme <- theme( + axis.title.x = element_text(size = font_scale_factor * 22), + axis.ticks = ggplot2::element_blank(), + axis.line.x.bottom = element_line(colour = "#000000"), + legend.title = element_text(size = font_scale_factor * 22), + legend.position = c(0.8,0.87), + plot.title = element_text(size = font_scale_factor * 32), + plot.subtitle = element_text(size = font_scale_factor * 22), + panel.grid.minor = ggplot2::element_blank(), + panel.grid.major.y = ggplot2::element_line(color="#cbcbcb"), + panel.grid.major.x = ggplot2::element_blank(), + panel.background = ggplot2::element_blank(), + strip.background = ggplot2::element_rect(fill="white")) + +ggplot(plot_df, aes(x = lambda)) + + geom_line(aes(y = zarebski)) + + geom_point(aes(y = ankit), shape = 5, size = 3) + + labs(x = "Birth Rate", + y = "Log-likelihood") + + scale_colour_manual(values = c("#1380A1", "#FAAB18")) + + fig_theme + + +ggsave("out/manceau-comparison.pdf", height = 10.5, width = 14.8, units = "cm") -- GitLab From d7ffd88fa35c686b76bda531f81cf352651a21f4 Mon Sep 17 00:00:00 2001 From: Alex Zarebski <aezarebski@gmail.com> Date: Wed, 8 Jul 2020 16:13:31 +0100 Subject: [PATCH 02/10] include basic plot of data set --- .../manceau-comparison/src/plot-comparison.R | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/examples/manceau-comparison/src/plot-comparison.R b/examples/manceau-comparison/src/plot-comparison.R index 8ed24a4..489a278 100644 --- a/examples/manceau-comparison/src/plot-comparison.R +++ b/examples/manceau-comparison/src/plot-comparison.R @@ -55,3 +55,61 @@ ggplot(plot_df, aes(x = lambda)) + ggsave("out/manceau-comparison.pdf", height = 10.5, width = 14.8, units = "cm") + + + + + + + + + + +segment <- function(p0, p1, ...) { + seg_df <- data.frame(x = p0[1], + y = p0[2], + xend = p1[1], + yend = p1[2]) + geom_segment(data = seg_df, + mapping = aes(x = x, + y = y, + xend = xend, + yend = yend), + ...) +} + +occurrence_x_pos <- 5.5 +points_df <- data.frame(x = c(occurrence_x_pos,occurrence_x_pos,3,1,4,5), + y = c(1,5,2,0,0,0), + colour = c( "Occurrence" + , "Occurrence" + , "Sample" + , "Catastrophe" + , "Catastrophe" + , "Catastrophe" + )) + + +g <- ggplot() + + segment(c(occurrence_x_pos,7.5), + c(occurrence_x_pos,-0.5), + linetype = "dashed") + + segment(c(1,0), c(1, 3)) + + segment(c(2,3), c(2, 4)) + + segment(c(3,2), c(3, 3)) + + segment(c(3,4), c(3, 6)) + + segment(c(4,0), c(4, 4)) + + segment(c(4,6), c(4, 7)) + + segment(c(5,0), c(5, 6)) + + segment(c(1,3), c(3,3)) + + segment(c(2,4), c(4,4)) + + segment(c(3,6), c(5,6)) + + geom_point(data = points_df, + mapping = aes(x = x, y = y, colour = colour)) + + labs(colour = "Observation type", + y = "Time") + + theme(axis.line.y = element_line(colour = "grey"), + axis.line.x = element_blank(), + axis.title.x = element_blank()) + +print(g) -- GitLab From 0948dcc29a04c3df94fadb8b83668c1a41364b59 Mon Sep 17 00:00:00 2001 From: Alex Zarebski <aezarebski@gmail.com> Date: Wed, 8 Jul 2020 16:32:38 +0100 Subject: [PATCH 03/10] style the data plot and combine with the llhd values --- .../manceau-comparison/src/plot-comparison.R | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/examples/manceau-comparison/src/plot-comparison.R b/examples/manceau-comparison/src/plot-comparison.R index 489a278..749b9a9 100644 --- a/examples/manceau-comparison/src/plot-comparison.R +++ b/examples/manceau-comparison/src/plot-comparison.R @@ -1,4 +1,5 @@ library(ggplot2) +library(cowplot) llAnkit <- c( -40.4552507476100, @@ -45,23 +46,16 @@ fig_theme <- theme( panel.background = ggplot2::element_blank(), strip.background = ggplot2::element_rect(fill="white")) -ggplot(plot_df, aes(x = lambda)) + +llhd_comp_fig <- ggplot(plot_df, aes(x = lambda)) + geom_line(aes(y = zarebski)) + geom_point(aes(y = ankit), shape = 5, size = 3) + labs(x = "Birth Rate", y = "Log-likelihood") + scale_colour_manual(values = c("#1380A1", "#FAAB18")) + + scale_y_continuous(position = "right") + fig_theme -ggsave("out/manceau-comparison.pdf", height = 10.5, width = 14.8, units = "cm") - - - - - - - @@ -90,7 +84,7 @@ points_df <- data.frame(x = c(occurrence_x_pos,occurrence_x_pos,3,1,4,5), )) -g <- ggplot() + +toy_data_fig <- ggplot() + segment(c(occurrence_x_pos,7.5), c(occurrence_x_pos,-0.5), linetype = "dashed") + @@ -105,11 +99,30 @@ g <- ggplot() + segment(c(2,4), c(4,4)) + segment(c(3,6), c(5,6)) + geom_point(data = points_df, - mapping = aes(x = x, y = y, colour = colour)) + - labs(colour = "Observation type", - y = "Time") + - theme(axis.line.y = element_line(colour = "grey"), + mapping = aes(x = x, y = y, shape = colour), + size = 6) + + labs(shape = "Observation type") + + scale_y_continuous(name = "Time", breaks = 0:7, labels = 7:0) + + scale_shape_manual(values = c(1,4,2)) + + theme(axis.line.y = element_line(), axis.line.x = element_blank(), - axis.title.x = element_blank()) - -print(g) + axis.title.x = element_blank(), + axis.text.x = element_blank(), + axis.ticks.x = element_blank(), + panel.background = element_blank(), + legend.position = "bottom", + legend.key = element_blank() + ) + +manceau_comp <- plot_grid(toy_data_fig, + llhd_comp_fig, + rel_widths = c(0.6,1.0), + labels = c("A", "B"), + scale = 0.9) + +## print(manceau_comp) +ggsave("out/manceau-comparison.pdf", + plot = manceau_comp, + height = 10.5, + width = 14.8, + units = "cm") -- GitLab From 4bbb23cd6235efd2f9b2727215d94be128d48679 Mon Sep 17 00:00:00 2001 From: Alex Zarebski <aezarebski@gmail.com> Date: Wed, 8 Jul 2020 16:35:17 +0100 Subject: [PATCH 04/10] adjust output size --- examples/manceau-comparison/src/plot-comparison.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/manceau-comparison/src/plot-comparison.R b/examples/manceau-comparison/src/plot-comparison.R index 749b9a9..63f0a14 100644 --- a/examples/manceau-comparison/src/plot-comparison.R +++ b/examples/manceau-comparison/src/plot-comparison.R @@ -124,5 +124,5 @@ manceau_comp <- plot_grid(toy_data_fig, ggsave("out/manceau-comparison.pdf", plot = manceau_comp, height = 10.5, - width = 14.8, + width = 28.8, units = "cm") -- GitLab From ba090c314c10f8f27649596134e03824ac00ddfa Mon Sep 17 00:00:00 2001 From: aezarebski <aezarebski@gmail.com> Date: Thu, 9 Jul 2020 07:45:08 +0100 Subject: [PATCH 05/10] include a dummy file to ensure this directory is present --- examples/manceau-comparison/out/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/manceau-comparison/out/.gitkeep diff --git a/examples/manceau-comparison/out/.gitkeep b/examples/manceau-comparison/out/.gitkeep new file mode 100644 index 0000000..e69de29 -- GitLab From 003416f6e3587effb14708391d7885c95dd0ee06 Mon Sep 17 00:00:00 2001 From: aezarebski <aezarebski@gmail.com> Date: Thu, 9 Jul 2020 07:51:14 +0100 Subject: [PATCH 06/10] avoid line overlap --- examples/manceau-comparison/src/plot-comparison.R | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/examples/manceau-comparison/src/plot-comparison.R b/examples/manceau-comparison/src/plot-comparison.R index 63f0a14..bbcf943 100644 --- a/examples/manceau-comparison/src/plot-comparison.R +++ b/examples/manceau-comparison/src/plot-comparison.R @@ -84,17 +84,20 @@ points_df <- data.frame(x = c(occurrence_x_pos,occurrence_x_pos,3,1,4,5), )) +point_delta_circle <- 0.25 +point_delta_triangle <- 0.37 + toy_data_fig <- ggplot() + segment(c(occurrence_x_pos,7.5), c(occurrence_x_pos,-0.5), linetype = "dashed") + - segment(c(1,0), c(1, 3)) + + segment(c(1,0+point_delta_circle), c(1, 3)) + segment(c(2,3), c(2, 4)) + - segment(c(3,2), c(3, 3)) + + segment(c(3,2+point_delta_triangle), c(3, 3)) + segment(c(3,4), c(3, 6)) + - segment(c(4,0), c(4, 4)) + + segment(c(4,0+point_delta_circle), c(4, 4)) + segment(c(4,6), c(4, 7)) + - segment(c(5,0), c(5, 6)) + + segment(c(5,0+point_delta_circle), c(5, 6)) + segment(c(1,3), c(3,3)) + segment(c(2,4), c(4,4)) + segment(c(3,6), c(5,6)) + -- GitLab From 25dc3dcc869e260b002516b1a9e9cb895e94c820 Mon Sep 17 00:00:00 2001 From: aezarebski <aezarebski@gmail.com> Date: Thu, 9 Jul 2020 08:24:49 +0100 Subject: [PATCH 07/10] use csv export to save data and then read this to make figure --- apps/manceau-comparison/Main.hs | 29 +++++++++++++------ .../manceau-comparison/src/plot-comparison.R | 21 ++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/apps/manceau-comparison/Main.hs b/apps/manceau-comparison/Main.hs index 45f639f..ecaec34 100644 --- a/apps/manceau-comparison/Main.hs +++ b/apps/manceau-comparison/Main.hs @@ -1,15 +1,14 @@ -{-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE DeriveGeneric #-} module Main where import BDSCOD.Llhd import BDSCOD.Types -import Control.Applicative import qualified Data.ByteString.Lazy as BL import Data.Csv import Data.List (intercalate) -import qualified Data.Vector as V import Epidemic.Types.Parameter +import GHC.Generics (Generic) observations :: [(Time, ObservedEvent)] observations = @@ -28,11 +27,21 @@ parameters = | lam <- [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0] ] -printLlhd :: [Observation] -> [Parameters] -> IO () -printLlhd d [] = return () -printLlhd d (p:ps) = do - print . fst $ llhdAndNB d p initLlhdState - printLlhd d ps +data Result = + Result + { birthRate :: Rate + , llhd :: LogLikelihood + } + deriving (Generic) + +instance ToRecord Result + +paramsAndLlhd :: [Observation] -> Parameters -> Result +paramsAndLlhd obs p = + let (ll, _) = llhdAndNB obs p initLlhdState + (lam, _, _, _, _, _) = p + in Result lam ll + appMessage :: String appMessage = @@ -51,4 +60,6 @@ appMessage = main :: IO () main = do putStrLn appMessage - printLlhd observations parameters + let csvByteString = encode $ map (paramsAndLlhd observations) parameters + outputCsv = "out/computed-values.csv" + in BL.writeFile outputCsv csvByteString diff --git a/examples/manceau-comparison/src/plot-comparison.R b/examples/manceau-comparison/src/plot-comparison.R index bbcf943..dbfbda5 100644 --- a/examples/manceau-comparison/src/plot-comparison.R +++ b/examples/manceau-comparison/src/plot-comparison.R @@ -1,5 +1,7 @@ library(ggplot2) library(cowplot) +library(magrittr) +library(dplyr) llAnkit <- c( -40.4552507476100, @@ -14,22 +16,9 @@ llAnkit <- c( -47.0239173599859 ) -llZar <- c( - -40.4550918517829 - ,-40.87013575276441 - ,-41.38157282061684 - ,-41.9803636161457 - ,-42.658637698856054 - ,-43.40945251151045 - ,-44.226626725508694 - ,-45.104620318860626 - ,-46.03844474479797 - ,-47.02359300426023 -) - -lambdaVals <- 1.0 + 1:10 / 10 - -plot_df <- data.frame(lambda = lambdaVals, ankit = llAnkit, zarebski = llZar) +plot_df <- read.csv("out/computed-values.csv", header = FALSE) %>% + set_names(c("lambda", "zarebski")) %>% + mutate(ankit = llAnkit) font_scale_factor <- 0.5 fig_theme <- theme( -- GitLab From af5e063912d7f4defe1ac018b667a211619354f6 Mon Sep 17 00:00:00 2001 From: aezarebski <aezarebski@gmail.com> Date: Thu, 9 Jul 2020 08:29:02 +0100 Subject: [PATCH 08/10] documentation --- ChangeLog.md | 5 +++++ bdscod.cabal | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index d60dc2e..8280fcf 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,10 @@ # ChangeLog +## 0.1.2.5 + +- Include a `manceau-comparison` example and include a figure of the data that + is used in the comparison. + ## 0.1.2.4 - Include Newick output from `simulation-study` and generate a very simple tree. diff --git a/bdscod.cabal b/bdscod.cabal index a551405..ef725e8 100644 --- a/bdscod.cabal +++ b/bdscod.cabal @@ -1,5 +1,5 @@ name: bdscod -version: 0.1.2.4 +version: 0.1.2.5 -- synopsis: -- description: homepage: https://github.com/aezarebski/bdscod#readme @@ -39,7 +39,7 @@ executable manceau-comparison Paths_bdscod hs-source-dirs: apps/manceau-comparison - ghc-options: -threaded -rtsopts -with-rtsopts=-N -O2 + ghc-options: -threaded -rtsopts -with-rtsopts=-N -O2 -Wall build-depends: base >=4.7 && <5 , bytestring -- GitLab From 13d5e8958137e6193b80dd8a0cc8ff61dcbf4db2 Mon Sep 17 00:00:00 2001 From: aezarebski <aezarebski@gmail.com> Date: Thu, 9 Jul 2020 08:33:09 +0100 Subject: [PATCH 09/10] remove unused file --- R/manceau-comparison.R | 59 ------------------------------------------ 1 file changed, 59 deletions(-) delete mode 100644 R/manceau-comparison.R diff --git a/R/manceau-comparison.R b/R/manceau-comparison.R deleted file mode 100644 index 9237010..0000000 --- a/R/manceau-comparison.R +++ /dev/null @@ -1,59 +0,0 @@ -library(ggplot2) - -llAnkit <- c( - -40.4552507476100, - -40.8703238897302, - -41.3817906577664, - -41.9806102480506, - -42.6589107277071, - -43.4097480561603, - -44.2269395654317, - -45.1049441532352, - -46.0387725346941, - -47.0239173599859 -) - -llZar <- c( - -40.4550918517829, - -40.87013575276441, - -41.38157282061684, - -41.9803636161457, - -42.658637698856054, - -43.40945251151045, - -44.226626725508694, - -45.104620318860626, - -46.03844474479797, - -47.02359300426023 -) - -lambdaVals <- 1.0 + 1:10 / 10 - -plot_df <- data.frame(lambda = lambdaVals, ankit = llAnkit, zarebski = llZar) - -font_scale_factor <- 0.5 -fig_theme <- theme( - axis.title.x = element_text(size = font_scale_factor * 22), - axis.ticks = ggplot2::element_blank(), - axis.line.x.bottom = element_line(colour = "#000000"), - legend.title = element_text(size = font_scale_factor * 22), - plot.title = element_text(size = font_scale_factor * 32), - plot.subtitle = element_text(size = font_scale_factor * 22), - panel.grid.minor = ggplot2::element_blank(), - panel.grid.major.y = ggplot2::element_line(color="#cbcbcb"), - panel.grid.major.x = ggplot2::element_blank(), - panel.background = ggplot2::element_blank(), - strip.background = ggplot2::element_rect(fill="white")) - -ggplot(plot_df, aes(x = lambda)) + - geom_line(aes(y = zarebski, colour = "Approximation")) + - geom_point(aes(y = ankit, colour = "Exact")) + - labs(x = "Birth Rate", - y = "Log-likelihood", - colour = "Likelihood Function", - title = "LLHD Comparison", - subtitle = "Exact values and those from the approximation") + - scale_colour_manual(values = c("#1380A1", "#FAAB18")) + - fig_theme - - -ggsave("out/manceau-comparison.pdf", height = 10.5, width = 14.8, units = "cm") -- GitLab From 0c1a4697dfabbf686bb2dc30da9eba510bb9db03 Mon Sep 17 00:00:00 2001 From: aezarebski <aezarebski@gmail.com> Date: Thu, 9 Jul 2020 08:33:27 +0100 Subject: [PATCH 10/10] documentation --- examples/manceau-comparison/README.md | 5 +++++ .../out/manceau-comparison.png | Bin 0 -> 26375 bytes 2 files changed, 5 insertions(+) create mode 100644 examples/manceau-comparison/out/manceau-comparison.png diff --git a/examples/manceau-comparison/README.md b/examples/manceau-comparison/README.md index 04a4555..b4c7229 100644 --- a/examples/manceau-comparison/README.md +++ b/examples/manceau-comparison/README.md @@ -1,5 +1,10 @@ # Manceau Comparison +Evaluates the BDSCOD log-likelihood on a toy-data set from Manceau (2020) to +check that they yield the same results. + ``` make figure ``` + +![](./out/manceau-comparison.png) diff --git a/examples/manceau-comparison/out/manceau-comparison.png b/examples/manceau-comparison/out/manceau-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..764b4e07e306e84703b13cb1a8a1382f70357fa9 GIT binary patch literal 26375 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 literal 0 HcmV?d00001 -- GitLab