Browse code

documentation checked

Zuguang Gu authored on 23/10/2018 19:59:12
Showing 158 changed files

... ...
@@ -2,7 +2,7 @@ Package: ComplexHeatmap
2 2
 Type: Package
3 3
 Title: Make Complex Heatmaps
4 4
 Version: 1.99.0
5
-Date: 2018-6-9
5
+Date: 2018-10-23
6 6
 Author: Zuguang Gu
7 7
 Maintainer: Zuguang Gu <z.gu@dkfz.de>
8 8
 Depends: R (>= 3.1.2), methods, grid, graphics, stats, grDevices
... ...
@@ -17,5 +17,5 @@ Description: Complex heatmaps are efficient to visualize associations
17 17
     Here the ComplexHeatmap package provides a highly flexible way to arrange 
18 18
     multiple heatmaps and supports various annotation graphics.
19 19
 biocViews: Software, Visualization, Sequencing
20
-URL: https://github.com/jokergoo/ComplexHeatmap
20
+URL: https://github.com/jokergoo/ComplexHeatmap, https://jokergoo.github.io/ComplexHeatmap-reference/book/
21 21
 License: MIT + file LICENSE
... ...
@@ -18,8 +18,12 @@ S3method("grid.draw", "Legends")
18 18
 export("grid.draw.Legends")
19 19
 S3method("height", "AnnotationFunction")
20 20
 export("height.AnnotationFunction")
21
+S3method("height", "Heatmap")
22
+export("height.Heatmap")
21 23
 S3method("height", "HeatmapAnnotation")
22 24
 export("height.HeatmapAnnotation")
25
+S3method("height", "HeatmapList")
26
+export("height.HeatmapList")
23 27
 S3method("height", "Legends")
24 28
 export("height.Legends")
25 29
 S3method("height", "SingleAnnotation")
... ...
@@ -72,10 +76,16 @@ S3method("size<-", "SingleAnnotation")
72 76
 export("size<-.SingleAnnotation")
73 77
 S3method("summary", "Heatmap")
74 78
 export("summary.Heatmap")
79
+S3method("summary", "HeatmapList")
80
+export("summary.HeatmapList")
75 81
 S3method("width", "AnnotationFunction")
76 82
 export("width.AnnotationFunction")
83
+S3method("width", "Heatmap")
84
+export("width.Heatmap")
77 85
 S3method("width", "HeatmapAnnotation")
78 86
 export("width.HeatmapAnnotation")
87
+S3method("width", "HeatmapList")
88
+export("width.HeatmapList")
79 89
 S3method("width", "Legends")
80 90
 export("width.Legends")
81 91
 S3method("width", "SingleAnnotation")
... ...
@@ -125,7 +135,6 @@ export("anno_text")
125 135
 export("annotation_axis_grob")
126 136
 export("cluster_within_group")
127 137
 export("columnAnnotation")
128
-export("convertXY_in_vp")
129 138
 export("decorate_annotation")
130 139
 export("decorate_column_dend")
131 140
 export("decorate_column_names")
... ...
@@ -143,6 +152,7 @@ export("dend_xy")
143 152
 export("dendrogramGrob")
144 153
 export("densityHeatmap")
145 154
 export("dist2")
155
+export("getXY_in_parent_vp")
146 156
 export("grid.boxplot")
147 157
 export("grid.dendrogram")
148 158
 export("ht_global_opt")
... ...
@@ -387,8 +387,8 @@ size.HeatmapAnnotation = function(x, ...) {
387 387
 # The returned unit x is always in ``mm``.
388 388
 #
389 389
 # == example
390
-# lgd = Legend(labels = 1:10, title = "foo", gp = gpar(fill = "red"))
391
-# width(lgd)
390
+# lgd = Legend(labels = 1:10, title = "foo", legend_gp = gpar(fill = "red"))
391
+# ComplexHeatmap:::width(lgd)
392 392
 #
393 393
 width.Legends = function(x, ...) {
394 394
 	s = attr(x@grob, "width")
... ...
@@ -407,8 +407,8 @@ width.Legends = function(x, ...) {
407 407
 # The returned unit x is always in ``mm``.
408 408
 #
409 409
 # == example
410
-# lgd = Legend(labels = 1:10, title = "foo", gp = gpar(fill = "red"))
411
-# height(lgd)
410
+# lgd = Legend(labels = 1:10, title = "foo", legend_gp = gpar(fill = "red"))
411
+# ComplexHeatmap:::height(lgd)
412 412
 #
413 413
 height.Legends = function(x, ...) {
414 414
 	s = attr(x@grob, "height")
... ...
@@ -424,7 +424,7 @@ height.Legends = function(x, ...) {
424 424
 # -... Other arguments.
425 425
 #
426 426
 width.HeatmapList = function(x, ...) {
427
-    if(object@layout$initialized) {
427
+    if(x@layout$initialized) {
428 428
         x@ht_list_param$width
429 429
     } else {
430 430
         stop_wrap("width() can only be applied to the heatmap list object returned by draw().")
... ...
@@ -440,7 +440,7 @@ width.HeatmapList = function(x, ...) {
440 440
 # -... Other arguments.
441 441
 #
442 442
 height.HeatmapList = function(x, ...) {
443
-    if(object@layout$initialized) {
443
+    if(x@layout$initialized) {
444 444
         x@ht_list_param$height
445 445
     } else {
446 446
         stop_wrap("height() can only be applied to the heatmap list object returned by draw().")
... ...
@@ -5,7 +5,7 @@
5 5
 # == detail 
6 6
 # This class is a super class for `Heatmap-class`, `HeatmapList-class` and
7 7
 # `HeatmapAnnotation-class` classes. It is only designed for ``+`` generic
8
-# method and the `\%v\%v` method so that above three classes can be appended to each other.
8
+# method and the ``\%v\%v`` method so that above three classes can be appended to each other.
9 9
 #
10 10
 AdditiveUnit = setClass("AdditiveUnit")
11 11
 
... ...
@@ -3,23 +3,20 @@
3 3
 # class for single heatmap
4 4
 #
5 5
 
6
-
7
-# the layout of the heatmap is 7 x 9
8
-
9 6
 # == title
10
-# Class for a single heatmap
7
+# Class for a Single Heatmap
11 8
 #
12 9
 # == details
13 10
 # The `Heatmap-class` is not responsible for heatmap legend and annotation legends. The `draw,Heatmap-method` method
14
-# will construct a `HeatmapList-class` object which only contains one single heatmap
15
-# and call `draw,HeatmapList-method` to make a complete heatmap.
11
+# constructs a `HeatmapList-class` object which only contains one single heatmap
12
+# and call `draw,HeatmapList-method` to make the complete heatmap.
16 13
 #
17 14
 # == methods
18 15
 # The `Heatmap-class` provides following methods:
19 16
 #
20 17
 # - `Heatmap`: constructor method.
21 18
 # - `draw,Heatmap-method`: draw a single heatmap.
22
-# - `add_heatmap,Heatmap-method` append heatmaps and row annotations to a list of heatmaps.
19
+# - `add_heatmap,Heatmap-method` append heatmaps and annotations to a list of heatmaps.
23 20
 # - `row_order,HeatmapList-method`: get order of rows
24 21
 # - `column_order,HeatmapList-method`: get order of columns
25 22
 # - `row_dend,HeatmapList-method`: get row dendrograms
... ...
@@ -79,115 +76,114 @@ Heatmap = setClass("Heatmap",
79 76
 # Constructor method for Heatmap class
80 77
 #
81 78
 # == param
82
-# -matrix a matrix. Either numeric or character. If it is a simple vector, it will be
79
+# -matrix A matrix. Either numeric or character. If it is a simple vector, it will be
83 80
 #         converted to a one-column matrix.
84
-# -col a vector of colors if the color mapping is discrete or a color mapping 
85
-#      function if the matrix is continuous numbers (should be generated by `circlize::colorRamp2`. If the matrix is continuous,
86
-#      the value can also be a vector of colors so that colors will be interpolated. Pass to `ColorMapping`.
87
-# -name name of the heatmap. The name is used as the title of the heatmap legend.
88
-# -na_col color for ``NA`` values.
89
-# -rect_gp graphic parameters for drawing rectangles (for heatmap body).
90
-# -color_space the color space in which colors are interpolated. Only used if ``matrix`` is numeric and 
81
+# -col A vector of colors if the color mapping is discrete or a color mapping 
82
+#      function if the matrix is continuous numbers (should be generated by `circlize::colorRamp2`). If the matrix is continuous,
83
+#      the value can also be a vector of colors so that colors can be interpolated. Pass to `ColorMapping`. For more details
84
+#      and examples, please refer to https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#colors .
85
+# -name Name of the heatmap. By default the heatmap name is used as the title of the heatmap legend.
86
+# -na_col Color for ``NA`` values.
87
+# -rect_gp Graphic parameters for drawing rectangles (for heatmap body). The value should be specified by `grid::gpar` and ``fill`` parameter is ignored.
88
+# -color_space The color space in which colors are interpolated. Only used if ``matrix`` is numeric and 
91 89
 #            ``col`` is a vector of colors. Pass to `circlize::colorRamp2`.
92
-# -border whether draw border or the color of border.
93
-# -cell_fun self-defined function to add graphics on each cell. Seven parameters will be passed into 
94
-#           this function: ``i``, ``j``, ``x``, ``y``, ``width``, ``height``, ``fill`` which are row index,
95
-#           column index in ``matrix``, coordinate of the middle points in the heatmap body viewport,
90
+# -border Whether draw border. The value can be logical or a string of color.
91
+# -cell_fun Self-defined function to add graphics on each cell. Seven parameters will be passed into 
92
+#           this function: ``j``, ``i``, ``x``, ``y``, ``width``, ``height``, ``fill`` which are column index,
93
+#           row index in ``matrix``, coordinate of the cell,
96 94
 #           the width and height of the cell and the filled color. ``x``, ``y``, ``width`` and ``height`` are all `grid::unit` objects.
97
-# -layer_fun similar as ``cell_fun``, but is vectorized. 
98
-# -row_title title on row.
99
-# -row_title_side will the title be put on the left or right of the heatmap?
100
-# -row_title_gp graphic parameters for drawing text.
101
-# -row_title_rot rotation of row titles. Only 0, 90, 270 are allowed to set.
102
-# -column_title title on column.
103
-# -column_title_side will the title be put on the top or bottom of the heatmap?
104
-# -column_title_gp graphic parameters for drawing text.
105
-# -column_title_rot rotation of column titles. Only 0, 90, 270 are allowed to set.
106
-# -cluster_rows If the value is a logical, it means whether make cluster on rows. The value can also
107
-#               be a `stats::hclust` or a `stats::dendrogram` that already contains clustering information.
108
-#               This means you can use any type of clustering methods and render the `stats::dendrogram`
109
-#               object with self-defined graphic settings.
110
-# -clustering_distance_rows it can be a pre-defined character which is in 
95
+# -layer_fun Similar as ``cell_fun``, but is vectorized. Check https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#customize-the-heatmap-body .
96
+# -row_title Title on the row.
97
+# -row_title_side Will the title be put on the left or right of the heatmap?
98
+# -row_title_gp Graphic parameters for row title.
99
+# -row_title_rot Rotation of row title. Only 0, 90, 270 are allowed to set.
100
+# -column_title Title on the column.
101
+# -column_title_side Will the title be put on the top or bottom of the heatmap?
102
+# -column_title_gp Graphic parameters for column title.
103
+# -column_title_rot Rotation of column titles. Only 0, 90, 270 are allowed to set.
104
+# -cluster_rows If the value is a logical, it controls whether to make cluster on rows. The value can also
105
+#               be a `stats::hclust` or a `stats::dendrogram` which already contains clustering.
106
+#               Check https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#clustering .
107
+# -clustering_distance_rows It can be a pre-defined character which is in 
111 108
 #                ("euclidean", "maximum", "manhattan", "canberra", "binary", 
112 109
 #                "minkowski", "pearson", "spearman", "kendall"). It can also be a function.
113 110
 #                If the function has one argument, the input argument should be a matrix and 
114 111
 #                the returned value should be a `stats::dist` object. If the function has two arguments,
115 112
 #                the input arguments are two vectors and the function calculates distance between these
116 113
 #                two vectors.
117
-# -clustering_method_rows method to make cluster, pass to `stats::hclust`.
118
-# -row_dend_side should the row cluster be put on the left or right of the heatmap?
119
-# -row_dend_width width of the row cluster, should be a `grid::unit` object.
120
-# -show_row_dend whether show row clusters. 
121
-# -row_dend_gp graphics parameters for drawing lines. If users already provide a `stats::dendrogram`
114
+# -clustering_method_rows Method to perform hierarchical clustering, pass to `stats::hclust`.
115
+# -row_dend_side Should the row dendrogram be put on the left or right of the heatmap?
116
+# -row_dend_width Width of the row dendrogram, should be a `grid::unit` object.
117
+# -show_row_dend Whether show row dendrogram?
118
+# -row_dend_gp Graphic parameters for the dendrogram segments. If users already provide a `stats::dendrogram`
122 119
 #                object with edges rendered, this argument will be ignored.
123
-# -row_dend_reorder apply reordering on rows. The value can be a logical value or a vector which contains weight 
124
-#               which is used to reorder rows
125
-# -cluster_columns whether make cluster on columns. Same settings as ``cluster_rows``.
126
-# -clustering_distance_columns same setting as ``clustering_distance_rows``.
127
-# -clustering_method_columns method to make cluster, pass to `stats::hclust`.
128
-# -column_dend_side should the column cluster be put on the top or bottom of the heatmap?
120
+# -row_dend_reorder Apply reordering on row dendrograms. The value can be a logical value or a vector which contains weight 
121
+#               which is used to reorder rows. The reordering is applied by `stats::reorder.dendrogram`.
122
+# -cluster_columns Whether make cluster on columns? Same settings as ``cluster_rows``.
123
+# -clustering_distance_columns Same setting as ``clustering_distance_rows``.
124
+# -clustering_method_columns Method to perform hierarchical clustering, pass to `stats::hclust`.
125
+# -column_dend_side Should the column dendrogram be put on the top or bottom of the heatmap?
129 126
 # -column_dend_height height of the column cluster, should be a `grid::unit` object.
130
-# -show_column_dend whether show column clusters.
131
-# -column_dend_gp graphic parameters for drawling lines. Same settings as ``row_dend_gp``.
132
-# -column_dend_reorder apply reordering on columns. The value can be a logical value or a vector which contains weight 
133
-#               which is used to reorder columns
134
-# -row_order order of rows. It makes it easy to adjust row order for a list of heatmaps if this heatmap 
135
-#      is selected as the main heatmap. Manually setting row order should turn off clustering
136
-# -column_order order of column. It makes it easy to adjust column order for both matrix and column annotations.
137
-# -row_labels row labels
138
-# -row_names_side should the row names be put on the left or right of the heatmap?
139
-# -show_row_names whether show row names.
140
-# -row_names_max_width maximum width of row names viewport. Because some times row names can be very long, it is not reasonable
141
-#                      to show them all.
142
-# -row_names_gp graphic parameters for drawing text.
143
-# -row_names_rot rotation of row labels
144
-# -column_labels column labels
145
-# -column_names_side should the column names be put on the top or bottom of the heatmap?
146
-# -column_names_max_height maximum height of column names viewport.
147
-# -show_column_names whether show column names.
148
-# -column_names_gp graphic parameters for drawing text.
149
-# -column_names_rot rotation of column labels
150
-# -top_annotation a `HeatmapAnnotation` object which contains a list of annotations.
151
-# -bottom_annotation a `HeatmapAnnotation` object.
152
-# -left_annotation should specified in `rowAnnotation`
153
-# -right_annotation should shpecified in `rowAnnotation`
154
-# -km do k-means clustering on rows. If the value is larger than 1, the heatmap will be split by rows according to the k-means clustering.
155
-#     For each row-clusters, hierarchical clustering is still applied with parameters above.
156
-# -split a vector or a data frame by which the rows are split. But if ``cluster_rows`` is a clustering object, ``split`` can be a single number
157
-#        indicating rows are to be split according to the split on the tree.
158
-# -row_km row km
159
-# -row_split row split
160
-# -column_km column km
161
-# -column_split column split
162
-# -gap gap between row-slices if the heatmap is split by rows, should be `grid::unit` object. If it is a vector, the order corresponds
163
-#   to top to bottom in the heatmap
164
-# -row_gap row gap
165
-# -column_gap column gap
166
-# -width width of the heatmap body
167
-# -height height of the heatmap body
168
-# -heatmap_width width of the whole heatmap (including heatmap components)
169
-# -heatmap_height height of the whole heatmap (including heatmap components)
170
-# -show_heatmap_legend whether show heatmap legend?
171
-# -heatmap_legend_param a list contains parameters for the heatmap legend. See `color_mapping_legend,ColorMapping-method` for all available parameters.
172
-# -use_raster whether render the heatmap body as a raster image. It helps to reduce file size when the matrix is huge. Note if ``cell_fun``
127
+# -show_column_dend Whether show column dendrogram?
128
+# -column_dend_gp Graphic parameters for dendrogram segments. Same settings as ``row_dend_gp``.
129
+# -column_dend_reorder Apply reordering on column dendrograms. Same settings as ``row_dend_reorder``.
130
+# -row_order Order of rows. Manually setting row order turns off clustering.
131
+# -column_order Order of column.
132
+# -row_labels Optional row labels which are put as row names in the heatmap.
133
+# -row_names_side Should the row names be put on the left or right of the heatmap?
134
+# -show_row_names Whether show row names.
135
+# -row_names_max_width Maximum width of row names viewport.
136
+# -row_names_gp Graphic parameters for row names.
137
+# -row_names_rot Rotation of row names.
138
+# -column_labels Optional column labels which are put as column names in the heatmap.
139
+# -column_names_side Should the column names be put on the top or bottom of the heatmap?
140
+# -column_names_max_height Maximum height of column names viewport.
141
+# -show_column_names Whether show column names.
142
+# -column_names_gp Graphic parameters for drawing text.
143
+# -column_names_rot Rotation of column names.
144
+# -top_annotation A `HeatmapAnnotation` object.
145
+# -bottom_annotation A `HeatmapAnnotation` object.
146
+# -left_annotation It should be specified by `rowAnnotation`.
147
+# -right_annotation it should be specified by `rowAnnotation`.
148
+# -km Apply k-means clustering on rows. If the value is larger than 1, the heatmap will be split by rows according to the k-means clustering.
149
+#     For each row slice, hierarchical clustering is still applied with parameters above.
150
+# -split A vector or a data frame by which the rows are split. But if ``cluster_rows`` is a clustering object, ``split`` can be a single number
151
+#        indicating to split the dendrogram by `stats::cutree`.
152
+# -row_km Same as ``km``.
153
+# -row_split Same as ``split``.
154
+# -column_km K-means clustering on columns.
155
+# -column_split Split on columns. For heatmap splitting, please refer to https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#heatmap-split .
156
+# -gap Gap between row slices if the heatmap is split by rows. The value should be a `grid::unit` object.
157
+# -row_gap Same as ``gap``.
158
+# -column_gap Gap between column slices.
159
+# -width Width of the heatmap body.
160
+# -height Height of the heatmap body.
161
+# -heatmap_width Width of the whole heatmap (including heatmap components)
162
+# -heatmap_height Height of the whole heatmap (including heatmap components). Check https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#size-of-the-heatmap .
163
+# -show_heatmap_legend Whether show heatmap legend?
164
+# -heatmap_legend_param A list contains parameters for the heatmap legends. See `color_mapping_legend,ColorMapping-method` for all available parameters.
165
+# -use_raster Whether render the heatmap body as a raster image. It helps to reduce file size when the matrix is huge. Note if ``cell_fun``
173 166
 #       is set, ``use_raster`` is enforced to be ``FALSE``.
174
-# -raster_device graphic device which is used to generate the raster image
175
-# -raster_quality a value set to larger than 1 will improve the quality of the raster image.
176
-# -raster_device_param a list of further parameters for the selected graphic device
177
-# -post_fun a function which will be executed after the plot is drawn.
167
+# -raster_device Graphic device which is used to generate the raster image.
168
+# -raster_quality A value set to larger than 1 will improve the quality of the raster image.
169
+# -raster_device_param A list of further parameters for the selected graphic device. For raster image support, please check https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html#heatmap-as-raster-image .
170
+# -post_fun A function which will be executed after the heatmap list is drawn.
178 171
 #
179 172
 # == details
180
-# The initialization function only applies parameter checking and fill values to the slots with proper values.
173
+# The initialization function only applies parameter checking and fill values to the slots with some validation.
181 174
 # 
182
-# Following methods can be applied on the `Heatmap-class` object:
175
+# Following methods can be applied to the `Heatmap-class` object:
183 176
 #
184 177
 # - `show,Heatmap-method`: draw a single heatmap with default parameters
185 178
 # - `draw,Heatmap-method`: draw a single heatmap.
186
-# - ``+`` or `\%v\%` append heatmaps and row annotations to a list of heatmaps.
179
+# - ``+`` or `\%v\%` append heatmaps and annotations to a list of heatmaps.
187 180
 #
188 181
 # The constructor function pretends to be a high-level graphic function because the ``show`` method
189 182
 # of the `Heatmap-class` object actually plots the graphics.
190 183
 #
184
+# == seealso
185
+# https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html
186
+#
191 187
 # == value
192 188
 # A `Heatmap-class` object.
193 189
 #
... ...
@@ -3,15 +3,15 @@
3 3
 # Class for Heatmap Annotations
4 4
 #
5 5
 # == details
6
-# A complex heatmap contains a list of annotations which are represented as different graphics
6
+# A complex heatmap contains a list of annotations which are represented as graphics
7 7
 # placed on rows and columns. The `HeatmapAnnotation-class` contains a list of single annotations which are
8
-# represented as a list of `SingleAnnotation-class` objects with same number of rows or columns.
8
+# represented as a list of `SingleAnnotation-class` objects.
9 9
 #
10 10
 # == methods
11 11
 # The `HeatmapAnnotation-class` provides following methods:
12 12
 #
13
-# - `HeatmapAnnotation`: constructor method
14
-# - `draw,HeatmapAnnotation-method`: draw the annotations
13
+# - `HeatmapAnnotation`: constructor method.
14
+# - `draw,HeatmapAnnotation-method`: draw the annotations.
15 15
 #
16 16
 # == author
17 17
 # Zuguang Gu <z.gu@dkfz.de>
... ...
@@ -39,47 +39,53 @@ HeatmapAnnotation = setClass("HeatmapAnnotation",
39 39
 )
40 40
 
41 41
 # == title
42
-# Constructor method for HeatmapAnnotation class
42
+# Constructor Method for HeatmapAnnotation class
43 43
 #
44 44
 # == param
45 45
 # -... Name-value pairs where the names correspond to annotation names and values can be a vector, a matrix and an
46 46
 #      annotation function. Each pair is sent to `SingleAnnotation` to contruct a single annotation.
47 47
 # -df A data frame. Each column will be treated as a simple annotation. The data frame must have column names.
48 48
 # -name Name of the heatmap annotation, optional.
49
-# -col A list of colors which contain color mapping to columns in ``df`` and simple annotations define din ``...``. 
49
+# -col A list of colors which contain color mapping to ``df`` or simple annotations defined in ``...``. 
50 50
 #      See `SingleAnnotation` for how to set colors.
51 51
 # -na_col Color for ``NA`` values in simple annotations.
52 52
 # -annotation_legend_param A list which contains parameters for annotation legends. See `color_mapping_legend,ColorMapping-method` for all possible options.
53
-# -show_legend Whether show annotation legend. The value can be one single value or a vector which corresponds to the simple annotations.
54
-# -which Are the annotations row annotations or column annotations?
53
+# -show_legend Whether show annotation legends. The value can be one single value or a vector which corresponds to simple annotations.
54
+# -which Are these row annotations or column annotations?
55 55
 # -gp Graphic parameters for simple annotations (with ``fill`` parameter ignored).
56 56
 # -border border of single annotations.
57
-# -gap Gap between each two annotation. It can be a single value or a vector of `grid::unit` objects.
57
+# -gap Gap between annotations. It can be a single value or a vector of `grid::unit` objects.
58 58
 # -show_annotation_name Whether show annotation names? For column annotation, annotation names are drawn either on the left
59
-#   or the right, and for row annotations, names are draw either on top to at bottom. The value can be a vector.
59
+#   or the right, and for row annotations, names are draw either on top or at the bottom. The value can be a vector.
60 60
 # -annotation_name_gp Graphic parameters for anntation names. Graphic paramters can be vectors.
61 61
 # -annotation_name_offset Offset to the annotations, `grid::unit` object. The value can be a vector.
62 62
 # -annotation_name_side Side of the annotation names.
63
-# -annotation_name_rot Rotation of the annotation names, can only take values in ``c(00, 90, 180, 270)``. The value can be a vector.
63
+# -annotation_name_rot Rotation of the annotation names, it can only take values in ``c(00, 90, 180, 270)``. The value can be a vector.
64 64
 # -annotation_height Height of each annotation if annotations are column annotations.
65 65
 # -annotation_width Width of each annotation if annotations are row annotations.
66
-# -height Height of the complete column annotations.
67
-# -width Width of the complete heatmap annotations.
68
-# -anno_simple_size size of the simple annotation.
69
-# -simple_anno_size_adjust whether also adjust the size of simple annotations when adjust the whole heatmap annotation.
66
+# -height Height of the whole column annotations.
67
+# -width Width of the whole heatmap annotations.
68
+# -anno_simple_size Size of the simple annotation.
69
+# -simple_anno_size_adjust Whether also adjust the size of simple annotations when adjusting the whole heatmap annotation.
70 70
 #
71 71
 # == details
72
+# For arguments ``border``, ``annotation_name_offset``, ``annotation_name_side``, ``annotation_name_rot``,
73
+# ``show_annotation_name``, they can be set as named vectors to modify values for some of the annotations,
74
+# e.g. assuming you have an annotation with name ``foo``, you can specify ``border = c(foo = TRUE)`` in `HeatmapAnnotation`.
75
+# 
72 76
 # There are three ways to specify heatmap annotations:
73 77
 #
74
-# 1. If the annotation is simply a vector or a matrix, it can be specified as ``HeatmapAnnotation(foo = 1:10)``.
75
-# 2. If the annotations are already stored as a data frame, it can be specified as ``HeatmapAnnotation(df = df)``.
76
-# 3. For complex annotation, users can use the pre-defined annotation functions such as `anno_points`: ``HeatmapAnnotation(foo = anno_points(1:10))``.
78
+# 1. If the annotation is simply a vector or a matrix, it can be specified like ``HeatmapAnnotation(foo = 1:10)``.
79
+# 2. If the annotations are already stored as a data frame, it can be specified like ``HeatmapAnnotation(df = df)``.
80
+# 3. For complex annotations, users can use the pre-defined annotation functions such as `anno_points`: ``HeatmapAnnotation(foo = anno_points(1:10))``.
81
+#
82
+# For more details and examples, please check https://jokergoo.github.io/ComplexHeatmap-reference/book/heatmap-annotations.html.
77 83
 #
78 84
 # == value
79 85
 # A `HeatmapAnnotation-class` object.
80 86
 #
81 87
 # == seealso
82
-# There are two shortcut functions: `rowAnnotation` and `columnAnnotation`.
88
+# There are two helper functions: `rowAnnotation` and `columnAnnotation`.
83 89
 #
84 90
 # == author
85 91
 # Zuguang Gu <z.gu@dkfz.de>
... ...
@@ -427,7 +433,7 @@ HeatmapAnnotation = function(...,
427 433
 # Construct Row Annotations
428 434
 #
429 435
 # == param
430
-# -... Pass to `HeatmapAnnotation`
436
+# -... Pass to `HeatmapAnnotation`.
431 437
 #
432 438
 # == details
433 439
 # The function is identical to 
... ...
@@ -448,7 +454,7 @@ rowAnnotation = function(...) {
448 454
 # Construct Column Annotations
449 455
 #
450 456
 # == param
451
-# -... Pass to `HeatmapAnnotation`
457
+# -... Pass to `HeatmapAnnotation`.
452 458
 #
453 459
 # == details
454 460
 # The function is identical to
... ...
@@ -721,6 +727,10 @@ setMethod(f = "show",
721 727
 # -object The `HeatmapAnnotation-class` object.
722 728
 # -... other arguments.
723 729
 #
730
+# == value
731
+# If there is no ``nobs`` information for any of its `SingleAnnotation-class` object,
732
+# it returns ``NA``.
733
+#
724 734
 nobs.HeatmapAnnotation = function(object, ...) {
725 735
 	n_anno = length(object@anno_list)
726 736
 	len = sapply(seq_len(n_anno), function(i) {
... ...
@@ -740,12 +750,12 @@ nobs.HeatmapAnnotation = function(object, ...) {
740 750
 }
741 751
 
742 752
 # == title
743
-# Add row annotations or heatmaps as a heatmap list
753
+# Add Annotations or Heatmaps as a Heatmap List
744 754
 #
745 755
 # == param
746 756
 # -object A `HeatmapAnnotation-class` object.
747 757
 # -x A `Heatmap-class` object, a `HeatmapAnnotation-class` object or a `HeatmapList-class` object.
748
-# -direction Whether it is a horizontal add or a vertical add?
758
+# -direction Whether it is horizontal list or a vertical list?
749 759
 #
750 760
 # == details
751 761
 # Normally we directly use ``+`` for horizontal concatenation and `\%v\%` for vertical concatenation.
... ...
@@ -776,10 +786,10 @@ setMethod(f = "add_heatmap",
776 786
 #
777 787
 # == param
778 788
 # -... `HeatmapAnnotation-class` objects.
779
-# -gap gap between the annotations.
789
+# -gap Gap between the groups of annotations.
780 790
 #
781 791
 # == details
782
-# The heatmap annotations should be same number of observations.
792
+# The heatmap annotations should have same number of observations.
783 793
 # 
784 794
 # == example
785 795
 # ha1 = HeatmapAnnotation(foo = 1:10)
... ...
@@ -977,14 +987,15 @@ length.HeatmapAnnotation = function(x) {
977 987
 # == details
978 988
 # The function only adjust height for column annotations and width for row annotations.
979 989
 #
980
-# the basic rule is:
981
-# 1. if ``annotation_height`` is set, it needs to be a vector and ``height`` is disabled. If all
990
+# The basic rules are (take ``height`` and ``annotation_height`` for example:
991
+#
992
+# 1. If ``annotation_height`` is set and all
982 993
 #    ``annotation_height`` are absolute units, ``height`` is ignored.
983
-# 2. if ``annotation_height`` contains non-absolute units, ``height`` also need to be set and the
984
-#    non-absolute unit should be set in a simple form such as 1:10 or ``unit(1, "null")``.
994
+# 2. If ``annotation_height`` contains non-absolute units, ``height`` also need to be set and the
995
+#    non-absolute units should be set in a simple form such as 1:10 or ``unit(1, "null")``.
985 996
 # 3. ``anno_simple_size`` is only used when ``annotation_height`` is NULL.
986
-# 4. if only ``height`` is set, non-simple annotation is adjusted while keep simple anntation unchanged.
987
-# 5. if only ``height`` is set and all annotations are simple annotations, all anntations are adjusted.
997
+# 4. If only ``height`` is set, non-simple annotation is adjusted while keeps simple anntation unchanged.
998
+# 5. If only ``height`` is set and all annotations are simple annotations, all anntations are adjusted,
988 999
 #      and ``anno_simple_size`` is disabled.
989 1000
 # 6. If ``simple_anno_size_adjust`` is ``FALSE``, the size of the simple annotations will not change.
990 1001
 #
... ...
@@ -245,6 +245,9 @@ setMethod(f = "add_heatmap",
245 245
 # then makes the plot by re-calling the graphic functions which are already recorded
246 246
 # in the layout.
247 247
 #
248
+# == seealso
249
+# https://jokergoo.github.io/ComplexHeatmap-reference/book/a-list-of-heatmaps.html
250
+#
248 251
 # == value
249 252
 # This function returns a `HeatmapList-class` object for which the layout has been created.
250 253
 #
... ...
@@ -569,8 +572,25 @@ setMethod(f = "show",
569 572
 # -j column indices
570 573
 #
571 574
 # == details
572
-# If the heatmap list is horizontal, ``i`` is the real row indices and ``j`` corresponds to heatmap names and single annotation names.
575
+# If the heatmap list is horizontal, ``i`` is the row indices and ``j`` corresponds to heatmap names and single annotation names.
576
+# and if the heatlist is vertical, ``i`` corresponds to heatmap/annotation names and ``j`` is the column indices.
577
+#
578
+# == example
579
+# ht_list = Heatmap(matrix(rnorm(100), 10), name = "rnorm") +
580
+#   rowAnnotation(foo = 1:10, bar = anno_points(10:1)) + 
581
+#   Heatmap(matrix(runif(100), 10), name = "runif")
582
+# summary(ht_list[1:5, ])
583
+# summary(ht_list[1:5, 1])
584
+# summary(ht_list[1:5, "rnorm"])
585
+# summary(ht_list[1:5, c("rnorm", "foo")])
573 586
 #
587
+# ht_list = Heatmap(matrix(rnorm(100), 10), name = "rnorm") \%v\%
588
+#   columnAnnotation(foo = 1:10, bar = anno_points(10:1)) \%v\%
589
+#   Heatmap(matrix(runif(100), 10), name = "runif")
590
+# summary(ht_list[, 1:5])
591
+# summary(ht_list[1, 1:5])
592
+# summary(ht_list["rnorm", 1:5])
593
+# summary(ht_list[c("rnorm", "foo"), 1:5])
574 594
 "[.HeatmapList" = function(x, i, j) {
575 595
 
576 596
     direction = x@direction
... ...
@@ -581,18 +601,19 @@ setMethod(f = "show",
581 601
         }
582 602
     }
583 603
 
584
-    if(length(x@ht_list) == 1) {
585
-        if(inherits(x@ht_list[[1]], "Heatmap")) {
586
-            if(direction == "horizontal") {
587
-                return(x@ht_list[[1]][i, j] + NULL)
604
+    if(direction == "horizontal") {
605
+        if(nargs() == 2) {
606
+            subset_heatmap_list_by_row(x, i, direction)
607
+        } else {
608
+            if(missing(i)) {
609
+                subset_heatmap_list_by_column(x, j, direction)
610
+            } else if(missing(j)) {
611
+                subset_heatmap_list_by_row(x, i, direction)
588 612
             } else {
589
-                return(x@ht_list[[1]][i, j] %v% NULL)
613
+                x = subset_heatmap_list_by_row(x, i, direction)
614
+                subset_heatmap_list_by_column(x, j, direction)
590 615
             }
591 616
         }
592
-    }
593
-
594
-    if(nargs() == 2) {
595
-        subset_heatmap_list_by_row(x, i, direction)
596 617
     } else {
597 618
         if(missing(i)) {
598 619
             subset_heatmap_list_by_column(x, j, direction)
... ...
@@ -617,24 +638,28 @@ subset_heatmap_list_by_row = function(ht_list, ind, direction) {
617 638
             }
618 639
         }
619 640
     } else {
641
+        # if it is vertical heatmap list, `ind` corresponds to heatmap names and annotation names
620 642
         if(is.numeric(ind)) {
621 643
             ht_list@ht_list = ht_list@ht_list[ind]
622 644
         } else {
623
-            ht_list = NULL
645
+            hl = list()
624 646
             # also check annotation names
647
+            if(!all(ind %in% names(ht_list))) {
648
+                stop_wrap("Cannot find all name indices in the heatmap list.")
649
+            }
625 650
             for(nm in names(ht_list@ht_list)) {
626 651
                 if(inherits(ht_list@ht_list[[nm]], "Heatmap")) {
627 652
                     if(nm %in% ind) {
628
-                        ht_list[[nm]] = ht_list@ht_list[[nm]]
653
+                        hl[[nm]] = ht_list@ht_list[[nm]]
629 654
                     }
630 655
                 } else {
631 656
                     anno_nm = names(ht_list@ht_list[[nm]]@anno_list)
632
-                    if(anno_nm %in% ind) {
633
-                        ht_list[[nm]] = ht_list@ht_list[[nm]][, intersect(ind, anno_nm)]
657
+                    if(any(anno_nm %in% ind)) {
658
+                        hl[[nm]] = ht_list@ht_list[[nm]][, intersect(ind, anno_nm)]
634 659
                     }
635 660
                 }
636 661
             }
637
-            ht_list@ht_list = ht_list
662
+            ht_list@ht_list = hl
638 663
         }
639 664
     }
640 665
     return(ht_list)
... ...
@@ -642,24 +667,28 @@ subset_heatmap_list_by_row = function(ht_list, ind, direction) {
642 667
 
643 668
 subset_heatmap_list_by_column = function(ht_list, ind, direction) {
644 669
     if(direction == "horizontal") {
670
+        # if it is horizontal heatmap list, `ind` corresponds to heatmap names and annotation names
645 671
         if(is.numeric(ind)) {
646 672
             ht_list@ht_list = ht_list@ht_list[ind]
647 673
         } else {
648
-            ht_list = NULL
674
+            hl = list()
649 675
             # also check annotation names
676
+            if(!all(ind %in% names(ht_list))) {
677
+                stop_wrap("Cannot find all name indices in the heatmap list.")
678
+            }
650 679
             for(nm in names(ht_list@ht_list)) {
651 680
                 if(inherits(ht_list@ht_list[[nm]], "Heatmap")) {
652 681
                     if(nm %in% ind) {
653
-                        ht_list[[nm]] = ht_list@ht_list[[nm]]
682
+                        hl[[nm]] = ht_list@ht_list[[nm]]
654 683
                     }
655 684
                 } else {
656 685
                     anno_nm = names(ht_list@ht_list[[nm]]@anno_list)
657
-                    if(anno_nm %in% ind) {
658
-                        ht_list[[nm]] = ht_list@ht_list[[nm]][, intersect(ind, anno_nm)]
686
+                    if(any(anno_nm %in% ind)) {
687
+                        hl[[nm]] = ht_list@ht_list[[nm]][, intersect(ind, anno_nm)]
659 688
                     }
660 689
                 }
661 690
             }
662
-            ht_list@ht_list = ht_list
691
+            ht_list@ht_list = hl
663 692
         }
664 693
     } else {
665 694
         for(i in seq_along(ht_list@ht_list)) {
... ...
@@ -700,3 +729,37 @@ names.HeatmapList = function(x) {
700 729
 length.HeatmapList = function(x) {
701 730
     length(x@ht_list)
702 731
 }
732
+
733
+
734
+# == title
735
+# Summary of a Heatmap List
736
+#
737
+# == param
738
+# -object A `HeatmapList-class` object.
739
+# -... Other arguments.
740
+#
741
+summary.HeatmapList = function(object, ...) {
742
+    n_ht = length(object@ht_list)
743
+
744
+    direction = object@direction
745
+
746
+    qqcat("A @{direction} heamtap list with @{n_ht} heatmap/annotations.\n")
747
+
748
+    ht_name = names(object@ht_list)
749
+    for(i in seq_len(n_ht)) {
750
+        if(inherits(object@ht_list[[i]], "Heatmap")) {
751
+            qqcat("  @{ht_name[i]}: a matrix with @{nrow(object@ht_list[[i]]@matrix)} rows and @{ncol(object@ht_list[[i]]@matrix)} columns\n")
752
+        } else {
753
+            qqcat("  @{ht_name[i]}: a list of @{length(object@ht_list[[i]]@anno_list)} annotations\n")
754
+            for(j in seq_along(object@ht_list[[i]]@anno_list)) {
755
+                qqcat("    @{object@ht_list[[i]]@anno_list[[j]]@name}:")
756
+                if(is_simple_annotation(object@ht_list[[i]]@anno_list[[j]])) {
757
+                    qqcat("   a simple annotation.\n")
758
+                } else {
759
+                    qqcat("   a complex annotation.\n")
760
+                }
761
+            }
762
+        }
763
+    }
764
+}
765
+
... ...
@@ -3,10 +3,11 @@
3 3
 # Adjust Heatmap List
4 4
 #
5 5
 # == param
6
-# -object A `HeatmapList-class` object
6
+# -object A `HeatmapList-class` object.
7 7
 #
8 8
 # == details
9
-# This function adjust heatmap components for all heatmaps to align them nicely.
9
+# This function adjusts settings in all other heatmaps according to the main heatmap.
10
+# It also adjust the size of heatmap annotations to make them aligned nicely.
10 11
 #
11 12
 # This function is only for internal use.
12 13
 #
... ...
@@ -461,13 +462,13 @@ setMethod(f = "adjust_heatmap_list",
461 462
 })
462 463
 
463 464
 # == title
464
-# Draw the list of heatmaps
465
+# Draw the List of Heatmaps
465 466
 #
466 467
 # == param
467
-# -object a `HeatmapList-class` object
468
+# -object A `HeatmapList-class` object.
468 469
 #
469 470
 # == details
470
-# A viewport is created which contains heatmaps.
471
+# It only draws the list of heatmaps without legends and titles.
471 472
 #
472 473
 # This function is only for internal use.
473 474
 #
... ...
@@ -607,11 +608,11 @@ setMethod(f = "draw_heatmap_list",
607 608
 })
608 609
 
609 610
 # == title
610
-# Draw heatmap list title
611
+# Draw Heatmap List Title
611 612
 #
612 613
 # == param
613
-# -object a `HeatmapList-class` object
614
-# -which dendrogram on the row or on the column of the heatmap
614
+# -object A `HeatmapList-class` object.
615
+# -which Is it a row title or a column title.
615 616
 #
616 617
 # == details
617 618
 # A viewport is created which contains heatmap list title.
... ...
@@ -1,9 +1,10 @@
1 1
 
2 2
 # == title
3
-# Get row order from a heatmap list
3
+# Get Row Order from a Heatmap List
4 4
 #
5 5
 # == param
6
-# -object a `HeatmapList-class` object
6
+# -object A `HeatmapList-class` object.
7
+# -name Name of a specific heatmap.
7 8
 #
8 9
 # == value
9 10
 # The format of the returned object depends on whether rows/columns of the heatmaps are split.
... ...
@@ -19,7 +20,7 @@
19 20
 # ht_list = Heatmap(mat, row_km = 2) + Heatmap(mat)
20 21
 # ht_list = draw(ht_list)
21 22
 # row_order(ht_list)
22
-# ht_list = Heatmap(mat, row_km = 2) %v% Heatmap(mat)
23
+# ht_list = Heatmap(mat, row_km = 2) \%v\% Heatmap(mat)
23 24
 # ht_list = draw(ht_list)
24 25
 # row_order(ht_list)
25 26
 setMethod(f = "row_order",
... ...
@@ -28,6 +29,10 @@ setMethod(f = "row_order",
28 29
 
29 30
 	object = make_layout(object)
30 31
 
32
+	if(!is.null(name)) {
33
+		return(row_order(object@ht_list[[ name[1] ]]))
34
+	}
35
+
31 36
 	n = length(object@ht_list)
32 37
 	ht_index = which(sapply(seq_along(object@ht_list), function(i) inherits(object@ht_list[[i]], "Heatmap")))
33 38
 	if(length(ht_index) == 0) {
... ...
@@ -53,10 +58,10 @@ setMethod(f = "row_order",
53 58
 })
54 59
 
55 60
 # == title
56
-# Get row order from a heatmap
61
+# Get Row Order from a Heatmap
57 62
 #
58 63
 # == param
59
-# -object a `Heatmap-class` object
64
+# -object A `Heatmap-class` object.
60 65
 #
61 66
 # == value
62 67
 # The format of the returned object depends on whether rows/columns of the heatmaps are split.
... ...
@@ -88,10 +93,11 @@ setMethod(f = "row_order",
88 93
 })
89 94
 
90 95
 # == title
91
-# Get column order from a heatmap list
96
+# Get Column Order from a Heatmap List
92 97
 #
93 98
 # == param
94
-# -object a `HeatmapList-class` object
99
+# -object A `HeatmapList-class` object.
100
+# -name Name of a specific heatmap.
95 101
 #
96 102
 # == value
97 103
 # The format of the returned object depends on whether rows/columns of the heatmaps are split.
... ...
@@ -107,18 +113,22 @@ setMethod(f = "row_order",
107 113
 # ht_list = Heatmap(mat, column_km = 2) + Heatmap(mat, column_km = 2)
108 114
 # ht_list = draw(ht_list)
109 115
 # column_order(ht_list)
110
-# ht_list = Heatmap(mat) %v% Heatmap(mat)
116
+# ht_list = Heatmap(mat) \%v\% Heatmap(mat)
111 117
 # ht_list = draw(ht_list)
112 118
 # column_order(ht_list)
113
-# ht_list = Heatmap(mat, column_km = 2) %v% Heatmap(mat)
119
+# ht_list = Heatmap(mat, column_km = 2) \%v\% Heatmap(mat)
114 120
 # ht_list = draw(ht_list)
115 121
 # column_order(ht_list)
116 122
 setMethod(f = "column_order",
117 123
 	signature = "HeatmapList",
118
-	definition = function(object) {
124
+	definition = function(object, name = NULL) {
119 125
 
120 126
 	object = make_layout(object)
121 127
 
128
+	if(!is.null(name)) {
129
+		return(column_order(object@ht_list[[ name[1] ]]))
130
+	}
131
+
122 132
 	n = length(object@ht_list)
123 133
 	ht_index = which(sapply(seq_along(object@ht_list), function(i) inherits(object@ht_list[[i]], "Heatmap")))
124 134
 	if(length(ht_index) == 0) {
... ...
@@ -144,10 +154,10 @@ setMethod(f = "column_order",
144 154
 })
145 155
 
146 156
 # == title
147
-# Get column order from a heatmap list
157
+# Get Column Order from a Aeatmap List
148 158
 #
149 159
 # == param
150
-# -object a `Heatmap-class` object
160
+# -object A `Heatmap-class` object.
151 161
 #
152 162
 # == value
153 163
 # The format of the returned object depends on whether rows/columns of the heatmaps are split.
... ...
@@ -179,10 +189,11 @@ setMethod(f = "column_order",
179 189
 })
180 190
 
181 191
 # == title
182
-# Get row dendrograms from a heatmap list
192
+# Get Row Dendrograms from a Heatmap List
183 193
 #
184 194
 # == param
185
-# -object a `HeatmapList-class` object
195
+# -object A `HeatmapList-class` object.
196
+# -name Name of a specific heatmap.
186 197
 # 
187 198
 # == value
188 199
 # The format of the returned object depends on whether rows/columns of the heatmaps are split.
... ...
@@ -198,15 +209,19 @@ setMethod(f = "column_order",
198 209
 # ht_list = Heatmap(mat, row_km = 2) + Heatmap(mat)
199 210
 # ht_list = draw(ht_list)
200 211
 # row_dend(ht_list)
201
-# ht_list = Heatmap(mat, row_km = 2) %v% Heatmap(mat)
212
+# ht_list = Heatmap(mat, row_km = 2) \%v\% Heatmap(mat)
202 213
 # ht_list = draw(ht_list)
203 214
 # row_dend(ht_list)
204 215
 setMethod(f = "row_dend",
205 216
 	signature = "HeatmapList",
206
-	definition = function(object) {
217
+	definition = function(object, name = NULL) {
207 218
 
208 219
 	object = make_layout(object)
209 220
 
221
+	if(!is.null(name)) {
222
+		return(row_dend(object@ht_list[[ name[1] ]]))
223
+	}
224
+
210 225
 	n = length(object@ht_list)
211 226
 	ht_index = which(sapply(seq_along(object@ht_list), function(i) inherits(object@ht_list[[i]], "Heatmap")))
212 227
 	if(length(ht_index) == 0) {
... ...
@@ -233,10 +248,10 @@ setMethod(f = "row_dend",
233 248
 
234 249
 
235 250
 # == title
236
-# Get row dendrograms from a heatmap
251
+# Get Row Dendrograms from a Heatmap
237 252
 #
238 253
 # == param
239
-# -object a `Heatmap-class` object
254
+# -object A `Heatmap-class` object.
240 255
 # 
241 256
 # == value
242 257
 # The format of the returned object depends on whether rows/columns of the heatmaps are split.
... ...
@@ -268,10 +283,11 @@ setMethod(f = "row_dend",
268 283
 })
269 284
 
270 285
 # == title
271
-# Get column dendrograms from a heatmap list
286
+# Get Column Dendrograms from a hHeatmap List
272 287
 #
273 288
 # == param
274
-# -object a `HeatmapList-class` object
289
+# -object A `HeatmapList-class` object.
290
+# -name Name of a specific heatmap.
275 291
 # 
276 292
 # == value
277 293
 # The format of the returned object depends on whether rows/columns of the heatmaps are split.
... ...
@@ -287,18 +303,22 @@ setMethod(f = "row_dend",
287 303
 # ht_list = Heatmap(mat, column_km = 2) + Heatmap(mat, column_km = 2)
288 304
 # ht_list = draw(ht_list)
289 305
 # column_dend(ht_list)
290
-# ht_list = Heatmap(mat) %v% Heatmap(mat)
306
+# ht_list = Heatmap(mat) \%v\% Heatmap(mat)
291 307
 # ht_list = draw(ht_list)
292 308
 # column_dend(ht_list)
293
-# ht_list = Heatmap(mat, column_km = 2) %v% Heatmap(mat)
309
+# ht_list = Heatmap(mat, column_km = 2) \%v\% Heatmap(mat)
294 310
 # ht_list = draw(ht_list)
295 311
 # column_dend(ht_list)
296 312
 setMethod(f = "column_dend",
297 313
 	signature = "HeatmapList",
298
-	definition = function(object) {
314
+	definition = function(object, name = NULL) {
299 315
 
300 316
 	object = make_layout(object)
301 317
 
318
+	if(!is.null(name)) {
319
+		return(column_dend(object@ht_list[[ name[1] ]]))
320
+	}
321
+
302 322
 	n = length(object@ht_list)
303 323
 	ht_index = which(sapply(seq_along(object@ht_list), function(i) inherits(object@ht_list[[i]], "Heatmap")))
304 324
 	if(length(ht_index) == 0) {
... ...
@@ -325,10 +345,10 @@ setMethod(f = "column_dend",
325 345
 
326 346
 
327 347
 # == title
328
-# Get column dendrograms from a heatmap
348
+# Get Column Dendrograms from a Heatmap
329 349
 #
330 350
 # == param
331
-# -object a `Heatmap-class` object
351
+# -object A `Heatmap-class` object.
332 352
 # 
333 353
 # == value
334 354
 # The format of the returned object depends on whether rows/columns of the heatmaps are split.
... ...
@@ -1,68 +1,65 @@
1 1
 
2 2
 # == title
3
-# Make layout for the complete plot
3
+# Make Layout for the Heatmap List
4 4
 #
5 5
 # == param
6
-# -object a `HeatmapList-class` object.
7
-# -row_title title on the row.
8
-# -row_title_side will the title be put on the left or right of the heatmap.
9
-# -row_title_gp graphic parameters for drawing text.
10
-# -column_title title on the column.
11
-# -column_title_side will the title be put on the top or bottom of the heatmap.
12
-# -column_title_gp graphic parameters for drawing text.
13
-# -heatmap_legend_side side of the heatmap legend.
14
-# -merge_legends whether put heatmap legends and annotation legends in a same column
15
-# -show_heatmap_legend whether show heatmap legend.
16
-# -heatmap_legend_list a list of self-defined legend, should be wrapped into `grid::grob` objects.
17
-# -annotation_legend_side side of annotation legend.
18
-# -show_annotation_legend whether show annotation legend.
19
-# -annotation_legend_list a list of self-defined legend, should be wrapped into `grid::grob` objects.
20
-# -ht_gap gap between heatmaps, should be a `grid::unit` object.
21
-# -main_heatmap name or index for the main heatmap
22
-# -padding padding of the plot
23
-# -auto_adjust whether autoadjust
24
-# -row_dend_side if auto adjust, where to put the row dendrograms for the main heatmap
25
-# -row_sub_title_side row sub title
26
-# -column_dend_side column dend
27
-# -column_sub_title_side column sub title
28
-# -row_gap gap between row clusters if rows are split
29
-# -cluster_rows same setting as in `Heatmap`, if it is specified, ``cluster_rows`` in main heatmap is ignored.
30
-# -clustering_distance_rows same setting as in `Heatmap`, if it is specified, ``clustering_distance_rows`` in main heatmap is ignored.
31
-# -clustering_method_rows same setting as in `Heatmap`, if it is specified, ``clustering_method_rows`` in main heatmap is ignored.
32
-# -row_dend_width same setting as in `Heatmap`, if it is specified, ``row_dend_width`` in main heatmap is ignored.
33
-# -show_row_dend same setting as in `Heatmap`, if it is specified, ``show_row_dend`` in main heatmap is ignored.
34
-# -row_dend_reorder same setting as in `Heatmap`, if it is specified, ``row_dend_reorder`` in main heatmap is ignored.
35
-# -row_dend_gp same setting as in `Heatmap`, if it is specified, ``row_dend_gp`` in main heatmap is ignored.
36
-# -row_order same setting as in `Heatmap`, if it is specified, ``row_order`` in main heatmap is ignored.
37
-# -row_km row km
38
-# -row_split row split
39
-# -height height of the heatmap body
40
-# -heatmap_height height of the complete heatmap
41
-# -column_gap column gap
42
-# -cluster_columns cluster columns
43
-# -clustering_distance_columns clustering distance columns
44
-# -clustering_method_columns clustering method columns
45
-# -column_dend_width column dend width
46
-# -show_column_dend show column dendrogram
47
-# -column_dend_reorder column dend reorder
48
-# -column_dend_gp column dendrogram gp
49
-# -column_order column order
50
-# -column_km column km
51
-# -column_split column split
52
-# -width width of the heatmap body
53
-# -heatmap_width width of the complete heatmap
6
+# -object A `HeatmapList-class` object.
7
+# -row_title Title on the row.
8
+# -row_title_side Will the title be put on the left or right of the heatmap list?
9
+# -row_title_gp Graphic parameters for the row title.
10
+# -column_title Title on the column.
11
+# -column_title_side Will the title be put on the top or bottom of the heatmap?
12
+# -column_title_gp Graphic parameters for the column title.
13
+# -heatmap_legend_side Side of the heatmap legends.
14
+# -merge_legends Whether to put heatmap legends and annotation legends together. By default they are put in different viewports.
15
+# -show_heatmap_legend Whether show heatmap legends.
16
+# -heatmap_legend_list A list of self-defined legends, should be wrapped into a list of `grid::grob` objects. Normally they are constructed by `Legend`. 
17
+# -annotation_legend_side Side of annotation legends.
18
+# -show_annotation_legend Whether show annotation legends.
19
+# -annotation_legend_list A list of self-defined legends, should be wrapped into a list of `grid::grob` objects. Normally they are constructed by `Legend`.
20
+# -ht_gap Gap between heatmaps, should be a `grid::unit` object. It can be a vector of length 1 or the number of heamtaps/annotations.
21
+# -main_heatmap Name or index for the main heatmap.
22
+# -padding Padding of the whole plot. The four values correspond to the bottom, left, top and right paddings.
23
+# -auto_adjust whether apply automatic adjustment? The auto-adjustment includes turning off dendrograms, titles and row/columns for non-main heatmaps.
24
+# -row_dend_side If auto-adjustment is on, to put the row dendrograms of the main heatmap to the most left side of the heatmap list or the most right side?
25
+# -row_sub_title_side There can be sub titles generated by the splitting of heatmaps. Similar setting as ``row_dend_side``.
26
+# -column_dend_side Similar setting as ``row_dend_side``.
27
+# -column_sub_title_side Similar setting as ``row_sub_title_side``.
28
+# -row_gap Overwrite the corresponding setting in the main heatmap.
29
+# -cluster_rows Overwrite the corresponding setting in the main heatmap.
30
+# -clustering_distance_rows Overwrite the corresponding setting in the main heatmap.
31
+# -clustering_method_rows Overwrite the corresponding setting in the main heatmap.same setting as in `Heatmap`, if it is specified, ``clustering_method_rows`` in main heatmap is ignored.
32
+# -row_dend_width Overwrite the corresponding setting in the main heatmap.
33
+# -show_row_dend same Overwrite the corresponding setting in the main heatmap.
34
+# -row_dend_reorder Overwrite the corresponding setting in the main heatmap.
35
+# -row_dend_gp Overwrite the corresponding setting in the main heatmap.
36
+# -row_order Overwrite the corresponding setting in the main heatmap.
37
+# -row_km Overwrite the corresponding setting in the main heatmap.
38
+# -row_split Overwrite the corresponding setting in the main heatmap.
39
+# -height Overwrite the corresponding setting in the main heatmap.
40
+# -heatmap_height Overwrite the corresponding setting in the main heatmap.
41
+# -column_gap Overwrite the corresponding setting in the main heatmap.
42
+# -cluster_columns Overwrite the corresponding setting in the main heatmap.
43
+# -clustering_distance_columns Overwrite the corresponding setting in the main heatmap.
44
+# -clustering_method_columns Overwrite the corresponding setting in the main heatmap.
45
+# -column_dend_width column Overwrite the corresponding setting in the main heatmap.
46
+# -show_column_dend Overwrite the corresponding setting in the main heatmap.
47
+# -column_dend_reorder Overwrite the corresponding setting in the main heatmap.
48
+# -column_dend_gp Overwrite the corresponding setting in the main heatmap.
49
+# -column_order Overwrite the corresponding setting in the main heatmap.
50
+# -column_km Overwrite the corresponding setting in the main heatmap.
51
+# -column_split Overwrite the corresponding setting in the main heatmap.
52
+# -width Overwrite the corresponding setting in the main heatmap.
53
+# -heatmap_width Overwrite the corresponding setting in the main heatmap.
54 54
 #
55 55
 # == detail
56 56
 # It sets the size of each component of the heatmap list and adjusts graphic
57 57
 # parameters for each heatmap if necessary.
58 58
 #
59
-# The layout for the heatmap list and layout for each heatmap are calculated
60
-# when drawing the heatmap list.
61
-#
62 59
 # This function is only for internal use.
63 60
 #
64 61
 # == value
65
-# A `HeatmapList-class` object in which settings for each heatmap are adjusted.
62
+# A `HeatmapList-class` object in which settings for all heatmap are adjusted.
66 63
 #
67 64
 # == author
68 65
 # Zuguang Gu <z.gu@dkfz.de>
... ...
@@ -1031,17 +1028,17 @@ has_heatmap_list_component = function(object, component) {
1031 1028
 
1032 1029
 
1033 1030
 # == title
1034
-# Width of each heatmap list component
1031
+# Width of Heatmap List Components
1035 1032
 #
1036 1033
 # == param
1037
-# -object a `HeatmapList-class` object.
1038
-# -k which component in the heatmap list, see `HeatmapList-class`.
1034
+# -object A `HeatmapList-class` object.
1035
+# -k Which component in the heatmap list. Values are in ``ComplexHeatmap:::HEATMAP_LIST_LAYOUT_ROW_COMPONENT``.
1039 1036
 #
1040 1037
 # == detail
1041 1038
 # This function is only for internal use.
1042 1039
 #
1043 1040
 # == value
1044
-# A `grid::unit` object
1041
+# A `grid::unit` object.
1045 1042
 #
1046 1043
 # == author
1047 1044
 # Zuguang Gu <z.gu@dkfz.de>
... ...
@@ -1113,14 +1110,14 @@ setMethod(f = "component_width",
1113 1110
 })
1114 1111
 
1115 1112
 # == title
1116
-# Height of each heatmap list component
1113
+# Height of Heatmap List Components
1117 1114
 #
1118 1115
 # == param
1119
-# -object a `HeatmapList-class` object.
1120
-# -k which component in the heatmap list, see `HeatmapList-class`.
1116
+# -object A `HeatmapList-class` object.
1117
+# -k Which component in the heatmap list. Values are in ``ComplexHeatmap:::HEATMAP_LIST_LAYOUT_COLUMN_COMPONENT``.
1121 1118
 #
1122 1119
 # == value
1123
-# A `grid::unit` object
1120
+# A `grid::unit` object.
1124 1121
 #
1125 1122
 # == author
1126 1123
 # Zuguang Gu <z.gu@dkfz.de>
... ...
@@ -770,7 +770,7 @@ setMethod(f = "copy_all",
770 770
 #
771 771
 # == param
772 772
 # -object The `SingleAnnotation-class` object.
773
-# -... other arguments.
773
+# -... Other arguments.
774 774
 #
775 775
 # == details
776 776
 # It returns the ``n`` slot of the annotaton function. If it does not exist, it returns ``NA``.
... ...
@@ -1,23 +1,26 @@
1 1
 # == title
2
-# Decorate the heatmap body
2
+# Decorate Heatmap Bodies
3 3
 #
4 4
 # == param
5
-# -heatmap name of the heatmap which is set as ``name`` argument in `Heatmap` function.
6
-# -code code that adds graphics in the selected heatmap body.
7
-# -slice index of row slices in the heatmap.
8
-# -row_slice index of row slices in the heatmap.
9
-# -column_slice index of column slices in the heatmap.
10
-# -envir where to look for variables inside ``code``
5
+# -heatmap Name of the heatmap which is set as ``name`` argument in `Heatmap` function.
6
+# -code Code that adds graphics in the selected heatmap body.
7
+# -slice Index of the row slice in the heatmap.
8
+# -row_slice Index of the row slice in the heatmap.
9
+# -column_slice Index of the column slice in the heatmap.
10
+# -envir Where to look for variables inside ``code``.
11 11
 #
12 12
 # == details
13
-# There is a viewport for each row slice and each column slice in each heatmap.
13
+# There is a viewport for each slice in each heatmap.
14 14
 # This function contructs the name of the viewport,
15
-# goes to the viewport by `grid::seekViewport` and applies code
16
-# to that viewport.
15
+# goes to the viewport by `grid::seekViewport`, runs the code
16
+# to that viewport and finally goes back to the original viewport.
17 17
 #
18 18
 # == value
19 19
 # This function returns no value.
20 20
 #
21
+# == seealso
22
+# https://jokergoo.github.io/ComplexHeatmap-reference/book/heatmap-decoration.html
23
+#
21 24
 # == author
22 25
 # Zuguang Gu <z.gu@dkfz.de>
23 26
 #
... ...
@@ -46,32 +49,31 @@ decorate_heatmap_body = function(heatmap, code,
46 49
 }
47 50
 
48 51
 # == title
49
-# Decorate the heatmap dendrogram
52
+# Decorate Heatmap Dendrograms
50 53
 #
51 54
 # == param
52
-# -heatmap name of the heatmap
53
-# -code code that adds graphics in the selected heatmap body
54
-# -slice index of row slice or column slice in the heatmap
55
-# -which on rows or on columns?
56
-# -envir where to look for variables inside ``code``
55
+# -heatmap Name of the heatmap.
56
+# -code Code that adds graphics in the selected heatmap dendrogram.
57
+# -slice Index of the row slice or column slice in the heatmap.
58
+# -which Is the dendrogram on rows or on columns?
59
+# -envir Where to look for variables inside ``code``.
57 60
 #
58 61
 # == details
59
-# There is a viewport for each dendrogram in the heatmap.
60
-# This function contructs the name of the viewport,
61
-# goes to the viewport by `grid::seekViewport` and applies code
62
-# to that viewport.
63 62
 #
64 63
 # If you know the number of leaves in the dendrogram, it is
65 64
 # simple to calculate the position of every leave in the dendrogram.
66 65
 # E.g., for the column dendrogram, the i^th leave is located at:
67 66
 #
68
-#     # assume nc is the number of columns 
67
+#     # assume nc is the number of columns in the column slice
69 68
 #     unit((i-0.5)/nc, "npc")
70 69
 #
71 70
 #
72 71
 # == value
73 72
 # This function returns no value.
74 73
 #
74
+# == seealso
75
+# https://jokergoo.github.io/ComplexHeatmap-reference/book/heatmap-decoration.html
76
+#
75 77
 # == author
76 78
 # Zuguang Gu <z.gu@dkfz.de>
77 79
 #
... ...
@@ -100,11 +102,11 @@ decorate_dend = function(heatmap, code, slice = 1, which = c("column", "row"),
100 102
 }
101 103
 
102 104
 # == title
103
-# Decorate heatmap dendrogram on columns
105
+# Decorate Heatmap Column Dendrograms
104 106
 #
105 107
 # == param
106
-# -... pass to `decorate_dend`
107
-# -envir where to look for variables inside ``code``
108
+# -... Pass to `decorate_dend`.
109
+# -envir Where to look for variables inside ``code``.
108 110
 #
109 111
 # == details
110 112
 # This is a wrapper function which pre-defined ``which`` argument in `decorate_dend`.
... ...
@@ -115,20 +117,16 @@ decorate_dend = function(heatmap, code, slice = 1, which = c("column", "row"),
115 117
 # == author
116 118
 # Zuguang Gu <z.gu@dkfz.de>
117 119
 #
118
-# == example
119
-# # No example for this function
120
-# NULL
121
-#
122 120
 decorate_column_dend = function(..., envir = new.env(parent = parent.frame())) {
123 121
 	decorate_dend(..., which = "column", envir = envir)
124 122
 }
125 123
 
126 124
 # == title
127
-# Decorate heatmap dendrogram on rows
125
+# Decorate Heatmap Row Dendrograms
128 126
 #
129 127
 # == param
130
-# -... pass to `decorate_dend`
131
-# -envir where to look for variables inside ``code``
128
+# -... Pass to `decorate_dend`.
129
+# -envir Where to look for variables inside ``code``?
132 130
 #
133 131
 # == details
134 132
 # This is a helper function which pre-defined ``which`` argument in `decorate_dend`.
... ...
@@ -139,36 +137,27 @@ decorate_column_dend = function(..., envir = new.env(parent = parent.frame())) {
139 137
 # == author
140 138
 # Zuguang Gu <z.gu@dkfz.de>
141 139
 #
142
-# == example
143
-# # No example for this function
144
-# NULL
145
-#
146 140
 decorate_row_dend = function(..., envir = new.env(parent = parent.frame())) {
147 141
 	decorate_dend(..., which = "row", envir = envir)
148 142
 }
149 143
 
150 144
 
151 145
 # == title
152
-# Decorate the heatmap dimension names
146
+# Decorate Heatmap Dimension Names
153 147
 #
154 148
 # == param
155
-# -heatmap name of the heatmap
156
-# -code code that adds graphics in the selected heatmap body
157
-# -slice index of row slice or column slice in the heatmap
149
+# -heatmap Name of the heatmap.
150
+# -code Code that adds graphics in the selected viewport.
151
+# -slice Index of the row slice or column slice in the heatmap.
158 152
 # -which on rows or on columns?
159
-# -envir where to look for variables inside ``code``
153
+# -envir where to look for variables inside ``code``.
160 154
 #
161 155
 # == details
162
-# There is a viewport for row names and column names in the heatmap.
163
-# This function contructs the name of the viewport,
164
-# goes to the viewport by `grid::seekViewport` and applies code
165
-# to that viewport.
166
-#
167 156
 # If you know the dimensions of the matrix, it is
168 157
 # simple to calculate the position of every row name or column name in the heatmap.
169 158
 # E.g., for the column column, the i^th name is located at:
170 159
 #
171
-#     # assume nc is the number of columns 
160
+#     # assume nc is the number of columns in the column slice
172 161
 #     unit((i-0.5)/nc, "npc")
173 162
 #
174 163
 #
... ...
@@ -205,11 +194,11 @@ decorate_dimnames = function(heatmap, code, slice = 1, which = c("column", "row"
205 194
 }
206 195
 
207 196
 # == title
208
-# Decorate heatmap row names
197
+# Decorate Heatmap Row Names
209 198
 #
210 199
 # == param
211
-# -... pass to `decorate_dimnames`
212
-# -envir where to look for variables inside ``code``
200
+# -... Pass to `decorate_dimnames`.
201
+# -envir wWhere to look for variables inside ``code``.
213 202
 #
214 203
 # == details
215 204
 # This is a helper function which pre-defined ``which`` argument in `decorate_dimnames`.
... ...
@@ -220,20 +209,16 @@ decorate_dimnames = function(heatmap, code, slice = 1, which = c("column", "row"
220 209
 # == author
221 210
 # Zuguang Gu <z.gu@dkfz.de>
222 211
 #
223
-# == example
224
-# # No example for this function
225
-# NULL
226
-#
227 212
 decorate_row_names = function(..., envir = new.env(parent = parent.frame())) {
228 213
 	decorate_dimnames(..., which = "row", envir = envir)
229 214
 }
230 215
 
231 216
 # == title
232
-# Decorate heatmap column names
217
+# Decorate Heatmap Column Names
233 218
 #
234 219
 # == param
235
-# -... pass to `decorate_dimnames`
236
-# -envir where to look for variables inside ``code``
220
+# -... Pass to `decorate_dimnames`.
221
+# -envir Where to look for variables inside ``code``.
237 222
 #
238 223
 # == details
239 224
 # This is a helper function which pre-defined ``which`` argument in `decorate_dimnames`.
... ...
@@ -244,34 +229,33 @@ decorate_row_names = function(..., envir = new.env(parent = parent.frame())) {
244 229
 # == author
245 230
 # Zuguang Gu <z.gu@dkfz.de>
246 231
 #
247
-# == example
248
-# # No example for this function
249
-# NULL
250
-#
251 232
 decorate_column_names = function(..., envir = new.env(parent = parent.frame())) {
252 233
 	decorate_dimnames(..., which = "column", envir = envir)
253 234
 }
254 235
 
255 236
 
256 237
 # == title
257
-# Decorate the heatmap title
238
+# Decorate Heatmap Titles
258 239
 #
259 240
 # == param
260
-# -heatmap name of the heatmap
261
-# -code code that adds graphics in the selected heatmap body
262
-# -slice index of row slice or column slice in the heatmap
263
-# -which on rows or on columns?
264
-# -envir where to look for variables inside ``code``
241
+# -heatmap Name of the heatmap.
242
+# -code Code that adds graphics in the selected viewport.
243
+# -slice Index of the row slice or column slice in the heatmap.
244
+# -which Is it a row title or a column title?
245
+# -envir Where to look for variables inside ``code``.
265 246
 #
266 247
 # == details
267 248
 # There is a viewport for row titles and column title in the heatmap.
268 249
 # This function contructs the name of the viewport,
269
-# goes to the viewport by `grid::seekViewport` and applies code
270
-# to that viewport.
250
+# goes to the viewport by `grid::seekViewport` , runs code
251
+# to that viewport and finally goes back to the original viewport.
271 252
 #
272 253
 # == value
273 254
 # The function returns no value.
274 255
 #
256
+# == seealso
257
+# https://jokergoo.github.io/ComplexHeatmap-reference/book/heatmap-decoration.html
258
+#
275 259
 # == author
276 260
 # Zuguang Gu <z.gu@dkfz.de>
277 261
 #
... ...
@@ -298,11 +282,11 @@ decorate_title = function(heatmap, code, slice = 1, which = c("column", "row"),
298 282
 }
299 283
 
300 284
 # == title
301
-# Decorate heatmap row title
285
+# Decorate Heatmap Row Titles
302 286
 #
303 287
 # == param
304
-# -... pass to `decorate_title`
305
-# -envir where to look for variables inside ``code``
288
+# -... Pass to `decorate_title`.
289
+# -envir Where to look for variables inside ``code``.
306 290
 #
307 291
 # == details
308 292
 # This is a helper function which pre-defined ``which`` argument in `decorate_title`.
... ...
@@ -313,20 +297,16 @@ decorate_title = function(heatmap, code, slice = 1, which = c("column", "row"),
313 297
 # == author
314 298
 # Zuguang Gu <z.gu@dkfz.de>
315