Browse code

Deprecated -> Defunct

Robert Ivánek authored on 20/11/2020 22:58:38
Showing 4 changed files

... ...
@@ -1996,113 +1996,11 @@ UcscTrack <- function(track, table = NULL, trackType = c(
1996 1996
 
1997 1997
 
1998 1998
 ## AlignedReadTrack ----------------------------------------------------------------------------------------------------
1999
-##
2000
-## AlignedReadTrack: A track to visualize sequence reads, as typically produced by NGS experiments
2001
-##
2002
-## Slots: no additional formal slots are defined
2003
-## A bunch of DisplayPars are set during object instantiation:
2004
-##    o detail: the amount of plotting details to show for the aligned reads, one in c("reads", "coverage")
2005
-
2006
-setClass("AlignedReadTrack",
2007
-    representation = representation(
2008
-        coverage = "list",
2009
-        coverageOnly = "logical"
2010
-    ),
2011
-    contains = "StackedTrack",
2012
-    prototype = prototype(
2013
-        stacking = "squish",
2014
-        name = "AlignedReadTrack",
2015
-        coverageOnly = FALSE,
2016
-        dp = DisplayPars(
2017
-            detail = "coverage",
2018
-            type = "histogram",
2019
-            fill = "#0080ff",
2020
-            size = NULL,
2021
-            collapse = FALSE
2022
-        )
2023
-    )
2024
-)
2025
-
2026
-## Recompute coverage on plus and minus strand and combined strands for AlignedRead tracks
2027
-## and update the respective slot to hold this information
2028
-setMethod("setCoverage", signature("AlignedReadTrack"),
2029
-    definition = function(GdObject) {
2030
-        if (length(GdObject)) {
2031
-            str <- factor(strand(GdObject), levels = c("+", "-"))
2032
-            gdSplit <- as.list(split(range(GdObject), str))
2033
-            covs <- lapply(gdSplit, coverage)
2034
-            covs[["*"]] <- coverage(range(GdObject))
2035
-            GdObject@coverage <- covs
2036
-        }
2037
-        return(GdObject)
2038
-    }
2039
-)
2040
-
2041
-## Essentially we just update the display parameters here and precompute the coverage
2042
-setMethod("initialize", "AlignedReadTrack", function(.Object, coverageOnly = FALSE, ...) {
2043
-    ## the diplay parameter defaults
2044
-    .makeParMapping()
2045
-    .Object <- .updatePars(.Object, "AlignedReadTrack")
2046
-    .Object <- callNextMethod(.Object, ...)
2047
-    .Object <- setCoverage(.Object)
2048
-    if (coverageOnly) {
2049
-        ## from <- min(unlist(lapply(.Object@coverage, function(y) if(length(y)) min(start(y)))))
2050
-        ## to <- max(unlist(lapply(.Object@coverage, function(y) if(length(y)) max(end(y)))))
2051
-        from <- min(start(range(.Object)))
2052
-        to <- max(end(range(.Object)))
2053
-        .Object@range <- GRanges(
2054
-            ranges = IRanges(start = from, end = to),
2055
-            strand = names(.Object@coverage), seqnames = .Object@chromosome
2056
-        )
2057
-        .Object@coverageOnly <- coverageOnly
2058
-    }
2059
-    return(.Object)
2060
-})
2061
-
2062
-## Constructor. The following arguments are supported:
2063
-##    o range: a data.frame or a GRanges object containing the information
2064
-##       about the track items. If a data.frame, it needs to be coerceable
2065
-##     to a GRanges object, i.e., it needs at least the mandatory 'start', 'stop' and
2066
-##     'strand' columns.
2067
-##    Instead of using the 'range' parameter, all these values can also be passed as
2068
-##    individual vectors, in which case they need to be of similar length.
2069
-##    o start, end, width: numeric vectors of the item start and end coordinates, or their widths
2070
-##    o strand: the strand information needs to be provided in the form '+' for
2071
-##       the Watson strand, '-' for the Crick strand.
2072
-##    o genome, chromosome: the reference genome and active chromosome for the track.
2073
-##    o stacking: character controlling the stacking of overlapping items. One in 'hide',
2074
-##       'dense', 'squish', 'pack' or 'full'.
2075
-##    o name: the name of the track. This will be used for the title panel.
2076
-## All additional items in ... are being treated as further DisplayParameters
2077
-## (N)
2078
-AlignedReadTrack <- function(range = NULL, start = NULL, end = NULL, width = NULL, chromosome, strand, genome, stacking = "squish",
2079
-                             name = "AlignedReadTrack", coverageOnly = FALSE, ...) {
2080
-    .Deprecated("AlignmentsTrack")
2081
-    .missingToNull(c("strand", "chromosome", "genome"))
2082
-    ## Build a GRanges object from the inputs
2083
-    range <- .buildRange(
2084
-        range = range, start = start, end = end, width = width,
2085
-        args = list(strand = strand, genome = genome, chromosome = chromosome),
2086
-        defaults = list(strand = "+", genome = NA, chromosome = "chrNA"), chromosome = chromosome,
2087
-        trackType = "AlignedReadTrack"
2088
-    )
2089
-    str <- unique(as.character(GenomicRanges::strand(range)))
2090
-    if ("*" %in% str) {
2091
-        stop("Only '+' and '-' strand information is allowed for AlignedReadTrack objects.")
2092
-    }
2093
-    if (missing(chromosome) || is.null(chromosome)) {
2094
-        chromosome <- if (length(range) > 0) .chrName(as.character(seqnames(range)[1])) else "chrNA"
2095
-    }
2096
-    ## And finally the object instantiation
2097
-    return(new("AlignedReadTrack",
2098
-        chromosome = chromosome, range = range, name = name, genome = genome(range)[1],
2099
-        stacking = stacking, coverageOnly = coverageOnly, ...
2100
-    ))
1999
+AlignedReadTrack <- function() {
2000
+    .Defunct("AlignmentsTrack")
2101 2001
 }
2102 2002
 
2103 2003
 
2104
-
2105
-
2106 2004
 ## SequenceTrack -------------------------------------------------------------------------------------------------------
2107 2005
 ##
2108 2006
 ## SequenceTrack: A generic track to visualize nucleotide sequences. This class is virtual.
2109 2007
deleted file mode 100644
... ...
@@ -1,1368 +0,0 @@
1
-\name{AlignedReadTrack-class}
2
-\Rdversion{1.1}
3
-\docType{class}
4
-\alias{AlignedReadTrack-class}
5
-\alias{AlignedReadTrack}
6
-\alias{[,AlignedReadTrack-method}
7
-\alias{[,AlignedReadTrack,ANY,ANY-method}
8
-\alias{[,AlignedReadTrack,ANY,ANY,ANY-method}
9
-\alias{coverage,AlignedReadTrack-method}
10
-\alias{drawAxis,AlignedReadTrack-method}
11
-\alias{drawGD,AlignedReadTrack-method}
12
-\alias{drawGrid,AlignedReadTrack-method}
13
-\alias{initialize,AlignedReadTrack-method}
14
-\alias{setCoverage,AlignedReadTrack-method}
15
-\alias{show,AlignedReadTrack-method}
16
-\alias{split,AlignedReadTrack,ANY-method}
17
-\alias{split,AlignedReadTrack-method}
18
-\alias{subset,AlignedReadTrack-method}
19
-
20
-\title{DEPRECATED! AlignedReadTrack class and methods)}
21
-
22
-\description{
23
-  
24
-  DEPRECATED! This class and methods are deprecated, please use \code{DataTrack}, 
25
-  \code{AnnotationTrack} or \code{AlignmentsTrack} instead.
26
-  
27
-  A class to represent short sequences that have been aligned to a
28
-  reference genome as they are typically generated in a next generation
29
-  sequencing experiment.
30
-
31
-}
32
-
33
-\section{Objects from the Class}{
34
-
35
-  Objects can be created using the constructor function \code{AlignedReadTrack}.
36
-
37
-}
38
-
39
-
40
-\usage{
41
-
42
-AlignedReadTrack(range=NULL, start=NULL, end=NULL, width=NULL, chromosome, strand, genome,
43
-stacking="squish", name="AlignedReadTrack", coverageOnly=FALSE, ...)
44
-
45
-}
46
-
47
-\arguments{
48
-
49
-  \item{range}{An object of class \code{\linkS4class{GRanges}}, or a
50
-    \code{data.frame} which will be coerced into one in which case it
51
-    needs to contain at least the three columns:
52
-
53
-    \describe{
54
-
55
-      \item{}{\code{start}, \code{end}: the start and end coordinates
56
-    for the track items.}
57
-
58
-      \item{}{\code{strand}: the strand information for the track
59
-    items. It may be provided in the form \code{+} for the Watson
60
-    strand, \code{-} for the Crick strand or \code{*} for either one
61
-    of the two.}
62
-
63
-    }
64
-
65
-    Alternatively, the \code{range} argument may be missing, in which
66
-    case the relevant information has to be provided as individual
67
-    function arguments (see below).
68
-
69
-  }
70
-
71
-  \item{start, end, width}{Integer vectors, giving the start and the end
72
-    end coordinates for the individual track items, or their width. Two
73
-    of the three need to be specified, and have to be of equal length or
74
-    of length one, in which case this value will be recycled. Otherwise,
75
-    the usual R recycling rules for vectors do not apply.}
76
-
77
-  \item{strand}{Character vector, the strand information for the
78
-    individual track items.  Needs to be of equal length as the
79
-    \code{start, end} or \code{width} vectors, or of length 1. Please
80
-    note that grouped items need to be on the same strand, and erroneous
81
-    entries will result in casting of an error.}
82
-
83
-  \item{chromosome}{The chromosome on which the track's genomic ranges
84
-    are defined. A valid UCSC chromosome identifier. Please note that at
85
-    this stage only syntactic checking takes place, i.e., the argument
86
-    value needs to be a single integer, numeric character or a character
87
-    of the form \code{chrx}, where \emph{x} may be any
88
-    possible string. The user has to make sure that the respective
89
-    chromosome is indeed defined for the the track's genome.}
90
-
91
-  \item{genome}{The genome on which the track's ranges are
92
-    defined. Usually this is a valid UCSC genome identifier, however
93
-    this is not being formally checked at this point.}
94
-
95
-  \item{stacking}{The stacking type for overlapping items of the
96
-    track. One in \code{c(hide, dense, squish, pack,full)}. Currently,
97
-    only hide (don't show the track items, squish (make best use of the
98
-    available space) and dense (no stacking at all) are implemented.}
99
-
100
-  \item{name}{Character scalar of the track's name used in the title
101
-    panel when plotting.}
102
-
103
-  \item{coverageOnly}{Instead of storing individual reads, just compute
104
-    the coverage and store the resulting coverage vector.}
105
-
106
-  \item{\dots}{Additional items which will all be interpreted as further
107
-    display parameters.}
108
-
109
-}
110
-
111
-\value{
112
-
113
-  The return value of the constructor function is a new object of class
114
-  \code{AlignedReadTrack}.
115
-
116
-}
117
-
118
-\section{Slots}{
119
-
120
-  \describe{
121
-
122
-    \item{\code{coverage}:}{Object of class \code{"list"}, a list of
123
-      coverage vectors for the plus strand, the minus strand and for
124
-      both strands combined.}
125
-
126
-    \item{\code{coverageOnly}:}{Object of class \code{"logical"}, flag
127
-      to determine whether the object stores read locations or the coverage
128
-      vectors only.}
129
-
130
-     \item{\code{stacking}:}{Object of class \code{"character"},
131
-      inherited from class \code{\linkS4class{StackedTrack}}}
132
-
133
-    \item{\code{stacks}:}{Object of class \code{"environment"},
134
-      inherited from class \code{\linkS4class{StackedTrack}}}
135
-
136
-    \item{\code{range}:}{Object of class \code{\linkS4class{GRanges}},
137
-      inherited from class \code{\linkS4class{RangeTrack}}}
138
-
139
-    \item{\code{chromosome}:}{Object of class \code{"character"},
140
-      inherited from class \code{\linkS4class{RangeTrack}} }
141
-
142
-    \item{\code{genome}:}{Object of class \code{"character"}, inherited
143
-      from class \code{\linkS4class{RangeTrack}}}
144
-
145
-    \item{\code{dp}:}{Object of class
146
-      \code{\linkS4class{DisplayPars}}, inherited from class
147
-      \code{\linkS4class{GdObject}} }
148
-
149
-    \item{\code{name}:}{Object of class \code{"character"}, inherited
150
-      from class \code{\linkS4class{GdObject}}}
151
-
152
-    \item{\code{imageMap}:}{Object of class
153
-      \code{\linkS4class{ImageMap}}, inherited from class
154
-      \code{\linkS4class{GdObject}}}
155
-
156
-  }
157
-}
158
-
159
-\section{Extends}{
160
-
161
-  Class \code{"\linkS4class{StackedTrack}"}, directly.
162
-
163
-  Class \code{"\linkS4class{RangeTrack}"}, by class "StackedTrack",
164
-  distance2.
165
-
166
-  Class \code{"\linkS4class{GdObject}"}, by class "StackedTrack",
167
-  distance3.
168
-
169
-}
170
-
171
-\section{Methods}{
172
-
173
-  In the following code chunks, \code{obj} is considered to be an object
174
-  of class \code{AlignedReadTrack}.
175
-
176
-  \bold{\emph{Exported in the name space:}}
177
-
178
-  \describe{
179
-
180
-    \item{[}{\code{signature(x="AlignedReadTrack")}: subset the items in
181
-      the \code{AlignedReadTrack}. This is essentially similar to
182
-      subsetting of the \code{\linkS4class{GRanges}} object in the
183
-      \code{range} slot. For most applications, the \code{subset} method
184
-      may be more appropriate. The operation is only supported for
185
-      objects that still contain all the read locations, i.e.,
186
-      \code{coverageOnly=FALSE}.
187
-
188
-      \emph{Additional Arguments:}
189
-
190
-      \describe{
191
-
192
-    \item{}{\code{i}: subsetting indices}
193
-
194
-      }
195
-
196
-      \emph{Examples:}
197
-
198
-      \describe{
199
-
200
-    \item{}{\code{obj[1:5]}}
201
-
202
-      }
203
-    }
204
-
205
-    \item{subset}{\code{signature(x="AlignedReadTrack")}: subset a
206
-      \code{AlignedReadTrack} by coordinates and sort if necessary.
207
-
208
-      \emph{Usage:}
209
-
210
-      \code{subset(x, from, to, sort=FALSE, stacks=FALSE)}
211
-
212
-      \emph{Additional Arguments:}
213
-
214
-      \describe{
215
-
216
-    \item{}{\code{from}, \code{to}: the coordinates range to subset
217
-      to.}
218
-
219
-    \item{}{\code{sort}: sort the object after subsetting. Usually
220
-      not necessary.}
221
-
222
-    \item{}{\code{stacks}: recompute the stacking after subsetting
223
-      which can be expensive and is not always necessary.}
224
-
225
-      }
226
-
227
-      \emph{Examples:}
228
-
229
-      \describe{
230
-
231
-    \item{}{\code{subset(obj, from=10, to=20)}}
232
-
233
-    \item{}{\code{subset(obj, from=10, to=20, sort=TRUE, stacks=FALSE)}}
234
-
235
-      }
236
-    }
237
-
238
-    \item{split}{\code{signature(x="AlignedReadTrack")}: split an
239
-      \code{AlignedReadTrack} object by an appropriate factor vector (or
240
-      another vector that can be coerced into one). The output of this
241
-      operation is a list of \code{AlignedReadTrack} objects.
242
-
243
-      \emph{Additional Arguments:}
244
-
245
-      \describe{
246
-
247
-    \item{}{\code{f}: the splitting factor.}
248
-
249
-    \item{}{\code{\dots}: all further arguments are ignored.}
250
-
251
-      }
252
-
253
-      \emph{Usage:}
254
-
255
-      \code{split(x, f, ...)}
256
-
257
-      \emph{Examples:}
258
-
259
-      \describe{
260
-
261
-    \item{}{\code{split(obj, c("a", "a", "b", "c", "a"))}}
262
-
263
-      }
264
-    }
265
-
266
-    \item{coverage}{\code{signature(x="AlignedReadTrack")}: return the
267
-      coverage vector for one of the strands, or the combined vector.
268
-
269
-      \emph{Usage:}
270
-
271
-      \code{coverage(x, strand="*")}
272
-
273
-      \emph{Additional Arguments:}
274
-
275
-      \describe{
276
-
277
-    \item{}{\code{strand}: the selector for the strand, \code{+} for
278
-      the Watson strand, \code{-} for the Crick strand or \code{*}
279
-      for both strands.}
280
-
281
-      }
282
-
283
-      \emph{Examples:}
284
-
285
-      \describe{
286
-
287
-    \item{}{\code{coveraget(obj)}}
288
-
289
-    \item{}{\code{coverage(obj, strand="-")}}
290
-
291
-      }
292
-    }
293
-  }
294
-
295
-  \bold{\emph{Internal methods:}}
296
-
297
-  \describe{
298
-
299
-
300
-    \item{setCoverage}{\code{signature(GdObject="AlignedReadTrack")}:
301
-      recompute the coverage on the plus and minus strand as well as for
302
-      the combined strands and update the respective slot.
303
-
304
-      \emph{Usage:}
305
-
306
-      \code{setCoverage(GdObject)}
307
-
308
-       \emph{Examples:}
309
-
310
-      \describe{
311
-
312
-    \item{}{\code{setCoverage(obj)}}
313
-
314
-      }
315
-    }
316
-
317
-    \item{drawAxis}{\code{signature(GdObject="AlignedReadTrack")}: add a y-axis
318
-      to the title panel of a track.
319
-
320
-      \emph{Usage:}
321
-
322
-      \code{drawAxis(GdObject, from, to, subset=FALSE, ...)}
323
-
324
-      \emph{Additional Arguments:}
325
-
326
-      \describe{
327
-
328
-    \item{}{\code{from}, \code{to}: compute axis range from the data
329
-      within a certain coordinates range only.}
330
-
331
-    \item{}{\code{subset}: subset the object prior to calculating
332
-      the axis ranges. Can be expensive and is not always needed.}
333
-
334
-    \item{}{\code{\dots}: all further arguments are ignored.}
335
-
336
-      }
337
-
338
-      \emph{Examples:}
339
-
340
-      \describe{
341
-
342
-          \item{}{\code{Gviz:::drawAxis(obj)}}
343
-
344
-      }
345
-    }
346
-
347
-    \item{drawGD}{\code{signature(gdObject="AlignedReadTrack")}: plot the
348
-      object to a graphics device. The return value of this method is
349
-      the input object, potentially updated during the plotting
350
-      operation. Internally, there are two modes in which the method can
351
-      be called. Either in 'prepare' mode, in which case no plotting is
352
-      done but the object is preprocessed based on the
353
-      available space, or in 'plotting' mode, in which case the actual
354
-      graphical output is created. Since subsetting of the object can be
355
-      potentially costly, this can be switched off in case subsetting
356
-      has already been performed before or is not necessary.
357
-
358
-      \emph{Usage:}
359
-
360
-      \code{drawGD(GdObject, minBase, maxBase, prepare=FALSE,
361
-    subset=TRUE, ...)}
362
-
363
-      \emph{Additional Arguments:}
364
-
365
-      \describe{
366
-
367
-    \item{}{\code{minBase}, \code{maxBase}: the coordinate range to
368
-      plot.}
369
-
370
-    \item{}{\code{prepare}: run method in preparation or in
371
-      production mode.}
372
-
373
-    \item{}{\code{subset}: subset the object to the visible region
374
-    or skip the potentially expensive subsetting operation.}
375
-
376
-    \item{}{\code{\dots}: all further arguments are ignored.}
377
-
378
-      }
379
-
380
-      \emph{Examples:}
381
-
382
-      \describe{
383
-
384
-    \item{}{\code{Gviz:::drawGD(obj)}}
385
-
386
-    \item{}{\code{Gviz:::drawGD(obj, minBase=1, maxBase=100)}}
387
-
388
-    \item{}{\code{Gviz:::drawGD(obj, prepare=TRUE,
389
-        subset=FALSE)}}
390
-
391
-      }
392
-    }
393
-
394
-    \item{drawGrid}{\code{signature(GdObject="AlignedReadTrack")}: superpose a grid on top of a track.
395
-
396
-      \emph{Usage:}
397
-
398
-      \code{drawGrid(GdObject, from, to)}
399
-
400
-      \emph{Additional Arguments:}
401
-
402
-      \describe{
403
-
404
-    \item{}{\code{from}, \code{to}: draw grid within a certain
405
-      coordinates range. This needs to be supplied for the plotting
406
-      function to know the current genomic coordinates.}
407
-
408
-      }
409
-
410
-      \emph{Examples:}
411
-
412
-      \describe{
413
-
414
-          \item{}{\code{Gviz:::drawGrid(obj, from=10, to=100)}}
415
-
416
-      }
417
-    }
418
-
419
-
420
-    \item{initialize}{\code{signature(.Object="AligendReadTrack")}:
421
-      initialize the object.}
422
-
423
-    \item{show}{\code{signature(object="AlignedReadTrack")}: show a
424
-      human-readable summary of the object.}
425
-
426
-  }
427
-
428
-  \bold{\emph{Inherited methods:}}
429
-
430
-  \describe{
431
-
432
-    \item{stacking}{\code{signature(GdObject="AlignedReadTrack")}: return
433
-      the current stacking type.
434
-
435
-      \emph{Usage:}
436
-
437
-      \code{stacking(GdObject)}
438
-
439
-      \emph{Examples:}
440
-
441
-      \describe{
442
-
443
-    \item{}{\code{stacking(obj)}}
444
-
445
-      }
446
-    }
447
-
448
-    \item{stacking<-}{\code{signature(GdObject="AlignedReadTrack",
449
-      value="character")}: set the object's stacking type to one in
450
-      \code{c(hide, dense, squish, pack,full)}.
451
-
452
-      \emph{Usage:}
453
-
454
-      \code{stacking<-(GdObject, value)}
455
-
456
-      \emph{Additional Arguments:}
457
-
458
-    \describe{
459
-
460
-      \item{}{\code{value}: replacement value.}
461
-
462
-    }
463
-
464
-      \emph{Examples:}
465
-
466
-      \describe{
467
-
468
-    \item{}{\code{stacking(obj) <- "squish" }}
469
-
470
-      }
471
-    }
472
-
473
-    \item{setStacks}{\code{signature(GdObject="AlignedReadTrack")}:
474
-      recompute the stacks based on the available space and on the
475
-      object's track items and stacking settings.
476
-
477
-      \emph{Usage:}
478
-
479
-      \code{setStacks(GdObject, from, to)}
480
-
481
-      \emph{Additional Arguments:}
482
-
483
-      \describe{
484
-
485
-    \item{}{\code{from}, \code{to}: compute stacking within a
486
-      certain coordinates range. This needs to be supplied for the
487
-      plotting function to know the current genomic coordinates.}
488
-
489
-      }
490
-
491
-      \emph{Examples:}
492
-
493
-      \describe{
494
-
495
-          \item{}{\code{Gviz:::setStacks(obj)}}
496
-
497
-      }
498
-    }
499
-
500
-    \item{stacks}{\code{signature(GdObject="AlignedReadTrack")}: return
501
-      the stack indices for each track item.
502
-
503
-      \emph{Usage:}
504
-
505
-      \code{stacks(GdObject)}
506
-
507
-      \emph{Examples:}
508
-
509
-      \describe{
510
-
511
-          \item{}{\code{Gviz:::stacks(obj)}}
512
-
513
-      }
514
-    }
515
-
516
-    \item{chromosome}{\code{signature(GdObject="AlignedReadTrack")}:
517
-      return the chromosome for which the track is defined.
518
-
519
-      \emph{Usage:}
520
-
521
-      \code{chromosome(GdObject)}
522
-
523
-      \emph{Examples:}
524
-
525
-      \describe{
526
-
527
-    \item{}{\code{chromosome(obj)}}
528
-
529
-      }
530
-    }
531
-
532
-    \item{chromosome<-}{\code{signature(GdObject="AlignedReadTrack")}:
533
-      replace the value of the track's chromosome. This has to be a
534
-      valid UCSC chromosome identifier or an integer or character
535
-      scalar that can be reasonably coerced into one.
536
-
537
-      \emph{Usage:}
538
-
539
-      \code{chromosome<-(GdObject, value)}
540
-
541
-      \emph{Additional Arguments:}
542
-
543
-      \describe{
544
-
545
-    \item{}{\code{value}: replacement value.}
546
-
547
-      }
548
-
549
-      \emph{Examples:}
550
-
551
-      \describe{
552
-
553
-    \item{}{\code{chromosome(obj) <- "chr12"}}
554
-
555
-      }
556
-    }
557
-
558
-    \item{start, end, width}{\code{signature(x="AlignedReadTrack")}: the
559
-      start or end coordinates of the track items, or their width in
560
-      genomic coordinates.
561
-
562
-      \emph{Usage:}
563
-
564
-      \code{start(x)}
565
-
566
-      \code{end(x)}
567
-
568
-      \code{width(x)}
569
-
570
-      \emph{Examples:}
571
-
572
-      \describe{
573
-
574
-    \item{}{\code{start(obj)}}
575
-
576
-    \item{}{\code{end(obj)}}
577
-
578
-    \item{}{\code{width(obj)}}
579
-
580
-      }
581
-    }
582
-
583
-    \item{start<-, end<-, width<-}{\code{signature(x="AlignedReadTrack")}:
584
-      replace the start or end coordinates of the track items, or their
585
-      width.
586
-
587
-      \emph{Usage:}
588
-
589
-      \code{start<-(x, value)}
590
-
591
-      \code{end<-(x, value)}
592
-
593
-      \code{width<-(x, value)}
594
-
595
-      \emph{Additional Arguments:}
596
-
597
-    \describe{
598
-
599
-      \item{}{\code{value}: replacement value.}
600
-
601
-    }
602
-
603
-      \emph{Examples:}
604
-
605
-      \describe{
606
-
607
-    \item{}{\code{start(obj) <- 1:10}}
608
-
609
-    \item{}{\code{end(obj) <- 20:30}}
610
-
611
-    \item{}{\code{width(obj) <- 1}}
612
-
613
-      }
614
-    }
615
-
616
-    \item{position}{\code{signature(GdObject="AlignedReadTrack")}: the
617
-      arithmetic mean of the track item's coordionates, i.e.,
618
-      \code{(end(obj)-start(obj))/2}.
619
-
620
-      \emph{Usage:}
621
-
622
-      \code{position(GdObject)}
623
-
624
-      \emph{Examples:}
625
-
626
-      \describe{
627
-
628
-    \item{}{\code{position(obj)}}
629
-
630
-      }
631
-    }
632
-
633
-    \item{feature}{\code{signature(GdObject="AlignedReadTrack")}: return the
634
-      grouping information for track items. For certain sub-classes,
635
-      groups may be indicated by different color schemes when
636
-      plotting. See \code{\link{grouping}} or
637
-      \code{\linkS4class{AnnotationTrack}} and
638
-      \code{\linkS4class{GeneRegionTrack}} for details.
639
-
640
-      \emph{Usage:}
641
-
642
-      \code{feature(GdObject)}
643
-
644
-      \emph{Examples:}
645
-
646
-      \describe{
647
-
648
-    \item{}{\code{feature(obj)}}
649
-
650
-      }
651
-    }
652
-
653
-    \item{feature<-}{\code{signature(gdObject="AlignedReadTrack",
654
-      value="character")}: set the grouping information for track
655
-      items. This has to be a factor vector (or another type of vector
656
-      that can be coerced into one) of the same length as the number of
657
-      items in the \code{AlignedReadTrack}. See \code{\link{grouping}} or
658
-      \code{\linkS4class{AnnotationTrack}} and
659
-      \code{\linkS4class{GeneRegionTrack}} for details.
660
-
661
-      \emph{Usage:}
662
-
663
-      \code{feature<-(GdObject, value)}
664
-
665
-      \emph{Additional Arguments:}
666
-
667
-      \describe{
668
-
669
-    \item{}{\code{value}: replacement value.}
670
-
671
-      }
672
-
673
-      \emph{Examples:}
674
-
675
-      \describe{
676
-
677
-    \item{}{\code{feature(obj) <- c("a", "a", "b", "c", "a")}}
678
-
679
-      }
680
-    }
681
-
682
-    \item{genome}{\code{signature(x="AlignedReadTrack")}: return the track's genome.
683
-
684
-      \emph{Usage:}
685
-
686
-      \code{genome(x)}
687
-
688
-      \emph{Examples:}
689
-
690
-      \describe{
691
-
692
-    \item{}{\code{genome(obj)}}
693
-
694
-      }
695
-    }
696
-
697
-    \item{genome<-}{\code{signature(x="AlignedReadTrack")}: set the track's
698
-      genome. Usually this has to be a valid UCSC identifier, however
699
-      this is not formally enforced here.
700
-
701
-      \emph{Usage:}
702
-
703
-      \code{genome<-(x, value)}
704
-
705
-      \emph{Additional Arguments:}
706
-
707
-      \describe{
708
-
709
-    \item{}{\code{value}: replacement value.}
710
-
711
-      }
712
-
713
-      \emph{Examples:}
714
-
715
-      \describe{
716
-
717
-    \item{}{\code{genome(obj) <- "mm9"}}
718
-
719
-      }
720
-    }
721
-
722
-    \item{length}{\code{signature(x="AlignedReadTrack")}: return the number
723
-      of items in the track.
724
-
725
-      \emph{Usage:}
726
-
727
-      \code{length(x)}
728
-
729
-      \emph{Examples:}
730
-
731
-      \describe{
732
-
733
-    \item{}{\code{length(obj)}}
734
-
735
-      }
736
-    }
737
-
738
-    \item{range}{\code{signature(x="AlignedReadTrack")}: return the genomic
739
-      coordinates for the track as an object of class
740
-      \code{\linkS4class{IRanges}}.
741
-
742
-      \emph{Usage:}
743
-
744
-      \code{range(x)}
745
-
746
-      \emph{Examples:}
747
-
748
-      \describe{
749
-
750
-    \item{}{\code{range(obj)}}
751
-
752
-      }
753
-    }
754
-
755
-    \item{ranges}{\code{signature(x="AlignedReadTrack")}: return the genomic
756
-      coordinates for the track along with all additional annotation
757
-      information as an object of class \code{\linkS4class{GRanges}}.
758
-
759
-      \emph{Usage:}
760
-
761
-      \code{ranges(x)}
762
-
763
-      \emph{Examples:}
764
-
765
-      \describe{
766
-
767
-    \item{}{\code{ranges(obj)}}
768
-
769
-      }
770
-    }
771
-
772
-    \item{strand}{\code{signature(x="AlignedReadTrack")}: return a vector of
773
-      strand specifiers for all track items, in the form '+' for the
774
-      Watson strand, '-' for the Crick strand or '*' for either of the
775
-      two.
776
-
777
-      \emph{Usage:}
778
-
779
-      \code{strand(x)}
780
-
781
-      \emph{Examples:}
782
-
783
-      \describe{
784
-
785
-    \item{}{\code{strand(obj)}}
786
-
787
-      }
788
-    }
789
-
790
-    \item{strand<-}{\code{signature(x="AlignedReadTrack")}: replace the
791
-      strand information for the track items. The replacement value
792
-      needs to be an appropriate scalar or vector of strand values.
793
-
794
-      \emph{Usage:}
795
-
796
-      \code{strand<-(x, value)}
797
-
798
-      \emph{Additional Arguments:}
799
-
800
-      \describe{
801
-
802
-    \item{}{\code{value}: replacement value.}
803
-
804
-      }
805
-
806
-      \emph{Examples:}
807
-
808
-      \describe{
809
-
810
-    \item{}{\code{strand(obj) <- "+"}}
811
-
812
-      }
813
-    }
814
-
815
-    \item{values}{\code{signature(x="AlignedReadTrack")}: return all
816
-      additional annotation information except for the genomic coordinates
817
-      for the track items as a data.frame.
818
-
819
-      \emph{Usage:}
820
-
821
-      \code{values(x)}
822
-
823
-      \emph{Examples:}
824
-
825
-      \describe{
826
-
827
-    \item{}{\code{values(obj)}}
828
-
829
-      }
830
-    }
831
-
832
-    \item{coerce}{\code{signature(from="AlignedReadTrack",
833
-    to="data.frame")}: coerce the \code{\linkS4class{GRanges}}
834
-    object in the \code{range} slot into a regular data.frame.
835
-
836
-       \emph{Examples:}
837
-
838
-      \describe{
839
-
840
-    \item{}{\code{as(obj, "data.frame")}}
841
-
842
-      }
843
-    }
844
-
845
-    \item{displayPars}{\code{signature(x="AlignedReadTrack",
846
-      name="character")}: list the value of the display parameter
847
-      \code{name}. See \code{\link{settings}} for details on display
848
-      parameters and customization.
849
-
850
-      \emph{Usage:}
851
-
852
-      \code{displayPars(x, name)}
853
-
854
-      \emph{Examples:}
855
-
856
-      \describe{
857
-
858
-    \item{}{\code{displayPars(obj, "col")}}
859
-
860
-      }
861
-    }
862
-
863
-
864
-    \item{displayPars}{\code{signature(x="AlignedReadTrack",
865
-      name="missing")}: list the value of all available display
866
-      parameters. See \code{\link{settings}} for details on display
867
-      parameters and customization.
868
-
869
-      \emph{Examples:}
870
-
871
-      \describe{
872
-
873
-    \item{}{\code{displayPars(obj)}}
874
-
875
-      }
876
-    }
877
-
878
-    \item{getPar}{\code{signature(x="AlignedReadTrack", name="character")}:
879
-      alias for the \code{displayPars} method. See
880
-      \code{\link{settings}} for details on display parameters and
881
-      customization.
882
-
883
-      \emph{Usage:}
884
-
885
-      \code{getPar(x, name)}
886
-
887
-      \emph{Examples:}
888
-
889
-      \describe{
890
-
891
-    \item{}{\code{getPar(obj, "col")}}
892
-
893
-      }
894
-    }
895
-
896
-    \item{getPar}{\code{signature(x="AlignedReadTrack", name="missing")}:
897
-      alias for the \code{displayPars} method. See
898
-      \code{\link{settings}} for details on display parameters and
899
-      customization.
900
-
901
-      \emph{Examples:}
902
-
903
-      \describe{
904
-
905
-    \item{}{\code{getPar(obj)}}
906
-
907
-      }
908
-    }
909
-
910
-    \item{displayPars<-}{\code{signature(x="AlignedReadTrack",
911
-      value="list")}: set display parameters using the values of the
912
-      named list in \code{value}. See \code{\link{settings}} for details
913
-      on display parameters and customization.
914
-
915
-      \emph{Usage:}
916
-
917
-      \code{displayPars<-(x, value)}
918
-
919
-      \emph{Examples:}
920
-
921
-      \describe{
922
-
923
-    \item{}{\code{displayPars(obj) <- list(col="red", lwd=2)}}
924
-
925
-      }
926
-    }
927
-
928
-    \item{setPar}{\code{signature(x="AlignedReadTrack", value="character")}:
929
-      set the single display parameter \code{name} to \code{value}. Note
930
-      that display parameters in the \code{AlignedReadTrack} class are
931
-      pass-by-reference, so no re-assignmnet to the symbol \code{obj} is
932
-      necessary. See \code{\link{settings}} for details on display
933
-      parameters and customization.
934
-
935
-      \emph{Usage:}
936
-
937
-      \code{setPar(x, name, value)}
938
-
939
-      \emph{Additional Arguments:}
940
-
941
-      \describe{
942
-
943
-    \item{}{\code{name}: the name of the display parameter to set.}
944
-
945
-      }
946
-
947
-      \emph{Examples:}
948
-
949
-      \describe{
950
-
951
-    \item{}{\code{setPar(obj, "col", "red")}}
952
-
953
-      }
954
-    }
955
-
956
-    \item{setPar}{\code{signature(x="AlignedReadTrack", value="list")}: set
957
-      display parameters by the values of the named list in
958
-      \code{value}.  Note that display parameters in the
959
-      \code{AlignedReadTrack} class are pass-by-reference, so no
960
-      re-assignmnet to the symbol \code{obj} is necessary. See
961
-      \code{\link{settings}} for details on display parameters and
962
-      customization.
963
-
964
-
965
-      \emph{Examples:}
966
-
967
-      \describe{
968
-
969
-    \item{}{\code{setPar(obj, list(col="red", lwd=2))}}
970
-
971
-      }
972
-    }
973
-
974
-    \item{group}{\code{signature(GdObject="AlignedReadTrack")}: return
975
-      grouping information for the individual items in the track. Unless
976
-      overwritten in one of the sub-classes, this usualy returns
977
-      \code{NULL}.
978
-
979
-      \emph{Usage:}
980
-
981
-      \code{group(GdObject)}
982
-
983
-      \emph{Examples:}
984
-
985
-      \describe{
986
-
987
-    \item{}{\code{group(obj)}}
988
-
989
-      }
990
-    }
991
-
992
-    \item{names}{\code{signature(x="AlignedReadTrack")}: return the value of
993
-      the \code{name} slot.
994
-
995
-      \emph{Usage:}
996
-
997
-      \code{names(x)}
998
-
999
-      \emph{Examples:}
1000
-
1001
-      \describe{
1002
-
1003
-    \item{}{\code{names(obj)}}
1004
-
1005
-      }
1006
-    }
1007
-
1008
-    \item{names<-}{\code{signature(x="AlignedReadTrack", value="character")}:
1009
-      set the value of the \code{name} slot.
1010
-
1011
-      \emph{Usage:}
1012
-
1013
-      \code{names<-(x, value)}
1014
-
1015
-      \emph{Examples:}
1016
-
1017
-      \describe{
1018
-
1019
-    \item{}{\code{names(obj) <- "foo"}}
1020
-
1021
-      }
1022
-    }
1023
-
1024
-    \item{coords}{\code{signature(ImageMap="AlignedReadTrack")}: return the
1025
-      coordinates from the internal image map.
1026
-
1027
-      \emph{Usage:}
1028
-
1029
-      \code{coords(ImageMap)}
1030
-
1031
-      \emph{Examples:}
1032
-
1033
-      \describe{
1034
-
1035
-    \item{}{\code{coords(obj)}}
1036
-
1037
-      }
1038
-    }
1039
-
1040
-    \item{tags}{\code{signature(x="AlignedReadTrack")}: return the tags from the
1041
-      internal image map.
1042
-
1043
-      \emph{Usage:}
1044
-
1045
-      \code{tags(x)}
1046
-
1047
-      \emph{Examples:}
1048
-
1049
-      \describe{
1050
-
1051
-    \item{}{\code{tags(obj)}}
1052
-
1053
-      }
1054
-    }
1055
-  }
1056
-}
1057
-
1058
-
1059
-\section{Display Parameters}{ 
1060
-
1061
-  The following display parameters are set for objects of class
1062
-  \code{AlignedReadTrack} upon instantiation, unless one or more of
1063
-  them have already been set by one of the optional sub-class initializers,
1064
-  which always get precedence over these global defaults. See
1065
-  \code{\link{settings}} for details on setting graphical parameters
1066
-  for tracks. \describe{ 
1067
-
1068
-    \item{}{\code{collapse=FALSE}: collapse overlapping ranges and
1069
-      aggregate the underlying data.} 
1070
-
1071
-    \item{}{\code{detail="coverage"}: the amount of detail to plot the
1072
-      data. Either \code{coverage} to show the coverage only, or
1073
-      \code{reads} to show individual reads. For large data sets the
1074
-      latter can be very inefficient. Please note that \code{reads} is
1075
-      only available when the object has been created with option
1076
-      \code{coverageOnly=FALSE}.} 
1077
-
1078
-    \item{}{\code{fill="#0080ff"}: the fill color for the coverage
1079
-      indicator.} 
1080
-
1081
-    \item{}{\code{size=NULL}: the relative size of the track. Defaults
1082
-      to size selection based on the underlying data. Can be overridden
1083
-      in the \code{\link{plotTracks}} function.} 
1084
-
1085
-    \item{}{\code{type="histogram"}: the plot type, one or several in
1086
-      \code{c("p","l", "b", "a", "s", "g", "r", "S", "smooth", "histogram",
1087
-      "mountain", "polygon", "h", "boxplot", "gradient", "heatmap",
1088
-      "horizon")}. See the 'Details' section in \code{\linkS4class{DataTrack}}
1089
-      for more information on the individual plotting types.} 
1090
-
1091
-  } 
1092
-
1093
-  Additional display parameters are being inherited from the respective
1094
-  parent classes. Note that not all of them may have an effect on the
1095
-  plotting of \code{AlignedReadTrack} objects. 
1096
-
1097
-    \describe{ 
1098
-
1099
-    \item{}{\code{\linkS4class{StackedTrack}}: 
1100
-
1101
-      \describe{ 
1102
-
1103
-        \item{}{\code{reverseStacking=FALSE}: Logical flag. Reverse
1104
-          the y-ordering of stacked items. I.e., features that are
1105
-          plotted on the bottom-most stacks will be moved to the top-most
1106
-          stack and vice versa.} 
1107
-
1108
-        \item{}{\code{stackHeight=0.75}: Numeric between 0 and 1.
1109
-          Controls the vertical size and spacing between stacked
1110
-          elements. The number defines the proportion of the total
1111
-          available space for the stack that is used to draw the glyphs.
1112
-          E.g., a value of 0.5 means that half of the available vertical
1113
-          drawing space (for each stacking line) is used for the glyphs,
1114
-          and thus one quarter of the available space each is used for
1115
-          spacing above and below the glyph. Defaults to 0.75.} 
1116
-
1117
-      } 
1118
-
1119
-    } 
1120
-
1121
-    \item{}{\code{\linkS4class{GdObject}}: 
1122
-
1123
-      \describe{ 
1124
-
1125
-        \item{}{\code{alpha=1}: Numeric scalar. The transparency for
1126
-          all track items.} 
1127
-
1128
-        \item{}{\code{alpha.title=NULL}: Numeric scalar. The transparency
1129
-          for the title panel.} 
1130
-
1131
-        \item{}{\code{background.legend="transparent"}: Integer or
1132
-          character scalar. The background color for the legend.} 
1133
-
1134
-        \item{}{\code{background.panel="transparent"}: Integer or
1135
-          character scalar. The background color of the content panel.} 
1136
-
1137
-        \item{}{\code{background.title="lightgray"}: Integer or character
1138
-          scalar. The background color for the title panel.} 
1139
-
1140
-        \item{}{\code{cex=1}: Numeric scalar. The overall font expansion
1141
-          factor for all text and glyphs, unless a more specific
1142
-          definition exists.} 
1143
-
1144
-        \item{}{\code{cex.axis=NULL}: Numeric scalar. The expansion
1145
-          factor for the axis annotation. Defaults to \code{NULL}, in
1146
-          which case it is automatically determined based on the
1147
-          available space.} 
1148
-
1149
-        \item{}{\code{cex.title=NULL}: Numeric scalar. The expansion
1150
-          factor for the title panel. This effects the fontsize of both
1151
-          the title and the axis, if any. Defaults to \code{NULL},
1152
-          which means that the text size is automatically adjusted to
1153
-          the available space.} 
1154
-
1155
-        \item{}{\code{col="#0080FF"}: Integer or character scalar.
1156
-          Default line color setting for all plotting elements, unless
1157
-          there is a more specific control defined elsewhere.} 
1158
-
1159
-        \item{}{\code{col.axis="white"}: Integer or character scalar.
1160
-          The font and line color for the y axis, if any.} 
1161
-
1162
-        \item{}{\code{col.border.title="white"}: Integer or character
1163
-          scalar. The border color for the title panels.} 
1164
-
1165
-        \item{}{\code{col.frame="lightgray"}: Integer or character
1166
-          scalar. The line color used for the panel frame, if
1167
-          \code{frame==TRUE}} 
1168
-
1169
-        \item{}{\code{col.grid="#808080"}: Integer or character scalar.
1170
-          Default line color for grid lines, both when \code{type=="g"}
1171
-          in \code{\link{DataTrack}}s and when display parameter
1172
-          \code{grid==TRUE}.} 
1173
-
1174
-        \item{}{\code{col.line=NULL}: Integer or character scalar.
1175
-          Default colors for plot lines. Usually the same as the global
1176
-          \code{col} parameter.} 
1177
-
1178
-        \item{}{\code{col.symbol=NULL}: Integer or character scalar.
1179
-          Default colors for plot symbols. Usually the same as the
1180
-          global \code{col} parameter.} 
1181
-
1182
-        \item{}{\code{col.title="white"} \code{(Aliases: fontcolor.title)}:
1183
-          Integer or character scalar. The border color for the title panels} 
1184
-
1185
-        \item{}{\code{fontcolor="black"}: Integer or character scalar.
1186
-          The font color for all text, unless a more specific definition
1187
-          exists.} 
1188
-
1189
-        \item{}{\code{fontface=1}: Integer or character scalar. The
1190
-          font face for all text, unless a more specific definition exists.} 
1191
-
1192
-        \item{}{\code{fontface.title=2}: Integer or character scalar.
1193
-          The font face for the title panels.} 
1194
-
1195
-        \item{}{\code{fontfamily="sans"}: Integer or character scalar.
1196
-          The font family for all text, unless a more specific definition
1197
-          exists.} 
1198
-
1199
-        \item{}{\code{fontfamily.title="sans"}: Integer or character
1200
-          scalar. The font family for the title panels.} 
1201
-
1202
-        \item{}{\code{fontsize=12}: Numeric scalar. The font size for
1203
-          all text, unless a more specific definition exists.} 
1204
-
1205
-        \item{}{\code{frame=FALSE}: Boolean. Draw a frame around the
1206
-          track when plotting.} 
1207
-
1208
-        \item{}{\code{grid=FALSE}: Boolean, switching on/off the plotting
1209
-          of a grid.} 
1210
-
1211
-        \item{}{\code{h=-1}: Integer scalar. Parameter controlling the
1212
-          number of horizontal grid lines, see \code{\link{panel.grid}}
1213
-          for details.} 
1214
-
1215
-        \item{}{\code{lineheight=1}: Numeric scalar. The font line
1216
-          height for all text, unless a more specific definition exists.} 
1217
-
1218
-        \item{}{\code{lty="solid"}: Numeric scalar. Default line type
1219
-          setting for all plotting elements, unless there is a more
1220
-          specific control defined elsewhere.} 
1221
-
1222
-        \item{}{\code{lty.grid="solid"}: Integer or character scalar.
1223
-          Default line type for grid lines, both when \code{type=="g"}
1224
-          in \code{\link{DataTrack}}s and when display parameter
1225
-          \code{grid==TRUE}.} 
1226
-
1227
-        \item{}{\code{lwd=1}: Numeric scalar. Default line width setting
1228
-          for all plotting elements, unless there is a more specific
1229
-          control defined elsewhere.} 
1230
-
1231
-        \item{}{\code{lwd.border.title=1}: Integer scalar. The border
1232
-          width for the title panels.} 
1233
-
1234
-        \item{}{\code{lwd.grid=1}: Numeric scalar. Default line width
1235
-          for grid lines, both when \code{type=="g"} in \code{\link{DataTrack}}s
1236
-          and when display parameter \code{grid==TRUE}.} 
1237
-
1238
-        \item{}{\code{lwd.title=1}: Integer scalar. The border width
1239
-          for the title panels} 
1240
-
1241
-        \item{}{\code{min.distance=1}: Numeric scalar. The minimum
1242
-          pixel distance before collapsing range items, only if
1243
-          \code{collapse==TRUE}. See \code{\link{collapsing}} for details.} 
1244
-
1245
-        \item{}{\code{min.height=3}: Numeric scalar. The minimum range
1246
-          height in pixels to display. All ranges are expanded to this
1247
-          size in order to avoid rendering issues. See \code{\link{collapsing}}
1248
-          for details.} 
1249
-
1250
-        \item{}{\code{min.width=1}: Numeric scalar. The minimum range
1251
-          width in pixels to display. All ranges are expanded to this
1252
-          size in order to avoid rendering issues. See \code{\link{collapsing}}
1253
-          for details.} 
1254
-
1255
-        \item{}{\code{reverseStrand=FALSE}: Logical scalar. Set up the
1256
-          plotting coordinates in 3' -> 5' direction if \code{TRUE}.
1257
-          This will effectively mirror the plot on the vertical axis.} 
1258
-
1259
-        \item{}{\code{rotation=0}: The rotation angle for all text
1260
-          unless a more specific definiton exists.} 
1261
-
1262
-        \item{}{\code{rotation.title=90} \code{(Aliases: rotation.title)}:
1263
-          The rotation angle for the text in the title panel. Even
1264
-          though this can be adjusted, the automatic resizing of the
1265
-          title panel will currently not work, so use at own risk.} 
1266
-
1267
-        \item{}{\code{showAxis=TRUE}: Boolean controlling whether to
1268
-          plot a y axis (only applies to track types where axes are
1269
-          implemented).} 
1270
-
1271
-        \item{}{\code{showTitle=TRUE}: Boolean controlling whether to
1272
-          plot a title panel. Although this can be set individually
1273
-          for each track, in multi-track plots as created by
1274
-          \code{\link{plotTracks}} there will still be an empty
1275
-          placeholder in case any of the other tracks include a title.
1276
-          The same holds true for axes. Note that the the title panel
1277
-          background color could be set to transparent in order to
1278
-          completely hide it.} 
1279
-
1280
-        \item{}{\code{v=-1}: Integer scalar. Parameter controlling the
1281
-          number of vertical grid lines, see \code{\link{panel.grid}}
1282
-          for details.} 
1283
-
1284
-      } 
1285
-
1286
-    } 
1287
-
1288
-  } 
1289
-
1290
-}