Read Applied Biosystems ABIF files in a Jennifer
program: Sanger traces (.ab1), fragment-analysis runs (.fsa) and 3500
HID runs (.hid). Every element type, raw and analysed traces per dye, dyes,
base calls with qualities and peak locations, and the sample and run
metadata. The directory is checked against the file before anything is read.
jvc add @deckyard/abifThis vendors the deck to vendor/<scope>/abif/. Without jvc, unpack the
src/ subtree of a release archive (<scope>-abif-<version>.tar.gz) there.
import "@deckyard/abif/" as abif;
def f as abif.File init abif.open("sample.ab1");
def i as abif.Info init abif.info($f);
def c as abif.Calls init abif.calls($f);
io.printf("%s (%s): %d bases\n", $i.sample, $i.well, len($c.bases));
Jennifer 0.26.0 or newer. No capabilities.
The traces, peak tables and most dye names of a 3500 HID file are encrypted; the deck reads that file's metadata, not its signal.
tools/check-all.sh # the full gate, as CI runs it
jennifer test src/abif_test.j # the test overlay
tools/check-docs.sh # docs against the code
tools/pack.sh dist # build the release archiveLGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <mplx@jennifer-lang.dev>.
tools/check-headers.sh checks every source file's SPDX header against
deck.toml. The sample files in testdata/ have their own licences; see
testdata/README.md.