|
| 1 | +ARG VIRIDIAN_VER="1.3.0" |
| 2 | +ARG SAMTOOLS_VER="1.21" |
| 3 | +ARG BCFTOOLS_VER=${SAMTOOLS_VER} |
| 4 | +ARG HTSLIB_VER=${SAMTOOLS_VER} |
| 5 | +ARG ENA_VER="1.7.1" |
| 6 | +ARG NGMERGE_VER="0.3" |
| 7 | +ARG VT_VER="0.57721" |
| 8 | +ARG RACON_VER="1.5.0" |
| 9 | +ARG MUMMER_VER="4.0.0rc1" |
| 10 | +ARG READITANDKEEP_VER="0.3.0" |
| 11 | +ARG CYLON_COMMIT_HASH="57d559a76254b0b95785f7c02fa58ef806713e01" |
| 12 | +ARG VARIFIER_COMMIT_HASH="8bc8726ed3cdb337dc47b62515e709759e451137" |
| 13 | +ARG MINIMAP2_VER="2.28" |
| 14 | + |
| 15 | +## Builder ## |
| 16 | +FROM ubuntu:jammy as build |
| 17 | +ARG SAMTOOLS_VER |
| 18 | +ARG BCFTOOLS_VER |
| 19 | +ARG HTSLIB_VER |
| 20 | +ARG NGMERGE_VER |
| 21 | +ARG VT_VER |
| 22 | +ARG RACON_VER |
| 23 | +ARG READITANDKEEP_VER |
| 24 | +ARG MINIMAP2_VER |
| 25 | +ARG MUMMER_VER |
| 26 | + |
| 27 | +ENV DEBIAN_FRONTEND=noninteractive |
| 28 | + |
| 29 | +RUN apt-get update && apt-get install --no-install-recommends -y \ |
| 30 | + wget \ |
| 31 | + ca-certificates \ |
| 32 | + perl \ |
| 33 | + bzip2 \ |
| 34 | + cmake \ |
| 35 | + git \ |
| 36 | + autoconf \ |
| 37 | + automake \ |
| 38 | + make \ |
| 39 | + curl \ |
| 40 | + gcc \ |
| 41 | + g++ \ |
| 42 | + gnuplot \ |
| 43 | + zlib1g-dev \ |
| 44 | + libbz2-dev \ |
| 45 | + liblzma-dev \ |
| 46 | + libcurl4-gnutls-dev \ |
| 47 | + libncurses5-dev \ |
| 48 | + libssl-dev \ |
| 49 | + libperl-dev \ |
| 50 | + libgsl0-dev \ |
| 51 | + procps \ |
| 52 | + gawk \ |
| 53 | + sed \ |
| 54 | + build-essential \ |
| 55 | + unzip \ |
| 56 | + nasm \ |
| 57 | + pkgconf \ |
| 58 | + libtool \ |
| 59 | + ruby \ |
| 60 | + yaggo \ |
| 61 | + gcc-11 && \ |
| 62 | + rm -rf /var/lib/apt/lists/* && apt-get autoclean |
| 63 | + |
| 64 | +# compile bcftools |
| 65 | +RUN wget -q https://github.com/samtools/bcftools/releases/download/${BCFTOOLS_VER}/bcftools-${BCFTOOLS_VER}.tar.bz2 && \ |
| 66 | + tar -xjf bcftools-${BCFTOOLS_VER}.tar.bz2 && \ |
| 67 | + rm -v bcftools-${BCFTOOLS_VER}.tar.bz2 && \ |
| 68 | + cd bcftools-${BCFTOOLS_VER} && \ |
| 69 | + make && \ |
| 70 | + make install |
| 71 | + |
| 72 | +# compile samtools |
| 73 | +RUN wget -q https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VER}/samtools-${SAMTOOLS_VER}.tar.bz2 && \ |
| 74 | + tar -xjf samtools-${SAMTOOLS_VER}.tar.bz2 && \ |
| 75 | + cd samtools-${SAMTOOLS_VER} && \ |
| 76 | + ./configure && \ |
| 77 | + make && \ |
| 78 | + make install |
| 79 | + |
| 80 | +# compile htslib |
| 81 | +RUN wget -q https://github.com/samtools/htslib/releases/download/${HTSLIB_VER}/htslib-${HTSLIB_VER}.tar.bz2 && \ |
| 82 | + tar -vxjf htslib-${HTSLIB_VER}.tar.bz2 && \ |
| 83 | + rm -v htslib-${HTSLIB_VER}.tar.bz2 && \ |
| 84 | + cd htslib-${HTSLIB_VER} && \ |
| 85 | + make && \ |
| 86 | + make install |
| 87 | + |
| 88 | +# compile NGmerge |
| 89 | +RUN wget -q https://github.com/harvardinformatics/NGmerge/archive/refs/tags/v${NGMERGE_VER}.tar.gz && \ |
| 90 | + tar -vxf v${NGMERGE_VER}.tar.gz && \ |
| 91 | + cd NGmerge-${NGMERGE_VER} && \ |
| 92 | + make && \ |
| 93 | + cp NGmerge /usr/local/bin/. |
| 94 | + |
| 95 | +# compile vt |
| 96 | +RUN wget -q https://github.com/atks/vt/archive/refs/tags/${VT_VER}.tar.gz && \ |
| 97 | + tar -vxf ${VT_VER}.tar.gz && \ |
| 98 | + cd vt-${VT_VER} && \ |
| 99 | + make && \ |
| 100 | + cp vt /usr/local/bin/. |
| 101 | + |
| 102 | +# compile racon |
| 103 | +RUN wget -q https://github.com/lbcb-sci/racon/archive/refs/tags/${RACON_VER}.tar.gz && \ |
| 104 | + tar -xvf ${RACON_VER}.tar.gz && \ |
| 105 | + cd racon-${RACON_VER} && \ |
| 106 | + mkdir build && \ |
| 107 | + cd build && \ |
| 108 | + cmake -DCMAKE_BUILD_TYPE=Release .. && \ |
| 109 | + make && \ |
| 110 | + cp bin/racon /usr/local/bin/. |
| 111 | + |
| 112 | +# compile read-it-and-keep |
| 113 | +RUN wget -q https://github.com/GlobalPathogenAnalysisService/read-it-and-keep/archive/refs/tags/v${READITANDKEEP_VER}.tar.gz && \ |
| 114 | + tar -vxf v${READITANDKEEP_VER}.tar.gz && \ |
| 115 | + cd read-it-and-keep-${READITANDKEEP_VER}/src && \ |
| 116 | + make && \ |
| 117 | + cp readItAndKeep /usr/local/bin/. |
| 118 | + |
| 119 | +# install minimap2 binary |
| 120 | +RUN curl -L https://github.com/lh3/minimap2/releases/download/v${MINIMAP2_VER}/minimap2-${MINIMAP2_VER}_x64-linux.tar.bz2 | tar -jxvf - --no-same-owner && \ |
| 121 | + cp minimap2-${MINIMAP2_VER}_x64-linux/minimap2 /usr/local/bin |
| 122 | + |
| 123 | +RUN wget -q https://github.com/mummer4/mummer/archive/refs/tags/v${MUMMER_VER}.tar.gz && \ |
| 124 | + tar -xvf v${MUMMER_VER}.tar.gz && \ |
| 125 | + cd mummer-${MUMMER_VER} && \ |
| 126 | + autoreconf -i && \ |
| 127 | + ./configure CXXFLAGS="-std=c++11 -Wno-maybe-uninitialized" LDFLAGS=-static && \ |
| 128 | + make && \ |
| 129 | + make install && \ |
| 130 | + ldconfig |
| 131 | + |
| 132 | +## App ## |
| 133 | +FROM ubuntu:jammy as app |
| 134 | + |
| 135 | +ARG VIRIDIAN_VER |
| 136 | +ARG ENA_VER |
| 137 | +ARG CYLON_COMMIT_HASH |
| 138 | +ARG VARIFIER_COMMIT_HASH |
| 139 | + |
| 140 | +LABEL base.image="ubuntu:jammy" |
| 141 | +LABEL dockerfile.version="1" |
| 142 | +LABEL software="viridian" |
| 143 | +LABEL software.version="${VIRIDIAN_VER}" |
| 144 | +LABEL description="Ultra-careful amplicon-aware viral assembly for tiled amplicon schemes." |
| 145 | +LABEL website="https://github.com/iqbal-lab-org/viridian" |
| 146 | +LABEL license="https://github.com/iqbal-lab-org/viridian/blob/master/LICENSE" |
| 147 | +LABEL maintainer="Wilson Chan" |
| 148 | +LABEL maintainer.email="chan.wilson.wc@gmail.com" |
| 149 | +LABEL maintainer2="Kutluhan Incekara" |
| 150 | +LABEL maintainer2.email="kutluhan.incekara@ct.gov" |
| 151 | +LABEL maintainer3="Erin Young" |
| 152 | +LABEL maintainer3.email="eriny@utah.gov" |
| 153 | + |
| 154 | +RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 155 | + python3 \ |
| 156 | + python3-pip \ |
| 157 | + python3-dev \ |
| 158 | + gzip \ |
| 159 | + gcc \ |
| 160 | + perl \ |
| 161 | + zlib1g \ |
| 162 | + libncurses5 \ |
| 163 | + bzip2 \ |
| 164 | + liblzma-dev \ |
| 165 | + libcurl4-gnutls-dev \ |
| 166 | + wget \ |
| 167 | + && apt-get autoclean && rm -rf /var/lib/apt/lists/* |
| 168 | + |
| 169 | +COPY --from=build /usr/local/bin/* /usr/local/bin/ |
| 170 | +COPY --from=build /usr/local/lib/* /usr/local/lib/ |
| 171 | + |
| 172 | +RUN pip install --no-cache-dir cython |
| 173 | + |
| 174 | +# ENA tools |
| 175 | +RUN wget -q https://github.com/enasequence/enaBrowserTools/archive/refs/tags/v${ENA_VER}.tar.gz && \ |
| 176 | + tar -xvf v${ENA_VER}.tar.gz && \ |
| 177 | + rm v${ENA_VER}.tar.gz |
| 178 | + |
| 179 | +RUN wget -q https://github.com/iqbal-lab-org/cylon/archive/${CYLON_COMMIT_HASH}.zip &&\ |
| 180 | + pip install --no-cache-dir ${CYLON_COMMIT_HASH}.zip && \ |
| 181 | + rm ${CYLON_COMMIT_HASH}.zip |
| 182 | + |
| 183 | +RUN wget -q https://github.com/iqbal-lab-org/varifier/archive/${VARIFIER_COMMIT_HASH}.zip &&\ |
| 184 | + pip install --no-cache-dir ${VARIFIER_COMMIT_HASH}.zip && \ |
| 185 | + rm ${VARIFIER_COMMIT_HASH}.zip |
| 186 | + |
| 187 | +# install viridian |
| 188 | +RUN wget -q https://github.com/iqbal-lab-org/viridian/archive/refs/tags/v${VIRIDIAN_VER}.tar.gz && \ |
| 189 | + pip install --no-cache-dir v${VIRIDIAN_VER}.tar.gz && \ |
| 190 | + mkdir viridian && \ |
| 191 | + tar -C viridian --strip-components=1 -xvf v${VIRIDIAN_VER}.tar.gz && \ |
| 192 | + rm v${VIRIDIAN_VER}.tar.gz |
| 193 | + |
| 194 | +WORKDIR /data |
| 195 | + |
| 196 | +CMD ["viridian", "--help "] |
| 197 | + |
| 198 | +ENV PATH="/enaBrowserTools-${ENA_VER}/python3:$PATH" LC_ALL=C |
| 199 | + |
| 200 | +## Test ## |
| 201 | +FROM app as test |
| 202 | + |
| 203 | +WORKDIR /test |
| 204 | + |
| 205 | +RUN cd /viridian && \ |
| 206 | + pip install --no-cache-dir pytest && \ |
| 207 | + pytest |
| 208 | + |
| 209 | +RUN viridian run_one_sample --run_accession SRR29437696 --outdir OUT && \ |
| 210 | + wc -l OUT/consensus.fa.gz OUT/log.json.gz OUT/qc.tsv.gz && \ |
| 211 | + head OUT/variants.vcf |
| 212 | + |
| 213 | +RUN viridian run_one_sample --run_accession SRR29437696 --outdir OUT2 --keep_bam && \ |
| 214 | + wc -l OUT2/consensus.fa.gz OUT2/log.json.gz OUT2/qc.tsv.gz OUT2/reference_mapped.bam && \ |
| 215 | + head OUT2/variants.vcf |
0 commit comments