Documentation Technique MR-biosoft Annotation Platform
Introduction
Le projet repose sur deux installations principalement: PostgreSQL et Python. Le site a été conçu en utilisant django, un framework pour le développement web écrit en langage Python. Toute la partie front-end du projet a été conçue dès zéro, en définissant les styles CSS sans s’appuyer sur des frameworks tels que bootstrap. Le système de gestion de bases de données relationnelles choisi est PostgreSQL.
Toutes les explications et instructions trouvées dans ce document
partent de l’hypothèse que Python3.8+
et psql (PostgreSQL) 12.7+
sont
installés dans votre système. Si vous n’avez pas PostgreSQL, je vous
recommande de suivre
cette guide.
Python est installé par défaut en la plupart
de distributions GNU/Linux. Tout le développement de l’application a été fait
en Ubuntu et Pop!_OS, toutes les deux basées sur Debian. Aucune garantie n’est
donnée pour d’autres distributions.
Gestion des Dépendances
- Poetry for Python dependencies management.
- PostgreSQL for database management.
La gestion des dépendances du projet a été faite grâce à Poetry, un gestionnaire
de paquets pour Python qui offre l’avantage d’être \(100\%\) reproductible,
contrairement à d’autres plateformes de gestion d’environnements très populaires
telles que conda. Le manque de reproductibilité de conda vient du fait que son
channel principal n’est pas un miroir de l’index de paquets python (PyPI).
Pour installer différents paquets, plusieurs channels doivent être ajoutés.
Parfois on ne trouve pas le paquet et on finit par l’installer directement via pip
.
Or, les paquets installés via pip
ne seront pas suivis par conda. Si l’on essaie
de partager un fichier env.yml
produit par conda, on n’a aucune garantie que tous
les paquets seront inclus dans le fichier.
Par contre, poetry a un dependency-solver très robuste qui permet de trouver
des possibles conflits de dépendances lors de l’ajout via la commande poetry add <dependency>
.
En étant stricte et informant l’utilisateur des conflits lors de l’ajout, en suggérant
comment les résoudre (si possible), poetry garantit la
Par défaut, poetry installe les paquets depuis le PyPI, ce qui veut dire qu’il peut
trouver tout paquet de l’index officiel de python.
Pour installer poetry et configurer les variables d’environnement nécessaires afin de lancer le serveur, il est recommandé de suivre le guide README du projet.
Un script pour faciliter la configuration se trouve dans le livrable (pas dans le repo car l’inclure dans un répertoire publique représenterait une grande vulnerabilité).
Une fois que script bootstrap_installation.bash
exécuté, une nouvelle
session bash
doit être démarrée afin d’avoir accès à la commande poetry.
À l’intérieur du répertoire où se trouvent pyproject.toml
et poetry.lock
,
exécuter poetry install
pour installer toutes les dépendances du projet.
Puis, exécuter poetry shell
pour activer l’environnement virtuel et lancer
l’application.
Organisation du code serveur
─ poetry.lock
─ pyproject.toml
─ prokaryote
─ annotation # Application principale
─ bootstrap_installation.bash # script d'aide à l'installation
─ createdb.bash # idem mais pour la création des tables de la base de données
─ dbsetup # Application django pour gestion de la base de données
─ debug.py # Script pour analyser la sortie des error-logs
─ gene_importation_error_log.jsonl # logs d'erreur liés à problèmes de parsing
─ home # Application qui gère la page d'accueil
─ manage.py # Couteau Suisse de django.
─ prokaryote # app. de base qui fait le lien entre toutes les autres
─ runall.bash # Script qui permet d'effacer et recréer la base et importer
# toutes les données
─ static # répertoire contenant le css de tout le site
─ upload # Application pour importer des nouvelles séquences