Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Project Map

This repository is a monorepo for four related surfaces:

SurfaceMain pathsAudienceResponsibility
Rust compute enginesrc/, Cargo.tomlCLI users, workflow runners, library contributorsLoad normalized gene set tables, build bitset indexes, compute enrichment and comparison results, write TSV or Parquet.
Python workflowspython/genesets-workflows/Report authors, evaluators, data-prep usersFetch public sources, prepare normalized inputs, run configured batches, summarize Parquet outputs, and launch local tools.
Eval explorerpython/genesets-workflows/src/genesets_workflows/explorer/People triaging report outputsBrowse existing workflow report bundles in a local web UI.
Curated interpretation corpuscuration/Curators, evaluators, browser usersStore LinkML-validated GO interpretations of non-GO gene sets, with curator judgments, recovery status, and literature evidence.

The Rust crate should stay focused on the compute model. GO, GOA, Reactome, MyGeneSet, evidence-code policies, report layouts, web views, and curation workflow are deliberately outside the Rust core because they change faster and are easier to audit as files and workflow artifacts.

Repository Layout

src/
  Rust library and CLI implementation.
python/genesets-workflows/
  Python package for source prep, reports, curation helpers, and the local explorer.
evals/
  Small and parameterized eval definitions.
curation/
  LinkML schema, validator config, manifest, and curated interpretation YAML.
docs/src/
  mdBook documentation.
notebooks/
  Analysis notebooks that consume generated workflow artifacts.

Release Boundaries

Keep one repository for now, with separate release surfaces:

  • genesets-rs: crates.io or cargo install release surface.
  • genesets-workflows: PyPI or editable Python package release surface.
  • curated interpretation corpus: versioned data release tied to repository tags.
  • docs and static generated browser pages: GitHub Pages or another static host.

Split the repository only if one of those surfaces needs an independent governance, release cadence, or storage policy that makes the monorepo painful. That is not true yet.