Nothing
mts_genepairsChunkGeneration = function(genepairs = NULL, mixModelClusters1, mixModelClusters2 = NULL, num_tasks, output_dir = tempdir(), cores) {
if (missing(cores)) {
cores <- 1
message("1 core selected")
} else if (!is.numeric(cores) || cores < 1) {
stop("cores should be >= 1")
} else {
message(cores, " cores selected")
}
# input check - ensure mixModelClusters1 is a list
if (missing(mixModelClusters1) || !is.list(mixModelClusters1)) {
stop("mixModelClusters1 must be a list of data frames generated from the mts_mixModelCluster() function")
}
if (!is.null(mixModelClusters2) && !is.list(mixModelClusters2)) {
stop("mixModelClusters2 must be a list of data frames generated from the mts_mixModelCluster() function")
}
mixModelClusters1 <- prefilterMixModelClusters(mixModelClusters1)
# check for bidirectional analysis
if (!is.null(mixModelClusters2)) {
bidirectionalAnalysis <- TRUE
message("Performing Bidirectional Analysis")
mixModelClusters2 <- prefilterMixModelClusters(mixModelClusters2)
filtered_lists <- GMM_CCL(mixModelClusters1, mixModelClusters2)
mixModelClusters1 <- filtered_lists[[1]]
mixModelClusters2 <- filtered_lists[[2]]
} else {
bidirectionalAnalysis <- FALSE
message("Performing One Directional Analysis")
}
if (missing(num_tasks) || !is.numeric(num_tasks) || num_tasks <= 0) {
stop("Error: num_tasks value must be numeric and greater than 0.")
}
if (!is.numeric(cores) || cores <= 0) {
stop("Error: num_cores must be numeric and greater than 0.")
}
# input check - generation of genepairs
if (is.null(genepairs)) {
message("Generating genepairs for analysis")
genepairs <- generateGenePairs(mixModelClusters1, mixModelClusters2,
bidirectionalAnalysis = bidirectionalAnalysis,
include_reverse_pairs = F,
verbose = F, cores=cores)
} else {
if (!(is.data.frame(genepairs) || is.matrix(genepairs))) {
stop("genepairs must be either a dataframe or a matrix, genepairs can be generated by omitting the argument or setting genepairs to NULL ")
}
genepairs <- as.data.frame(genepairs)
}
# ensure output directory exists, if not create
if (!dir.exists(output_dir)) {
dir.create(output_dir, recursive = TRUE)
}
# total number of genepairs
total <- nrow(genepairs)
# calculate number of genepairs per task / chunk
genepairs_in_task <- ceiling(total / num_tasks)
# parallelize chunk saving with pbmclapply
pbmclapply(1:num_tasks, function(i) {
start <- ((i - 1) * genepairs_in_task) + 1
end <- min(i * genepairs_in_task, total) # ensure end doesn't exceed total
if (start > end) return(NULL) # stop if start exceeds end
subset_genepairs <- genepairs[start:end, ]
output_file <- file.path(output_dir, paste0("genepairs_chunk_", i, ".RData"))
save(subset_genepairs, file = output_file)
}, mc.cores = cores)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.