Exemple : créer un pipeline simple

Dans ce tutoriel, nous allons créer un pipeline simple, qui génère un rapport multiqc.

Difficultés abordées par ce tutoriel :
- [x] Dockerisation d'un pipeline bioinformatique
- [x] Fichiers INPUTS (type BAM)
- [x] Génération OUTPUTS (rapport html)
- [ ] Génération de LOGS
- [ ] Paramètres personnalisables
- [ ] Notifications en temps réel de la progression
- [ ] Connexion à la base de données Regovar

Les instructions

Étape 1 : init package folder

mkdir ~/mypipeline
cd ~/mypipeline
mkdir doc
cd doc
wget https://raw.githubusercontent.com/REGOVAR/Regovar/master/docs/tutorials/pipeline/tuto_003/about.html
wget https://raw.githubusercontent.com/REGOVAR/Regovar/master/docs/tutorials/pipeline/tuto_003/help.html
wget https://raw.githubusercontent.com/REGOVAR/Regovar/master/docs/tutorials/pipeline/tuto_003/icon.png
cd ..

Étape 2 : create Docker file

nano Dockerfile

Écrire le contenu suivant dans le fichier

FROM biocontainers/samtools:latest

# Install multiqc
USER root
RUN \
  apt-get update && apt-get install -y --no-install-recommends \
  g++ \
  git \
  wget \
  && wget --quiet -O /opt/get-pip.py https://bootstrap.pypa.io/get-pip.py \
  && python /opt/get-pip.py \
  && rm -rf /var/lib/apt/lists/* /opt/get-pip.py
RUN pip install git+git://github.com/ewels/MultiQC.git
RUN mkdir /outputs && chown biodocker:biodocker /outputs

# Generate start script sh
USER biodocker
RUN echo "#!/bin/sh\nmkdir /tmp/analysis\nsamtools stats /data/*.bam > /outputs/report.bam.sas.txt\nmultiqc ." > /home/biodocker/run.sh
RUN chmod +x /home/biodocker/run.sh

WORKDIR /outputs/
CMD ["/home/biodocker/run.sh"]

Étape 3 : create manifest

nano manifest.json

Écrire le contenu suivant dans le fichier

{
    "name" : "Multiqc",
    "description" : "Aggregate bioinformatics results across many samples into a single report.",
    "version": "1.0",
    "type": "job",
    "contacts" : [],
    "regovar_db_access": False,
    "inputs" : "/data/",
    "outputs" : "/outputs/",
    "databases": "/tmp/regovar_db/",
    "logs" : "/tmp/regovar_logs/"
}

Étape 4 (optionnelle) : test with Docker


mkdir /tmp/test_inputs 
# put a bam+bai in this folder
mkdir /tmp/test_ouputs
ls -l /tmp/test_ouputs
docker build -t regovar_pipe_test .
docker image ls
docker run -a stdin -a stdout -it -v /tmp/test_inputs:/data -v /tmp/test_ouputs:/outputs --name regovar_test --user 1000:1000 regovar_pipe_test
ls -l /tmp/test_ouputs
docker rm --force regovar_test
docker rmi regovar_pipe_test

Étape 5 : create package

cd ..
zip -r multiqc_pipeline_1.0.zip mypipeline

Voilà, il ne reste plus qu'à tester dans Regovar.