Forensic and statistical genetics: STR match probabilities, kinship and paternity likelihood ratios, general-pedigree peeling, and mtDNA / Y-STR lineage markers.
forensicsgeneticsstrkinshippaternity
Every published version of this deck has been yanked. Nothing here will be chosen by a new install. A lockfile that already pins one of these versions keeps working.
| Version | Status | Kind | Pin | Requires | Engines | Capabilities |
|---|---|---|---|---|---|---|
| 0.1.0 | yanked | git | b67345181767 | - | jennifer >=0.25.0 jennifer-tiny >=0.25.0 | - |
LGPL-3.0-only
0.1.0Times a client asked this registry where to find this deck. Not downloads: the registry only stores metadata, and the code is fetched from its repository directly, so we never see an install and cannot count one. Repeated builds inflate these numbers; installs from an existing lockfile do not appear at all. Counted in UTC.
Forensic and statistical genetics for Jennifer - the statistical-genetics sibling of the sequence deck. It works on profiles (an unordered allele pair per autosomal STR locus, plus uniparental haplotypes for mtDNA and Y-STR) and on reference frequency / count data, not on sequences.
Requires Jennifer 0.25.0 or newer. Pure Jennifer over the system libraries: no deck dependencies, and nothing that stops it running on jennifer-tiny.
https://jennifer-language.github.io/deck-forensicgenetics/
The manual is the whole story - installing, the statistical model behind each estimator, worked examples, the complete API reference, and the limitations that matter before you quote a number.
| Start here | Quick start, Installing the deck |
| Casework | match probability, mixtures, kinship, paternity, pedigrees, lineage markers |
| API reference | forensicgenetics, kinship, pedigree, lineage |
| The project | Limitations, Formulae and sources, Testing and contributing |
import "@jennifer/forensicgenetics/" as forensics;
def db as forensics.FrequencyDb init forensics.withLocus(
forensics.db("example"), "D3S1358", 1034,
{"15": 0.2456, "16": 0.2314, "17": 0.2007, "18": 0.3223});
def suspect as forensics.Profile init forensics.profile("S1", [
forensics.genotype("D3S1358", "15", "16"),
forensics.genotype("TH01", "6", "9.3")
]);
def rmp as float init forensics.randomMatchProbability($db, $suspect,
forensics.THETA_GENERAL);
def lr as float init forensics.matchLikelihoodRatio($db, $suspect,
forensics.THETA_GENERAL);| Module | Import | What it does |
|---|---|---|
forensicgenetics.j | @jennifer/forensicgenetics/ | Vendor-independent core types, Hardy-Weinberg with the NRC II theta correction, RMP, single-source LR, mixture CPI / CPE |
kinship.j | @jennifer/forensicgenetics/kinship.j | IBD coefficients, relationship likelihood ratios, trio paternity with a stepwise mutation model |
pedigree.j | @jennifer/forensicgenetics/pedigree.j | General-pedigree likelihoods by Elston-Stewart peeling |
lineage.j | @jennifer/forensicgenetics/lineage.j | mtDNA and Y-STR haplotypes, Clopper-Pearson counting estimates, rCRS difference nomenclature |
The core reads no published format at all - it defines the generic FrequencyDb, and a reader deck such as @mplx/strider converts a published table into it. See Reference frequency data.
This deck implements published estimators and is tested against them, but it has not been through the validation any jurisdiction requires of software used in casework. Treat it as a library for research, teaching and cross-checking, and validate independently before it informs a real conclusion.
The bundled frequency table is synthetic - made-up numbers that exist only to exercise the examples. The full list of caveats is in Limitations; it is short, and some of it will change what you do.
Do not use this deck for a legal proceeding - a prosecution, a defence, a paternity ruling, an immigration decision, or any other legal determination. Those require validated, accredited software operated under an accredited process, and this is not that.
No warranty, no liability. This software is provided as is, without warranty of any kind, express or implied. You use it entirely at your own risk. The author accepts no responsibility and no liability for any claim, damage, loss, or other consequence arising from this software or from any number it produces. Checking that a result is correct, appropriate and lawful for your purpose is yours alone. This restates, and does not narrow or replace, the disclaimers in the licence; where they differ, the licence governs.
Full text: Not a validated forensic tool.
LGPL-3.0-only - see LICENSE.