## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
    echo = TRUE,
    eval = TRUE,
    message = FALSE,
    warning = FALSE
)
set.seed(123)
library(GPlinksR)

## ----installation, eval=FALSE-------------------------------------------------
# if (!requireNamespace("BiocManager", quietly = TRUE)) {
#     install.packages("BiocManager")
# }
# BiocManager::install("GPlinksR")

## ----example-inputs-----------------------------------------------------------
data("gp_example_inputs", package = "GPlinksR")

pk <- gp_example_inputs$pk
gn <- gp_example_inputs$gn

length(pk)
length(gn)

## ----demo-subset--------------------------------------------------------------
pk_demo <- pk[seq_len(3)]
gn_demo <- gn[seq_len(4)]

pk_demo
gn_demo

## ----direct-run---------------------------------------------------------------
example_enh_file <- system.file(
    "extdata", "gp_example_enhancer_links.tsv",
    package = "GPlinksR", mustWork = TRUE
)
example_coords_file <- system.file(
    "extdata", "gp_example_enhancer_coordinates.tsv",
    package = "GPlinksR", mustWork = TRUE
)
example_gene_map <- data.frame(
    hgnc_symbol = c("TTLL10", "SAMD11"),
    hgnc_id = c("HGNC:26693", "HGNC:28706")
)

gp <- build_gp_links(
    pk = pk_demo,
    gn = gn_demo,
    enh_file = example_enh_file,
    enh_coords_file = example_coords_file,
    gene_map = example_gene_map
)
gp

## ----cached-enhancer-file, eval=FALSE-----------------------------------------
# enh_file <- get_peregrine_file(19)
# gp <- build_gp_links(pk = pk_demo, gn = gn_demo, enh_file = enh_file)

## ----peak-data-frame----------------------------------------------------------
peak_parts <- do.call(rbind, strsplit(pk_demo, "[:-]"))
peak_df <- data.frame(
    chr = peak_parts[, 1],
    start = as.integer(peak_parts[, 2]),
    end = as.integer(peak_parts[, 3])
)

peak_df

## ----data-frame-run-----------------------------------------------------------
gp_from_df <- build_gp_links(
    pk = peak_df,
    gn = gn_demo,
    enh_file = example_enh_file,
    enh_coords_file = example_coords_file,
    gene_map = example_gene_map
)
identical(gp_from_df, gp)

## ----mae-setup----------------------------------------------------------------
if (requireNamespace("MultiAssayExperiment", quietly = TRUE) &&
    requireNamespace("SummarizedExperiment", quietly = TRUE) &&
    requireNamespace("IRanges", quietly = TRUE)) {
    library(MultiAssayExperiment)
    library(SummarizedExperiment)
    library(GenomicRanges)
    library(IRanges)
    library(S4Vectors)

    sample_ids <- paste0("cell", seq_len(3))
    peak_parts_mae <- do.call(
        rbind,
        strsplit(pk_demo[seq_len(3)], "[:-]")
    )

    atac_counts <- matrix(sample.int(10, 9, TRUE), nrow = 3)
    colnames(atac_counts) <- sample_ids

    atac_se <- SummarizedExperiment(
        assays = list(counts = atac_counts),
        rowRanges = GRanges(
            seqnames = peak_parts_mae[, 1],
            ranges = IRanges(
                start = as.integer(peak_parts_mae[, 2]),
                end = as.integer(peak_parts_mae[, 3])
            )
        )
    )

    rna_counts <- matrix(sample.int(10, 12, TRUE), nrow = 4)
    colnames(rna_counts) <- sample_ids

    rna_se <- SummarizedExperiment(
        assays = list(counts = rna_counts),
        rowData = DataFrame(
            symbol = gn_demo[seq_len(4)]
        )
    )

    mae <- MultiAssayExperiment(
        experiments = list(ATAC = atac_se, RNA = rna_se),
        colData = S4Vectors::DataFrame(row.names = sample_ids)
    )
}

## ----mae-run------------------------------------------------------------------
gp_from_mae <- build_gp_links_wrapper(
    x = mae,
    peak_experiment = "ATAC",
    gene_experiment = "RNA",
    gene_col = "symbol",
    enh_file = example_enh_file,
    enh_coords_file = example_coords_file,
    gene_map = example_gene_map
)

head(gp_from_mae)

## ----sce-setup----------------------------------------------------------------
if (requireNamespace("SingleCellExperiment", quietly = TRUE) &&
    requireNamespace("SummarizedExperiment", quietly = TRUE)) {
    library(SingleCellExperiment)
    library(SummarizedExperiment)
    library(S4Vectors)

    sample_ids <- paste0("cell", seq_len(4))

    rna_counts <- matrix(sample.int(10, 16, TRUE), nrow = 4)
    rownames(rna_counts) <- gn_demo[seq_len(4)]
    colnames(rna_counts) <- sample_ids

    peak_counts <- matrix(sample.int(10, 12, TRUE), nrow = 3)
    colnames(peak_counts) <- sample_ids
    peak_rowdata <- DataFrame(
        PeakRegion = pk_demo[seq_len(3)]
    )

    sce <- SingleCellExperiment(
        assays = list(counts = rna_counts),
        rowData = DataFrame(symbol = rownames(rna_counts))
    )

    altExp(sce, "ATAC") <- SummarizedExperiment(
        assays = list(counts = peak_counts),
        rowData = peak_rowdata
    )
}

## ----sce-run------------------------------------------------------------------
gp_from_sce <- build_gp_links_wrapper(
    x = sce,
    peak_experiment = "ATAC",
    gene_col = "symbol",
    enh_file = example_enh_file,
    enh_coords_file = example_coords_file,
    gene_map = example_gene_map
)

head(gp_from_sce)

## ----session------------------------------------------------------------------
sessionInfo()

