Skip to contents

Scientific background

Today, phenomena such as morphological mutations, diseases or developmental processes are primarily investigated on the molecular level using transcriptomics approaches. Transcriptomes denote the total number of quantifiable transcripts present at a specific stage in a biological process. In disease or developmental (defect) studies, transcriptomes are usually measured over several time points. In treatment studies aiming to quantify differences in the transcriptome due to biotic stimuli, abiotic stimuli, or diseases usually treatment / disease versus non-treatment / non-disease transcriptomes are compared. In either case, comparing changes in transcriptomes over time or between treatments allows us to identify genes and gene regulatory mechanisms that might be involved in governing the biological process of investigation. Although classic transcriptomics studies are based on an established methodology, little is known about the evolution and conservation mechanisms underlying such transcriptomes. Understanding the evolutionary mechanism that change transcriptomes over time, however, might give us a new perspective on how diseases emerge in the first place or how morphological changes are triggered by changes of developmental transcriptomes.

Evolutionary transcriptomics aims to capture and quantify the evolutionary conservation of genes that contribute to the transcriptome during a specific stage of the biological process of interest. The resulting temporal conservation pattern then enables to detect stages of development or other biological processes that are evolutionarily conserved (Drost et al., 2018). This quantification on the highest level is achieved through transcriptome indices (e.g. Transcriptome Age Index or Transcriptome Divergence Index) which aim to quantify the average evolutionary age Barrera-Redondo et al., 2023 or sequence conservation Drost et al., 2015 of genes that contribute to the transcriptome at a particular stage. In general, evolutionary transcriptomics can be used as a method to quantify the evolutionary conservation of transcriptomes at particular developmental stages and to investigate how transcriptomes underlying biological processes are constrained or channeled due to events in evolutionary history (Dollo’s law) (Drost et al., 2017).

Please note, since myTAI relies on gene age inference and there has been an extensive debate about the best approaches for gene age inference in the last years, please follow my updated discussion about the gene age inference literature. With GenEra, we addressed all previously raised issues and we encourage users to run GenEra when aiming to infer gene ages for further myTAI analyses.

Installation

Users can install myTAI from CRAN:

# install myTAI 0.9.3 from CRAN
install.packages("myTAI", dependencies = TRUE)

# install the developer version containing the newest features
devtools::install_github("drostlab/myTAI")

myTAI is using OpenMP to run cpp code in parallel, thus you might need to install additional software.

Ensure that the dependencies requirements are met:

Mac
brew install llvm libomp
cd /usr/local/lib
ln -s /usr/local/opt/libomp/lib/libomp.dylib ./libomp.dylib
Linux
  1. Check if you have an OpenMP-enabled compiler: Open a terminal and run the command gcc --version or g++ --version to check if you have the GNU Compiler Collection (GCC) installed. OpenMP support is typically included in GCC.

    If you don’t have GCC installed, you can install it using your distribution’s package manager. For example, on Ubuntu, you can use sudo apt-get install build-essential to install GCC.

  2. Install the libomp library: Open a terminal and run the command appropriate for your package manager:

    On Ubuntu or Debian-based systems: sudo apt-get install libomp-dev or sudo apt install libomp-dev

    On Fedora or CentOS systems: sudo dnf install libomp-devel

    On Arch Linux: sudo pacman -S libomp

Windows

On Windows, the most common OpenMP implementation is provided by Microsoft Visual C++ (MSVC) compiler, which includes OpenMP support by default. So, if you are using MSVC as your C++ compiler, you should have OpenMP support without any additional installations.

Running myTAI

Load example data

library(myTAI)
# example dataset covering 7 stages of A thaliana embryo development
data("PhyloExpressionSetExample")
# transform absolute expression levels to log2 expression levels
ExprExample <- tf(PhyloExpressionSetExample, log2)

Quantify transcriptome conservation using TAI

# visualize global Transcriptome Age Index pattern
PlotSignature(ExprExample)

plot signature

Quantify expression level distributions for each gene age category

# plot expression level distributions for each age (=PS) category 
# and each developmental stage 
PlotCategoryExpr(ExprExample, "PS") + ggplot2::labs(y = "log2(expression level)")

plot expression by PS

Quantify mean expression of individual gene age categories

# plot mean expression of each age category seperated by old (PS1-3)
# versus young (PS4-12) genes
PlotMeans(ExprExample, Groups = list(1:3, 4:12))

plot mean expression

Quantify relative mean expression of each age category seperated by old versus young genes

# plot relative mean expression of each age category seperated by old (PS1-3)
# versus young (PS4-12) genes
PlotRE(ExprExample, Groups = list(1:3, 4:12))

plot relative expression

# plot the significant differences between gene expression distributions 
# of old (=group1) versus young (=group2) genes
PlotGroupDiffs(ExpressionSet = ExprExample,
               Groups        = list(group_1 = 1:3, group_2 = 4:12),
               legendName    = "PS",
               plot.type     = "boxplot")

plot group diffs

If you successfully ran these myTAI functions, congrats! Please check out the more detailed tutorials and discussions under the Articles tab. For the list of functions, click on the Reference tab.

Hope you enjoy your (non-alcoholic) myTAI!