You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/assemblage.md
+9-9Lines changed: 9 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -44,21 +44,21 @@ Si nous représentons chaque k-mer par un nœud, alors deux nœuds consécutifs
44
44
Par exemple le k-mer T**GC** précède le k-mer **GC**C car le suffixe du premier (-GC) correspond au préfixe du second (GC-). Cette relation se représente avec deux nœuds et une flèche :
<divclass="legend"> Graphe représentant chaque k-mer par un nœud. Saurez-vous trouver le chemin passant par tous les nœuds une seule fois ?</div>
56
56
</div>
57
57
58
58
Pour reconstruire la séquence d'origine, il suffit de trouver un chemin passant par tous les nœuds une fois et une seule. On appelle ce chemin [un parcours Hamiltonien](https://fr.wikipedia.org/wiki/Graphe_hamiltonien). Essayez de le trouver par vous même avant de regarder l'animation ci-dessous :
<divclass="legend"> Parcours Hamiltonien dans le graphe. Chaque nœud est traversé une fois et une seule</div>
63
63
</div>
64
64
@@ -69,29 +69,29 @@ Il nous faut une meilleure méthode…
69
69
Nous allons cette fois construire un graphe en représentant les k-mers par des flèches. Les nœuds contiendront le préfixe et le suffixe du k-mer. Par exemple si une flèches représente le k-mer **TGC** alors les deux nœuds autour de la flèche sont **TG** et **GC**.
70
70
71
71
<divclass="figure">
72
-
<imgsrc="../images/assemblage/euler_node.png" />
72
+
<imgsrc="images/assemblage/euler_node.png" />
73
73
<divclass="legend"> Représentation d'un k-mer par une flèches. Les nœuds contiennent les suffixes et préfixes des k-mers</div>
<divclass="legend"> Graphe représentant chaque k-mer par une flèches. Les nœuds sont les préfixes/suffixes. Certain nœuds en couleur sont présent plusieurs fois et peuvent être fusionnés</div>
81
81
</div>
82
82
83
83
Cette fois, au lieu de chercher un chemin passant par **tous les nœuds** une seule fois, nous allons chercher un chemin passant par **toutes les flèches** une fois et une seule. En le recherchant, vous verrez tout de suite qu'un tel parcours n'existe pas dans ce dernier graphe. Par exemple, on ne peut pas traverser tous les chemins **AT**->**TG** sans être bloqué.
84
84
Pour remédier à ce problème, nous allons fusionner tous les nœuds identiques. Visualisez par exemple les 3 nœuds violets <bstyle="color:#5C3566;">AT</b> et imaginez-les se rapprocher pour former un seul nœud sans jamais toucher aux flèches. Vous obtenez alors un unique nœud **AT** relié par 3 flèches au nœud **TG**. Faites la même chose pour les autres nœuds identiques et vous obtiendrez le fameux [graphe de de Bruijn](https://fr.wikipedia.org/wiki/Graphe_de_de_Bruijn).
Vous pouvez maintenant chercher le chemin passant par toutes les flèches une fois et une seule. C'est ce qu'on appelle un parcours [Eulérien](https://fr.wikipedia.org/wiki/Graphe_eul%C3%A9rien). Essayer de le trouver par vous même, ce n'est pas très difficile.
92
92
93
93
<divclass="figure">
94
-
<imgsrc="../images/assemblage/euler_path.gif" />
94
+
<imgsrc="images/assemblage/euler_path.gif" />
95
95
<divclass="legend"> Parcours Eulérien dans un graphe de de Bruijn </div>
96
96
</div>
97
97
@@ -103,7 +103,7 @@ Voyons maintenant la théorie mathématique derrière ce parcours que l'on doit
103
103
En 1873, un mathématicien du nom de Leonhard Euler s'est posé la question de savoir si il existait une promenade dans la ville de Königsberg passant par tous les ponts une fois et une seule. C'est [le problème des 7 ponts de Königsberg](https://fr.wikipedia.org/wiki/Probl%C3%A8me_des_sept_ponts_de_K%C3%B6nigsberg) qui peut être modélisé sous la forme d'un graphe :
<divclass="legend"> Gauche : Pont de Königsberg Droite : représentation des ponts par un graphe. Les chiffres indiquent le nombres d'arêtes relié au nœud. Existe-t-il un chemin passant par tous les ponts ?</div>
108
108
</div>
109
109
@@ -114,7 +114,7 @@ Dans un graphe orienté comme le notre, c'est à dire lorsque les arrêtes sont
114
114
Pour que les conditions du théorème de Euler s'appliquent à notre graphe de de Bruijn, nous devons tricher en ajoutant une flèche entre le dernier nœud **TA** et le premier nœud **GT** et former ainsi un cycle. Vous constaterez alors, que pour chaque nœud, il y a autant de flèches d'entrée que de flèches de sortie. Nous pouvons alors conclure, sans même le connaître, qu'un chemin Eulérien existe.
115
115
116
116
<divclass="figure">
117
-
<imgsrc="../images/assemblage/euler_cycle.png"/>
117
+
<imgsrc="images/assemblage/euler_cycle.png"/>
118
118
<divclass="legend"> Graphe de de Bruijn modifié pour pouvoir avoir un cycle de Euler. En rouge le nombre de flèches à l'entré d'un nœud, en vert le nombre de flèches à la sortie d'un nœud. Le [degré](https://fr.wikipedia.org/wiki/Degr%C3%A9_(th%C3%A9orie_des_graphes)) d'entré et de sortie pour chaque nœud sont identique. D'après le théorème, il existe donc un chemin Eulérien passant par toutes les flèches une fois et une seule</div>
Copy file name to clipboardExpand all lines: content/binary_file.md
+9-9Lines changed: 9 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ Date: 2015-04-06 16:25:55
4
4
Tags: ab1,fsa,sanger
5
5
Category: biologie, bioinformatique,Qt
6
6
Author: Sacha Schutz
7
-
SIDEBARIMAGE:../images/post8/cover.jpg
7
+
SIDEBARIMAGE:images/post8/cover.jpg
8
8
Status:draft
9
9
10
10
@@ -19,7 +19,7 @@ Lorsque que vous ouvrez un fichier binaire, comme une image png, avec votre edit
19
19
20
20
21
21
<palign="center">
22
-
<img src="../images/raw_data.jpg">
22
+
<img src="images/raw_data.jpg">
23
23
</p>
24
24
25
25
@@ -34,7 +34,7 @@ Essayons maintenant avec un caractère en considérant qu'il y a 256 caractères
34
34
35
35
36
36
<palign="center">
37
-
<img src="../images/1octet.png">
37
+
<img src="images/1octet.png">
38
38
</p>
39
39
40
40
### L'octet ou le byte
@@ -45,19 +45,19 @@ L'octet peut être écris sous sa représentation binaire en utisant les symbole
45
45
46
46
47
47
<palign="center">
48
-
<img src="../images/4octet.png">
48
+
<img src="images/4octet.png">
49
49
</p>
50
50
51
51
### Le boutisme ou byte order
52
52
Le boutisme indique le sens de lecture d'un type de donnée. En fonction de l'architecture de l'ordinateur, de type de fichier binaire, les informations peuvent être lu de droite à gauche ou inversement. Imaginez que vous lisez une page d'un livre. Chaques mot représente un type de donné de taille différente. On appelle grand-boutiste (big-endian) lorsque le mot est lu normalement de gauche à droite. Par exemple si nous voulions encoder le mot Leo et l'entier 42, l'organisation des octets seraient le suivant:
53
53
<palign="center">
54
-
<img src="../images/bigendian.png">
54
+
<img src="images/bigendian.png">
55
55
</p>
56
56
57
57
A l'inverse, on appelle petit-boutiste (little-endian) lorsque les mots sont lu de droite à gauche. On voit bien dans l'exemple ci dessous, que pour récupéré l'information 42, il est nécessaire de lire l'entier de droite à gauche. Notez également que la notion de byte order n'a de sens que pour les types de donné codé sur plus de 1 octet. Un mot d'une lettre se lit pareil des deux sens, de même qu'avec un type d'un octet comme le char.
58
58
59
59
<palign="center">
60
-
<img src="../images/littleendian.png">
60
+
<img src="images/littleendian.png">
61
61
</p>
62
62
63
63
@@ -67,7 +67,7 @@ Ci dessous un tableau montrant les principaux types utilisés en C++ avec leurs
67
67
Si vous êtes curieux, je vous invite à regarder comment un nombre à virgule (float) est stocké sur 32 bit en suivant la norme ISO IEEE754.
68
68
69
69
<palign="center">
70
-
<img src="../images/typecpp.png">
70
+
<img src="images/typecpp.png">
71
71
</p>
72
72
73
73
@@ -86,7 +86,7 @@ Pour ma part j'utilise le module hexviewer de sublime text. Mais il existe un pl
86
86
87
87
88
88
<palign="center">
89
-
<img src="../images/hexviewer.png">
89
+
<img src="images/hexviewer.png">
90
90
</p>
91
91
92
92
@@ -97,7 +97,7 @@ Avant de se jeter dans les entrailles de notre fichier ABIF, il nous faut le doc
97
97
En résumé, les fichier abif sont composé de 3 blocks **HEADER** , **DIRECTORIES** et **DATA** contenant des données binaires avec un sens de lecture de type gros-boutiste.
Copy file name to clipboardExpand all lines: content/biowasm.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ Modified: 2024-09-22 19:30:31
5
5
Tags: web
6
6
Category: informatique
7
7
Author: Sacha schutz
8
-
SIDEBARIMAGE:../images/common/term_banner.jpeg
8
+
SIDEBARIMAGE:images/common/term_banner.jpeg
9
9
10
10
11
11
Récemment, une collègue m'a fait découvrir [Biowasm](https://biowasm.com/). C'est une collection d'outils bioinformatiques bien connus, compilés en [WebAssembly](https://fr.wikipedia.org/wiki/WebAssembly). Concrètement, cela signifie que nous pouvons créer des interfaces graphiques pour nos collègues non-spécialistes en bioinformatique, directement sur une simple page web statique, sans avoir besoin de serveur. Et Justement, un biologiste m'a demandé s'il était possible de générer un fichier [FASTQ](https://fr.wikipedia.org/wiki/FASTQ) réduit, autrement dit de faire un échantillonnage aléatoire (downsampling). C'était donc une excellente occasion de tester Biowasm en construisant une page web qui fait le travail.
Copy file name to clipboardExpand all lines: content/covid_ngs.md
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ Modified: 2021-01-25 23:51:29
5
5
Tags: virus,pipeline,sars-cov-2,covid
6
6
Category: bioinformatique
7
7
Author: Sacha SCHUTZ
8
-
SIDEBARIMAGE:../images/common/virus_banner.jpeg
8
+
SIDEBARIMAGE:images/common/virus_banner.jpeg
9
9
10
10
11
11
La [pandémie mondiale de Covid-19](https://fr.wikipedia.org/wiki/Pand%C3%A9mie_de_Covid-19) a créé un élan sans précédent dans la production scientifique de données. Notamment, les données sur les génomes du virus produites par [séquençage haut débit](https://fr.wikipedia.org/wiki/S%C3%A9quen%C3%A7age_de_l%27ADN#S%C3%A9quen%C3%A7age_haut_d%C3%A9bit_(HTS)) qui permettent aujourd'hui d'identifier de nouvelles mutations comme la [N501Y](https://fr.wikipedia.org/wiki/Variant_501.V2#Mutations) du variant anglais [B.1.1.7](https://fr.wikipedia.org/wiki/VOC-202012/01) où une [Asparagine](https://fr.wikipedia.org/wiki/Asparagine) (N) est remplacée par une [Tyrosine](https://fr.wikipedia.org/wiki/Tyrosine) (Y) à la position 501 de la [protéine S](https://fr.wikipedia.org/wiki/P%C3%A9plom%C3%A8re).
@@ -87,7 +87,7 @@ Faisant d'une pierre deux coups, je trie le fichier par position, le convertit a
87
87
Pour visualiser cet alignement, vous pouvez utiliser le logiciel **IGV** disponible à [cette adresse](http://software.broadinstitute.org/software/igv/). Une fois lancé, chargez d'abord le génome de Wuhan depuis le menu *Genomes > Load Genome From Server* en cherchant SARS-Cov-2. Puis chargez le fichier *SRR13182925.bam* précédemment créé via *File > Load From File*.
88
88
Vous obtiendrez ainsi la vue suivante où j'ai zoomé sur le gène S pour visualiser une mutation.
89
89
90
-
<divclass="figure"> <imgsrc="../images/covid_ngs/IGV.png" /> <divclass="legend"> Visualisation des reads alignés sur le génome de référence avec le logiciel IGV. La flèche montre une mutation située sur le gène S visible sur l'ensemble des reads </div> </div>
90
+
<divclass="figure"> <imgsrc="images/covid_ngs/IGV.png" /> <divclass="legend"> Visualisation des reads alignés sur le génome de référence avec le logiciel IGV. La flèche montre une mutation située sur le gène S visible sur l'ensemble des reads </div> </div>
91
91
92
92
### Appel des variants et annotation
93
93
Vous pourriez parcourir l'alignement visuellement et chercher toutes les mutations. Mais il est préférable de procéder de façon automatique grâce à un [variant caller](https://www.researchgate.net/figure/Commonly-used-NGS-variant-calling-software-Download-information-for-these-software-is_tbl1_232077026). Pour cela j'utilise [freebayes](https://github.com/freebayes/freebayes), qui à partir du fichier BAM, crée un [fichier VCF](https://en.wikipedia.org/wiki/Variant_Call_Format) contenant l'ensemble des variants détectés. Avec [SnpSift](https://pcingola.github.io/SnpEff/), on garde uniquement les variants de bonne qualité avec un score superieur à 30 et on compresse avec [bgzip](http://www.htslib.org/doc/bgzip.html) le fichier pour pouvoir l'indexer avec [tabix](http://www.htslib.org/doc/tabix.html):
@@ -146,7 +146,7 @@ Puis j'ai réalisé un pipeline avec [Snakemake](https://snakemake.readthedocs.i
146
146
Après quelques heures de calcul, j'ai finalement obtenu ce fichier VCF qui m'a permis d'analyser la fréquence des variants le long du génome que j'ai reporté dans le graphique suivant.
147
147
Au total, j'ai trouvé environ 630 variants répartis le long du génome dont 4 mutations particulièrement fréquentes.
148
148
149
-
<divclass="figure"> <imgsrc="../images/covid_ngs/lollipop.png" /> <divclass="legend"> Repartition des variants trouvés parmi les 245 génomes avec leurs fréquences </div> </div>
149
+
<divclass="figure"> <imgsrc="images/covid_ngs/lollipop.png" /> <divclass="legend"> Repartition des variants trouvés parmi les 245 génomes avec leurs fréquences </div> </div>
150
150
151
151
Ces 4 mutations sont probablement la conséquence d'un processus de sélection.
152
152
En googlant, je trouve [ce papier](https://www.biorxiv.org/content/10.1101/2020.05.12.092056v1) présentant les mutations Thr265Ile and Gln57His comme exclusif à la population Nord-Américaines. Ce qui colle bien avec l'origine de nos données.
@@ -157,7 +157,7 @@ Plus intéressant, est le variant Asp614Gly situé sur le gène (S) de la [prot
157
157
158
158
J'ai également reconstruit chaque génome que j'ai assigné à sa ligné avec l'outil [pangolin](https://github.com/cov-lineages/pangolin). J'obtient la distribution suivant:
159
159
160
-
<divclass="figure"> <imgsrc="../images/covid_ngs/lineage.png" /> <divclass="legend"> Distribution des lignées de virus </div> </div>
160
+
<divclass="figure"> <imgsrc="images/covid_ngs/lineage.png" /> <divclass="legend"> Distribution des lignées de virus </div> </div>
161
161
162
162
Nous pouvons voir ici la présence de ligné [B.1.2](https://cov-lineages.org/lineages/lineage_B.1.2.html) en grand nombre. D'après [le site cov-lineages](https://cov-lineages.org/), elle est exclusivement Nord-américaine est descend de la ligné [B.1](https://cov-lineages.org/lineages/lineage_B.1.html) apparu précocement et que l'on trouve partout dans le monde.
163
163
Quand à la ligné [B.1.369](https://cov-lineages.org/lineages/lineage_B.1.369.html), elle a d'abord été vu en Océanie puis aux Etats-Unis à partir de Juin 2020.
Copy file name to clipboardExpand all lines: content/distribution-ki2.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ Une distribution aléatoire, c'est juste une liste de nombres obtenus par une lo
20
20
21
21
Si vous comptez la fréquence de chaque chiffre, c'est à dire combien de fois il y a de 2, de 3 etc ... Vous obtiendrez approximativement 1/6 qui correspond à la probabilité du dé pour chaque chiffre. Cette distribution suit une [loi de probabilité](https://fr.wikipedia.org/wiki/Loi_de_probabilit%C3%A9) dite "[uniforme](https://fr.wikipedia.org/wiki/Loi_uniforme_discr%C3%A8te)". Graphiquement, ça ressemble à ça :
22
22
23
-
<divclass="figure"> <imgsrc="../images/distribution-ki2/uniform.png" /> <divclass="legend"> Distribution uniforme. L'axe des abscisses représente le chiffre et l'axe des ordonnées le nombre de fois que ce chiffre est obtenu </div> </div>
23
+
<divclass="figure"> <imgsrc="images/distribution-ki2/uniform.png" /> <divclass="legend"> Distribution uniforme. L'axe des abscisses représente le chiffre et l'axe des ordonnées le nombre de fois que ce chiffre est obtenu </div> </div>
24
24
25
25
26
26
### La distribution normale
@@ -34,7 +34,7 @@ Par exemple, pour générer une distribution de 10000 valeurs avec une espéranc
<divclass="figure"> <imgsrc="../images/distribution-ki2/normal.png" /> <divclass="legend"> Distribution normale. La majorité des valeurs tourne autour de 0</div> </div>
37
+
<divclass="figure"> <imgsrc="images/distribution-ki2/normal.png" /> <divclass="legend"> Distribution normale. La majorité des valeurs tourne autour de 0</div> </div>
38
38
39
39
### La distribution de χ2
40
40
La distribution de χ2 est obtenu en sommant les carrés de k nombres indépendants choisis au hasard dans une distribution normale d'espérance 0 et de variance 1.
@@ -67,7 +67,7 @@ En testant avec différents degrés de liberté :
67
67
for ddl in range(1,10):
68
68
sns.distplot(dist_ki2(ddl, 1000))
69
69
70
-
<divclass="figure"> <imgsrc="../images/distribution-ki2/ki2_anim.gif" /> <divclass="legend"> Différente distribution de ki2 </div> </div>
70
+
<divclass="figure"> <imgsrc="images/distribution-ki2/ki2_anim.gif" /> <divclass="legend"> Différente distribution de ki2 </div> </div>
71
71
72
72
Essayer pour voir avec un degré de liberté > 100. Vous constaterez qu'on se retrouve avec une distribution d'allure normale d'espérance k et de variance 2k.
0 commit comments