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
Post a Comment