|
- ---
- title: "Graphes"
- author: "Maxime Wack"
- date: "17/11/2020"
- output:
- xaringan::moon_reader:
- css: ['default','css/my_style.css']
- lib_dir: libs
- seal: false
- nature:
- ratio: '4:3'
- countIncrementalSlides: false
- self-contained: true
- beforeInit: "addons/macros.js"
- highlightLines: true
- ---
-
- ```{r setup, include=FALSE}
- library(tidyverse)
- library(DT)
- library(knitr)
-
- opts_chunk$set(echo = TRUE,
- ## fig.asp= .5,
- message = F,
- warning = F)
-
- options(DT.options = list(paging = F,
- search = F,
- info = F))
-
- datatable <- partial(datatable, rownames = F)
- ```
-
- class: center, middle, title
-
- # UE Visualisation
-
- ### 2020-2021
-
- ## Dr. Maxime Wack
-
- ### AHU Informatique médicale
- #### Hôpital Européen Georges Pompidou, </br> Université de Paris
-
- ---
- # Graphe bipartite
-
- .pull-left[
- ### Graphe contenant deux sets de sommets **complèment déconnectés**
- ### Dit aussi 2-coloriable
- ]
-
- .pull-right[
- ![](06-img/bipartite.png)
- ]
-
- ---
- # Projection
-
- .pull-left[
- ### Méthode permettant de créer **deux** graphes
- ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
- ]
-
- .pull-right[
- ![](06-img/71.png)
- ]
-
- ---
- # Projection
-
- .pull-left[
- ### Méthode permettant de créer **deux** graphes
- ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
- ]
-
- .pull-right[
- ![](06-img/72.png)
- ]
-
- ---
- # Projection
-
- .pull-left[
- ### Méthode permettant de créer **deux** graphes
- ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
- ]
-
- .pull-right[
- ![](06-img/73.png)
- ]
-
- ---
- # Projection
-
- .pull-left[
- ### Méthode permettant de créer **deux** graphes
- ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
- ]
-
- .pull-right[
- ![](06-img/74.png)
- ]
-
- ---
- # Projection
-
- .pull-left[
- ### Méthode permettant de créer **deux** graphes
- ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
- ]
-
- .pull-right[
- ![](06-img/75.png)
- ]
-
- ---
- # Projection
-
- .pull-left[
- ### Méthode permettant de créer **deux** graphes
- ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
- ]
-
- .pull-right[
- ![](06-img/76.png)
- ]
-
- ---
- # Projection
-
- .pull-left[
- ### Méthode permettant de créer **deux** graphes
- ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
- ]
-
- .pull-right[
- ![](06-img/77.png)
- ]
-
- ---
- class:center
- # Projection
-
- .pull-right[
- ![](06-img/bipartite.png)
- ]
-
- ---
- class:center
- # Projection
-
- .pull-left[
- ![](06-img/numbered_.png)
- ]
-
- .pull-right[
- ![](06-img/bipartite.png)
- ]
-
- ---
- class:center
- # Projection
-
- .pull-c1[
- ![](06-img/numbered_.png)
- ]
-
- .pull-c2[
- ![:scale 75%](06-img/bipartite.png)
- ]
-
- --
- .pull-c3[
- ![:scale 65%](06-img/projection.png)
- ]
-
- ---
-
- # OMIM
-
- *Online Mendelian Inheritance in Men*
-
- Base de données d'associations connues gène ↔ phénotype
-
- https://omim.org
-
- https://maximewack.com/files/OMIM.csv
-
- ---
- class: center
- # The Human Disease Network
-
- https://www.ncbi.nlm.nih.gov/pubmed/17502601
-
- ![:scale 90%](06-img/HDN_principe.png)
-
- ---
- class: center
- # The Human Disease Network
-
- https://www.ncbi.nlm.nih.gov/pubmed/17502601
-
- ![:scale 90%](06-img/HDN.png)
-
- ---
- # Librairies
-
- ```{r libs}
- library(igraph)
- library(ggraph)
- library(tidyverse)
- ```
-
- ---
- class:center,middle
- # igraph
-
- ---
-
- # Créer des graphes
-
- ```{r create graph, eval = F}
- # Graphe sans arête
- graph.empty(n = 10, directed = T)
-
- # Graphe complètement connecté
- graph.full(n = 10, directed = F, loops = F)
-
- # Graphe en étoile
- graph.star(n = 10, mode = "out")
- ```
-
- ---
- # Chargement du graphe
-
-
- ```{r load}
- read_csv("lab06-data/OMIM.csv") -> OMIM
- ```
-
- ```{r load show, echo = F}
- OMIM %>%
- slice(70:80) %>%
- datatable
- ```
-
- ---
- # Chargement du graphe
-
- ```{r graph data frame}
- graph.data.frame(OMIM, directed = F) -> graphe
- ```
-
- ```{r graph data frame show, echo = F}
- graphe
- ```
- ---
- # Informations sur le graphe
-
- ### Sommets
-
- ```{r vcount}
- vcount(graphe)
- ```
- ### Arêtes
-
- ```{r ecount}
- ecount(graphe)
- ```
-
- ---
- # Informations sur le graphe
-
- ### Dirigé ?
-
- ```{r directed}
- is.directed(graphe)
- ```
-
- ### Voisins d'un sommet
-
- ```{r neighbors}
- neighbors(graphe, V(graphe)[2019])
- ```
-
- ---
- # Projection
-
- ```{r projection}
- # Établir les types (gène, phénotype)
- V(graphe)$type <- bipartite.mapping(graphe)$type
-
- # Créer les projections
- projs <- bipartite.projection(graphe)
-
- # Séparer les projections en deux graphes
- HDN <- projs$proj1
- HGN <- projs$proj2
- ```
- ---
-
- # HDN
-
- ```{r HDN}
- HDN
- ```
- ---
-
- # HGN
-
- ```{r HGN}
- HGN
- ```
- ---
-
- # Décomposition en sous-graphes
-
- ```{r decompos}
- HDN %>%
- decompose -> diseases
- ```
- ---
-
- # ggraph
-
- ```{r visu}
- graph_one <- function(graph)
- {
- ggraph(graph) +
- geom_edge_diagonal() +
- geom_node_label(aes(label = name))
- }
- ```
-
- ---
-
- # Filtrer sous-graphes < 10 sommets
-
- ```{r sous-graphes par sommets}
- diseases %>%
- keep(map_dbl(diseases, vcount) >= 10) %>%
- map(graph_one) -> plots
- ```
- ---
-
- # Malformations cardiaques
-
- ```{r cardiaques}
- plots[[5]]
- ```
- ---
- # Surdités
-
- ```{r surdités}
- plots[[9]]
- ```
- ---
- # Ostéogénèses imparfaites
-
- ```{r Ostéogénèses}
- plots[[12]]
- ```
- ---
-
- # Export
-
- ```{r export, eval = F}
- write.graph(HDN, file = "diseases.graphml", format = "graphml")
- write.graph(HGN, file = "genes.graphml", format = "graphml")
- ```
|