Use of Genetic Algorithm in Cell Culture Media Optimization
cool paper
optimization
Author
Celeste Valdivia
Published
October 28, 2023
Genetic algorithm for cell culture optimization
flowchart LR
A(start) --> B[create random initial 'population' of experimental conditions]
B --> C[perform wet lab experiments]
C --> D[evaluate fitness of each conditions (10^6^ cells in monolayer formation)]
D --> E{Optimization goal achieved/generation limit reached?}
E --> F[No, select better performing conditions proportional to fitness]
F --> H[Create next generation of conditions by cross over and mutation]
E --> G[Yes, end]
sequenceDiagram
participant Alice
participant Bob
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts <br/>prevail!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
Citations
Munroe, S., K. Sandoval, D. E. Martens, D. Sipkema, and S. A. Pomponi. 2019. Genetic algorithm as an optimization tool for the development of sponge cell culture media. In Vitro Cellular & Developmental Biology - Animal 55:149–158.
# Load the genalg packagelibrary(genalg)# Define the objective function to minimize# The objective function should take a vector representing concentrations as inputobjective_function <-function(concentrations) {# Simulate the effect of concentrations on a specific metric (e.g., cell growth)# You will need to replace this with your own experimental data and evaluation logic metric_value <-simulated_metric(concentrations)return(metric_value)}# Set GA parameterspopulation_size <-50generations <-100mutation_rate <-0.1# Define the range of concentrations for each component# This can be customized based on your specific componentsconcentration_range <-matrix(c(0, 1), nrow =1, ncol =10)# Create an initial random population of concentrations within the defined rangeinitial_population <-rbga.bin(size =10, popSize = population_size, iters =1, mutationChance = mutation_rate, levels = concentration_range)# Run the genetic algorithmresult <-rbga.bin(size =10, popSize = population_size, iters = generations,mutationChance = mutation_rate, evalFunc = objective_function,levels = concentration_range, pType ="real-valued", initial = initial_population$solutions)# Print the best solution found (optimized concentrations)cat("Best solution (optimized concentrations):", result$solution, "\n")cat("Objective value (metric value):", result$evaluations, "\n")
Brainstorming the objective to feed the algorithm
Note that it is possible to have a multi-objective optimization framework, however this can be more challenging than a single-objective optimization. The optimization algorithm will seek a set of solutions that represent trade-offs between these objectives. The solutions are known as the Pareto front.
If you do more than one objective, you will need to assign weights or priorities to each objective function.
Cell density of at least 106, the minimum required amount to conduct gene expression work.
Frequency of monolayer formation for epithelial tissue from Botryllus schlosseri.
Mitochondrial activity assessed using the 96 well plate reader.
Brainstorming factors that are present in the media and what would potentially be changed