Fixed rare bug in the peeling algorithm manifesting with reversed peeling order.
pedtools v2.2.0 is now required.
Fix bug in likelihood()
affecting singleton with partial genotype (e.g. “1/-”).
Minor optimisations in reduceAlleles()
and startdata_M()
.
More efficient oneMarkerDistribution()
and twoMarkerDistribution()
in cases without mutation models.
README updates.
The version implements several improvements in the peeling algorithm, mostly invisible to end users (except that likelihoods calculations will be noticeably faster, and use much less memory, in many cases).
Less memory footprint for untyped founders with only 1 child: Sample alleles directly, avoid complete set of genotypes.
Avoid costly 3-dimensional arrays in peeling calculations.
More efficient genotype elimination in likelihood calculations involving markers without mutation modelling. As a result, this is now enforced (rather than optional) everywhere, and the eliminate
argument is deprecated.
Added citation info.
Mutation models are now supported in likelihood2()
, providing likelihood calculations for pairwise linked markers.
New functions haldane()
and kosambi()
.
Update README.
Update package doc.
Include license (GPL >= 2).
reduceAlleles()
is faster in some cases, due to the new pedmut::lumpedModel()
.
A few minor speedups and code improvements.
merlin()
gains argument checkpath
. Set this to FALSE to avoid redundant checks of MERLIN availability.
likelihoodMerlin()
gains argument perChrom
, used to parse the chromosome-wise likelihoods from the MERLIN output.
lumpAlleles()
gains argument always
. By default lumping is skipped for markers where all individuals are genotyped, but this can cause problems e.g. with MERLIN which operates with an upper limit of alleles.
Some efforts are done to check for (and warn about) underflow/overflow in MERLIN results.
checkMerlin()
by default checks that both merlin
and minx
are available on the system, and that they both come from the latest MERLIN version.pedprobr
now depends on R 4.1 and pedtools
1.1.0.
The deprecated argument loop_breakers
has been completely removed (renamed to loopBreakers
)
likelihood.ped()
gains a new argument lump
, which activates allele lumping. This is TRUE by default, and should remain so in most cases.
Using theta correction in pedigrees with inbred founders now gives an error.
The internal peelingProcess()
now checks for unbroken loops in the pedigree. (Of interest for developers mainly.)
When calling MERLIN, the window-centric and unnecessary .exe
extensions has been removed.
Many examples have been rewritten in simpler code, taking advantage of pedtools::addMarker
and the pipe |>
.
setMutationModel(..., model = NULL)
.setMutationModel()
affecting lists of multiple pedigrees.likelihood()
has been refactored, moving the treatment of (two) linked markers to a separate function, likelihood2()
.Theta-correction is implemented in likelihood calculations, through the argument theta
of likelihood()
.
merlin()
and likelihoodMerlin()
have been overhauled.
A new function checkMerlin()
checks if MERLIN is installed and available.
merlin()
now has an argument linkageMap
facilitating analysis of linked markers.
likelihoodMerlin()
gains arguments rho
and logbase
.
New function lumpAlleles()
.
The likelihood()
function now handles multiple marker inputs. For example, the call likelihood(x, 1:2)
results in a vector of length 2 with the likelihoods of the first two markers attached to x
.
Recombination parameter theta
is renamed to rho
everywhere, to align with other ped suite packages. theta
still works, though.
Many input checks have been added, giving more useful error messages.
The data structure used in likelihood calculations is simplified and more efficient.
Likelihood computation of two linked markers (and therefore also twoMarkerDistribution()
) is much faster now.
New general MERLIN wrapper, merlin()
.
Both likelihoodMerlin()
and the new merlin()
now accepts ped lists.