####################################################################
## Author: Gro Nilsen, Knut Liestøl and Ole Christian Lingjærde.
## Maintainer: Gro Nilsen <gronilse@ifi.uio.no>
## License: Artistic 2.0
## Part of the copynumber package
## Reference: Nilsen and Liestøl et al. (2012), BMC Genomics
####################################################################
# Function that adjusts segment start and stop positions according to plot type, plot unit, xaxis etc
## Input:
### chrom: vector with segments chromosome numbers
### char.arms: vector with character arms
### start: start positions of segments
### stop: stop positions of segments
### type: plot type
### unit: unit used to represent positions
### op: list with other plot parameters
## Output:
### use.start: adjusted segment start to be used in plot
### use.stop: adjusted segement stop to be used in plot
## Required by:
### plotHeat
## Requires:
### convert.unit
### getGlobPos
### numericArms
### separateChrom
### numericChrom
adjustSegPos <- function(chrom, char.arms, start, stop, type, unit, op) {
# Make sure chromosome is numeric:
chrom <- numericChrom(chrom)
nSeg <- length(chrom)
# Get indeces where chromosome number or arm changes
if (type == "genome") {
sep <- separateChrom(chrom)
} else {
# Convert character arms to numeric:
arms <- numericArms(chrom, char.arms)
sep <- separateChrom(arms)
}
# separateChrom adds indeces 1 and nSeg; don't need these here:
sep <- sep[-c(1, length(sep))]
if (type == "genome") {
# Use global positions
start <- getGlobPos(chrom, start, pos.unit = unit, cyto.data = op$assembly)
stop <- getGlobPos(chrom, stop, pos.unit = unit, cyto.data = op$assembly)
}
use.start <- start
use.stop <- stop
# Continuous heatmap? connect halfway between end and start of two segments
if (op$continuous) {
if (nSeg > 1) {
# The heatmap should start and end halfway between two probes, except across arms/chromosomes
half <- (use.start[2:nSeg] - use.stop[1:(nSeg - 1)]) / 2
use.start[2:nSeg] <- use.start[2:nSeg] - half
use.stop[1:(nSeg - 1)] <- use.stop[1:(nSeg - 1)] + half
use.start[sep] <- start[sep]
use.stop[sep - 1] <- stop[sep - 1]
} # endif
}
# Want to scale the x-axis to fit the desired unit given in plot.unit (default is mega base pairs)
scale.fac <- convert.unit(unit1 = op$plot.unit, unit2 = unit)
use.start <- use.start * scale.fac
use.stop <- use.stop * scale.fac
return(list(use.start = use.start, use.stop = use.stop))
} # endfunction
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.