MotifPeeker
Benchmarking Epigenomic Profiling Methods Using Motif Enrichment

Bioc history License: GPL (>= 3)
R build status

Authors: Hiranyamaya (Hiru) Dash, Thomas Roberts, Maria Weinert, Nathan Skene
Updated: Sep-08-2026

Introduction

MotifPeeker is used to compare and analyse datasets from epigenomic profiling methods with motif enrichment as the key benchmark. The package outputs an HTML report consisting of three sections:

  1. General Metrics: Provides an overview of metrics related to dataset peaks, including FRiP scores, peak widths, and motif-to-summit distances.

  2. Known Motif Enrichment Analysis: Presents statistics on the frequency of enriched user-supplied motifs in the datasets and compares them between the common and unique peaks from comparison and reference datasets.

  3. Discovered Motif Enrichment Analysis: Details the statistics of motifs discovered in common and unique peaks from comparison and reference datasets. Examines motif similarities and identifies the closest known motifs in the JASPAR or the provided database.

Installation

MotifPeeker uses memes which relies on a local install of the MEME suite, which can be installed as follows:

MEME_VERSION=5.5.5  # or the latest version

wget https://meme-suite.org/meme/meme-software/$MEME_VERSION/meme-$MEME_VERSION.tar.gz
tar zxf meme-$MEME_VERSION.tar.gz
cd meme-$MEME_VERSION
./configure --prefix=$HOME/meme --with-url=http://meme-suite.org/ \
--enable-build-libxml2 --enable-build-libxslt
make
make install

# Add to PATH
echo 'export PATH=$HOME/meme/bin:$HOME/meme/libexec/meme-$MEME_VERSION:$PATH' >> ~/.bashrc
echo 'export MEME_BIN=$HOME/meme/bin' >> ~/.bashrc
source ~/.bashrc

NOTE: It is important that Perl dependencies associated with MEME suite are also installed, particularly XML::Parser, which can be installed using the following command in the terminal:

cpan install XML::Parser

For more information, refer to the Perl dependency section of the MEME suite.

Once the MEME suite and its associated Perl dependencies are installed, the development version of MotifPeeker can be installed using the following code:

# Install latest version of MotifPeeker
BiocManager::install("MotifPeeker", version = "devel", dependencies = TRUE)

# Load the package
library(MotifPeeker)

Alternatively, you can use the Docker/Singularity container to run the package out-of-the-box.

Documentation

MotifPeeker Website

Get Started

Docker/Singularity Container

Example Reports

Troubleshooting

Usage

Load the package and example datasets.

library(MotifPeeker)
data("CTCF_ChIP_peaks", package = "MotifPeeker")
data("CTCF_TIP_peaks", package = "MotifPeeker")
data("motif_MA1102.2", package = "MotifPeeker")
data("motif_MA1930.2", package = "MotifPeeker")

Prepare input files.

peak_files <- list(CTCF_ChIP_peaks, CTCF_TIP_peaks)
alignment_files <- list(
    system.file("extdata", "CTCF_ChIP_alignment.bam", package = "MotifPeeker"),
    system.file("extdata", "CTCF_TIP_alignment.bam", package = "MotifPeeker")
)
motif_files <- list(motif_MA1102.2, motif_MA1930.2)

Run MotifPeeker():

MotifPeeker(
    peak_files = peak_files,
    reference_index = 2,  # Set TIP-seq experiment as reference
    alignment_files = alignment_files,
    exp_labels = c("ChIP", "TIP"),
    exp_type = c("chipseq", "tipseq"),
    genome_build = "hg38",
    motif_files = motif_files,
    cell_counts = NULL,  # No cell-count information
    motif_discovery = TRUE,
    motif_discovery_count = 3,
    motif_db = NULL,
    download_buttons = TRUE,
    out_dir = tempdir(),
    BPPARAM = BiocParallel::MulticoreParam(2), # Use 2 CPU cores
    debug = FALSE,
    quiet = FALSE,
    verbose = TRUE
)

Required Inputs

These input parameters must be provided:

Details

Optional Inputs

These input parameters optional, but recommended to add more analyses, or enhance them:

Details

Other Options

For more information on additional parameters, please refer to the documentation for MotifPeeker().

Runtime Guidance

For 4 datasets, the runtime is approximately 3 minutes with motif_discovery disabled. However, motif discovery can take hours to complete.

To make computation faster, we highly recommend tuning the following arguments:

Details

Outputs

MotifPeeker generates its output in a new folder within he out_dir directory. The folder is named MotifPeeker_YYYYMMDD_HHMMSS and contains the following files:

Datasets

MotifPeeker comes with several datasets bundled:

Details

Please note that the peaks and alignments included are a very small subset (chr10:65,654,529-74,841,155) of the actual data. It only serves as an example to demonstrate the package and run tests to maintain the integrity of the package.

Citation

If you use MotifPeeker, please cite:

Dash H, Roberts T, Weinert M, Skene N (2026). MotifPeeker: Benchmarking epigenomic profiling methods using motifs. Bioinformatics Advances, vbag023. doi:10.1093/bioadv/vbag023

Licensing Restrictions

MotifPeeker incorporates the MEME Suite, which is available free of charge for educational, research, and non-profit purposes. Users intending to use MotifPeeker for commercial purposes are required to purchase a license for the MEME Suite.

For more details, please refer to the MEME Suite Copyright Page.

Contact

Neurogenomics Lab

UK Dementia Research Institute
Department of Brain Sciences
Faculty of Medicine
Imperial College London
GitHub


Session Info

utils::sessionInfo()
## R version 4.6.0 (2026-04-24)
## Platform: aarch64-apple-darwin23
## Running under: macOS Tahoe 26.6
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1
## 
## locale:
## [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
## 
## time zone: Europe/London
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] gtable_0.3.6        jsonlite_2.0.0      renv_1.2.2         
##  [4] dplyr_1.2.1         compiler_4.6.0      BiocManager_1.30.27
##  [7] tidyselect_1.2.1    rvcheck_0.2.1       scales_1.4.0       
## [10] yaml_2.3.12         fastmap_1.2.0       here_1.0.2         
## [13] ggplot2_4.0.3       R6_2.6.1            generics_0.1.4     
## [16] knitr_1.51          yulab.utils_0.2.4   tibble_3.3.1       
## [19] desc_1.4.3          dlstats_0.1.7       rprojroot_2.1.1    
## [22] pillar_1.11.1       RColorBrewer_1.1-3  rlang_1.2.0        
## [25] badger_0.2.5        xfun_0.57           fs_2.1.0           
## [28] S7_0.2.2            otel_0.2.0          cli_3.6.6          
## [31] magrittr_2.0.5      rworkflows_1.0.11   digest_0.6.39      
## [34] grid_4.6.0          rappdirs_0.3.4      lifecycle_1.0.5    
## [37] vctrs_0.7.3         data.table_1.18.2.1 evaluate_1.0.5     
## [40] glue_1.8.1          farver_2.1.2        rmarkdown_2.31     
## [43] tools_4.6.0         pkgconfig_2.0.3     htmltools_0.5.9