segmentByCBS() had an internal bug which triggered an
error on could not find function "nbrOfSegments", which
began with future 1.40.0.Removed defunct append() for
AbtractCBS.
Removed defunct load() and save() for
AbtractCBS.
After removing the above functions, library(PSCBS)
no longer reports on functions being masked.
wtd.quantile() function. Instead, we have
adopted its GPL (>=2) code. The reason for doing so is that
Hmisc no longer installs out of the box on platforms,
e.g. macOS M1, but also that Hmisc has a large number
of package dependencies, which adds an unnecessary installation weight
to the PSCBS package for this single function.segmentByCBS() and
segmentByPairedPSCBS() would produce warnings on possibly
unreliable random numbers due to parallel processing in the case they
segmented multiple chromosomes or segments.
Fixed a few partial getSegments() argument name
matching (splitter -> splitters).
append(x, y) for CBS and
PSCBS objects, deprecated since v0.64.0 is defunct; use
c(x, y) instead.
save() for CBS and PSCBS
objects and corresponding CBS$load() and
PSCBS$load() methods are defunct. We recommend to use
base-R functions saveRDS() and readRDS()
instead. If backward compatibility with the defunct save()
and load() methods, the saveObject() and
loadObject() functions from the R.utils
package can be used.
report() for Paired PSCBS
results will now provide an estimate of normal contamination together
with a disclaimer.A sanity check in segmentByPairedPSCBS() could
produce an error on
'length(x) = 5 > 1' in coercion to 'logical(1)' when
running with _R_CHECK_LENGTH_1_LOGIC2_=true. This bug did
not affect the results of PSCBS.
Report templates used by report() would produce
error
Error in unit(x, default.units) : 'x' and 'units' must have length > 0
if there are too few loci to plot. This would typically happen when
reporting on human chromosome 25 results.
preserveScale of
segmentByPairedPSCBS() is now defunct.c() for CBS and PSCBS
objects.segmentByCBS() no longer performs garbage collection,
which happened indirectly via a system.time() call that
does GC by default.plotTrack() for CBS objects would produce
error Argument 'Clim' is not a vector: NULL when the
signal type was unknown. Now it will assume (non-logged) copy-number
ratios so it can choose a default Clim range.Removed bootstrapDHByRegion(), which was defunct
since 0.44.0 (Feb 2015).
append(x, y) for CBS and
PSCBS objects is deprecated; use c(x, y)
instead.
Use of argument preserveScale for
segmentByPairedPSCBS() is now deprecated and ignored. it’s
value is now fixed to FALSE, which has been the default since
PSCBS 0.50.0 (Oct 2015).
estimateDeltaCN() for PairedPSCBS
gained argument flavor and new estimator
flavor = "delta(mode)".
Added isLocallyPhased() for
PSCBS.
Now package imports aroma.light instead of only suggesting it.
Package tests no longer test against the deprecated ‘lazy’ strategy of future.
Added normalizeTotalCNs() for PSCBS
objects.
REPORTS: Updated report template for PairedPSCBS
object such that reports are also generated from DH-only data, i.e. when
there are no BAF signals (which may happen with DNA-Seq data).
Added splitters = TRUE as the default for
setSegments().
segmentByPairedPSCBS() gained argument rho
for paired PSCBS segmentation on total CNs (TCNs) and
decrease-of-heterozygosity signals (DHs) as an alternative to for
instance TCN and allele B fractions (BAFs).PARALLEL: Add support for parallel processing via futures by
utilizing the future package. Parallel segmentation
over multiple chromosomes (or known segments) done by
segmentByCBS() and segmentByPairedPSCBS() is
enabled by future::plan("multicore").
REPRODUCIBILITY: Whenever argument seed is given,
the L’Ecuyer-CMRG stream is now used to generate random numbers. For
backward compatibility with other types of random number generators,
don’t specify argument seed but instead use
set.seed() to set the seed before calling the
method.
preserveScale for
segmentByPairedPSCBS() defaults to FALSE. In the past the
default has effectively been TRUE, but has given a warning since v0.43.0
(June 2014) that it eventually will be changed to FALSE. Now it will
give a warning that it has changed, unless the option is explicitly
specified. This new warning will eventually be removed in a future
version.append() for
CBS or PSCBS fail.segmentByCBS(, ..., w, knownSegments) would give
internal assertion errors if one of the priorly known segments would
have zero data points. Thanks to Kirill Tsukanov (Moscow) and Eric
Talevich (UCSF) for reporting on this.segmentByCBS() gained argument
avg.
Add writeWIG() for CBS
objects.
pruneByHClust() no longer gives a message about
method "ward" is now named "ward.D".
Added skip = TRUE to report().
plotTracks() for CBS ignored arguments
cex, col and meanCol if two or
more chromosomes were plotted.
joinSegments(), resetSegments(), and
pruneBySdUndo() gave errors for multi- chromosome (>= 2)
segmentation results.
segmentByCBS() would ignore argument w
(weights) if more than one chromosome was fitted.
tileChromosomes() for CBS returned
incorrect locus data.
gapsToSegments(gaps) gave an error if
nrow(gaps) == 0, or it contained no chromosome
column.
findLargeGaps() could return NULL. Now it always
returns a data.frame.
The report() RSP-embedded TeX templates for
CBS and PairedPSCBS data did not escape sample
and data set names to LaTeX in all places needed.
ROBUSTNESS: Package test coverage is 62%.
ROBUSTNESS: Explicitly importing core R functions.
bootstrapDHByRegion() is defunct (was
deprecated since 2013).ROBUSTNESS: Package test coverage is 58%.
ROBUSTNESS: Forgot to declare some S3 methods in NAMESPACE.
SPEEDUP: Now using more functions of matrixStats.
Now segmentByPairedPSCBS() gives a warning about
future change of the default value of argument
preserveScale (from current TRUE to FALSE). The warning
only appears if the argument is not specified explicitly.
Package now requires R (>= 3.0.0) and Bioconductor (>= 2.13), which were released April 2013 and are in fact old and it’s recommended to use a more recent version of R.
Now using use() of R.utils where
possible.
Bumped package dependencies.
pruneByHClust() for PairedPSCBS would give
an error on
unable to find an inherited method for function 'anyMissing' for signature '"PairedPSCNSegments"',
unless the object contained bootstrap statistics. This is no longer
needed. Thanks to Junsong Zhao, Los Angeles, CA for reporting on
this.Minor speedup (a few percents) by now byte compiling the package by default.
CLEANUP: Dropped unnecessary usage of ::.
Bumped package dependencies.
GENERALIZATION: Now callROH() also works if paired
PSCBS was done with only muN available (and not
betaN). In that case, it assumes that all genotype
confidence scores are equal.
Updated the ordering and the defaults of testROH()
arguments to make it clear that betaN is optional and only
used if csN is not given.
As an alternative to argument CT,
segmentByPairedPSCBS() now accepts arguments
thetaT and thetaN, in case CT is
calculated as CT = 2 * thetaT / thetaN.
in max(c(NA_integer_, NA_integer_), na.rm = TRUE) : no non-missing arguments to max; returning -Inf.callROH() could throw
Error in if (is.na(delta)) { : argument is of length zero.preserveScale to
segmentByPairedPSCBS(), which is passed as is to
normalizeTumorBoost() with the default being TRUE
corresponding to the previous default behavior.unTumorBoost() to recalculating the segment means
and other statistics for a given PairedPSCBS profile based
on non-TumorBoosted tumor BAFs (rather than TumorBoost:ed tumor
BAFs).Now estimateKappaByC1Density() give more informative
error messages if it failed to identify modes for estimating the
parameter.
Added argument from to
estimateKappaByC1Density().
updateMeansC1C2() for PairedPSCBS did
not handle missing values (= “splitters”) in the c1c2Swap
field.
updateMeans() for PairedPSCBS and
NonPairedPSCBS returned the incorrect DH segment levels for
region in AB if adjustFor = "ab" and likewise for segments
in LOH if adjustFor = "loh". This bug does not
affect any of PSCBS methods themselves, because none of
them utilize those adjustFor options.
all.equal() for CBS would pass the
first/dispatch argument to NextMethod() as
target = target and not as object = target,
which would result in it being passed it twice both named and non-named
where the latter would become argument
tolerance = target in an internal call to
all.equal() for numerics. In recent R-devel version this
would generate
Error in all.equal.numeric(target[[i]], current[[i]], check.attributes = check.attributes, : 'tolerance' should be numeric Calls: stopifnot ... all.equal.default -> all.equal.list -> all.equal -> all.equal.numeric.segmentByPairedPSCBS() asserts that
argument muN is not all NAs. Similarily, if
muN is called from betaN the same assertion is
done after calling.estimateDeltaCN() for CBS have the
option to estimate the size of a copy-number unit based on the
change-point magnitutes, in addition to the estimator based on the
density of segment means.getChangePoints() for CBS returned empty
results.dropSegmentationOutliers().Added callGLAO() for CBS.
Added encodeCalls() for data.frame
object returned by
getLocusData(..., addCalls = TRUE).
Added clearCalls() for
AbstractCBS.
Added extractSegmentDataByLocus() for
PairedPSCBS.
estimateDeltaCN() for CBS assumed
aroma.light was attached.estimateDeltaCN() for CBS. Added
package system test.callGainsAndLosses() for CBS would not
estimate the median median CN level correctly if there were “empty”
segments (e.g. gaps). This was/is due to a bug in
segments.summary() of the DNAcopy package.
Instead, we are now calculating the segment median levels ourselves.
Added a system package test for callGainsAndLosses().setLocusData() and
setSegments() for AbstractCBS.plotTracksManyChromosomes() for
PairedPSCBS also supports tracks "c1,c2",
"c1", and "c2".plotTracksManyChromosomes() uses the locus data
field rho when plotting DH locus-level data. It only
recalculates it from the tumor BAFs if the DH signals are not available
- if so a warning is generated.rho signals returned by
getLocusData(..., fields = "full") for
PairedPSCBS would have values also for homozygote
SNPs.Now all warnings generated by DNAcopy::CNA() are
suppressed, including the common one on
array has repeated maploc positions.
Added getBootstrapLocusSets() for
PairedPSCBS. Added a package system test for it.
Added argument subset to
applyByRegion() for PairedPSCBS.
Added clearBootstrapSummaries() for
PairedPSCBS.
SPEEDUP: Added argument cache to
bootstrapSegmentsAndChangepoints(), which caches the
results to file if cache = TRUE.
plotTracks() for PairedPSCBS would use
argument Clim for Blim as well, regardless of
what argument Blim is. This bug was introduced in
v0.38.3.CLEANUP: Removed a few unnecessary NAMESPACE imports.
Bumped package dependencies.
plotTracks() for CBS and
PSCBS gives a more informative error if Clim
or Blim is invalid. If using "auto" (only for
CBS) and the limits could not be inferred due to an unknown
or unset signal type, an informative error message reports on this as
well.Now the package vignettes are in vignettes/, and not
in inst/doc/, which will not be supported by R (>=
3.1.0).
ROBUSTNESS: The overriding of append() to become a
generic function does now call base::append() in the
default, instead of copy the latter. All this will eventually be
removed, when proper support for c, [,
[[ etc. has been added everywhere.
CLEANUP: Now explicitly importing only what is needed in NAMESPACE.
getSmoothLocusData() for CBS also
returns column count which specifies the number of (finite)
loci averaged over in each bin.Vignette ‘Total copy-number segmentation using CBS’ would display the same plot as vignette ‘Parent-specific copy-number segmentation using Paired PSCBS’.
Renamed vignette ‘Paired PSCBS’ to ‘Parent-specific copy-number segmentation using Paired PSCBS’.
tileChromosomes() for CBS did not set the
tiledChromosomes attribute due to a typo. This caused
plotTracks() for CBS to horizontally misplace
the plotted segment levels. Added a system tests for this for
CBS and PairedPSCBS objects. Thanks to Ilari
Scheinin at VUMC for reporting on this.SPEEDUP: R CMD check is now significantly faster due
to copying of pre-generated calculations (“memoization”). For instance,
the the same segmentation tests are roughly 40% faster compared to
version 0.37.2.
Now PSCBS imports R.cache (used to only suggest it).
SPEEDUP: Now utilizing matrixStats functions in more places.
ROBUSTNESS: Further improved how aroma.light is handled for backward compatibility.
Bumped package dependencies.
CLEANUP: Now package avoids attaching suggested packages such as
R.cache, aroma.light, and
Hmisc by only importing the set of functions needed via
::. This way those packages are only loaded. Packages that
still need to be attached are done so “quietly”.
CLEANUP: Minor adjustments to some of the internal workarounds for older versions of matrixStats and aroma.light.
Forgot to import several functions from matrixStats. These went undetected because aroma.light (<= 1.31.5) attaches the matrixStats.
segmentByPairedPSCBS() assumed
aroma.light was attached.
One of the system tests assumed R.utils was attached.
WORKAROUND: For now, package attaches the utils package. This is needed due to what appears to be a bug in how R.oo finalizes Object:s assuming utils is attached, which may not be the case (unless R.oo itself is attached).
callGNL() for PairedPSCBS used
non-defined verbose object.
CLEANUP: Package no longer attaches R.utils, only imports it.
ROBUSTNESS: Now package imports only what is needed from DNAcopy.
Added vignette ‘Total copy-number segmentation using CBS’.
WORKAROUND: For R (< 3.0.0), hclustCNs() for
AbstractCBS would generate
Error in rowAlls(ok) : could not find function "loadMethod".
This seems to be a bug in R (< 3.0.0), which we can avoid by
attaching the methods package in
hclustCNs().
ROBUSTNESS: Now package imports matrixStats (previously suggested).
ROBUSTNESS: Now package declares S3 methods in the NAMESPACE.
ROBUSTNESS: Package vignettes no longer assumes that the R.rsp package is attached.
ROBUSTNESS: Forgot to import
R.methodsS3::appendVarArgs().
Bumped package dependencies.
:::.extractMinorMajorCNs() for
PairedPSCBS acknowledge additional fields related to
(C1,C2).segmentByNonPairedPSCBS().Updated the Makefile for the vignettes and added
.Rinstignore such that auxiliary (bib and bst) LaTeX files
are not installed but part of the build so they are available to
R CMD check, which is recently needed by R devel.
Bumped package dependencies.
rm(x) with
x <- NULL, cf. R-devel thread ‘Assigning NULL to large
variables is much faster than rm() - any reason why I should still use
rm()?’ on May 25, 2013.\usage{} lines are at most 90
characters long.Now estimateDeltaCN() for PairedPSCBS
adjust for the ploidy, if set.
Added ploidy() and ploidy()<- for
AbstractCBS.
Now tileChromosomes() no longer gives warnings on
max(i): no non-missing arguments to max; returning -Inf.
SPEEDUP: Now bootstrapTCNandDHByRegion() for
PairedPSCBS always estimates the default quantiles in
addition to any requested ones.
SPEEDUP: Made bootstrapTCNandDHByRegion() much
faster by adding use.names = FALSE to two internal
unlist() statements.
updateMeans() for PairedPSCBS and
NonPairedPSCBS could include a signal from a neighboring
segment when averaging, iff that signal was located at the exact locus
of the change point. Thanks Ingrid Lonnstedt (WEHI) for reporting on
this.updateMeans() would not always preserve the
originally specified segment-mean level estimator, if different from a
(sample) mean estimator, e.g. avgDH = "median". This could
result in for instance callAB() failing on internal sanity
checks.
Segment levels drawn by plotTracks() would have
incorrect genomic locations for chromosome 2 and beyond. This bug was
introduced in v0.34.7.
startupMessage() of
R.oo.AbstractCBS.Added more arguments to plotTracks().
Now drawLevels() and
drawConfidenceBands() for CBS and
PairedPSCBS also works for multiple chromosomes.
One of the system tests for segmentByPairedPSCBS()
failed in the case when the data was downsampled (in order to meet the
CRAN requirements). The workaround is to use a fix deltaAB
parameter in that case.
Internal calcStatsForCopyNeutralABs() would give an
error if there was exactly two AB segments.
plotTracks(fit, callLoci = TRUE) would color loci
incorrectly if more than one chromosome are plotted.callROH() gives an informative error if called on a
NonPairedPSCBS object.plotTracks().callGainNeutralLoss(), utilizes
callCopyNeutral() by default.dropChangePoints() faster by only
updating the segment statistics/means at the very end.callCopyNeutralByTCNofAB() for PairedPSCBS
calls segments; it is now a bit more conservative in rejecting
NTCN.ROBUSTNESS: Now calcStatsForCopyNeutralABs() for
PairedPSCBS does a better job in identifying the TCN mode
of the AB segments.
Added argument flavor to
findNeutralCopyNumberState() specifying how to identify the
main mode of the AB segments.
VISUALIZATION: Now plotTracks() for
PairedPSCBS displays thresholds for calling AB, LOH and and
NTCN.
tauA and tauB in the help for
segmentByNonPairedPSCBS().getLocusData() for PairedPSCBS and
NonPairedPSCBS.Updated the vignettes and the report templates to utilize the new ggplot2 themes - ggplot2 no longer gives a warning on using deprecated functions.
Now report() for AbstractCBS also
includes files listed in the optional file .install_extras
of the source RSP template directory. The same filename is used by
R CMD build/check for including additional source files
needed to build the vignettes.
Authors@R field to the DESCRIPTION.testROH(). This
was done in response to the CRAN farm lowering its precision on some
hosts.typeOfWeights to
estimateKappaByC1Density() for PairedPSCBS,
and hence indirectly to estimateKappa(). The default is
typeOfWeights = "dhNbrOfLoci", which may give too much
overall weight to very long segments causing the estimator to fail when
there are only a few number of “C1 = 0” segments. An alternative is to
use typeOfWeights = "sqrt(dhNbrOfLoci)".bootstrapTCNandDHByRegion() for
PairedPSCBS did not bootstrap from all available loci when
calculating total CNs statistics, iff the segment had been called
run-of-homozygosity (ROH). Internal validation tests caught this. Thanks
to Oscar Rueda at the Cancer Research UK Cambridge Institute for
reporting on this.VignetteBuilder field to DESCRIPTION.bootstrapTCNandDHByRegion().pruneByHClust() drops any existing segment calls
and quantile mean-level estimates.resetSegments() for AbstractCBS,
which drops extra segments columns (e.g. bootstrap statistics and calls)
except those obtained from the segment algorithm.avgDH = "median" to the
PSCBS vignette’s ‘Experimental’ section.segmentByPairedPSCBS(..., avgDH = "median") only worked
for single- chromosome data. Same for avgTCN = "median".
Thanks Ritu Roy at UCSF for reporting on this.Added arguments avgTCN and avgDH to
segmentByPairedPSCBS().
Now updateMeans() and
updateMeansTogether() methods can estimate the mean levels
either by the sample mean or the median.
CLEANUP: Now packages R.methodsS3 and R.oo are only imported.
CLEANUP: Package no longer explicitly imports digest.
bootstrapTCNandDHByRegion() works
for more “flavors”, e.g the default ("tcn") used by
segmentByNonPairedPSCBS().example(segmentByNonPairedPSCBS) was for the
paired case.R CMD check.whichVector() with
which(), because the latter is now the fastest again.Bumped package dependencies.
CRAN POLICY: Made the examples run faster for
R CMD check.
... to
NextMethod(), cf. R-devel thread “Do not pass ‘…’
to NextMethod() - it’ll do it for you; missing documentation, a bug or
just me?” on Oct 16, 2012.plotTracks() [and
plotTracksManyChromosomes()] draws segment levels such that
it is easier to see them even when they are overlapping.SPEEDUP: By default bootstrapTCNandDHByRegion() for
PairedPSCBS no longer do sanity checks within the bootstrap
loop. This significantly speed up the method. To run checks, use
argument .debug = TRUE. In addition, the
callNnn() methods that need to call this method, does it by
decreasing the amount of verbose output substantially, which in turn
speeds up the process a fair bit.
Now getSegments(..., splitters = TRUE) for
CBS and PSCBS inserts NA rows wherever there
is a “gap” between segments. A “gap” is when two segments are not
connected (zero distance).
ROBUSTNESS: Now append() for CBS and
PSCBS drops column length from
knownSegments, iff it exists.
Now nbrOfChangePoints() for AbstractCBS
calculates only change points of connected neighboring
segments.
seqOfSegmentsByDP() for AbstractCBS
would not handle empty segments, which could occur if
knownSegments for instance included centromere
gaps.
segmentByCBS(... knownSegments) could return
segments for chromosome 0 even though it did not exist in the input
data.
REPORT: Now report() for AbstractCBS
looks for the RSP template in templates/, and as a backup
in templates,PSCBS/. If the latter does not exist, it is
automatically created as a soft link to templates/ of the
PSCBS package. This allows anyone to create their own
customized copy (in templates/) of the default
PSCBS RSP report.
REPORT: Now report(fit, ..., rspTags) for
AbstractCBS looks for the RSP template named
<className>(,<rspTags>),report.tex.rsp, where
<className> is class(fit)[1] and
argument rspTags is an optional comma-separated character
string/vector. This makes it possible to have different types of report
for the same class of objects.
REPORT: Added argument force to
report() for AbstractCBS. This will copy the
RSP template files again, although they are already in
reports/ output directory.
dropMissingCT to
segmentByPairedPSCBS().pruneByDP() for
AbstractCBS.Now tileChromosomes() also adjusts
knownSegments.
Added argument dropGaps to
gapsToSegments().
Updated all.equal() for AbstractCBS to
compare locus-level data, segments, and other fields.
segmentByCBS(..., undo = +Inf) returns
much faster, which is possible because there is no need to identify new
change points.undo to segmentByCBS() such that
undo = 0 (was undo = +Inf) now means that it
will not ask DNAcopy::segment() to undo the segmentation,
and such that undo = +Inf means that no changepoints will
be identified. The latter case allows you to effectively skip the
segmentation but still calculate all the CBS statistics across a set of
known segments via
segmentByCBS(..., undo = +Inf, knownSegments = knownSegments).
Arguments undoTCN and undoDH to
segmentByPairedPSCBS() are adjusted analogously.
Corresponding system tests were added.weightedMedian(),
which used to be in aroma.light.segmentByNonPairedPSCBS() forgot to specify namespace
aroma.light when trying to call
findPeaksAndValleys().minLength to
gapsToSegments(). The default is no longer to drop
zero-length (minLength == -1L) segments, because if (and
only if) such a segment contains a locus, then
segmentByNnn() will currently generate an (internal)
error.segmentByPairedPSCBS() drops loci
for which CT is missing (regardless of betaT). For instance, in rare
cases when the reference (e.g. the normal) is missing, then it may be
that CT is missing while betaT is not.segmentByPairedPSCBS() specifies
region ranges with greater precision.NTCN. The corresponding column in the
segmentation results are labeled correspondingly. The Paired PSCBS
vignette was updated accordingly.Paired PSCBS
vignette.segmentByCBS() for data frame:s does a
better job identifying the CN signals.delta for
callCopyNeutralByTCNofAB() of PairedPSCBS is
calculated via estimateDeltaCN(), which estimates the width
of the acceptance regions, used for calling copy neutral states, to be a
function of the normal contamination.all.equal(target, current) for CBS objects
would give an error if either target or
current had zero segments.writeSegments() for DNAcopy
objects.as.CNA() for DNAcopy added incorrect
chromosome splitters.
as.CNA() for DNAcopy would ignore
argument sample and always return the first
sample.
callROH() records parameter deltaROH
in the results.callLOH(..., force = TRUE) would append multiple
lohCall columns, if called multiple times.segmentByNonPairedPSCBS().segmentByPairedPSCBS(..., flavor = "tcn").segmentByPairedPSCBS() would throw
error in $<-.data.frame (*tmp*, "rho" ... if some
loci had unknown genomic positions.CBS objects (adopted from ditto
for PairedPSCBS).Paired PSCBS vignette.plotTracks(..., add = TRUE) for
PairedPSCBS would add TCNs when BAFs and DHs were
intended.report() for PairedPSCBS no longer
require non-public packages.report(), which can be handy on systems where
the default PNG device does not support the alpha channel. Example:
setOption("PSCBS::report/useAlphaChannel", FALSE).report() for PairedPSCBS.Added argument fields to getLocusData()
for PairedPSCBS.
Added renameChromosomes() to
AbstractCBS.
Added alpha version of callGainNeutralLoss() for
PairedPSCBS, which certainly will be updated in the future.
This caller is tested by the system tests.
Added dropChangePoints() for
AbstractCBS.
extractSegments() for PairedPSCBS would
return incorrect row indices, more precisely, overlapping data
chunks.
bootstrapTCNandDHByRegion() for
PairedPSCBS would resample from a subset of the intended
TCNs, iff the DH mean was non-finite while there were still heterozygous
SNPs. This introduced a bias in the estimates, which was neglectable for
large segments, but for very small segments (a few loci) it could be
relatively large.
extractSegments() for CBS
and PairedPSCBS.PairedPSCBS
taken from the aroma.cn package. Some of these may
become public later, but for they should be considered internal.findLargeGaps() did not handle missing values for
argument chromosome.
segmentByCBS(..., knownSegments = knownSegments)
would incorrectly throw a sanity-check exception if
knownSegments contains a segment with start
and stop positions being equal.
Argument calls of plotTracks() for
PairedPSCBS was ignored if more than one chromosome was
plotted.
getCallStatistics() for
CBS asserts that calls have been made. If not, an exception
is thrown.Added details to the help of callLOH() and
callAB() on the difference between (AB,LOH) = (TRUE,FALSE)
and (AB,LOH) = (TRUE,NA).
Corrected some of verbose messages of
estimateDeltaLOHByMinC1ForNonAB() for
PairedPSCBS objects.
example(segmentByPairedPSCBS) and the system tests
that are run by R CMD check are tuned to (by default) run
much faster by segmenting using fewer data points and bootstrapping
using fewer samples. This update was done to meet the new CRAN policy.
By setting environment variable _R_CHECK_FULL_ to
1 the full data set is used instead.extractSegments() for
PairedPSCBS gives an informative error message that it is
not supported if CNs were segmented using flavor
"tcn,dh".postsegmentTCN() for PairedPSCBS could
generate an invalid tcnSegRows matrix, where the indices
for two consecutive segments would overlap, which is invalid. Thanks to
Minya Pu for reporting on failed sanity check related to this.callGainsAndLosses(..., method = "ucsf-dmad") for
CBS objects.indices to
getLocusData() to be able to retrieve the locus-level data
as indexed by input data.gapsToSegments() gave invalid segments for chromosomes
with more than one gap. Now gapsToSegments() validates
argument gaps and asserts that it returns non-overlapping
segments.help("segmentByCBS") how missing values
are dealt with.plotTracks() for CBS always returns an
invisible object.pruneBySdUndo() for CBS did not work with
more than one array.Added drawChangePoints() for
AbstractCBS.
Now pruneByHClust() for AbstractCBS
updates the segment means.
Added writeSegments() for PSCBS
object.
Now print() for AbstractCBS returns
getSegments(..., simplify = TRUE).
Added argument simplify to
getSegments().
Added arguments name, tags and
exts to writeSegments() and
writeLocusData() and dropped
filename.
Added pruneByHClust() for AbstractCBS,
with implementation for CBS and
PairedPSCBS.
extractCNs() for CBS would not return a
matrix but a data.frame.
extractTotalCNs() for CBS would give an
error.Added argument updateMeans = TRUE to
callROH() for PairedPSCBS.
Now bootstrapTCNandDHByRegion() for
PairedPSCBS preserves NAs for DH and (C1,C2) quantiles, if
the DH mean level is NA, which can happen when a segment is called ROH.
This also makes sure that a segment called ROH will not be called
AB.
An internal sanity check of
bootstrapTCNandDHByRegion() for PairedPSCBS
would give an error if DH mean levels had been set to NA for segments
called ROH.
Added callSegmentationOutliers() and
dropSegmentationOutliers() for data frames.
CLEANUP: Renamed field position of the example data
to x. This helps us clean up some of the examples.
bootstrapTCNandDHByRegion() for
PairedPSCBS would give an error, if a segment did not have
any TCN signals, which can occur when known segments are specified for
Paired PSCBS.findLargeGaps() and
gapsToSegments().The internal sanity check of testROH() on weights
was slightly too conservative (required to high precision) when it came
to asserting that the sum of the weights equals one.
resegment() for PairedPSCBS called
segmentByCBS() instead of
segmentByPairedPSCBS().
Added resegment() for CBS and
PairedPSCBS for easy resegmentation.
Adjusted segmentByCBS() such that it can handle
knownSegments with chromosome boundaries given as -Inf and
+Inf.
Now argument mar for plotTracks()
defaults to NULL.
ROBUSTNESS: Added redundancy tests for
segmentByCBS() and segmentByPairedPSCBS() with
argument knownSegments.
ROBUSTNESS: Now segmentByCBS() does more validation
of knownSegments.
FIX: extractRegions() for AbstractCBS
would also show verbose output.
Now argument/parameter seed is correctly preserved
by segmentByCBS(). So is tbn for
segmentByPairedPSCBS().
segmentByPairedPSCBS() would give an error when
trying to segment DH if the TCN segment contains no data points, which
could happen if knownSegments specifies an empty segment,
e.g. centromere.
extractSegments() for CBS would throw
an error when there were multiple chromosomes.
Now segmentByCBS(..., w) stores weights
w, if given, in the locus-level data table of the returned
CBS object.
Added pruneBySdUndo() for CBS, which
does what undo.splits = "sdundo" for
DNA::segment(), but on the already segmented
results.
Now updateMeans() uses locus-specific weights, iff
available.
Added updateBoundaries() for CBS to
update (start,stop) per segment.
CORRECTNESS: Now updateMeans() for CBS
identifies loci via internal segRows field and no longer by
locations of segment boundaries, which gave slightly incorrect estimates
for “tied” loci.
Now more segmentation parameters are stored in the
CBS object.
SPEEDUP: Now segmentByCBS() will use memoization to
retrieve so called “sequential boundaries for early stopping”, iff any
of the DNAcopy::segment() arguments alpha,
nperm and eta are specified. See also
DNAcopy::getbdry().
Added method = "DNAcopy" to
estimateStandardDeviation() for CBS, which
estimates the std. dev. using
DNAcopy:::trimmed.variance().
extractSegments() for CBS would throw an
error, because in most cases it would created a corrupt internal
segRows field.Added argument oma and mar to
plotTracksManyChromosomes() for PairedPSCBS
for setting graphical parameters when add = FALSE.
Added callROH().
Added arguments from and adjustFor to
updateMeans().
extractSegment() for AbstractCBS would
give an error, because it called itself instead of
extractSegments().save() and load() methods to
AbstractCBS, which are wrappers for
saveObject() and loadObject() that assert the
correct class structure. Also, the load() method will
automatically update the class hierarchy for CBS and
PairedPSCBS objects that were saved before adding class
AbstractCBS.callAmplifications() for CBS generated
an error, if more than one chromosome were called.
The length of a segment must be defined as ‘end-start’ and not ‘end-start+1’ so that the the total length of all segments adds up correctly.
highlightArmCalls() for CBS did not
handle empty chromosomes.
getCallStatisticsByArms() for CBS threw
a error if argument genomeData did not contain exactly the
same chromosomes as in the CBS object.
mergeThreeSegments() for
AbstractCBS.segmentByPairedPSCBS(data) not to
work when data is a data frame.start and end to NAs in
knownSegments (chromosome must still be specified), it is
possible to insert an empty segment that disconnects the two flanking
segments, e.g. centromere and the two arms.segmentByCBS() via
argument knownSegments.segmentByPairedPSCBS().asMissing to dropRegions()
for AbstractCBS.Implemented extractCNs() for CBS and
PairedPSCBS.
Added extractTotalCNs() for
CBS.
Added implementation of extractRegions() for
AbstractCBS, which utilizes
extractSegments().
Added abstract extractSegments() and
extractSegment() for AbstractCBS.
Now extractTCNAndDHs() for PairedPSCBS
passes ... to getSegments().
CLEANUP: Harmonization of several method names.
CLEANUP: Internal restructuring of the source code files.
Added dropChangePoint() for
AbstractCBS, which is just a “name wrapper” for
mergeTwoSegments().
Added dropRegion() and dropRegions()
for AbstractPSCBS, where the former is a wrapper for the
latter dropRegions().
Added updateMeans() and
mergeTwoSegments() for CBS in addition already
available PairedPSCBS versions.
Relabeled column id to sampleName
returned by getSegments().
For so called “splitter” rows, not all columns returned by
getSegments() of CBS were missing
values.
The object returned by as.CBS() for
DNAcopy did not have the correct class hierarchy.
getSegments() everywhere
possible.Added all.equal() for AbstractCBS,
which does not compare attributes.
Added optional argument regions to
getCallStatistics() for CBS in order to
calculate call statistics on subsets of chromosomes, e.g. chromosome
arms.
Added drawChromosomes() for
CBS.
Added getCallStatisticsByArms(),
callArms(), and highlightArmCalls() for
CBS objects.
getChromosomeRanges() of CBS
returns a data.frame instead of a matrix, and first column is now
chromosome.GENERALIZATION: Now segmentByCBS() and
segmentByPairedPSCBS() also accepts a data.frame of
locus-level data with column names matching the locus-level arguments
accepted by the corresponding method.
GENERALIZATION: Now all segmentation result classes
(CBS and PSCBS) inherits from the
AbstractCBS class, which provides methods such as
getSampleName(), getChromosomes() and
getSegments().
callSegments() for
PairedPSCBS.drawLevels() for
PairedPSCBS allows for drawing segmentation results in
‘betaT’ space.plotTracks2(..., panels = "dh") gave an error due to a
forgotten assignment.Added formal class CBS, which holds the segmentation
results returned by segmentByCBS(). Several methods are
available for CBS objects, e.g. nbrOfLoci(),
nbrOfSegments(), nbrOfChromosomes(),
getChromosomes(), estimateStandardDeviation(),
etc.
Now segmentByCBS() always returns a CBS
object. To coerce to a DNAcopy object (as defined in the
DNAcopy class) use as.DNAcopy().
Added coerce methods as.DNAcopy() for
CBS objects and as.CBS() for
DNAcopy objects.
GENERALIZATION: Now segmentByCBS() can process
multiple chromosomes.
Added append() for CBS
objects.
plotTracksManyChromosomes() and
tileChromosomes() for CBS did not work at all
and therefore neither plotTracks() for CBS
with more than one chromosome.R CMD check is no longer giving a note
that the package loads package DNAcopy in
.onAttach().dropSegmentationOutliers() would drop an outlier
next to a change point, such that the total copy-number signal becomes
NA, then the sanity checks that TCN segments always overlaps DH segments
would fail. Now the sanity checks are aware of this special case. These
sanity checks were moved from bootstrapTCNandDHByRegion()
to segmentByPairedPSCBS(). Thanks Christine To at
University of Toronto for reporting on this.cat().Added a section to help("segmentByPairedPSCBS") on
the importance of doing a whole-genome PSCBS segmentations if calling AB
and LOH states afterward.
Made it more clear in help("segmentByPairedPSCBS")
that arguments betaT, betaN and
muN may contain NAs for non-polymorphic loci.
tcnnbrOfLoci instead of tcnNbrOfLoci.
This would cause several downstream methods to give an error. The reason
for this is that the Hmisc package, if loaded after
R.utils, overrides capitalize() in
R.utils with another (buggy?) capitalize()
function. To avoid this, we now everywhere specify explicitly that we
want the one in R.utils. Thanks Christine To at
University of Toronto for reporting on this.tileChromosomes() for PairedPSCBS was
still assuming the old naming convention of column names. This caused
plotTracks() to throw an exception when plotting multiple
chromosomes.arrowsC1C2() and arrowsDeltaC1C2() for
PairedPSCBS.estimateDeltaLOH() uses returns -Inf if all segments are
called AB, instead of throwing an exception. This will in turn make
callLOH() call all segments to be non-LOH.callAB(..., force = TRUE) would
append additional abCall columns to the segmentation table
instead of replacing existing calls.estimateDeltaLOHByMinC1AtNonAB() for
PairedPSCBS object. The test asserts that there exist
segments that are not in allelic balance, which are needed in order to
estimate DeltaLOH.chromosome for
segmentByPairedPSCBS() did not describe how to segment
multiple chromosomes in one call.tcnNbrOfSNPs and
tcnNbrOfHets were mistakenly labeled as
tcnNbrOr.... Thanks Christine Ho at UC Berkeley for
reporting on this.Clarified that argument CT should be tumor copy
number ratios relative to the normal.
Added Rd help for as.data.frame() of
PairedPSCBS.
columnNamesFlavor to
segmentByCBS().CLEANUP: Cleaned up the example():s.
Added more biocViews categories to
DESCRIPTION.
GENERALIZATION: The package can now be installed without the DNAcopy package being installed. If package is loaded without DNAcopy installed, an informative message will explain how to install it.
Added installDNAcopy(), which will install
DNAcopy from Bioconductor.
DNAcopy::nnn().Renamed package to PSCBS (from psCBS).
Renamed all arguments, variables, and functions referring to
tau to refer to delta reflecting the notation
of the Paired PSCBS paper.
Renamed options, example code and help pages to reflect new package name.
Updated references in help pages.
Now the paired PSCBS is formally referred to as ‘Paired PSCBS’.
maxC to
estimateTauLOHByMinC1ForNonAB().max to estimateTauAB() and
estimateTauLOH().minSize of callAB() and
callLOH() had no effect.Added argument minSize to callAB() and
callLOH() for PairedPSCBS.
Now the a conflicting call in
callLOH()/callAB() with argument
xorCalls = TRUE is set to NA to contrast it from a FALSE
call.
xorCalls to callLOH() and
callAB() for PairedPSCBS. When TRUE (the
default), a segment that is already called AB will never be called LOH,
and vice versa.Updated estimateTauABBySmallDH() for
PairedPSCBS to use a “symmetric” quantile
estimator.
Added argument midpoint to
estimateTauLOHByMinC1AtNonAB().
callLOH() would not store the LOH
calls.Added callLOH() for PairedPSCBS, which
in turn calls auxiliary methods.
Added estimateTauLOH() for PairedPSCBS,
which in turn calls auxiliary methods.
Now callAB(..., force = FALSE) skips the caller if
allelic-balance calls already exist.
segmentByPairedPSCBS() to
reflect the restructured AB and LOH callers.Added estimateTauABBySmallDH().
Added internal weightedQuantile().
postsegmentTCN() for PairedPSCBS could
generate an invalid tcnSegRows matrix, where the indices
for two consecutive segments would overlap, which is invalid. This was
caught with real data, but it seems to have required a very rare
combination of data in order for it to occur.estimateHighDHQuantileAtAB() for
PairedPSCBS would throw an error on an undefined
trim if verbose output was used.estimateHighDHQuantileAtAB() for
PairedPSCBS.plotTracks2() queried non-existing argument
tracks.estimateKappa() for estimating the normal
contamination.tauAB of
callABandHighAI() and callABandLowC1() to be
estimated from data using estimateTauAB().tauTCN to
estimateTauAB().flavor to estimateTauAB()
for estimating the AB threshold using alternative methods.Added trial version of new plotTracks2(), which will
later replace plotTracks(). Currently it only works for
single chromosomes.
Added support functions,
e.g. updateMeans().
Added arguments changepoints and col to
plotTracks() for PairedPSCBS.
Now plotTracks(..., add = FALSE) for
PairedPSCBS only sets up subplots if argument
tracks specifies more than one panel.
plotTracks() arguments for
PairedPSCBS.plotTracks(..., add = TRUE) for
PairedPSCBS plots to the current figure/panel.tcnSegRows and dhSegRows where not updated
by extractByRegions() for PairedPSCBS.Added estimateTauAB() for estimating the tauAB
tuning parameter when calling segments in allelic balance. Updated
example(segmentByPairedPSCBS) to illustrate how to use
it.
Added extractByRegions() for
PairedPSCBS.
postsegmentTCN(..., force = TRUE) for
PairedPSCBS also updates the TCN estimates even for
segments where the DH segmentation did not find any additional change
points.segmentByPairedPSCBS(), then the returned data object would
contain betaT identical to betaTN.callLowC1ByC1() and
callABandLowC1().range, more precisely where (range[,2]
>= range[,1]) is not true. This can happen if there is
no variation in the bootstrap estimates. Because of this we allow for
some tolerance.psCBS/sanityChecks/tolerance for
specifying the tolerance of some internal sanity checks.segRows element
returned by DNAcopy::segment(). Lots of the code was
rewritten and therefore completely new bugs may have been
introduced.Argument flavor of
segmentByPairedPSCBS() would be ignored if multiple
chromosomes were segmented.
extractByChromosome() for PSCBS would
call it self instead of extractByChromosomes().
postsegmentTCN() did not handle loci with the same
positions and that are split in two different segments. It also did not
exclude loci with missing values.The algorithm in segmentByCBS() that infers which
loci (of the ones share the same genomic positions) that should be
exclude from each segment did not take missing signals into
account.
Iff argument chromosome to
segmentByPairedPSCBS() was of length greater than one and
specified exactly one unique chromosome, then exception
Number of elements in argument 'chromosome' should be exactly 8712 not 86209 value(s)
would be thrown.
bootstrapTCNandDHByRegion() would incorrectly
include non-polymorphic loci in the set of homozygous SNPs during
resampling.
segmentByPairedPSCBS() would not accept missing
values in argument chromosome.
Now arguments ... of
segmentByPairedPSCBS() are passed to the two
segmentByCBS() calls.
Added callSegmentationOutliers(), which can be used
to identify single-locus outliers that have a genomic signal that is
clearly outside the expected range. The
dropSegmentationOutliers() sets locus outliers detected by
this method to missing values. This is useful for excluding total
copy-number outliers that otherwise can have a dramatic impact on the
non-robust CBS method.
Added optional argument chromosomes to
plotTracks() to plot a subset of all chromosomes.
Added extractByChromosomes() for
PSCBS.
Now the default confidence intervals for
plotTracks() is (0.05,0.95), if existing.
Now all call functions estimate symmetric bootstrap quantiles for convenience of plotting confidence intervals.
callABandHighAI() for PairedPSCBS used
the old DH-only bootstrap method.
The statistical sanity checks of the bootstrap estimates would give an error when only single-sided bootstrap confidence interval was calculated.
The call functions, for instance callABandHighAI(),
would throw
Error in quantile.default(x, probs = alpha) : missing values and NaN's not allowed if 'na.rm' is FALSE,
unless bootstrapTCNandDHByRegion() was run before.
ROBUSTNESS: Added more sanity checks to
bootstrapTCNandDHByRegion().
WORKAROUND: The precision of the mean levels of
DNAcopy::segment() is not great enough to always compare it
to that of R’s estimates.
bootstrapTCNandDHByRegion() would give an error if
there was only one segment.
segmentByPairedPSCBS() and
bootstrapTCNandDHByRegion() would not subset the correct
set of DH signals if there were some missing values in TCN.
Added argument calls to plotTracks()
for highlighting called regions.
Updated callAllelicBalanceByDH() and
callExtremeAllelicImbalanceByDH() to utilize
bootstrapTCNandDHByRegion().
ROBUSTNESS: Now drawConfidenceBands() of
PairedPSCBS silently does nothing if the requested
bootstrap quantiles are available.
bootstrapTCNandDHByRegion() for
PairedPSCBS would not correctly detect if bootstrap results
are already available.Now plotTracks() supports tracks
"tcn,c1", "tcn,c2", and "c1,c2"
too.
Added support for flavor "tcn&dh" in
segmentByPairedPSCBS(), which contrary to
"tcn,dh" enforces TCN and DH to have the same change
points. The default flavor is now "tcn&dh".
Added argument xlim to plotTracks()
making it possible to zoom in.
Now joinSegments = TRUE is the default for
segmentByCBS() and
segmentByPairedPSCBS().
Added argument quantiles to
plotTracks(), which if specified draws confidence bands
previously estimated from bootstrapping.
Added drawConfidenceBands() for
PairedPSCBS.
Added bootstrapTCNandDHByRegion() for
PairedPSCBS.
Added standalone joinSegments() for CBS
results.
Now segmentByPairedPSCBS() also returns minor and
major copy numbers for each segment.
Adjusted postsegmentTCN() such that the updated TCN
segment boundaries are the maximum of the DH segment and the support by
the loci. This means that postsegmentTCN() will work as
expected both when signals where segmented with
joinSegments being TRUE or FALSE.
Updated plotTracks() for PairedPSCBS
such that the TCN segmentation is colored ‘purple’ and the DH
segmentation ‘orange’ for TCN and DH only tracks.
Now it is possible to specify the boundaries of the regions to be
segmented as known change points via argument
knownCPs.
Added argument joinSegments to
segmentByCBS() and segmentByPairedPSCBS() in
order to specify if neighboring segments should be joined or
not.
Now segmentByCBS() and
segmentByPairedPSCBS() allow for unknown genomic positions
as well as missing total CN signals.
joinSegments to
segmentByCBS() in order to specify if neighboring segments
should be joined or not.Added plotTracks() and drawLevels()
etc. to CBS results.
Now segmentByCBS() allows for unknown genomic
positions.
Now segmentByCBS() allows for missing
signals.
Added argument preserveOrder to
segmentByCBS(). If TRUE, then the loci in the returned
data object are ordered as the input data, otherwise it is
ordered along the genome.
data object returned by
segmentByCBS() contains field index if and
only if the loci had to be reorder along the genome.segmentByPairedPSCBS()
would fail to infer which they were if and only if the loci were not
ordered along the genome. This could happen with for instance Affymetrix
GenomeWideSNP_6 data.cex = 1 to
plotTracks().plotTracks().segmentByCBS() tried to pass non-existing argument
undo.split to DNAcopy::segment(). It should be
undo.splits.stop() statement left in
segmentByPairedPSCBS() causing an “error” in the rare case
when loci that have the same physical locations are split into two
different segments.bootstrapDHByRegion() uses
resample() of R.utils.bootstrapDHByRegion() did not sample from the correct
unit(s) when there was only one DH signal.Added arguments undoTCN and undoDH to
segmentByPairedPSCBS().
Added argument undo to segmentByCBS(),
which corresponds to undo.splits = "sdundo" and
undo.SD = undo, if undo < +Inf.
alphaTCN and alphaDH of
segmentByPairedPSCBS() were not used when more than one
chromosome were segmented.alphaAB and alphaHighAI to
callABandHighAI().bootstrapDHByRegion() would give an error if only a
single quantile was requested.
bootstrapDHByRegion() would give
Error in if (nbrOfUnits > segJJ[, "dh.num.mark"]) { : missing value where TRUE/FALSE needed
when dh.num.mark was NA.
Now the default is a 95% confidence interval for calls.
Now segmentByCBS() also returns element
lociNotPartOfSegment, if there are segments that share end
points, which can happen if a change point is called in middle of a set
of loci that have the same genomic positions. In such cases,
lociNotPartOfSegment specifies which loci are not
part of which segment. Then by identifying the loci that are within a
segment by their positions and excluding any of the above, one knows
exactly which loci CBS included in each segment.
Now bootstrapDHByRegion() for
PairedPSCBS handles the rare case when markers with the
same positions are split in two different segments.
Now the correct set of loci are extracted from each TCN segment, in the rare case that two neighboring TCN segments have the same end points.
ciRange to
callAllelicBalance() and
callExtremeAllelicImbalance().bootstrapDHByRegion() for PairedPSCBS
would bootstrap from the incorrect set of loci when the DH region
contained only one locus.
bootstrapDHByRegion() for PairedPSCBS
would bootstrap from the incorrect set of loci if more than one
chromosome was available.
plotTracks() would give
Error: object 'nbrOfLoci' not found for whole-genome
plots.plotTracks() can plot whole-genome data.alphaTCN and alphaDH to
segmentByPairedPSCBS() with defaults according to the
paper.segmentByPairedPSCBS() can segment multiple
chromosomes.tbn to
segmentByPairedPSCBS() specifying whether
TumorBoostNormalization should be applied or not.segmentByPairedPSCBS() is now to
segment TCN on the original scale, not the sqrt().plotTracks() for PairedPSCBS.chromosome to
segmentByCBS(). Note that at this point it is only used for
annotating the results; it can not be used to segmented multiple
chromosomes at ones.subsetBySegments() and
postsegmentTCN() for PairedPSCBS handles
multiple chromosomes.postsegmentTCN() for PairedPSCBS,
which updates the TCN segment start and ends, estimates and counts given
the DH segments.chromosome to
segmentByPairedPSCBS(), which, if given, adds a chromosome
column to the data and segmentation results.plot() for PairedPSCBS used a non-defined
variable.callABandHighAI() for calling paired PSCBS
segmentation results.PSCBS class.Added more methods for the PSCBS class.
Now segmentByPairedPSCBS() also returns the
TumorBoost normalized data.
segmentByPairedPSCBS() to provide two-step
segmentation from first segmenting the total copy numbers and then the
decrease-of-heterozygosity signals. Added utility functions for plotting
the results. The code for calling allelic imbalance and LOH is still to
be added.segmentByCBS() also works if there are no data
points.callNaiveHeterzygotes(), which is a cleaned up
version of findheterozygous(). Added Rd example that
asserts that the two are identical and compares the calls to those of
aroma.light::callNaiveGenotypes().Added low-level segmentByPairedPSCBS(), which runs
paired PSCBS segmentation on a single sample and a single chromosome. It
only segments; it does not call segments. This is only a stub in the
sense that it still does not adjust p-values etc.
Added low-level segmentByCBS(), which runs CBS
segmentation on a single sample and a single chromosome.
BACKWARD COMPATIBILITY: Now psCNA() returns a list
of length 8.
Reverted psSegment() back to v0.5.6.
Now psSegmentPaired() returns a data frame (no
longer a matrix).
CLEANUP: Created psSegmentPaired() from
psSegment().
CLEANUP: Major cleanup, i.e. renaming variables, reordering etc.
ROBUSTNESS: Replaced all 1:n with
seq(length = n) to deal with n == 0.
ROBUSTNESS: Now all list elements are referenced by name.
ROBUSTNESS: Now all iterator variables are written as
ii, jj, etc.
Using setMethodS3() of R.methodsS3
to define S3 methods.
Dropping NAMESPACE while package is finished. This makes it easier to patch methods, etc.
example(psSegment).Previous clean up introduced bugs.
The dynamic library for hrmode() was not
loaded.
Added internal hrmode().
CLEANUP: Renamed source files to match function names. Only only function per source file.
psSegment(..., matching.reference = TRUE) does
TumorBoost normalization on the allele B fractions before
segmentation.