# terapadog: Translational Efficiency Regulation Analysis & Pathway Analysis with Down-weighting of Overlapping Genes

Per Nonna Ezia, arrivederci e grazie di tutti i dolci (specialmente il rotolone).

# Introduction

Welcome to the official (and only) documentation about TERAPADOG (Translational Efficiency Regulation Analysis & Pathway Analysis with Down-weighting of Overlapping Genes).

### What is TERAPADOG?

To put is short, TERAPADOG is an implementation of the classic PADOG aglorithm (Pathway Analysis with Down-weighting of Overlapping Genes), but on top of the results of a Differential Translational Analysis (executed with DeltaTE). Now that the scientific jargon is out, let’s delve a bit more into the topic.

Works on human only!

### Differential Translation-what?

In the last decade, experimental techniques such as Polysome profiling (Polysome-Seq) and Ribosome profiling (Ribo-Seq) have widely shown how gene expression is not regulated only at the transcriptional level (through the increase/decrease of the pool of mRNA species in the cell), but also at the translational level (through the active increase/decrease of the efficiency these mRNAs are translated to protein).

As a result of this, many packages have been developed to study gene regulation from this additional perspective, trying to characterize the changes in the Translational Efficiency (TE) each mRNA could undergo between conditions, an analysis which can be commonly referred to as Differential Translation Analysis (DTA).

The results of a DTA are usually a list of genes, each categorized into a different Regulatory Mode depending on the changes in mRNA levels and TE between the two conditions. Such an output, although informative per se, is also be quite complex to interpret when it comes to link together the different genes to infer the overarching metabolic shifts happening in the experiment.

### The missing link

As stated above, a list of hundreds (if not thousands) of genes can be difficult to interpret from a systemic perspective. A possible strategy to ease this step is to map this information on biological pathways, so to obtain an overarching perspective showing how the different genes undergoing TE regulation are linked together.

It is from this idea that terapadog was conceived: to be able to perform a gene set analysis (applying the same logic as used in the PADOG package, see references for additional info) on the sets highlighted as being actively under Translational Efficiency changes.

### The bigger picture: integration within Reactome and its Gene Set Analysis

While terapadog can be run as a standalone tool (as shown in this vignette), it was originally designed to serve as an additional analysis method available within the Reactome Pathway Analysis framework Reactome GSA.

As a standalone tool, terapadog enables users to investigate genes undergoing changes in translational efficiency (TE) and the pathways they are involved in. However, it does not provide the high-level exploration and visualization features offered by Reactome.

We kindly encourage you to try terapadog within the Reactome platform (see the link above) to fully benefit from its user-friendly interface and powerful visualisation tools.

### Suggested Reading

For more information regarding PADOG or DeltaTE and Regulatory Modes, please refer to the paper mentioned in the references section of this vignette.

About Differential Translation Analysis:

Chothani S, Adami E, Ouyang JF, Viswanathan S, Hubner N, Cook SA, Schafer S, Rackham OJL. deltaTE: Detection of Translationally Regulated Genes by Integrative Analysis of Ribo-seq and RNA-seq Data. Curr Protoc Mol Biol. (2019).

[https://pubmed.ncbi.nlm.nih.gov/31763789/]

About PADOG:

Tarca AL, Draghici S, Bhatti G. et al. Down-weighting overlapping genes improves gene set analysis. BMC Bioinformatics (2012).

[https://doi.org/10.1186/1471-2105-13-136]

About the ReactomeGSA:

Griss J, Viteri G, Sidiropoulos K, Nguyen V, Fabregat A, Hermjakob H, ReactomeGSA - Efficient Multi-Omics Comparative Pathway Analysis, Molecular & Cellular Proteomics (2020).

[https://doi.org/10.1074/mcp.TIR120.002155]

# Installation & Loading

To install the terapadog package, execute the following code:

    if (!require("BiocManager", quietly = TRUE))
        install.packages("BiocManager")

    BiocManager::install("terapadog")

Also remember to load the library before calling its functions.

    # Load the library
    library(terapadog)

# Analysis Walktrough

This section will guide you thorough the various steps of the analysis, using some testing data. The data used at this stage is the same used by Chotani S. et al. in their paper on DeltaTE and has been retrieved from their github repository. Any manipulation on the data has been detailed in the extdata_info.md file (see scripts folder of the package).

[https://github.com/SGDDNB/translational_regulation.git]

## Understanding the results

This analysis walk-trough will give two outputs:

- the terapadog() function will analyse the pathway enrichment for genes that result to be undergoing translational regulation. This is the main output of the function, which allows to understand if a particular pathway is actively undergoing translational regulation.

- the get_FCs() function (and plotDTA()) will give a breakdown on how each single gene is being regulated (as per a classic DTA analysis). This is a more atomic perspective on the data, optional to end of a GSEA, but which has been included to further contextualize the results obtained.

Intuitively, no output is better than the other. These are just two different ways to inspect the data and draw insights. Some users might find more intuitive to just have a high-level overview of the pathways undergoing translational regulation (terapadog() output), others might want to inspect the results from a single-gene perspective (get_FCs()). Some might find tables intimidating and might want to result to graphical representations (plotting the results of the latter with plotDTA().

One of the aims of this package is to empower users to analyse the data, but it is also fundamental to remember that it has been conceived as an integration to the ReactomeGSA backend, so to leverage on their advanced visualisations (not to be an alternative to it!)

## Input data: Formatting and Extension

First thing first, terapadog requires raw gene counts as input data. This means your input file should look like a table where row names are gene IDs and column names identify different samples (more info on that below). The counts should be raw inegers, no normalisation of preparatory step required (those steps are handled by the functions within the package).

Secodnly, you need to make sure your input data is in the right format.

In order to execute the analysis, it is mandatory input files are correctly formatted, so follow the guidelines detailed below.

1. Samples Naming

In a DTA, you will have RNA-Seq counts and Ribo-Seq counts coming from the same sample. That is to say, for “Sample A” you will have a set of gene counts obtained from RNA-Seq and a set obtained from the Ribo-Seq protocol.

It is mandatory for the sample name to be the same in both RNA-Seq and RIBO-Seq count files.

Example of RNA-Seq file:

GeneId | Sample_A | Sample_B | Sample_C | Sample_D
--- | --- | --- | --- | ---
ENSG0001 | 657 | 598 | 645 | 603
ENSG0002 | 342 | 389 | 350 | 329

    ##              s2424 s2724 s3424 s4124 s24 s27 s34 s41
    ## LOC102725121     0     0     0     0   0   0   0   0
    ## LOC105378947     0     1     0     0   0   0   0   0
    ## LOC107984841     0     1     0     3   0   1   1   0
    ## LOC107985728     5     2     2     0   0   0   0   0
    ## LOC107985729     0     0     1     0   0   0   0   0
    ## LOC105378949     6     7     4     4   7  14   7  13

Example of Ribo-Seq file:

GeneId | Sample_A | Sample_B | Sample_C | Sample_D
--- | --- | --- | --- | ---
ENSG0001 | 100 | 102 | 120 | 115
ENSG0002 | 700 | 658 | 712 | 707

    ##              s2424 s2724 s3424 s4124 s24 s27 s34 s41
    ## LOC102725121     0     0     0     0   0   0   0   0
    ## LOC105378947     0     0     0     0   0   0   0   0
    ## LOC107984841     0     0     0     0   0   0   0   0
    ## LOC107985728     0     0     0     1   0   1   0   0
    ## LOC107985729     0     0     0     0   0   0   0   0
    ## LOC105378949     2     2     0     0   0   2   0   0

Yes, they look almost identical in the formatting, with only the count values as a striking difference. It is intended, don’t worry.

2. Sample Info file This file is basically a table where each Sample is linked to the experimental condition you are assessing (for instance, control and disease). It has only two columns:

- SampleName, the name of the sample.
- Condition, the experimental condition for said sample.

It is mandatory the columns of this file are named with these specific names and capitalization.

Example of Sample info file:

SampleName | Condition
--- | ---
Sample_A | ctrl
Sample_B | disease
Sample_C | ctrl
Sample_D | disease

    ##   SampleName Condition
    ## 1      s2424         2
    ## 2      s2724         2
    ## 3      s3424         2
    ## 4      s4124         2
    ## 5        s24         1
    ## 6        s27         1
    ## 7        s34         1
    ## 8        s41         1

If the SampleName was different between RNA-Seq counts and Ribo-Seq counts, you would have to compile 16 rows instead of just 8 in the sample info file. This is one of the (user-wise) reasons why the names must match.

About paired experimental designs:

Terapadog also supports paired experimental designs, when it’s important to link samples together in the analysis (for instance, when observing the response to treatment in different patients. Each patient will have a pair of observations). To do so, you need to include the pairing information in your metadata, within the “Block” column.

See example below:

Example of Sample info file with Block column:

SampleName | Condition | Block
--- | --- | ---
Sample_A | before_treatment | Patient_1
Sample_B | after_treatment | Patient_1
Sample_C | before_treatment | Patient_2
Sample_D | after_treatment | Patient_2

3. File Format Your count file must be in either a comma-separated values (.csv) or a tab-separated values (.tsv). Other extensions are currently not supported by terapadog.

## prepareTerapadogData()

Now that your input files are ready to go, we can start the terapadog workflow. First thing first, you will have to call the function preparedTerapadogData to load the files in your R environment and start the preprocessing operations.

preparedTerapadogData requires the following argument as string inputs:

- The path to the RNA-Seq counts file.

- The path to the Ribo-Seq counts file.

- The path to the sample info file.

- The name of the condition you want to use as baseline in the comparison.

  For instance, if you have “control” and “disease” as conditions, “control” is the baseline.

- The name of the condition you want to use as target in the comparison.

  For instance, if you have “control” and “disease” as conditions, “disease” is the target.

For tutorial purposes, this package comes with the three files you will need to carry out a full terapadog analsysis.

- An RNA-Seq count file (rna_counts.tsv), which contains the mRNA-Seq derived counts for each gene in exam.
- A Ribo-Seq count file (ribo_counts.tsv), which contains the Ribo-Seq derived counts for each gene in exam.
- A sample info file (sample_info.tsv), which links each sample to a condition (in this case 1 or 2).

    # Read the paths in your R environments
    path_rna_counts <- system.file("extdata", "rna_counts.tsv",
                                   package = "terapadog")
    path_ribo_counts <- system.file("extdata", "ribo_counts.tsv",
                                    package = "terapadog")
    sample_info_path <- system.file("extdata", "sample_info.tsv",
                                    package = "terapadog")

    # Call prepareTerapadogData
    prep_data <- terapadog::prepareTerapadogData(path_rna_counts, path_ribo_counts,
                                      sample_info_path,"1", "2")

The result of this function will be a list with two elements:

- A matrix containing the counts from the RNA-Seq and Ribo-Seq files, formatted.

- A dataframe with all the info relative to the experimental design, which have been derived from sample_info, the two count files and the specified comparison.

    # Extract the matrix
    expression.data <- prep_data$expression.data
    print(head(expression.data))

    ##              s2424_RNA s2724_RNA s3424_RNA s4124_RNA s24_RNA s27_RNA s34_RNA
    ## LOC102725121         0         0         0         0       0       0       0
    ## LOC105378947         0         1         0         0       0       0       0
    ## LOC107984841         0         1         0         3       0       1       1
    ## LOC107985728         5         2         2         0       0       0       0
    ## LOC107985729         0         0         1         0       0       0       0
    ## LOC105378949         6         7         4         4       7      14       7
    ##              s41_RNA s2424_RIBO s2724_RIBO s3424_RIBO s4124_RIBO s24_RIBO
    ## LOC102725121       0          0          0          0          0        0
    ## LOC105378947       0          0          0          0          0        0
    ## LOC107984841       0          0          0          0          0        0
    ## LOC107985728       0          0          0          0          1        0
    ## LOC107985729       0          0          0          0          0        0
    ## LOC105378949      13          2          2          0          0        0
    ##              s27_RIBO s34_RIBO s41_RIBO
    ## LOC102725121        0        0        0
    ## LOC105378947        0        0        0
    ## LOC107984841        0        0        0
    ## LOC107985728        1        0        0
    ## LOC107985729        0        0        0
    ## LOC105378949        2        0        0

    # Extract the experimental design dataframe
    exp_de <- prep_data$exp_de
    print(exp_de)

    ##      SampleID SampleName SeqType Condition Group
    ## 1   s2424_RNA      s2424     RNA         2     d
    ## 2   s2724_RNA      s2724     RNA         2     d
    ## 3   s3424_RNA      s3424     RNA         2     d
    ## 4   s4124_RNA      s4124     RNA         2     d
    ## 5     s24_RNA        s24     RNA         1     c
    ## 6     s27_RNA        s27     RNA         1     c
    ## 7     s34_RNA        s34     RNA         1     c
    ## 8     s41_RNA        s41     RNA         1     c
    ## 9  s2424_RIBO      s2424    RIBO         2     d
    ## 10 s2724_RIBO      s2724    RIBO         2     d
    ## 11 s3424_RIBO      s3424    RIBO         2     d
    ## 12 s4124_RIBO      s4124    RIBO         2     d
    ## 13   s24_RIBO        s24    RIBO         1     c
    ## 14   s27_RIBO        s27    RIBO         1     c
    ## 15   s34_RIBO        s34    RIBO         1     c
    ## 16   s41_RIBO        s41    RIBO         1     c

## id_converter()

The function terapadog() requires the input ID to be given in the form of “entrezgene_id”. This function allows for the conversion from “ensembl_gene_id” or “hgnc_symbol”.

When converting from one system to another, a common issue is having multiple mappings: that is to say, several IDs in the original format map to the same entrezgene_id.

In the context of this function, multiple mappings are aggregated (by sum) and a small report .txt file is created by the user-specified path, allowing the user to see which duplicate IDs were aggregated once this step is done. If no path is provided, the report will be generated in a temporary directory ( use tempdir() to see which one.

id_converter() requires the following argument as inputs:

- A matrix with the gene count values and whose rownames are the gene Ids.

- A string representing the type of ID given as input. Either “hgnc_symbol” or “ensembl_gene_id”.

- A boolean, to specify whether to save the report on duplicates or not. FALSE by default.

- The output path for the report (not mandatory)

    # Example of function calling
    expression.data <- id_converter(expression.data, "ensembl_gene_id")

The result of this function will be:

- A matrix with the rownames now converted to “entrezgene_id”.

- A “conversion_report.txt” file, which details which duplicate IDs were aggregated.

## terapadog()

This is the main function that names the full package. It perform the Gene Set Anaylsis on the genes that exhibit a significant change in Translation Efficiency (TE) between two conditions. It has several inputs, of which only two (esetm and exp_de) are strictly required to perform the analysis.

- esetm: A matrix containing the RNA-Seq Counts and Ribo-Seq counts, with the gene IDs as entrezgene_ids (argument esetm). Please refer to the sections above (prepareTerapadogData() and id_converter()) for further info.

- exp_de: A dataframe containing the information regarding the samples and the experimental design. Please refer to the sections above (prepareTerapadogData()) for further info.

- paired: A logical value. Allows for experimental designs where samples are paired (for instance, a study on the response of patients to a drug). This argument is optional. Remember, if you set this to TRUE, you must have tha pairing info specified as the “Block” column of your metadata (see section 3.1 of the vignette)

- gslist: A list of named character vectors. Each vector is named after a KEGG pathway ID and each element within the vector is an ENSEMBL gene ID for a gene part of said pathway. This argument is optional.

- organism: A string of three letters, giving the name of the organism in exam as supported by the “KEGGREST” package. Default is “hsa”. This argument is optional.

- gs.names: A character vector with the names of the gene sets. Must have the same length as gslist. This argument is optional.

- NI: Number of iterations allowed to determine the gene set score significance and p-value. Default is 1000. This argument is optional.

- Nmin: The minimum size of gene sets to be included in the analysis. Default is 3. This argument is optional.

- verbose: A logical value. Displays the number of iterations done. Default is TRUE. This argument is optional.

A footnote for the scared user: The function requires many optional parameters because of its integration within the ReactomeGSA, where flexibility on said options are required. In the context of an independent user, only the first two (or three if the samples are paired) should be enough to run the analysis!

Since running terapadog() can be computationally intensive and time-consuming, this vignette will provide a non-evaluate example of calling the function (though the correctness of the full function is tested within the test-terapadog.R unit tests) An example of the results (“terapadog_res_example.csv”) is still available within the package and is partially loaded below for inspection.

    # Calling terapadog.
    results <- terapadog(esetm = expression.data, exp_de = exp_de)

The final result of the analysis is a data frame, with the following columns:

- Name. The name of the gene set (pathway), as retrieved from KEGG.
- ID. The Id of said pathway.
- Size. The number of genes part of the enriched gene set/pathway.
- meanAbsT0. This is the observed mean of the absolute statistic (in this case the padj) for all genes within a gene set, calculated without applying the PADOG weighting scheme. That is to say, no downweight has been applied to genes appearing in multiple patjhways.
- padog0. The observed PADOG statistic for the gene set, it incorporates the weight for those genes appearing in multiple pathways. Higher values indicate the gene set/pathway to be more significantly associated with the condition in exam in the experiment.
- PmeanAbsT. This is the p-value corresponding to the meanAbsT0 statistic, calculated through permutation testing (before applying the weighting scheme).
- Ppadog. This is the p-value corresponding to the PADOG statistic (padog0), calculated via permutation testing.

    # Load the example of terapadog results from the library
    example <- system.file("extdata", "terapadog_res_example.csv",
                                        package = "terapadog")
    res_example <- read.table(example)
    print(head(res_example))

    ##                                                                         V1
    ## 1                                                                     Name
    ## 2                                Metabolic pathways - Homo sapiens (human)
    ## 3 Pathways of neurodegeneration - multiple diseases - Homo sapiens (human)
    ## 4                         Biosynthesis of cofactors - Homo sapiens (human)
    ## 5       Protein processing in endoplasmic reticulum - Homo sapiens (human)
    ## 6                                          Lysosome - Homo sapiens (human)
    ##                                                                                        V2
    ## 1                                  ,"ID","Size","meanAbsT0","padog0","PmeanAbsT","Ppadog"
    ## 2  ,"01100",1553,3.63109388257983,26.2803510365367,0.564516129032258,0.000144927536231884
    ## 3 ,"05022",476,-0.144014002974607,9.07315296880447,0.403225806451613,0.000144927536231884
    ## 4  ,"01240",152,0.444687188187879,7.90686985261375,0.532258064516129,0.000144927536231884
    ## 5  ,"04141",169,-1.39219614659238,7.57924904772301,0.032258064516129,0.000144927536231884
    ## 6  ,"04142",133,-1.78132458856429,6.68070559237963,0.032258064516129,0.000144927536231884

These results are the same of the PADOG algorithm, though it is important to remind that terapadog uses the padj instead of the T0 in its internal calculations (due to the design of the implementation with DeltaTE), so some ranges (for those values that were calculated fro the T0) might seem different to the experienced user. For all intent and purposes, just keep in mind that the algorithm follows the same logic and, as such, the output reflects that same ideas.

If you want to check if a pathway is significantly enriched, look at the padog0 score (higher = enriched) and at the Ppadog for the significance.

## get_FCs()

This functions perform a classic Differential Translation Analysis (DTA). It allows the user to see how each gene is regulated in terms of TE and RNA fold changes, while also categorizing each gene into a different Regulatory Mode. It requires the following parameters:

- expression.data: A matrix containing the RNA-Seq Counts and Ribo-Seq counts. You can either give the matrix as it is in output from prepareTerapadogData() or convert the gene IDs displayed using id_converter(). Please refer to the sections above (prepareTerapadogData() and id_converter()) for further info.

- exp_de: A dataframe containing the information regarding the samples and the experimental design. Please refer to the sections above (prepareTerapadogData()) for further info.

- paired: A logical value. Allows for experimental designs where samples are paired (for instance, a study on the response of patients to a drug). This argument is optional. Remember, if you set this to TRUE, you must have tha pairing info specified as the “Block” column of your metadata (see section 3.1 of the vignette)

    # Loads apeglm
    # Check and load apeglm
    if (!requireNamespace("apeglm", quietly = TRUE)) {
      stop("The package 'apeglm' is required to run this vignette. Please install it using BiocManager::install('apeglm').")
    }
    # Execute the analysis
    fc_results <- get_FCs(expression.data, exp_de)

    ## estimating size factors

    ## estimating dispersions

    ## gene-wise dispersion estimates

    ## mean-dispersion relationship

    ## final dispersion estimates

    ## fitting model and testing

    ## using 'apeglm' for LFC shrinkage. If used in published research, please cite:
    ##     Zhu, A., Ibrahim, J.G., Love, M.I. (2018) Heavy-tailed prior distributions for
    ##     sequence count data: removing the noise and preserving large differences.
    ##     Bioinformatics. https://doi.org/10.1093/bioinformatics/bty895

    ## estimating size factors

    ## estimating dispersions

    ## gene-wise dispersion estimates

    ## mean-dispersion relationship

    ## final dispersion estimates

    ## fitting model and testing

    ## using 'apeglm' for LFC shrinkage. If used in published research, please cite:
    ##     Zhu, A., Ibrahim, J.G., Love, M.I. (2018) Heavy-tailed prior distributions for
    ##     sequence count data: removing the noise and preserving large differences.
    ##     Bioinformatics. https://doi.org/10.1093/bioinformatics/bty895

    # Print the results
    print(head(fc_results))

    ##     Identifier     TE_FC TE_padj Identifier.1      RIBO_FC RIBO_padj
    ## 1 LOC102725121        NA      NA LOC102725121           NA        NA
    ## 2 LOC105378947 -1.281263      NA LOC105378947           NA        NA
    ## 3 LOC107984841 -1.591696      NA LOC107984841           NA        NA
    ## 4 LOC107985728 -4.207352      NA LOC107985728 0.0001822491        NA
    ## 5 LOC107985729 -1.281263      NA LOC107985729           NA        NA
    ## 6 LOC105378949  1.532022      NA LOC105378949 0.0055613321        NA
    ##         RNA_FC  RNA_padj        RegMode
    ## 1           NA        NA Undeterminable
    ## 2  0.006186348        NA Undeterminable
    ## 3  0.008455336        NA Undeterminable
    ## 4  0.024308190        NA Undeterminable
    ## 5  0.006381561        NA Undeterminable
    ## 6 -0.086836947 0.4830256 Undeterminable
    ##                                  RegModeExplicit
    ## 1 One or more adjusted p-values are missing (NA)
    ## 2 One or more adjusted p-values are missing (NA)
    ## 3 One or more adjusted p-values are missing (NA)
    ## 4 One or more adjusted p-values are missing (NA)
    ## 5 One or more adjusted p-values are missing (NA)
    ## 6 One or more adjusted p-values are missing (NA)

The result of this function is a data frame with the following columns:

- TE_FC. The Log2 FC of the TE.
- TE_padj. The adjusted p-value for the analysis of the TE changes.
- RIBO_FC. The Fold Change in the Ribo-Seq (or Polysome-Seq) derived counts.
- RIBO_padj. The adjusted p-value for the above Fold Change.
- RNA_FC. The Fold Change in the RNA-Seq derived counts.
- RNA_padj. The adjusted p-value for the above Fold Change.
- RegMode. The Regulatory Mode the genes fall into.
- RegModeExplicit. A more verbose description of each Regulatory mode.

The various RegModes are reported as defined in Chotani et al. paper cited thoughout this vignette, exception for Undeterminable (genes who have NA in one or more samples), and Undetermined (genes who cannot be assigned to any RegMode, as defined in Chotani et al. paper).

## plotDTA()

This function plots the results of the get_FCs() function to an interactive html plot. It has been made with the idea of being a helper in the visualisation of the results. It skips the genes under “Undeterminable” and “Undetermined” RegModes, since they would clutter the plot without adding any value to it. It requires the following parameters:

- FC_results: The results of the get_FCs function.
- save_plot: Boolean. Default is FALSE. If set to TRUE, it will evaluate “path” (see below) to save the plot.
- path: The full path (name included) where you want to save the plot. Remember to add the .html extension to the plot!

If no path is provided, the report will be generated in a temporary directory ( use tempdir() to see which one.

    # Execute the function
    plot_FCs <- plotDTA(fc_results)

# References

Discalimer: Terapadog has been developed using the PADOG algorithm of analysis as a blueprint. I do not own the original code.

My ownership is limited to the idea of the implementation and any new code written in that regard, not to the tools used within, for which authorship is documented below:

Tarca AL, Draghici S, Bhatti G. et al. Down-weighting overlapping genes improves gene set analysis. BMC Bioinformatics (2012).

[https://doi.org/10.1186/1471-2105-13-136]

Similarly, the test data that has been used within this package has been retrieved from the github repository relative to the original DeltaTE paper (see below). I do not claim ownership of the data, and I encourage you to check the extdata_info.md file to see the modifications applied to it for the tutorial purposes.

DeltaTE:

Chothani S, Adami E, Ouyang JF, Viswanathan S, Hubner N, Cook SA, Schafer S, Rackham OJL. deltaTE: Detection of Translationally Regulated Genes by Integrative Analysis of Ribo-seq and RNA-seq Data. Curr Protoc Mol Biol. (2019).

[https://pubmed.ncbi.nlm.nih.gov/31763789/]

In addition, DeltaTE makes use of the lfcShrink function from the apeglm package:

Zhu A, Ibrahim JG, Love MI. Heavy-tailed prior distributions for sequence count data: removing the noise and preserving large differences.vBioinformatics. (2018)

[https://doi.org/10.1093/bioinformatics/bty895]

Finally, I reference the ReactomeGSA, since this tool has been developed with the final aim to have it integrated with it once published, as peart of a new analyser.

Griss J, Viteri G, Sidiropoulos K, Nguyen V, Fabregat A, Hermjakob H, ReactomeGSA - Efficient Multi-Omics Comparative Pathway Analysis, Molecular & Cellular Proteomics (2020).

[https://doi.org/10.1074/mcp.TIR120.002155]

# Ackwoledgements

My PhD is supported by Science Foundation Ireland, Centre for Research Training in Genomics Data Science [18/CRT/6214].

This package has been devolped as part of a collaboration between my hosting istitution (University College Cork, Cork, Ireland) and the European Bioinformatics Institute (EMBL-EBI, Hinxton, UK).

A special thanks goes to Henning Hermanjacob and Alexander Gretner for the support, and to all the Reactome/EBI team for the patience.

Finally, to you, who have read all the vignette up to here. Hopefully, I have been clear and explanatory enough in the use of the package.

# SessionInfo

    ## R version 4.6.0 (2026-04-24)
    ## Platform: x86_64-pc-linux-gnu
    ## Running under: Ubuntu 24.04.4 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] terapadog_1.4.0  BiocStyle_2.40.0
    ##
    ## loaded via a namespace (and not attached):
    ##   [1] DBI_1.3.0                   httr2_1.2.2
    ##   [3] biomaRt_2.68.0              rlang_1.2.0
    ##   [5] magrittr_2.0.5              otel_0.2.0
    ##   [7] matrixStats_1.5.0           compiler_4.6.0
    ##   [9] RSQLite_2.4.6               png_0.1-9
    ##  [11] vctrs_0.7.3                 stringr_1.6.0
    ##  [13] pkgconfig_2.0.3             crayon_1.5.3
    ##  [15] fastmap_1.2.0               dbplyr_2.5.2
    ##  [17] XVector_0.52.0              rmarkdown_2.31
    ##  [19] purrr_1.2.2                 bit_4.6.0
    ##  [21] xfun_0.57                   cachem_1.1.0
    ##  [23] jsonlite_2.0.0              progress_1.2.3
    ##  [25] blob_1.3.0                  DelayedArray_0.38.1
    ##  [27] BiocParallel_1.46.0         parallel_4.6.0
    ##  [29] prettyunits_1.2.0           R6_2.6.1
    ##  [31] bslib_0.10.0                stringi_1.8.7
    ##  [33] RColorBrewer_1.1-3          GenomicRanges_1.64.0
    ##  [35] jquerylib_0.1.4             numDeriv_2016.8-1.1
    ##  [37] Rcpp_1.1.1-1.1              Seqinfo_1.2.0
    ##  [39] SummarizedExperiment_1.42.0 knitr_1.51
    ##  [41] IRanges_2.46.0              Matrix_1.7-5
    ##  [43] tidyselect_1.2.1            abind_1.4-8
    ##  [45] yaml_2.3.12                 codetools_0.2-20
    ##  [47] curl_7.1.0                  lattice_0.22-9
    ##  [49] tibble_3.3.1                plyr_1.8.9
    ##  [51] Biobase_2.72.0              withr_3.0.2
    ##  [53] KEGGREST_1.52.0             S7_0.2.2
    ##  [55] coda_0.19-4.1               evaluate_1.0.5
    ##  [57] BiocFileCache_3.2.0         Biostrings_2.80.0
    ##  [59] pillar_1.11.1               BiocManager_1.30.27
    ##  [61] filelock_1.0.3              MatrixGenerics_1.24.0
    ##  [63] stats4_4.6.0                plotly_4.12.0
    ##  [65] generics_0.1.4              emdbook_1.3.14
    ##  [67] S4Vectors_0.50.0            hms_1.1.4
    ##  [69] ggplot2_4.0.3               scales_1.4.0
    ##  [71] glue_1.8.1                  lazyeval_0.2.3
    ##  [73] maketools_1.3.2             tools_4.6.0
    ##  [75] apeglm_1.34.0               sys_3.4.3
    ##  [77] data.table_1.18.2.1         locfit_1.5-9.12
    ##  [79] buildtools_1.0.0            mvtnorm_1.3-7
    ##  [81] grid_4.6.0                  tidyr_1.3.2
    ##  [83] bbmle_1.0.25.1              crosstalk_1.2.2
    ##  [85] bdsmatrix_1.3-7             AnnotationDbi_1.74.0
    ##  [87] cli_3.6.6                   rappdirs_0.3.4
    ##  [89] S4Arrays_1.12.0             viridisLite_0.4.3
    ##  [91] dplyr_1.2.1                 gtable_0.3.6
    ##  [93] DESeq2_1.52.0               sass_0.4.10
    ##  [95] digest_0.6.39               BiocGenerics_0.58.0
    ##  [97] SparseArray_1.12.1          htmlwidgets_1.6.4
    ##  [99] farver_2.1.2                memoise_2.0.1
    ## [101] htmltools_0.5.9             lifecycle_1.0.5
    ## [103] httr_1.4.8                  bit64_4.8.0
    ## [105] MASS_7.3-65