← Back to all sparks
F

forrel

ANALYTICS
Velocity0.0

Forensic Pedigree Analysis and Relatedness Inference

forrel is getting faster at the simulations forensic kinship work actually spends its time on.

forensic geneticskinship analysissimulationparallel computingperformance
Current state
forrel handles forensic pedigree analysis: kinship likelihood ratios, profile simulation, relationship checking, and missing person calculations. Version 1.9.0 synced with pedtools 2.11.0's loop handling, which the release notes credit with enabling complex pedigrees that were previously intractable, and moved profileSim() to mirai for parallelism. It also added fEstimate() for inbreeding coefficients and parentChildLikelihood() as a fast path for the simplest case.
Where it's heading
Two long threads run through the window. One is making the common operations cheap: faster simulations through reorganized likelihood calculations, a dedicated parent-child path, dropped map attribute preservation, log-likelihoods to avoid underflow in kinshipLR(). The other is making relationship checking presentable, with checkPairwise() growing ggplot2 and plotly output, verbal relationship descriptions, and bootstrap p-values. Reference data is maintained alongside both, with the FORCE SNP panel completed and an X-chromosomal counterpart added.
Prediction
With profileSim() on mirai and the loop handling synced, the next likely step is extending mirai parallelism to the other simulation-heavy functions such as exclusionPower() and the bootstrap in checkPairwise().

Recent moves

  1. 1mo ago

    mirai parallelism and faster profile simulation

    The release picks up pedtools 2.11.0 and pedprobr 1.1.0 loop handling, which makes certain complex pedigrees analyzable, and moves profileSim() to mirai with user-started daemons. Simulations get faster through reorganized internal likelihood calculations, fEstimate() and parentChildLikelihood() are added, and kinshipLR() switches to log-likelihoods to reduce underflow risk.

    View source ↗
  2. 1y ago

    FORCE SNP panel completed and X-chromosomal set added

    The FORCE dataset regains 15 SNPs previously excluded for missing frequency data, bringing it to all but one of the published autosomal kinship SNPs, and a new XFORCE dataset annotates the panel's 246 X-chromosomal SNPs. Reference data completeness rather than code, but it is what determines which published panels users can actually reproduce.

    View source ↗
  3. 1y ago

    rankProfiles() and access to special lumping

    rankProfiles() predicts the most likely profile of an untyped pedigree member, and kinshipLR() gains likArgs specifically to reach pedprobr's new special lumping and allele limits. The second is how the lumping work in pedmut and pedprobr becomes usable from forensic calculations.

    View source ↗
  4. 1y ago

    acrossComps argument and readFam() unexported

    An acrossComps argument is added to ibdEstimate() and checkPairwise(), and readFam() is no longer exported, pointing users at pedFamilias. Housekeeping in the middle of the package split.

    View source ↗
  5. 1y ago

    checkPairwise() overhauled with p-values and new plot backends

    checkPairwise() is substantially revised: ggplot2 and plotly output through an exported plotCP(), verbal relationship descriptions in a new pedrel column, the LR column renamed GLR, and optional parametric bootstrap p-values for each pairwise relationship. quickLR() and ibdLoglik() also arrive, making the routine tests one-liners.

    View source ↗
  6. 2y ago

    Familias interoperability split into pedFamilias

    The Familias file functions move to a dedicated pedFamilias package, with readFam() and writeFam() re-exported for a transition period. That transition finally ends in 1.9.0, which removes the deprecated re-export.

    View source ↗