mirror of
https://github.com/Polarolouis/anova-phylogenetique-projet-msv.git
synced 2026-06-17 18:25:25 +02:00
🦋Begin adding sims
This commit is contained in:
parent
12e30910be
commit
c1de0ed378
6 changed files with 166 additions and 25 deletions
|
|
@ -54,7 +54,6 @@ random_groups <- sample(1:K, nb_species, replace = TRUE)
|
||||||
plot_group_on_tree <- function(tree, groups) {
|
plot_group_on_tree <- function(tree, groups) {
|
||||||
plot(tree, show.tip.label = FALSE)
|
plot(tree, show.tip.label = FALSE)
|
||||||
tiplabels(bg = groups, pch = 21)
|
tiplabels(bg = groups, pch = 21)
|
||||||
text(x = 10, y = 0, label = "This tree will be normalised.")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Saving trees
|
# Saving trees
|
||||||
|
|
|
||||||
|
|
@ -282,16 +282,6 @@ Cette méthode est à l'heure actuelle très utilisée.
|
||||||
d'après le message d'erreur, une optimisation n'a pas convergé. Ces gènes sont
|
d'après le message d'erreur, une optimisation n'a pas convergé. Ces gènes sont
|
||||||
présentés dans le tableau~\ref{tab:na-evemodel}.
|
présentés dans le tableau~\ref{tab:na-evemodel}.
|
||||||
|
|
||||||
\begin{table}[H]
|
|
||||||
\centering
|
|
||||||
<<'table_nas'>>=
|
|
||||||
knitr::kable(evegenesNA, col.names = "Gènes ayant produits des NA",
|
|
||||||
align = "c", booktabs = TRUE, format = "latex", escape = TRUE)
|
|
||||||
@
|
|
||||||
\caption{Table des gènes pour lesquels la méthode \texttt{EVEmodel} a produit des NA}
|
|
||||||
\label{tab:na-evemodel}
|
|
||||||
\end{table}
|
|
||||||
|
|
||||||
\subsection*{Toutes les méthodes}
|
\subsection*{Toutes les méthodes}
|
||||||
|
|
||||||
Nous allons ici comparer toutes les méthodes dans un diagramme de Venn (figure~\ref{fig:venn-all-methods-eve}) afin de
|
Nous allons ici comparer toutes les méthodes dans un diagramme de Venn (figure~\ref{fig:venn-all-methods-eve}) afin de
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
<< 'knitr_options-simu', echo = FALSE>>=
|
||||||
|
knitr::opts_knit$set(cache = TRUE, fig.pos = "HT", fig.width = 6, fig.height = 6,
|
||||||
|
fig.align = "center", warnings = FALSE, echo = FALSE, format = "latex")
|
||||||
|
|
||||||
|
@
|
||||||
|
Simu: Plusieurs design, tailles etc
|
||||||
|
On sait la vérité, on peut connaitre les vrais positifs etc
|
||||||
|
Qu'est ce qu'on prend en entrées qu'est ce qu'on veut en sortie
|
||||||
|
|
||||||
|
Bien insister sur l'arbre d'entrée et l'objectif de la simu : quelle approche pour mieux détecter les gènes différentiellement exprimés.
|
||||||
|
|
||||||
|
Simulations :
|
||||||
|
\begin{itemize}
|
||||||
|
\item soit selon l'arbre des données
|
||||||
|
\item soit partir sur regarder l'impact de la taille de l'arbre etc.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
\subsubsection*{ANOVA vs ANOVA Phylogénétique}
|
||||||
|
|
||||||
|
Dans cette partie nous souhaitons comparer les résultats de l'ANOVA et de
|
||||||
|
l'ANOVA phylogénétique.
|
||||||
|
Pour cela nous allons simuler des données selon plusieurs modalités et évaluer
|
||||||
|
l'\emph{erreur de première espèce} et la \emph{puissance} obtenue.
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Des données réparties en deux groupes indépendants de la
|
||||||
|
phylogénie.
|
||||||
|
\item Des données réparties en deux groupes cohérents avec la phylogénie.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
Pour les simulations qui ne se font pas selon la phylogénie, nous nous attendons
|
||||||
|
à ce que l'ANOVA classique obtienne de bons résultats puisque c'est une
|
||||||
|
situation correspondant à l'application du modèle.
|
||||||
|
|
||||||
|
Pour les simulations qui se font selon l'information de l'arbre phylogénétique,
|
||||||
|
nous nous attendons à ce que l'ANOVA phylogénétique parvienne à mieux prendre en
|
||||||
|
compte l'information apportée par la phylogénie et à démêler son effet.\\
|
||||||
|
|
||||||
|
<<'modules-simulations', include = FALSE>>=
|
||||||
|
require("ape")
|
||||||
|
require("phylolm")
|
||||||
|
require("phytools")
|
||||||
|
require("here")
|
||||||
|
library(tidyverse)
|
||||||
|
library(ggplot2)
|
||||||
|
library(patchwork)
|
||||||
|
source(here("R","utils.R"))
|
||||||
|
@
|
||||||
|
|
||||||
|
<<'Import-arbre'>>=
|
||||||
|
K <- 2
|
||||||
|
|
||||||
|
nb_species <- 43
|
||||||
|
|
||||||
|
plot_group_on_tree <- function(tree, groups, ...) {
|
||||||
|
plot(tree, ...)
|
||||||
|
tiplabels(bg = groups, pch = 21)
|
||||||
|
}
|
||||||
|
tree <- read.tree(here("R","chen2019.tree"))
|
||||||
|
# Normalising tree edge length
|
||||||
|
taille_tree <- diag(vcv(tree))[1]
|
||||||
|
tree$edge.length <- tree$edge.length / taille_tree
|
||||||
|
@
|
||||||
|
|
||||||
|
<<'simus-groupes'>>=
|
||||||
|
seed <- 1234
|
||||||
|
set.seed(seed)
|
||||||
|
# Mus et Rat vs le reste
|
||||||
|
group_mus_rat_vs_other <- sapply(1:nb_species, function(tip) {
|
||||||
|
if (tip %in% getDescendants(tree = tree, 55)) {
|
||||||
|
return(1)
|
||||||
|
}
|
||||||
|
return(2)
|
||||||
|
})
|
||||||
|
|
||||||
|
# TODO Demander à Paul et Mélina si mieux de mettre groupes équilibrés 0.5 0.5
|
||||||
|
# Ou groupes comparables 16, 27
|
||||||
|
random_groups <- sample(1:K, nb_species,
|
||||||
|
replace = TRUE, prob = c(16, 27))
|
||||||
|
@
|
||||||
|
|
||||||
|
Pour faire nos simulations dans un contexte proche du cas réel nous allons
|
||||||
|
utiliser l'arbre présenté sur la figure~\ref{fig:arbre-chen2019}.
|
||||||
|
|
||||||
|
Nous choisissons de diviser les espèces en deux groupes.
|
||||||
|
Pour le groupe respectant la phylogénie, on a d'un côté les espèces
|
||||||
|
du genre \emph{Mus} avec les rats et les autres espèces dans un autre groupe
|
||||||
|
(voir la figure~\ref{fig:simu-groupes-mus}).
|
||||||
|
|
||||||
|
|
||||||
|
Et pour le groupe ne respectant pas la phylogénie on attribue aléatoirement les
|
||||||
|
individus à l'un des deux groupes en respectant les proportions du groupe défini
|
||||||
|
avant afin de rendre les résultats comparables (voir la
|
||||||
|
figure~\ref{fig:simu-groupes-alea-prop}).
|
||||||
|
Enfin pour que notre analyse soit reproductible nous fixons la graine à
|
||||||
|
\Sexpr{seed}.
|
||||||
|
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
<<'plot-groupes-mus'>>=
|
||||||
|
plot_group_on_tree(tree, group = group_mus_rat_vs_other)
|
||||||
|
@
|
||||||
|
\caption{Groupes \emph{Mus} et rats contre les autres}
|
||||||
|
\label{fig:simu-groupes-mus}
|
||||||
|
\end{figure}
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
<<'plot-groupes-random'>>=
|
||||||
|
plot_group_on_tree(tree, group = random_groups)
|
||||||
|
@
|
||||||
|
\caption{Groupes aléatoires respectant les proportions}
|
||||||
|
\label{fig:simu-groupes-alea-prop}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
<<'param-simulation'>>=
|
||||||
|
# Generate data for rat&mus vs the rest
|
||||||
|
N <- 500
|
||||||
|
base_values <- c(0, 1)
|
||||||
|
sigma2_phylo <- 1
|
||||||
|
sigma2_measure <- 0.1
|
||||||
|
risk_threshold <- 0.05
|
||||||
|
|
||||||
|
## Standardized parameters
|
||||||
|
total_variance <- 1.0 # sigma2_phylo + sigma2_error, fixed [as tree_height = 1]
|
||||||
|
heri <- c(0.3, 0.5, 0.7, 0.9) # heritability her = sigma2_phylo / total_variance. 0 means only noise. 1 means only phylo.
|
||||||
|
snr <- 1 # signal to noise ratio snr = size_effect / total_variance
|
||||||
|
@
|
||||||
|
|
||||||
|
Pour les paramètres de la simulation nous allons faire prendre à $h$, défini comme
|
||||||
|
l'héritabilité, les valeurs $h \in (\Sexpr{heri})$.
|
||||||
|
|
||||||
|
\subsubsection*{Avec Satterthwaite et le \emph{Likelihood Ratio Test} (LRT)}
|
||||||
43
rapport.Rnw
43
rapport.Rnw
|
|
@ -10,6 +10,7 @@
|
||||||
\usepackage{graphicx}
|
\usepackage{graphicx}
|
||||||
\graphicspath{{img/}}
|
\graphicspath{{img/}}
|
||||||
\usepackage{float}
|
\usepackage{float}
|
||||||
|
\usepackage{subcaption} % for subfigures environments
|
||||||
|
|
||||||
% Booktabs
|
% Booktabs
|
||||||
\usepackage{booktabs}
|
\usepackage{booktabs}
|
||||||
|
|
@ -296,21 +297,9 @@ puis sur arbre avec petites branches ?
|
||||||
\subsection{Simulations}
|
\subsection{Simulations}
|
||||||
% On importe le fichier
|
% On importe le fichier
|
||||||
|
|
||||||
Simu: Plusieurs design, tailles etc
|
|
||||||
On sait la vérité, on peut connaitre les vrais positifs etc
|
|
||||||
Qu'est ce qu'on prend en entrées qu'est ce qu'on veut en sortie
|
|
||||||
|
|
||||||
<<simulations-methodes, child='Rnw/simulations-methodes.Rnw'>>=
|
<<simulations-methodes, child='Rnw/simulations-methodes.Rnw'>>=
|
||||||
@
|
@
|
||||||
|
|
||||||
Bien insister sur l'arbre d'entrée et l'objectif de la simu : quelle approche pour mieux détecter les gènes différentiellement exprimés.
|
|
||||||
|
|
||||||
Simulations :
|
|
||||||
\begin{itemize}
|
|
||||||
\item soit selon l'arbre des données
|
|
||||||
\item soit partir sur regarder l'impact de la taille de l'arbre etc.
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
\section{Données}
|
\section{Données}
|
||||||
\label{sec:data}
|
\label{sec:data}
|
||||||
% Présentation des données utilisées.
|
% Présentation des données utilisées.
|
||||||
|
|
@ -336,11 +325,39 @@ Intro
|
||||||
|
|
||||||
Application/Résultats: décrire les données, vite fait normalisation avec vrai aebre, on ne connait pas
|
Application/Résultats: décrire les données, vite fait normalisation avec vrai aebre, on ne connait pas
|
||||||
Discussion/COnclusion ? Interprétation des résultats sinon la mettre dans les
|
Discussion/COnclusion ? Interprétation des résultats sinon la mettre dans les
|
||||||
|
f-cicd: CI/CD to build Latex PDF ...
|
||||||
|
CI/CD to build Latex pdf and create a release in with GitHub Actions. The workflow triggers on push to the repository. Integrates with Overleaf.
|
||||||
% Bibliographie
|
% Bibliographie
|
||||||
\printbibliography
|
\printbibliography
|
||||||
\nocite{*}
|
\nocite{*}
|
||||||
|
|
||||||
% TODO Ici éventuellement une partie annexe discussion de l'impact des tailles d'abres
|
% TODO Ici éventuellement une partie annexe discussion de l'impact des tailles d'abres
|
||||||
|
\appendix
|
||||||
|
\section{Application aux données réelles}
|
||||||
|
|
||||||
|
Comme nous l'avons remarqué dans la section~\ref{sec:data} l'application de la
|
||||||
|
méthode EVEmodel a produit des valeurs manquantes pour les gènes présentés dans
|
||||||
|
le tableau suivant.
|
||||||
|
|
||||||
|
\begin{table}[H]
|
||||||
|
\centering
|
||||||
|
<<'table_nas'>>=
|
||||||
|
knitr::kable(evegenesNA, col.names = "Gènes ayant produits des NA",
|
||||||
|
align = "c", booktabs = TRUE, format = "latex", escape = TRUE)
|
||||||
|
@
|
||||||
|
\caption{Table des gènes pour lesquels la méthode \texttt{EVEmodel} a produit des NA}
|
||||||
|
\label{tab:na-evemodel}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
|
\section*{Code du projet}
|
||||||
|
|
||||||
|
Tout le code produit est disponible sur le dépôt GitHub suivant
|
||||||
|
\url{https://github.com/Polarolouis/anova-phylogenetique-projet-msv/}.
|
||||||
|
Ce dépôt contient le code pour implémenter la méthode, faire les
|
||||||
|
simulations et compiler le rapport.
|
||||||
|
|
||||||
|
|
||||||
|
Nous avons au maximum indiqué le code qui n'a pas été écrit par nous, la plupart
|
||||||
|
du temps dans les commentaires du code.
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
BIN
rapport.pdf
BIN
rapport.pdf
Binary file not shown.
Loading…
Add table
Reference in a new issue