Batch effects can have a major impact on the results of omics studies (Leek et al. 2010). Randomization is the first, and arguably most influential, step in handling them. However, its implementation suffers from a few key issues:
To combat these problems, we developed Omixer - an R package for multivariate randomization and reproducible generation of intuitive sample layouts.
This document has the following dependencies.
library(Omixer) library(tibble) library(forcats) library(stringr) library(dplyr) library(ggplot2) library(magick)
Omixer randomizes input sample lists multiple times (default: 1,000) and then combines these randomized lists with plate layouts, which can be selected from commonly used setups or custom-made. It can handle paired samples, keeping these adjacent but shuffling their order, and allows explicit masking of specific wells if, for example, plates are shared between different studies.
After performing robust tests of correlation between technical covariates and selected randomization factors, a layout is chosen using these criteria:
The optimal randomized list can then be processed by
intuitive sample layouts for the wet lab.
In order to establish correlations between technical covariates and biological
factors, Omixer needs to know the plate layout that your samples will be
randomized to. There are several options for automatically creating some
common layouts. Alternatively, a data frame can be input to the
option alongside specified
techVars. Possibilities are discussed in more
Several options can be used to automatically generate common layouts:
wellsspecifies the number of wells on a plate, which can be 96, 48, or 24.
plateNumdetermines how many copies of the plate your samples will need.
divis optional, and subdivides the plate into batches. This can be used to specify chips within a plate, for example.
positionalallows positions within
divto also be treated as batches. This is useful for 450K experiments where positional batch effects have been identified (Jiao et al. 2018).
div is set to “none”, but it can be set to “col”, “row”,
“col-block”, or “row-block”.
coltreats each column in the plate as a batch
rowtreats each row in the plate as a batch
col-blockwill separate the plate into batches that are 2 columns wide
row-blockseparates the plate into 2 row wide batches
wells=48, div="col", each column of a 48-well plate will be
treated as a batch (different colours in the image below).
If you instead specify
div="row", the rows will be treated as batches.