Skip to main content

Compile arbitrary FASTQ + messy metadata into a validated, machine-independent sequencing library manifest and a runnable Snakemake config.

Project description

seqforge

seqforge

Compile (arbitrary FASTQ files) + (unstructured human/DB metadata) into a validated, machine-independent dataset manifest, then into a runnable Snakemake config — for headless reprocessing of large collections of public sequencing datasets into a genomic-AI training corpus.

seqforge is a compiler, not a chatbot. Deterministic code owns every decision. The LLM has exactly two jobs: parse prose into span-verified assertions, and arbitrate ambiguity the deterministic layer has already flagged. Everything else is a verifier.

probe(files)                           -> Observation   deterministic, no LLM, no network, bytes only
harvest(prose, instructions)           -> Assertion     LLM, each claim span-verified
resolve(Observations, KB, hypothesis?) -> candidates, Conflicts, Questions, Blockers
──────────────────────────────────────────────────────────────────────────────────────────────────
  => manifest.yaml     what the data IS.   One per dataset. Immutable, content-addressed.

plan(Assertions, flags, policy)        -> ProcessingSection   flag > instruction > policy
──────────────────────────────────────────────────────────────────────────────────────────────────
  => processing.yaml   what to DO with it. Many per dataset.

compose(manifest, processing)          -> config.yaml + units.tsv + module selection

Same dataset + a different recipe = a different pipeline, and the dataset's hash does not move.

The files can be local or remote: seqforge io probe-remote <url> fingerprints a library straight from a URL via one bounded HTTP Range read — same identification, no download.

Status: the pilot compiles end to end. The deterministic spine is implemented and green (pixi run check), and seqforge run takes the worm pilot PRJNA1027859 from its raw FASTQs and paper to a validated manifest + a runnable Snakefile in one headless pass. The ground-truth alignment runs (kb e2e) are still on synthetic yeast/worm fixtures with injected counts — it has not yet executed a pipeline on real reads at scale.

Docs: https://liuhlab.github.io/seqforge/ · design + rationale + scope delta: docs/design.md (its §9 is the running list of what is not yet built) · rules: CLAUDE.md

Install

pip install seqforge

This gives you the compiler and the seqforge CLI. The two lab-only stages — compose against a real genome and kb e2e — additionally need the lab's liulab-genome and liulab-data packages, which are not on PyPI. Install them from git when you need those features:

pip install "liulab-genome @ git+https://github.com/liuhlab/liulab-genome.git" \
            "liulab-data   @ git+https://github.com/liuhlab/liulab-data.git"

(Inside the lab, pixi install already pulls both — see below.)

Develop

Everything runs through pixi (not pip/conda/venv):

pixi install                     # build environments
pixi run test                    # pytest
pixi run lint                    # ruff check .
pixi run typecheck               # mypy --strict on models/, probe/, resolve/, manifest/,
                                 #   compose/, workflows/, harvest/, evals/
pixi run check                   # lint + fmt-check + typecheck + test
pixi run -- pre-commit install   # once per clone — ruff, mypy, shellcheck (not the suite)

Most of the non-negotiable rules in CLAUDE.md are enforced by tests, so pixi run check is the mechanism rather than a formality — and CI runs it on every push and PR. The pre-commit hooks are deliberately limited to the fast ones, so run check yourself when you change behaviour.

Consumer of the liulab stack

seqforge references genomes by a liulab-genome UCSC assembly id + registered GTF name, and aligner environments by their literal liulab-runtime name (align-rna, ...). It never defines genome-file machinery or aligner environments itself — and there is a test that says so.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

seqforge-2026.7.1.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

seqforge-2026.7.1-py3-none-any.whl (526.0 kB view details)

Uploaded Python 3

File details

Details for the file seqforge-2026.7.1.tar.gz.

File metadata

  • Download URL: seqforge-2026.7.1.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for seqforge-2026.7.1.tar.gz
Algorithm Hash digest
SHA256 bdb6a24286d2284bb37503645d33a33977da6f9048bc834eda907ea103f94d91
MD5 2144ea5f73be6cdf202c08440fc78aa4
BLAKE2b-256 b975fad7a343c97cc54912c31f8956c4881603124344837ba943f82a046168ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for seqforge-2026.7.1.tar.gz:

Publisher: release.yml on liuhlab/seqforge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file seqforge-2026.7.1-py3-none-any.whl.

File metadata

  • Download URL: seqforge-2026.7.1-py3-none-any.whl
  • Upload date:
  • Size: 526.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for seqforge-2026.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b07f4c8491fbcc2e3284449207f09a26484ce9e2baaa47f68597487a5c3e67ee
MD5 550c89ac30abccf5c643c689652c5eb7
BLAKE2b-256 45659fb03a337189925007008b7912a82af0c4dd482b2dabf152d700d760e213

See more details on using hashes here.

Provenance

The following attestation bundles were made for seqforge-2026.7.1-py3-none-any.whl:

Publisher: release.yml on liuhlab/seqforge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page