pedtools
Creating and Working with Pedigrees and Marker Data
pedtools rewrote loop breaking and made a class of pedigrees analyzable for the first time.
◆Recent moves
- 1mo ago
Loop breaking rewrite makes intractable pedigrees analyzable
⚡ SPARKThe release the rest of the suite is now organizing around: founders can act as loop breakers, one individual can break multiple loops, and the algorithm is faster in large pedigrees. Loop detection also becomes unconditional, with detectLoops deprecated and the slow optional check replaced by one that scales. The new methods are opt-in until downstream packages support them.
View source ↗ - 6mo ago
Genotype comparison helpers and more flexible subsetting
A batch of query functions lands: isHomozygous(), sameGenotype(), expectedHomozygosity(), expectedHeterozygosity(), and addSibling(). subset() gains disconnected output and a missingParents argument, which in turn makes branch() behave more predictably.
View source ↗ - 9mo ago
mergePed() handles marker data; genotype removal simplified
mergePed() can merge pedigrees carrying marker data, removeGenotypes() replaces an unintuitive setAlleles() idiom, and extractSingletons() is added. Incremental additions to the manipulation vocabulary rather than changes to the data model.
View source ↗ - 1y ago
setSNPs() accepts genotypes; proband arrows in plots
setSNPs() can attach genotype columns rather than only empty SNPs, and the plotting layer gains proband arrows and an attempt at straight connectors. Chromosome lengths are synced with ibdsim2, one of the recurring cross-package alignments in this suite.
View source ↗ - 1y ago
trim() prunes uninformative leaves; loop breaker search sped up
trim() iteratively removes uninformative pedigree leaves and nChildren() is added, but the more consequential line is findLoopBreakers() becoming significantly faster in large pedigrees. That optimization is the midpoint of the arc between dropping igraph in 2.8.0 and the full rewrite in 2.11.0.
View source ↗ - 1y ago
igraph dependency dropped for a custom loop breaker
The igraph dependency is removed in favor of a custom loop breaker implementation that is slightly faster but may choose different loop breakers. Owning this algorithm outright is what made the 2.11.0 rewrite possible. The release also adds niblings(), piblings(), harmoniseMarkers(), and a miscarriage plot symbol.
View source ↗