## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----installation , eval=FALSE------------------------------------------------
# if (!require("BiocManager", quietly = TRUE))
# install.packages("BiocManager")
#
# BiocManager::install("BioGA")
## ----installation_from_github , eval=FALSE------------------------------------
# devtools::install_github("danymukesha/BioGA")
## -----------------------------------------------------------------------------
# Load necessary packages
library(BioGA)
library(SummarizedExperiment)
# Define parameters
num_genes <- 1000
num_samples <- 10
# Define parameters for genetic algorithm
population_size <- 100
generations <- 20
mutation_rate <- 0.1
# Generate example genomic data using SummarizedExperiment
counts <- matrix(rpois(num_genes * num_samples, lambda = 10),
nrow = num_genes
)
rownames(counts) <- paste0("Gene", 1:num_genes)
colnames(counts) <- paste0("Sample", 1:num_samples)
# Create SummarizedExperiment object
se <-
SummarizedExperiment::SummarizedExperiment(assays = list(counts = counts))
# Convert SummarizedExperiment to matrix for compatibility with BioGA package
genomic_data <- assay(se)
## -----------------------------------------------------------------------------
head(genomic_data)
## -----------------------------------------------------------------------------
# Initialize population (select the number of canditate you wish `population`)
population <- BioGA::initialize_population_cpp(genomic_data,
population_size = 5
)
## -----------------------------------------------------------------------------
# Initialize fitness history
fitness_history <- list()
# Initialize time progress
start_time <- Sys.time()
# Run genetic algorithm optimization
generation <- 0
while (TRUE) {
generation <- generation + 1
# Evaluate fitness
fitness <- BioGA::evaluate_fitness_cpp(genomic_data, population)
fitness_history[[generation]] <- fitness
# Check termination condition
if (generation == generations) { # defined number of generations
break
}
# Selection
selected_parents <- BioGA::selection_cpp(population,
fitness,
num_parents = 2
)
# Crossover and Mutation
offspring <- BioGA::crossover_cpp(selected_parents, offspring_size = 2)
# (no mutation in this example)
mutated_offspring <- BioGA::mutation_cpp(offspring, mutation_rate = 0)
# Replacement
population <- BioGA::replacement_cpp(population, mutated_offspring,
num_to_replace = 1
)
# Calculate time progress
elapsed_time <- difftime(Sys.time(), start_time, units = "secs")
# Print time progress
cat(
"\rGeneration:", generation, "- Elapsed Time:",
format(elapsed_time, units = "secs"), " "
)
}
## -----------------------------------------------------------------------------
# Plot fitness change over generations
BioGA::plot_fitness_history(fitness_history)
## ----sessioninfo--------------------------------------------------------------
sessioninfo::session_info()