Exploring Qiime2 The Microbiome Bioinformatics Platform

 Qiime2 is a Microbiome bioinformatics platform.  Emm, what does that mean?  Microbiome is the microorganisms in a particular environment.  Bioinformatics is the application of tools of computation and analysis to the capture and interpretation of biological data.  So, what sort of biological data Qiime2 takes in?  Is it DNA data?  If it is just DNA data, why does it has to be microbiome.  Emm.

I would like to build it from scratch using dockerfile:

docker build \
-t quay.io/qiime2/core:$(QIIME2_RELEASE) \
-t quay.io/qiime2/core:latest \
--build-arg QIIME2_RELEASE=$(QIIME2_RELEASE) docker

The actual Dockerfile looks like this:

FROM continuumio/miniconda3 ARG QIIME2_RELEASE
ENV PATH /opt/conda/envs/qiime2-${QIIME2_RELEASE}/bin:$PATH
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
ENV MPLBACKEND agg
ENV HOME /home/qiime2
ENV XDG_CONFIG_HOME /home/qiime2
RUN mkdir /home/qiime2
WORKDIR /home/qiime2
RUN conda update -q -y conda
RUN conda install -q -y wget
RUN apt-get install -y procps
RUN wget https://data.qiime2.org/distro/core/qiime2-${QIIME2_RELEASE}-py38-linux-conda.yml
RUN conda env create -n qiime2-${QIIME2_RELEASE} --file qiime2-${QIIME2_RELEASE}-py38-linux-conda.yml
RUN rm qiime2-${QIIME2_RELEASE}-py38-linux-conda.yml
RUN /bin/bash -c "source activate qiime2-${QIIME2_RELEASE}"
RUN qiime dev refresh-cache
RUN echo "source activate qiime2-${QIIME2_RELEASE}" >> $HOME/.bashrc
RUN echo "source tab-qiime" >> $HOME/.bashrc
# Important: let any UID modify these directories so that
# `docker run -u UID:GID` works
RUN chmod -R a+rwx /home/qiime2
RUN chmod -R a+rwx /opt/conda
# TODO: update this to point at the new homedir defined above. Keeping this
# for now because this will require an update to the user docs.
VOLUME ["/data"]
WORKDIR /data

I would also like to build this Qiime2 core container using Jenkins.  Why?  my employer uses it so to help me better at my job, I will explore Jenkins here.

This means I have to create an Git repro to hold these files.  I will call this qiime2bit.  Jenkins' blue ocean is a GUI for programing in groovy.  Groovy is the underlaying language which expresses Jenkins CICD activities.  In my case, I need to first build the base image and then use that image to build the custom Qiim2 image.  Since I don't want to rebuild the base image unless there is a change, I might have to make that a separate pipeline process.  In fact, I think a separate pipeline is the correct way to go for the base image.  Save the base image artifact to a container registry like Docker Hub or GCR from GCP.  For now, I would also like to explore the caches mechanism of Jenkins and see if it can cache the base image and build the custom image in the same pipeline.

I have installed Jenkins on my Mac in Docker by following this instruction.  Blue Ocean is a built in feature.  I have reviewed the groovy way of Jenkins from this video but I should explore Blue Ocean using its GUI first.  It seems simple and I want to see how far I can get with it first.  There are many types of steps that can compose a pipeline.  I will go over each and find out what they mean:

A a glance, I found General Build Step interest, so I will just pick out the interesting ones first.  My thinking is hey I want to build something, then I should be able to use build steps.  Emm, turned out General Build Step is just a programatic interface which actual build step has to conform with to be used in Blue Ocean.  That is I can not find prebuilt steps to used together and make a pipeline:

General Build Step is a SimpleBuildStep interface.  Since I have not make any build step based on the SimpleBuildStep interface, I would expect not finding useful here.  It seems to me, I could use the shell script step type to run the docker build command.  But first I need to set the 




 


Comments

Popular posts from this blog

LB + amp agar plate protocol

SSH to Docker container and run X11 on Mac Pro Host Machine

DevOps Madness