Skip to content

Commit

Permalink
Merge pull request #94 from COMBINE-lab/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
rob-p authored Jun 13, 2023
2 parents 2ca3ca4 + 185a8a5 commit cdb4893
Show file tree
Hide file tree
Showing 11 changed files with 1,660 additions and 574 deletions.
1,736 changes: 1,425 additions & 311 deletions Cargo.lock

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,27 +31,27 @@ keywords = [
categories = ["command-line-utilities", "science"]

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
seq_geom_parser = { git = "https://github.com/COMBINE-lab/seq_geom_parser", branch = "dev", version = "0.3.0" }
seq_geom_xform = { git = "https://github.com/COMBINE-lab/seq_geom_xform", branch = "dev", version = "0.4.0" }
roers = { git = "https://github.com/COMBINE-lab/roers", branch = "main", version = "0.1.0" }
anyhow = "^1.0"
clap = { version = "4.2.2", features = ["derive", "cargo", "deprecated", "wrap_help", "help", "usage", "error-context"] }
clap = { version = "4.3.3", features = ["derive", "cargo", "deprecated", "wrap_help", "help", "usage", "error-context"] }
cmd_lib = "^1.3.0"
tracing = "0.1.37"
tracing-subscriber = { version = "0.3.16", default-features = true, features = ["env-filter"] }
tracing-subscriber = { version = "0.3.17", default-features = true, features = ["env-filter"] }
semver = "^1.0.17"
serde = {version = "1.0.160", features = ["derive"]}
serde = {version = "1.0.164", features = ["derive"]}
serde_json = "1.0.96"
time = {version = "^0.3.20", features = ["macros", "formatting", "parsing", "serde", "serde-human-readable"]}
time = {version = "^0.3.22", features = ["macros", "formatting", "parsing", "serde", "serde-human-readable"]}
which = "^4.4.0"
jrsonnet-evaluator = "0.5.0-pre6"
jrsonnet-cli = "0.5.0-pre6"
jrsonnet-parser = "0.5.0-pre6"
jrsonnet-evaluator = "0.5.0-pre9"
jrsonnet-cli = "0.5.0-pre9"
jrsonnet-parser = "0.5.0-pre9"
thiserror = "1.0"
phf = { version = "0.11.1", features = ["macros"] }
chrono = "0.4.24"
tabled = "0.11.1"
chrono = "0.4.26"
tabled = "0.12.2"

[profile.release]
lto = "thin"
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

`simpleaf` is a `rust` framework to make using `alevin-fry` _even_ simpler. `simpleaf` encapsulates the process of creating an expanded reference for quantification into a single command (`index`) and the quantification of a sample into a single command (`quant`). It also exposes various other functionality, and is actively being developed and expanded.

The `simpleaf` program can be installed from source, from [crates.io](https://crates.io/crates/simpleaf), or via [bioconda](https://bioconda.github.io/recipes/simpleaf/README.html). `simpleaf` requires [`pyroe`](https://github.com/COMBINE-lab/pyroe), [`alevin-fry`](https://github.com/COMBINE-lab/alevin-fry), and either [`piscem`](https://github.com/COMBINE-lab/piscem) or [`salmon`](https://github.com/COMBINE-lab/salmon) (or both, if you prefer), as well as [`wget`](https://www.gnu.org/software/wget/).
The `simpleaf` program can be installed from source, from [crates.io](https://crates.io/crates/simpleaf), or via [bioconda](https://bioconda.github.io/recipes/simpleaf/README.html). `simpleaf` requires, [`alevin-fry`](https://github.com/COMBINE-lab/alevin-fry), and either [`piscem`](https://github.com/COMBINE-lab/piscem) or [`salmon`](https://github.com/COMBINE-lab/salmon) (or both, if you prefer), as well as [`wget`](https://www.gnu.org/software/wget/).

Check out the detailed documentation [here](https://simpleaf.readthedocs.io/en/latest/), and read on below to learn more about the background and motivation behind `simpleaf`.

## Introduction & motivation

* **Q(s)** : What is the purpose of `simpleaf`? Isn't its functionality covered by the constituent programs (e.g. `salmon`, `alevin-fry`, `pyroe`, `piscem`, etc.)? Can't I make those tools do the same things `simpleaf` does?
* **Q(s)** : What is the purpose of `simpleaf`? Isn't its functionality covered by the constituent programs (e.g. `salmon`, `alevin-fry`, `piscem`, etc.)? Can't I make those tools do the same things `simpleaf` does?

* **A** : Yes! It is, of course, possible to replicate the functionality of `simpleaf` by building a script or workflow around the underlying tools. However, `simpleaf` is designed to make the most common use cases simpler, while also retaining critical flexibility where necessary. Further, `simpleaf` also provides some extra functionality that one would have to build themselves if wrapping the underlying tools, and simplifies the use of different mapping backends (i.e. `salmon` or `piscem`). For more details, read on below.

The relevant tools that drive `simpleaf` (i.e. `pyroe`, {`salmon` \| `piscem`} and `alevin-fry`) are all command-line tools meant to be used together. For those who are very comfortable with the command-line, these tools are designed to be straightforward to use. Further, they are designed to be highly-configurable, so that they can be run in different ways, with different configurations, based upon what the user wants to accomplish. In fact, many users of `alevin-fry` have crafted their own scripts or pipelines chaining these tools together using `bash` scripts, custom `python` scripts, or specially-built pipeline tools like `snakemake` and `nextflow`.
The relevant tools that drive `simpleaf` (i.e. {`salmon` \| `piscem`} and `alevin-fry`) are all command-line tools meant to be used together. For those who are very comfortable with the command-line, these tools are designed to be straightforward to use. Further, they are designed to be highly-configurable, so that they can be run in different ways, with different configurations, based upon what the user wants to accomplish. In fact, many users of `alevin-fry` have crafted their own scripts or pipelines chaining these tools together using `bash` scripts, custom `python` scripts, or specially-built pipeline tools like `snakemake` and `nextflow`.

While this mode of interaction makes a lot of sense for folks who are very comfortable with the command line and scripting, and who need maximum control over how each aspect of the tools is run, it can seem a bit daunting when one is performing a common task without the need for more exotic configurations. In that case, it should be possible to further simplify the interface to provide a simple command akin to something like [`cellranger count`](https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/using/count).

Expand Down
Loading

0 comments on commit cdb4893

Please sign in to comment.