A Modular Architecture

󰃭 2026-02-12 | #architecture #design #modularity

A major goal of Snippy-NG is to be modular and extensible. We want to make it easy to add new features and functionality to Snippy-NG without having to modify the core logic. To achieve this, we have settled on a modular architectural design for Snippy-NG that allows us to easily add new stages, pipelines and subcommands.

Stages

At the core of Snippy-NG is the concept of a “stage”. A stage is a self-contained unit of work that performs a specific task. For example, the PrepareReference stage is responsible for preparing the reference genome for analysis, while the SeqkitCleanLongReads stage is responsible for cleaning long reads using the Seqkit tool. Each stage has its own dependencies and can be run independently of other stages.

Continue reading 


Ew! Snippy-NG has Bugs!

󰃭 2025-06-04 | #bugs #github #issues

Snippy’s father (tseemann) is a notorious GitHub bug hunter. He has over 1.8K closed and about 500 open issues on GitHub. In the spirit of Torsten’s contributions to the open source community, we are making it easy for anyone to report bugs in Snippy-NG.

Reporting Bugs

In the latest version of Snippy-NG (v1.0.0), we have added a new flag snippy-ng --bug that allows users to report bugs directly from the command line. This command will open a new issue on the Snippy-NG GitHub repository with a bug report template and some pre-filled labels.

Continue reading 


For the People

󰃭 2025-04-09 | #CD #CI #github #install

We’ve seen that Snippy-NG will be by the people i.e. it is written in the lingua franca of the programming world: Python. In this post, we’ll explore how Snippy-NG will be for the people i.e. easy to install.

Installing Snippy

The original Snippy is a Perl script that required a number of system-level dependencies. While Conda helps to some extent, installation issues remain one of the most common problems reported on GitHub. This has led to Snippy being criticized for its degraded installation experience.

Continue reading 


Snippy must be Snappy

󰃭 2024-10-10 | #CI #design #hyperfine #performance #python

In the last post we detailed the decision to use Python as the primary programming language for the new version of Snippy. I can hear millions of crustaceans crying out at this decision, so in this post we will explore the performance implications of this decision and the steps we are taking to ensure that Snippy remains a snappy tool for microbial genomics research.

First up Snippy is glue. It joins together a number of existing bioinformatics tools to perform its analysis. These tools are written in a variety of languages. For example:

Continue reading 


The `py` in Snippy Stands for Python

󰃭 2024-10-02 | #design #python

There are are several high-level design decisions that must be made when developing a new software tool (or is this case the a major revision to a beloved project). One of the most contentious is the choice of programming language. This decision can have far-reaching implications for the project’s success, longevity, and adoption. In the case of this new version of Snippy, the choice was made to use Python as the primary programming language. This article will explore the reasons behind this decision and the implications for the project.

Continue reading 