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(tree, show.tip.label = FALSE)
|
||||
tiplabels(bg = groups, pch = 21)
|
||||
text(x = 10, y = 0, label = "This tree will be normalised.")
|
||||
}
|
||||
|
||||
# Saving trees
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ tree <- read.tree(here("R","chen2019.tree"))
|
|||
taille_tree <- diag(vcv(tree))[1]
|
||||
tree$edge.length <- tree$edge.length / taille_tree
|
||||
|
||||
plotTree(tree, ftype="i", node.numbers=TRUE)
|
||||
plotTree(tree, ftype="i", node.numbers = TRUE)
|
||||
|
||||
# Mus et Rat vs le reste
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
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}
|
||||
|
||||
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}
|
||||
\graphicspath{{img/}}
|
||||
\usepackage{float}
|
||||
\usepackage{subcaption} % for subfigures environments
|
||||
|
||||
% Booktabs
|
||||
\usepackage{booktabs}
|
||||
|
|
@ -296,21 +297,9 @@ puis sur arbre avec petites branches ?
|
|||
\subsection{Simulations}
|
||||
% 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'>>=
|
||||
@
|
||||
|
||||
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}
|
||||
\label{sec:data}
|
||||
% 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
|
||||
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
|
||||
\printbibliography
|
||||
\nocite{*}
|
||||
|
||||
% 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}
|
||||
BIN
rapport.pdf
BIN
rapport.pdf
Binary file not shown.
Loading…
Add table
Reference in a new issue