Dario, As Martin mentioned Rle methods for runsum, runwtsum, runmean, viewSums, and viewMeans could be more numerically precise, perhaps by following base R's lead and use long doubles, when available. However, since floating point arithmetic has only finite precision, this will only make the problem less pervasive, not remove it entirely.
Here are some tricks you can employ to get around this issue: 1) If your metric has a handful of significant digits, create integers out of your decimal values and operate on those integers. For example, library(IRanges) x <- Rle(seq(0.9999, 1, length = 100) * pi, 1:100) x shiftDecPlaces <- 5 runValue(x) <- as.integer(round((10^shiftDecPlaces) * runValue(x), shiftDecPlaces)) x means <- round(runmean(x, 21, endrule = "constant")/(10^shiftDecPlaces), shiftDecPlaces) means 2) If you want to focus on forcing small numbers (in absolute terms) to be zero, use zapsmall on the run values library(IRanges) x <- Rle(c(-1, seq(-1e-16, 1e-16, length = 98), 1), 1:100) x runValue(x) <- zapsmall(runValue(x), digits = 7) x These techniques can be extended to RleList objects as well, so you might want to experiment with your data to see what might suit your needs best. Cheers, Patrick ----- Original Message ----- From: "Dario Strbenac" <[email protected]> To: "Martin Morgan" <[email protected]>, "D Strbenac" <[email protected]> Cc: [email protected] Sent: Monday, February 14, 2011 2:00:26 PM Subject: Re: [Bioc-sig-seq] IRanges runmean Arithmetic Precision Ah, thanks for the pointer to the section of the FAQ. This cleared it up for me. -------------------------------------- Dario Strbenac Research Assistant Cancer Epigenetics Garvan Institute of Medical Research Darlinghurst NSW 2010 Australia _______________________________________________ Bioc-sig-sequencing mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/bioc-sig-sequencing _______________________________________________ Bioc-sig-sequencing mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/bioc-sig-sequencing
