Installer Xcode depuis l'App Store (c'est plutôt long)
Lancer Xcode une fois pour qu'il finisse l'installation. Le mot de passe de l'ordinateur vous sera demandé.
Quitter complètement.
-
Enregistrer sur votre PC le fichier TerminalUnixSetup.exe
Il s'agit d'un exécutable qui va installer un terminal UNIX dans votre répertoire
HOME
-
Exécuter
TerminalUnixSetup.exe
Le terminal UNIX s'installe avec tous les outils nécessaires. Un répertoire
tools
est aussi créé dans votreHOME
. Il contient le scriptprepare_gene_onthology.pl
Sélectionnez Git Bash
dans le menu de Windows ou cliquez sur l'icone présente sur le bureau
- Installation de R
Sur le site du CRAN : https://cran.r-project.org/bin/windows/base/
Cliquer sur Download R 4.0.5 for Windows
et suivre les instructions (en cas de nouvelle version le n° peut varier)
- Installation de R-studio
Sur la page : https://www.rstudio.com/products/rstudio/download/#download
Choisissez la version pour Windows 10, suivez les instructions.
Si votre ordinateur est toujours un system 32 bit il faudra alors prendre une version antérieure de R studio. Sur la page https://www.rstudio.com/products/rstudio/older-versions/ choisir la version RStudio Desktop 1.1.463
- Installation de R
Sur le site du CRAN : https://cran.r-project.org/bin/macosx/
Cliquer sur R-4.0.5.pkg
et suivre les instructions (en cas de nouvelle version le n° peut varier)
- Installation de R-studio
Sur la page : https://www.rstudio.com/products/rstudio/download/#download
Choisissez la version pour macOS, suivez les instructions.
-
Sauvegarder le fichier
prepare_gene_onthology.pl
dansTéléchargement
-
Ouvrez un terminal UNIX :
Terminal
-
Lancez les deux commandes suivantes dans le terminal (par copier / coller)
mkdir -p $HOME/tools
-
Exécutez les commandes suivantes pour déplacer le fichier et le rendre exécutable
mv $HOME/Downloads/prepare_gene_onthology.pl $HOME/tools chmod +x $HOME/tools/prepare_gene_onthology.pl
-
Fermez le terminal, l’installation est terminée.
Le fichier a été installé par l'executable TerminalUnixSetup.exe
😄
Ouvrez le Terminal
et taper cd
puis un espace
et faites glisser le répertoire dans le terminal depuis le Finder.
Lancer la commande suivante (par copier / coller)
ctrl+c
ou ctrl+v
. La commande ctrl+c
interrompt l'action en cours. Utiliser toujours le clic droit pour accéder au menu contextuel.
Sous MacOS, les commandes cmd+c
et cmd+v
fonctionnent. La commande ctrl+c
interrompt elle aussi l'action en cours.
$HOME/tools/prepare_gene_onthology.pl
Si le message de syntaxe ci-dessous s’affiche, vous pouvez passer directement à l’étape “Exécutions suivantes”.
prepare_gene_onthology.pl [--help|--man|--version]
or
prepare_gene_onthology.pl [-m|--method] [-c|--correction] input_gene_list.tsv output_curated_gene_ontology.tsv
Si, au contraire, le message suivant apparait, c’est que les modules Perl nécessaires ne sont pas installés:
Au moins un des modules Perl nécessaires n'est pas installé.
Pour utiliser ce script vous devez d'abord exécuter les commandes suivantes:
cpan App::cpanminus
cpanm WWW::Mechanize
cpanm JSON
Créer ou mettre à jour un fichier.zshrc
touch .zshrc .bashrc
Puis exécuter la commande:
cpan App::cpanminus
Cette commande peut poser quelques questions.
Acceptez toutes les réponses par défaut en tapant sur la touche
Entrée
cmd+t
puis exécutez la commande:
cpanm WWW::Mechanize
Exemple d’affichage:
et enfin la commande:
cpanm JSON
Le script prepare_gene_onthology.pl
réalise l'analyse de gene ontology avec PANTHER et REVIGO à partir d'une
liste de gene ID selon le protocole décrit par Bonnot et al, 2019 . Il met en forme le résultat pour que ce dernier soit utilisable par les scripts script_1plot.R
et script_2plot.R
pour faire la repésentation graphique de l'analyse d'ontologie.
PANTHER présente aujourd’hui les résultats sous forme hiérarchique, c’est à dire que chaque GO_id est relié à un GO_id parent ou main GO_id correspondant aux grandes classes d’ontologie. Cette information est collectée dans le fichier output_go_ids_hierarchy.tsv
et est exploitée dans le script script_1plot_hierarchy.R
.
output_go_ids_hierarchy.tsv
. Ils sont rajouté dans par le script R quand cela est nécessaire.
Il s'utilise de la façon suivante :
$HOME/tools/prepare_gene_onthology.pl [-m|--method] [-c|--correction] input_gene_list.tsv output_curated_gene_ontology.tsv output_go_ids_hierarchy.tsv
[-m|--method] [-c|--correction]
sont les options du script. Elle permettent de définir la méthode pour l'analyse et le type de correction.
Pour la méthode on a 3 possibilités : biological_process cellular_component molecular_function
La valeur par défaut est biological_process
, cela signfie que si vous ne spécifiez pas de méthode, la méthode biological_process
sera appliquée.
Pour la correction on a 2 possibilités : fdr
bonferroni
La valeur par défaut est fdr
.
input_gene_list.tsv
est le fichier qui contient les données que vous souhaitez analyser que l'on appelera myfile.tsv
. Vous pouvez lui donner le nom qui vous convient.
L'extention.tsv
signifie "Tab-separated values". Tout fichiers comportant des colonnes séparés par des tabulations est conforme à ce format, même si son extention est .txt
. Vous pouvez donc passer en entrée du script un fichier .txt
.
output_curated_gene_ontology.tsv
est le fichier de sortie, celui que vous utiliserez pour faire la représentation graphique. Vous pouvez utiliser le nom actuel ou définir un nom de votre choix.
On pourra alors écrire la commande sous cette forme :
$HOME/tools/prepare_gene_onthology.pl --method biological_process --correction fdr myfile.tsv my_output_file.tsv my_hierarchy_file.tsv
On peut aussi utiliser la version courte pour l'appel des options :
$HOME/tools/prepare_gene_onthology.pl -m biological_process -c fdr myfile.tsv my_output_file.tsv my_hierarchy_file.tsv
Vous pouvez retrouver ces information en tapant :
prepare_gene_onthology.pl --man
Cette commande affiche le manuel d'utilisation, pour retourner au promt du terminal il faut taper q
, pour quit
.
Si on exécute la commande
$HOME/tools/prepare_gene_onthology.pl --method biological_process --correction fdr myfile.tsv my_output_file.tsv my_hierarchy_file.tsv
Le terminal affiche le message suivant :
Step 1/7 Extract gene ID list from /Volumes/Disk_4To/Donnees_ARA2/Clusters/2w_5clusters/cluster1.txt
Step 2/7 Panther ontology analysis => /tmp/gene_ontology_analysis.txt, /tmp/gene_ontology_analysis.json
request...
export result to /tmp/gene_ontology_analysis.txt
export result to /tmp/gene_ontology_analysis.json
Step 3/7 extract GO ids and FDR from /tmp/gene_ontology_analysis.txt
Step 4/7 REVIGO reduction => /tmp/gene_ontology_analysis_revigo.csv
request...
export result
Step 5/7 Formating /Users/cecile/Downloads/output_curated_gene_ontology.tsv: filter panther result with revigo result
Step 6/7 keep track of GO ids hierarchy from /tmp/gene_ontology_analysis.json into /Users/cecile/Downloads/output_go_ids_hierarchy.tsv
Step 7/7 cleanup: remove temporay files from /tmp
Trois scripts retravaillés sont disponibles, 1 permettant de créer un seul graphique, un permettant de générer deux graphiques qui seront de la même taille et associés en une seule image et enfin un dernier qui exploite les données de la hiérarchie.
Il existe aussi la possibilité de générer un graph pour comparer plusieurs conditions.
Ouvrir R-studio, ouvrir le script choisi .
La fenêtre R-studio se divise en 4 cadrans. Le script va apparaitre dans le cadran en haut à gauche.
Au fur et à mesure de l'éxécution les commande apparaissent en bas à gauche et les variables en haut à droite.
A la fin le graph apparait dans le cadran en bas à droite.
Pour exécuter les commandes il suffit de se placer sur la ligne à exécuter et de cliquer sur Run
Les étapes des scripts sont décrites ici mais vous n'avez besoin que des fichiers .R
que vous ouvrez dans R-studio pour faire le graph.
Si nécessaire il faut installer le package ggplot2
if (!requireNamespace("ggplot2", quietly = TRUE))
install.packages("ggplot2")
Charger la librairie et choisir le répertoire de travail
# Load the ggplot2 package
library(ggplot2)
Vous pouvez choisir le répertoire de travail de façon graphique en parcourant l'arborescence dans le cadre en bas à droite puis en cliquant sur More -> Set As Working Directory
# set the working directory where the tables to use are located
setwd("PATH/TO/data")
Importation des données
GO_all <- read.table("output_curated_gene_ontology.tsv",header=T,stringsAsFactors = T)
SI on souhaite utiliser seulement un sous ensemble des identifiants GO, par exemple les 20 plus significatifs (le fichier est trié en fonction des FDR croissants), exécuter cette commande :
GO_all <- GO_all[1:20,] #crée un nouveau tableau de données avec les lignes 1 à 20 de GO_all et toutes les colonnes
Sinon passer à la suite
# List objects and their structure contained in the dataframe 'GO_all'
ls.str(GO_all)
# Transform the column 'Gene_number' into a numeric variable
GO_all$Gene_number <- as.numeric(GO_all$Gene_number)
# Replace all the "_" by a space in the column containing the GO terms
GO_all$GO_id <- chartr("_", " ", GO_all$GO_id)
# Transform FDR values by -log10('FDR values')
GO_all$'|log10(FDR)|' <- -(log10(GO_all$FDR))
Déssiner le graph
# Draw the plot with ggplot2 (Figure 2)
#--------------------------------------
ggplot(GO_all, aes(x = GO_id, y = Fold_enrichment)) +
geom_hline(yintercept = 1, linetype="dashed",
color = "azure4", size=.5)+
geom_point(data=GO_all, aes(x=GO_id, y=Fold_enrichment, size = Gene_number, colour = `|log10(FDR)|`), alpha=.7)+
#scale_y_continuous(limits = c(0,15))+ # Retirer le # si on veut fixer l'échelle sur l'axe x (ici entre 0 et 15)
scale_x_discrete(limits= GO_all$GO_id)+
scale_color_gradient(low="green", high="red", limits=c(0, NA))+
coord_flip()+
theme_bw()+
theme(axis.ticks.length=unit(-0.1, "cm"),
axis.text.x = element_text(margin=margin(5,5,0,5,"pt")),
axis.text.y = element_text(margin=margin(5,5,5,5,"pt")), # pour modifier la taille des étiquettes : axis.text.y = element_text(margin=margin(5,5,5,5,"pt"), size = 14)
axis.text = element_text(color = "black"),
panel.grid.minor = element_blank(),
legend.title.align=0.5)+
xlab("GO ID")+ # c'est le nom qui apparit sur le coté gauche du graph
ylab("Fold enrichment")+
labs(color="-log10(FDR)", size="Number\nof genes")+ #Replace by your variable names; \n allow a new line for text
guides(size = guide_legend(order=2),
colour = guide_colourbar(order=1))
Par exemple un pour les up et un pour les down
Si nécessaire il faut installer le package ggplot2
et le package cowplot
if (!requireNamespace("ggplot2", quietly = TRUE))
install.packages("ggplot2")
if (!requireNamespace("cowplot", quietly = TRUE))
install.packages("cowplot")
if (!requireNamespace("devtools", quietly = TRUE))
install.packages("devtools")
Charger la librairie et choisir le répertoire de travail
# Load the ggplot2 package
library(ggplot2)
library(cowplot)
# set the working directory where the tables to use are located
setwd("PATH/TO/data")
Importation des données : dans ce cas on dispose de deux fichiers up.txt et down.txt
GO_up <- read.table("output_curated_gene_ontology_up.tsv",header=T,stringsAsFactors = T)
GO_down <- read.table("output_curated_gene_ontology_down.tsv",header=T,stringsAsFactors = T)
SI on souhaite utiliser seulement un sous ensemble des identifiants GO, par exemple les 20 plus significatifs (le fichier est trié en fonction des FDR croissants), exécuter cette commande :
GO_up <- GO_up[1:20,] #crée un nouveau tableau de données avec les lignes 1 à 20 de GO_up et toutes les colonnes
GO_down <- GO_down[1:20,] #crée un nouveau tableau de données avec les lignes 1 à 20 de GO_down et toutes les colonnes
Sinon passer à la suite en traitant séparément les deux jeux de données.
- Pour les Up
# List objects and their structure contained in the dataframe 'GO_all'
ls.str(GO_up)
# Transform the column 'Gene_number' into a numeric variable
GO_up$Gene_number <- as.numeric(GO_up$Gene_number)
# Replace all the "_" by a space in the column containing the GO terms
GO_up$GO_id <- chartr("_", " ", GO_up$GO_id)
# Transform FDR values by -log10('FDR values')
GO_up$'|log10(FDR)|' <- -(log10(GO_up$FDR))
Générer le graph sans l'afficher
up <- ggplot(GO_up, aes(x = GO_id, y = Fold_enrichment)) +
geom_hline(yintercept = 1, linetype="dashed",
color = "azure4", size=.5)+
geom_point(data=GO_up, aes(x=GO_id, y=Fold_enrichment, size = Gene_number, colour = `|log10(FDR)|`), alpha=.7)+
scale_y_continuous(limits = c(0,15))+
scale_x_discrete(limits= GO_up$GO_id)+
scale_color_gradient(low="green", high="red", limits=c(0, NA))+
coord_flip()+
theme_bw()+
theme(axis.ticks.length=unit(-0.1, "cm"),
axis.text.x = element_text(margin=margin(5,5,0,5,"pt")),
axis.text.y = element_text(margin=margin(5,5,5,5,"pt"), size = 14),
axis.text = element_text(color = "black"),
panel.grid.minor = element_blank(),
legend.title.align=0.5)+
xlab("GO ID")+ # c'est le nom qui apparit sur le coté gauche du graph
ylab("Fold enrichment")+
ggtitle("UP")+
labs(color="-log10(FDR)", size="Number\nof genes")+ #Replace by your variable names; \n allow a new line for text
guides(size = guide_legend(order=2),
colour = guide_colourbar(order=1))
- Pour les Down
# List objects and their structure contained in the dataframe 'GO_all'
ls.str(GO_down)
# Transform the column 'Gene_number' into a numeric variable
GO_down$Gene_number <- as.numeric(GO_down$Gene_number)
# Replace all the "_" by a space in the column containing the GO terms
GO_down$GO_biological_process <- chartr("_", " ", GO_down$GO_biological_process)
# Transform FDR values by -log10('FDR values')
GO_down$'|log10(FDR)|' <- -(log10(GO_down$FDR))
Générer le graph sans l'afficher
down <- ggplot(GO_down, aes(x = GO_id, y = Fold_enrichment)) +
geom_hline(yintercept = 1, linetype="dashed",
color = "azure4", size=.5)+
geom_point(data=GO_down, aes(x=GO_id, y=Fold_enrichment, size = Gene_number, colour = `|log10(FDR)|`), alpha=.7)+
scale_y_continuous(limits = c(0,15))+
scale_x_discrete(limits= GO_down$GO_id)+
scale_color_gradient(low="green", high="red", limits=c(0, NA))+
coord_flip()+
theme_bw()+
theme(axis.ticks.length=unit(-0.1, "cm"),
axis.text.x = element_text(margin=margin(5,5,0,5,"pt")),
axis.text.y = element_text(margin=margin(5,5,5,5,"pt"), size = 14),
axis.text = element_text(color = "black"),
panel.grid.minor = element_blank(),
legend.title.align=0.5)+
xlab("GO ID")+ # c'est le nom qui apparit sur le coté gauche du graph
ylab("Fold enrichment")+
ggtitle("DOWN")+
labs(color="-log10(FDR)", size="Number\nof genes")+ #Replace by your variable names; \n allow a new line for text
guides(size = guide_legend(order=2),
colour = guide_colourbar(order=1))
-
Combiner les deux graph en une seule figure
les deux graphs ont les mêmes dimensions indépendement des étiquettes de données.
cowplot::plot_grid(up, down, ncol = 1, align = "v")
Si nécessaire il faut installer le package ggplot2
et le package RColorBrewer
if (!require(ggplot2)) { install.packages("ggplot2") }
if (!require(devtools)) { install.packages("devtools") }
if (!require(RColorBrewer)) { install.packages("RColorBrewer") }
Charger la librairie et choisir le répertoire de travail
# Load the ggplot2 and RColorBrewer packages
library(ggplot2)
library(RColorBrewer)
# set the working directory where the tables to use are located
setwd("PATH/TO/data")
Importation des données : dans ce cas on dispose de deux fichiers out.tsv et hierarchy.tsv
# Load GO data
GO <- read.table("out.tsv", header=T, stringsAsFactors = T, sep = "\t")
# Load hierarchy file
hierarchy <- read.table("hierarchy.tsv", header=F, stringsAsFactors = T, sep = "\t", quote = "")
colnames(hierarchy) <- c("parent", "child")
Préparation des données GO
# If you only want to use the n first line of the data frame for the plot, execute this command
# If you want to keep all lines just skip this
#Data in the input file are sorted in ascending FDR.
GO <- GO[1:20,] #Replace the data frame by a new data frame that only contains the 20 first lines of GO
# and all columns
# You can select any number of lines to be used by replacing 20 by the desired value
# List objects and their structure contained in the dataframe 'GO'
ls.str(GO)
# Transform the column 'Gene_number' into a numeric variable
GO$Gene_number <- as.numeric(GO$Gene_number)
# Replace all the "_" by a space in the column containing the GO terms
GO$GO_id <- chartr("_", " ", GO$GO_id)
# Transform FDR values by -log10('FDR values')
GO$'|log10(FDR)|' <- -(log10(GO$FDR))
Ajout des informations de hierarchie
# Add parent GO-ID to GO
parent <- hierarchy[hierarchy$child %in% GO$GO_id, ]
# In hierarchy file, GO_id that are already level 0 don't appear so the match might not be perfect
# Merge parent and GO with all = TRUE to keep all the line of GO even if there is no match in parent
GO <- merge(GO, parent, by.x=c("GO_id"), by.y=c("child"), all = TRUE)
# Turn the GO$parent column in character to replace NA (if they existe) by the corresponding value in column GO_id
GO$parent <- as.character(GO$parent)
# Suppress the text between the ()
GO[is.na(GO)] <- gsub("\\s*\\([^\\)]+\\)","",as.character(GO$GO_id[is.na(GO$parent)]))
# Trun the column as factor
GO$parent <- factor(GO$parent)
# Order the data frame by main GO_id
GO <- GO[order(GO$parent),]
Préparation des couleurs pour marquer l’appartenance aux classes de GO
# Prepare color for parent GO_Id assignment
numColors <- length(levels(GO$parent))
getColors <- scales::brewer_pal('qual', palette = "Paired")
myPalette <- getColors(numColors)
names(myPalette) <- levels(GO$parent)
Représentation graphique de la GO
p <- ggplot(GO, aes(x = GO_id, y = Fold_enrichment)) +
geom_hline(yintercept = 1, linetype="dashed",
color = "azure4", size=.5)+
geom_point(data=GO, aes(x=GO_id, y=Fold_enrichment,
size = Gene_number, colour = `|log10(FDR)|`), alpha=.7)+
# scale_y_continuous(limits = c(0,15))+
scale_x_discrete(limits= GO$GO_id)+
scale_color_gradient(low="green", high="red", limits=c(0, NA))+
coord_flip()+
theme_bw()+
theme(axis.ticks.length=unit(-0.1, "cm"),
axis.text.x = element_text(margin=margin(5,5,0,5,"pt"), color = "black"),
axis.text.y = element_text(margin=margin(5,5,5,5,"pt"), colour=myPalette[GO$parent]),
panel.grid.minor = element_blank(),
legend.title.align=0.5)+
xlab("GO ID")+
ylab("Fold enrichment")+
ggtitle("")+
# Replace by your variable names; \n allow a new line for text
labs(color="-log10(FDR)", size="Number\nof genes")+
guides(size = guide_legend(order=2),
colour = guide_colourbar(order=1))
print(p)
Légende des couleurs
plot(NULL, xlim=c(0,length(myPalette)), ylim=c(0,1), xlab="", ylab="", xaxt="n", yaxt="n", frame.plot = FALSE)
legend("center", title = sprintf("Main GO-Id"), legend = names(myPalette),
col = as.data.frame(myPalette)$myPalette, pch = 15, cex=1, pt.cex = 1.5)
La commande suivant pemet d'afficher toutes les informations concernant la session R qui a produit les données : outils, version ...
InfoSession <- devtools::session_info()
# save session file
write.table(InfoSession, file = "InfoSession.txt",
quote = FALSE, row.names = FALSE, sep = '\t')
Le graphique s'affiche dans le cadran en bas à droite
L'image peut ne pas avoir l'aspect souhaité, c'est du à l'espace disponible dans le cadran de visualisation, cela se corrige lors de l'export.
Cliquer sur export
puis Save as Image
pour sauver votre graphique. Une boite de dialogue s'ouvre.
Vous pouvez modifier les paramètre de longueur et largeur puis en utilisant Update Preview
voir le résultat
Si le résultat vous convient, choisissez le répertoire et le nom du fichier puis cliquez sur Save
PANTHER
PANTHER version 16: a revised family classification, tree-based classification tool, enhancer regions and extensive API Huaiyu Mi, Dustin Ebert, Anushya Muruganujan, Caitlin Mills, Laurent-Philippe Albou, Tremayne Mushayamaha and Paul D Thomas . Nucl. Acids Res. (2020) doi: 10.1093/nar/gkaa1106s.
REVIGO
Supek F, Bošnjak M, Škunca N, Šmuc T. "REVIGO summarizes and visualizes long lists of Gene Ontology terms" PLoS ONE 2011. doi:10.1371/journal.pone.0021800
Script R
A Simple Protocol for Informative Visualization of Enriched Gene Ontology Terms. T. Bonnot, MB. Gillard and DH. Nagel. Bio-101: e3429. DOI:10.21769/BioProtoc.3429
R Packages
R Core Team. 2020. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Wickham, Hadley. 2016. Ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. https://ggplot2.tidyverse.org.
Wickham, Hadley, Jim Hester, and Winston Chang. 2021. Devtools: Tools to Make Developing r Packages Easier. https://CRAN.R-project.org/package=devtools.
Wilke, Claus O. 2020. Cowplot: Streamlined Plot Theme and Plot Annotations for ’Ggplot2’. https://CRAN.R-project.org/package=cowplot.
Script prepare_gene_onthology.pl
Terese M. et Lecampion C. https://github.com/cecile-lecampion/gene-ontology-analysis-and-graph