view ramclustr_wrapper.R @ 0:36104baf75da draft

"planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/ramclustr commit 4d2ac914c951166e386a94d8ebb8cb1becfac122"
author recetox
date Tue, 22 Mar 2022 16:09:16 +0000
parents
children 75dafb766417
line wrap: on
line source

store_output <- function(
    ramclustr_obj,
    output_merge_msp,
    output_spec_abundance,
    msp_file) {
    RAMClustR::write.msp(ramclustr_obj, one.file = output_merge_msp)
    write.csv(ramclustr_obj$SpecAbund, file = output_spec_abundance, row.names = TRUE)

    if (!is.null(msp_file)) {
        exp.name <- ramclustr_obj$ExpDes[[1]][which(row.names(ramclustr_obj$ExpDes[[1]]) == "Experiment"), 1]
        filename <- paste("spectra/", exp.name, ".msp", sep = "")
        file.copy(from = filename, to = msp_file, overwrite = TRUE)
    }
}

load_experiment_definition <- function(filename) {
    experiment <- RAMClustR::defineExperiment(csv = filename)
    return(experiment)
}

read_metadata <- function(filename) {
    data <- read.csv(filename, header = TRUE, stringsAsFactors = FALSE)

    if (!"qc" %in% colnames(data)) {
        if ("sampleType" %in% colnames(data)) {
            data$qc <- ifelse(data$sampleType == "qc", TRUE, FALSE)
        }
    }

    if (!"order" %in% colnames(data)) {
        if ("injectionOrder" %in% colnames(data)) {
            names(data)[names(data) == "injectionOrder"] <- "order"
        }
    }

    return(data)
}

ramclustr_xcms <- function(
    input_xcms,
    use_pheno,
    sr,
    st = NULL,
    cor_method,
    maxt,
    linkage,
    min_module_size,
    hmax,
    deep_split,
    normalize,
    metadata_file = NULL,
    qc_inj_range,
    block_size,
    mult,
    mzdec,
    rt_only_low_n,
    replace_zeros,
    exp_design = NULL
) {
    obj <- load(input_xcms)

    batch <- NULL
    order <- NULL
    qc <- NULL

    if (!is.null(metadata_file)) {
        metadata <- read_metadata(metadata_file)
        batch <- metadata$batch
        order <- metadata$order
        qc <- metadata$qc
    }

    experiment <- NULL

    if (!is.null(exp_design)) {
        experiment <- load_experiment_definition(exp_design)
    }

    x <- RAMClustR::ramclustR(
        xcmsObj = xdata,
        st = st,
        maxt = maxt,
        sr = sr,
        deepSplit = deep_split,
        blocksize = block_size,
        mult = mult,
        hmax = hmax,
        usePheno = use_pheno,
        mspout = FALSE,
        qc.inj.range = qc_inj_range,
        normalize = normalize,
        minModuleSize = min_module_size,
        linkage = linkage,
        mzdec = mzdec,
        cor.method = cor_method,
        rt.only.low.n = rt_only_low_n,
        fftempdir = NULL,
        replace.zeros = replace_zeros,
        batch = batch,
        order = order,
        qc = qc,
        ExpDes = experiment
        )
    return(x)
}

ramclustr_csv <- function(
    ms,
    idmsms,
    sr,
    st,
    cor_method,
    maxt,
    linkage,
    min_module_size,
    hmax,
    deep_split,
    normalize,
    metadata_file = NULL,
    qc_inj_range,
    block_size,
    mult,
    mzdec,
    rt_only_low_n,
    replace_zeros,
    exp_design = NULL
) {
    if (!file.exists(idmsms))
        idmsms <- NULL

    batch <- NULL
    order <- NULL
    qc <- NULL

    if (!is.null(metadata_file)) {
        metadata <- read_metadata(metadata_file)
        batch <- metadata$batch
        order <- metadata$order
        qc <- metadata$qc
    }

    experiment <- NULL

    if (!is.null(exp_design)) {
        experiment <- load_experiment_definition(exp_design)
    }

    x <- RAMClustR::ramclustR(
        ms = ms,
        idmsms = idmsms,
        st = st,
        maxt = maxt,
        sr = sr,
        deepSplit = deep_split,
        blocksize = block_size,
        mult = mult,
        hmax = hmax,
        mspout = FALSE,
        qc.inj.range = qc_inj_range,
        normalize = normalize,
        minModuleSize = min_module_size,
        linkage = linkage,
        mzdec = mzdec,
        cor.method = cor_method,
        rt.only.low.n = rt_only_low_n,
        fftempdir = NULL,
        replace.zeros = replace_zeros,
        batch = batch,
        order = order,
        qc = qc,
        ExpDes = experiment
        )
        return(x)
}