Skip to content

Commit 9959cb7

Browse files
authored
Merge pull request #43 from m-jahn/dev
fix: reduced size footprint + examples for CRAN submission
2 parents fcfe3ec + 0bf8fb7 commit 9959cb7

18 files changed

+283
-257
lines changed

DESCRIPTION

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
Type: Package
22
Package: ggcoverage
33
Title: Visualize Genome/Protein Coverage with Various Annotations
4-
Version: 1.4.0
4+
Version: 1.4.1
55
Authors@R: c(
66
person("Yabing", "Song", , "[email protected]", role = c("aut", "cre", "cph")),
77
person("Michael", "Jahn", , "[email protected]", role = c("aut", "cph"),
88
comment = c(ORCID = "0000-0002-3913-153X"))
99
)
1010
Maintainer: Yabing Song <[email protected]>
11-
Description: The goal of `ggcoverage` is to visualize coverage tracks from
11+
Description: The goal of 'ggcoverage' is to visualize coverage tracks from
1212
genomics, transcriptomics or proteomics data. It contains functions to
1313
load data from BAM, BigWig, BedGraph, txt, or xlsx files, create
1414
genome/protein coverage plots, and add various annotations including
1515
base and amino acid composition, GC content, copy number variation
1616
(CNV), genes, transcripts, ideograms, peak highlights, HiC contact
1717
maps, contact links and protein features. It is based on and
18-
integrates well with `ggplot2`.
18+
integrates well with 'ggplot2'.
1919
License: MIT + file LICENSE
2020
URL: https://showteeth.github.io/ggcoverage/,
2121
https://github.com/showteeth/ggcoverage
@@ -49,7 +49,6 @@ Suggests:
4949
ggforce,
5050
graphics,
5151
HiCBricks,
52-
HiCDataHumanIMR90,
5352
htmltools,
5453
knitr,
5554
rmarkdown

R/geom_base.R

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -47,40 +47,41 @@
4747
#' @export
4848
#'
4949
#' @examples
50-
#' library("BSgenome.Hsapiens.UCSC.hg19")
50+
#' if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) {
51+
#' library("BSgenome.Hsapiens.UCSC.hg19")
5152
#'
52-
#' # get sample metadata
53-
#' sample.meta <- data.frame(
54-
#' SampleName = c("tumorA.chr4.selected"),
55-
#' Type = c("tumorA"),
56-
#' Group = c("tumorA")
57-
#' )
58-
#'
59-
#' # get bam file
60-
#' bam.file <-
61-
#' system.file("extdata", "DNA-seq", "tumorA.chr4.selected.bam", package = "ggcoverage")
53+
#' # get sample metadata
54+
#' sample.meta <- data.frame(
55+
#' SampleName = c("tumorA.chr4.selected"),
56+
#' Type = c("tumorA"),
57+
#' Group = c("tumorA")
58+
#' )
6259
#'
63-
#' # load bam file
64-
#' track.df <- LoadTrackFile(
65-
#' track.file = bam.file,
66-
#' meta.info = sample.meta,
67-
#' single.nuc = TRUE,
68-
#' single.nuc.region = "chr4:62474235-62474295"
69-
#' )
60+
#' # get bam file
61+
#' bam.file <-
62+
#' system.file("extdata", "DNA-seq", "tumorA.chr4.selected.bam", package = "ggcoverage")
7063
#'
71-
#' # plot
72-
#' ggcoverage(
73-
#' data = track.df,
74-
#' color = "grey",
75-
#' range.position = "out",
76-
#' single.nuc = TRUE,
77-
#' rect.color = "white"
78-
#' ) +
79-
#' geom_base(
80-
#' bam.file = bam.file,
81-
#' bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19
64+
#' # load bam file
65+
#' track.df <- LoadTrackFile(
66+
#' track.file = bam.file,
67+
#' meta.info = sample.meta,
68+
#' single.nuc = TRUE,
69+
#' single.nuc.region = "chr4:62474235-62474295"
8270
#' )
8371
#'
72+
#' # plot
73+
#' ggcoverage(
74+
#' data = track.df,
75+
#' color = "grey",
76+
#' range.position = "out",
77+
#' single.nuc = TRUE,
78+
#' rect.color = "white"
79+
#' ) +
80+
#' geom_base(
81+
#' bam.file = bam.file,
82+
#' bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19
83+
#' )
84+
#' }
8485
geom_base <- function(bam.file, fa.file = NULL, bs.fa.seq = NULL, chr.split = "[[:space:]]",
8586
nuc.offset = -0.1, nuc.size = 4, nuc.padding = 0.05, nuc.padding.r = 0,
8687
nuc.color = c("A" = "#ff2b08", "C" = "#009aff", "G" = "#ffb507", "T" = "#00bc0d"),

R/geom_cnv.R

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,36 @@
2222
#' @export
2323
#'
2424
#' @examples
25-
#' # library(ggcoverage)
26-
#' # library(utils)
27-
#' # library("BSgenome.Hsapiens.UCSC.hg19")
28-
#' # # prepare files
29-
#' # cnv.file <- system.file("extdata", "DNA-seq", "SRR054616_copynumber.txt", package = "ggcoverage")
30-
#' # track.file <- system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage")
31-
#' # # read CNV
32-
#' # cnv.df = read.table(file = cnv.file, sep = "\t", header = TRUE)
33-
#' # # load track
34-
#' # track.df = LoadTrackFile(track.file = track.file, format = "bw")
35-
#' # track.df$seqnames = paste0("chr", track.df$seqnames)
36-
#' # # plot
37-
#' # ggcoverage(data = track.df, color = "grey", region = "chr4:1-160000000",
38-
#' # mark.region = NULL, range.position = "out") +
39-
#' # geom_gc(bs.fa.seq=BSgenome.Hsapiens.UCSC.hg19) +
40-
#' # geom_cnv(cnv.df = cnv.df, bin.col = 3, cn.col = 4) +
41-
#' # geom_ideogram(genome = "hg19",plot.space = 0, highlight.centromere = TRUE)
25+
#' if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) {
26+
#' library("BSgenome.Hsapiens.UCSC.hg19")
27+
#'
28+
#' # load track data
29+
#' track_file <-
30+
#' system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage")
31+
#' track_df <- LoadTrackFile(
32+
#' track.file = track_file,
33+
#' format = "bw",
34+
#' region = "4:1-160000000"
35+
#' )
36+
#' track_df$seqnames <- paste0("chr", track_df$seqnames)
37+
#'
38+
#' # read CNV data
39+
#' cnv_file <-
40+
#' system.file("extdata", "DNA-seq", "SRR054616_copynumber.txt", package = "ggcoverage")
41+
#' cnv_df <- read.table(file = cnv_file, sep = "\t", header = TRUE)
42+
#'
43+
#' # plot coverage, GC content, CNV
44+
#' basic_coverage <- ggcoverage(
45+
#' data = track_df,
46+
#' color = "grey",
47+
#' mark.region = NULL,
48+
#' range.position = "out"
49+
#' )
50+
#'
51+
#' basic_coverage +
52+
#' geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19) +
53+
#' geom_cnv(cnv.df = cnv_df, bin.col = 3, cn.col = 4)
54+
#' }
4255
geom_cnv <- function(cnv.df, bin.col = 3, cn.col = 4, ref.cn = 2,
4356
bin.point.color = "grey", bin.point.alpha = 0.6, cn.line.color = "red",
4457
ref.line.color = "black", plot.space = 0.1, plot.height = 0.2) {

R/geom_gc.R

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,30 @@
2020
#' @export
2121
#'
2222
#' @examples
23-
#' # library(ggcoverage)
24-
#' # library(utils)
25-
#' # library(rtracklayer)
26-
#' # library("BSgenome.Hsapiens.UCSC.hg19")
27-
#' # track folder
28-
#' # track.file <- system.file("extdata", "DNA-seq", "CNV_example.txt", package = "ggcoverage")
29-
#' # track.df <- utils::read.table(track.file, header = TRUE)
30-
#' # gtf.file <- system.file("extdata", "used_hg19.gtf", package = "ggcoverage")
31-
#' # gtf.gr <- rtracklayer::import.gff(con = gtf.file, format = "gtf")
32-
#' # basic.coverage <- ggcoverage(
33-
#' # data = track.df, color = NULL, mark.region = NULL,
34-
#' # region = "chr4:61750000-62,700,000", range.position = "out"
35-
#' # )
36-
#' # basic.coverage + geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19)
23+
#' if (requireNamespace("BSgenome.Hsapiens.UCSC.hg19", quietly = TRUE)) {
24+
#' library("BSgenome.Hsapiens.UCSC.hg19")
25+
#'
26+
#' # load track data
27+
#' track_file <-
28+
#' system.file("extdata", "DNA-seq", "SRR054616.bw", package = "ggcoverage")
29+
#' track_df <- LoadTrackFile(
30+
#' track.file = track_file,
31+
#' format = "bw",
32+
#' region = "4:1-160000000"
33+
#' )
34+
#' track_df$seqnames <- paste0("chr", track_df$seqnames)
35+
#'
36+
#' # plot coverage and GC content
37+
#' basic_coverage <- ggcoverage(
38+
#' data = track_df,
39+
#' color = "grey",
40+
#' mark.region = NULL,
41+
#' range.position = "out"
42+
#' )
43+
#'
44+
#' basic_coverage +
45+
#' geom_gc(bs.fa.seq = BSgenome.Hsapiens.UCSC.hg19)
46+
#' }
3747
geom_gc <- function(fa.file = NULL, bs.fa.seq = NULL, chr.split = "[[:space:]]", guide.line = NULL,
3848
line.color = "black", guide.line.color = "red", guide.line.type = "dashed",
3949
plot.space = 0.1, plot.height = 0.2) {

R/geom_ideogram.R

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#'
3737
#' @examples
3838
#' \dontrun{
39+
#' # note that you need to have package 'ggbio' installed
3940
#' library(ggbio)
4041
#'
4142
#' # load metadata

R/geom_tad.R

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -23,53 +23,54 @@
2323
#' @importFrom utils write.table
2424
#'
2525
#' @examples
26-
#' library(ggcoverage)
27-
#' library(HiCBricks)
26+
#' if (requireNamespace("HiCBricks", quietly = TRUE)) {
27+
#' library(HiCBricks)
2828
#'
29-
#' # prepare track dataframe
30-
#' track.file <- system.file("extdata", "HiC", "H3K36me3.bw", package = "ggcoverage")
31-
#' track.df <- LoadTrackFile(
32-
#' track.file = track.file, format = "bw",
33-
#' region = "chr2L:8050000-8300000", extend = 0
34-
#' )
35-
#' track.df$score <- ifelse(track.df$score < 0, 0, track.df$score)
36-
#' # check the data
37-
#' head(track.df)
29+
#' # prepare track dataframe
30+
#' track.file <- system.file("extdata", "HiC", "H3K36me3.bw", package = "ggcoverage")
31+
#' track.df <- LoadTrackFile(
32+
#' track.file = track.file, format = "bw",
33+
#' region = "chr2L:8100000-8200000", extend = 0
34+
#' )
35+
#' track.df$score <- ifelse(track.df$score < 0, 0, track.df$score)
36+
#' # check the data
37+
#' head(track.df)
3838
#'
39-
#' # Load Hi-C data
40-
#' hic.mat.file <- system.file("extdata", "HiC", "HiC_mat.txt", package = "ggcoverage")
41-
#' hic.mat <- read.table(file = hic.mat.file, sep = "\t")
42-
#' hic.mat <- as.matrix(hic.mat)
39+
#' # Load Hi-C data
40+
#' hic.mat.file <- system.file("extdata", "HiC", "HiC_mat.txt", package = "ggcoverage")
41+
#' hic.mat <- read.table(file = hic.mat.file, sep = "\t")
42+
#' hic.mat <- as.matrix(hic.mat)
4343
#'
44-
#' # bin data
45-
#' hic.bin.file <- system.file("extdata", "HiC", "HiC_bin.txt", package = "ggcoverage")
46-
#' hic.bin <- read.table(file = hic.bin.file, sep = "\t")
47-
#' colnames(hic.bin) <- c("chr", "start", "end")
48-
#' hic.bin.gr <- GenomicRanges::makeGRangesFromDataFrame(df = hic.bin)
44+
#' # bin data
45+
#' hic.bin.file <- system.file("extdata", "HiC", "HiC_bin.txt", package = "ggcoverage")
46+
#' hic.bin <- read.table(file = hic.bin.file, sep = "\t")
47+
#' colnames(hic.bin) <- c("chr", "start", "end")
48+
#' hic.bin.gr <- GenomicRanges::makeGRangesFromDataFrame(df = hic.bin)
4949
#'
50-
#' # transfrom function
51-
#' failsafe_log10 <- function(x) {
52-
#' x[is.na(x) | is.nan(x) | is.infinite(x)] <- 0
53-
#' return(log10(x + 1))
54-
#' }
50+
#' # transfrom function
51+
#' failsafe_log10 <- function(x) {
52+
#' x[is.na(x) | is.nan(x) | is.infinite(x)] <- 0
53+
#' return(log10(x + 1))
54+
#' }
5555
#'
56-
#' # load link data: prepare arcs
57-
#' link.file <- system.file("extdata", "HiC", "HiC_link.bedpe", package = "ggcoverage")
56+
#' # load link data: prepare arcs
57+
#' link.file <- system.file("extdata", "HiC", "HiC_link.bedpe", package = "ggcoverage")
5858
#'
59-
#' # basic coverage
60-
#' basic.coverage <- ggcoverage(
61-
#' data = track.df, color = "grey",
62-
#' mark.region = NULL, range.position = "out"
63-
#' )
59+
#' # basic coverage
60+
#' basic.coverage <- ggcoverage(
61+
#' data = track.df, color = "grey",
62+
#' mark.region = NULL, range.position = "out"
63+
#' )
6464
#'
65-
#' # add annotations
66-
#' basic.coverage +
67-
#' geom_tad(
68-
#' matrix = hic.mat, granges = hic.bin.gr, value.cut = 0.99,
69-
#' color.palette = "viridis", transform.fun = failsafe_log10,
70-
#' top = FALSE, show.rect = TRUE
71-
#' ) +
72-
#' geom_link(link.file = link.file, file.type = "bedpe", show.rect = TRUE)
65+
#' # add annotations
66+
#' basic.coverage +
67+
#' geom_tad(
68+
#' matrix = hic.mat, granges = hic.bin.gr, value.cut = 0.99,
69+
#' color.palette = "viridis", transform.fun = failsafe_log10,
70+
#' top = FALSE, show.rect = TRUE
71+
#' ) +
72+
#' geom_link(link.file = link.file, file.type = "bedpe", show.rect = TRUE)
73+
#' }
7374
#'
7475
#' @export
7576
geom_tad <- function(matrix, granges, color.palette = NULL, value.cut = NULL,

R/geom_transcript.R

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,6 @@
4646
#' @export
4747
#'
4848
#' @examples
49-
#' library(ggcoverage)
50-
#' library(utils)
51-
#' library(rtracklayer)
52-
#'
5349
#' # load metadata
5450
#' meta_file <- system.file("extdata", "RNA-seq", "meta_info.csv", package = "ggcoverage")
5551
#' sample_meta <- read.csv(meta_file)
@@ -75,20 +71,6 @@
7571
#' basic_coverage +
7672
#' geom_transcript(gtf.gr = gtf_gr, label.vjust = 1.5)
7773
#'
78-
#' # plot with custom style
79-
#' basic_coverage +
80-
#' geom_transcript(
81-
#' gtf.gr = gtf_gr,
82-
#' exon.size = 2.0,
83-
#' arrow.size.im = 1.0,
84-
#' arrow.length.im = 5,
85-
#' arrow.type.im = "open",
86-
#' color.by.im = "strand",
87-
#' fill.color = c(
88-
#' "-" = "darkblue",
89-
#' "+" = "darkgreen"
90-
#' )
91-
#' )
9274
geom_transcript <-
9375
function(gtf.gr,
9476
gene.name = "HNRNPC",

README.Rmd

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,9 @@ basic_coverage
317317

318318
##### Add GC annotations
319319

320-
Add **GC**, **ideogram** and **gene** annotaions.
320+
Add **GC**, **ideogram** and **gene** annotations.
321+
The plotting of the GC content requires the genome annotation package `BSgenome.Hsapiens.UCSC.hg19`.
322+
This package needs to be installed separately (it is only 'Suggested' by `ggcoverage`).
321323

322324
```{r gc_coverage, warning = FALSE, fig.height = 10, fig.width = 12, fig.align = "center"}
323325
# load genome data

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,10 @@ basic_coverage
423423

424424
##### Add GC annotations
425425

426-
Add **GC**, **ideogram** and **gene** annotaions.
426+
Add **GC**, **ideogram** and **gene** annotations. The plotting of the
427+
GC content requires the genome annotation package
428+
`BSgenome.Hsapiens.UCSC.hg19`. This package needs to be installed
429+
separately (it is only ‘Suggested’ by `ggcoverage`).
427430

428431
``` r
429432
# load genome data
@@ -657,7 +660,7 @@ graphics::par(opar)
657660

658661
Default color scheme for amino acid annotation is from [Residual
659662
colours: a proposal for
660-
aminochromography](https://doi.org/10.1093/protein/10.7.743):
663+
aminochromography](https://pubmed.ncbi.nlm.nih.gov/9342138/):
661664

662665
``` r
663666
aa_color <- c(
@@ -898,7 +901,7 @@ a contact map.
898901

899902
The Hi-C data is taken from [pyGenomeTracks: reproducible plots for
900903
multivariate genomic
901-
datasets](https://doi.org/10.1093/bioinformatics/btaa692).
904+
datasets](https://pubmed.ncbi.nlm.nih.gov/32745185/).
902905

903906
The Hi-C matrix visualization is implemented by
904907
[`HiCBricks`](https://github.com/koustav-pal/HiCBricks). This package

0 commit comments

Comments
 (0)