×

nf-jev @ 0.1.0

Provider: nextflow-io
Claimed: 20 Sep 2026 15:05:41 (UTC)
Description: The `nf-jev` plugin integrates Nextflow with TypeSafe System One, a probabilistic judgment system that answers typed questions about pipeline state and returns probability distributions. It solves the problem of making deterministic branching decisions in workflows based on semantic understanding of data, enabling bioinformaticians and data scientists to gate pipeline logic on calibrated confidence scores rather than heuristics or language model hallucinations.
Latest version: 0.1.0
Total downloads: 1 View trends

Summary

nf-jev exposes TypeSafe System One judgments as ordinary Nextflow functions. A pipeline builds typed questions as values, asks them, and gates on the returned probabilities with plain Nextflow operators.

Jev is not a language model. It generates no text, holds no conversation and calls no tools: it answers typed questions about the state you give it, and returns a probability distribution over the answers you allowed. That makes it something a pipeline can branch on — unlike a number a language model reports about its own confidence, which it invented.

Four functions are provided:

  • noul (instructions) — is this true? → probability
  • choice (instructions, criteria) — which one? → winner + distribution
  • score (instructions, levels) — how much? → position + distribution
  • jev (state, questions) — answer them all against one state, in one request

Get Started

Enable the plugin in your pipeline nextflow.config:

plugins {
    id 'nf-jev@0.1.0'
}

Set your credential — either jev.apiKey in the configuration, or the TYPESAFE_API_KEY environment variable:

export TYPESAFE_API_KEY="..."

Configuration

jev {
    apiKey   = secrets.TYPESAFE_API_KEY                  // or $TYPESAFE_API_KEY
    model    = 'jev-latest'                              // pin a snapshot to fix a result
    endpoint = 'https://api.typesafe.ai/v1/systemone'
    timeout  = 30                                        // seconds, per request
    cacheDir = "$projectDir/.jev-cache"                  // unset = no caching
}

Caching

Set jev.cacheDir and responses are cached, keyed on a SHA-256 of the exact request — model, state and questions. Unset it and nothing is cached. Entries are published atomically, so concurrent runs can share a directory; an entry that will not parse is treated as a miss and the question re-asked, so a truncated file can never poison a pipeline. There is no eviction: rm -rf the directory.

Two things to know before turning it on:

  • Pin the model. With the default model = 'jev-latest' the key holds a floating alias, so cached answers keep being replayed after the alias moves to a newer snapshot. The plugin warns about this; pair cacheDir with model = 'jev-1.13.0'.
  • A cache hit freezes one draw. Repeated live calls on identical input vary a little. Caching makes a run reproducible, not the judgment — a threshold sitting exactly on a boundary will stop flapping for the wrong reason.

Keep cacheDir on a local filesystem; the atomic-publish guarantee is weaker on NFS.

Reading an answer

answers.is_human   // [type: 'noul', noul: 0.98]
answers.assay      // [type: 'choice', choice: 'RNA-seq', confidence: 0.99, probabilities: [...]]
answers.tissue     // [type: 'score', score: 1.97, confidence: 0.96, legend: [...], probabilities: [...]]

A noul has no separate confidence — the probability is the answer, and 0.5 means "equally likely either way", not "moderately". On a choice or score, confidence says how concentrated the distribution is, not whether the answer is right.

Questions sharing a state should be sent together: they are evaluated in parallel and cannot see one another's answers, so a whole rubric costs one request.

Examples

Label Samples

Fetch ENA run metadata with an ordinary process, label each run against a controlled vocabulary, and split the cohort on a calibrated confidence:

nextflow run examples/label-samples
ACCEPT SRR891268   Homo sapiens / ATAC-seq   (p=1.0, cell line p=0.95)
ACCEPT SRR031708   Drosophila melanogaster / RNA-seq   (p=1.0, cell line p=0.73)

Note SRR891268: its ENA library_strategy is the useless OTHER, and the assay is recovered from the free-text title alone.

Route

Pick a QC depth per sample and dispatch to different processes. No agent and no generated text; a low-confidence pick falls through to the more thorough branch, which is one readable line rather than a hope expressed in a prompt.

Guardrail

Screen generated text with a hazard rubric (three nouls and a severity score) in a single request, with the block/review/pass thresholds in nextflow.config:

REVIEW R1  clinical=0.01 overclaim=0.48 identifying=0.04 severity=1.37
BLOCK  R2  clinical=0.96 overclaim=0.78 identifying=0.08 severity=2.95
BLOCK  R3  clinical=0.12 overclaim=0.74 identifying=0.67 severity=2.40

Basic Usage

include { jev; noul } from 'plugin/nf-jev'

workflow {
    channel.of('The assembly meets the stated QC bar.')
        .map { text -> jev(text, [clinical: noul('The text gives clinical guidance.')]) }
        .view { answers -> "clinical: ${answers.clinical.noul}" }
}

License

Apache License 2.0. See the COPYING file for details.

Nextflow version >=25.10.0
Depends On -
Release Date 20 Sep 2026 15:22:47 (UTC)
Release Notes -
Download URL https://registry.nextflow.io/api/v1/plugins/nf-jev/0.1.0/download/nf-jev-0.1.0.zip
Store URL https://public.cr.seqera.io/v2/nextflow/plugin/nf-jev/blobs/sha256:5d773b0c0e2241cfe91061989bf2f94b15b0cf87237a9cec40eecc3bfac766ce
Size 14.3 KB
Checksum 6ac742ef6c939620c687f222c6b8ca7b419f5423f34af6e88a499b2a1e8641f4beb3df8f48871e5b657f0c535254cdcf2a1e846ae61e73ca661ca5619bc86c4b
Total downloads 1 View trends
Security Scan
Version Nextflow version Date Status Downloads
0.1.0 >=25.10.0 20 Sep 2026 15:22:47 (UTC) 1