jennifer registry

@jennifer/bioinformatics

sequence manipulation for DNA, RNA and protein

bioinformaticsdnarnaproteinsequence

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.

Versions

VersionStatusKindPinRequiresEnginesCapabilities
0.1.0yankedgit99a49292281b-jennifer >=0.25.0 jennifer-tiny >=0.25.0-

License

LGPL-3.0-only

Source

Released from
0.1.0
Published under
@jennifer mplx
Repository owner
deckyard

Resolutions

Times 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.

Readme

@jennifer/bioinformatics

test Documentation release

Sequence manipulation for DNA, RNA and protein, in the Jennifer language.

Transforms, composition and physical properties, pattern and feature search, FASTA and FASTQ, sequence generation, and pairwise alignment.

import "@jennifer/bioinformatics/" as bioseq;

def gene as string init bioseq.filterDna("1 atg acg tta cat gga taa");

bioseq.reverseComplement($gene);            # TTATCCATGTAACGTCAT
bioseq.translate($gene);                    # MTLHG*
bioseq.gcContent($gene);                    # 33.33
bioseq.molecularWeight($gene, bioseq.DNA);  # 5546.66

Sequences are plain strings: no Seq type to construct, no wrapper to unwrap. The package is named for the field and the alias for what the calls act on, so bioseq.reverseComplement($s) reads better in a pipeline than bioinformatics.reverseComplement($s). Nothing in the deck depends on the name the caller gives it.

The deck runs on jennifer-tiny. Nothing under src/ opens a socket, spawns a process or touches the filesystem, so it needs no capability and [engines] lists both builds.

Documentation

jennifer-language.github.io/deck-bioinformatics carries a guide per topic, a cheatsheet of the whole surface, and the design notes.

The source is docs/, built with Grimoire and published on every push to main. To read it locally:

git clone https://github.com/jennifer-language/grimoire .grimoire
jennifer run .grimoire/bin/grimoire serve

Development

jennifer test src/bioinformatics_test.j # the white-box suite
jennifer run examples/compare.j         # global and local alignment, distances
jennifer run examples/search.j          # patterns, ORFs, CpG islands, digest
jennifer run examples/manipulate.j      # random sequences, shuffle, mutate, windows
jennifer run examples/composition.j     # GC, mass, Tm, pI, GRAVY, codon usage
jennifer run examples/formats.j         # FASTA / FASTQ over testdata/
jennifer run examples/transforms.j      # complement, transcribe, translate
jennifer run examples/tables.j          # the reference data the deck carries
jennifer run examples/bench.j           # the measurements behind the conventions

jennifer fmt -l src/topics/*.j          # formatting check
jennifer lint src/bioinformatics.j      # the module, which splices every topic
jennifer lint src/bioinformatics_test.j # the test overlay, likewise
jennifer lint examples/*.j tools/*.j

jennifer run tools/gentables.j          # regenerate src/topics/tabledata.j
jennifer run tools/genenzymes.j         # regenerate src/topics/enzymedata.j

Lint reaches every line through four compilable units. A topic file cannot be linted alone, being included rather than compiled, so the module and the test overlay are what cover it through the splice.

Two topic files are generated, see tools/. Generated data and hand-written accessors live in separate files (tabledata.j vs tables.j), so regenerating never clobbers API. The measurements in examples/bench.j settled the implementation conventions and are kept so a regression shows up as a number; the story is in Design notes.

Continuous integration

workflowwhenwhat
test.ymlpush, PRfmt, lint, the header/overlay/cheatsheet guards, the suite, every example, the generator drift check, then every example again on jennifer-tiny
docs.ymlpush, PRbuild docs/ with Grimoire; publish to Pages from main
release.ymlversion tagre-run the gate, check deck.toml matches the tag, cut the release

The three workflows and the tools/check-*.sh guards are shared verbatim with the other deck repositories; tools/deck-lib.sh discovers what differs between them. tools/check-extra.sh is this deck's own hook, and is what re-runs the table generators to prove the committed data still matches them.

License

LGPL-3.0-only, see LICENSE.

This deck as JSON