GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Docs
  • Github
  • Mastodon
  • Bluesky
  • Sponsor us
  • old
  • new paper
  • >1,200,000 downloads
  • MIT licensed
  • affiliated project
  • Snakemake Hackathon 2027
  • Paul Scherrer Institute
  • Tutorial
  • Read the paper

This view

  • Original page
  • New address

GeezerVison is showing snakemake.github.io — Snakemake

Readability and automation

With Snakemake, data analysis workflows are defined via an easy to read, adaptable, yet powerful specification language on top of Python. Steps are defined by "rules", which denote how to generate a set of output files from a set of input files (e.g. using a shell command). Wildcards (in curly braces) provide generalization. Dependencies between rules are determined automatically.

rule select_by_country: input: "data/worldcitiespop.csv" output: "by-country/{country}.csv" shell: "xsv search -s Country '{wildcards.country}' " "{input} > {output}"

Portability

By integration with the Conda package manager and containers, all software dependencies of each workflow step are automatically deployed upon execution.

rule select_by_country: input: "data/worldcitiespop.csv" output: "by-country/{country}.csv" conda: "envs/xsv.yaml" shell: "xsv search -s Country '{wildcards.country}' " "{input} > {output}"

Scripting integration

Rapidly implement analysis steps via direct script and jupyter notebook integration supporting Python, R, Julia, Rust, Bash, without requiring any boilerplate code.

rule select_by_country: input: "data/worldcitiespop.csv" output: "by-country/{country}.csv" script: "scripts/select_by_country.R"

Modularization

Easily create and employ re-usable tool or library wrappers, split your data analysis into well-separated modules, and compose multi-modal analyses by easily combining entire workflows various sources.

rule convert_to_pdf: input: "{prefix}.svg" output: "{prefix}.pdf" wrapper: "0.47.0/utils/cairosvg"

"Turing completeness"

Being a syntactical extension of Python, you can implement arbitrary logic beyond the plain definition of rules. Rules can be generated conditionally, arbitrary Python logic can be used to perform aggregations, configuration and metadata can be obtained and postprocessed in any required way.

def get_data(wildcards): # use arbitrary Python logic to # aggregate over the required input files return ... rule plot_histogram: input: get_data output: "plots/hist.svg" script: "scripts/plot-hist.py"

Human Readability

The logic of production workflows can become complex by involving lots of lookups and dynamic decisions. Snakemake offers semantic helper functions for lookups, branching and aggregation that avoid the need for plain Python code as shown above, and allow to express complex logic in a human-readable and self-contained way.

rule plot_histogram: input: branch( lookup(dpath="histogram/somedata", within=config), then="data/somedata.txt", otherwise="data/someotherdata.txt" ) output: "plots/hist.svg" script: "scripts/plot-hist.py"

Dynamic workflows

Snakemake allows to define workflows that are dynamically updated at runtime. By defining so-called checkpoints, the workflow can be dynamically adapted at runtime. Further, input can be provided as Python queues, thereby enabling a workflow to continuously receive new input data (e.g. while a certain measurement is conducted).

rule all: input: from_queue(all_results, finish_sentinel=...) checkpoint somestep: input: "samples/{sample}.txt" output: "somestep/{sample}.txt" shell: "somecommand {input} > {output}"

Transparency and data provenance

Automatic, interactive, self-contained reports ensure full transparency from results down to used steps, parameters, code, and software. The reports can moreover contain embedded results (from images, to PDFs and even interactive HTML) enabling a comprehensive reporting that combines analysis results with data provenance information.

Scalability

Workflows scale seamlessly from single to multicore, clusters or the cloud, without modification of the workflow definition and automatic avoidance of redundant computations.

Configurability

Snakemake is extremely flexible and configurable. Numerous options allow adapt the behavior to the needs of the data analysis at hand and the underlying infrastructure. Options can be provided via the command line interface or persisted via system-wide, user-specific, and workflow specific profiles.

executor: slurm software-deployment-method: - conda latency-wait: 60 default-storage-provider: fs shared-fs-usage: - persistence - software-deployment - sources - source-cache local-storage-prefix: /local/work/$USER/snakemake-scratch

Extensibility

Snakemake has a powerful plugin system that allows to extend various functionalities with alternative implementations. Via stable and well-defined interfaces, plugins can evolve independently of Snakemake, and mutual update requirements are minimized. Currently, execution backends and remote storage support is implemented via plugins. In the future, we will extend this to other areas, such as workflow scheduling, reporting, software deployment, and more.

Community driven development

Snakemake has a vibrant developer community that continuously improves the system. Every year, we conduct a 1 week hackathon with 40-50 participants. The 2025 hackathon at CERN was sponsored by the FAIROS-HEP research network. The 2026 hackathon at TU Munich is sponsored by BASF.

Authors and Contributors ⓘ

  • Johannes Köster
  • Per Unneberg
  • Chris Tomkins-Tinch
  • Oliver Stolpe
  • Rasmus Ågren
  • Tim Booth
  • Filipe G. Vieira
  • Vanessa Sochat
  • Manuel Holtgrewe
  • David Laehnemann
  • Henning Timm
  • Aoran Hu
  • Chris Burr
  • Cade Mirchandani
  • Marcel Martin
  • Michael Hall
  • Felix Mölder
  • Ben Beasley
  • Wibowo Arindrarto
  • Ryan C. Thompson
  • Morten Enemark Lund
  • Elmar Pruesse
  • Peter Van Dyken
  • Ryan Dale
  • Fredrik Boulund
  • Simon Ye
  • Maarten-vd-Sande
  • Christian Meesters
  • Derek Croote
  • Till Hartmann
  • Mattias de Hollander
  • Maarten Kooyman
  • Jake VanCampen
  • Justin Fear
  • Kemal Eren
  • Dr. K. D. Murray
  • Michael K. Wilkinson
  • Christian Arnold
  • Kim
  • Jay Hesselberth
  • Jermiah Joseph
  • Felix Wiegand
  • Hyeshik Chang
  • Cornelius Roemer
  • Troy Comi
  • John Eppley
  • Luis Kress
  • Nils Homer
  • Jared Lumpe
  • Mattias Frånberg
  • Jonas Freimuth
  • mhulsman
  • Patrik Smeds
  • Jonas Hörsch
  • Clemens Lange
  • Ed Bennett
  • Joseph K Aicher
  • Liang-Bo Wang
  • Kyle Beauchamp
  • Anfeng Li
  • C. Titus Brown
  • Kevin Sayers
  • Lars Bilke
  • Matthias Peter
  • Mike Taves
  • Sven Schrinner
  • Sven Twardziok
  • Sultan Orazbayev
  • G. D. McBain
  • David Koppstein
  • Florian R. Hölzlwimmer
  • endrebak
  • Matt Shirley
  • Bruno P. Kinoshita
  • Benjamin Yeh
  • Adam Labadorf
  • schnea
  • Anthony Underwood
  • Don Freed
  • Elias Kuthe
  • Haizi Zheng
  • Jan Forster
  • John Blischak
  • Koen van Greevenbroek
  • Dmitry Kalinkin
  • Marco-Masera
  • Peter Cock
  • Rohan-Ibn-Tariq
  • Shinji Matsumoto
  • Sichong
  • Thomas Vandal
  • Vito Zanotelli
  • Simon Sack
  • Soo Lee
  • Silas Kieser
  • Adel Kaleche
  • Tomás Di Domenico
  • rebecca-palmer
  • darrin t schultz
  • Ülgen Sarıkavak
  • Michael R. Crusoe
  • Hatem
  • wligtenberg
  • Vlad Savelyev
  • Nelis Drost
  • Roy Jacobson
  • Andreas Wilm
  • crimsonDaMi
  • Arya Massarat
  • Ashwin V. Mohanan
  • Christian Brueffer
  • Christopher Schröder
  • David Alexander
  • Ryan A. Hagenson
  • Pay Giesselmann
  • Nils Giordano
  • Manar AbdAlazem
  • Kyle Meyer
  • Joona Lehtomäki
  • Gaspard Reulet
  • JJ
  • Jeremy Leipzig
  • Thom Griffioen
  • Thomas Weber
  • Valentin Pestel
  • Vince
  • Zeb Burke-Conte
  • Christophe
  • dkuzminov
  • jlncrnt
  • nikostr
  • Sebastian Schmidt
  • Norbert Auer
  • Matthew Monk
  • Alex Leonard
  • DrYak
  • Yoshiki Vázquez Baeza
  • Patrick Kunzmann
  • Ethan Holleman
  • Wolfgang Kopp
  • Ward D
  • Jesse Connell
  • Sebastian
  • John Marshall
  • Jon Stutters
  • Lucas Frérot
  • Hielke Walinga
  • Heath O'Brien
  • Frédéric Chevalier
  • Foivos Gypas
  • Christian
  • Ezra Herman
  • Brian Fulton-Howard
  • Devon Ryan
  • Dmytro Kazanzhy
  • Brandon Keepers
  • Doğukan
  • Alexander Kleinjohann
  • Alex Mattausch
  • Adam Morris
  • Lance Parsons
  • Marcel Schilling
  • Marawan Abdelgawad
  • Matthew Feickert
  • Kyle Johnsen
  • Michael Schubert
  • Naveen
  • Justin Hiemstra
  • Jo Hausmann
  • Jens Zentgraf
  • JS Légaré
  • Peter Schiffels
  • Richard Abdill
  • Hugo Lapré
  • Sai Asish Y
  • Ryunosuke O'Neil
  • Romain Feron
  • Rodrigo Luger
  • Moustapha Sall
  • Sam Nicholls
  • Sam-Tygier
  • Samuel Gaist
  • Scott
  • Sean Davis
  • Sebastian Ohlmann
  • Seth Ariel Green
  • Stefan Pfenninger-Lee
  • Stephan Druskat
  • Terry Jones
  • Susana Posada Céspedes
  • Tadas Bareikis
  • Tanguy Lallemand
  • Taylor Reiter
  • Murillo F. Rodrigues
  • Nicholas A. Del Grosso
  • Nick Semenkovich
  • Nigel Tan
  • Noah
  • Oliver Küchler
  • Patrik Mrnka
  • Paul Bransford
  • Paul K. Korir
  • Paul L. Maurizio
  • Paul Moore
  • Perry
  • Pete Bachant
  • Peter Steinbach
  • Philipp Helo Rehs
  • Pierre Marijon
  • Quinn Blenkinsop
  • Raphael Erik Hviding
  • Raphael Müller
  • Renan Valieris
  • Renato Alves
  • RezaMadi
  • Rick Tankard
  • Rob Schaefer
  • Robben Migacz
  • Robert Schauner
  • bingxiao
  • ccondon894
  • chaen
  • cosunae
  • danpal96
  • Eric Jelli
  • Johannes HAMPP
  • johannaschmitz
  • landerlini
  • matthewakram
  • Maksim Kholmatov
  • moschetti
  • nbelakovski
  • nhartwic
  • ningOTI
  • ocaisa
  • olgert denas
  • phmoferring
  • rlehnigk
  • roshnipatel
  • snajder-r
  • stydodt
  • swrosati
  • tdayris
  • Valentin Schneider-Lunitz
  • xhejtman
  • Žiga Avsec
  • Tet Woo Lee
  • Thomas Brooks
  • Thomas Grainger
  • Thomas Mulvaney
  • Thomas Sibley
  • Tim Heap
  • Tim Tröndle
  • Tobias Ternent
  • Tom Willis
  • TomJohnZ
  • Travis Wrightsman
  • Valentyn Bezshapkin
  • Victor Lin
  • Vincent
  • Vini Salazar
  • pirovc
  • Vladimir Mikryukov
  • Wim Jeantine-Glenn
  • Yaman Qalieh
  • Yaroslav Halchenko
  • Ye Yuan
  • Yuhang Guo
  • Zane Selvans
  • Zbigniew Jędrzejewski-Szmek
  • Bailey Harrington
  • bcouturi
  • Bilgehan Nevruz
  • Adam Ciuris
  • Derrick Miller
  • Diego Rubert
  • Dr. Fabian Schlegel
  • Dustin Rodrigues
  • Edmund Miller
  • Edouard Choinière
  • Egor Kosaretskiy
  • Emmanouil "Manolis" Maragkakis
  • Eric Nitschke
  • Eric Normandeau
  • Fabian Neumann
  • Filipe Tessaro
  • Flo
  • Fong Chun Chan
  • Afonso Santos
  • Frank Löffler
  • Frankie Robertson
  • Fritjof Lammers
  • Jean-Sebastien Gounot
  • George Wu
  • Giacomo Tagliabue
  • gibran hemani
  • Giles Harper-Donnelly
  • Giulio Centorame
  • Grégoire Denay
  • Hamdiye Uzuner
  • Alistair Miles
  • Andrew Berger
  • Andrii Oriekhov
  • Aniket Pradhan
  • arnikz
  • BAKEZQ
  • Balázs Brankovics
  • Ben Evans
  • Ben Jolly
  • Branch Vincent
  • Byron J. Smith
  • Cail McLean Daley
  • Chang Ye
  • Chaz Reid
  • Charlie Pauvert
  • Chris Lamb
  • Christian Darius Romberg
  • Christian Klarhorst
  • Christoffer
  • Clement Fombonne
  • Colin J. Brislawn
  • Connor Jops
  • CowanCS1
  • Daniel Lusk
  • dariober
  • Kostis Anagnostopoulos
  • Krister Swenson
  • LarsStegemanGT
  • Leonardo Schwarz
  • Leopoldo Pla Sempere
  • Lim Jooyoung
  • Louis Vignoli
  • Ludwig Neste
  • Lukas Klein
  • LvKvA
  • Maarten0110
  • Maciek Bąk
  • Marcel Bargull
  • Marcin Magnus
  • Marco Vidal García
  • Mark Keller
  • Martin Holub
  • Martin Stancsics
  • Mathieu Bernard
  • Matt Stone
  • Matthias Wolf
  • Michael Jahn
  • Michal Stolarczyk
  • Mike DePalatis
  • Mitchell Robert Vollger
  • Mohammad Samman
  • Henry Webel
  • Ido Tamir
  • Jakub Kaczmarzyk
  • James Chuang
  • James Shaw
  • Jan Eil
  • Jason Greenbaum
  • Jelle Scholtalbers
  • Jeremy Magland
  • Jesse Bloom
  • Jesse Wallace
  • Jigar Patel
  • Joe Sapp
  • Johannes Heuel
  • Johannes Schumann
  • John Bates
  • John Hennig
  • John Huddleston
  • (major) john (major)
  • Josh Cook
  • JulioV
  • Karatuğ Ozan Bircan
  • Karel Břinda
  • Kevin Hoffschlag
  • Kirill
  • Knut Dagestad Rand

Groups, Institutes, Companies, and Organizations ⓘ

  • University of Duisburg-Essen
  • Science for Life Laboratory
  • The GLOBE Institute – University of Copenhagen
  • Medizinische Genetik Mainz, Limbach Genetics
  • 上海交通大学
  • CERN
  • University of Utah
  • LatchBio
  • Icahn School of Medicine at Mount Sinai
  • @Nykredit
  • Karolinska Institutet
  • Solynta
  • University of Frankfurt
  • @bihealth
  • Netherlands Institute of Ecology (NIOO-KNAW)
  • Oyat Consulting
  • Pairwise
  • Gekkonid Scientific
  • LHCb
  • EMBL
  • Data Science @google
  • University of Colorado School of Medicine
  • Universität Duisburg-Essen
  • Seoul National University
  • @neherlab @nextstrain
  • Princeton University
  • TRON gGmbH Mainz
  • @fulcrumgenomics
  • Spotify
  • @TRON-Bioinformatics
  • Clinical Genomics Uppsala / Uppsala University
  • @open-energy-transition
  • Paul Scherrer Institute
  • Swansea Academy of Advanced Computing, Swansea University
  • University of California, Davis
  • AWS
  • Helmholtz Centre for Environmental Research
  • Earth Sciences New Zealand (formerly GNS Science)
  • University Medicine Essen
  • BIH
  • @cid-harvard
  • DKTK/DKFZ
  • Technical University of Munich
  • NTNU
  • @novartis
  • Barcelona Supercomputing Center @BSC-ES
  • Sentieon
  • Regeneron Pharmaceuticals
  • Open Energy Transition
  • Université de Montréal
  • UZH Zurich
  • Exact Sciences
  • @cnio-bu
  • Lehigh University
  • UCSD Gravitational-Wave Paleontology Lab
  • @common-workflow-language
  • @seqera.io
  • Freelance Data Scientist
  • ImmunoScape
  • Gymrek Lab, UCSD
  • @sweden-ai-factory, @ENCCS, @coderefinery, @RI-SE
  • @insilicoconsulting
  • University of Duisburg Essen
  • Washington University School of Medicine
  • Giesselmann IT
  • DKFZ/Heidelberg University
  • Montreal Clinical Research Institute
  • @TileDB-Inc
  • @Syngenta
  • Data Science Centre, EMBL
  • LPC Caen - IN2P3 - CNRS
  • Institute for Health Metrics and Evaluation
  • University of Helsinki
  • IMS Nanofabrication GmbH
  • ETHZ
  • @sib-swiss
  • @BiomeSense
  • Proxima
  • Max Delbrück center for molecular medicine
  • University of Pennsylvania
  • @Alva-Genomics
  • University College London
  • Sorbonne Université, Paris
  • @txbiomed
  • Bioinformatics Software Engineer at Novartis Institutes for BioMedical Research (NIBR)
  • Esox Biologics
  • Mount Sinai Hospital (@marcoralab)
  • Genedata AG
  • @GenomicsUA @lyft
  • @RWTH-EBC
  • BASF AP
  • Vilnius University
  • P-CMR[C] / IDIBELL
  • University of Wisconsin-Madison
  • Georgia Tech
  • UW-Madison (WIPAC/IceCube)
  • Saarland University
  • Sage Bionetworks
  • Brabant Water
  • @nanoporetech
  • @idiap
  • University of Colorado Anschutz School of Medicine
  • Humane and Sustainable Food Lab at Stanford University
  • TU Delft
  • IOB
  • @tworiverbio
  • Monash University
  • University of Pittsburgh / Center for Craniofacial and Dental Genetics
  • Freie Universität Berlin
  • @USF-HII
  • NIAID
  • Caltech
  • www.hzdr.de
  • HHU Düsseldorf
  • Seqoia
  • @arcjet
  • A. C. Camargo Cancer Center
  • University of Utah Center for High Performance Computing, @chpc-uofu
  • @carpenter-lab at Case Western Reserve University
  • @mpinb
  • University of Basel
  • Duke-NUS
  • @BlueRiverTechnology
  • Gustave Roussy
  • Novartis
  • Sunagawa Lab @ ETH Zürich
  • @FredHutch / @blab / @nextstrain
  • University of Tartu
  • Dartmouth College, @dandi, @Debian, @DataLad, @neurodebian, @PyMVPA, @fail2ban
  • University of Michigan, Ann Arbor
  • China Agricultural University
  • @catalyst-cooperative
  • Amutable
  • Amsterdam UMC
  • @tempuslabs
  • Helmholtz-Zentrum Dresden-Rossendorf e.V.
  • @seqeralabs
  • National Institutes of Health
  • IBIS (Institut de Biologie Intégrative et des Systèmes)
  • Technische Universität Berlin
  • Lead Programmer at Afterthought LLC - The Isle game
  • Roche
  • University of Jyväskylä
  • University of Bern
  • 4Catalyzer
  • Institute for Molecular Bioscience, University of Queensland
  • @bio-raum @CVUA-RRW
  • SPD
  • @Adobe
  • Westerdijk Fungal Bioidiversity Institute
  • Sarepta Therapeutics
  • @manaakiwhenua
  • The Gladstone Institutes
  • CosmoStat, CEA Paris-Saclay
  • Freelancer for hire. Maybe.
  • Vestas
  • University of Glasgow
  • @JRC-IET, C3
  • CNRS, LIRMM, University of Montpellier
  • Treelogic & University of Alacant
  • Pasqal
  • Stockholm Universitetet
  • Hochschule Darmstadt
  • CORE
  • Harvard, USA
  • @Quantco
  • LPNHE - CNRS - Sorbonne Université
  • Max Planck Unit for the Science of Pathogens
  • Ascend Analytics
  • DTU biosustain
  • VBCF
  • Stony Brook Medicine
  • SYNTHO
  • La Jolla Institute for Allergy and Immunology @LJI-Bioinformatics @IEDB
  • LabRise Consulting
  • Flatiron Institute
  • Fred Hutchinson Cancer Research Center; Howard Hughes Medical Institute
  • CSIRO
  • Erlangen Centre for Astroparticle Physics
  • @blab @nextstrain
  • Daylily Informatics
  • Illumina
  • 𝐈𝐍𝐑𝐈𝐀🇫🇷 Nat. Inst. for DigitSci & Tech
  • Predictive Neuroscience Lab, University Hospital Essen
  • Oslo University Hospital
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.