選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

373 行
5.3KB

  1. ---
  2. title: "Graphes"
  3. author: "Maxime Wack"
  4. date: "17/11/2020"
  5. output:
  6. xaringan::moon_reader:
  7. css: ['default','css/my_style.css']
  8. lib_dir: libs
  9. seal: false
  10. nature:
  11. ratio: '4:3'
  12. countIncrementalSlides: false
  13. self-contained: true
  14. beforeInit: "addons/macros.js"
  15. highlightLines: true
  16. ---
  17. ```{r setup, include=FALSE}
  18. library(tidyverse)
  19. library(DT)
  20. library(knitr)
  21. opts_chunk$set(echo = TRUE,
  22. ## fig.asp= .5,
  23. message = F,
  24. warning = F)
  25. options(DT.options = list(paging = F,
  26. search = F,
  27. info = F))
  28. datatable <- partial(datatable, rownames = F)
  29. ```
  30. class: center, middle, title
  31. # UE Visualisation
  32. ### 2020-2021
  33. ## Dr. Maxime Wack
  34. ### AHU Informatique médicale
  35. #### Hôpital Européen Georges Pompidou, </br> Université de Paris
  36. ---
  37. # Graphe bipartite
  38. .pull-left[
  39. ### Graphe contenant deux sets de sommets **complèment déconnectés**
  40. ### Dit aussi 2-coloriable
  41. ]
  42. .pull-right[
  43. ![](06-img/bipartite.png)
  44. ]
  45. ---
  46. # Projection
  47. .pull-left[
  48. ### Méthode permettant de créer **deux** graphes
  49. ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
  50. ]
  51. .pull-right[
  52. ![](06-img/71.png)
  53. ]
  54. ---
  55. # Projection
  56. .pull-left[
  57. ### Méthode permettant de créer **deux** graphes
  58. ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
  59. ]
  60. .pull-right[
  61. ![](06-img/72.png)
  62. ]
  63. ---
  64. # Projection
  65. .pull-left[
  66. ### Méthode permettant de créer **deux** graphes
  67. ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
  68. ]
  69. .pull-right[
  70. ![](06-img/73.png)
  71. ]
  72. ---
  73. # Projection
  74. .pull-left[
  75. ### Méthode permettant de créer **deux** graphes
  76. ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
  77. ]
  78. .pull-right[
  79. ![](06-img/74.png)
  80. ]
  81. ---
  82. # Projection
  83. .pull-left[
  84. ### Méthode permettant de créer **deux** graphes
  85. ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
  86. ]
  87. .pull-right[
  88. ![](06-img/75.png)
  89. ]
  90. ---
  91. # Projection
  92. .pull-left[
  93. ### Méthode permettant de créer **deux** graphes
  94. ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
  95. ]
  96. .pull-right[
  97. ![](06-img/76.png)
  98. ]
  99. ---
  100. # Projection
  101. .pull-left[
  102. ### Méthode permettant de créer **deux** graphes
  103. ### Les sommets d'une partie sont connectés s'ils partagent un sommet d'une autre partie
  104. ]
  105. .pull-right[
  106. ![](06-img/77.png)
  107. ]
  108. ---
  109. class:center
  110. # Projection
  111. .pull-right[
  112. ![](06-img/bipartite.png)
  113. ]
  114. ---
  115. class:center
  116. # Projection
  117. .pull-left[
  118. ![](06-img/numbered_.png)
  119. ]
  120. .pull-right[
  121. ![](06-img/bipartite.png)
  122. ]
  123. ---
  124. class:center
  125. # Projection
  126. .pull-c1[
  127. ![](06-img/numbered_.png)
  128. ]
  129. .pull-c2[
  130. ![:scale 75%](06-img/bipartite.png)
  131. ]
  132. --
  133. .pull-c3[
  134. ![:scale 65%](06-img/projection.png)
  135. ]
  136. ---
  137. # OMIM
  138. *Online Mendelian Inheritance in Men*
  139. Base de données d'associations connues gène ↔ phénotype
  140. https://omim.org
  141. https://maximewack.com/files/OMIM.csv
  142. ---
  143. class: center
  144. # The Human Disease Network
  145. https://www.ncbi.nlm.nih.gov/pubmed/17502601
  146. ![:scale 90%](06-img/HDN_principe.png)
  147. ---
  148. class: center
  149. # The Human Disease Network
  150. https://www.ncbi.nlm.nih.gov/pubmed/17502601
  151. ![:scale 90%](06-img/HDN.png)
  152. ---
  153. # Librairies
  154. ```{r libs}
  155. library(igraph)
  156. library(ggraph)
  157. library(tidyverse)
  158. ```
  159. ---
  160. class:center,middle
  161. # igraph
  162. ---
  163. # Créer des graphes
  164. ```{r create graph, eval = F}
  165. # Graphe sans arête
  166. graph.empty(n = 10, directed = T)
  167. # Graphe complètement connecté
  168. graph.full(n = 10, directed = F, loops = F)
  169. # Graphe en étoile
  170. graph.star(n = 10, mode = "out")
  171. ```
  172. ---
  173. # Chargement du graphe
  174. ```{r load}
  175. read_csv("lab06-data/OMIM.csv") -> OMIM
  176. ```
  177. ```{r load show, echo = F}
  178. OMIM %>%
  179. slice(70:80) %>%
  180. datatable
  181. ```
  182. ---
  183. # Chargement du graphe
  184. ```{r graph data frame}
  185. graph.data.frame(OMIM, directed = F) -> graphe
  186. ```
  187. ```{r graph data frame show, echo = F}
  188. graphe
  189. ```
  190. ---
  191. # Informations sur le graphe
  192. ### Sommets
  193. ```{r vcount}
  194. vcount(graphe)
  195. ```
  196. ### Arêtes
  197. ```{r ecount}
  198. ecount(graphe)
  199. ```
  200. ---
  201. # Informations sur le graphe
  202. ### Dirigé ?
  203. ```{r directed}
  204. is.directed(graphe)
  205. ```
  206. ### Voisins d'un sommet
  207. ```{r neighbors}
  208. neighbors(graphe, V(graphe)[2019])
  209. ```
  210. ---
  211. # Projection
  212. ```{r projection}
  213. # Établir les types (gène, phénotype)
  214. V(graphe)$type <- bipartite.mapping(graphe)$type
  215. # Créer les projections
  216. projs <- bipartite.projection(graphe)
  217. # Séparer les projections en deux graphes
  218. HDN <- projs$proj1
  219. HGN <- projs$proj2
  220. ```
  221. ---
  222. # HDN
  223. ```{r HDN}
  224. HDN
  225. ```
  226. ---
  227. # HGN
  228. ```{r HGN}
  229. HGN
  230. ```
  231. ---
  232. # Décomposition en sous-graphes
  233. ```{r decompos}
  234. HDN %>%
  235. decompose -> diseases
  236. ```
  237. ---
  238. # ggraph
  239. ```{r visu}
  240. graph_one <- function(graph)
  241. {
  242. ggraph(graph) +
  243. geom_edge_diagonal() +
  244. geom_node_label(aes(label = name))
  245. }
  246. ```
  247. ---
  248. # Filtrer sous-graphes < 10 sommets
  249. ```{r sous-graphes par sommets}
  250. diseases %>%
  251. keep(map_dbl(diseases, vcount) >= 10) %>%
  252. map(graph_one) -> plots
  253. ```
  254. ---
  255. # Malformations cardiaques
  256. ```{r cardiaques}
  257. plots[[5]]
  258. ```
  259. ---
  260. # Surdités
  261. ```{r surdités}
  262. plots[[9]]
  263. ```
  264. ---
  265. # Ostéogénèses imparfaites
  266. ```{r Ostéogénèses}
  267. plots[[12]]
  268. ```
  269. ---
  270. # Export
  271. ```{r export, eval = F}
  272. write.graph(HDN, file = "diseases.graphml", format = "graphml")
  273. write.graph(HGN, file = "genes.graphml", format = "graphml")
  274. ```