richelbilderbeek / pirouette

R package that estimates the error BEAST2 makes from a given phylogeny
GNU General Public License v3.0
3 stars 2 forks source link

Reduce waste in pir_plots #420

Closed richelbilderbeek closed 4 years ago

richelbilderbeek commented 4 years ago

The long form of pir_out has quite some redundant info: all it needs are the errors and tree_and_model.

> convert_pir_out_to_long(pir_out)
   tree inference_model inference_model_weight site_model clock_model tree_prior error_index error_value  tree_and_model
1  true      generative                    0.5         JC         RLN         BD     error_1        0.10 true_generative
2  true       candidate                    0.4        HKY      Strict        CBS     error_1        0.20  true_candidate
3  true      generative                    0.5         JC         RLN         BD     error_2        0.11 true_generative
4  true       candidate                    0.4        HKY      Strict        CBS     error_2        0.23  true_candidate
5  true      generative                    0.5         JC         RLN         BD     error_3        0.12 true_generative
6  true       candidate                    0.4        HKY      Strict        CBS     error_3        0.24  true_candidate
7  twin      generative                    0.6         TN         RLN        CCP     error_1        0.30 twin_generative
8  twin       candidate                    0.3        GTR      Strict        CEP     error_1        0.40  twin_candidate
9  twin      generative                    0.6         TN         RLN        CCP     error_2        0.35 twin_generative
10 twin       candidate                    0.3        GTR      Strict        CEP     error_2        0.47  twin_candidate
11 twin      generative                    0.6         TN         RLN        CCP     error_3        0.36 twin_generative
12 twin       candidate                    0.3        GTR      Strict        CEP     error_3        0.48  twin_candidate
      model_setting
1       JC, RLN, BD
2  HKY, Strict, CBS
3       JC, RLN, BD
4  HKY, Strict, CBS
5       JC, RLN, BD
6  HKY, Strict, CBS
7      TN, RLN, CCP
8  GTR, Strict, CEP
9      TN, RLN, CCP
10 GTR, Strict, CEP
11     TN, RLN, CCP
12 GTR, Strict, CEP

Maybe split this up in two tables, maybe keep it.

richelbilderbeek commented 4 years ago
test_that("strip", {
  pir_out <- create_test_pir_run_output(
    add_twin = TRUE,
    add_best = TRUE
  )
  t <- convert_pir_out_to_long(pir_out)
  t <- subset(t, select = -tree)
  t <- subset(t, select = -inference_model_weight)
  t <- subset(t, select = -site_model)
  t <- subset(t, select = -clock_model)
  t <- subset(t, select = -tree_prior)
  pir_plot_from_long(t)
})

results in a t of:

> t
   inference_model error_index error_value  tree_and_model    model_setting
1       generative     error_1        0.10 true_generative      JC, RLN, BD
2        candidate     error_1        0.20  true_candidate HKY, Strict, CBS
3       generative     error_2        0.11 true_generative      JC, RLN, BD
4        candidate     error_2        0.23  true_candidate HKY, Strict, CBS
5       generative     error_3        0.12 true_generative      JC, RLN, BD
6        candidate     error_3        0.24  true_candidate HKY, Strict, CBS
7       generative     error_1        0.30 twin_generative     TN, RLN, CCP
8        candidate     error_1        0.40  twin_candidate GTR, Strict, CEP
9       generative     error_2        0.35 twin_generative     TN, RLN, CCP
10       candidate     error_2        0.47  twin_candidate GTR, Strict, CEP
11      generative     error_3        0.36 twin_generative     TN, RLN, CCP
12       candidate     error_3        0.48  twin_candidate GTR, Strict, CEP

To do:

richelbilderbeek commented 4 years ago

forcats is awesome:

  df_long$inference_model <- forcats::fct_collapse(
    df_long$tree_and_model,
    generative = c("true_generative", "twin_generative"),
    candidate = c("true_candidate", "twin_candidate")
  )
richelbilderbeek commented 4 years ago

Done! Only need two columns now :+1: