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:
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.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