TP n°6 : Visualisation de données§
Dans ce TP, nous allons enrichir l'application commencée au TP n°4 : Une application Flask plus intéressante avec des représentations graphiques des données présentées.
Dans ce TP, nous allons enrichir l'application commencée au TP n°4 : Une application Flask plus intéressante avec des représentations graphiques des données présentées.
Dans l'environnement virtuel du TP4, installez matplotlib
avec la commande :
pip install matplotlib
/genes/<id>/parts.png
,
produisant une image PNG d'un histogramme horizontal.
Il doit représenter ,
pour chaque partie d'organisme concernée par le gène,
combien de transcrits de ce gène sont y sont liés./genes/<id>
,
dans une balise <img>
pointant vers la vue que vous venez de créer.Créez une vue /genes/<id>/transcripts.svg
,
produisant une image SVG représentant les transcrits du gène.
Plus précisément,
chaque transcrit sera représenté par une barre horizontale,
dont la position et la longueur reflètent la position du transcrit
(start et end) à l'intérieur du gène.
Sur la barre de chaque transcrit apparaîtra également son identifiant.
Pour cela, on vous conseille d'écrire d'abord une fonction Python, qui calculera les informations nécessaires à l'affichage :
Vous passerez ensuite ces informations à un template Jinja2, qui se chargera de la mise en forme SVG.
Insérez ensuite cette image SVG dans la vue /genes/<id>
,
en intégrant le SVG directement dans le HTML (sans balise <img>
).
Pour cela, il pourra être nécessaire d'utiliser la syntaxe Jinja2 :
{{code_svg|safe}}
L'option safe
demande à Jinja2 de ne pas "échapper"
les balises présentes dans code_svg
.
Important
N'utilisez jamais l'option safe
avec des données
qui proviennent de l'extérieur (e.g. saisies par l'utilisateur).
À l'aide de CSS, faites en sorte que les identifiants de transcrits, dans le diagramme SVG, ne s'affichent que pour le transcrit survolé par le pointeur de la souris. Vous pourrez pour cela utiliser
:hover
(documentation),opacity
.