This document describes the output produced by the pipeline. Most of the plots are taken from the MultiQC report, which summarises results at the end of the pipeline.

Pipeline overview

The pipeline is built using Nextflow. See main for a condensed overview of the steps in the pipeline, and the bioinformatics tools used at each step.

See Illumina website for more information regarding the ATAC-seq protocol, and for an extensive list of publications.

The directories listed below will be created in the output directory after the pipeline has finished. All paths are relative to the top-level results directory.

Library-level analysis

The initial QC and alignments are performed at the library-level e.g. if the same library has been sequenced more than once to increase sequencing depth. This has the advantage of being able to assess each library individually, and the ability to process multiple libraries from the same sample in parallel.

Raw read QC

Output files
  • fastqc/
    • *_fastqc.html: FastQC report containing quality metrics for read 1 (and read2 if paired-end) before adapter trimming.
  • fastqc/zips/
    • * Zip archive containing the FastQC report, tab-delimited data file and plot images.

FastQC gives general quality metrics about your reads. It provides information about the quality score distribution across your reads, the per base sequence content (%A/C/G/T). You get information about adapter contamination and other overrepresented sequences. For further reading and documentation see the FastQC help pages.

Adapter trimming

Output files
  • trimgalore/
    • *fastq.gz: If --save_trimmed is specified, FastQ files after adapter trimming will be placed in this directory.
  • trimgalore/logs/
    • *.log: Log file generated by Trim Galore!.
  • trimgalore/fastqc/
    • *_fastqc.html: FastQC report containing quality metrics for read 1 (and read2 if paired-end) after adapter trimming.
  • trimgalore/fastqc/zips/
    • * Zip archive containing the FastQC report, tab-delimited data file and plot images.

Trim Galore! is a wrapper tool around Cutadapt and FastQC to consistently apply quality and adapter trimming to FastQ files. By default, Trim Galore! will automatically detect and trim the appropriate adapter sequence. For most ATAC-seq datasets this will be the Nextera adapter sequence ‘CTGTCTCTTATA’. See for more details about the trimming options.

MultiQC - Cutadapt trimmed sequence plot


The pipeline has been written in a way where all the files generated downstream of the alignment are placed in the same directory as specified by --aligner e.g. if --aligner bwa is specified then all the downstream results will be placed in the bwa/ directory. This helps with organising the directory structure and more importantly, allows the end-user to get the results from multiple aligners by simply re-running the pipeline with a different --aligner option along the -resume parameter. It also means that results won’t be overwritten when resuming the pipeline and can be used for benchmarking between alignment algorithms if required. Thus, <ALIGNER> in the directory structure below corresponds to the aligner set when running the pipeline.

Output files
  • <ALIGNER>/library/
    • *.bam: The files resulting from the alignment of individual libraries are not saved by default so this directory will not be present in your results. You can override this behaviour with the use of the --save_align_intermeds flag in which case it will contain the coordinate sorted alignment files in *.bam format.
  • <ALIGNER>/library/samtools_stats/
    • SAMtools *.flagstat, *.idxstats and *.stats files generated from the alignment files.

NB: File names in the resulting directory (i.e. <ALIGNER>/library/) will have the ‘.Lb.’ suffix.

Adapter-trimmed reads are mapped to the reference assembly using the aligner set by the --aligner parameter. Available aligners are BWA (default), Bowtie 2, Chromap and STAR. A genome index is required to run any of this aligners so if this is not provided explicitly using the corresponding parameter (e.g. --bwa_index), then it will be created automatically from the genome fasta input. The index creation process can take a while for larger genomes so it is possible to use the --save_reference parameter to save the indices for future pipeline runs, reducing processing times.

MultiQC - SAMtools stats plot

MultiQC - SAMtools idxstats plot

NB: Currently, paired-end files produced by Chromap are excluded from downstream analysis due to this issue. Single-end files are processed normally.

Merged library-level analysis

The library-level alignments associated with the same sample are merged and subsequently used for the downstream analyses.

Unmapped reads

The --save_unaligned parameter enables to obtain FastQ files containing unmapped reads (only available for STAR and Bowtie2).

Output files - `/library/unmapped/` - `*.fastq.gz`: If `--save_unaligned` is specified, FastQ files containing unmapped reads will be placed in this directory.

STAR logs

Output files
  • star/library/log/
    • * File containing filtered splice junctions detected after mapping the reads.
    • * STAR alignment report containing the mapping results summary.
    • *.Log.out and *.Log.progress.out: STAR log files containing detailed information about the run. Typically only useful for debugging purposes.

Merged library-level analysis

The library-level alignments associated with the same sample are merged and subsequently used for the downstream analyses.

Alignment merging, duplicate marking, filtering and QC

Output files
  • <ALIGNER>/merged_library/
    • *.bam: Merged library-level, coordinate sorted *.bam files after the marking of duplicates, and filtering based on various criteria. The file suffix for the final filtered files will be *.mLb.clN.*. If you specify the --save_align_intermeds parameter then two additional sets of files will be present. These represent the unfiltered alignments with duplicates marked (*.mLb.mkD.*), and in the case of paired-end datasets the filtered alignments before the removal of orphan read pairs (*.mLb.flT.*).
  • <ALIGNER>/merged_library/samtools_stats/
    • SAMtools *.flagstat, *.idxstats and *.stats files generated from the alignment files.
  • <ALIGNER>/merged_library/picard_metrics/
    • *_metrics: Alignment QC files from picard CollectMultipleMetrics.
    • *.metrics.txt: Metrics file from MarkDuplicates.
  • <ALIGNER>/merged_library/picard_metrics/pdf/
    • *.pdf: Alignment QC plot files from picard CollectMultipleMetrics.
  • <ALIGNER>/merged_library/preseq/
    • *.lc_extrap.txt: Preseq expected future yield file.

NB: File names in the resulting directory (i.e. <ALIGNER>/merged_library/) will have the ‘.mLb.’ suffix.

Picard MergeSamFiles and MarkDuplicates are used in combination to merge the alignments, and for the marking of duplicates, respectively. If you only have one library for any given replicate then the merging step is not carried out because the library-level and merged library-level BAM files will be exactly the same.

MultiQC - Picard deduplication stats plot

Read duplicate marking is carried out using the Picard MarkDuplicates command. Duplicate reads are generally removed from the aligned reads to mitigate for fragments in the library that may have been sequenced more than once due to PCR biases. There is an option to keep duplicate reads with the --keep_dups parameter but its generally recommended to remove them to avoid the wrong interpretation of the results. A similar option has been provided to keep reads that are multi-mapped - --keep_multi_map. Other steps have been incorporated into the pipeline to filter the resulting alignments - see main for a more comprehensive listing, and the tools used at each step. A selection of alignment-based QC metrics generated by Picard CollectMultipleMetrics and MarkDuplicates will be included in the MultiQC report.

MultiQC - Picard insert size plot

Certain cell types and tissues yield an enormous fraction (typically 20–80%) of unusable sequences of mitochondrial origin. This is a known problem that is specific to ATAC-seq library preps - see Montefiori et al. 2017. There is an option to keep these reads using the --keep_mito parameter but its generally recommended to remove these in order to get a more reliable assessment of the duplication rate from the rest of the genome, and to avoid any biases in the downstream analyses.

The Preseq package is aimed at predicting and estimating the complexity of a genomic sequencing library, equivalent to predicting and estimating the number of redundant reads from a given sequencing depth and how many will be expected from additional sequencing using an initial sequencing experiment. The estimates can then be used to examine the utility of further sequencing, optimize the sequencing depth, or to screen multiple libraries to avoid low complexity samples. The dashed line shows a perfectly complex library where total reads = unique reads. Note that these are predictive numbers only, not absolute. The MultiQC plot can sometimes give extreme sequencing depth on the X axis - click and drag from the left side of the plot to zoom in on more realistic numbers.

MultiQC - Preseq library complexity plot

Normalised bigWig files

Output files
  • <ALIGNER>/merged_library/bigwig/
    • *.bigWig: Normalised bigWig files scaled to 1 million mapped reads.

The bigWig format is in an indexed binary format useful for displaying dense, continuous data in Genome Browsers such as the UCSC and IGV. This mitigates the need to load the much larger BAM files for data visualisation purposes which will be slower and result in memory issues. The coverage values represented in the bigWig file can also be normalised in order to be able to compare the coverage across multiple samples - this is not possible with BAM files. The bigWig format is also supported by various bioinformatics software for downstream processing such as meta-profile plotting.

Coverage QC

Output files
  • <ALIGNER>/merged_library/deeptools/plotfingerprint/
    • *.plotFingerprint.pdf, *.plotFingerprint.qcmetrics.txt, *.plotFingerprint.raw.txt: plotFingerprint output files.
  • <ALIGNER>/merged_library/deeptools/plotprofile/
    • *.computeMatrix.mat.gz, *, *.plotProfile.pdf, *, *.plotHeatmap.pdf, * plotProfile output files.

deepTools plotFingerprint is a useful QC for ATAC-seq data in order to see the relative enrichment of the samples in the experiment on a genome-wide basis (see plotFingerprint docs).

MultiQC - deepTools plotFingerprint plot

The results from deepTools plotProfile gives you a quick visualisation for the genome-wide enrichment of your samples at the TSS, and across the gene body. During the downstream analysis, you may want to refine the features/genes used to generate these plots in order to see a more specific condition-related effect.

MultiQC - deepTools plotProfile plot

Call peaks

Output files
  • <ALIGNER>/merged_library/macs2/<PEAK_TYPE>/
    • *.xls, *.broadPeak or *.narrowPeak, *.gappedPeak, *summits.bed: MACS2 output files - the files generated will depend on whether MACS2 has been run in narrowPeak or broadPeak mode.
    • *.annotatePeaks.txt: HOMER peak-to-gene annotation file.
  • <ALIGNER>/merged_library/macs2/<PEAK_TYPE>/qc/
    • macs_peak.plots.pdf: QC plots for MACS2 peaks.
    • macs_annotatePeaks.plots.pdf: QC plots for peak-to-gene feature annotation.
    • *.FRiP_mqc.tsv, *.count_mqc.tsv, macs_annotatePeaks.summary_mqc.tsv: MultiQC custom-content files for FRiP score, peak count and peak-to-gene ratios.

NB: <PEAK_TYPE> in the directory structure above corresponds to the type of peak that you have specified to call with MACS2 i.e. broad_peak or narrow_peak. If you so wish, you can call both narrow and broad peaks without redoing the preceding steps in the pipeline such as the alignment and filtering. For example, if you already have broad peaks then just add --narrow_peak -resume to the command you used to run the pipeline, and these will be called too! However, resuming the pipeline will only be possible if you have not deleted the work/ directory generated by the pipeline.

MACS2 is one of the most popular peak-calling algorithms for ChIP-seq data. For ATAC-seq data we are also looking for genome-wide regions of enrichment but in this case without comparison to a standard control sample (e.g. input DNA). By default, the peaks are called with the MACS2 --broad parameter. If, however, you would like to call narrow peaks then please provide the --narrow_peak parameter when running the pipeline. See MACS2 outputs for a description of the output files generated by MACS2.

MultiQC - MACS2 total peak count plot

HOMER is used to annotate the peaks relative to known genomic features. HOMER is able to use the --gtf annotation file which is provided to the pipeline. Please note that some of the output columns will be blank because the annotation is not provided using HOMER’s in-built database format. However, the more important fields required for downstream analysis will be populated i.e. Annotation, Distance to TSS and Nearest Promoter ID.

MultiQC - HOMER annotatePeaks peak-to-gene feature ratio plot

Various QC plots per sample including number of peaks, fold-change distribution, FRiP score and peak-to-gene feature annotation are also generated by the pipeline. Where possible these have been integrated into the MultiQC report.

MultiQC - MACS2 peaks FRiP score plot

Create and quantify consensus set of peaks

Output files
  • <ALIGNER>/merged_library/macs2/<PEAK_TYPE>/consensus/
    • *.bed: Consensus peak-set across all samples in BED format.
    • *.saf: Consensus peak-set across all samples in SAF format. Required by featureCounts for read quantification.
    • *.featureCounts.txt: Read counts across all samples relative to consensus peak-set.
    • *.annotatePeaks.txt: HOMER peak-to-gene annotation file for consensus peaks.
    • *.boolean.annotatePeaks.txt: Spreadsheet representation of consensus peak-set across samples with gene annotation columns. The columns from individual peak files are included in this file along with the ability to filter peaks based on their presence or absence in multiple replicates/conditions.
    • *.boolean.txt: Spreadsheet representation of consensus peak-set across samples without gene annotation columns. Same as file above but without annotation columns.
    • *.boolean.intersect.plot.pdf, *.boolean.intersect.txt: UpSetR files to illustrate peak intersection.

In order to perform the differential accessibility analysis we need to be able to carry out the read quantification for the same intervals across all of the samples in the experiment. To this end, the individual peak-sets called per sample have to be merged together in order to create a consensus set of peaks.

Using the consensus peaks it is possible to assess the degree of overlap between the peaks from a set of samples e.g. Which consensus peaks contain peaks that are common/unique to a given set of samples?. This may be useful for downstream filtering of peaks based on whether they are called in multiple replicates/conditions. Please note that it is possible for a consensus peak to contain multiple peaks from the same sample. Unfortunately, this is sample-dependent but the files generated by the pipeline do have columns that report such instances and allow you to factor them into any further analysis.

R - UpSetR peak intersection plot

By default, the peak-sets are not filtered, therefore, the consensus peaks will be generated across the union set of peaks from all samples. However, you can increment the --min_reps_consensus parameter appropriately if you are confident you have good reproducibility amongst your replicates to create a “reproducible” set of consensus of peaks. In future iterations of the pipeline more formal analyses such as IDR may be implemented to obtain reproducible and high confidence peak-sets with which to perform this sort of analysis.

The featureCounts tool is used to count the number of reads relative to the consensus peak-set across all of the samples. This essentially generates a file containing a matrix where the rows represent the consensus intervals, the columns represent all of the samples in the experiment, and the values represent the raw read counts.

MultiQC - featureCounts consensus peak read assignment plot

Read counting and differential accessibility analysis

Output files
  • <ALIGNER>/merged_library/macs2/<PEAK_TYPE>/consensus/deseq2/
    • *.plots.pdf: File containing PCA and hierarchical clustering plots.
    • *.dds.RData: File containing R DESeqDataSet object generated by DESeq2, with either an rlog or vst assay storing the variance-stabilised data.
    • *.rds: Alternative version of the RData file suitable for readRDS to give user control of the eventual object name.
    • *pca.vals.txt: Matrix of values for the first 2 principal components.
    • *.sample.dists.txt: Sample distance matrix.
    • R_sessionInfo.log: File containing information about R, the OS and attached or loaded packages.
  • <ALIGNER>/merged_library/macs2/<PEAK_TYPE>/consensus/sizeFactors/
    • *.txt, *.RData: Files containing DESeq2 sizeFactors per sample.

DESeq2 is more commonly used to perform differential expression analysis for RNA-seq datasets. However, it can also be used for ATAC-seq differential accessibility analysis, in which case you can imagine that instead of counts per gene for RNA-seq data we now have counts per accessible region.

This pipeline uses a standardised DESeq2 analysis script to get an idea of the reproducibility within the experiment, and to assess the overall differential accessibility. Please note that this will not suit every experimental design, and if there are other problems with the experiment then it may not work as well as expected.

The script included in the pipeline uses DESeq2 to normalise read counts across all of the provided samples in order to create a PCA plot and a clustered heatmap showing pairwise Euclidean distances between the samples in the experiment. These help to show the similarity between groups of samples and can reveal batch effects and other potential issues with the experiment.

By default, the pipeline uses the vst transformation which is more suited to larger experiments. You can set the parameter --deseq2_vst false if you wish to use the DESeq2 native rlog option. See DESeq2 docs for a more detailed explanation.

MultiQC - DESeq2 PCA plot

MultiQC - DESeq2 sample similarity plot


Output files
  • <ALIGNER>/merged_library/ataqv/<PEAK_TYPE>/
    • .json: JSON files containing ATAC-seq specific metrics for each sample.
  • <ALIGNER>/merged_library/ataqv/<PEAK_TYPE>/html/
    • Folder containing ataqv results aggregated across all samples for visualisation via an internet browser.

ataqv is a toolkit for measuring and comparing ATAC-seq results. It was written to help understand how well ATAC-seq assays have worked, and to make it easier to spot differences that might be caused by library prep or sequencing. Please see ataqv homepage for documentation and an example report.

Merged replicate-level analysis

The alignments associated with all of the replicates from the same experimental condition can also be merged. This can be useful to increase the coverage for peak-calling and for other analyses that require high sequencing depth such as motif footprinting. The analysis steps and directory structure for <ALIGNER>/merged_library/ and <ALIGNER>/merged_replicate/ are almost identical.

File names in the resulting directory (i.e. <ALIGNER>/merged_replicate/) will have the ‘.mRp.’ suffix.

You can skip this portion of the analysis by specifying the --skip_merge_replicates parameter.

NB: Merged library-level alignments will be used for read counting relative to the consensus merged replicate-level peakset. This is the only way in which differential analysis can be performed at the merged replicate-level.

Aggregate analysis

Present QC for the raw read, alignment, peak and differential accessibility results

Output files
  • multiqc/<PEAK_TYPE>/
    • multiqc_report.html: A standalone HTML file that can be viewed in your web browser.
    • multiqc_data/: Directory containing parsed statistics from the different tools used in the pipeline.
    • multiqc_plots/: Directory containing static images from the report in various formats.

MultiQC is a visualisation tool that generates a single HTML report summarising all samples in your project. Most of the pipeline QC results are visualised in the report and further statistics are available within the report data directory.

Results generated by MultiQC collate pipeline QC from FastQC, TrimGalore, samtools flagstat, samtools idxstats, samtools stats, picard CollectMultipleMetrics, picard MarkDuplicates, Preseq, deepTools plotProfile, deepTools plotFingerprint and featureCounts. The default multiqc config file also contains the provision for loading custom-content to report peak counts, FRiP scores, peak-to-gene annnotation proportions, sample-similarity heatmaps and PCA plots.

The pipeline has special steps which also allow the software versions to be reported in the MultiQC output for future traceability. For more information about how to use MultiQC reports, see

Create IGV session file

Output files
  • igv/<PEAK_TYPE>/
    • igv_session.xml: Session file that can be directly loaded into IGV.
    • igv_files.txt: File containing a listing of the files used to create the IGV session.

An IGV session file will be created at the end of the pipeline containing the normalised bigWig tracks, per-sample peaks, consensus peaks and differential sites. This avoids having to load all of the data individually into IGV for visualisation.

The genome fasta file required for the IGV session will be the same as the one that was provided to the pipeline. This will be copied into genome/ to overcome any loading issues. If you prefer to use another path or an in-built genome provided by IGV just change the genome entry in the second-line of the session file.

The file paths in the IGV session file will only work if the results are kept in the same place on your storage. If the results are moved or for example, if you prefer to load the data over the web then just replace the file paths with others that are more appropriate.

Once installed, open IGV, go to File > Open Session and select the igv_session.xml file for loading.

IGV screenshot

NB: If you are not using an in-built genome provided by IGV you will need to load the annotation yourself e.g. in .gtf and/or .bed format.

Other results

Reference genome files

Output files
  • genome/

    • A number of genome-specific files are generated by the pipeline in order to aid in the filtering of the data, and because they are required by standard tools such as BEDTools. These can be found in this directory along with the genome fasta file which is required by IGV. If using a genome from AWS iGenomes and if it exists a README.txt file containing information about the annotation version will also be saved in this directory.
  • genome/index/

    • bwa/: Directory containing BWA indices.

    • bowtie2/: Directory containing BOWTIE2 indices.

    • chromap/: Directory containing Chromap indices.

    • star/: Directory containing STAR indices.

    • If the --save_reference parameter is provided then the alignment indices generated by the pipeline will be saved in this directory. This can be quite a time-consuming process so it permits their reuse for future runs of the pipeline or for other purposes.

Reference genome-specific files can be useful to keep for the downstream processing of the results.

Pipeline information

Output files
  • pipeline_info/
    • Reports generated by Nextflow: execution_report.html, execution_timeline.html, execution_trace.txt and
    • Reports generated by the pipeline: pipeline_report.html, pipeline_report.txt and software_versions.yml. The pipeline_report* files will only be present if the --email / --email_on_fail parameter’s are used when running the pipeline.
    • Reformatted samplesheet files used as input to the pipeline: samplesheet.valid.csv.

Nextflow provides excellent functionality for generating various reports relevant to the running and execution of the pipeline. This will allow you to troubleshoot errors with the running of the pipeline, and also provide you with other information such as launch commands, run times and resource usage.