Header Image - bioinformatika

Tag Archives

2 Articles

Dockerfile készítése

A rövid áttekintő bejegyzés után készítünk egy Dockerfile-t, amely a Trim Galore programot tartalmazza.

Docker (alap)parancsok

  • FROM: az alap (base image), amire épül a konténer (pl.: linux 16.04)
  • MAINTAINER (opcionális): a dockerfile készítőjének a nevét, emailcímét tartalmazza
  • RUN:  a kép (image) létrehozása során futtatandó parancsok
  • ADD: fájl másolása a docker image-be
  • ENV: környezeti változó definiálása
  • CMD: a konténer indításakor automatikusan lefutó parancs
  • ENTRYPOINT: a konténer indításakor automatikusan lefutó parancs
  • WORKDIR: az alapértelmezett könyvtár a konténer indulásakor

Dockerfile készítése

Készítünk egy új fájlt, ami a Trim Galore programcsomagot fogja tartalmazni. A Trim Galore a Cutadapt-ot is használja, ezért ennek a telepítését is el kell végezni a Dockerfile-on belül. 

# base image letöltése
FROM ubuntu:16.04

# készítő, fejlesztő
MAINTAINER Robert Herczeg <herczeg.robert@pte.hu>

# update
RUN apt-get update && apt-get -y install wget\
    unzip \
    python3-pip && \
    rm -rf /var/lib/apt/lists/*

# Install cutadapt
ENV CUTADAPT_VERSION 1.14
RUN pip3 install cutadapt==${CUTADAPT_VERSION}

# set working dir
WORKDIR /tmp

# install Trim Galore
RUN wget http://www.bioinformatics.babraham.ac.uk/projects/trim_galore/trim_galore_v0.4.4.zip
RUN unzip trim_galore_v0.4.4.zip

# create symlink
RUN ln -s /tmp/trim_galore /usr/local/bin/trim_galore

CMD ["bash"]

A FROM részben megadtuk, hogy a 16.04-es ubuntu legyen az alapértelmezett image. Ezután azokat a programokat telepítetjük, amik szükségesek a Trim Galore futtatásához. A wget a letöltéshez, az unzip a kimötörítéshet kell. A python3-pip a Cutadapt telepítését végzi el.

# update
RUN apt-get update && apt-get -y install wget\
    unzip \
    python3-pip && \
    rm -rf /var/lib/apt/lists/*

Az utolsó sorral a cache-t töröljük, így csökkentve a konténer méretét. Ezt követően a telepítjük Cutadapt-ot. Az ENV-el megadtuk, hogy verziót szeretnénk telepítani, amihez a pip3 -t használjuk.

# Install cutadapt
ENV CUTADAPT_VERSION 1.14
RUN pip3 install cutadapt==${CUTADAPT_VERSION}

A WORKDIR megadásával a továbbiakban a konténeren belül ebbe fog dolgozni a docker, így a wget-el letöltendő zip fájl is ide fog kerülni, amit majd az unzip-el csomagolunk ki.

# set working dir
WORKDIR /tmp

# install Trim Galore
RUN wget http://www.bioinformatics.babraham.ac.uk/projects/trim_galore/trim_galore_v0.4.4.zip
RUN unzip trim_galore_v0.4.4.zip

Utolsó lépésben készítünk egy szimbolikus linket, illetve megadjuk a CMD-t, így a konténert elindítva egyből a bash-t fogjuk futtatni.

# create symlink
RUN ln -s /tmp/trim_galore /usr/local/bin/trim_galore

CMD ["bash"]

A konténer felépítését a docker build parancs kiadásával végezzük el.
A “-t” kapcsolóval nevezzük el a konténert. Ellenőrizni a docker images paranccsal tudjuk. A konténer elkészülte után már “csak ” futtatni kell.

docker-bioinformatika-trim-galore
docker-bioinformatika-trim-galore
# konténer felépítése
docker build -t trimgalore:1 .

# konténer futtatása
# első példa
docker run -it trimgalore:1 bash

# második példa
docker run -t trimgalore:1 /tmp/trim_galore

A két példa között a fő különbség, hogy az elsőben “belépünk” a konténerbe (az “-i” kapcsoló az interaktív módot jelöli) és onnan futtatjuk a Trim Galore-t, a második esetben nem lépünk be a konténerbe, hanem a tmp könyvtárban megtalálható trim_galore parancsot hívjuk meg. Mindegyik példának meg van a maga előnye-hátránya, amelyet most nem részletezünk.

Dockerfile letöltése

Bioinformatikai konténerek – bevezető

Hogyan kap
gyorsan fejfájást a bioinformatikus?

  • Lát egy cikket a twitter-en egy új bioinformatikai algoritmusról.
  • Érdekesnek tűnik az absztrakt alapján, ki kellene próbálni.
  • Nincs sehol a forráskód és/vagy egyértelmű link a szoftverhez….google segít.
  • Nem települ……google segít.
  • Nehezen, de települt…..örülünk
  • A tesztadatok elemzésénél hibát kapunk…..
  • Jöhet a fejfájás…

Az adatok feldolgozásához, elemzéséhez újabb ás újabb bioinformatikai módszereket, eljárásokat fejlesztenek, amelyekhez kisebb-nagyobb programokat és/vagy szoftvereket is készítenek, publikálnak. Ezeknek a szoftvereknek a telepítése/használata nem mindig egyszerű, mivel:

  1. számos függőséget tartalmazhatnak, amiket külön kell telepíteni
  2. a telepítésük kezdő informatikai tudásnál mélyebb ismereteket igényelnek
  3. nem megfelelő a dokumentáció, így nehéz telepíteni/dolgozni vele
  4. újabb verzió készül, ami nem kompatibilis az addigi rendszerrel
  5. nem kompatibilis minden operációs rendszerrel és/vagy környezettel (pl.: csak linux-on fut, más JAVA verziót használ stb.)
  6. nem vagy nehezen kivitelezhető a megismételhető vizsgálat (reproducible research)

Ezek a problémák napi szinten jelen vannak a bioinformatikában. Továbbá viszonylag könnyen lehet készíteni kisebb-nagyobb “programcsomagokat” (R, python, stb.) és publikálni, ahol is fontos, hogy ezeket mások is tudják használni és ne akadjanak el már az első lépéseknél, így például a telepítésnél.

Konténerek – Docker

bioinformatikai docker
bioinformatikai docker

Erre a prolémára egy megoldás a különböző konténertechnológiák használata (lista a leggyakoribbakról), ezek közül is a bioinformatikában az egyik legelterjedtebben használt, a Docker. A konténeres megközelítés a virtualizációt használja ki/fel (további technikai részletek a Docker-el kapcsolatban itt), és teremt ezáltal egy olyan környezetet, amely igen hasznosnak bizonyul a különböző bioinformatikai elemzések elvégzése, valamint a szoftverfejlesztések során.

Minden egyes konténernek (általában) csupán egy feladata, célja van. Készíthetünk egy olyan konténert, amely csak a fastqc programot tartalmazza. A konténer tartalmát (környezetét) egy egyszerű szöveges fájl (Dockerfile) írja le:

 # Set the base image
FROM ubuntu:16.04

# File Author / Maintainer
MAINTAINER Robert Herczeg <herczeg.robert@pte.hu>

RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

################## BEGIN INSTALLATION ######################
RUN apt-get update
RUN apt-get -y install wget unzip sudo mc perl

# download fastqc
ADD http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.8.zip /tmp/

# Install OpenJDK 8 JRE
RUN apt-get update && apt-get install --yes openjdk-8-jre

# Install FastQC
RUN cd /usr/local && \
unzip /tmp/fastqc_*.zip && \
chmod 755 /usr/local/FastQC/fastqc && \
ln -s /usr/local/FastQC/fastqc /usr/local/bin/fastqc && \
rm -rf /tmp/fastqc_*.zip

ENTRYPOINT ["fastqc"]

Ezt felhasználva elkészíthetjük a docker build parancs kiadásával a fastqc konténert.

docker build -t fastqc:1 .

A -t kapcsolóval (tag) a konténert nevezzük el, valamint egy verziót számot is adunk neki (nem muszáj, hogy szám legyen). A “.” megadjuk, hogy az éppen aktuális könyvtárban keresse a Dockerfile-t. Ezután nincs más hátra, mint futtatni, használni a konténert:

docker run -t fastqc:1 fastqc -f fastq --threads 1 sample.fastq

A parancs két részből áll:
– konténer futtatása: docker run -t fastqc:1
– a fastqc futtatása: fastqc -f fastq –threads 1 sample.fastq

Természetesen ennél sokkal több lehetőség van a Docker-ben, amelyeket a következő cikkekben fogunk be/megmutatni.

  • Docker telepítése – cikk
  • Dockerfile készítése – cikk