\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage{fixltx2e}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{textcomp}
\usepackage{marvosym}
\usepackage{wasysym}
\usepackage{amssymb}
\usepackage{hyperref}
\usepackage{color}
\usepackage{caption} 
\usepackage{setspace}
\onehalfspacing
\tolerance=1000
\usepackage{geometry}
\geometry{margin=2cm}
\usepackage[font = small, labelfont = bf]{caption}
\bibliographystyle{plain}

\title{Prédiction d'interaction protéine-ligand}

\author{Nicolas Zimmermann}
\date{Octobre 2019}

\begin{document}

\maketitle
\thispagestyle{empty}
\newpage
\tableofcontents
\thispagestyle{empty}
\newpage

\section{Introduction}
Dans ce projet nous avons chercher à reproduire les résultats obtenu dans un article\cite{pu2019deepdrug3d} publié dans PLOS Computational biology en février 2019. L'objectif de cet article est la classification de poches protéiques selon leurs ligands potentiels par des réseaux de neurones. Les données d'entrée du réseaux sont des "images" en 3 dimensions, où chaque voxel (pixel 3d) est décrit par 14 état représentant des propriétés physico-chimiques. La taille des objets à classifier est donc importante (chaque fichier d'entrer pèse autour de 4Mo), ce qui pose des problèmes à résoudre pour obtenir un réseau fonctionnel en des temps de calcul raisonnable. Ces problèmes nous on menez à réaliser une structure de réseau différente de celle proposée dans l'article\cite{pu2019deepdrug3d}.

\section{Matériel et méthode}

\subsection{Données}
Les données sur lesquelles nous travaillons consistent en 4164 poches protéiques liés ou non à des ligands. Ces poches sont représentées par des images 3D de 32x32x32 voxels, et chacun de ces voxels est caractérisé par 14 descripteurs de l'activité physico-chimique en ce point de l'espace.
Afin de pouvoir effectuer un travail de classification sur ces poches, ces dernières sont encodées dans des ndarrays en onehot de dimension 14x32x32x32.
\begin{center}
    	\includegraphics[width=0.49\linewidth]{pdb_to_npy.jpg}
	\captionof{figure}{Représentation de la poche en "cartoon" et du ligand et stick puis la même poche encoder en image 3D de dimension 32x32x32} 
\end{center}

Les données ont été tirés au hasard pour constituer des sous-jeux d'apprentissage et de validation. Nous souhaitons avoir dans nos sous jeux des taux de chaque catégorie de poches identiques aux taux du jeu de donnée complet. Nous avons ensuite fixé une seed aléatoire à 9001 pour assurer la reproductibilité entre les différents modèles. Pour outrepasser le biais induis par l'utilisation d'un jeu partiel et d'une seed, nous avons tester la robustesse du modèle en réaliser un k-fold. 

\subsection{Réseaux}
Les librairies python Keras et sklearn ont été utilisé afin de créer et d'entraîner les réseaux de neurones qui ont effectué les tâches de classification.
Nous avons tenter de reproduire le réseaux présenté dans l'article mais ce dernier prenait des temps de calcul trop important. Deux autres version plus légère on été implémenter, permettant respectivement de calculer 2 fois plus vite et 6 fois plus vite. Cependant 
\begin{table}
	\begin{tabular}{|l|c|r|}
	  \hline
		modèle & sec par epoch & val accuracy \\
	  \hline
	  heavy & ~3600 & Nan \\
	  mild & ~1800 & 0.70 \\
	  light & ~600 & 0.62 \\
	  new & ~10 & 0.80 \\
	  \hline
	\end{tabular}
	\captionof{figure}{Temps de calcul en secondes par epoch de chaque modèle et précision des prédictions de validation après 20 epochs sur 600 échantillons. Les calculs ont été réalisé avec une accélération matérielle(GPU 1080ti) et la librairie CUDA}
\end{table}

Le dernier modèle nous permet d'entraîné des réseaux en des temps significativement plus court. De ce fait nous avons fait varier d'autre hyper paramètres tel le kernel size, le nombre de filtre des réseaux de convolution et la taille des échantillons d'entrainement afin d'améliorer les perfomances du modèle.

\section{Résultats}
Une fois les hyper-paramètres du modèle fixé, nous avons entrainé le modèle en 50 epochs sur 1800 poches et testé ce dernier sur 1200 poches.

Ces paramètres nous ont permis d'atteindre jusqu'à 94,5\% de bien préditsur les 1200 poches du jeu de validation. Cependant les performance évolue parfois d'une epoch à l'autre, mais les variations ont tendance à devenir plus faible avec l'augmentation des epochs.

Nous avons également tenter de classifier les poches lié à des stéroides. Les 69 poches ont été intégralement prédite comme des poches "control".


Parler des résultats des différents modèles et tracer des ROC curve.

\section{Discussion}
Eventuellement travailler sur plus de données d'apprentissage. Perspective d'étendre à d'autres molécules, parler de la possibilité de généraliser à d'autre molécules

\newpage
\bibliography{biblio}


\end{document}

