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

Session 8

Achever un projet reproductible

Programme de la session

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

Exposer son projet

Au programme

    - Une vitrine sur web

    - Ajouter une licence

    - Créer une release

    - Obtenir un DOI pour le projet

Une vitrine sur web

Une vitrine sur web

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/

En pratique - A partir du README

Dans la partie Settings > Options > Github pages

 

 

En pratique - A partir du README

Dans la partie Settings > Options > Github pages

 

1- Choisir la source

 

Ici le README est dans master

 

 

 

2- Choisir le thème

 

En pratique - A partir du README

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**

En pratique- A partir de vos pages HTML

1- Création d'un dossier docs/

Le fichier d'accueil doit être index.html

 

2- Settings > Options

 

Licence

Licence

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

 

Licence

Choisir la bonne et Github se charge du reste!

 

Licence

Après avoir validé puis merge avec la branche principale

Release

Versionner son projet

Créer une version pour fournir un code figé à un temps donné aux utilisateurs

 

Toutes les étapes sont détaillées ici :

https://help.github.com/en/articles/creating-releases

Créer une release

Créer une release

Sémentique du numéro de version

1.0.0

 

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)

Créer une release

Première release pour FAIR_Bioinfo

Obtenir un DOI

Obtenir un DOI

Digital Object Identifiers 

Système de référencement pour citer un projet

Démarche

1- Se connecter à Zenodo (avec github)

2- Chercher dans Account > Github votre projet et connecter le avec Zenodo

Démarche

Ajouter le badge dans le README

README

Nous avons le badge dans le README

Et bientôt !

GitHub Package Registry

Et maintenant ?

Plus loin dans la reproductibilité

Deux dimensions de la reproductibilité

Que nous devons nous faire? 

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

Que faisons nous aujourd'hui?

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

Les différents niveaux d'isolation

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é 

Environnement conda

Environnement Conda

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)

Gérer un environnement Conda

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

Dans le dockerfile

RUN conda create -n FAIR_Bioinfo_env -f environment.yml
ENV PATH /opt/conda/envs/FAIR_Bioinfo/bin:$PATH

Virtual Machine

Virtual Machine

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

Les VM disponibles

Clouds privés ou publiques

(attention au partage et aux paramétrages)

...

VM locale

(attention au poids et la configuration)

...

Mettre en place une VM

Cloud

Vous savez mettre en place une VM sur l'IFB

 

VM locale 

 

 

 

Simple à mettre en place

Gratuit

Gourmand

Attention aux paramètres

Méthodologie

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

https://www.youtube.com/watch?v=QbmRXJJKsvs

Méthodologie

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!)

Intégration continue

Intégration continue

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

 

Notion de tests

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

Attention à faire les deux !

Comment tester notre application?

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 

https://github.com/thomasdenecker/bPeaks-application

Mais aussi...

En Python, vérification du respect des règles d'écriture (pep8,...)

 

 

 

 

 

 

 

 

Exemple 

https://github.com/Candihub/pixel

Connecter sur Github

Objectif ?

Avoir le Saint Graal !

Question ouverte 

Nous sommes plus reproductibles sur le code mais les tests sont-ils reproductibles ?

Limites

Utilisation de cloud

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

Reproductibilité bit à bit

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

Parallélisation et multi-threading

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 ? 

Que faire ?

Reproductibilité au bit près

Utilisabilité, effort/coût et simplicité

Conclusion

 

Bilan de la session

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 

Bilan de FAIR_Bioinfo

Une solution pour rendre reproductible des analyses de Bioinformatique 

 

Tous les outils peuvent être changés

 

Ouverture vers une réflexion 

Pour le futur

Faire un projet essayant de garder en tête cette approche

Bon courage !

RDV sur Slack en cas de problème

Votre avis est important !