mispitools 2.0.1

Fixes a test failure reported by CRAN on macOS arm64 (r-release and r-oldrel) and on the M1mac additional check, and with it a genuine platform dependence in the size of the exact LR support.

Atoms of the LR distribution

A log10 LR atom is a real number that the C++ engine and the R reference implementation reach by different arithmetic routes. On a platform whose compiler contracts a * b + c into a fused multiply-add, which is the default on aarch64, one route rounds once where the other rounds twice, and two mathematically equal atoms end up differing in the last bits. Grouping them by IEEE equality, as 2.0.0 did, then split one atom into two, so the number of support points of lr_distribution() depended on the platform and the cross-check against the reference failed on arm64 while passing on x86.

Documentation

mispitools 2.0.0

This release adds an exact computational engine alongside the simulation workflow of the 1.x series. Where 1.x estimated likelihood-ratio distributions by Monte Carlo, the new layer computes them exactly from the pedigree and the allele frequencies, so quantities such as the expected weight of evidence or a tail probability no longer carry simulation error. The kernel is written in C++ and reached through Rcpp.

All functions from 1.x remain exported and continue to work.

New: model layer

New: exact likelihood-ratio distributions

New: mutation and linkage

New: decision quantities and fragility

Verification

The engine is checked against independent implementations rather than against itself: pedprobr and pedmut for genotype distributions under mutation, Familias and forrel for per-marker likelihood ratios, and analytic results where they exist. These cross-engine comparisons run as part of the test suite.

Performance

The kernel uses OpenMP where the toolchain provides it and falls back to single-threaded execution otherwise; results are identical either way. The exact engine enumerates joint genotype states, so its cost grows with pedigree size and with the number of alleles per marker. For large pedigrees or full profiles, use method = "grid" in lr_distribution().

mispitools 1.4.0

See the CRAN release notes for the 1.x series.