diff --git a/DESCRIPTION b/DESCRIPTION index 7e997a7..b2563e9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,21 +1,21 @@ Type: Package Package: ggcoverage Title: Visualize Genome/Protein Coverage with Various Annotations -Version: 1.4.0 +Version: 1.4.1 Authors@R: c( person("Yabing", "Song", , "songyb0519@gmail.com", role = c("aut", "cre", "cph")), person("Michael", "Jahn", , "jahn@mpusp.mpg.de", role = c("aut", "cph"), comment = c(ORCID = "0000-0002-3913-153X")) ) Maintainer: Yabing Song -Description: The goal of `ggcoverage` is to visualize coverage tracks from +Description: The goal of 'ggcoverage' is to visualize coverage tracks from genomics, transcriptomics or proteomics data. It contains functions to load data from BAM, BigWig, BedGraph, txt, or xlsx files, create genome/protein coverage plots, and add various annotations including base and amino acid composition, GC content, copy number variation (CNV), genes, transcripts, ideograms, peak highlights, HiC contact maps, contact links and protein features. It is based on and - integrates well with `ggplot2`. + integrates well with 'ggplot2'. License: MIT + file LICENSE URL: https://showteeth.github.io/ggcoverage/, https://github.com/showteeth/ggcoverage @@ -49,7 +49,6 @@ Suggests: ggforce, graphics, HiCBricks, - HiCDataHumanIMR90, htmltools, knitr, rmarkdown diff --git a/R/geom_base.R b/R/geom_base.R index 7b57158..2d54491 100644 --- a/R/geom_base.R +++ b/R/geom_base.R @@ -47,40 +47,41 @@ #' @export #' #' @examples -#' library("BSgenome.Hsapiens.UCSC.hg19") +#' if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) { +#' library("BSgenome.Hsapiens.UCSC.hg19") #' -#' # get sample metadata -#' sample.meta <- data.frame( -#' SampleName = c("tumorA.chr4.selected"), -#' Type = c("tumorA"), -#' Group = c("tumorA") -#' ) -#' -#' # get bam file -#' bam.file <- -#' system.file("extdata", "DNA-seq", "tumorA.chr4.selected.bam", package = "ggcoverage") +#' # get sample metadata +#' sample.meta <- data.frame( +#' SampleName = c("tumorA.chr4.selected"), +#' Type = c("tumorA"), +#' Group = c("tumorA") +#' ) #' -#' # load bam file -#' track.df <- LoadTrackFile( -#' track.file = bam.file, -#' meta.info = sample.meta, -#' single.nuc = TRUE, -#' single.nuc.region = "chr4:62474235-62474295" -#' ) +#' # get bam file +#' bam.file <- +#' system.file("extdata", "DNA-seq", "tumorA.chr4.selected.bam", package = "ggcoverage") #' -#' # plot -#' ggcoverage( -#' data = track.df, -#' color = "grey", -#' range.position = "out", -#' single.nuc = TRUE, -#' rect.color = "white" -#' ) + -#' geom_base( -#' bam.file = bam.file, -#' bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19 +#' # load bam file +#' track.df <- LoadTrackFile( +#' track.file = bam.file, +#' meta.info = sample.meta, +#' single.nuc = TRUE, +#' single.nuc.region = "chr4:62474235-62474295" #' ) #' +#' # plot +#' ggcoverage( +#' data = track.df, +#' color = "grey", +#' range.position = "out", +#' single.nuc = TRUE, +#' rect.color = "white" +#' ) + +#' geom_base( +#' bam.file = bam.file, +#' bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19 +#' ) +#' } geom_base <- function(bam.file, fa.file = NULL, bs.fa.seq = NULL, chr.split = "[[:space:]]", nuc.offset = -0.1, nuc.size = 4, nuc.padding = 0.05, nuc.padding.r = 0, nuc.color = c("A" = "#ff2b08", "C" = "#009aff", "G" = "#ffb507", "T" = "#00bc0d"), diff --git a/R/geom_cnv.R b/R/geom_cnv.R index 1c2ff82..4042d0c 100644 --- a/R/geom_cnv.R +++ b/R/geom_cnv.R @@ -22,23 +22,36 @@ #' @export #' #' @examples -#' # library(ggcoverage) -#' # library(utils) -#' # library("BSgenome.Hsapiens.UCSC.hg19") -#' # # prepare files -#' # cnv.file <- system.file("extdata", "DNA-seq", "SRR054616_copynumber.txt", package = "ggcoverage") -#' # track.file <- system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage") -#' # # read CNV -#' # cnv.df = read.table(file = cnv.file, sep = "\t", header = TRUE) -#' # # load track -#' # track.df = LoadTrackFile(track.file = track.file, format = "bw") -#' # track.df$seqnames = paste0("chr", track.df$seqnames) -#' # # plot -#' # ggcoverage(data = track.df, color = "grey", region = "chr4:1-160000000", -#' # mark.region = NULL, range.position = "out") + -#' # geom_gc(bs.fa.seq=BSgenome.Hsapiens.UCSC.hg19) + -#' # geom_cnv(cnv.df = cnv.df, bin.col = 3, cn.col = 4) + -#' # geom_ideogram(genome = "hg19",plot.space = 0, highlight.centromere = TRUE) +#' if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) { +#' library("BSgenome.Hsapiens.UCSC.hg19") +#' +#' # load track data +#' track_file <- +#' system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage") +#' track_df <- LoadTrackFile( +#' track.file = track_file, +#' format = "bw", +#' region = "4:1-160000000" +#' ) +#' track_df$seqnames <- paste0("chr", track_df$seqnames) +#' +#' # read CNV data +#' cnv_file <- +#' system.file("extdata", "DNA-seq", "SRR054616_copynumber.txt", package = "ggcoverage") +#' cnv_df <- read.table(file = cnv_file, sep = "\t", header = TRUE) +#' +#' # plot coverage, GC content, CNV +#' basic_coverage <- ggcoverage( +#' data = track_df, +#' color = "grey", +#' mark.region = NULL, +#' range.position = "out" +#' ) +#' +#' basic_coverage + +#' geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19) + +#' geom_cnv(cnv.df = cnv_df, bin.col = 3, cn.col = 4) +#' } geom_cnv <- function(cnv.df, bin.col = 3, cn.col = 4, ref.cn = 2, bin.point.color = "grey", bin.point.alpha = 0.6, cn.line.color = "red", ref.line.color = "black", plot.space = 0.1, plot.height = 0.2) { diff --git a/R/geom_gc.R b/R/geom_gc.R index d16a29d..80fa337 100644 --- a/R/geom_gc.R +++ b/R/geom_gc.R @@ -20,20 +20,30 @@ #' @export #' #' @examples -#' # library(ggcoverage) -#' # library(utils) -#' # library(rtracklayer) -#' # library("BSgenome.Hsapiens.UCSC.hg19") -#' # track folder -#' # track.file <- system.file("extdata", "DNA-seq", "CNV_example.txt", package = "ggcoverage") -#' # track.df <- utils::read.table(track.file, header = TRUE) -#' # gtf.file <- system.file("extdata", "used_hg19.gtf", package = "ggcoverage") -#' # gtf.gr <- rtracklayer::import.gff(con = gtf.file, format = "gtf") -#' # basic.coverage <- ggcoverage( -#' # data = track.df, color = NULL, mark.region = NULL, -#' # region = "chr4:61750000-62,700,000", range.position = "out" -#' # ) -#' # basic.coverage + geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19) +#' if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) { +#' library("BSgenome.Hsapiens.UCSC.hg19") +#' +#' # load track data +#' track_file <- +#' system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage") +#' track_df <- LoadTrackFile( +#' track.file = track_file, +#' format = "bw", +#' region = "4:1-160000000" +#' ) +#' track_df$seqnames <- paste0("chr", track_df$seqnames) +#' +#' # plot coverage and GC content +#' basic_coverage <- ggcoverage( +#' data = track_df, +#' color = "grey", +#' mark.region = NULL, +#' range.position = "out" +#' ) +#' +#' basic_coverage + +#' geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19) +#' } geom_gc <- function(fa.file = NULL, bs.fa.seq = NULL, chr.split = "[[:space:]]", guide.line = NULL, line.color = "black", guide.line.color = "red", guide.line.type = "dashed", plot.space = 0.1, plot.height = 0.2) { diff --git a/R/geom_ideogram.R b/R/geom_ideogram.R index e5374b5..afb8ee5 100644 --- a/R/geom_ideogram.R +++ b/R/geom_ideogram.R @@ -36,6 +36,7 @@ #' #' @examples #' \dontrun{ +#' # note that you need to have package 'ggbio' installed #' library(ggbio) #' #' # load metadata diff --git a/R/geom_tad.R b/R/geom_tad.R index 2b6e1a4..e83d419 100644 --- a/R/geom_tad.R +++ b/R/geom_tad.R @@ -23,53 +23,54 @@ #' @importFrom utils write.table #' #' @examples -#' library(ggcoverage) -#' library(HiCBricks) +#' if (requireNamespace("HiCBricks", quietly = TRUE)) { +#' library(HiCBricks) #' -#' # prepare track dataframe -#' track.file <- system.file("extdata", "HiC", "H3K36me3.bw", package = "ggcoverage") -#' track.df <- LoadTrackFile( -#' track.file = track.file, format = "bw", -#' region = "chr2L:8050000-8300000", extend = 0 -#' ) -#' track.df$score <- ifelse(track.df$score < 0, 0, track.df$score) -#' # check the data -#' head(track.df) +#' # prepare track dataframe +#' track.file <- system.file("extdata", "HiC", "H3K36me3.bw", package = "ggcoverage") +#' track.df <- LoadTrackFile( +#' track.file = track.file, format = "bw", +#' region = "chr2L:8100000-8200000", extend = 0 +#' ) +#' track.df$score <- ifelse(track.df$score < 0, 0, track.df$score) +#' # check the data +#' head(track.df) #' -#' # Load Hi-C data -#' hic.mat.file <- system.file("extdata", "HiC", "HiC_mat.txt", package = "ggcoverage") -#' hic.mat <- read.table(file = hic.mat.file, sep = "\t") -#' hic.mat <- as.matrix(hic.mat) +#' # Load Hi-C data +#' hic.mat.file <- system.file("extdata", "HiC", "HiC_mat.txt", package = "ggcoverage") +#' hic.mat <- read.table(file = hic.mat.file, sep = "\t") +#' hic.mat <- as.matrix(hic.mat) #' -#' # bin data -#' hic.bin.file <- system.file("extdata", "HiC", "HiC_bin.txt", package = "ggcoverage") -#' hic.bin <- read.table(file = hic.bin.file, sep = "\t") -#' colnames(hic.bin) <- c("chr", "start", "end") -#' hic.bin.gr <- GenomicRanges::makeGRangesFromDataFrame(df = hic.bin) +#' # bin data +#' hic.bin.file <- system.file("extdata", "HiC", "HiC_bin.txt", package = "ggcoverage") +#' hic.bin <- read.table(file = hic.bin.file, sep = "\t") +#' colnames(hic.bin) <- c("chr", "start", "end") +#' hic.bin.gr <- GenomicRanges::makeGRangesFromDataFrame(df = hic.bin) #' -#' # transfrom function -#' failsafe_log10 <- function(x) { -#' x[is.na(x) | is.nan(x) | is.infinite(x)] <- 0 -#' return(log10(x + 1)) -#' } +#' # transfrom function +#' failsafe_log10 <- function(x) { +#' x[is.na(x) | is.nan(x) | is.infinite(x)] <- 0 +#' return(log10(x + 1)) +#' } #' -#' # load link data: prepare arcs -#' link.file <- system.file("extdata", "HiC", "HiC_link.bedpe", package = "ggcoverage") +#' # load link data: prepare arcs +#' link.file <- system.file("extdata", "HiC", "HiC_link.bedpe", package = "ggcoverage") #' -#' # basic coverage -#' basic.coverage <- ggcoverage( -#' data = track.df, color = "grey", -#' mark.region = NULL, range.position = "out" -#' ) +#' # basic coverage +#' basic.coverage <- ggcoverage( +#' data = track.df, color = "grey", +#' mark.region = NULL, range.position = "out" +#' ) #' -#' # add annotations -#' basic.coverage + -#' geom_tad( -#' matrix = hic.mat, granges = hic.bin.gr, value.cut = 0.99, -#' color.palette = "viridis", transform.fun = failsafe_log10, -#' top = FALSE, show.rect = TRUE -#' ) + -#' geom_link(link.file = link.file, file.type = "bedpe", show.rect = TRUE) +#' # add annotations +#' basic.coverage + +#' geom_tad( +#' matrix = hic.mat, granges = hic.bin.gr, value.cut = 0.99, +#' color.palette = "viridis", transform.fun = failsafe_log10, +#' top = FALSE, show.rect = TRUE +#' ) + +#' geom_link(link.file = link.file, file.type = "bedpe", show.rect = TRUE) +#' } #' #' @export geom_tad <- function(matrix, granges, color.palette = NULL, value.cut = NULL, diff --git a/R/geom_transcript.R b/R/geom_transcript.R index 7e89e07..ebe30b7 100644 --- a/R/geom_transcript.R +++ b/R/geom_transcript.R @@ -46,10 +46,6 @@ #' @export #' #' @examples -#' library(ggcoverage) -#' library(utils) -#' library(rtracklayer) -#' #' # load metadata #' meta_file <- system.file("extdata", "RNA-seq", "meta_info.csv", package = "ggcoverage") #' sample_meta <- read.csv(meta_file) @@ -75,20 +71,6 @@ #' basic_coverage + #' geom_transcript(gtf.gr = gtf_gr, label.vjust = 1.5) #' -#' # plot with custom style -#' basic_coverage + -#' geom_transcript( -#' gtf.gr = gtf_gr, -#' exon.size = 2.0, -#' arrow.size.im = 1.0, -#' arrow.length.im = 5, -#' arrow.type.im = "open", -#' color.by.im = "strand", -#' fill.color = c( -#' "-" = "darkblue", -#' "+" = "darkgreen" -#' ) -#' ) geom_transcript <- function(gtf.gr, gene.name = "HNRNPC", diff --git a/README.Rmd b/README.Rmd index 6e329ea..0f0b77f 100644 --- a/README.Rmd +++ b/README.Rmd @@ -317,7 +317,9 @@ basic_coverage ##### Add GC annotations -Add **GC**, **ideogram** and **gene** annotaions. +Add **GC**, **ideogram** and **gene** annotations. +The plotting of the GC content requires the genome annotation package `BSgenome.Hsapiens.UCSC.hg19`. +This package needs to be installed separately (it is only 'Suggested' by `ggcoverage`). ```{r gc_coverage, warning = FALSE, fig.height = 10, fig.width = 12, fig.align = "center"} # load genome data diff --git a/README.md b/README.md index ee272f1..b1af77a 100644 --- a/README.md +++ b/README.md @@ -423,7 +423,10 @@ basic_coverage ##### Add GC annotations -Add **GC**, **ideogram** and **gene** annotaions. +Add **GC**, **ideogram** and **gene** annotations. The plotting of the +GC content requires the genome annotation package +`BSgenome.Hsapiens.UCSC.hg19`. This package needs to be installed +separately (it is only ‘Suggested’ by `ggcoverage`). ``` r # load genome data @@ -657,7 +660,7 @@ graphics::par(opar) Default color scheme for amino acid annotation is from [Residual colours: a proposal for -aminochromography](https://doi.org/10.1093/protein/10.7.743): +aminochromography](https://pubmed.ncbi.nlm.nih.gov/9342138/): ``` r aa_color <- c( @@ -898,7 +901,7 @@ a contact map. The Hi-C data is taken from [pyGenomeTracks: reproducible plots for multivariate genomic -datasets](https://doi.org/10.1093/bioinformatics/btaa692). +datasets](https://pubmed.ncbi.nlm.nih.gov/32745185/). The Hi-C matrix visualization is implemented by [`HiCBricks`](https://github.com/koustav-pal/HiCBricks). This package diff --git a/cran-comments.md b/cran-comments.md index fe4bec6..3b314d6 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,5 +1,10 @@ # Resubmission +Update for current submission: We have substantially removed the size of test +files for the examples, reducing overall package size from ~30 Mb to only ~6 Mb. +A further reduction was not possible as the package contains examples for +many different NGS file types. + This package has been submitted previously (2023, v0.7.1) and was removed from CRAN due to several issues. In the mean time many functions were re-factored, more than 10 dependencies were removed to make the package lighter, and other @@ -25,11 +30,10 @@ now builds fine on the tested platforms. There was 1 NOTE: ``` -❯ checking installed package size ... NOTE - installed size is 31.9Mb - sub-directories of 1Mb or more: - doc 2.2Mb - extdata 28.6Mb +installed size is 5.8Mb + sub-directories of 1Mb or more: + doc 1.6Mb + extdata 3.0Mb ``` ## Downstream dependencies diff --git a/inst/extdata/HiC/H3K36me3.bw b/inst/extdata/HiC/H3K36me3.bw index e3c3d8b..5fd0a16 100644 Binary files a/inst/extdata/HiC/H3K36me3.bw and b/inst/extdata/HiC/H3K36me3.bw differ diff --git a/man/geom_base.Rd b/man/geom_base.Rd index 273abf2..e874bb2 100644 --- a/man/geom_base.Rd +++ b/man/geom_base.Rd @@ -102,38 +102,39 @@ Plot. Add Base and Amino Acid Annotation to Coverage Plot. } \examples{ -library("BSgenome.Hsapiens.UCSC.hg19") - -# get sample metadata -sample.meta <- data.frame( - SampleName = c("tumorA.chr4.selected"), - Type = c("tumorA"), - Group = c("tumorA") -) - -# get bam file -bam.file <- - system.file("extdata", "DNA-seq", "tumorA.chr4.selected.bam", package = "ggcoverage") +if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) { + library("BSgenome.Hsapiens.UCSC.hg19") + + # get sample metadata + sample.meta <- data.frame( + SampleName = c("tumorA.chr4.selected"), + Type = c("tumorA"), + Group = c("tumorA") + ) -# load bam file -track.df <- LoadTrackFile( - track.file = bam.file, - meta.info = sample.meta, - single.nuc = TRUE, - single.nuc.region = "chr4:62474235-62474295" -) + # get bam file + bam.file <- + system.file("extdata", "DNA-seq", "tumorA.chr4.selected.bam", package = "ggcoverage") -# plot -ggcoverage( - data = track.df, - color = "grey", - range.position = "out", - single.nuc = TRUE, - rect.color = "white" -) + - geom_base( - bam.file = bam.file, - bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19 + # load bam file + track.df <- LoadTrackFile( + track.file = bam.file, + meta.info = sample.meta, + single.nuc = TRUE, + single.nuc.region = "chr4:62474235-62474295" ) + # plot + ggcoverage( + data = track.df, + color = "grey", + range.position = "out", + single.nuc = TRUE, + rect.color = "white" + ) + + geom_base( + bam.file = bam.file, + bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19 + ) +} } diff --git a/man/geom_cnv.Rd b/man/geom_cnv.Rd index c849e94..1767123 100644 --- a/man/geom_cnv.Rd +++ b/man/geom_cnv.Rd @@ -46,21 +46,34 @@ Plot. Add CNV Annotation to Coverage Plot. } \examples{ -# library(ggcoverage) -# library(utils) -# library("BSgenome.Hsapiens.UCSC.hg19") -# # prepare files -# cnv.file <- system.file("extdata", "DNA-seq", "SRR054616_copynumber.txt", package = "ggcoverage") -# track.file <- system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage") -# # read CNV -# cnv.df = read.table(file = cnv.file, sep = "\t", header = TRUE) -# # load track -# track.df = LoadTrackFile(track.file = track.file, format = "bw") -# track.df$seqnames = paste0("chr", track.df$seqnames) -# # plot -# ggcoverage(data = track.df, color = "grey", region = "chr4:1-160000000", -# mark.region = NULL, range.position = "out") + -# geom_gc(bs.fa.seq=BSgenome.Hsapiens.UCSC.hg19) + -# geom_cnv(cnv.df = cnv.df, bin.col = 3, cn.col = 4) + -# geom_ideogram(genome = "hg19",plot.space = 0, highlight.centromere = TRUE) +if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) { + library("BSgenome.Hsapiens.UCSC.hg19") + + # load track data + track_file <- + system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage") + track_df <- LoadTrackFile( + track.file = track_file, + format = "bw", + region = "4:1-160000000" + ) + track_df$seqnames <- paste0("chr", track_df$seqnames) + + # read CNV data + cnv_file <- + system.file("extdata", "DNA-seq", "SRR054616_copynumber.txt", package = "ggcoverage") + cnv_df <- read.table(file = cnv_file, sep = "\t", header = TRUE) + + # plot coverage, GC content, CNV + basic_coverage <- ggcoverage( + data = track_df, + color = "grey", + mark.region = NULL, + range.position = "out" + ) + + basic_coverage + + geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19) + + geom_cnv(cnv.df = cnv_df, bin.col = 3, cn.col = 4) +} } diff --git a/man/geom_gc.Rd b/man/geom_gc.Rd index cb42d9b..708e4a4 100644 --- a/man/geom_gc.Rd +++ b/man/geom_gc.Rd @@ -42,18 +42,28 @@ Plot. Add GC Content Annotation to Coverage Plot. } \examples{ -# library(ggcoverage) -# library(utils) -# library(rtracklayer) -# library("BSgenome.Hsapiens.UCSC.hg19") -# track folder -# track.file <- system.file("extdata", "DNA-seq", "CNV_example.txt", package = "ggcoverage") -# track.df <- utils::read.table(track.file, header = TRUE) -# gtf.file <- system.file("extdata", "used_hg19.gtf", package = "ggcoverage") -# gtf.gr <- rtracklayer::import.gff(con = gtf.file, format = "gtf") -# basic.coverage <- ggcoverage( -# data = track.df, color = NULL, mark.region = NULL, -# region = "chr4:61750000-62,700,000", range.position = "out" -# ) -# basic.coverage + geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19) +if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) { + library("BSgenome.Hsapiens.UCSC.hg19") + + # load track data + track_file <- + system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage") + track_df <- LoadTrackFile( + track.file = track_file, + format = "bw", + region = "4:1-160000000" + ) + track_df$seqnames <- paste0("chr", track_df$seqnames) + + # plot coverage and GC content + basic_coverage <- ggcoverage( + data = track_df, + color = "grey", + mark.region = NULL, + range.position = "out" + ) + + basic_coverage + + geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19) +} } diff --git a/man/geom_ideogram.Rd b/man/geom_ideogram.Rd index b176919..91d0e8c 100644 --- a/man/geom_ideogram.Rd +++ b/man/geom_ideogram.Rd @@ -68,6 +68,7 @@ Add Ideogram Annotation to Coverage Plot. } \examples{ \dontrun{ +# note that you need to have package 'ggbio' installed library(ggbio) # load metadata diff --git a/man/geom_tad.Rd b/man/geom_tad.Rd index 950a99e..1d2388a 100644 --- a/man/geom_tad.Rd +++ b/man/geom_tad.Rd @@ -45,52 +45,53 @@ Plot. Add Contact Map to Coverage Plot. } \examples{ -library(ggcoverage) -library(HiCBricks) - -# prepare track dataframe -track.file <- system.file("extdata", "HiC", "H3K36me3.bw", package = "ggcoverage") -track.df <- LoadTrackFile( - track.file = track.file, format = "bw", - region = "chr2L:8050000-8300000", extend = 0 -) -track.df$score <- ifelse(track.df$score < 0, 0, track.df$score) -# check the data -head(track.df) - -# Load Hi-C data -hic.mat.file <- system.file("extdata", "HiC", "HiC_mat.txt", package = "ggcoverage") -hic.mat <- read.table(file = hic.mat.file, sep = "\t") -hic.mat <- as.matrix(hic.mat) - -# bin data -hic.bin.file <- system.file("extdata", "HiC", "HiC_bin.txt", package = "ggcoverage") -hic.bin <- read.table(file = hic.bin.file, sep = "\t") -colnames(hic.bin) <- c("chr", "start", "end") -hic.bin.gr <- GenomicRanges::makeGRangesFromDataFrame(df = hic.bin) - -# transfrom function -failsafe_log10 <- function(x) { - x[is.na(x) | is.nan(x) | is.infinite(x)] <- 0 - return(log10(x + 1)) +if (requireNamespace("HiCBricks", quietly = TRUE)) { + library(HiCBricks) + + # prepare track dataframe + track.file <- system.file("extdata", "HiC", "H3K36me3.bw", package = "ggcoverage") + track.df <- LoadTrackFile( + track.file = track.file, format = "bw", + region = "chr2L:8100000-8200000", extend = 0 + ) + track.df$score <- ifelse(track.df$score < 0, 0, track.df$score) + # check the data + head(track.df) + + # Load Hi-C data + hic.mat.file <- system.file("extdata", "HiC", "HiC_mat.txt", package = "ggcoverage") + hic.mat <- read.table(file = hic.mat.file, sep = "\t") + hic.mat <- as.matrix(hic.mat) + + # bin data + hic.bin.file <- system.file("extdata", "HiC", "HiC_bin.txt", package = "ggcoverage") + hic.bin <- read.table(file = hic.bin.file, sep = "\t") + colnames(hic.bin) <- c("chr", "start", "end") + hic.bin.gr <- GenomicRanges::makeGRangesFromDataFrame(df = hic.bin) + + # transfrom function + failsafe_log10 <- function(x) { + x[is.na(x) | is.nan(x) | is.infinite(x)] <- 0 + return(log10(x + 1)) + } + + # load link data: prepare arcs + link.file <- system.file("extdata", "HiC", "HiC_link.bedpe", package = "ggcoverage") + + # basic coverage + basic.coverage <- ggcoverage( + data = track.df, color = "grey", + mark.region = NULL, range.position = "out" + ) + + # add annotations + basic.coverage + + geom_tad( + matrix = hic.mat, granges = hic.bin.gr, value.cut = 0.99, + color.palette = "viridis", transform.fun = failsafe_log10, + top = FALSE, show.rect = TRUE + ) + + geom_link(link.file = link.file, file.type = "bedpe", show.rect = TRUE) } -# load link data: prepare arcs -link.file <- system.file("extdata", "HiC", "HiC_link.bedpe", package = "ggcoverage") - -# basic coverage -basic.coverage <- ggcoverage( - data = track.df, color = "grey", - mark.region = NULL, range.position = "out" -) - -# add annotations -basic.coverage + - geom_tad( - matrix = hic.mat, granges = hic.bin.gr, value.cut = 0.99, - color.palette = "viridis", transform.fun = failsafe_log10, - top = FALSE, show.rect = TRUE - ) + - geom_link(link.file = link.file, file.type = "bedpe", show.rect = TRUE) - } diff --git a/man/geom_transcript.Rd b/man/geom_transcript.Rd index 8697862..3b507f6 100644 --- a/man/geom_transcript.Rd +++ b/man/geom_transcript.Rd @@ -91,10 +91,6 @@ Plot. Add Transcript Annotation to Coverage Plot. } \examples{ -library(ggcoverage) -library(utils) -library(rtracklayer) - # load metadata meta_file <- system.file("extdata", "RNA-seq", "meta_info.csv", package = "ggcoverage") sample_meta <- read.csv(meta_file) @@ -120,18 +116,4 @@ basic_coverage <- ggcoverage(data = track_df, range.position = "out") basic_coverage + geom_transcript(gtf.gr = gtf_gr, label.vjust = 1.5) -# plot with custom style -basic_coverage + - geom_transcript( - gtf.gr = gtf_gr, - exon.size = 2.0, - arrow.size.im = 1.0, - arrow.length.im = 5, - arrow.type.im = "open", - color.by.im = "strand", - fill.color = c( - "-" = "darkblue", - "+" = "darkgreen" - ) - ) } diff --git a/vignettes/ggcoverage.Rmd b/vignettes/ggcoverage.Rmd index 62ad8ac..0e62a25 100644 --- a/vignettes/ggcoverage.Rmd +++ b/vignettes/ggcoverage.Rmd @@ -337,7 +337,9 @@ basic_coverage ##### Add GC annotations -Add **GC**, **ideogram** and **gene** annotaions. +Add **GC**, **ideogram** and **gene** annotations. +The plotting of the GC content requires the genome annotation package `BSgenome.Hsapiens.UCSC.hg19`. +This package needs to be installed separately (it is only 'Suggested' by `ggcoverage`). ```{r gc_coverage, eval = FALSE} # load genome data