pkgdown/header.html

Skip to contents

Overview

Divergent loci are genomic regions with divergent transcription: plus and minus strand transcription initiation events that originate close together and point away from each other. They are a hallmark of active enhancers and promoters.

PRIME provides two methods for calling divergent loci from CTSS data:

  1. Summit-based (PRIME::divergentLociTCsSummit()) — identifies summit positions of tag clusters on each strand and pairs them into divergent loci. This is the recommended native PRIME approach.

  2. FANTOM5-style / TC-based (PRIME::divergentLoci()) — first calls unidirectional tag clusters with CAGEfightR and then pairs them into divergent loci. This mirrors the approach used in FANTOM5.

Setup

Assumes a CTSS RangedSummarizedExperiment object ctss is available; see vignette("03-ctss-processing") for how to build one.

Method 1: Summit-based divergent loci (PRIME native)

This approach directly uses CTSS counts to identify divergent loci via summit detection.

DLs <- PRIME::divergentLociTCsSummit(
        ctss         = ctss,
        callingAssay = "counts.noSingletons"
    )

For large datasets it is efficient to process per chromosome:

CTSSs_by_chr <- split(ctss, GenomicRanges::seqnames(ctss))

DLs <- lapply(names(CTSSs_by_chr), function(chr) {
    PRIME::divergentLociTCsSummit(
        ctss         = CTSSs_by_chr[[chr]],
        callingAssay = "counts.noSingletons"
    )
})

# Combine results across chromosomes
DLs <- do.call(c, DLs)

Method 2: FANTOM5-style divergent loci

This approach first calls unidirectional tag clusters and then pairs them:

# Pool CTSSs and call unidirectional tag clusters
ctss_pooled <- CAGEfightR::calcPooled(ctss, inputAssay = "counts.noSingletons")
ctss_pooled <- subset(ctss_pooled, score > 0)
TCs <- CAGEfightR::clusterUnidirectionally(ctss_pooled)

# Call divergent loci
DLs_fantom <- PRIME::divergentLoci(
    object = TCs,
    ctss   = ctss_pooled
)

Quantifying divergent loci

Once divergent loci have been called, expression can be quantified across all samples using:

DLs_quant <- PRIME::quantifyDivergentLoci(
    object       = DLs,
    ctss         = ctss,
    inputAssay   = "counts",
    outputColumn = "score"
)

See also

  • vignette("03-ctss-processing") — producing the CTSS object
  • vignette("06-noise-estimation") — estimating divergent background noise
  • vignette("07-prediction") — predicting enhancers and promoters with PRIMEmodel
  • Paper analysis code — Divergent Loci