... | ... |
@@ -10,7 +10,8 @@ Imports: circlize (>= 0.4.5), GetoptLong, colorspace, clue, |
10 | 10 |
RColorBrewer, GlobalOptions (>= 0.1.0), parallel |
11 | 11 |
Suggests: testthat (>= 1.0.0), knitr, markdown, dendsort, |
12 | 12 |
Cairo, png, jpeg, tiff, fastcluster, |
13 |
- dendextend (>= 1.0.1), grImport, grImport2, glue |
|
13 |
+ dendextend (>= 1.0.1), grImport, grImport2, glue, |
|
14 |
+ GenomicRanges |
|
14 | 15 |
VignetteBuilder: knitr |
15 | 16 |
Description: Complex heatmaps are efficient to visualize associations |
16 | 17 |
between different sources of data sets and reveal potential patterns. |
... | ... |
@@ -295,7 +295,8 @@ list_to_matrix = function(lt, universal_set = NULL) { |
295 | 295 |
# -mode The mode for forming the combination set, see Mode section. |
296 | 296 |
# -top_n_sets Number of sets with largest size. |
297 | 297 |
# -min_set_size Ths minimal set size that is used for generating the combination matrix. |
298 |
-# -universal_set The universal set. It if is specified, ``complement_size`` is ignored. |
|
298 |
+# -universal_set The universal set. If it is set, the size of the complement set of all sets is also calculated. |
|
299 |
+# It if is specified, ``complement_size`` is ignored. |
|
299 | 300 |
# -complement_size The size for the complement of all sets. If it is specified, the combination |
300 | 301 |
# set name will be like "00...". |
301 | 302 |
# -value_fun For each combination set, how to calculate the size? If it is a scalar set, |
... | ... |
@@ -7,21 +7,23 @@ Convert a List of Sets to a Binary Matrix |
7 | 7 |
Convert a List of Sets to a Binary Matrix |
8 | 8 |
} |
9 | 9 |
\usage{ |
10 |
-list_to_matrix(lt) |
|
10 |
+list_to_matrix(lt, universal_set = NULL) |
|
11 | 11 |
} |
12 | 12 |
\arguments{ |
13 | 13 |
|
14 | 14 |
\item{lt}{A list of vectors.} |
15 |
+ \item{universal_set}{The universal set.} |
|
15 | 16 |
|
16 | 17 |
} |
17 | 18 |
\details{ |
18 | 19 |
It converts the list which have m sets to a binary matrix with n rows and m columns |
19 |
-where n is the number of union of all sets in the list. |
|
20 |
+where n is the size of universal set. |
|
20 | 21 |
} |
21 | 22 |
\examples{ |
22 | 23 |
set.seed(123) |
23 |
-lt = list(a = sample(letters, 10), |
|
24 |
- b = sample(letters, 15), |
|
25 |
- c = sample(letters, 20)) |
|
24 |
+lt = list(a = sample(letters, 5), |
|
25 |
+ b = sample(letters, 10), |
|
26 |
+ c = sample(letters, 15)) |
|
26 | 27 |
list_to_matrix(lt) |
28 |
+list_to_matrix(lt, universal_set = letters) |
|
27 | 29 |
} |
... | ... |
@@ -8,7 +8,7 @@ Make a Combination Matrix for UpSet Plot |
8 | 8 |
} |
9 | 9 |
\usage{ |
10 | 10 |
make_comb_mat(..., mode = c("distinct", "intersect", "union"), |
11 |
- top_n_sets = Inf, min_set_size = -Inf, complement_size = NULL, value_fun) |
|
11 |
+ top_n_sets = Inf, min_set_size = -Inf, universal_set = NULL, complement_size = NULL, value_fun) |
|
12 | 12 |
} |
13 | 13 |
\arguments{ |
14 | 14 |
|
... | ... |
@@ -16,6 +16,7 @@ make_comb_mat(..., mode = c("distinct", "intersect", "union"), |
16 | 16 |
\item{mode}{The mode for forming the combination set, see Mode section.} |
17 | 17 |
\item{top_n_sets}{Number of sets with largest size.} |
18 | 18 |
\item{min_set_size}{Ths minimal set size that is used for generating the combination matrix.} |
19 |
+ \item{universal_set}{The universal set. If it is set, the size of the complement set of all sets is also calculated. It if is specified, \code{complement_size} is ignored.} |
|
19 | 20 |
\item{complement_size}{The size for the complement of all sets. If it is specified, the combination set name will be like "00...".} |
20 | 21 |
\item{value_fun}{For each combination set, how to calculate the size? If it is a scalar set, the length of the vector is the size of the set, while if it is a region-based set, (i.e. \code{GRanges} or \code{IRanges} object), the sum of widths of regions in the set is calculated as the size of the set.} |
21 | 22 |
|
... | ... |
@@ -54,10 +54,10 @@ test_that("test default make_comb_mat", { |
54 | 54 |
test_that("test default make_comb_mat with universal_set", { |
55 | 55 |
m = make_comb_mat(lt, universal_set = letters) |
56 | 56 |
|
57 |
- expect_that(length(comb_size(m)), is_identical_to(8)) |
|
57 |
+ expect_that(length(comb_size(m)), equals(8)) |
|
58 | 58 |
expect_that("000" %in% comb_name(m), is_identical_to(TRUE)) |
59 | 59 |
expect_that(0 %in% comb_degree(m), is_identical_to(TRUE)) |
60 |
- |
|
60 |
+ expect_that(sort(extract_comb(m, "000")), is_identical_to(sort(setdiff(letters, unlist(lt))))) |
|
61 | 61 |
}) |
62 | 62 |
|
63 | 63 |
|
... | ... |
@@ -65,8 +65,43 @@ test_that("test default make_comb_mat with universal_set which is smaller than t |
65 | 65 |
m = make_comb_mat(lt, universal_set = letters[1:10]) |
66 | 66 |
|
67 | 67 |
expect_that("000" %in% comb_name(m), is_identical_to(TRUE)) |
68 |
- expect_that(0 %in% comb_degree(m), is_identical_to(TRUE)) |
|
69 |
- |
|
68 |
+ expect_that(sort(extract_comb(m, "000")), is_identical_to(sort(setdiff(letters[1:10], unlist(lt))))) |
|
70 | 69 |
}) |
71 | 70 |
|
72 |
-# test GRanges |
|
73 | 71 |
\ No newline at end of file |
72 |
+# test GRanges |
|
73 |
+library(GenomicRanges) |
|
74 |
+ |
|
75 |
+# 1 0 0 0 0 |
|
76 |
+# ++++++++++++++++++++++++++++++++++++++++ |
|
77 |
+# ------- --------- --------- |
|
78 |
+# ------ ------ ------ ---- |
|
79 |
+# ----- ----- ---------- |
|
80 |
+# ++++++ +++++++ +++++++ |
|
81 |
+ |
|
82 |
+gr1 = GRanges(seqnames = "chr1", |
|
83 |
+ ranges = IRanges(start = c(4, 17, 31), end = c(10, 25, 39))) |
|
84 |
+gr2 = GRanges(seqnames = "chr1", |
|
85 |
+ ranges = IRanges(start = c(2, 13, 23, 35), end = c(7, 18, 28, 38))) |
|
86 |
+gr3 = GRanges(seqnames = "chr1", |
|
87 |
+ ranges = IRanges(start = c(5, 15, 27), end = c(9, 19, 36))) |
|
88 |
+universal = GRanges(seqnames = "chr1", |
|
89 |
+ ranges = IRanges(start = 1, end = 40)) |
|
90 |
+bg = GRanges(seqnames = "chr1", |
|
91 |
+ ranges = IRanges(start = c(6, 16, 28), end = c(11, 22, 34))) |
|
92 |
+ |
|
93 |
+lt = list(gr1 = gr1, gr2 = gr2, gr3 = gr3) |
|
94 |
+ |
|
95 |
+test_that("test default make_comb_mat with GRanges", { |
|
96 |
+ m = make_comb_mat(lt) |
|
97 |
+ |
|
98 |
+ expect_that(unname(set_size(m)), equals(c(sum(GenomicRanges::width(gr1)), sum(GenomicRanges::width(gr2)), sum(GenomicRanges::width(gr3))))) |
|
99 |
+ expect_that(comb_size(m)[["111"]], equals(sum(GenomicRanges::width( GenomicRanges::intersect(GenomicRanges::intersect(gr1, gr2), gr3) )))) |
|
100 |
+ |
|
101 |
+ m = make_comb_mat(lt, universal_set = universal) |
|
102 |
+ expect_that(length(comb_size(m)), equals(8)) |
|
103 |
+ expect_that(comb_size(m)[["000"]], equals(sum(GenomicRanges::width( GenomicRanges::setdiff(universal, GenomicRanges::union(GenomicRanges::union(gr1, gr2), gr3)))))) |
|
104 |
+ |
|
105 |
+ m = make_comb_mat(lt, universal_set = bg) |
|
106 |
+ expect_that(length(comb_size(m)), equals(8)) |
|
107 |
+ expect_that(comb_size(m)[["000"]], equals(sum(GenomicRanges::width( GenomicRanges::setdiff(bg, GenomicRanges::union(GenomicRanges::union(gr1, gr2), gr3)))))) |
|
108 |
+}) |