diff --git a/tests/testthat/test-CytoPipeline.R b/tests/testthat/test-CytoPipeline.R
index 3099945..4691bf5 100644
--- a/tests/testthat/test-CytoPipeline.R
+++ b/tests/testthat/test-CytoPipeline.R
@@ -14,1149 +14,1149 @@
# GNU General Public License for more details ().
-outputDir <- base::tempdir()
-
-if (!interactive()) pdf(NULL)
-
-test_that("CytoPipeline default creation raises no error", {
- expect_error(pipL0 <- CytoPipeline(), NA)
-})
-
-test_that("Cytopipeline add/remove/clean processing step works", {
- rawDataDir <- system.file("extdata", package = "CytoPipeline")
- experimentName <- "OMIP021_PeacoQC"
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
- transListPath <- file.path(system.file("extdata",
- package = "CytoPipeline"),
- "OMIP021_TransList.rds")
-
-
- # main parameters : sample files and experiment name
- pipelineParams <- list()
- pipelineParams$experimentName <- experimentName
-
- pipL <- CytoPipeline(pipelineParams)
- expect_error(show(pipL), NA)
-
- pipelineParams$sampleFiles <- sampleFiles
-
- pipL <- CytoPipeline(pipelineParams)
- expect_error(show(pipL), NA)
-
- pipL <- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "scale_transform_read",
- FUN = "readRDS",
- ARGS = list(file = transListPath)
- )
- )
-
- expect_equal(getNbProcessingSteps(pipL, "scale transform"), 1)
-
- pipL <- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "scale_transform_sum",
- FUN = "sum",
- ARGS = list()
- )
- )
-
- expect_equal(getNbProcessingSteps(pipL, "scale transform"), 2)
-
- pipL <- removeProcessingStep(pipL,
- whichQueue = "scale transform",
- index = 2
- )
- expect_equal(getNbProcessingSteps(pipL, "scale transform"), 1)
- pS <- getProcessingStep(pipL, whichQueue = "scale transform", index = 1)
- expect_equal(pS@FUN, "readRDS")
-
- pipL <- addProcessingStep(pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "pre-processing_sum",
- FUN = "sum",
- ARGS = list()
- )
- )
- expect_equal(getNbProcessingSteps(pipL, "scale transform"), 1)
- expect_equal(getNbProcessingSteps(pipL, "pre-processing"), 1)
-
- expect_error(pipL <- addProcessingStep(pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "pre-processing_sum",
- FUN = "mean",
- ARGS = list()
- )
- ), regexp = "There already exist a step")
-
- pipL <- cleanProcessingSteps(pipL)
- expect_equal(getNbProcessingSteps(pipL, "scale transform"), 0)
- expect_equal(getNbProcessingSteps(pipL, "pre-processing"), 0)
-
- newExp <- "newExperiment"
- experimentName(pipL) <- newExp
- expect_equal(experimentName(pipL), newExp)
-
- newPhenoData <- data.frame(name = c("Donor1", "Donor2"),
- donor = c(1,2))
- expect_error(pData(pipL) <- "invalidCharacterType",
- regexp = "is not TRUE")
-
- expect_error(pData(pipL) <- newPhenoData,
- regexp = "should contain all sample file basenames")
-
-})
-
-test_that("CytoPipeline with reading scale transfo only raises no error", {
- expect_error(
- {
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- experimentName <- "OMIP021_PeacoQC"
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
- transListPath <- file.path(system.file("extdata",
- package = "CytoPipeline"),
- "OMIP021_TransList.rds")
-
- # main parameters : sample files and output files
- pipelineParams <- list()
- pipelineParams$experimentName <- experimentName
- pipelineParams$sampleFiles <- sampleFiles
-
- pipL <- CytoPipeline(pipelineParams)
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "scale_transform_read",
- FUN = "readRDSObject",
- ARGS = list(RDSFile = transListPath)
- )
- )
-
- suppressWarnings(execute(pipL,
- rmCache = TRUE,
- path = outputDir
- ))
- },
- NA
- )
-})
-
-test_that("CytoPipeline with no sample raises an execution error", {
- expect_error(
- {
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- experimentName <- "OMIP021_PeacoQC"
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "NotGood"
- ))
-
- # main parameters : sample files and output files
- pipelineParams <- list()
- pipelineParams$experimentName <- experimentName
- pipelineParams$sampleFiles <- sampleFiles
-
- pipL <- CytoPipeline(pipelineParams)
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "flowframe_read",
- FUN = "readSampleFiles",
- ARGS = list(
- whichSamples = "all",
- truncate_max_range = FALSE,
- min.limit = NULL
- )
- )
- )
-
- suppressWarnings(execute(pipL,
- rmCache = TRUE,
- path = outputDir
- ))
- },
- "Can't execute CytoPipeline object with no sample file"
- )
-})
-
-test_that("Creation of CytoPipeline with wrong phenoData raises an error", {
- expect_error(
- {
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- experimentName <- "OMIP021_PeacoQC"
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
-
- phenoData <- data.frame(row.names = c("wrong1", "wrong2"),
- donor = c(1,2),
- group = c("G1", "G1"))
-
- pipL <- CytoPipeline(experimentName = experimentName,
- sampleFiles = sampleFiles,
- pData = phenoData)
- }, "Row names of non-null @pData slot should contain all sample file")
-})
-
-test_that("Execution of CytoPipeline with correct phenoData raises no error", {
- expect_error(
- {
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- experimentName <- "OMIP021_PeacoQC"
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
-
- phenoData <- data.frame(row.names = basename(sampleFiles),
- donor = c(1,2),
- group = c("G1", "G1"))
-
- # main parameters : sample files and output files
- pipelineParams <- list()
- pipelineParams$experimentName <- experimentName
- pipelineParams$sampleFiles <- sampleFiles
- pipelineParams$pData <- phenoData
-
- pipL <- CytoPipeline(pipelineParams)
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "flowframe_read",
- FUN = "readSampleFiles",
- ARGS = list(
- whichSamples = "all",
- truncate_max_range = FALSE,
- min.limit = NULL
- )
- )
- )
-
- suppressWarnings(execute(pipL,
- rmCache = TRUE,
- path = outputDir
- ))
-
- # re-execute un second time to test behaviour with pData
- execute(pipL,
- rmCache = FALSE,
- path = outputDir
- )
- },
- NA
- )
-
- newPipL <- buildCytoPipelineFromCache(experimentName,
- path = outputDir)
-
- newPData <- pData(newPipL)
- expect_true(all.equal(phenoData, newPData))
-})
-
-
-test_that("CytoPipeline with complex flows raises no error", {
- expect_error(
- {
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- experimentName <- "OMIP021_PeacoQC"
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
-
- # main parameters : sample files and output files
- pipL <- CytoPipeline(experimentName = experimentName,
- sampleFiles = sampleFiles)
-
- ### SCALE TRANSFORMATION STEPS ###
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "flowframe_read",
- FUN = "readSampleFiles",
- ARGS = list(
- whichSamples = "all",
- truncate_max_range = FALSE,
- min.limit = NULL
- )
- )
- )
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "remove_margins",
- FUN = "removeMarginsPeacoQC",
- ARGS = list()
- )
- )
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "compensate",
- FUN = "compensateFromMatrix",
- ARGS = list(matrixSource = "fcs")
- )
- )
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "flowframe_aggregate",
- FUN = "aggregateAndSample",
- ARGS = list(
- nTotalEvents = 10000,
- seed = 0
- )
- )
- )
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "scale transform",
- CytoProcessingStep(
- name = "scale_transform_estimate",
- FUN = "estimateScaleTransforms",
- ARGS = list(
- fluoMethod = "estimateLogicle",
- scatterMethod = "linear",
- scatterRefMarker = "BV785 - CD3"
- )
- )
- )
-
- ### PRE-PROCESSING STEPS ###
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "flowframe_read",
- FUN = "readSampleFiles",
- ARGS = list(
- truncate_max_range = FALSE,
- min.limit = NULL
- )
- )
- )
-
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "remove_margins",
- FUN = "removeMarginsPeacoQC",
- ARGS = list()
- )
- )
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "compensate",
- FUN = "compensateFromMatrix",
- ARGS = list(matrixSource = "fcs")
- )
- )
-
- pipL <-
- addProcessingStep(
- pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "remove_doublets",
- FUN = "removeDoubletsCytoPipeline",
- ARGS = list(
- areaChannels = c("FSC-A", "SSC-A"),
- heightChannels = c("FSC-H", "SSC-H"),
- nmads = c(3, 5))
- )
- )
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "remove_debris",
- FUN = "removeDebrisManualGate",
- ARGS = list(
- FSCChannel = "FSC-A",
- SSCChannel = "SSC-A",
- gateData = c(73615, 110174, 213000, 201000, 126000,
- 47679, 260500, 260500, 113000, 35000)
- )
- )
- )
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "remove_dead_cells",
- FUN = "removeDeadCellsManualGate",
- ARGS = list(
- FSCChannel = "FSC-A",
- LDMarker = "L/D Aqua - Viability",
- gateData = c(0, 0, 250000, 250000,
- 0, 650, 650, 0)
- )
- )
- )
-
- pipL <-
- addProcessingStep(
- pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "perform_QC",
- FUN = "qualityControlPeacoQC",
- ARGS = list(
- preTransform = TRUE,
- min_cells = 150, # default
- max_bins = 500, # default
- step = 500, # default,
- MAD = 6, # default
- IT_limit = 0.55, # default
- force_IT = 150, # default
- peak_removal = 0.3333, # default
- min_nr_bins_peakdetection = 10 # default
- )
- )
- )
-
- pipL <-
- addProcessingStep(pipL,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "transform",
- FUN = "applyScaleTransforms",
- ARGS = list()
- )
- )
-
- suppressWarnings(execute(pipL,
- rmCache = TRUE,
- path = outputDir
- ))
-
- suppressWarnings(execute(pipL,
- rmCache = FALSE,
- path = outputDir,
- saveLastStepFF = FALSE,
- saveScaleTransforms = TRUE
- ))
- },
- NA
- )
-})
-
-test_that("CytoPipeline with json input raises no error", {
- expect_error(
- {
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- experimentName <- "OMIP021_PeacoQC"
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"))
- jsonDir <- system.file("extdata", package = "CytoPipeline")
- jsonPath <- file.path(jsonDir, "pipelineParams.json")
-
- pipL2 <- CytoPipeline(jsonPath,
- experimentName = experimentName,
- sampleFiles = sampleFiles)
-
- suppressWarnings(execute(pipL2,
- rmCache = TRUE,
- path = outputDir))
- },
- NA
- )
-})
-
-test_that("CytoPipeline with Biocparallel::Serial (by default) raises no error",
- {
- expect_error(
- {
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"))
-
- jsonDir <- system.file("extdata", package = "CytoPipeline")
- jsonPath <- file.path(jsonDir, "pipelineParams.json")
-
- pipL2 <- CytoPipeline(jsonPath,
- sampleFiles = sampleFiles)
-
- # testing changing the experiment name on the fly
- experimentName(pipL2) <- "BPSerial_Experiment"
-
- bp <- BiocParallel::SerialParam()
- BiocParallel::register(bp, default = TRUE)
- suppressWarnings(execute(pipL2, path = outputDir,
- useBiocParallel = TRUE))
- },
- NA
- )
-})
-
-test_that("CytoPipeline with Biocparallel::SnowParam raises no error", {
- expect_error(
- {
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"))
-
- jsonDir <- system.file("extdata", package = "CytoPipeline")
- jsonPath <- file.path(jsonDir, "pipelineParams.json")
-
- pipL2 <- CytoPipeline(jsonPath,
- experimentName = "BPSNOW_Experiment",
- sampleFiles = sampleFiles)
-
- logDir <- file.path(outputDir, "BiocParallel", "log")
-
- suppressWarnings(dir.create(logDir, recursive = TRUE))
- bp <- BiocParallel::SnowParam(workers = 2, log = TRUE,
- logdir = logDir,
- progressbar = TRUE)
- suppressWarnings(execute(pipL2, path = outputDir,
- useBiocParallel = TRUE,
- BPPARAM = bp, rmCache = TRUE))
-
- },
- NA
- )
-})
-
-test_that("CytoPipeline export as list works", {
- jsonDir <- system.file("extdata", package = "CytoPipeline")
- jsonPath <- file.path(jsonDir, "pipelineParams.json")
-
- pipL1 <- CytoPipeline(jsonPath)
- pipList <- as.list(pipL1)
-
- pipL2 <- CytoPipeline(pipList)
- expect_identical(pipL1, pipL2)
-
-})
-
-test_that("CytoPipeline rebuilt from cache raises no error", {
- expect_error(
- {
- experimentName <- "OMIP021_PeacoQC"
- pipL3 <- buildCytoPipelineFromCache(
- experimentName = experimentName,
- path = outputDir
- )
- suppressWarnings(execute(pipL3,
- rmCache = FALSE,
- path = outputDir
- ))
- },
- NA
- )
-})
-
-
-test_that("CytoPipeline not in cache with warning", {
- expect_warning(
- pipL4 <- buildCytoPipelineFromCache(
- experimentName = "non_existent",
- path = outputDir
- ),
- regexp = "no cache directory found"
- )
-})
-
-
-test_that("Check consistency with cache works", {
- rawDataDir <- system.file("extdata", package = "CytoPipeline")
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
-
- pipL5 <- CytoPipeline(experimentName = "DummyExperiment")
-
- sampleFiles(pipL5) <- sampleFiles
- deleteCytoPipelineCache(pipL5, path = outputDir)
-
- pipL5 <- addProcessingStep(
- pipL5,
- "scale transform",
- CytoProcessingStep(
- name = "flowframe_read",
- FUN = "readSampleFiles",
- ARGS = list(
- whichSamples = "all",
- truncate_max_range = FALSE,
- min.limit = NULL
- )
- )
- )
- res <- checkCytoPipelineConsistencyWithCache(pipL5, path = outputDir)
-
- expect_error(suppressWarnings(execute(pipL5,
- rmCache = TRUE,
- path = outputDir
- )), NA)
-
- res <- checkCytoPipelineConsistencyWithCache(pipL5,
- path = outputDir
- )
- expect_equal(res$isConsistent, TRUE)
- expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
-
- pipL5 <-
- addProcessingStep(pipL5,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "flowframe_read",
- FUN = "readSampleFiles",
- ARGS = list(
- truncate_max_range = FALSE,
- min.limit = NULL
- )
- )
- )
- res <- checkCytoPipelineConsistencyWithCache(pipL5,
- path = outputDir
- )
- expect_equal(res$isConsistent, TRUE)
- expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 1]), "not_run")
- expect_equal(unname(res$preProcessingStepStatus[1, 2]), "not_run")
- expect_equal(res$scaleTransformStepOutputObjNames, c("flowframe_read_obj"))
- expect_equal(res$scaleTransformStepOutputClasses, c("flowSet"))
- expect_equal(res$preProcessingStepOutputObjNames, c("unknown"))
- expect_equal(res$preProcessingStepOutputClasses, c("unknown"))
-
- expect_error(execute(pipL5,
- rmCache = FALSE,
- path = outputDir
- ), NA)
- res <- checkCytoPipelineConsistencyWithCache(pipL5,
- path = outputDir
- )
- expect_equal(res$isConsistent, TRUE)
- expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 2]), "run")
- expect_equal(res$scaleTransformStepOutputObjNames, c("flowframe_read_obj"))
- expect_equal(res$scaleTransformStepOutputClasses, c("flowSet"))
- expect_equal(res$preProcessingStepOutputObjNames, c("flowframe_read_obj"))
- expect_equal(res$preProcessingStepOutputClasses, c("flowFrame"))
-
- pipL5 <-
- addProcessingStep(pipL5,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "remove_margins",
- FUN = "removeMarginsPeacoQC",
- ARGS = list()
- )
- )
-
- res <- checkCytoPipelineConsistencyWithCache(pipL5,
- path = outputDir
- )
- expect_equal(res$isConsistent, TRUE)
- expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 2]), "run")
- expect_equal(unname(res$preProcessingStepStatus[2, 1]), "not_run")
- expect_equal(unname(res$preProcessingStepStatus[2, 2]), "not_run")
- expect_equal(res$scaleTransformStepOutputObjNames, c("flowframe_read_obj"))
- expect_equal(res$scaleTransformStepOutputClasses, c("flowSet"))
- expect_equal(
- res$preProcessingStepOutputObjNames,
- c("flowframe_read_obj", "unknown")
- )
- expect_equal(
- res$preProcessingStepOutputClasses,
- c("flowFrame", "unknown")
- )
-
-
- expect_error(suppressWarnings(execute(pipL5,
- rmCache = FALSE,
- path = outputDir
- )), NA)
- res <- checkCytoPipelineConsistencyWithCache(pipL5,
- path = outputDir
- )
- expect_equal(res$isConsistent, TRUE)
- expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 2]), "run")
- expect_equal(unname(res$preProcessingStepStatus[2, 1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[2, 2]), "run")
- expect_equal(res$scaleTransformStepOutputObjNames, c("flowframe_read_obj"))
- expect_equal(res$scaleTransformStepOutputClasses, c("flowSet"))
- expect_equal(
- res$preProcessingStepOutputObjNames,
- c("flowframe_read_obj", "remove_margins_obj")
- )
- expect_equal(
- res$preProcessingStepOutputClasses,
- c("flowFrame", "flowFrame")
- )
-
- pipL5_bad <- pipL5
-
- pipL5_bad@flowFramesPreProcessingQueue[[2]]@name <- "aaaaaa"
- res <- checkCytoPipelineConsistencyWithCache(pipL5_bad,
- path = outputDir
- )
- expect_equal(res$isConsistent, FALSE)
- expect_equal(
- res$inconsistencyMsg,
- paste0(
- "inconsistent pre-processing step #2 for sample file ",
- "Donor1.fcs (different in cache)"
- )
- )
- expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[2, 1]), "inconsistent")
-
- expect_error(suppressWarnings(execute(pipL5_bad,
- rmCache = FALSE,
- path = outputDir
- )),
- regexp = "inconsistent pre-processing step"
- )
-
- pipL5_bad2 <- pipL5
- pipL5_bad2@flowFramesPreProcessingQueue[[1]]@ARGS$truncate_max_range <-
- TRUE
- res <- checkCytoPipelineConsistencyWithCache(pipL5_bad2,
- path = outputDir
- )
- expect_equal(res$isConsistent, FALSE)
- expect_equal(
- res$inconsistencyMsg,
- paste0(
- "inconsistent pre-processing step #1 for sample file ",
- "Donor1.fcs (different in cache)"
- )
- )
- expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
- expect_equal(unname(res$preProcessingStepStatus[1, 1]), "inconsistent")
- expect_equal(unname(res$preProcessingStepStatus[2, 1]), "not_run")
-
-
- pipL5 <- removeProcessingStep(pipL5,
- whichQueue = "pre-processing",
- index = 2
- )
-
- res <- checkCytoPipelineConsistencyWithCache(pipL5,
- path = outputDir
- )
-
- expect_equal(res$isConsistent, FALSE)
- expect_equal(
- res$inconsistencyMsg,
- paste0(
- "more pre-processing steps in cache than in CytoPipeline object"
- )
- )
-})
-
-
-test_that("plotCytoPipelineProcessingQueue works", {
- pipL6 <- CytoPipeline(experimentName = "DummyExperiment")
-
- deleteCytoPipelineCache(pipL6, path = outputDir)
-
- rawDataDir <- system.file("extdata", package = "CytoPipeline")
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
-
- # put only second sample file for the time being
- sampleFiles(pipL6) <- sampleFiles[2]
- pipL6 <- addProcessingStep(
- pipL6,
- "scale transform",
- CytoProcessingStep(
- name = "flowframe_read",
- FUN = "readSampleFiles",
- ARGS = list(
- whichSamples = "all",
- truncate_max_range = FALSE,
- min.limit = NULL
- )
- )
- )
-
- expect_error(plotCytoPipelineProcessingQueue(
- pipL6,
- whichQueue = "scale transform",
- path = outputDir
- ), NA)
-
- expect_error(suppressWarnings(execute(pipL6,
- rmCache = TRUE,
- path = outputDir
- )), NA)
-
- expect_error(plotCytoPipelineProcessingQueue(
- pipL6,
- whichQueue = "scale transform",
- path = outputDir
- ), NA)
- expect_message(plotCytoPipelineProcessingQueue(
- pipL6,
- whichQueue = "pre-processing",
- path = outputDir
- ),
- regexp = "no sample file passed"
- )
-
- pipL6 <-
- addProcessingStep(pipL6,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "flowframe_read",
- FUN = "readSampleFiles",
- ARGS = list(
- truncate_max_range = FALSE,
- min.limit = NULL
- )
- )
- )
-
- expect_error(plotCytoPipelineProcessingQueue(
- pipL6,
- whichQueue = "scale transform",
- path = outputDir
- ), NA)
- expect_message(plotCytoPipelineProcessingQueue(
- pipL6,
- whichQueue = "pre-processing",
- path = outputDir
- ),
- regexp = "no sample file passed"
- )
-
- execute(pipL6, rmCache = FALSE, path = outputDir)
-
- plotCytoPipelineProcessingQueue(pipL6,
- whichQueue = "scale transform",
- path = outputDir
- )
- expect_error(plotCytoPipelineProcessingQueue(pipL6,
- sampleFile = 1,
- whichQueue = "pre-processing",
- path = outputDir
- ), NA)
- expect_error(plotCytoPipelineProcessingQueue(pipL6,
- sampleFile = 2,
- whichQueue = "pre-processing",
- path = outputDir
- ),
- regexp = "out of bounds"
- )
-
-
- pipL6 <-
- addProcessingStep(pipL6,
- whichQueue = "pre-processing",
- CytoProcessingStep(
- name = "remove_margins",
- FUN = "removeMarginsPeacoQC",
- ARGS = list()
- )
- )
- plotCytoPipelineProcessingQueue(pipL6,
- whichQueue = "scale transform",
- path = outputDir
- )
- plotCytoPipelineProcessingQueue(pipL6,
- sampleFile = 1,
- whichQueue = "pre-processing",
- path = outputDir
- )
-
- suppressWarnings(execute(pipL6,
- rmCache = FALSE,
- path = outputDir
- ))
-
- plotCytoPipelineProcessingQueue(pipL6,
- whichQueue = "scale transform",
- path = outputDir
- )
- plotCytoPipelineProcessingQueue(pipL6,
- sampleFile = 1,
- whichQueue = "pre-processing",
- path = outputDir
- )
-
- # add first sample file to see the impact
- sampleFiles(pipL6) <- sampleFiles
-
- plotCytoPipelineProcessingQueue(pipL6,
- whichQueue = "scale transform",
- path = outputDir
- )
- # following should show yellow boxes
- plotCytoPipelineProcessingQueue(pipL6,
- whichQueue = "pre-processing",
- path = outputDir
- )
- # following should show bow in green
- plotCytoPipelineProcessingQueue(pipL6,
- sampleFile = 2,
- whichQueue = "pre-processing",
- path = outputDir
- )
-
- suppressWarnings(execute(pipL6,
- rmCache = FALSE,
- path = outputDir
- ))
-
- plotCytoPipelineProcessingQueue(pipL6,
- whichQueue = "scale transform",
- path = outputDir
- )
- # following should now show the green box
- plotCytoPipelineProcessingQueue(pipL6,
- whichQueue = "pre-processing",
- path = outputDir
- )
- # following as well
- plotCytoPipelineProcessingQueue(pipL6,
- sampleFile = sampleFiles[2],
- whichQueue = "pre-processing",
- path = outputDir
- )
-
-
- pipL6@flowFramesPreProcessingQueue[[2]]@name <- "aaaaaa"
-
- expect_error(plotCytoPipelineProcessingQueue(
- pipL6,
- whichQueue = "scale transform",
- path = outputDir
- ),
- NA
- )
-
- expect_warning(plotCytoPipelineProcessingQueue(
- pipL6,
- sampleFile = 1,
- whichQueue = "pre-processing",
- path = outputDir
- ),
- regexp = "CytoPipeline object not consistent with cache"
- )
-
-
- expect_error(execute(pipL6,
- rmCache = FALSE,
- path = outputDir
- ), regexp = "inconsistent")
-})
-
-test_that("getCytoPipelineObject works", {
-
- expect_error(
- {
- experimentName <- "OMIP021_PeacoQC"
-
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
-
- pipL7 <- buildCytoPipelineFromCache(
- experimentName = experimentName,
- path = outputDir
- )
-
- plotCytoPipelineProcessingQueue(pipL7,
- sampleFile = 1,
- whichQueue = "pre-processing",
- path = outputDir
- )
-
- getCytoPipelineObjectInfos(pipL7,
- whichQueue = "pre-processing",
- sampleFile = sampleFiles[1],
- path = outputDir
- )
- getCytoPipelineObjectInfos(pipL7,
- whichQueue = "pre-processing",
- sampleFile = 1,
- path = outputDir
- )
- getCytoPipelineObjectInfos(pipL7,
- whichQueue = "scale transform",
- sampleFile = sampleFiles[1],
- path = outputDir
- )
-
- ffFrom <- getCytoPipelineFlowFrame(pipL7,
- whichQueue = "pre-processing",
- sampleFile = sampleFiles[1],
- objectName = "compensate_obj",
- path = outputDir
- )
-
- ffTo <- getCytoPipelineFlowFrame(pipL7,
- whichQueue = "pre-processing",
- sampleFile = sampleFiles[1],
- objectName = "remove_doublets_obj",
- path = outputDir
- )
-
- ggplotFilterEvents(ffFrom, ffTo,
- xChannel = "FSC-A", yChannel = "FSC-H"
- )
-
- plotCytoPipelineProcessingQueue(pipL7,
- whichQueue = "scale transform",
- path = outputDir
- )
- },
- NA
- )
-
- expect_error(getCytoPipelineObjectInfos(pipL7,
- whichQueue = "pre-processing",
- sampleFile = 3,
- path = outputDir),
- "out of bounds")
-
-
- expect_error(
- getCytoPipelineScaleTransform(
- pipL7,
- whichQueue = "scale transform",
- objectName = "flowframe_aggregate_obj",
- path = outputDir
- ),
- regexp = "does not appear to be a transformList"
- )
-
-
- expect_error(
- transList <-
- getCytoPipelineScaleTransform(
- pipL7,
- whichQueue = "scale transform",
- objectName = "scale_transform_estimate_obj",
- path = outputDir
- ),
- NA
- )
-
- expect_error(
- ffAgg <-
- getCytoPipelineFlowFrame(pipL7,
- whichQueue = "scale transform",
- objectName = "flowframe_aggregate_obj",
- path = outputDir
- ),
- NA
- )
-
-
-})
-
-test_that("collectNbOfRetainedEvents works", {
-
- experimentName <- "OMIP021_PeacoQC"
-
- rawDataDir <-
- system.file("extdata", package = "CytoPipeline")
- sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
- pattern = "Donor"
- ))
-
- stepNames <- c("flowframe_read", "remove_margins", "compensate",
- "remove_doublets", "remove_debris", "remove_dead_cells",
- "perform_QC", "transform")
-
- # with missing whichSampleFiles argument
- nbEventsDF1 <- collectNbOfRetainedEvents(
- experimentName = experimentName,
- path = outputDir
- )
-
- expect_equal(unname(colnames(nbEventsDF1)), stepNames)
- expect_equal(unname(rownames(nbEventsDF1)), basename(sampleFiles))
- expect_equal(nbEventsDF1[1,1], 5000)
- expect_equal(nbEventsDF1[1,2], 4494)
- expect_equal(nbEventsDF1[1,3], 4494)
- expect_equal(nbEventsDF1[1,4], 3541)
- expect_equal(nbEventsDF1[1,5], 2983)
- expect_equal(nbEventsDF1[1,6], 2888)
- expect_equal(nbEventsDF1[1,7], 2000)
- expect_equal(nbEventsDF1[1,8], 2000)
- expect_equal(nbEventsDF1[2,1], 5000)
- expect_equal(nbEventsDF1[2,2], 4700)
- expect_equal(nbEventsDF1[2,3], 4700)
- expect_equal(nbEventsDF1[2,4], 3809)
- expect_equal(nbEventsDF1[2,5], 3347)
- expect_equal(nbEventsDF1[2,6], 3306)
- expect_equal(nbEventsDF1[2,7], 2500)
- expect_equal(nbEventsDF1[2,8], 2500)
-
- # with explicit whichSampleFiles argument
- nbEventsDF2 <- collectNbOfRetainedEvents(
- experimentName = experimentName,
- path = outputDir,
- whichSampleFiles = sampleFiles[1]
- )
-
- expect_equal(unname(colnames(nbEventsDF2)), stepNames)
- expect_equal(unname(rownames(nbEventsDF2)), basename(sampleFiles[1]))
- expect_equal(nbEventsDF2[1,1], 5000)
- expect_equal(nbEventsDF2[1,2], 4494)
- expect_equal(nbEventsDF2[1,3], 4494)
- expect_equal(nbEventsDF2[1,4], 3541)
- expect_equal(nbEventsDF2[1,5], 2983)
- expect_equal(nbEventsDF2[1,6], 2888)
- expect_equal(nbEventsDF2[1,7], 2000)
- expect_equal(nbEventsDF2[1,8], 2000)
-
- # with wrong whichSampleFiles argument
- expect_error(
- collectNbOfRetainedEvents(
- experimentName = experimentName,
- path = outputDir,
- whichSampleFiles = 3
- ), regexp = "whichSampleFiles out of bounds")
-
-})
+# outputDir <- base::tempdir()
+#
+# if (!interactive()) pdf(NULL)
+#
+# test_that("CytoPipeline default creation raises no error", {
+# expect_error(pipL0 <- CytoPipeline(), NA)
+# })
+#
+# test_that("Cytopipeline add/remove/clean processing step works", {
+# rawDataDir <- system.file("extdata", package = "CytoPipeline")
+# experimentName <- "OMIP021_PeacoQC"
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+# transListPath <- file.path(system.file("extdata",
+# package = "CytoPipeline"),
+# "OMIP021_TransList.rds")
+#
+#
+# # main parameters : sample files and experiment name
+# pipelineParams <- list()
+# pipelineParams$experimentName <- experimentName
+#
+# pipL <- CytoPipeline(pipelineParams)
+# expect_error(show(pipL), NA)
+#
+# pipelineParams$sampleFiles <- sampleFiles
+#
+# pipL <- CytoPipeline(pipelineParams)
+# expect_error(show(pipL), NA)
+#
+# pipL <- addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "scale_transform_read",
+# FUN = "readRDS",
+# ARGS = list(file = transListPath)
+# )
+# )
+#
+# expect_equal(getNbProcessingSteps(pipL, "scale transform"), 1)
+#
+# pipL <- addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "scale_transform_sum",
+# FUN = "sum",
+# ARGS = list()
+# )
+# )
+#
+# expect_equal(getNbProcessingSteps(pipL, "scale transform"), 2)
+#
+# pipL <- removeProcessingStep(pipL,
+# whichQueue = "scale transform",
+# index = 2
+# )
+# expect_equal(getNbProcessingSteps(pipL, "scale transform"), 1)
+# pS <- getProcessingStep(pipL, whichQueue = "scale transform", index = 1)
+# expect_equal(pS@FUN, "readRDS")
+#
+# pipL <- addProcessingStep(pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "pre-processing_sum",
+# FUN = "sum",
+# ARGS = list()
+# )
+# )
+# expect_equal(getNbProcessingSteps(pipL, "scale transform"), 1)
+# expect_equal(getNbProcessingSteps(pipL, "pre-processing"), 1)
+#
+# expect_error(pipL <- addProcessingStep(pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "pre-processing_sum",
+# FUN = "mean",
+# ARGS = list()
+# )
+# ), regexp = "There already exist a step")
+#
+# pipL <- cleanProcessingSteps(pipL)
+# expect_equal(getNbProcessingSteps(pipL, "scale transform"), 0)
+# expect_equal(getNbProcessingSteps(pipL, "pre-processing"), 0)
+#
+# newExp <- "newExperiment"
+# experimentName(pipL) <- newExp
+# expect_equal(experimentName(pipL), newExp)
+#
+# newPhenoData <- data.frame(name = c("Donor1", "Donor2"),
+# donor = c(1,2))
+# expect_error(pData(pipL) <- "invalidCharacterType",
+# regexp = "is not TRUE")
+#
+# expect_error(pData(pipL) <- newPhenoData,
+# regexp = "should contain all sample file basenames")
+#
+# })
+#
+# test_that("CytoPipeline with reading scale transfo only raises no error", {
+# expect_error(
+# {
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# experimentName <- "OMIP021_PeacoQC"
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+# transListPath <- file.path(system.file("extdata",
+# package = "CytoPipeline"),
+# "OMIP021_TransList.rds")
+#
+# # main parameters : sample files and output files
+# pipelineParams <- list()
+# pipelineParams$experimentName <- experimentName
+# pipelineParams$sampleFiles <- sampleFiles
+#
+# pipL <- CytoPipeline(pipelineParams)
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "scale_transform_read",
+# FUN = "readRDSObject",
+# ARGS = list(RDSFile = transListPath)
+# )
+# )
+#
+# suppressWarnings(execute(pipL,
+# rmCache = TRUE,
+# path = outputDir
+# ))
+# },
+# NA
+# )
+# })
+#
+# test_that("CytoPipeline with no sample raises an execution error", {
+# expect_error(
+# {
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# experimentName <- "OMIP021_PeacoQC"
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "NotGood"
+# ))
+#
+# # main parameters : sample files and output files
+# pipelineParams <- list()
+# pipelineParams$experimentName <- experimentName
+# pipelineParams$sampleFiles <- sampleFiles
+#
+# pipL <- CytoPipeline(pipelineParams)
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "flowframe_read",
+# FUN = "readSampleFiles",
+# ARGS = list(
+# whichSamples = "all",
+# truncate_max_range = FALSE,
+# min.limit = NULL
+# )
+# )
+# )
+#
+# suppressWarnings(execute(pipL,
+# rmCache = TRUE,
+# path = outputDir
+# ))
+# },
+# "Can't execute CytoPipeline object with no sample file"
+# )
+# })
+#
+# test_that("Creation of CytoPipeline with wrong phenoData raises an error", {
+# expect_error(
+# {
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# experimentName <- "OMIP021_PeacoQC"
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+#
+# phenoData <- data.frame(row.names = c("wrong1", "wrong2"),
+# donor = c(1,2),
+# group = c("G1", "G1"))
+#
+# pipL <- CytoPipeline(experimentName = experimentName,
+# sampleFiles = sampleFiles,
+# pData = phenoData)
+# }, "Row names of non-null @pData slot should contain all sample file")
+# })
+#
+# test_that("Execution of CytoPipeline with correct phenoData raises no error", {
+# expect_error(
+# {
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# experimentName <- "OMIP021_PeacoQC"
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+#
+# phenoData <- data.frame(row.names = basename(sampleFiles),
+# donor = c(1,2),
+# group = c("G1", "G1"))
+#
+# # main parameters : sample files and output files
+# pipelineParams <- list()
+# pipelineParams$experimentName <- experimentName
+# pipelineParams$sampleFiles <- sampleFiles
+# pipelineParams$pData <- phenoData
+#
+# pipL <- CytoPipeline(pipelineParams)
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "flowframe_read",
+# FUN = "readSampleFiles",
+# ARGS = list(
+# whichSamples = "all",
+# truncate_max_range = FALSE,
+# min.limit = NULL
+# )
+# )
+# )
+#
+# suppressWarnings(execute(pipL,
+# rmCache = TRUE,
+# path = outputDir
+# ))
+#
+# # re-execute un second time to test behaviour with pData
+# execute(pipL,
+# rmCache = FALSE,
+# path = outputDir
+# )
+# },
+# NA
+# )
+#
+# newPipL <- buildCytoPipelineFromCache(experimentName,
+# path = outputDir)
+#
+# newPData <- pData(newPipL)
+# expect_true(all.equal(phenoData, newPData))
+# })
+#
+#
+# test_that("CytoPipeline with complex flows raises no error", {
+# expect_error(
+# {
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# experimentName <- "OMIP021_PeacoQC"
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+#
+# # main parameters : sample files and output files
+# pipL <- CytoPipeline(experimentName = experimentName,
+# sampleFiles = sampleFiles)
+#
+# ### SCALE TRANSFORMATION STEPS ###
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "flowframe_read",
+# FUN = "readSampleFiles",
+# ARGS = list(
+# whichSamples = "all",
+# truncate_max_range = FALSE,
+# min.limit = NULL
+# )
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "remove_margins",
+# FUN = "removeMarginsPeacoQC",
+# ARGS = list()
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "compensate",
+# FUN = "compensateFromMatrix",
+# ARGS = list(matrixSource = "fcs")
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "flowframe_aggregate",
+# FUN = "aggregateAndSample",
+# ARGS = list(
+# nTotalEvents = 10000,
+# seed = 0
+# )
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "scale transform",
+# CytoProcessingStep(
+# name = "scale_transform_estimate",
+# FUN = "estimateScaleTransforms",
+# ARGS = list(
+# fluoMethod = "estimateLogicle",
+# scatterMethod = "linear",
+# scatterRefMarker = "BV785 - CD3"
+# )
+# )
+# )
+#
+# ### PRE-PROCESSING STEPS ###
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "flowframe_read",
+# FUN = "readSampleFiles",
+# ARGS = list(
+# truncate_max_range = FALSE,
+# min.limit = NULL
+# )
+# )
+# )
+#
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "remove_margins",
+# FUN = "removeMarginsPeacoQC",
+# ARGS = list()
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "compensate",
+# FUN = "compensateFromMatrix",
+# ARGS = list(matrixSource = "fcs")
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(
+# pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "remove_doublets",
+# FUN = "removeDoubletsCytoPipeline",
+# ARGS = list(
+# areaChannels = c("FSC-A", "SSC-A"),
+# heightChannels = c("FSC-H", "SSC-H"),
+# nmads = c(3, 5))
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "remove_debris",
+# FUN = "removeDebrisManualGate",
+# ARGS = list(
+# FSCChannel = "FSC-A",
+# SSCChannel = "SSC-A",
+# gateData = c(73615, 110174, 213000, 201000, 126000,
+# 47679, 260500, 260500, 113000, 35000)
+# )
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "remove_dead_cells",
+# FUN = "removeDeadCellsManualGate",
+# ARGS = list(
+# FSCChannel = "FSC-A",
+# LDMarker = "L/D Aqua - Viability",
+# gateData = c(0, 0, 250000, 250000,
+# 0, 650, 650, 0)
+# )
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(
+# pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "perform_QC",
+# FUN = "qualityControlPeacoQC",
+# ARGS = list(
+# preTransform = TRUE,
+# min_cells = 150, # default
+# max_bins = 500, # default
+# step = 500, # default,
+# MAD = 6, # default
+# IT_limit = 0.55, # default
+# force_IT = 150, # default
+# peak_removal = 0.3333, # default
+# min_nr_bins_peakdetection = 10 # default
+# )
+# )
+# )
+#
+# pipL <-
+# addProcessingStep(pipL,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "transform",
+# FUN = "applyScaleTransforms",
+# ARGS = list()
+# )
+# )
+#
+# suppressWarnings(execute(pipL,
+# rmCache = TRUE,
+# path = outputDir
+# ))
+#
+# suppressWarnings(execute(pipL,
+# rmCache = FALSE,
+# path = outputDir,
+# saveLastStepFF = FALSE,
+# saveScaleTransforms = TRUE
+# ))
+# },
+# NA
+# )
+# })
+#
+# test_that("CytoPipeline with json input raises no error", {
+# expect_error(
+# {
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# experimentName <- "OMIP021_PeacoQC"
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"))
+# jsonDir <- system.file("extdata", package = "CytoPipeline")
+# jsonPath <- file.path(jsonDir, "pipelineParams.json")
+#
+# pipL2 <- CytoPipeline(jsonPath,
+# experimentName = experimentName,
+# sampleFiles = sampleFiles)
+#
+# suppressWarnings(execute(pipL2,
+# rmCache = TRUE,
+# path = outputDir))
+# },
+# NA
+# )
+# })
+#
+# test_that("CytoPipeline with Biocparallel::Serial (by default) raises no error",
+# {
+# expect_error(
+# {
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"))
+#
+# jsonDir <- system.file("extdata", package = "CytoPipeline")
+# jsonPath <- file.path(jsonDir, "pipelineParams.json")
+#
+# pipL2 <- CytoPipeline(jsonPath,
+# sampleFiles = sampleFiles)
+#
+# # testing changing the experiment name on the fly
+# experimentName(pipL2) <- "BPSerial_Experiment"
+#
+# bp <- BiocParallel::SerialParam()
+# BiocParallel::register(bp, default = TRUE)
+# suppressWarnings(execute(pipL2, path = outputDir,
+# useBiocParallel = TRUE))
+# },
+# NA
+# )
+# })
+#
+# test_that("CytoPipeline with Biocparallel::SnowParam raises no error", {
+# expect_error(
+# {
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"))
+#
+# jsonDir <- system.file("extdata", package = "CytoPipeline")
+# jsonPath <- file.path(jsonDir, "pipelineParams.json")
+#
+# pipL2 <- CytoPipeline(jsonPath,
+# experimentName = "BPSNOW_Experiment",
+# sampleFiles = sampleFiles)
+#
+# logDir <- file.path(outputDir, "BiocParallel", "log")
+#
+# suppressWarnings(dir.create(logDir, recursive = TRUE))
+# bp <- BiocParallel::SnowParam(workers = 2, log = TRUE,
+# logdir = logDir,
+# progressbar = TRUE)
+# suppressWarnings(execute(pipL2, path = outputDir,
+# useBiocParallel = TRUE,
+# BPPARAM = bp, rmCache = TRUE))
+#
+# },
+# NA
+# )
+# })
+#
+# test_that("CytoPipeline export as list works", {
+# jsonDir <- system.file("extdata", package = "CytoPipeline")
+# jsonPath <- file.path(jsonDir, "pipelineParams.json")
+#
+# pipL1 <- CytoPipeline(jsonPath)
+# pipList <- as.list(pipL1)
+#
+# pipL2 <- CytoPipeline(pipList)
+# expect_identical(pipL1, pipL2)
+#
+# })
+#
+# test_that("CytoPipeline rebuilt from cache raises no error", {
+# expect_error(
+# {
+# experimentName <- "OMIP021_PeacoQC"
+# pipL3 <- buildCytoPipelineFromCache(
+# experimentName = experimentName,
+# path = outputDir
+# )
+# suppressWarnings(execute(pipL3,
+# rmCache = FALSE,
+# path = outputDir
+# ))
+# },
+# NA
+# )
+# })
+#
+#
+# test_that("CytoPipeline not in cache with warning", {
+# expect_warning(
+# pipL4 <- buildCytoPipelineFromCache(
+# experimentName = "non_existent",
+# path = outputDir
+# ),
+# regexp = "no cache directory found"
+# )
+# })
+#
+#
+# test_that("Check consistency with cache works", {
+# rawDataDir <- system.file("extdata", package = "CytoPipeline")
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+#
+# pipL5 <- CytoPipeline(experimentName = "DummyExperiment")
+#
+# sampleFiles(pipL5) <- sampleFiles
+# deleteCytoPipelineCache(pipL5, path = outputDir)
+#
+# pipL5 <- addProcessingStep(
+# pipL5,
+# "scale transform",
+# CytoProcessingStep(
+# name = "flowframe_read",
+# FUN = "readSampleFiles",
+# ARGS = list(
+# whichSamples = "all",
+# truncate_max_range = FALSE,
+# min.limit = NULL
+# )
+# )
+# )
+# res <- checkCytoPipelineConsistencyWithCache(pipL5, path = outputDir)
+#
+# expect_error(suppressWarnings(execute(pipL5,
+# rmCache = TRUE,
+# path = outputDir
+# )), NA)
+#
+# res <- checkCytoPipelineConsistencyWithCache(pipL5,
+# path = outputDir
+# )
+# expect_equal(res$isConsistent, TRUE)
+# expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
+#
+# pipL5 <-
+# addProcessingStep(pipL5,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "flowframe_read",
+# FUN = "readSampleFiles",
+# ARGS = list(
+# truncate_max_range = FALSE,
+# min.limit = NULL
+# )
+# )
+# )
+# res <- checkCytoPipelineConsistencyWithCache(pipL5,
+# path = outputDir
+# )
+# expect_equal(res$isConsistent, TRUE)
+# expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 1]), "not_run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 2]), "not_run")
+# expect_equal(res$scaleTransformStepOutputObjNames, c("flowframe_read_obj"))
+# expect_equal(res$scaleTransformStepOutputClasses, c("flowSet"))
+# expect_equal(res$preProcessingStepOutputObjNames, c("unknown"))
+# expect_equal(res$preProcessingStepOutputClasses, c("unknown"))
+#
+# expect_error(execute(pipL5,
+# rmCache = FALSE,
+# path = outputDir
+# ), NA)
+# res <- checkCytoPipelineConsistencyWithCache(pipL5,
+# path = outputDir
+# )
+# expect_equal(res$isConsistent, TRUE)
+# expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 2]), "run")
+# expect_equal(res$scaleTransformStepOutputObjNames, c("flowframe_read_obj"))
+# expect_equal(res$scaleTransformStepOutputClasses, c("flowSet"))
+# expect_equal(res$preProcessingStepOutputObjNames, c("flowframe_read_obj"))
+# expect_equal(res$preProcessingStepOutputClasses, c("flowFrame"))
+#
+# pipL5 <-
+# addProcessingStep(pipL5,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "remove_margins",
+# FUN = "removeMarginsPeacoQC",
+# ARGS = list()
+# )
+# )
+#
+# res <- checkCytoPipelineConsistencyWithCache(pipL5,
+# path = outputDir
+# )
+# expect_equal(res$isConsistent, TRUE)
+# expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 2]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[2, 1]), "not_run")
+# expect_equal(unname(res$preProcessingStepStatus[2, 2]), "not_run")
+# expect_equal(res$scaleTransformStepOutputObjNames, c("flowframe_read_obj"))
+# expect_equal(res$scaleTransformStepOutputClasses, c("flowSet"))
+# expect_equal(
+# res$preProcessingStepOutputObjNames,
+# c("flowframe_read_obj", "unknown")
+# )
+# expect_equal(
+# res$preProcessingStepOutputClasses,
+# c("flowFrame", "unknown")
+# )
+#
+#
+# expect_error(suppressWarnings(execute(pipL5,
+# rmCache = FALSE,
+# path = outputDir
+# )), NA)
+# res <- checkCytoPipelineConsistencyWithCache(pipL5,
+# path = outputDir
+# )
+# expect_equal(res$isConsistent, TRUE)
+# expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 2]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[2, 1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[2, 2]), "run")
+# expect_equal(res$scaleTransformStepOutputObjNames, c("flowframe_read_obj"))
+# expect_equal(res$scaleTransformStepOutputClasses, c("flowSet"))
+# expect_equal(
+# res$preProcessingStepOutputObjNames,
+# c("flowframe_read_obj", "remove_margins_obj")
+# )
+# expect_equal(
+# res$preProcessingStepOutputClasses,
+# c("flowFrame", "flowFrame")
+# )
+#
+# pipL5_bad <- pipL5
+#
+# pipL5_bad@flowFramesPreProcessingQueue[[2]]@name <- "aaaaaa"
+# res <- checkCytoPipelineConsistencyWithCache(pipL5_bad,
+# path = outputDir
+# )
+# expect_equal(res$isConsistent, FALSE)
+# expect_equal(
+# res$inconsistencyMsg,
+# paste0(
+# "inconsistent pre-processing step #2 for sample file ",
+# "Donor1.fcs (different in cache)"
+# )
+# )
+# expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[2, 1]), "inconsistent")
+#
+# expect_error(suppressWarnings(execute(pipL5_bad,
+# rmCache = FALSE,
+# path = outputDir
+# )),
+# regexp = "inconsistent pre-processing step"
+# )
+#
+# pipL5_bad2 <- pipL5
+# pipL5_bad2@flowFramesPreProcessingQueue[[1]]@ARGS$truncate_max_range <-
+# TRUE
+# res <- checkCytoPipelineConsistencyWithCache(pipL5_bad2,
+# path = outputDir
+# )
+# expect_equal(res$isConsistent, FALSE)
+# expect_equal(
+# res$inconsistencyMsg,
+# paste0(
+# "inconsistent pre-processing step #1 for sample file ",
+# "Donor1.fcs (different in cache)"
+# )
+# )
+# expect_equal(unname(res$scaleTransformStepStatus[1]), "run")
+# expect_equal(unname(res$preProcessingStepStatus[1, 1]), "inconsistent")
+# expect_equal(unname(res$preProcessingStepStatus[2, 1]), "not_run")
+#
+#
+# pipL5 <- removeProcessingStep(pipL5,
+# whichQueue = "pre-processing",
+# index = 2
+# )
+#
+# res <- checkCytoPipelineConsistencyWithCache(pipL5,
+# path = outputDir
+# )
+#
+# expect_equal(res$isConsistent, FALSE)
+# expect_equal(
+# res$inconsistencyMsg,
+# paste0(
+# "more pre-processing steps in cache than in CytoPipeline object"
+# )
+# )
+# })
+#
+#
+# test_that("plotCytoPipelineProcessingQueue works", {
+# pipL6 <- CytoPipeline(experimentName = "DummyExperiment")
+#
+# deleteCytoPipelineCache(pipL6, path = outputDir)
+#
+# rawDataDir <- system.file("extdata", package = "CytoPipeline")
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+#
+# # put only second sample file for the time being
+# sampleFiles(pipL6) <- sampleFiles[2]
+# pipL6 <- addProcessingStep(
+# pipL6,
+# "scale transform",
+# CytoProcessingStep(
+# name = "flowframe_read",
+# FUN = "readSampleFiles",
+# ARGS = list(
+# whichSamples = "all",
+# truncate_max_range = FALSE,
+# min.limit = NULL
+# )
+# )
+# )
+#
+# expect_error(plotCytoPipelineProcessingQueue(
+# pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# ), NA)
+#
+# expect_error(suppressWarnings(execute(pipL6,
+# rmCache = TRUE,
+# path = outputDir
+# )), NA)
+#
+# expect_error(plotCytoPipelineProcessingQueue(
+# pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# ), NA)
+# expect_message(plotCytoPipelineProcessingQueue(
+# pipL6,
+# whichQueue = "pre-processing",
+# path = outputDir
+# ),
+# regexp = "no sample file passed"
+# )
+#
+# pipL6 <-
+# addProcessingStep(pipL6,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "flowframe_read",
+# FUN = "readSampleFiles",
+# ARGS = list(
+# truncate_max_range = FALSE,
+# min.limit = NULL
+# )
+# )
+# )
+#
+# expect_error(plotCytoPipelineProcessingQueue(
+# pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# ), NA)
+# expect_message(plotCytoPipelineProcessingQueue(
+# pipL6,
+# whichQueue = "pre-processing",
+# path = outputDir
+# ),
+# regexp = "no sample file passed"
+# )
+#
+# execute(pipL6, rmCache = FALSE, path = outputDir)
+#
+# plotCytoPipelineProcessingQueue(pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# )
+# expect_error(plotCytoPipelineProcessingQueue(pipL6,
+# sampleFile = 1,
+# whichQueue = "pre-processing",
+# path = outputDir
+# ), NA)
+# expect_error(plotCytoPipelineProcessingQueue(pipL6,
+# sampleFile = 2,
+# whichQueue = "pre-processing",
+# path = outputDir
+# ),
+# regexp = "out of bounds"
+# )
+#
+#
+# pipL6 <-
+# addProcessingStep(pipL6,
+# whichQueue = "pre-processing",
+# CytoProcessingStep(
+# name = "remove_margins",
+# FUN = "removeMarginsPeacoQC",
+# ARGS = list()
+# )
+# )
+# plotCytoPipelineProcessingQueue(pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# )
+# plotCytoPipelineProcessingQueue(pipL6,
+# sampleFile = 1,
+# whichQueue = "pre-processing",
+# path = outputDir
+# )
+#
+# suppressWarnings(execute(pipL6,
+# rmCache = FALSE,
+# path = outputDir
+# ))
+#
+# plotCytoPipelineProcessingQueue(pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# )
+# plotCytoPipelineProcessingQueue(pipL6,
+# sampleFile = 1,
+# whichQueue = "pre-processing",
+# path = outputDir
+# )
+#
+# # add first sample file to see the impact
+# sampleFiles(pipL6) <- sampleFiles
+#
+# plotCytoPipelineProcessingQueue(pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# )
+# # following should show yellow boxes
+# plotCytoPipelineProcessingQueue(pipL6,
+# whichQueue = "pre-processing",
+# path = outputDir
+# )
+# # following should show bow in green
+# plotCytoPipelineProcessingQueue(pipL6,
+# sampleFile = 2,
+# whichQueue = "pre-processing",
+# path = outputDir
+# )
+#
+# suppressWarnings(execute(pipL6,
+# rmCache = FALSE,
+# path = outputDir
+# ))
+#
+# plotCytoPipelineProcessingQueue(pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# )
+# # following should now show the green box
+# plotCytoPipelineProcessingQueue(pipL6,
+# whichQueue = "pre-processing",
+# path = outputDir
+# )
+# # following as well
+# plotCytoPipelineProcessingQueue(pipL6,
+# sampleFile = sampleFiles[2],
+# whichQueue = "pre-processing",
+# path = outputDir
+# )
+#
+#
+# pipL6@flowFramesPreProcessingQueue[[2]]@name <- "aaaaaa"
+#
+# expect_error(plotCytoPipelineProcessingQueue(
+# pipL6,
+# whichQueue = "scale transform",
+# path = outputDir
+# ),
+# NA
+# )
+#
+# expect_warning(plotCytoPipelineProcessingQueue(
+# pipL6,
+# sampleFile = 1,
+# whichQueue = "pre-processing",
+# path = outputDir
+# ),
+# regexp = "CytoPipeline object not consistent with cache"
+# )
+#
+#
+# expect_error(execute(pipL6,
+# rmCache = FALSE,
+# path = outputDir
+# ), regexp = "inconsistent")
+# })
+#
+# test_that("getCytoPipelineObject works", {
+#
+# expect_error(
+# {
+# experimentName <- "OMIP021_PeacoQC"
+#
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+#
+# pipL7 <- buildCytoPipelineFromCache(
+# experimentName = experimentName,
+# path = outputDir
+# )
+#
+# plotCytoPipelineProcessingQueue(pipL7,
+# sampleFile = 1,
+# whichQueue = "pre-processing",
+# path = outputDir
+# )
+#
+# getCytoPipelineObjectInfos(pipL7,
+# whichQueue = "pre-processing",
+# sampleFile = sampleFiles[1],
+# path = outputDir
+# )
+# getCytoPipelineObjectInfos(pipL7,
+# whichQueue = "pre-processing",
+# sampleFile = 1,
+# path = outputDir
+# )
+# getCytoPipelineObjectInfos(pipL7,
+# whichQueue = "scale transform",
+# sampleFile = sampleFiles[1],
+# path = outputDir
+# )
+#
+# ffFrom <- getCytoPipelineFlowFrame(pipL7,
+# whichQueue = "pre-processing",
+# sampleFile = sampleFiles[1],
+# objectName = "compensate_obj",
+# path = outputDir
+# )
+#
+# ffTo <- getCytoPipelineFlowFrame(pipL7,
+# whichQueue = "pre-processing",
+# sampleFile = sampleFiles[1],
+# objectName = "remove_doublets_obj",
+# path = outputDir
+# )
+#
+# ggplotFilterEvents(ffFrom, ffTo,
+# xChannel = "FSC-A", yChannel = "FSC-H"
+# )
+#
+# plotCytoPipelineProcessingQueue(pipL7,
+# whichQueue = "scale transform",
+# path = outputDir
+# )
+# },
+# NA
+# )
+#
+# expect_error(getCytoPipelineObjectInfos(pipL7,
+# whichQueue = "pre-processing",
+# sampleFile = 3,
+# path = outputDir),
+# "out of bounds")
+#
+#
+# expect_error(
+# getCytoPipelineScaleTransform(
+# pipL7,
+# whichQueue = "scale transform",
+# objectName = "flowframe_aggregate_obj",
+# path = outputDir
+# ),
+# regexp = "does not appear to be a transformList"
+# )
+#
+#
+# expect_error(
+# transList <-
+# getCytoPipelineScaleTransform(
+# pipL7,
+# whichQueue = "scale transform",
+# objectName = "scale_transform_estimate_obj",
+# path = outputDir
+# ),
+# NA
+# )
+#
+# expect_error(
+# ffAgg <-
+# getCytoPipelineFlowFrame(pipL7,
+# whichQueue = "scale transform",
+# objectName = "flowframe_aggregate_obj",
+# path = outputDir
+# ),
+# NA
+# )
+#
+#
+# })
+#
+# test_that("collectNbOfRetainedEvents works", {
+#
+# experimentName <- "OMIP021_PeacoQC"
+#
+# rawDataDir <-
+# system.file("extdata", package = "CytoPipeline")
+# sampleFiles <- file.path(rawDataDir, list.files(rawDataDir,
+# pattern = "Donor"
+# ))
+#
+# stepNames <- c("flowframe_read", "remove_margins", "compensate",
+# "remove_doublets", "remove_debris", "remove_dead_cells",
+# "perform_QC", "transform")
+#
+# # with missing whichSampleFiles argument
+# nbEventsDF1 <- collectNbOfRetainedEvents(
+# experimentName = experimentName,
+# path = outputDir
+# )
+#
+# expect_equal(unname(colnames(nbEventsDF1)), stepNames)
+# expect_equal(unname(rownames(nbEventsDF1)), basename(sampleFiles))
+# expect_equal(nbEventsDF1[1,1], 5000)
+# expect_equal(nbEventsDF1[1,2], 4494)
+# expect_equal(nbEventsDF1[1,3], 4494)
+# expect_equal(nbEventsDF1[1,4], 3541)
+# expect_equal(nbEventsDF1[1,5], 2983)
+# expect_equal(nbEventsDF1[1,6], 2888)
+# expect_equal(nbEventsDF1[1,7], 2000)
+# expect_equal(nbEventsDF1[1,8], 2000)
+# expect_equal(nbEventsDF1[2,1], 5000)
+# expect_equal(nbEventsDF1[2,2], 4700)
+# expect_equal(nbEventsDF1[2,3], 4700)
+# expect_equal(nbEventsDF1[2,4], 3809)
+# expect_equal(nbEventsDF1[2,5], 3347)
+# expect_equal(nbEventsDF1[2,6], 3306)
+# expect_equal(nbEventsDF1[2,7], 2500)
+# expect_equal(nbEventsDF1[2,8], 2500)
+#
+# # with explicit whichSampleFiles argument
+# nbEventsDF2 <- collectNbOfRetainedEvents(
+# experimentName = experimentName,
+# path = outputDir,
+# whichSampleFiles = sampleFiles[1]
+# )
+#
+# expect_equal(unname(colnames(nbEventsDF2)), stepNames)
+# expect_equal(unname(rownames(nbEventsDF2)), basename(sampleFiles[1]))
+# expect_equal(nbEventsDF2[1,1], 5000)
+# expect_equal(nbEventsDF2[1,2], 4494)
+# expect_equal(nbEventsDF2[1,3], 4494)
+# expect_equal(nbEventsDF2[1,4], 3541)
+# expect_equal(nbEventsDF2[1,5], 2983)
+# expect_equal(nbEventsDF2[1,6], 2888)
+# expect_equal(nbEventsDF2[1,7], 2000)
+# expect_equal(nbEventsDF2[1,8], 2000)
+#
+# # with wrong whichSampleFiles argument
+# expect_error(
+# collectNbOfRetainedEvents(
+# experimentName = experimentName,
+# path = outputDir,
+# whichSampleFiles = 3
+# ), regexp = "whichSampleFiles out of bounds")
+#
+# })
diff --git a/tests/testthat/test-CytoProcessingStep.R b/tests/testthat/test-CytoProcessingStep.R
index 7273e7e..acfc9d6 100644
--- a/tests/testthat/test-CytoProcessingStep.R
+++ b/tests/testthat/test-CytoProcessingStep.R
@@ -14,113 +14,113 @@
# GNU General Public License for more details ().
-# obtain OMIP021UTSamples, light-weight version used specifically for these
-# unit tests
-path <- system.file("scripts",
- package = "CytoPipeline"
-)
-
-source(file.path(path,"MakeOMIP021UTSamples.R"))
-
-test_that("CytoProcessingStep basics works", {
- ps <- CytoProcessingStep("summing step", sum)
-
- psName <- getCPSName(ps)
- expect_equal(psName, "summing step")
-
- psFUN <- getCPSFUN(ps)
- expect_true(is.primitive(psFUN))
-
- psARGS <- getCPSARGS(ps)
- expect_identical(psARGS, list())
-
- expect_error(show(ps), NA)
-
- res <- executeProcessingStep(ps, 1:10)
- expect_equal(res, 55)
-})
-
-test_that("CytoProcessingStep works with pData", {
- sumWithBounds <- function(low, high) {
- if (low > high) stop("low > high !")
- sum(seq(from = low, to = high))
- }
- ps <- CytoProcessingStep("summing step",
- sumWithBounds,
- ARGS = list(low = 1, high = 10))
- res <- executeProcessingStep(ps)
- expect_equal(res, 55)
-
- sPD <- data.frame(VAR1 = 5, VAR2 = 8)
-
- ps2 <- CytoProcessingStep("summing step",
- sumWithBounds,
- ARGS = list(low = 1,
- high = "$VAR2"))
- res2 <- executeProcessingStep(ps2,
- pData = sPD)
- expect_equal(res2, 36)
-
- ps3 <- CytoProcessingStep("summing step",
- sumWithBounds,
- ARGS = list(low = "$VAR1",
- high = "$VAR2"))
-
- res3 <- executeProcessingStep(ps3,
- pData = sPD)
-
- expect_equal(res3, 26)
-
-})
-
-test_that("CytoProcessingStep wrong function works", {
- ps <- CytoProcessingStep("dummy step", "mistake_fun")
-
- psName <- getCPSName(ps)
- expect_equal(psName, "dummy step")
-
- expect_error(executeProcessingStep(ps, 1:10),
- regexp = "not found")
-})
-
-test_that("CytoProcessingStep exports and imports work", {
- # case of a primitive
- ps <- CytoProcessingStep("summing step", sum)
- js_str <- as.json.CytoProcessingStep(ps)
-
- ps2 <- from.json.CytoProcessingStep(js_str)
-
- res <- executeProcessingStep(ps2, 1:10)
- expect_equal(res, 55)
-
- # case of a generic function
- ps <- CytoProcessingStep("median step", stats::median)
-
- js_str <- as.json.CytoProcessingStep(ps)
-
- ps2 <- from.json.CytoProcessingStep(js_str)
-
- res <- executeProcessingStep(ps2, 1:10)
- expect_equal(res, 5.5)
-
- # other case
- ps <- CytoProcessingStep("compensate step", "compensateFromMatrix")
-
- ff <- executeProcessingStep(ps, OMIP021UTSamples[[1]])
- res <- sum(flowCore::exprs(ff)[,"FSC-A"])
- expect_equal(res, 12553542.8)
-
- js_str <- as.json.CytoProcessingStep(ps)
- ps2 <- from.json.CytoProcessingStep(js_str)
-
- ff <- executeProcessingStep(ps2, OMIP021UTSamples[[1]])
- res <- sum(flowCore::exprs(ff)[,"FSC-A"])
- expect_equal(res, 12553542.8)
-
- # not yet implemented case (non generic, non primitive function as object)
- ps <- CytoProcessingStep("compensate step", compensateFromMatrix)
- expect_error(as.json.CytoProcessingStep(ps),
- regexp = "does not work")
-
-})
-
+# # obtain OMIP021UTSamples, light-weight version used specifically for these
+# # unit tests
+# path <- system.file("scripts",
+# package = "CytoPipeline"
+# )
+#
+# source(file.path(path,"MakeOMIP021UTSamples.R"))
+#
+# test_that("CytoProcessingStep basics works", {
+# ps <- CytoProcessingStep("summing step", sum)
+#
+# psName <- getCPSName(ps)
+# expect_equal(psName, "summing step")
+#
+# psFUN <- getCPSFUN(ps)
+# expect_true(is.primitive(psFUN))
+#
+# psARGS <- getCPSARGS(ps)
+# expect_identical(psARGS, list())
+#
+# expect_error(show(ps), NA)
+#
+# res <- executeProcessingStep(ps, 1:10)
+# expect_equal(res, 55)
+# })
+#
+# test_that("CytoProcessingStep works with pData", {
+# sumWithBounds <- function(low, high) {
+# if (low > high) stop("low > high !")
+# sum(seq(from = low, to = high))
+# }
+# ps <- CytoProcessingStep("summing step",
+# sumWithBounds,
+# ARGS = list(low = 1, high = 10))
+# res <- executeProcessingStep(ps)
+# expect_equal(res, 55)
+#
+# sPD <- data.frame(VAR1 = 5, VAR2 = 8)
+#
+# ps2 <- CytoProcessingStep("summing step",
+# sumWithBounds,
+# ARGS = list(low = 1,
+# high = "$VAR2"))
+# res2 <- executeProcessingStep(ps2,
+# pData = sPD)
+# expect_equal(res2, 36)
+#
+# ps3 <- CytoProcessingStep("summing step",
+# sumWithBounds,
+# ARGS = list(low = "$VAR1",
+# high = "$VAR2"))
+#
+# res3 <- executeProcessingStep(ps3,
+# pData = sPD)
+#
+# expect_equal(res3, 26)
+#
+# })
+#
+# test_that("CytoProcessingStep wrong function works", {
+# ps <- CytoProcessingStep("dummy step", "mistake_fun")
+#
+# psName <- getCPSName(ps)
+# expect_equal(psName, "dummy step")
+#
+# expect_error(executeProcessingStep(ps, 1:10),
+# regexp = "not found")
+# })
+#
+# test_that("CytoProcessingStep exports and imports work", {
+# # case of a primitive
+# ps <- CytoProcessingStep("summing step", sum)
+# js_str <- as.json.CytoProcessingStep(ps)
+#
+# ps2 <- from.json.CytoProcessingStep(js_str)
+#
+# res <- executeProcessingStep(ps2, 1:10)
+# expect_equal(res, 55)
+#
+# # case of a generic function
+# ps <- CytoProcessingStep("median step", stats::median)
+#
+# js_str <- as.json.CytoProcessingStep(ps)
+#
+# ps2 <- from.json.CytoProcessingStep(js_str)
+#
+# res <- executeProcessingStep(ps2, 1:10)
+# expect_equal(res, 5.5)
+#
+# # other case
+# ps <- CytoProcessingStep("compensate step", "compensateFromMatrix")
+#
+# ff <- executeProcessingStep(ps, OMIP021UTSamples[[1]])
+# res <- sum(flowCore::exprs(ff)[,"FSC-A"])
+# expect_equal(res, 12553542.8)
+#
+# js_str <- as.json.CytoProcessingStep(ps)
+# ps2 <- from.json.CytoProcessingStep(js_str)
+#
+# ff <- executeProcessingStep(ps2, OMIP021UTSamples[[1]])
+# res <- sum(flowCore::exprs(ff)[,"FSC-A"])
+# expect_equal(res, 12553542.8)
+#
+# # not yet implemented case (non generic, non primitive function as object)
+# ps <- CytoProcessingStep("compensate step", compensateFromMatrix)
+# expect_error(as.json.CytoProcessingStep(ps),
+# regexp = "does not work")
+#
+# })
+#
diff --git a/tests/testthat/test-utils.R b/tests/testthat/test-utils.R
index 764ae93..6f4aca3 100644
--- a/tests/testthat/test-utils.R
+++ b/tests/testthat/test-utils.R
@@ -13,510 +13,510 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details ().
-data("OMIP021Samples")
-
-test_that("areSignalCols works", {
- ff <- OMIP021Samples[[1]]
-
- expectedRes <- c(rep(TRUE, times = 20), FALSE, FALSE)
-
- res <- areSignalCols(ff)
- expect_equal(res, expectedRes, ignore_attr = TRUE)
-
- # same with flowSet
- res <- areSignalCols(OMIP021Samples)
- expect_equal(res, expectedRes, ignore_attr = TRUE)
-})
-
-test_that("areFluoCols works", {
- ff <- OMIP021Samples[[1]]
-
- expectedRes <- c(
- rep(FALSE, times = 4),
- rep(TRUE, times = 16),
- FALSE, FALSE
- )
-
- res <- areFluoCols(ff)
- expect_equal(res, expectedRes, ignore_attr = TRUE)
-
- # same with flowSet
- res <- areFluoCols(OMIP021Samples)
- expect_equal(res, expectedRes, ignore_attr = TRUE)
-})
-
-
-
-test_that("subsample works", {
- ff <- OMIP021Samples[[1]]
-
- nEvents <- 50
- seed <- 0
- ffSub <- subsample(ff, nEvents, seed = seed)
- expect_equal(flowCore::nrow(ffSub), nEvents)
- # withr::with_seed(
- # seed,
- # {
- # tgtLines <- sample(seq_len(flowCore::nrow(ff)),
- # size = nEvents,
- # replace = FALSE)
- # tgtIDs <- flowCore::exprs(ff)[tgtLines,"Original_ID"]
- # expect_true(all.equal(tgtIDs,
- # flowCore::exprs(ffSub)[,"Original_ID"]))
- # }
- # )
-
- # same but reset the original IDs
- ffSub <- subsample(ff, nEvents, seed = seed, keepOriginalCellIDs = FALSE)
- expect_equal(flowCore::nrow(ffSub), nEvents)
- tgtIDs <- 1:nEvents
- expect_true(all.equal(tgtIDs, flowCore::exprs(ffSub)[,"Original_ID"]))
-
-
- # subsample with more samples than original nrow (5000)
- ffSub <- subsample(ff, 10000)
-
- nOriginal <- flowCore::nrow(ff)
- expect_equal(flowCore::nrow(ffSub), nOriginal)
-})
-
-
-test_that(".addCompensation2FluoChannelNames works", {
- ff <- OMIP021Samples[[1]]
-
- ff2 <- .addCompensation2FluoChannelNames(ff)
-
- expect_equal(
- flowCore::colnames(ff2),
- c(
- "FSC-A", "FSC-H", "SSC-A", "SSC-H",
- "Comp-450/50Violet-A", "Comp-525/50Violet-A", "Comp-540/30Violet-A",
- "Comp-585/15Violet-A", "Comp-610/20Violet-A", "Comp-670/30Violet-A",
- "Comp-670/14Red-A", "Comp-730//45Red-A", "Comp-780/60Red-A",
- "Comp-530/30Blue-A", "Comp-710/50Blue-A", "Comp-582/15Yellow-A",
- "Comp-610/20Yellow-A", "Comp-670/30Yellow-A", "Comp-710/50Yellow-A",
- "Comp-780/60Yellow-A", "Time", "Original_ID"
- )
- )
-
- expect_error(.addCompensation2FluoChannelNames(OMIP021Samples),
- regexp = "type not recognized"
- )
-})
-
-test_that("runCompensation works", {
- ff <- OMIP021Samples[[1]]
-
- compMatrix <- flowCore::spillover(ff)$SPILL
- ff1 <- flowCore::compensate(ff, spillover = compMatrix)
- ff2 <- runCompensation(ff,
- spillover = compMatrix,
- updateChannelNames = FALSE
- )
-
- expect_equal(ff2, ff1)
-
- ff2 <- runCompensation(ff, spillover = compMatrix)
- # the following avoids comparing name attributes
- expect_true(all(flowCore::exprs(ff2) == flowCore::exprs(ff1)))
- expect_equal(
- flowCore::colnames(ff2),
- c(
- "FSC-A", "FSC-H", "SSC-A", "SSC-H",
- "Comp-450/50Violet-A", "Comp-525/50Violet-A", "Comp-540/30Violet-A",
- "Comp-585/15Violet-A", "Comp-610/20Violet-A", "Comp-670/30Violet-A",
- "Comp-670/14Red-A", "Comp-730//45Red-A", "Comp-780/60Red-A",
- "Comp-530/30Blue-A", "Comp-710/50Blue-A", "Comp-582/15Yellow-A",
- "Comp-610/20Yellow-A", "Comp-670/30Yellow-A", "Comp-710/50Yellow-A",
- "Comp-780/60Yellow-A", "Time", "Original_ID"
- )
- )
-
- fs <- runCompensation(OMIP021Samples,
- spillover = compMatrix
- )
- ff3 <- flowCore::compensate(OMIP021Samples[[1]],
- spillover = compMatrix
- )
- # the following avoids comparing name attributes
- expect_true(all(flowCore::exprs(fs[[1]]) == flowCore::exprs(ff3)))
- expect_equal(
- flowCore::colnames(fs),
- c(
- "FSC-A", "FSC-H", "SSC-A", "SSC-H",
- "Comp-450/50Violet-A", "Comp-525/50Violet-A", "Comp-540/30Violet-A",
- "Comp-585/15Violet-A", "Comp-610/20Violet-A", "Comp-670/30Violet-A",
- "Comp-670/14Red-A", "Comp-730//45Red-A", "Comp-780/60Red-A",
- "Comp-530/30Blue-A", "Comp-710/50Blue-A", "Comp-582/15Yellow-A",
- "Comp-610/20Yellow-A", "Comp-670/30Yellow-A", "Comp-710/50Yellow-A",
- "Comp-780/60Yellow-A", "Time", "Original_ID"
- )
- )
-})
-
-test_that("aggregateAndSample works", {
- nCells <- 100
- agg <- aggregateAndSample(
- fs = OMIP021Samples,
- nTotalEvents = nCells,
- seed = 1
- )
-
- expect_equal(nrow(flowCore::exprs(agg)), nCells)
-
- ind1 <- which(flowCore::exprs(agg)[, "File"] == 1)
- expect_equal(nrow(flowCore::exprs(agg)[ind1, ]), nCells / 2)
- ind2 <- which(flowCore::exprs(agg)[, "File"] == 2)
- expect_equal(nrow(flowCore::exprs(agg)[ind2, ]), nCells / 2)
-})
-
-test_that("aggregateAndSample still works with flow frame", {
- nCells <- 100
- agg <- aggregateAndSample(fs = OMIP021Samples[[1]],
- nTotalEvents = nCells,
- seed = 1)
- expect_equal(nrow(flowCore::exprs(agg)), nCells)
-})
-
-test_that("getTransfoParams works", {
- # hybrid transformation list :
- # - two channels are logicle-ly transformed with automatic param estimates
- # - one channel has explicit logicle transfo with default parameters
- # - one channel has linear transformation
- # - other channels have no transformation
- translist <- flowCore::estimateLogicle(
- OMIP021Samples[[1]],
- c("450/50Violet-A", "525/50Violet-A")
- )
- translist <- c(
- translist,
- flowCore::transformList(
- "FSC-A",
- flowCore::linearTransform(
- a = 0.1,
- b = 0
- )
- ),
- flowCore::transformList(
- "540/30Violet-A",
- flowCore::logicleTransform()
- )
- )
-
- ret <- getTransfoParams(translist, channel = "SSC-A")
- expect_equal(is.null(ret), TRUE)
-
- ret <- getTransfoParams(translist, channel = "FSC-A")
- expect_equal(ret$type, "linear")
- expect_equal(ret$paramsList$a, 0.1)
- expect_equal(ret$paramsList$b, 0.)
-
- ret <- getTransfoParams(translist, channel = "525/50Violet-A")
- expect_equal(ret$type, "logicle")
- expect_equal(ret$paramsList$a, 0.)
- myW <- 0.26281575
- expect_equal(ret$paramsList$w, myW)
- expect_equal(ret$paramsList$m, 4.5)
- expect_equal(ret$paramsList$t, 262143)
-
- ret <- getTransfoParams(translist, channel = "540/30Violet-A")
- expect_equal(ret$type, "logicle")
- expect_equal(ret$paramsList$a, 0.)
- expect_equal(ret$paramsList$w, 0.5)
- expect_equal(ret$paramsList$m, 4.5)
- expect_equal(ret$paramsList$t, 262144)
-
- tf <- flowCore::linearTransform(a = 1.1, b = 0.2)
- otherTransList <- flowCore::transformList(
- from = "FSC-A",
- tfun = tf
- )
- ret <- getTransfoParams(otherTransList,
- channel = "FSC-A"
- )
- expect_equal(ret$type, "linear")
- expect_equal(ret$paramsList$a, 1.1)
- expect_equal(ret$paramsList$b, 0.2)
-})
-
-test_that("computeScatterChannelsLinearScale works", {
- ff <- OMIP021Samples[[1]]
- refMarker <- "APCCy7 - CD4"
- refChannel <- "780/60Red-A"
-
- targetFSCA <- list()
- targetFSCA$type <- "linear"
- targetFSCA$paramsList <- list()
- targetFSCA$paramsList$a <- 1.3504601e-05
- targetFSCA$paramsList$b <- 0.41438898
-
- targetSSCA <- list()
- targetSSCA$type <- "linear"
- targetSSCA$paramsList <- list()
- targetSSCA$paramsList$a <- 1.07290554e-05
- targetSSCA$paramsList$b <- 0.38032844
-
- transList <- flowCore::estimateLogicle(ff,
- channels = refChannel
- )
-
- # base case, reference channel exists, transList pre-filled with logicle
- # transfo for ref channel
- retTransList <-
- computeScatterChannelsLinearScale(ff,
- transList = transList,
- referenceChannel = refMarker,
- silent = TRUE
- )
-
- retFSCA <- getTransfoParams(retTransList, channel = "FSC-A")
- expect_equal(retFSCA, targetFSCA)
-
- retFSCH <- getTransfoParams(retTransList, channel = "FSC-H")
- expect_equal(retFSCH, targetFSCA)
-
- retSSCA <- getTransfoParams(retTransList, channel = "SSC-A")
- expect_equal(retSSCA, targetSSCA)
-
- retSSCH <- getTransfoParams(retTransList, channel = "SSC-H")
- expect_equal(retSSCH, targetSSCA)
-
- # test with a reference channel that does not exist
- expect_error(computeScatterChannelsLinearScale(
- ff,
- transList = transList,
- referenceChannel = "Yipee",
- silent = TRUE
- ), regexp = "can't find")
-
- # test with a reference channel that is not a fluo channel
- expect_error(computeScatterChannelsLinearScale(
- ff,
- transList = transList,
- referenceChannel = "SSC-A",
- silent = TRUE
- ), regexp = "should be a fluorochrome channel")
-
- # test with a NULL transList
-
- targetFSCA$paramsList$a <- 0.047610702
- targetFSCA$paramsList$b <- -491.62068
- targetSSCA$paramsList$a <- 0.037825469
- targetSSCA$paramsList$b <- -611.70173
- retTransList <-
- computeScatterChannelsLinearScale(ff,
- transList = NULL,
- referenceChannel = refMarker,
- silent = TRUE
- )
-
- retFSCA <- getTransfoParams(retTransList, channel = "FSC-A")
- expect_equal(retFSCA, targetFSCA)
-
- retFSCH <- getTransfoParams(retTransList, channel = "FSC-H")
- expect_equal(retFSCH, targetFSCA)
-
- retSSCA <- getTransfoParams(retTransList, channel = "SSC-A")
- expect_equal(retSSCA, targetSSCA)
-
- retSSCH <- getTransfoParams(retTransList, channel = "SSC-H")
- expect_equal(retSSCH, targetSSCA)
-
- # test with a transList that does not contain the reference channel,
- # but well an already existing SSC-A transformation
- linTrans <- flowCore::linearTransform()
- stupidTransList <- flowCore::transformList(
- from = "SSC-A",
- tfun = linTrans
- )
- retTransList <-
- computeScatterChannelsLinearScale(ff,
- transList = stupidTransList,
- referenceChannel = refMarker,
- silent = TRUE
- )
-
-
- retFSCA <- getTransfoParams(retTransList, channel = "FSC-A")
- expect_equal(retFSCA, targetFSCA)
-
- retFSCH <- getTransfoParams(retTransList, channel = "FSC-H")
- expect_equal(retFSCH, targetFSCA)
-
- retSSCA <- getTransfoParams(retTransList, channel = "SSC-A")
- expect_equal(retSSCA, targetSSCA)
-
- retSSCH <- getTransfoParams(retTransList, channel = "SSC-H")
- expect_equal(retSSCH, targetSSCA)
-})
-
-test_that("findTimeChannel works", {
- # with flow set
- ret <- findTimeChannel(OMIP021Samples)
- expect_equal(ret, "Time")
-
- # with flow frame
- ret2 <- findTimeChannel(OMIP021Samples[[1]])
- expect_equal(ret2, "Time")
-
- # test exclude channels parameter
- ret3 <- findTimeChannel(OMIP021Samples[[1]],
- excludeChannels = "Time"
- )
- expect_null(ret3)
-})
-
-test_that("getChannelNamesFromMarkers works", {
- # with existing markers
- ret <- getChannelNamesFromMarkers(
- OMIP021Samples[[1]],
- c(
- "FSC-A",
- "L/D Aqua - Viability",
- "FITC - gdTCR",
- "PECy5 - CD28"
- )
- )
-
- expected <- c("FSC-A", "525/50Violet-A", "530/30Blue-A", "670/30Yellow-A")
- expect_equal(ret, expected)
-
- # with boolean vector
- indices <- c(1, 6, 14, 18)
- boolInput <- rep(FALSE, 21)
- boolInput[indices] <- TRUE
- ret <- getChannelNamesFromMarkers(
- OMIP021Samples[[1]],
- boolInput
- )
-
- expect_equal(ret, expected)
-
-
- # with indices vector
- ret <- getChannelNamesFromMarkers(
- OMIP021Samples[[1]],
- indices
- )
- expect_equal(ret, expected)
-
- # missing channel
- missingInput <- c("CD4")
-
- expect_error(getChannelNamesFromMarkers(
- OMIP021Samples[[1]],
- missingInput
- ),
- regexp = "could not be found"
- )
-})
-
-test_that("updateMarkerName works", {
- retFF <- updateMarkerName(OMIP021Samples[[1]],
- channel = "FSC-A",
- newMarkerName = "Fwd Scatter-A")
-
- checkMkName <- getChannelNamesFromMarkers(retFF, markers = "Fwd Scatter-A")
- expect_equal(checkMkName, "FSC-A")
- expect_equal(flowCore::keyword(retFF, "$P1S")[["$P1S"]], "Fwd Scatter-A")
-
- # same with channel as index
- retFF <- updateMarkerName(OMIP021Samples[[1]],
- channel = 1,
- newMarkerName = "Fwd Scatter-A")
- checkMkName <- getChannelNamesFromMarkers(retFF, markers = "Fwd Scatter-A")
- expect_equal(checkMkName, "FSC-A")
- expect_equal(flowCore::keyword(retFF, "$P1S")[["$P1S"]], "Fwd Scatter-A")
-
- # now channel provided as marker (desc), not channel name
- retFF <- updateMarkerName(OMIP021Samples[[1]],
- channel = "BV785 - CD3",
- newMarkerName = "fancy CD3")
- checkMkName <- getChannelNamesFromMarkers(retFF, markers = "fancy CD3")
- expect_equal(checkMkName, "670/30Violet-A")
- expect_equal(flowCore::keyword(retFF, "$P10S")[["$P10S"]], "fancy CD3")
-
-
-
- expect_error(updateMarkerName(OMIP021Samples[[1]], channel = "FFF-A",
- newMarkerName = "whatever"),
- regexp = "channel not found")
-})
-
-test_that("removeChannels works", {
- retFF <- removeChannels(OMIP021Samples[[1]],
- channels = c("FSC-A", "SSC-A"))
- nRemainingChannels <- length(flowCore::colnames(retFF))
- expect_equal(nRemainingChannels, 20)
-
- expect_warning(removeChannels(OMIP021Samples[[1]],
- channels = c("FSC-A", "SSC-S")),
- regexp = "not found in flowFrame")
-
-
-})
-
-test_that("getFCSFileName works", {
- fName <- getFCSFileName(OMIP021Samples[[1]])
- expect_equal(fName, "Donor1.fcs")
-})
-
-test_that("writeFlowFrame works", {
- outputDir <- base::tempdir()
-
- ff_c <- readRDS(test_path("fixtures", "ff_c.rds"))
-
- expect_error(writeFlowFrame(ff, dir = file.path(outputDir, "notThere")),
- regexp = "Provided directory does not exist")
-
- prefix <- "File_"
- suffix <- "_export"
-
- writeFlowFrame(ff_c, dir = outputDir,
- useFCSFileName = TRUE,
- prefix = prefix,
- suffix = suffix,
- format = "fcs")
-
- outputFile <- file.path(outputDir,
- paste0(prefix, "Donor1", suffix, ".fcs"))
-
- thisFF <- flowCore::read.FCS(outputFile, transform = FALSE)
- expect_true(all(round(flowCore::exprs(thisFF), 0)
- == round(flowCore::exprs(ff_c), 0)))
-
- writeFlowFrame(ff_c, dir = outputDir,
- useFCSFileName = FALSE,
- prefix = prefix,
- suffix = suffix,
- format = "csv")
-
- outputCSV <- file.path(outputDir,
- paste0(prefix, suffix, ".csv"))
-
- thisExpr <- read.csv(file = outputCSV)
- expect_true(all(round(thisExpr,4) == round(flowCore::exprs(ff_c), 4)))
-})
-
-
-test_that("updateCompMatrixLabels works", {
- myMat <- diag(nrow = 3)
- names <- c("450/50Violet-A", "BV605 - CD161",
- "670/30Yellow-A :: BV785 - CD3")
- colnames(myMat) <- rownames(myMat) <- names
-
- myNewMat <- .updateCompMatrixLabels(myMat, OMIP021Samples[[1]])
-
- newColNames <- colnames(myNewMat)
- newRowNames <- rownames(myNewMat)
-
- expectedNewNames <- c("450/50Violet-A",
- "540/30Violet-A",
- "670/30Yellow-A")
-
- expect_equal(newColNames, expectedNewNames)
- expect_equal(newRowNames, expectedNewNames)
-})
-
-
-
+# data("OMIP021Samples")
+#
+# test_that("areSignalCols works", {
+# ff <- OMIP021Samples[[1]]
+#
+# expectedRes <- c(rep(TRUE, times = 20), FALSE, FALSE)
+#
+# res <- areSignalCols(ff)
+# expect_equal(res, expectedRes, ignore_attr = TRUE)
+#
+# # same with flowSet
+# res <- areSignalCols(OMIP021Samples)
+# expect_equal(res, expectedRes, ignore_attr = TRUE)
+# })
+#
+# test_that("areFluoCols works", {
+# ff <- OMIP021Samples[[1]]
+#
+# expectedRes <- c(
+# rep(FALSE, times = 4),
+# rep(TRUE, times = 16),
+# FALSE, FALSE
+# )
+#
+# res <- areFluoCols(ff)
+# expect_equal(res, expectedRes, ignore_attr = TRUE)
+#
+# # same with flowSet
+# res <- areFluoCols(OMIP021Samples)
+# expect_equal(res, expectedRes, ignore_attr = TRUE)
+# })
+#
+#
+#
+# test_that("subsample works", {
+# ff <- OMIP021Samples[[1]]
+#
+# nEvents <- 50
+# seed <- 0
+# ffSub <- subsample(ff, nEvents, seed = seed)
+# expect_equal(flowCore::nrow(ffSub), nEvents)
+# # withr::with_seed(
+# # seed,
+# # {
+# # tgtLines <- sample(seq_len(flowCore::nrow(ff)),
+# # size = nEvents,
+# # replace = FALSE)
+# # tgtIDs <- flowCore::exprs(ff)[tgtLines,"Original_ID"]
+# # expect_true(all.equal(tgtIDs,
+# # flowCore::exprs(ffSub)[,"Original_ID"]))
+# # }
+# # )
+#
+# # same but reset the original IDs
+# ffSub <- subsample(ff, nEvents, seed = seed, keepOriginalCellIDs = FALSE)
+# expect_equal(flowCore::nrow(ffSub), nEvents)
+# tgtIDs <- 1:nEvents
+# expect_true(all.equal(tgtIDs, flowCore::exprs(ffSub)[,"Original_ID"]))
+#
+#
+# # subsample with more samples than original nrow (5000)
+# ffSub <- subsample(ff, 10000)
+#
+# nOriginal <- flowCore::nrow(ff)
+# expect_equal(flowCore::nrow(ffSub), nOriginal)
+# })
+#
+#
+# test_that(".addCompensation2FluoChannelNames works", {
+# ff <- OMIP021Samples[[1]]
+#
+# ff2 <- .addCompensation2FluoChannelNames(ff)
+#
+# expect_equal(
+# flowCore::colnames(ff2),
+# c(
+# "FSC-A", "FSC-H", "SSC-A", "SSC-H",
+# "Comp-450/50Violet-A", "Comp-525/50Violet-A", "Comp-540/30Violet-A",
+# "Comp-585/15Violet-A", "Comp-610/20Violet-A", "Comp-670/30Violet-A",
+# "Comp-670/14Red-A", "Comp-730//45Red-A", "Comp-780/60Red-A",
+# "Comp-530/30Blue-A", "Comp-710/50Blue-A", "Comp-582/15Yellow-A",
+# "Comp-610/20Yellow-A", "Comp-670/30Yellow-A", "Comp-710/50Yellow-A",
+# "Comp-780/60Yellow-A", "Time", "Original_ID"
+# )
+# )
+#
+# expect_error(.addCompensation2FluoChannelNames(OMIP021Samples),
+# regexp = "type not recognized"
+# )
+# })
+#
+# test_that("runCompensation works", {
+# ff <- OMIP021Samples[[1]]
+#
+# compMatrix <- flowCore::spillover(ff)$SPILL
+# ff1 <- flowCore::compensate(ff, spillover = compMatrix)
+# ff2 <- runCompensation(ff,
+# spillover = compMatrix,
+# updateChannelNames = FALSE
+# )
+#
+# expect_equal(ff2, ff1)
+#
+# ff2 <- runCompensation(ff, spillover = compMatrix)
+# # the following avoids comparing name attributes
+# expect_true(all(flowCore::exprs(ff2) == flowCore::exprs(ff1)))
+# expect_equal(
+# flowCore::colnames(ff2),
+# c(
+# "FSC-A", "FSC-H", "SSC-A", "SSC-H",
+# "Comp-450/50Violet-A", "Comp-525/50Violet-A", "Comp-540/30Violet-A",
+# "Comp-585/15Violet-A", "Comp-610/20Violet-A", "Comp-670/30Violet-A",
+# "Comp-670/14Red-A", "Comp-730//45Red-A", "Comp-780/60Red-A",
+# "Comp-530/30Blue-A", "Comp-710/50Blue-A", "Comp-582/15Yellow-A",
+# "Comp-610/20Yellow-A", "Comp-670/30Yellow-A", "Comp-710/50Yellow-A",
+# "Comp-780/60Yellow-A", "Time", "Original_ID"
+# )
+# )
+#
+# fs <- runCompensation(OMIP021Samples,
+# spillover = compMatrix
+# )
+# ff3 <- flowCore::compensate(OMIP021Samples[[1]],
+# spillover = compMatrix
+# )
+# # the following avoids comparing name attributes
+# expect_true(all(flowCore::exprs(fs[[1]]) == flowCore::exprs(ff3)))
+# expect_equal(
+# flowCore::colnames(fs),
+# c(
+# "FSC-A", "FSC-H", "SSC-A", "SSC-H",
+# "Comp-450/50Violet-A", "Comp-525/50Violet-A", "Comp-540/30Violet-A",
+# "Comp-585/15Violet-A", "Comp-610/20Violet-A", "Comp-670/30Violet-A",
+# "Comp-670/14Red-A", "Comp-730//45Red-A", "Comp-780/60Red-A",
+# "Comp-530/30Blue-A", "Comp-710/50Blue-A", "Comp-582/15Yellow-A",
+# "Comp-610/20Yellow-A", "Comp-670/30Yellow-A", "Comp-710/50Yellow-A",
+# "Comp-780/60Yellow-A", "Time", "Original_ID"
+# )
+# )
+# })
+#
+# test_that("aggregateAndSample works", {
+# nCells <- 100
+# agg <- aggregateAndSample(
+# fs = OMIP021Samples,
+# nTotalEvents = nCells,
+# seed = 1
+# )
+#
+# expect_equal(nrow(flowCore::exprs(agg)), nCells)
+#
+# ind1 <- which(flowCore::exprs(agg)[, "File"] == 1)
+# expect_equal(nrow(flowCore::exprs(agg)[ind1, ]), nCells / 2)
+# ind2 <- which(flowCore::exprs(agg)[, "File"] == 2)
+# expect_equal(nrow(flowCore::exprs(agg)[ind2, ]), nCells / 2)
+# })
+#
+# test_that("aggregateAndSample still works with flow frame", {
+# nCells <- 100
+# agg <- aggregateAndSample(fs = OMIP021Samples[[1]],
+# nTotalEvents = nCells,
+# seed = 1)
+# expect_equal(nrow(flowCore::exprs(agg)), nCells)
+# })
+#
+# test_that("getTransfoParams works", {
+# # hybrid transformation list :
+# # - two channels are logicle-ly transformed with automatic param estimates
+# # - one channel has explicit logicle transfo with default parameters
+# # - one channel has linear transformation
+# # - other channels have no transformation
+# translist <- flowCore::estimateLogicle(
+# OMIP021Samples[[1]],
+# c("450/50Violet-A", "525/50Violet-A")
+# )
+# translist <- c(
+# translist,
+# flowCore::transformList(
+# "FSC-A",
+# flowCore::linearTransform(
+# a = 0.1,
+# b = 0
+# )
+# ),
+# flowCore::transformList(
+# "540/30Violet-A",
+# flowCore::logicleTransform()
+# )
+# )
+#
+# ret <- getTransfoParams(translist, channel = "SSC-A")
+# expect_equal(is.null(ret), TRUE)
+#
+# ret <- getTransfoParams(translist, channel = "FSC-A")
+# expect_equal(ret$type, "linear")
+# expect_equal(ret$paramsList$a, 0.1)
+# expect_equal(ret$paramsList$b, 0.)
+#
+# ret <- getTransfoParams(translist, channel = "525/50Violet-A")
+# expect_equal(ret$type, "logicle")
+# expect_equal(ret$paramsList$a, 0.)
+# myW <- 0.26281575
+# expect_equal(ret$paramsList$w, myW)
+# expect_equal(ret$paramsList$m, 4.5)
+# expect_equal(ret$paramsList$t, 262143)
+#
+# ret <- getTransfoParams(translist, channel = "540/30Violet-A")
+# expect_equal(ret$type, "logicle")
+# expect_equal(ret$paramsList$a, 0.)
+# expect_equal(ret$paramsList$w, 0.5)
+# expect_equal(ret$paramsList$m, 4.5)
+# expect_equal(ret$paramsList$t, 262144)
+#
+# tf <- flowCore::linearTransform(a = 1.1, b = 0.2)
+# otherTransList <- flowCore::transformList(
+# from = "FSC-A",
+# tfun = tf
+# )
+# ret <- getTransfoParams(otherTransList,
+# channel = "FSC-A"
+# )
+# expect_equal(ret$type, "linear")
+# expect_equal(ret$paramsList$a, 1.1)
+# expect_equal(ret$paramsList$b, 0.2)
+# })
+#
+# test_that("computeScatterChannelsLinearScale works", {
+# ff <- OMIP021Samples[[1]]
+# refMarker <- "APCCy7 - CD4"
+# refChannel <- "780/60Red-A"
+#
+# targetFSCA <- list()
+# targetFSCA$type <- "linear"
+# targetFSCA$paramsList <- list()
+# targetFSCA$paramsList$a <- 1.3504601e-05
+# targetFSCA$paramsList$b <- 0.41438898
+#
+# targetSSCA <- list()
+# targetSSCA$type <- "linear"
+# targetSSCA$paramsList <- list()
+# targetSSCA$paramsList$a <- 1.07290554e-05
+# targetSSCA$paramsList$b <- 0.38032844
+#
+# transList <- flowCore::estimateLogicle(ff,
+# channels = refChannel
+# )
+#
+# # base case, reference channel exists, transList pre-filled with logicle
+# # transfo for ref channel
+# retTransList <-
+# computeScatterChannelsLinearScale(ff,
+# transList = transList,
+# referenceChannel = refMarker,
+# silent = TRUE
+# )
+#
+# retFSCA <- getTransfoParams(retTransList, channel = "FSC-A")
+# expect_equal(retFSCA, targetFSCA)
+#
+# retFSCH <- getTransfoParams(retTransList, channel = "FSC-H")
+# expect_equal(retFSCH, targetFSCA)
+#
+# retSSCA <- getTransfoParams(retTransList, channel = "SSC-A")
+# expect_equal(retSSCA, targetSSCA)
+#
+# retSSCH <- getTransfoParams(retTransList, channel = "SSC-H")
+# expect_equal(retSSCH, targetSSCA)
+#
+# # test with a reference channel that does not exist
+# expect_error(computeScatterChannelsLinearScale(
+# ff,
+# transList = transList,
+# referenceChannel = "Yipee",
+# silent = TRUE
+# ), regexp = "can't find")
+#
+# # test with a reference channel that is not a fluo channel
+# expect_error(computeScatterChannelsLinearScale(
+# ff,
+# transList = transList,
+# referenceChannel = "SSC-A",
+# silent = TRUE
+# ), regexp = "should be a fluorochrome channel")
+#
+# # test with a NULL transList
+#
+# targetFSCA$paramsList$a <- 0.047610702
+# targetFSCA$paramsList$b <- -491.62068
+# targetSSCA$paramsList$a <- 0.037825469
+# targetSSCA$paramsList$b <- -611.70173
+# retTransList <-
+# computeScatterChannelsLinearScale(ff,
+# transList = NULL,
+# referenceChannel = refMarker,
+# silent = TRUE
+# )
+#
+# retFSCA <- getTransfoParams(retTransList, channel = "FSC-A")
+# expect_equal(retFSCA, targetFSCA)
+#
+# retFSCH <- getTransfoParams(retTransList, channel = "FSC-H")
+# expect_equal(retFSCH, targetFSCA)
+#
+# retSSCA <- getTransfoParams(retTransList, channel = "SSC-A")
+# expect_equal(retSSCA, targetSSCA)
+#
+# retSSCH <- getTransfoParams(retTransList, channel = "SSC-H")
+# expect_equal(retSSCH, targetSSCA)
+#
+# # test with a transList that does not contain the reference channel,
+# # but well an already existing SSC-A transformation
+# linTrans <- flowCore::linearTransform()
+# stupidTransList <- flowCore::transformList(
+# from = "SSC-A",
+# tfun = linTrans
+# )
+# retTransList <-
+# computeScatterChannelsLinearScale(ff,
+# transList = stupidTransList,
+# referenceChannel = refMarker,
+# silent = TRUE
+# )
+#
+#
+# retFSCA <- getTransfoParams(retTransList, channel = "FSC-A")
+# expect_equal(retFSCA, targetFSCA)
+#
+# retFSCH <- getTransfoParams(retTransList, channel = "FSC-H")
+# expect_equal(retFSCH, targetFSCA)
+#
+# retSSCA <- getTransfoParams(retTransList, channel = "SSC-A")
+# expect_equal(retSSCA, targetSSCA)
+#
+# retSSCH <- getTransfoParams(retTransList, channel = "SSC-H")
+# expect_equal(retSSCH, targetSSCA)
+# })
+#
+# test_that("findTimeChannel works", {
+# # with flow set
+# ret <- findTimeChannel(OMIP021Samples)
+# expect_equal(ret, "Time")
+#
+# # with flow frame
+# ret2 <- findTimeChannel(OMIP021Samples[[1]])
+# expect_equal(ret2, "Time")
+#
+# # test exclude channels parameter
+# ret3 <- findTimeChannel(OMIP021Samples[[1]],
+# excludeChannels = "Time"
+# )
+# expect_null(ret3)
+# })
+#
+# test_that("getChannelNamesFromMarkers works", {
+# # with existing markers
+# ret <- getChannelNamesFromMarkers(
+# OMIP021Samples[[1]],
+# c(
+# "FSC-A",
+# "L/D Aqua - Viability",
+# "FITC - gdTCR",
+# "PECy5 - CD28"
+# )
+# )
+#
+# expected <- c("FSC-A", "525/50Violet-A", "530/30Blue-A", "670/30Yellow-A")
+# expect_equal(ret, expected)
+#
+# # with boolean vector
+# indices <- c(1, 6, 14, 18)
+# boolInput <- rep(FALSE, 21)
+# boolInput[indices] <- TRUE
+# ret <- getChannelNamesFromMarkers(
+# OMIP021Samples[[1]],
+# boolInput
+# )
+#
+# expect_equal(ret, expected)
+#
+#
+# # with indices vector
+# ret <- getChannelNamesFromMarkers(
+# OMIP021Samples[[1]],
+# indices
+# )
+# expect_equal(ret, expected)
+#
+# # missing channel
+# missingInput <- c("CD4")
+#
+# expect_error(getChannelNamesFromMarkers(
+# OMIP021Samples[[1]],
+# missingInput
+# ),
+# regexp = "could not be found"
+# )
+# })
+#
+# test_that("updateMarkerName works", {
+# retFF <- updateMarkerName(OMIP021Samples[[1]],
+# channel = "FSC-A",
+# newMarkerName = "Fwd Scatter-A")
+#
+# checkMkName <- getChannelNamesFromMarkers(retFF, markers = "Fwd Scatter-A")
+# expect_equal(checkMkName, "FSC-A")
+# expect_equal(flowCore::keyword(retFF, "$P1S")[["$P1S"]], "Fwd Scatter-A")
+#
+# # same with channel as index
+# retFF <- updateMarkerName(OMIP021Samples[[1]],
+# channel = 1,
+# newMarkerName = "Fwd Scatter-A")
+# checkMkName <- getChannelNamesFromMarkers(retFF, markers = "Fwd Scatter-A")
+# expect_equal(checkMkName, "FSC-A")
+# expect_equal(flowCore::keyword(retFF, "$P1S")[["$P1S"]], "Fwd Scatter-A")
+#
+# # now channel provided as marker (desc), not channel name
+# retFF <- updateMarkerName(OMIP021Samples[[1]],
+# channel = "BV785 - CD3",
+# newMarkerName = "fancy CD3")
+# checkMkName <- getChannelNamesFromMarkers(retFF, markers = "fancy CD3")
+# expect_equal(checkMkName, "670/30Violet-A")
+# expect_equal(flowCore::keyword(retFF, "$P10S")[["$P10S"]], "fancy CD3")
+#
+#
+#
+# expect_error(updateMarkerName(OMIP021Samples[[1]], channel = "FFF-A",
+# newMarkerName = "whatever"),
+# regexp = "channel not found")
+# })
+#
+# test_that("removeChannels works", {
+# retFF <- removeChannels(OMIP021Samples[[1]],
+# channels = c("FSC-A", "SSC-A"))
+# nRemainingChannels <- length(flowCore::colnames(retFF))
+# expect_equal(nRemainingChannels, 20)
+#
+# expect_warning(removeChannels(OMIP021Samples[[1]],
+# channels = c("FSC-A", "SSC-S")),
+# regexp = "not found in flowFrame")
+#
+#
+# })
+#
+# test_that("getFCSFileName works", {
+# fName <- getFCSFileName(OMIP021Samples[[1]])
+# expect_equal(fName, "Donor1.fcs")
+# })
+#
+# test_that("writeFlowFrame works", {
+# outputDir <- base::tempdir()
+#
+# ff_c <- readRDS(test_path("fixtures", "ff_c.rds"))
+#
+# expect_error(writeFlowFrame(ff, dir = file.path(outputDir, "notThere")),
+# regexp = "Provided directory does not exist")
+#
+# prefix <- "File_"
+# suffix <- "_export"
+#
+# writeFlowFrame(ff_c, dir = outputDir,
+# useFCSFileName = TRUE,
+# prefix = prefix,
+# suffix = suffix,
+# format = "fcs")
+#
+# outputFile <- file.path(outputDir,
+# paste0(prefix, "Donor1", suffix, ".fcs"))
+#
+# thisFF <- flowCore::read.FCS(outputFile, transform = FALSE)
+# expect_true(all(round(flowCore::exprs(thisFF), 0)
+# == round(flowCore::exprs(ff_c), 0)))
+#
+# writeFlowFrame(ff_c, dir = outputDir,
+# useFCSFileName = FALSE,
+# prefix = prefix,
+# suffix = suffix,
+# format = "csv")
+#
+# outputCSV <- file.path(outputDir,
+# paste0(prefix, suffix, ".csv"))
+#
+# thisExpr <- read.csv(file = outputCSV)
+# expect_true(all(round(thisExpr,4) == round(flowCore::exprs(ff_c), 4)))
+# })
+#
+#
+# test_that("updateCompMatrixLabels works", {
+# myMat <- diag(nrow = 3)
+# names <- c("450/50Violet-A", "BV605 - CD161",
+# "670/30Yellow-A :: BV785 - CD3")
+# colnames(myMat) <- rownames(myMat) <- names
+#
+# myNewMat <- .updateCompMatrixLabels(myMat, OMIP021Samples[[1]])
+#
+# newColNames <- colnames(myNewMat)
+# newRowNames <- rownames(myNewMat)
+#
+# expectedNewNames <- c("450/50Violet-A",
+# "540/30Violet-A",
+# "670/30Yellow-A")
+#
+# expect_equal(newColNames, expectedNewNames)
+# expect_equal(newRowNames, expectedNewNames)
+# })
+#
+#
+#