diff --git a/Cargo.toml b/Cargo.toml index a2207fb..3562eee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "faba" -version = "0.16.9" +version = "0.16.10" edition = "2021" rust-version = "1.91" license = "MIT" @@ -14,6 +14,7 @@ categories = ["science", "command-line-utilities"] exclude = [ "**/.claude/**", "docs/superpowers/**", + "docs/screenshots/**", "**/.DS_Store", "reference/**", "*.bam", diff --git a/README.md b/README.md index b46eff6..66ac69c 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,26 @@ RNA modifications (DART-seq m6A, A-to-I editing), alternative polyadenylation (APA), gene counts, read depth, and SNP genotypes. -Its product is the matrices; nothing here fits a model. The embedding, -trajectory and annotation commands that read them live in -[`senna`](https://github.com/causalpathlab/legume-rs) (legume-rs). +## A quick look + +Run in a terminal, `run`, `qc`, `pileup`, `metagene` and `pwm` open full-screen views; +`--batch-process` skips them for scripts and clusters. + +**`faba run`**: pick the BAMs (signal and control), steps and flags, preview the command, and run it. + +![faba run](docs/screenshots/run.png) + +**`faba qc`**: set site thresholds, see what each one keeps, and write a filtered copy. + +![faba qc](docs/screenshots/qc.png) + +**`faba pileup`**: browse a gene's modification sites, one track per batch. + +![faba pileup](docs/screenshots/pileup.png) + +**`faba pwm`**: the sequence logo around the called sites. + +![faba pwm](docs/screenshots/pwm.png) ## Installation @@ -74,7 +91,7 @@ cargo install --path . | `hdf5` | HDF5 backend + `.h5`/`.h5ad` readers | `libhdf5` on the build host | There is no `cuda` / `metal` feature: nothing on the BAM-to-matrix path touches a -GPU. `senna` (in legume-rs) carries those for the code that does. +GPU. Add them with `--features`: @@ -147,10 +164,6 @@ faba [OPTIONS] Run `faba --help` for the detailed options of each subcommand. -Embedding (`gem`), annotation (`annotate-by-projection`), trajectory -(`lineage`, `lineage-plot`) and modality dynamics (`dyn-assoc`) are `senna` -subcommands — they read the matrices above by prefix. - ## Methods The method write-ups are **compiled into the binary** — `include_str!`, not files read at @@ -162,8 +175,6 @@ faba docs # list what there is faba docs profiling # BAM -> per-cell features: m6A, A-to-I, APA, counts, SNPs ``` -The annotation and lineage write-ups moved with their subcommands: `senna docs`. - The same files live in [`docs/`](docs/), which also carries the design notes for work that is planned but **not implemented** (kept separate on purpose — reading a plan as though it described the code is how people end up debugging things that were never built). diff --git a/docs/screenshots/pileup.png b/docs/screenshots/pileup.png new file mode 100644 index 0000000..cbc6a36 Binary files /dev/null and b/docs/screenshots/pileup.png differ diff --git a/docs/screenshots/pwm.png b/docs/screenshots/pwm.png new file mode 100644 index 0000000..656d05a Binary files /dev/null and b/docs/screenshots/pwm.png differ diff --git a/docs/screenshots/qc.png b/docs/screenshots/qc.png new file mode 100644 index 0000000..5c7425d Binary files /dev/null and b/docs/screenshots/qc.png differ diff --git a/docs/screenshots/run.png b/docs/screenshots/run.png new file mode 100644 index 0000000..87f36ae Binary files /dev/null and b/docs/screenshots/run.png differ