kerblam

A Rust CLI to manage your data analysis projects in a simple and streamlined way, getting reproducibility for free.

https://github.com/mrhedmad/kerblam

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.0%) to scientific vocabulary

Keywords

data-manager project-management rust-cli

Keywords from Contributors

mesh pypi annotation ranking metaheuristic sequences interactive hacking
Last synced: 6 months ago · JSON representation ·

Repository

A Rust CLI to manage your data analysis projects in a simple and streamlined way, getting reproducibility for free.

Basic Info
  • Host: GitHub
  • Owner: MrHedmad
  • License: mit
  • Language: Rust
  • Default Branch: main
  • Homepage: https://www.kerblam.dev/
  • Size: 3.64 MB
Statistics
  • Stars: 11
  • Watchers: 2
  • Forks: 1
  • Open Issues: 7
  • Releases: 16
Topics
data-manager project-management rust-cli
Created over 2 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

If you want it, Kerblam it!

GitHub issues GitHub License GitHub Repo stars All Contributors DOI

Kerblam! is a project management system for data analysis projects.

Wherever you have input data that needs to be processed to obtain some output, Kerblam! can help you out by dealing with the more tedious and repetitive parts of working with data for you, letting you concentrate on getting things done.

Kerblam! lets you work reproducibly, rigorously and quickly for big and small projects alike: from routine data analysis to large, multi-workflow projects.

You can watch a demo of what Kerblam! can do for you, or you can jump right in by reading the quickstart guide. If you are here often, you might need the installation command.

Overview

[🚀 Read the full Documentation 🚀](https://kerblam.dev) | [✨ See usage Examples ✨](https://github.com/MrHedmad/kerblam-examples)

These are some of the features of Kerblam!: - :magic_wand: You can quickly start a new project with kerblam new. Kerblam generates the folder structure of your project using sensible defaults, similar to what cookiecutter does. - :rocket: Kerblam! can manage your workflows, written for different workflow management systems. It chiefly prefers GNU make, but can manage anything that can be executed via the command line. - :recycle: Kerblam! can hotswap input data just before your workflows start, letting you work with different sets of input data on the fly without having to touch your configuration. For example, this is very useful to temporarily work with test data. - :gift: Kerblam! lets you run arbitrary workflows into containers, dealing with volume mounting and other details for you. This lets you package workflows that are not natively containerized into Docker for greater reproducibility. For instance, you might just need to run a very tiny data processing pipeline, and don't want to deal with the verbosity of robust workflow management systems like Snakemake, CWL or Nextflow. - :package: kerblam package packages your pipelines and exports a container image for execution later. This leaves a tarball with all the data a reproducer needs to run the analysis again, so they may do so quickly and easily. The reproducer can use the reply tarball manually, or also let Kerblam! un-package the project for them. - :package: Kerblam! can fetch remote data and save it locally, manage local data and clean it up, preserving only files that must be preserved. It also shows you how much local data is on the disk, how much data is remote and how much disk space you can free without losing anything important. It can also export the important data to share it with colleagues quickly.

Kerblam! is not and does not want to be: - :non-potablewater: A workflow runner like snakemake, nextflow or cwltool; - It supports and helps you execute pipelines written for other WMS, but it does not interfere from then on; - :recycle: A replacement for any of the tools it leverages (e.g. git, docker or podman, pre-commit, etc...); - :magright: Something that insulates you from the nuances of writing good, correct pipelines and container recipies. Specifically, Kerblam! will never: - Parse your .gitignore, .dockerignore, pipes or container recipies to check for errors or potential issues; - Edit code for you (with the exception of a tiny bit of wrapping to allow kerblam package to work); - Handle any errors produced by the pipelines or containers.

Opinions

Kerblam! wants to streamline and standardize data analysis projects as much as possible. For this reason, projects are opinionated: - The folder structure of your project adheres to the Kerblam! standard, although you may configure it in kerblam.toml. Read more about it here. - You use some kind of workflow management system to run your analysis. - Kerblam! natively uses make, but nothing stops you writing shell files that execute other tools, like snakemake. - You use docker or podman as your virtualisation service. - You use git as your version control system. - You generally execute your pipelines in a container, and not in your development environment. - Most of your input data is remotely downloadable, especially for large and bulky files.

If you don't like this setup, Kerblam! is probably not for you.

[!TIP] If you wish to learn more on why these design choices were made, please take a look at the kerblam! philosophy.

Documentation

The full Kerblam! documentation is online at kerblam.dev 🚀. Please take a look there for more information on what Kerblam! can do.

You might find the quickstart interesting. It provides an overview of what Kerblam! is and does with an hands-on project.

Installation

[✨ Read the full installation guide in the docs ✨](https://kerblam.dev/install.html)

[!WARNING] Release candidates (e.g. 1.0.0-rc.x) are not available on crates.io! Use the pre-compiled binaries in the releases tab, the command below or compile directly from git with cargo install --git https://github.com/MrHedmad/kerblam.

In short, use a unix-compatible OS and either: ```bash

Install a prebuilt binary

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/MrHedmad/kerblam/releases/latest/download/kerblam-installer.sh | sh or, alternatively bash

Install from source with rustc and cargo

cargo install kerblam `` You will needgit,makeanddockerorpodman` installed for Kerblam! to work.

Contributing

To contribute, please take a look at the contributing guide.

Code is not the only thing that you can contribute. Written a guide? Considered a new feature? Wrote some docstrings? Found a bug? All of these are meaningful and important contributions. For this reason, all contributors are listed in the contributing guide.

If you use Kerblam! or want to add your opinion to the direction it is taking, take a look at the issues labelled with RFC. They are requests for comments where you can say your opinion on new features.

Thank you for taking an interest in Kerblam! Any help is greatly appreciated.

Licensing and citation

Kerblam! is licensed under the MIT License. If you wish to cite Kerblam!, please provide a link to this repository or use the Zenodo DOI 10.5281/zenodo.10664806

Naming

This project is named after the fictitious online shop/delivery company in S11E07 of Doctor Who. Kerblam! might be referred to as Kerblam!, Kerblam or Kerb!am, interchangeably, although Kerblam! is preferred. The Kerblam! logo is written in the Kwark Font by tup wanders.

Owner

  • Name: Luca "Hedmad" Visentin
  • Login: MrHedmad
  • Kind: user
  • Location: Turin, Italy
  • Company: @CMA-Lab

PhD Student in Complex Systems for Life Sciences @ UniTO

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Kerblam!
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Luca
    family-names: Visentin
    email: luca.visentin@unito.it
    affiliation: University of Torino
    orcid: 'https://orcid.org/0000-0003-2568-5694'
identifiers:
  - type: doi
    value: 10.5281/zenodo.10664806
    description: Static Zenodo DOI to latest version of the software.
repository-code: 'https://github.com/MrHedmad/kerblam'
url: 'https://kerblam.dev'
repository-artifact: 'https://github.com/MrHedmad/kerblam/releases'
keywords:
  - pipeline_execution
  - container
  - open_science
  - reproducibility
license: MIT

GitHub Events

Total
  • Create event: 12
  • Release event: 2
  • Issues event: 11
  • Watch event: 3
  • Delete event: 12
  • Issue comment event: 16
  • Push event: 38
  • Pull request event: 21
Last Year
  • Create event: 12
  • Release event: 2
  • Issues event: 11
  • Watch event: 3
  • Delete event: 12
  • Issue comment event: 16
  • Push event: 38
  • Pull request event: 21

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 316
  • Total Committers: 4
  • Avg Commits per committer: 79.0
  • Development Distribution Score (DDS): 0.051
Past Year
  • Commits: 51
  • Committers: 3
  • Avg Commits per committer: 17.0
  • Development Distribution Score (DDS): 0.078
Top Committers
Name Email Commits
Luca Visentin l****n@u****t 300
dependabot[bot] 4****] 11
allcontributors[bot] 4****] 4
robohedmad[bot] 1****] 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 52
  • Total pull requests: 74
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 3 days
  • Total issue authors: 2
  • Total pull request authors: 5
  • Average comments per issue: 1.15
  • Average comments per pull request: 0.27
  • Merged pull requests: 66
  • Bot issues: 0
  • Bot pull requests: 21
Past Year
  • Issues: 6
  • Pull requests: 15
  • Average time to close issues: 30 days
  • Average time to close pull requests: 4 days
  • Issue authors: 2
  • Pull request authors: 3
  • Average comments per issue: 1.33
  • Average comments per pull request: 0.2
  • Merged pull requests: 11
  • Bot issues: 0
  • Bot pull requests: 7
Top Authors
Issue Authors
  • MrHedmad (48)
  • Feat-FeAR (2)
Pull Request Authors
  • MrHedmad (93)
  • dependabot[bot] (26)
  • robohedmad[bot] (4)
  • allcontributors[bot] (3)
  • scott-wilson (1)
Top Labels
Issue Labels
feat (33) RFC (15) good first issue (7) bug (7) low-priority (3) refactor (3) help wanted (3) documentation (3) urgent (2)
Pull Request Labels
dependencies (26) rust (10) feat (7) github_actions (3) documentation (2) help wanted (2)

Packages

  • Total packages: 1
  • Total downloads:
    • cargo 9,735 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 9
  • Total maintainers: 1
crates.io: kerblam

A project management tool for data science and bioinformatics

  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 9,735 Total
Rankings
Dependent repos count: 29.6%
Dependent packages count: 34.8%
Average: 53.6%
Downloads: 96.4%
Maintainers (1)
Last synced: 6 months ago

Dependencies

Cargo.lock cargo
  • anstream 0.6.4
  • anstyle 1.0.4
  • anstyle-parse 0.2.2
  • anstyle-query 1.0.0
  • anstyle-wincon 3.0.1
  • bitflags 2.4.1
  • clap 4.4.8
  • clap_builder 4.4.8
  • clap_derive 4.4.7
  • clap_lex 0.6.0
  • colorchoice 1.0.0
  • colored 2.0.4
  • equivalent 1.0.1
  • errno 0.3.7
  • hashbrown 0.14.2
  • heck 0.4.1
  • hermit-abi 0.3.3
  • indexmap 2.1.0
  • is-terminal 0.4.9
  • lazy_static 1.4.0
  • libc 0.2.150
  • linux-raw-sys 0.4.11
  • memchr 2.6.4
  • proc-macro2 1.0.69
  • quote 1.0.33
  • rustix 0.38.24
  • serde 1.0.192
  • serde_derive 1.0.192
  • serde_spanned 0.6.4
  • strsim 0.10.0
  • syn 2.0.39
  • toml 0.8.8
  • toml_datetime 0.6.5
  • toml_edit 0.21.0
  • unicode-ident 1.0.12
  • utf8parse 0.2.1
  • windows-sys 0.48.0
  • windows-targets 0.48.5
  • windows_aarch64_gnullvm 0.48.5
  • windows_aarch64_msvc 0.48.5
  • windows_i686_gnu 0.48.5
  • windows_i686_msvc 0.48.5
  • windows_x86_64_gnu 0.48.5
  • windows_x86_64_gnullvm 0.48.5
  • windows_x86_64_msvc 0.48.5
  • winnow 0.5.19
Cargo.toml cargo
.github/workflows/release.yml actions
  • actions/checkout v4 composite
  • actions/download-artifact v3 composite
  • actions/upload-artifact v3 composite
  • ncipollo/release-action v1 composite
  • swatinem/rust-cache v2 composite