A bioinformatics workflow engine built on top of the Workflow Description Language (WDL).
Request Feature
·
Report Bug
·
⭐ Consider starring the repo! ⭐
sprocket analyzerruns Sprocket as a LSP server, which is useful for IDE integration.sprocket checkperforms static analysis on a document or directory of documents.sprocket completionsgenerates shell completions for Sprocket.sprocket configprints configuration values.sprocket devsubcommand containing developmental and experimental commands.sprocket explainexplains validation and lint rules supported by Sprocket.sprocket formatformats a document or directory of documents.sprocket inputswrites template input file (JSON or YAML) for a task or workflow.sprocket lintperforms static analysis on a document or directory of documents with additional linting rules enabled (effectively a shortcut forcheck --lint).sprocket runruns a task or workflow.sprocket validatevalidates a set of inputs read from files or on the command line against a task or workflow.
The following are high-level guiding principles of the Sprocket project.
- Provide a high-performance workflow execution engine capable of orchestrating massive bioinformatics workloads (the stated target is 20,000+ concurrent jobs).
- Develop a suite of modern development tools that brings bioinformatics
development on par with other modern languages (e.g.,
wdl-lsp). - Maintain an community-focused codebase that enables a diverse set of contributors from academic, non-profit, and commercial organizations.
- Build on an open, domain-tailored standard to ensure the toolset remains singularly focused on unencumbered innovation within bioinformatics.
- Retain a simple and accessible user experience when complexity isn't warranted.
Check the GitHub releases page to see if Sprocket is available for your platform.
Note that the prebuilt Sprocket for Linux may not work on every distribution due to library dependencies.
If Sprocket is not available for your platform or architecture, you may install
it with cargo from a Rust toolchain.
We recommend using rustup to install a Rust toolchain.
Once Rust is installed, you can install the latest version of Sprocket by running the following command:
cargo install sprocket --lockedSprocket is also available on Homebrew for both MacOS and Linux. Once Homebrew is installed, you can install Sprocket with the following command.
brew install sprocketSprocket is available as a Docker image.
docker pull ghcr.io/stjude-rust-labs/sprocket:v0.18.0To bootstrap a development environment, please use the following commands.
# Clone the repository
git clone [email protected]:stjude-rust-labs/sprocket.git
cd sprocket
# Initialize and update vendored submodules
git submodule update --init --recursive
# Build the crate in release mode
cargo build --release
# Run the `sprocket` command line tool
cargo run --releaseThe WDL specification requires that command scripts are run with the Bash
shell, and therefore developing for Sprocket will require /bin/bash
be on your $PATH. Linux and Mac users should not need to do anything special
to meet this requirement, but we recommend Windows users fulfill this criteria
by installing Git BASH.
Some tests require the shellcheck binary be available on your $PATH. See
instructions for installing ShellCheck
here.
Note that on an HPC or another environment where normal means of installing
software are difficult, it may be easiest to wrap an apptainer invocation of
shellcheck in a bash script, and then save it as executable in your PATH:
#!/usr/bin/env bash
apptainer -s run docker://koalaman/shellcheck:stable $@Before submitting any pull requests, please make sure the code passes the following checks (from the root directory).
# Run the project's tests.
cargo test --all-features
# Run the tests for the examples.
cargo test --examples --all-features
# Ensure the project doesn't have any linting warnings.
cargo clippy --all-features
# Ensure the project passes `cargo fmt`.
cargo +nightly fmt --check
# Ensure the docs build.
cargo docContributions, issues and feature requests are welcome! Feel free to check the issues page.
Most of the work for this binary happens within the wdl crates.
For more information about our contributor policies, please read the contributing guide.
The minimum supported Rust version is currently 1.88.0.
There is a CI job that verifies the declared minimum supported version.
If a contributor submits a PR that uses a feature from a newer version of Rust,
the contributor is responsible for updating the minimum supported version in
the Cargo.toml.
Contributors may update the minimum supported version as-needed to the latest stable release of Rust.
To facilitate the discovery of what the minimum supported version should be,
install the cargo-msrv tool:
cargo install cargo-msrvAnd run the following command:
cargo msrv --min 1.88.0If the reported version is newer than the crate's current minimum supported version, an update is required.
This project is licensed as either Apache 2.0 or MIT at your discretion. Additionally, please see the disclaimer that applies to all crates and command line tools made available by St. Jude Rust Labs.
Copyright © 2023-Present St. Jude Children's Research Hospital.
