Package {syncons}


Title: Efficient and Low-Cost Construction of Synthetic Communities
Version: 0.1.1
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>.
URL: https://github.com/gaospecial/syncons, https://doi.org/10.21769/BioProtoc.2405576, https://bio-spring.shinyapps.io/SynComsConstructor/
BugReports: https://github.com/gaospecial/syncons/issues
License: GPL (≥ 3)
Encoding: UTF-8
RoxygenNote: 7.3.3
Imports: dplyr, DT, glue, purrr, shiny, stringr, tibble, tidyr, utils
NeedsCompilation: no
Packaged: 2026-07-28 00:22:32 UTC; gaoch
Author: Chun-Hui Gao ORCID iD [aut, cre]
Maintainer: Chun-Hui Gao <gaospecial@gmail.com>
Depends: R (≥ 4.1.0)
Repository: CRAN
Date/Publication: 2026-08-05 17:30:02 UTC

Assign multiple strains to one or more specified plates

Description

Assign multiple strains to one or more specified plates

Usage

assign_plate(
  strains,
  strain_sep = "/",
  plate_type = c("24", "96", "384"),
  plate_prefix = "P",
  return_layout = FALSE
)

Arguments

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

Value

a tibble

Examples

  assign_plate(letters[1:5])

all possible combinations of n sets

Description

all possible combinations of n sets

Usage

combinations(n)

Arguments

n

dim


The composition of community in a single 24-, 96- or 384-well plate

Description

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$.

Usage

one_plate(
  plate_type = c("24", "96", "384"),
  plate_name = NULL,
  strain_base = NULL,
  strain_add = NULL,
  strain_sep = "/",
  return_layout = FALSE
)

Arguments

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

Value

a tibble

Examples

  one_plate("24")
  one_plate("96")
  one_plate("384")

Run Shiny App locally

Description

Run Shiny App locally

Usage

run_shinyApp()

Value

a shiny app


Sort combination in a string

Description

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.

Usage

sort_combination(strain_combination, strain_sep = "/")

Arguments

strain_combination

a string or a character vector

strain_sep

separator

Value

a string

Examples

  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

Description

All the possible combination of multiple strains

Usage

strain_combination(strains, strain_sep = "/")

Arguments

strains

names of strains, can be any integers

strain_sep

separator used to join strains into combination

Value

a character vector

Examples

  strain_combination(c("A","B","C"))