Entering edit mode
8.1 years ago
Botond Sipos
★
1.7k
I wrote a gist about how to make snakefiles self-documenting:
# This snippet add the "self-documenting" feature to snakemake files.
# It is inspired by the Makefile in https://github.com/audreyr/cookiecutter-pypackage
# Add the follwing to your snakefile or include: "self_document.snake"
import re
def generate_help(sfile):
"""Parse out target and help message from file."""
handler = open(sfile, "r")
for line in handler:
match = re.match(r'^rule\s+([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
print("%-20s %s" % (target, help))
rule help: ## print list of all targets with help
input:
workflow.included
run:
print("--------------------------------------------")
[generate_help(sfile) for sfile in input]
print("--------------------------------------------")
# Then simply add a comment to your rule line preceded by '##'. Invoking snakemake help will print all targets and their descriptions.
Yeah, this might be a better way to do it :)