| Title: | Efficient and Low-Cost Construction of Synthetic Communities |
|---|---|
| Description: | Provides functions and a Shiny application to design plate layouts for constructing synthetic communities (SynComs) from a pool of strains using 24-, 96- and 384-well microplates. The method generates all possible strain combinations in a scalable, low-cost workflow suitable for high-throughput experiments. Reference: Tian et al. (2024) <doi:10.21769/BioProtoc.2405576>. |
| Authors: | Chun-Hui Gao [aut, cre] (ORCID: <https://orcid.org/0000-0002-1445-7939>) |
| Maintainer: | Chun-Hui Gao <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.1.1 |
| Built: | 2026-10-05 10:49:37 UTC |
| Source: | https://github.com/gaospecial/syncons |
Assign multiple strains to one or more specified plates
assign_plate( strains, strain_sep = "/", plate_type = c("24", "96", "384"), plate_prefix = "P", return_layout = FALSE )assign_plate( strains, strain_sep = "/", plate_type = c("24", "96", "384"), plate_prefix = "P", return_layout = FALSE )
strains |
a character vector specifing the strain names |
strain_sep |
separator used to join strains into combination |
plate_type |
specify plate type, either 24, 96, or 384. |
plate_prefix |
plate prefix |
return_layout |
return the layout of plate, instead of a sample table if TRUE |
a tibble
assign_plate(letters[1:5])assign_plate(letters[1:5])
all possible combinations of n sets
combinations(n)combinations(n)
n |
dim |
We use a fast, extensible method to generate multiple SynComs in every possible composition. The smallest unit is either a 4 x 4 plate (24 well) for 16 SynComs, a 8x8 plate (96 well) for 64 SynComs, or a 16 x 16 plate (384 well) for 256 SynComs. Based on this, one can generate as many as plates, and in that cases the combination of SynComs could be multiplied in batch. For each time we add an extra strain, the number of total plates will double to fulfill all additional strain combinations. In other words, the possible combination of $n$ strain equals to $2^n$.
one_plate( plate_type = c("24", "96", "384"), plate_name = NULL, strain_base = NULL, strain_add = NULL, strain_sep = "/", return_layout = FALSE )one_plate( plate_type = c("24", "96", "384"), plate_name = NULL, strain_base = NULL, strain_add = NULL, strain_sep = "/", return_layout = FALSE )
plate_type |
specify plate type, either 24, 96, or 384. |
plate_name |
will be used as the prefix in combination id |
strain_base |
the base strain or community in a single plate |
strain_add |
the id of added strains |
strain_sep |
separator used to join strains into combination |
return_layout |
return the layout of plate, instead of a sample table if TRUE |
a tibble
one_plate("24") one_plate("96") one_plate("384")one_plate("24") one_plate("96") one_plate("384")
Run Shiny App locally
run_shinyApp()run_shinyApp()
a shiny app
String is used as combination name. However, the combination of A and B can be "A/B" or "B/A", this would make it difficult in comparison of combination names. By using this function, the name of strains included in a combination will be sorted alphabetically, so that the combination names can be identical and human-friendly.
sort_combination(strain_combination, strain_sep = "/")sort_combination(strain_combination, strain_sep = "/")
strain_combination |
a string or a character vector |
strain_sep |
separator |
a string
sort_combination("A1/A11/A2/B3/D5/C11") sort_combination(c("A1/A11/A2/B3/D5/C11","A1/A11/A25/B3/D18/C11") )sort_combination("A1/A11/A2/B3/D5/C11") sort_combination(c("A1/A11/A2/B3/D5/C11","A1/A11/A25/B3/D18/C11") )
All the possible combination of multiple strains
strain_combination(strains, strain_sep = "/")strain_combination(strains, strain_sep = "/")
strains |
names of strains, can be any integers |
strain_sep |
separator used to join strains into combination |
a character vector
strain_combination(c("A","B","C"))strain_combination(c("A","B","C"))