Thomas Denecker & Claire Toffano-Nioche
Session 8
05/07/2019
Novembre
Janvier
Février
Mars
Avril
Mai
Juin
Juillet
26
25
22
29
26
24
21
5
Achever un projet reproductible
Exposer son projet
  - Une vitrine sur web : Github pages
  - Ajouter une licence
  - Versionner son projet : Release
  - Obtenir un DOI : Zenodo
Â
Et maintenant ?
  - Encore plus loin dans la reproductibilité
  - Limites de notre solution
  - Une vitrine sur web
  - Ajouter une licence
  - Créer une release
  - Obtenir un DOI pour le projet
Pourquoi ?
Votre projet est plus simple à partager et à trouver
Â
Avantages
- Mise en ligne + hébergement de site statique gratuitementÂ
- Capable de convertir du Markdown en site web
Â
Documentation : https://pages.github.com/
Dans la partie Settings > Options > Github pages
Â
Â
Dans la partie Settings > Options > Github pages
Â
1- Choisir la source
Â
Ici le README est dans master
Â
Â
Â
2- Choisir le thème
Â
Conversion de votre Markdown en HTML !
# Welcome !
**Bienvenue à FAIR_bioinfo**
Vous trouverez ici des communications réalisées lors des sessions FAIR_bioinfo. Les communications sont en français. Tout le contenu présenté existe déjà en anglais sur internet. Nous proposons donc ici des ressources pour les francophones.
*You will find here some communications made during the I2BC Bioinformatics Club. Communications will be mainly in French. All the content presented also exists in English on the Internet. Therefore, we propose here resources for Francophones.*
**Informations pratiques**
- Quand ? : le dernier vendredi après midi de chaque mois (sauf juillet à définir), rdv 12h30
- Durée ? : 1h30 (questions incluses)
- Lieu ? : Salle de conférence A.Kalogeropoulos, b. 400, campus Orsay
**Objectifs**
L'objectif est de proposer et d'utiliser un panel d'outils permettant la réalisation d'un projet complet de bio-info en partant de rien et aboutissant à la création d'un conteneur (technologie Docker). Le partage, la valorisation et l'analyse dynamique des données seront inclus dans le panel.
FAIR correspond à l'acronyme anglais "Findable, Accessible, Interoperable, & Reusable", initialement défini pour les données mais que nous détournons ici pour leurs protocoles d'analyse.
Le projet support est une étude "d'expression différentielle de gènes" à partir de données RNAseq d'O.tauri.
**Pré-requis**
1- Création d'un dossier docs/
Le fichier d'accueil doit être index.html
Â
2- Settings > Options
Â
Déterminer si les utilisateurs peuvent utiliser, modifier et distribuer le code / outils / logiciel
https://help.github.com/en/articles/licensing-a-repository
Â
1- Création d'un nouveau fichier
Â
Â
Â
2- Le nommer LICENCE
Â
Choisir la bonne et Github se charge du reste!
Â
Après avoir validé puis merge avec la branche principale
Créer une version pour fournir un code figé à un temps donné aux utilisateurs
Â
Toutes les étapes sont détaillées ici :
Â
MAJEUR.MINEUR.CORRECTIF
Â
1- le numéro de version MAJEUR (changements non rétrocompatibles)
2- le numéro de version MINEUR (ajouts/modifications de fonctionnalités rétrocompatibles)
Â
3- le numéro de version de CORRECTIF (corrections d’anomalies rétrocompatibles)
Première release pour FAIR_Bioinfo
Digital Object IdentifiersÂ
Système de référencement pour citer un projet
1- Se connecter à Zenodo (avec github)
2- Chercher dans Account > Github votre projet et connecter le avec Zenodo
Nous avons le badge dans le README
Les packages directement sur Github dont docker !!
Â
https://help.github.com/en/articles/about-github-package-registry
Â
1- Installer les outils dans un environnement Conda
Â
2- Créer une VM et la partager
Â
3- Intégration continue
Â
Practical Computational Reproducibility in the Life Sciences, Björn Grüning et al, 2018
Proposition de pistes de travail pour aller plus loin
Automatisation
Lancement manuel
Lancement par script
Lancement par workflow
Â
Logiciels
Installation locale
Installation gestionnaire
Installation dans un environnement conda
Installation dans un container
Installation dans une VM
Isolation par Conda
Pouvoir avoir des environnements séparés et ainsi pouvoir installer des outils spécifiques avec des versions spécifiques. Possibilité d'exporter l'environnement
Â
Isolation par container (docker)
Pour garantir la cohérence des résultats (même résultats)
Â
Isolation par Virtual machine
Résistance au temps. L'OS qui fait tourner le docker est figéÂ
C'est quoi un environnement Conda ?
Un espace de travail isolé qui permet d'installer des packages différents avec des versions différentes
Â
Pourquoi ?
Pour isoler l’environnement de travail (isolement de l'installation des logiciels)
Création d'un environnement
conda create -n FAIR_Bioinfo_env
Activation de l'environnement
conda activate FAIR_Bioinfo_env
(FAIR_Bioinfo) rstudio@cac89e623f57:~$
conda deactivate
Désactiver l'environnement
RUN conda create -n FAIR_Bioinfo_env -f environment.yml
ENV PATH /opt/conda/envs/FAIR_Bioinfo/bin:$PATH
Aujourd'hui
Nous utilisons les VM de l'IFB
Â
Limites
- Nous ne pouvons pas être sûrs que nous utilisons la même
- Si elle disparaît, nous ne pouvons plus lancer à l'identique
- Nous ne pouvons pas la partager
Â
Solution
Création de notre propre VM et partager l'image
Clouds privés ou publiques
(attention au partage et aux paramétrages)
...
VM locale
(attention au poids et la configuration)
...
Cloud
Vous savez mettre en place une VM sur l'IFB
Â
VM localeÂ
Â
Â
Â
Simple à mettre en place
Gratuit
Gourmand
Attention aux paramètres
1- Installation
https://fr.wikihow.com/installer-VirtualBox (multi OS)
https://doc.ubuntu-fr.org/virtualbox (spécifique Ubuntu)
Â
2- Création d'une VM ubuntu
FrançaisÂ
https://www.youtube.com/watch?v=guETBjG3Wz4Â (partie 1)
https://www.youtube.com/watch?v=VyEmw4cgMmo (partie 2)
Â
Anglais
3- Installation classique de notre outil
$ git clone https://github.com/thomasdenecker/FAIR_Bioinfo
$ cd FAIR_Bioinfo
$ sudo docker run --rm -d -p 80:8888 --name fair_bioinfo -v ${PWD}:/home/rstudio tdenecker/fair_bioinfo bash ./FAIR_script.sh
4- Partage de l'image
https://www.sysprobs.com/create-virtualbox-image-share-upload
Simple mais attention au poids (il y a un système d'exploitation complet!)
Vérification à chaque modification de code source que le résultat des modifications ne produit
- ni régression dans l'application développée
- ni de changement des résultats obtenus
Â
Test unitaire
Tester une partie du code
somme <- function(x, y){
return (x+y)
}
# Test unitaire
somme(2,2) == 4
puissance <- function(x, y){
return (x**y)
}
# Test unitaire
puissance(2,2) == 4
Test fonctionnel
Tester l'ensemble du code
Module 1
Module 2
# Test fonctionnel
puissance(somme(2,2),2) == 16
1- shinyTest
Documentation
https://rstudio.github.io/shinytest/articles/shinytest.html
Â
Â
2- Tester les résultats
Utiliser le même fichier d'entrée et comparer le résultat avec un fichier de sortie de référence
Â
Un exempleÂ
En Python, vérification du respect des règles d'écriture (pep8,...)
Â
Â
Â
Â
Â
Â
Â
Â
ExempleÂ
Avoir le Saint Graal !
Question ouverteÂ
Nous sommes plus reproductibles sur le code mais les tests sont-ils reproductibles ?
Problèmes
Usage d'une VM déjà instanciéeÂ
Â
Conséquences
Même configuration mais pas forcement le même matériel et pas forcement exactement la même instance (par exemple en cas de MAJ Ubuntu)
Â
Solutions
Création de sa propre instance
Problèmes
Reproduire une image à partir d'un dockerfile uniquement
Â
Conséquences
Se base sur une image existante et fait les mises à jour en conséquence (absence de maîtrise de la version)
Â
Solutions
Création d'une image à partir de solution comme GUIX qui fige les versions des outils d'Ubuntu
Problèmes
Perte de l'ordre de calcul
Utilisation du même matériel ?
Â
Conséquences
Le temps de calcul : Job en 1h vs le même job en 3h
Les résultats ?
Â
Solutions
Configuration ?
Faire en linéaire ? Mais le temps ?Â
Reproductibilité au bit près
Utilisabilité, effort/coût et simplicité
Â
Des pistes pour aller plus loin dans la reproductibilité
  - Environment conda
  - Création et partage d'une VM
  - Intégration continue
Â
Finaliser un projet avec Github
  - Exposer son projet
  - Ajouter une licence
  - Réaliser une release
  - Obtenir un DOIÂ
Une solution pour rendre reproductible des analyses de BioinformatiqueÂ
Â
Tous les outils peuvent être changés
Â
Ouverture vers une réflexionÂ
Faire un projet essayant de garder en tête cette approche
Bon courage !
RDV sur Slack en cas de problème