importDittoBulk {dittoSeq} | R Documentation

## import bulk sequencing data into a SingleCellExperiment format that will work with other dittoSeq functions.

### Description

import bulk sequencing data into a SingleCellExperiment format that will work with other dittoSeq functions.

### Usage

    importDittoBulk(x, reductions = NULL, metadata = NULL, combine_metadata = TRUE)

### Arguments

`x` | A `DGEList`, or `SummarizedExperiment` (includes `DESeqDataSet`) class object containing the sequencing data to be imported. Alternatively, for import from a raw matrix format, a named list of matrices (or matrix-like objects) where names will become the assay names of the eventual SCE. NOTE: As of dittoSeq version 1.1.11, all dittoSeq functions can work directly with SummarizedExperiment objects, so this import function is nolonger required for such data.
`reductions` | A named list of dimensionality reduction embeddings matrices. Names will become the names of the dimensionality reductions and how each will be used with the `reduction.use` input of `dittoDimPlot` and `dittoDimHex`. For each matrix, rows of the matrices should represent the different samples of the dataset, and columns the different dimensions.
`metadata` | A data.frame (or data.frame-like object) where rows represent samples and named columns represent the extra information about such samples that should be accessible to visualizations. The names of these columns can then be used to retrieve and plot such data in any dittoSeq visualization.
`combine_metadata` | Logical which sets whether original `colData` (DESeqDataSet/SummarizedExperiment) or `$samples` (DGEList) from `x` should be retained. When `x` is a SummarizedExperiment or DGEList: When `FALSE`, sample metadata inside `x` (colData or $samples) is ignored entirely. When `TRUE` (the default), metadata inside `x` is combined with what is provided to the `metadata` input; but names must be unique, so when there are similarly named slots, the values provided to the `metadata` input take priority.

### Value

A `SingleCellExperiment` object...

that contains all assays (SummarizedExperiment; includes DESeqDataSets), all standard slots (DGEList; see below for specifics), or expression matrices of the input `x`, as well as any dimensionality reductions provided to `reductions`, and any provided `metadata` stored in colData.

### Note about SummarizedExperiments

As of dittoSeq version 1.1.11, all dittoSeq functions can work directly with SummarizedExperiment objects, so this import function is nolonger required for such data.

### Note on assay names

One recommended assay to create if it is not already present in your dataset, is a log-normalized version of the counts data. The logNormCounts function of the scater package is an easy way to make such a slot.

dittoSeq visualizations default to grabbing expression data from an assay named logcounts > normcounts > counts

### See Also

`SingleCellExperiment` for more information about this storage structure.

### Examples

    library(SingleCellExperiment)

    # Generate some random data
    nsamples <- 60
    exp <- matrix(rpois(1000*nsamples, 20), ncol=nsamples)
    colnames(exp) <- paste0("sample", seq_len(ncol(exp)))
    rownames(exp) <- paste0("gene", seq_len(nrow(exp)))
    logexp <- log2(exp + 1)

    # Dimensionality Reductions
    pca <- matrix(runif(nsamples*5,-2,2), nsamples)
    tsne <- matrix(rnorm(nsamples*2), nsamples)

    # Some Metadata
    conds <- factor(rep(c("condition1", "condition2"), each=nsamples/2))
    timept <- rep(c("d0", "d3", "d6", "d9"), each = 15)
    genome <- rep(c(rep(TRUE,7),rep(FALSE,8)), 4)
    grps <- sample(c("A","B","C","D"), nsamples, TRUE)
    clusts <- as.character(1*(tsne[,1]>0&tsne[,2]>0) +
                           2*(tsne[,1]<0&tsne[,2]>0) +
                           3*(tsne[,1]>0&tsne[,2]<0) +
                           4*(tsne[,1]<0&tsne[,2]<0))
    score1 <- seq_len(nsamples)/2
    score2 <- rnorm(nsamples)

    ### We can import the counts directly
    myRNA <- importDittoBulk(
        x = list(counts = exp,
             logcounts = logexp))

    ### Adding metadata & PCA or other dimensionality reductions
    # We can add these directly during import, or after.
    myRNA <- importDittoBulk(
        x = list(counts = exp,
            logcounts = logexp),
        metadata = data.frame(
            conditions = conds,
            timepoint = timept,
            SNP = genome,
            groups = grps),
        reductions = list(
            pca = pca))

    myRNA$clustering <- clusts

    myRNA <- addDimReduction(
        myRNA,
        embeddings = tsne,
        name = "tsne")

    # (other packages SCE manipulations can also be used)

    ### When we import from SummarizedExperiment, all metadata is retained.
    # The object is just 'upgraded' to hold extra slots.
    # The output is the same, aside from a message when metadata are replaced.
    se <- SummarizedExperiment(
        list(counts = exp, logcounts = logexp))
    myRNA <- importDittoBulk(
        x = se,
        metadata = data.frame(
            conditions = conds,
            timepoint = timept,
            SNP = genome,
            groups = grps,
            clustering = clusts,
            score1 = score1,
            score2 = score2),
        reductions = list(
            pca = pca,
            tsne = tsne))
    myRNA

    ### For DESeq2, how we might have made this:
    # DESeqDataSets are SummarizedExperiments, and behave similarly
    # library(DESeq2)
    # dds <- DESeqDataSetFromMatrix(
    #     exp, data.frame(conditions), ~ conditions)
    # dds <- DESeq(dds)
    # dds_ditto <- importDittoBulk(dds)

    ### For edgeR, DGELists are a separate beast.
    # dittoSeq imports what I know to commonly be inside them, but please submit
    # an issue on the github (dtm2451/dittoSeq) if more should be retained.
    # library(edgeR)
    # dgelist <- DGEList(counts=exp, group=conditions)
    # dge_ditto <- importDittoBulk(dgelist)

[Package dittoSeq version 1.6.0 Index]