Results of CAGEr analysis

Raw reads

These QC plots show the status before normalization or filtering.

Tag region annotation

Annotation of raw tags per samples. Note: tags are not filtered or normalized yet. It is expected to see more intergenic reads here than after filtering and clustering which removes much of the noise.

## Registered S3 methods overwritten by 'GenomeInfoDb':
##   method                from   
##   as.data.frame.Seqinfo Seqinfo
##   merge.Seqinfo         Seqinfo
##   summary.Seqinfo       Seqinfo
##   update.Seqinfo        Seqinfo

Correlation of samples at raw tag count level

Correlation of samples by the raw tag counts above the user defined threshold (corrplot_tagCountThreshold). Note: these are not filtered or normalized yet. The plot is for diagnostic purposes, such as highlighting batch effects. Note #2: the main correlation is shown on the top-right ot bottom-left diagonal due to the behaviour of the underlying gplots::heatmap.2 function. The corrplot_tagCountThreshold is shared across correlation plots. For a higher resolution plot, visit the pdf file saved in the results/cager/plots folder.

## [1] "The current corrplot_tagCountThreshold value is: 1"

Normalization

Next, the tag counts are normalized.

Power-law distributions

Number of CAGE tags versus number of TSS supported by at least as many tags should follow the power-law distribution. The power-law distribution is fitted in the range between the two dotted lines. The positions of the dotted lines are modifiable by user with norm_range_min and norm_range_max parameters. The total number of tags (t_norm) defaults to 1000000 which corresponds to TPM, but in cases of very deep sequencing this should be adjusted.

## [1] "The current norm_range_min value is: 5"
## [1] "The current norm_range_max value is: 10000"
## [1] "The current normalization method (norm_method) is: powerLaw"
## [1] "The current t_norm value is: 1000000"
## [1] "The user provided alpha value is: null. If this value if None, the calculated value shown on the plot is used for normalization. Note: this value cannot be less than 1.05, if the user provides a lower value the code automatically assumes 1.05."

Correlations of samples at normalized tag count level

Correlation of samples by the normalized tag counts above the user defined threshold (corrplot_tagCountThreshold). Normalization should have removed batch effects to some extent. Note: the main correlation is shown on the top-right ot bottom-left diagonal due to the behaviour of the underlying gplots::heatmap.2 function. The corrplot_tagCountThreshold is shared across correlation plots. For a higher resolution plot, visit the pdf file saved in the results/cager/plots folder.

## [1] "The current corrplot_tagCountThreshold value is: 1"

PCA plot of normalized tag counts of samples

PCA was run on all samples, using the top 500 (if less than 500 is available, all are used) most variable normalized tag counts. The variance explained by each PC is shown in the brackets.

Tag clustering

After normalization, the tag clusters are identified with the following parameters. Before clustering, low expressed CTSS are filtered by the user defined thresholds: sample_num_thr and ctss_thr. By default, these values are 1 sample and 1 TPM meaning that the high-fidelity TSSs are supported by at least 1 normalized tag counts in any of the samples.

The clustering is done using the distclu method, which is a distance based method. The max distance is a user defined parameter called distclu_maxDist for this approach.

With the keepSingletonsAbove parameter, the user can decide the tpm threshold above which even a single CTSS is kept.

The iq_low and iq_high parameters are used to define the lower and upper quantile boundaries of the interquartile range within which the majority of the signal lies.

## [1] "The current sample_num_thr value is: 2"
## [1] "The current ctss_thr value is: 3"
## [1] "The current distclu_maxDist value is: 20"
## [1] "The current keepSingletonsAbove value is: 1"
## [1] "The current iq_low value is: 0.1"
## [1] "The current iq_high value is: 0.9"

Tag cluster interquartile width

Interquartile width distribution in each sample, for tag clusters passing the iqw_tpm_threshold set by the user. A sequencing library of sufficient depth shows two types of tag clusters: narrow and wide. In low depth cases, the wider type might be lacking which flags low quality data.

## [1] "The current iqw_tpm_threshold value is: 3"

Number of tag clusters per sample

This plot shows the number of tag clusters identified in each sample.

Tag cluster annotation

ChIPseeker annotation of genomic regions of tag clusters. Note: the region labels are extracted from a TxDb generated from GTF file provided by the user. You may find this file in results/txdb folder. Two parameters should be defined for the annotation: tssregion_up and tssregion_down. These correspond to the upstream and downstream distance to consider into TSS region for ChIPseeker annotation. tssregion_up should be negative, tssregion_down should be positive. Note: these parameters are shared with enhancer annotation.

## [1] "The current tssregion_up value is: -3000"
## [1] "The current tssregion_down value is: 3000"

Dinucleotide frequencies in tagclusters weighted by expression (tpm)

Expression-level-aware dinucleotide frequencies at dominant TSSs of tag clusters. Dinulceotides are sorted by frequencies at the first sample in alphabetical order.

TSS region logos

Not inlcuded in this report, but saved separately in the results/cager/plots folder are the TSS region logos of the tag clusters of each sample that are annotated as promoters. The number of bases to inlcude upstream of the TSS is provided by the user with the tsslogo_upstream parameter.

## [1] "The current tsslogo_upstream value is: 35"

Consensus clustering

To compare the activity of tag clusters between samples, consensus clusters are defined. Consensus clusters are clusters aggregated from tag clusters of different samples which are in close vicinity and pass a tpm threshold. The maximum distance between the interquartile ranges of tag clusters and TPM thresholds can be set by the user with the consensus_dist and consensus_thr parameters.

## [1] "The current consensus_dist value is: 20"
## [1] "The current consensus_thr value is: 2"

Number of non-zero consensus clusters

This plot shows the number of non zero consensus clusters per sample, as well as the total number of consensus clusters (union).

Consensus cluster PCA

PCA calculated on the TPM values of the top 500 most variable consensus clusters across samples. The variance explained by each PC is shown in the brackets.

Enhancer calling

The sites with balanced bidirectional transcription are identified as enhancer regions. The balance threshold is a user defined parameter (cfBalanceThreshold). The normalized TPM values of the CTSS are used as input to enhancer calling. The threshold for TPM values is set by the user with the unexpressed parameter. Enhancers are called by pooling all CTSS values, but only those enhancers are kept that has support in more than a user defined number of samples (minSamples). To ensure that promoter regions does not get confused with enhancer regions, any enhancer region overlapping consensus clusters is removed.

## [1] "The current cfBalanceThreshold value is: 0.65"
## [1] "The current unexpressed value is: 0"
## [1] "The current minSamples value is: 0"

Number of active enhancers per sample

This plot shows the number of active enhancers per sample, as well as the total number of identified enhancers (union).

Annotation of enhancers

Two parameters should be defined for the annotation: tssregion_up and tssregion_down. These correspond to the upstream and downstream distance to consider into TSS region for ChIPseeker annotation. tssregion_up should be negative, tssregion_down should be positive. Note: these parameters are shared with tag cluster annotation.

## [1] "The current tssregion_up value is: -3000"
## [1] "The current tssregion_down value is: 3000"

Enhancer PCA

PCA calculated on the TPM values of the top 500 (if less than 500 is available, all are used) most variable enhancers across samples. The variance explained by each PC is shown in the brackets.

Session info

## R version 4.5.1 (2025-06-13)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.3 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: Etc/UTC
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] rmarkdown_2.30
## 
## loaded via a namespace (and not attached):
##   [1] RColorBrewer_1.1-3          rstudioapi_0.17.1          
##   [3] jsonlite_2.0.0              MultiAssayExperiment_1.34.0
##   [5] magrittr_2.0.4              GenomicFeatures_1.61.7     
##   [7] farver_2.1.2                BiocIO_1.19.0              
##   [9] vctrs_0.6.5                 memoise_2.0.1              
##  [11] Rsamtools_2.25.3            RCurl_1.98-1.17            
##  [13] base64enc_0.1-3             htmltools_0.5.8.1          
##  [15] S4Arrays_1.9.1              BiocBaseUtils_1.10.0       
##  [17] progress_1.2.3              curl_7.0.0                 
##  [19] SparseArray_1.9.1           Formula_1.2-5              
##  [21] sass_0.4.10                 KernSmooth_2.23-26         
##  [23] bslib_0.9.0                 htmlwidgets_1.6.4          
##  [25] plyr_1.8.9                  Gviz_1.52.0                
##  [27] httr2_1.2.1                 cachem_1.1.0               
##  [29] GenomicAlignments_1.45.4    lifecycle_1.0.4            
##  [31] pkgconfig_2.0.3             Matrix_1.7-4               
##  [33] R6_2.6.1                    fastmap_1.2.0              
##  [35] GenomeInfoDbData_1.2.14     MatrixGenerics_1.21.0      
##  [37] digest_0.6.37               colorspace_2.1-2           
##  [39] AnnotationDbi_1.71.2        S4Vectors_0.47.5           
##  [41] Hmisc_5.2-4                 GenomicRanges_1.61.6       
##  [43] RSQLite_2.4.3               vegan_2.7-2                
##  [45] labeling_0.4.3              filelock_1.0.3             
##  [47] mgcv_1.9-3                  httr_1.4.7                 
##  [49] abind_1.4-8                 compiler_4.5.1             
##  [51] withr_3.0.2                 bit64_4.6.0-1              
##  [53] htmlTable_2.4.3             S7_0.2.0                   
##  [55] backports_1.5.0             CAGEfightR_1.28.0          
##  [57] BiocParallel_1.43.4         DBI_1.2.3                  
##  [59] gplots_3.2.0                biomaRt_2.64.0             
##  [61] MASS_7.3-65                 rappdirs_0.3.3             
##  [63] DelayedArray_0.35.3         rjson_0.2.23               
##  [65] caTools_1.18.3              permute_0.9-8              
##  [67] gtools_3.9.5                tools_4.5.1                
##  [69] foreign_0.8-90              nnet_7.3-20                
##  [71] glue_1.8.0                  restfulr_0.0.16            
##  [73] nlme_3.1-168                stringdist_0.9.15          
##  [75] grid_4.5.1                  checkmate_2.3.3            
##  [77] reshape2_1.4.4              cluster_2.1.8.1            
##  [79] generics_0.1.4              operator.tools_1.6.3       
##  [81] gtable_0.3.6                BSgenome_1.76.0            
##  [83] formula.tools_1.7.1         ensembldb_2.32.0           
##  [85] data.table_1.17.8           hms_1.1.4                  
##  [87] xml2_1.4.0                  XVector_0.49.1             
##  [89] BiocGenerics_0.55.4         ggrepel_0.9.6              
##  [91] pillar_1.11.1               stringr_1.5.2              
##  [93] CAGEr_2.15.2                splines_4.5.1              
##  [95] dplyr_1.1.4                 BiocFileCache_2.16.2       
##  [97] lattice_0.22-7              rtracklayer_1.69.1         
##  [99] bit_4.6.0                   deldir_2.0-4               
## [101] biovizBase_1.56.0           tidyselect_1.2.1           
## [103] Biostrings_2.77.2           knitr_1.50                 
## [105] gridExtra_2.3               IRanges_2.43.6             
## [107] Seqinfo_0.99.3              ProtGenerics_1.40.0        
## [109] SummarizedExperiment_1.39.2 stats4_4.5.1               
## [111] xfun_0.53                   Biobase_2.69.1             
## [113] matrixStats_1.5.0           stringi_1.8.7              
## [115] VGAM_1.1-13                 UCSC.utils_1.4.0           
## [117] lazyeval_0.2.2              yaml_2.3.10                
## [119] som_0.3-5.2                 evaluate_1.0.5             
## [121] codetools_0.2-20            interp_1.1-6               
## [123] tibble_3.3.0                cli_3.6.5                  
## [125] rpart_4.1.24                jquerylib_0.1.4            
## [127] dichromat_2.0-0.1           Rcpp_1.1.0                 
## [129] GenomeInfoDb_1.44.3         dbplyr_2.5.1               
## [131] png_0.1-8                   XML_3.99-0.19              
## [133] parallel_4.5.1              ggplot2_4.0.0              
## [135] assertthat_0.2.1            blob_1.2.4                 
## [137] prettyunits_1.2.0           latticeExtra_0.6-31        
## [139] jpeg_0.1-11                 AnnotationFilter_1.32.0    
## [141] bitops_1.0-9                viridisLite_0.4.2          
## [143] VariantAnnotation_1.54.1    scales_1.4.0               
## [145] crayon_1.5.3                rlang_1.1.6                
## [147] KEGGREST_1.49.2