Last updated: 2023-08-30

Checks: 7 0

Knit directory: 230828_scaling_alpha/

This reproducible R Markdown analysis was created with workflowr (version 1.7.0). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(20230830) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version 06646a3. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .RData
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/

Unstaged changes:
    Deleted:    analysis/VCFG_analysis_methods.knit.md

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


These are the previous versions of the repository in which changes were made to the R Markdown (analysis/oNKo_scaled_alphalisa.Rmd) and HTML (docs/oNKo_scaled_alphalisa.html) files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view the files as they were in that past version.

File Version Author Date Message
html 7dd19fe Mark Li 2023-08-30 Initial commit
Rmd d5dbc4c Mark Li 2023-08-30 workflowr::wflow_publish("analysis/*Rmd")

Aim

The aim of this test is to assess how Accurate ML’s new MDT-based alphalisa workflow for oNKo’s scaled up screen.

The current workflow has accuracy but is heavily tip-consuming. A full new box for each plate at each beads/antibody addition. That sums to about 8 boxes of tips. This also comes with great dead volume of the reagents (full plate worth: 384 well * dead vol per well)

ML went ahead to test the possibility of tip washing. The workflow is using 128 tips to stamp 3 times per plate, and potentially use it for the entire set of 4 plates.

The worry would be accuracy, and cross contamination. ## Researcher ML

Readout

  1. Absorbance of tartrazine at 410 after dispensed into PBS on Cytation C10 plate reader

Required R packages

# load the required packages
library(data.table)
library(DT)
library(platetools)
library(reshape2)
library(readxl)
library(tidyverse)
library(patchwork)
library(here)
library(htmltools)


# check if here() correctly identified the directory
here::here()
[1] "/home/mli/ML_oNKo/230828_scaling_alpha"
# set the file prefix

prefix <- "ML_oNKo_dev"

# def funct
read_excel_allsheets <- function(filename, tibble = FALSE) {
    sheets <- readxl::excel_sheets(filename)
    x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X, skip = 24))
    if (!tibble)
        x <- lapply(x, as.data.frame)
    names(x) <- sheets
    x
}

Details

Test date (yyyy-mm-dd)

2023-08-28

Test setup

Tartrazine stock at 12.5 ug/ul

For MDT protocol, I tested sequential dispensing 2 plates by 8 columns worth liquid reservoir in 384 well V-bottom (that is 128 tips dispensing 3 lots 6ul dye into the same plate from left to right, 6 lots in total). In between each dispensing, each individual tip is washed in it’s designated wash wells (80ul), so in theory any residual volume present would be diluted to approx. 100 fold.

The key testing focus is to see the well-level consistensy in dispensing, and if there is visible differences between “transfer lots” (aka, the presence of systematic carry over)

Test Outcome Summary


Data cleaning for Abs test

The raw data was read into R Studio.


Delivery Accuracy by Absorbance (Abs)


Raw Abs values

Note Plate 1 and 2 (P1 and P2) base are just 60ul of PBS dispensed by BioTek. I labelled them with “Disp1/2/3” just to segment and to help compare the actual dispense later one in D1 phase.

There has to be well to well variances, which we can observe in Z-score normalised plot. The key here is to see the 3 dispenses in D1 phase doesn’t have something systematically wrong.

I can see there is one well in P2 D1 Dispense 1 lot missed out. This is not too bad considering I’m using the same 128 tips Dispensing 6 tips. Error rate (underestimating by ignoring the washing steps) is about 1/128x6 ~ 0.1%

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30


Normalised Abs values

Note We saw the baseline (P1 and P2 base) has well to well variations as expected, this is the seperate issue with BioTek dispensing. But the great thing is P1 and P2 had the same heat map pattern, so at least this is consistent.

I’m happy to see the D1 phase heatmaps between P1 and P2 are also similar, meaning the abs change induced by MDT dispensing across 6 lots are likely consistent.

Any small variations will be magnified in Z score in this case, since each plate has a very tight CV% (refer to downloadable table)

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Abs summary and %CV table for you

Note This is just calculating the CV% by plate and transfer lot region, baring in mind the starting point Abs is not universal “flat” due to BioTek dispensing.

For example, the P2_Base_Disp.3 has a CV% ~ 11, this is its baseline by BioTek, but after MDT dispensing (this lot is the 6trh dispense of the same tip), the P2_D1_Disp.3 cv% dropped to 5. P2_D1_Disp.1 has CV% ~10 since it has one well missed.


Abs Delta over each previous transfer

Since the baseline is not really “flat”, lets focus more on the delta of each transfer and each tip. Delta is the difference between 2 points, in this case, baseline and D1.

MDT protocol

Raw Abs Delta over each previous transfer

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Normalised Abs Delta over each previous transfer

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Version Author Date
7dd19fe Mark Li 2023-08-30

Raw Abs Delta Summary and %CV

P2_D1_Disp.1 has CV% ~11 since it has one well missed.


Compare well level dispensing between dispensing batches

MDT head

Comments: No significant carry-over between dispensing lots within a plate. The elevated P2 delta is a small worry, either we increase the wash repeats between plates or we can limit the use of 128-tip lot per plate.

Version Author Date
7dd19fe Mark Li 2023-08-30



 

Analysed by Mark Li

Victorian Centre for Functional Genomics

 


sessionInfo()
R version 4.2.0 (2022-04-22)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)

Matrix products: default
BLAS:   /usr/lib64/libblas.so.3.4.2
LAPACK: /usr/lib64/liblapack.so.3.4.2

locale:
 [1] LC_CTYPE=en_AU.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_AU.UTF-8        LC_COLLATE=en_AU.UTF-8    
 [5] LC_MONETARY=en_AU.UTF-8    LC_MESSAGES=en_AU.UTF-8   
 [7] LC_PAPER=en_AU.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] htmltools_0.5.4   here_1.0.1        patchwork_1.1.2   lubridate_1.9.2  
 [5] forcats_1.0.0     stringr_1.5.0     dplyr_1.1.2       purrr_1.0.1      
 [9] readr_2.1.4       tidyr_1.3.0       tibble_3.2.1      ggplot2_3.4.2    
[13] tidyverse_2.0.0   readxl_1.4.2      reshape2_1.4.4    platetools_0.1.5 
[17] DT_0.27           data.table_1.14.8 workflowr_1.7.0  

loaded via a namespace (and not attached):
 [1] fs_1.6.1            bit64_4.0.5         RColorBrewer_1.1-3 
 [4] httr_1.4.6          rprojroot_2.0.3     backports_1.4.1    
 [7] tools_4.2.0         bslib_0.4.2         utf8_1.2.3         
[10] R6_2.5.1            rpart_4.1.19        Hmisc_4.8-0        
[13] colorspace_2.1-0    nnet_7.3-18         withr_2.5.0        
[16] gridExtra_2.3       tidyselect_1.2.0    processx_3.8.0     
[19] bit_4.0.5           compiler_4.2.0      git2r_0.31.0       
[22] cli_3.6.1           htmlTable_2.4.1     formatR_1.14       
[25] labeling_0.4.2      sass_0.4.5          checkmate_2.1.0    
[28] scales_1.2.1        callr_3.7.3         digest_0.6.31      
[31] foreign_0.8-84      rmarkdown_2.20      base64enc_0.1-3    
[34] jpeg_0.1-10         pkgconfig_2.0.3     fastmap_1.1.0      
[37] highr_0.10          htmlwidgets_1.6.1   rlang_1.1.1        
[40] rstudioapi_0.14     jquerylib_0.1.4     farver_2.1.1       
[43] generics_0.1.3      jsonlite_1.8.4      crosstalk_1.2.0    
[46] vroom_1.6.1         magrittr_2.0.3      Formula_1.2-4      
[49] interp_1.1-3        Matrix_1.5-3        Rcpp_1.0.10        
[52] munsell_0.5.0       fansi_1.0.4         lifecycle_1.0.3    
[55] stringi_1.7.12      whisker_0.4.1       yaml_2.3.7         
[58] snakecase_0.11.0    plyr_1.8.8          grid_4.2.0         
[61] parallel_4.2.0      promises_1.2.0.1    crayon_1.5.2       
[64] deldir_1.0-6        lattice_0.20-45     splines_4.2.0      
[67] hms_1.1.2           knitr_1.42          ps_1.7.2           
[70] pillar_1.9.0        glue_1.6.2          evaluate_0.20      
[73] getPass_0.2-2       latticeExtra_0.6-30 vctrs_0.6.2        
[76] png_0.1-8           tzdb_0.4.0          httpuv_1.6.9       
[79] cellranger_1.1.0    gtable_0.3.3        cachem_1.0.6       
[82] xfun_0.37           janitor_2.2.0       later_1.3.0        
[85] survival_3.5-3      cluster_2.1.4       timechange_0.2.0   
[88] ellipsis_0.3.2