gynecoloji/snakemake_ATACseq

None

Overview

Latest release: v1.1.0, Last update: 2026-07-15

Share link: https://snakemake.github.io/snakemake-workflow-catalog?wf=gynecoloji/snakemake_ATACseq

Quality control: linting: failed formatting: failed

Workflow Rule Graph

This visualization of the workflow’s rule graph was automatically generated using Snakevision

Rule Graph light

Deployment

Step 1: Install Snakemake and Snakedeploy

Snakemake and Snakedeploy are best installed via the Conda package manager. It is recommended to install conda via Miniforge. Run

conda create -c conda-forge -c bioconda -c nodefaults --name snakemake snakemake snakedeploy

to install both Snakemake and Snakedeploy in an isolated environment. For all following commands ensure that this environment is activated via

conda activate snakemake

For other installation methods, refer to the Snakemake and Snakedeploy documentation.

Step 2: Deploy workflow

With Snakemake and Snakedeploy installed, the workflow can be deployed as follows. First, create an appropriate project working directory on your system and enter it:

mkdir -p path/to/project-workdir
cd path/to/project-workdir

In all following steps, we will assume that you are inside of that directory. Then run

snakedeploy deploy-workflow https://github.com/gynecoloji/snakemake_ATACseq . --tag v1.1.0

Snakedeploy will create two folders, workflow and config. The former contains the deployment of the chosen workflow as a Snakemake module, the latter contains configuration files which will be modified in the next step in order to configure the workflow to your needs.

Step 3: Configure workflow

To configure the workflow, adapt config/config.yml to your needs following the instructions below.

Step 4: Run workflow

The deployment method is controlled using the --software-deployment-method (short --sdm) argument.

To run the workflow using apptainer/singularity, use

snakemake --cores all --sdm apptainer

To run the workflow using a combination of conda and apptainer/singularity for software deployment, use

snakemake --cores all --sdm conda apptainer

To run the workflow with automatic deployment of all required software via conda/mamba, use

snakemake --cores all --sdm conda

Snakemake will automatically detect the main Snakefile in the workflow subfolder and execute the workflow module that has been defined by the deployment in step 2.

For further options such as cluster and cloud execution, see the docs.

Step 5: Generate report

After finalizing your data analysis, you can automatically generate an interactive visual HTML report for inspection of results together with parameters and code inside of the browser using

snakemake --report report.zip

Configuration

The following section is imported from the workflow’s config/README.md.

Configuration

This workflow is configured through two files in this directory:

  • config.yaml — all workflow parameters (see below)

  • samples.csv — the sample sheet

plus reference data you download into ref/ (not tracked in git; see Reference data).

Sample sheet (config/samples.csv)

CSV with one row per sample and these columns:

column

description

sample_id

Sample name. Raw reads must be data/<sample_id>_R1_001.fastq.gz / _R2_001.fastq.gz.

type

Free-text condition label (e.g. Control, NICD3).

group

Replicate group. Reproducibility handling is chosen from group size (below).

Example:

sample_id,type,group
GSF4007-Control_1_S11,Control,group1
GSF4007-Control_2_S13,Control,group1
GSF4007-Control_3_S15,Control,group1
GSF4007-NICD3-V5_1_S12,NICD3,group2
GSF4007-NICD3-V5_2_S14,NICD3,group2
GSF4007-NICD3-V5_3_S16,NICD3,group2

Per-group reproducibility is derived automatically from the number of replicates in each group:

  • ≥ 3 replicates → majority vote (a peak is kept if it recurs in ≥ consensus_min_replicates replicates).

  • exactly 2 replicates → IDR (idr_threshold).

  • 1 replicate → the sample’s own peaks are used as-is.

Parameters (config/config.yaml)

Every parameter — with its type, default, and description — is defined once in the config schema, workflow/schemas/config.schema.yaml. That schema is the single source of truth: the workflow validates config.yaml against it on every run (and fills in defaults for anything you omit), and the Snakemake Workflow Catalog renders it as a parameter table on the workflow page.

To configure a run, edit config.yaml directly — it ships with working defaults and an inline comment on every parameter. At minimum, point the reference-file paths (human_fasta, blacklist, gtf, promoter_bed, enhancer_bed) at the files you provide (see Reference data).

Reference data

Genomes, indexes and large annotations are not shipped in the repo (they are .gitignored). Download / place them under ref/ before running, matching the paths in config.yaml:

  • ref/hg38.fa — chr-prefixed UCSC human genome

  • ref/hg38_blacklist_regions.bed — ENCODE hg38 blacklist (shipped)

  • ref/gencode.v36.annotation.gtf — GENCODE annotation (for TSS QC)

  • ref/hg38.2bit — for computeGCBias

  • ref/picard.jar — Picard (used by MarkDuplicates)

  • ref/JASPAR2024_CORE_vertebrates.jasparoptional, only for the footprint_all (TOBIAS) stage; JASPAR-format motifs pointed to by jaspar_motifs (see the top-level README)

The Bowtie2 index (ref/BOWTIE2/) is built automatically by the build_genome_index rule from human_fasta.

See the top-level README.md for full setup and run instructions.

Workflow parameters

The following table is automatically parsed from the workflow’s config.schema.y(a)ml file.

Parameter

Type

Description

Required

Default

samples_table

string

Path to the sample sheet CSV. Columns: sample_id, type, group. Per-group reproducibility (majority vote / IDR / single) is derived from group size.

yes

config/samples.csv

adapter_r1

string

Optional. Explicit R1 adapter sequence that OVERRIDES fastp auto-detection. Leave unset to auto-detect adapters for paired-end reads (–detect_adapter_for_pe).

adapter_r2

string

Optional. Explicit R2 adapter sequence (used together with adapter_r1).

human_fasta

string

Human genome FASTA. Must be chr-prefixed UCSC (chr1..chrX) to match the blacklist.

yes

ref/hg38.fa

bowtie2_index

string

Bowtie2 index prefix for the built human reference (created automatically by the build_genome_index rule).

yes

ref/BOWTIE2/genome

align_chroms

array

Human chromosomes kept when building the index (reads then align only to these). Use an empty list to keep all human chromosomes.

yes

keep_chroms

array

Analysis keep-set for the final human BAM (mito-% QC is recorded first). Must be a subset of align_chroms and consistent with keep_chroms_regex.

yes

blacklist

string

ENCODE-style blacklist BED (chr-prefixed).

yes

ref/hg38_blacklist_regions.bed

peak_types

array

Peak types to analyze (narrowPeak for standard ATAC-seq; add broadPeak if needed).

[‘narrowPeak’]

effective_genome_size

integer

Effective genome size for deepTools RPGC normalization (hg38 default).

yes

2913022398

bin_size

integer

bigWig bin size in bp.

yes

25

consensus_window

integer

Fixed consensus peak width around each summit, in bp.

yes

500

consensus_min_replicates

integer

Majority-vote threshold for conditions with >=3 replicates.

yes

2

idr_threshold

number

IDR threshold for conditions with exactly 2 replicates.

yes

0.05

idr_relaxed_pvalue

number

MACS2 -p value for the relaxed peak calls used as IDR input.

yes

0.1

idr_top_n_peaks

integer

Number of top relaxed peaks retained per replicate for IDR.

yes

150000

keep_chroms_regex

string

Regex used by the consensus step to filter chromosomes; keep consistent with keep_chroms.

yes

^chr([1-9]

macs2_genome

string

MACS2 -g effective genome preset (e.g. hs, mm, ce, dm).

yes

hs

gtf

string

GENCODE GTF (chr-prefixed) used for TSS-enrichment QC.

yes

ref/gencode.v36.annotation.gtf

promoter_bed

string

Promoter BED used for the reads-in-annotation QC.

yes

ref/promoter_chr1-22X.bed

enhancer_bed

string

Enhancer BED used for the reads-in-annotation QC.

yes

ref/enhancer_chr1-22X.bed

jaspar_motifs

string

JASPAR-format motif file for the optional TOBIAS footprinting stage (footprint_all target). Download the JASPAR CORE vertebrates PFMs into ref/ (see README). Not used by the primary or QC pipelines.

ref/JASPAR2024_CORE_vertebrates.jaspar

Linting and formatting

Linting results
  1No validator found for JSON Schema version identifier 'http://json-schema.org/draft-07/schema#'
  2Defaulting to validator for JSON Schema version 'https://json-schema.org/draft/2020-12/schema'
  3Note that schema file may not be validated correctly.
  4Lints for snakefile /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/common.smk:
  5    * Mixed rules and functions in same snakefile.:
  6      Small one-liner functions used only once should be defined as lambda
  7      expressions. Other functions should be collected in a common module, e.g.
  8      'rules/common.smk'. This makes the workflow steps more readable.
  9      Also see:
 10      https://snakemake.readthedocs.io/en/latest/snakefiles/modularization.html#includes
 11
 12Lints for snakefile /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/footprint.smk:
 13    * Mixed rules and functions in same snakefile.:
 14      Small one-liner functions used only once should be defined as lambda
 15      expressions. Other functions should be collected in a common module, e.g.
 16      'rules/common.smk'. This makes the workflow steps more readable.
 17      Also see:
 18      https://snakemake.readthedocs.io/en/latest/snakefiles/modularization.html#includes
 19
 20Lints for rule fastqc (line 49, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
 21    * Param outdir is a prefix of input or output file but hardcoded:
 22      If this is meant to represent a file path prefix, it will fail when
 23      running workflow in environments without a shared filesystem. Instead,
 24      provide a function that infers the appropriate prefix from the input or
 25      output file, e.g.: lambda w, input: os.path.splitext(input[0])[0]
 26      Also see:
 27      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 28      https://snakemake.readthedocs.io/en/stable/tutorial/advanced.html#tutorial-input-functions
 29
 30Lints for rule fastp (line 70, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
 31    * Shell command directly uses variable FASTP_DIR from outside of the rule:
 32      It is recommended to pass all files as input and output, and non-file
 33      parameters via the params directive. Otherwise, provenance tracking is
 34      less accurate.
 35      Also see:
 36      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 37
 38Lints for rule bowtie2_align (line 102, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
 39    * No log directive defined:
 40      Without a log directive, all output will be printed to the terminal. In
 41      distributed environments, this means that errors are harder to discover.
 42      In local environments, output of concurrent jobs will be mixed and become
 43      unreadable.
 44      Also see:
 45      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#log-files
 46    * Shell command directly uses variable ALIGN_DIR from outside of the rule:
 47      It is recommended to pass all files as input and output, and non-file
 48      parameters via the params directive. Otherwise, provenance tracking is
 49      less accurate.
 50      Also see:
 51      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 52    * Shell command directly uses variable TMP_DIR from outside of the rule:
 53      It is recommended to pass all files as input and output, and non-file
 54      parameters via the params directive. Otherwise, provenance tracking is
 55      less accurate.
 56      Also see:
 57      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 58    * Shell command directly uses variable TMP_DIR from outside of the rule:
 59      It is recommended to pass all files as input and output, and non-file
 60      parameters via the params directive. Otherwise, provenance tracking is
 61      less accurate.
 62      Also see:
 63      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 64    * Param index is a prefix of input or output file but hardcoded:
 65      If this is meant to represent a file path prefix, it will fail when
 66      running workflow in environments without a shared filesystem. Instead,
 67      provide a function that infers the appropriate prefix from the input or
 68      output file, e.g.: lambda w, input: os.path.splitext(input[0])[0]
 69      Also see:
 70      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 71      https://snakemake.readthedocs.io/en/stable/tutorial/advanced.html#tutorial-input-functions
 72
 73Lints for rule samtools_sort_filter_index (line 132, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
 74    * Shell command directly uses variable FILTERED_DIR from outside of the rule:
 75      It is recommended to pass all files as input and output, and non-file
 76      parameters via the params directive. Otherwise, provenance tracking is
 77      less accurate.
 78      Also see:
 79      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 80    * Shell command directly uses variable TMP_DIR from outside of the rule:
 81      It is recommended to pass all files as input and output, and non-file
 82      parameters via the params directive. Otherwise, provenance tracking is
 83      less accurate.
 84      Also see:
 85      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 86    * Shell command directly uses variable FILTERED_DIR from outside of the rule:
 87      It is recommended to pass all files as input and output, and non-file
 88      parameters via the params directive. Otherwise, provenance tracking is
 89      less accurate.
 90      Also see:
 91      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 92    * Shell command directly uses variable TMP_DIR from outside of the rule:
 93      It is recommended to pass all files as input and output, and non-file
 94      parameters via the params directive. Otherwise, provenance tracking is
 95      less accurate.
 96      Also see:
 97      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
 98    * Shell command directly uses variable TMP_DIR from outside of the rule:
 99      It is recommended to pass all files as input and output, and non-file
100      parameters via the params directive. Otherwise, provenance tracking is
101      less accurate.
102      Also see:
103      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
104    * Shell command directly uses variable TMP_DIR from outside of the rule:
105      It is recommended to pass all files as input and output, and non-file
106      parameters via the params directive. Otherwise, provenance tracking is
107      less accurate.
108      Also see:
109      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
110    * Shell command directly uses variable TMP_DIR from outside of the rule:
111      It is recommended to pass all files as input and output, and non-file
112      parameters via the params directive. Otherwise, provenance tracking is
113      less accurate.
114      Also see:
115      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
116    * Shell command directly uses variable TMP_DIR from outside of the rule:
117      It is recommended to pass all files as input and output, and non-file
118      parameters via the params directive. Otherwise, provenance tracking is
119      less accurate.
120      Also see:
121      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
122    * Shell command directly uses variable TMP_DIR from outside of the rule:
123      It is recommended to pass all files as input and output, and non-file
124      parameters via the params directive. Otherwise, provenance tracking is
125      less accurate.
126      Also see:
127      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
128    * Shell command directly uses variable TMP_DIR from outside of the rule:
129      It is recommended to pass all files as input and output, and non-file
130      parameters via the params directive. Otherwise, provenance tracking is
131      less accurate.
132      Also see:
133      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
134    * Shell command directly uses variable TMP_DIR from outside of the rule:
135      It is recommended to pass all files as input and output, and non-file
136      parameters via the params directive. Otherwise, provenance tracking is
137      less accurate.
138      Also see:
139      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
140    * Shell command directly uses variable TMP_DIR from outside of the rule:
141      It is recommended to pass all files as input and output, and non-file
142      parameters via the params directive. Otherwise, provenance tracking is
143      less accurate.
144      Also see:
145      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
146
147Lints for rule remove_duplicates (line 186, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
148    * Shell command directly uses variable DEDUP_DIR from outside of the rule:
149      It is recommended to pass all files as input and output, and non-file
150      parameters via the params directive. Otherwise, provenance tracking is
151      less accurate.
152      Also see:
153      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
154
155Lints for rule filter_blacklist (line 212, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
156    * Shell command directly uses variable BLACKLIST_FILTERED_DIR from outside of the rule:
157      It is recommended to pass all files as input and output, and non-file
158      parameters via the params directive. Otherwise, provenance tracking is
159      less accurate.
160      Also see:
161      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
162    * Shell command directly uses variable TMP_DIR from outside of the rule:
163      It is recommended to pass all files as input and output, and non-file
164      parameters via the params directive. Otherwise, provenance tracking is
165      less accurate.
166      Also see:
167      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
168
169Lints for rule call_peaks (line 289, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
170    * Param outdir is a prefix of input or output file but hardcoded:
171      If this is meant to represent a file path prefix, it will fail when
172      running workflow in environments without a shared filesystem. Instead,
173      provide a function that infers the appropriate prefix from the input or
174      output file, e.g.: lambda w, input: os.path.splitext(input[0])[0]
175      Also see:
176      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
177      https://snakemake.readthedocs.io/en/stable/tutorial/advanced.html#tutorial-input-functions
178
179Lints for rule build_genome_index (line 318, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
180    * Param index is a prefix of input or output file but hardcoded:
181      If this is meant to represent a file path prefix, it will fail when
182      running workflow in environments without a shared filesystem. Instead,
183      provide a function that infers the appropriate prefix from the input or
184      output file, e.g.: lambda w, input: os.path.splitext(input[0])[0]
185      Also see:
186      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
187      https://snakemake.readthedocs.io/en/stable/tutorial/advanced.html#tutorial-input-functions
188
189Lints for rule create_bigwig (line 347, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
190    * Shell command directly uses variable BIGWIG_DIR from outside of the rule:
191      It is recommended to pass all files as input and output, and non-file
192      parameters via the params directive. Otherwise, provenance tracking is
193      less accurate.
194      Also see:
195      https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules
196
197Lints for rule relaxed_peaks (line 376, /tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk):
198    * Param outdir is a prefix of input or output file but hardcoded:
199      If this is meant to represent a file path prefix, it will fail when
200      running workflow in environments without a shared filesystem. Instead,
201
202... (truncated)
Formatting results
 1[DEBUG] 
 2[DEBUG] In file "/tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/atacseq.smk":  Formatted content is different from original
 3[DEBUG] 
 4[DEBUG] In file "/tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/common.smk":  Formatted content is different from original
 5[DEBUG] 
 6[DEBUG] In file "/tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/footprint.smk":  Formatted content is different from original
 7[DEBUG] 
 8[DEBUG] In file "/tmp/tmpik6gy6sl/gynecoloji-snakemake_ATACseq-510f2e3/workflow/rules/qc.smk":  Formatted content is different from original
 9[DEBUG] 
10[INFO] 4 file(s) would be changed 😬
11[INFO] 1 file(s) would be left unchanged 🎉
12
13snakefmt version: 0.11.5