Top 1K Features Creators Events Podcasts Books Extensions Interviews Blog Explorer CSV

snakemake

< >

snakemake is a programming language created in 2012.

#3177on PLDB 12Years Old

A workflow is defined in a ‘Snakefile’ through a domain-specific language that is close to standard Python syntax. It consists of rules that denote how to create output files from input files. The workflow is implied by dependencies between the rules that arise from one rule needing an output file of another as an input file.


Example from the web:
SAMPLES = "100 101 102 103".split() REF = "hg19.fa" rule all:  input: "{sample}.coverage.pdf".format(sample = sample)     for sample in SAMPLES rule fastq_to_sai:   input: ref = REF, reads = "{sample}.{group}.fastq"   output: temp("{sample}.{group}.sai")   shell: "bwa aln {input.ref} {input.reads} > {output}" rule sai_to_bam:   input: REF, "{sample}.1.sai", "{sample}.2.sai",      "{sample}.1.fastq", "{sample}.2.fastq"   output: protected("{sample}.bam")   shell: "bwa sampe {input} | samtools view -Sbh - > {output}" rule remove_duplicates:   input: "{sample}.bam"   output: "{sample}.nodup.bam"   shell: "samtools rmdup {input} {output}" rule plot_coverage_histogram:   input: "{sample}.nodup.bam"   output: hist = "{sample}.coverage.pdf"   run:     from matplotlib.pyplot import hist, savefig     hist(list(map(int,       shell("samtools mpileup {input} | cut -f4",       iterable = True))))     savefig(output.hist)
- Build the next great programming language · Add · About · Search · Keywords · Livestreams · Labs · Resources · Acknowledgements · Part of the World Wide Scroll