aboutsummaryrefslogblamecommitdiff
path: root/vignettes/web_only/benchmarks.Rmd
blob: 990c2feeb3d92816a9ef3237cc143d067d9bd0b7 (plain) (tree)
1
2
   
                                   


















                                           
                                                                               
                                                                 





                                                                                           
                                                         

                                                         

                                


                                                                               
        


                                                                                   


   




                                   

                                           
                                         
 







                                                                                            








                                 
                                                                                             




                                                                               
 


                                













                                                                    

                                                                                     
 
                                                                     
                                     
                                                                       
                                     

                                                                      
                                      
                                                                        
                                      








                                                                                 
 

                                                                                    
 




                                                               
                                                    
 
               
 


                                                
                                       






                                                                      
                                             







                                                                            
                                           
   
---
title: "Benchmark timings for mkin"
author: "Johannes Ranke"
output:
  html_document:
    toc: true
    toc_float: true
    code_folding: show
    fig_retina: null
date: "`r Sys.Date()`"
vignette: >
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
library(knitr)
opts_chunk$set(tidy = FALSE, cache = FALSE)
library("mkin")
```

Each system is characterized by its CPU type, the operating system type and the
mkin version. Currently only values for one system are available.

```{r}
cpu_model <- benchmarkme::get_cpu()$model_name
operating_system <- Sys.info()[["sysname"]]
mkin_version <- as.character(packageVersion("mkin"))
system_string <- paste0(operating_system, ", ", cpu_model, ", mkin version ", mkin_version)
load("~/git/mkin/vignettes/web_only/mkin_benchmarks.rda")
mkin_benchmarks[system_string, c("CPU", "OS", "mkin")] <-
  c(cpu_model, operating_system, mkin_version)

if (mkin_version > "0.9.48.1") {
  mmkin_bench <- function(models, datasets, error_model = "const") {
    mmkin(models, datasets, error_model = error_model, cores = 1, quiet = TRUE)
  }
} else {
  mmkin_bench <- function(models, datasets, error_model = NULL) {
    mmkin(models, datasets, reweight.method = error_model, cores = 1, quiet = TRUE)
  }
}
```

## Test cases

Parent only:

```{r parent_only, warning = FALSE}
FOCUS_C <- FOCUS_2006_C
FOCUS_D <- subset(FOCUS_2006_D, value != 0)
parent_datasets <- list(FOCUS_C, FOCUS_D)

t1 <- system.time(mmkin_bench(c("SFO", "FOMC", "DFOP", "HS"), parent_datasets))[["elapsed"]]
t2 <- system.time(mmkin_bench(c("SFO", "FOMC", "DFOP", "HS"), parent_datasets,
    error_model = "tc"))[["elapsed"]]
```

One metabolite:

```{r one_metabolite}
SFO_SFO <- mkinmod(
  parent = mkinsub("SFO", "m1"),
  m1 = mkinsub("SFO"))
FOMC_SFO <- mkinmod(
  parent = mkinsub("FOMC", "m1"),
  m1 = mkinsub("SFO"))
DFOP_SFO <- mkinmod(
  parent = mkinsub("FOMC", "m1"),
  m1 = mkinsub("SFO"))
t3 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D)))[["elapsed"]]
t4 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D),
    error_model = "tc"))[["elapsed"]]
t5 <- system.time(mmkin_bench(list(SFO_SFO, FOMC_SFO, DFOP_SFO), list(FOCUS_D),
    error_model = "obs"))[["elapsed"]]
```

Two metabolites, synthetic data:

```{r two_metabolites}
m_synth_SFO_lin <- mkinmod(parent = mkinsub("SFO", "M1"),
                           M1 = mkinsub("SFO", "M2"),
                           M2 = mkinsub("SFO"),
                           use_of_ff = "max", quiet = TRUE)

m_synth_DFOP_par <- mkinmod(parent = mkinsub("DFOP", c("M1", "M2")),
                           M1 = mkinsub("SFO"),
                           M2 = mkinsub("SFO"),
                           use_of_ff = "max", quiet = TRUE)

SFO_lin_a <- synthetic_data_for_UBA_2014[[1]]$data

DFOP_par_c <- synthetic_data_for_UBA_2014[[12]]$data

t6 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a)))[["elapsed"]]
t7 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c)))[["elapsed"]]

t8 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a),
    error_model = "tc"))[["elapsed"]]
t9 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c),
    error_model = "tc"))[["elapsed"]]

t10 <- system.time(mmkin_bench(list(m_synth_SFO_lin), list(SFO_lin_a),
    error_model = "obs"))[["elapsed"]]
t11 <- system.time(mmkin_bench(list(m_synth_DFOP_par), list(DFOP_par_c),
    error_model = "obs"))[["elapsed"]]
```

```{r results}
mkin_benchmarks[system_string, paste0("t", 1:11)] <-
  c(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)
save(mkin_benchmarks, file = "~/git/mkin/vignettes/web_only/mkin_benchmarks.rda")
```

## Results

Currently, we only have benchmark information on one system, therefore only the mkin
version is shown with the results below. Timings are in seconds, shorter is better.

```{r}
rownames(mkin_benchmarks) <- as.character(mkin_benchmarks$mkin)
```


Benchmarks for all available error models are shown.

### Parent only

Constant variance and two-component error model:

```{r}
kable(mkin_benchmarks[, c("t1", "t2")])
```

### One metabolite

Constant variance, variance by variable and two-component error model:

```{r}
kable(mkin_benchmarks[, c("t3", "t4", "t5")])
```

### Two metabolites

Two different datasets, for each constant variance, variance by variable and
two-component error model are shown:

```{r}
kable(mkin_benchmarks[, paste0("t", 6:11)])
```

Contact - Imprint