生信软件、流程依赖的东西太多,docker打包镜像一不小心就是上Gb大小。
镜像太大很多缺点:上传、拉取慢;费宽带;占空间。。。
docker已广泛应用在IT,生信只是沾了点光,所以没有专门的优化,在这方面的资料也比较少(尤其是中文)。
这里贴几点资源,供参考。
Bioinformatics Docker Images Project
https://pegi3s.github.io/dockerfiles/
由Phenotypic Evolution Group - IBMC/i3S团队维护。
所有镜像可在Docker hub获取:https://hub.docker.com/u/pegi3s/
对应的dockerfile可在github获取:https://github.com/pegi3s/dockerfiles
由State Public Health Bioinformatics Workgroup(StaPH-B)开发维护。做的比较早,影响力较大,Github标星近百人。工具偏向于人类健康,当然也有很多通用的,多看看他们写的dockerfile。
https://github.com/StaPH-B/docker-builds
GitHub上一个小日本dceoy做的生信相关软件的dockerfile,也可以参考参考。
https://github.com/dceoy/docker-bio
GitHub上一位埃及老哥做的一个生信大杂烩:https://github.com/ahmedmoustafa/bioinformatics-toolbox。镜像大小60GB,光拉取都要几小时。
这里贴上它的dockerfile,制作自己的镜像时可以有选择性地部分参考。
FROM ubuntu:20.04
LABEL description="Bioinformatics Docker Container"
LABEL maintainer="amoustafa@aucegypt.edu"
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
##########################################################################################
##########################################################################################
RUN apt-get update --fix-missing && \
apt-get -y upgrade && \
apt-get -y install apt-utils dialog software-properties-common
RUN add-apt-repository universe && \
add-apt-repository multiverse && \
add-apt-repository restricted
##########################################################################################
##########################################################################################
ARG SETUPDIR=/tmp/bioinformatics-toolbox-setup/
RUN mkdir -p $SETUPDIR
WORKDIR $SETUPDIR
##########################################################################################
##########################################################################################
# Prerequisites
###############
###############
RUN apt-get -y install vim nano emacs rsync curl wget screen htop parallel gnupg lsof git locate unrar bc aptitude unzip bison flex \
build-essential libtool autotools-dev automake autoconf cmake \
libboost-dev libboost-all-dev libboost-system-dev libboost-program-options-dev libboost-iostreams-dev libboost-filesystem-dev \
gfortran libgfortran5 \
default-jre default-jdk ant \
python3 python3-dev python3-pip python3-venv \
libssl-dev libcurl4-openssl-dev \
libxml2-dev \
libmagic-dev \
hdf5-* libhdf5-* \
fuse libfuse-dev \
libtbb-dev \
liblzma-dev libbz2-dev \
libbison-dev \
libgmp3-dev \
libncurses5-dev libncursesw5-dev \
liblzma-dev \
caffe-cpu \
cargo \
ffmpeg \
libmagick++-dev \
libavfilter-dev \
dos2unix \
git-lfs
##########################################################################################
##########################################################################################
# Progamming
############
############
# BioPerl
#########
RUN apt-get -y install bioperl
# Biopython
###########
RUN pip3 install --no-cache-dir -U biopython numpy pandas matplotlib scipy seaborn statsmodels plotly bokeh scikit-learn tensorflow keras torch theano jupyterlab
# R
###
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 && \
add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' && \
apt-get update && \
apt-get -y install r-base r-base-dev && \
R -e "install.packages (c('tidyverse', 'tidylog', 'readr', 'dplyr', 'knitr', 'printr', 'rmarkdown', 'shiny', \
'ggplot2', 'gplots', 'plotly', 'rbokeh', 'circlize', 'RColorBrewer', 'formattable', \
'reshape2', 'data.table', 'readxl', 'devtools', 'cowplot', 'tictoc', 'ggpubr', 'patchwork', 'reticulate', \
'rpart', 'rpart.plot', 'randomForest', 'randomForestExplainer', 'randomForestSRC', 'ggRandomForests', 'xgboost', 'gbm', 'iml', \
'gganimate', 'gifski', 'av', 'magick', 'ggvis', 'googleVis', \
'pheatmap', 'Rtsne', 'vsn', 'vegan', 'BiocManager'))" && \
R -e "BiocManager::install(c('DESeq2', 'edgeR', 'dada2', 'phyloseq', 'metagenomeSeq', 'biomaRt'), ask = FALSE, update = TRUE)"
##########################################################################################
##########################################################################################
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10
##########################################################################################
##########################################################################################
# NCBI Tools
############
############
RUN mkdir -p $SETUPDIR/ncbi && cd $SETUPDIR/ncbi && \
git clone https://github.com/ncbi/ncbi-vdb.git && \
git clone https://github.com/ncbi/ngs.git && \
git clone https://github.com/ncbi/ngs-tools.git && \
git clone https://github.com/ncbi/sra-tools.git && \
cd $SETUPDIR/ncbi/ncbi-vdb && ./configure && make && make install && \
cd $SETUPDIR/ncbi/ngs && ./configure && make && make install && \
cd $SETUPDIR/ncbi/ngs/ngs-sdk && ./configure && make && make install && \
cd $SETUPDIR/ncbi/ngs/ngs-python && ./configure && make && make install && \
cd $SETUPDIR/ncbi/ngs/ngs-java && ./configure && make && make install && \
cd $SETUPDIR/ncbi/ngs/ngs-bam && ./configure && make && make install && \
cd $SETUPDIR/ncbi/sra-tools && ./configure && make && make install && \
cd $SETUPDIR/ncbi/ngs-tools && ./configure && make && make install
RUN cd $SETUPDIR/ncbi && \
curl -o datasets 'https://ftp.ncbi.nlm.nih.gov/pub/datasets/command-line/LATEST/linux-amd64/datasets' && \
chmod +x datasets && \
mv datasets /usr/local/bin/
##########################################################################################
##########################################################################################
# Sequence Processing
#####################
#####################
# FASTX
#######
RUN cd $SETUPDIR/ && \
git clone https://github.com/agordon/libgtextutils.git && cd $SETUPDIR/libgtextutils/ && \
./reconf && ./configure && make && make install && \
cd $SETUPDIR/ && \
git clone https://github.com/agordon/fastx_toolkit.git && cd $SETUPDIR/fastx_toolkit && \
wget -t 0 https://github.com/agordon/fastx_toolkit/files/1182724/fastx-toolkit-gcc7-patch.txt && \
patch -p1 < fastx-toolkit-gcc7-patch.txt && \
./reconf && ./configure && make && make install
# Trimmomatic
#############
RUN cd $SETUPDIR/ && \
git clone https://github.com/timflutre/trimmomatic.git && \
cd $SETUPDIR/trimmomatic && \
make && make install INSTALL="/usr/local/"
# SeqKit
########
RUN cd $SETUPDIR/ && \
wget -t 0 https://github.com/shenwei356/seqkit/releases/download/v0.16.1/seqkit_linux_amd64.tar.gz && \
tar zxvf seqkit_linux_amd64.tar.gz && \
mv seqkit /usr/local/bin/
# fastp
#######
# RUN cd $SETUPDIR/ && \
# git clone https://github.com/OpenGene/fastp.git && \
# cd $SETUPDIR/fastp && \
# make && make install
RUN wget http://opengene.org/fastp/fastp && \
chmod a+x ./fastp && \
mv ./fastp /usr/local/bin/
# HTStream
##########
RUN cd $SETUPDIR/ && \
wget -t 0 https://github.com/s4hts/HTStream/releases/download/v1.3.3/HTStream_v1.3.3.tar.gz && \
tar zxvf HTStream_v1.3.3.tar.gz && \
mv hts_* /usr/local/bin/
# fqtrim
########
RUN cd $SETUPDIR/ && \
wget -t 0 http://ccb.jhu.edu/software/fqtrim/dl/fqtrim-0.9.7.tar.gz && \
tar zxvf fqtrim-0.9.7.tar.gz && \
cd $SETUPDIR/fqtrim-0.9.7/ && \
make && mv fqtrim /usr/local/bin/
# seqmagick
###########
RUN pip3 install --no-cache-dir -U seqmagick
# seqtk
#######
RUN git clone https://github.com/lh3/seqtk.git && \
cd seqtk && \
make && \
mv seqtk /usr/local/bin/
# Parallel fastq-dump
#####################
RUN cd $SETUPDIR/ && \
git clone https://github.com/rvalieris/parallel-fastq-dump.git && \
cd $SETUPDIR/parallel-fastq-dump/ && \
mv parallel-fastq-dump /usr/local/bin/
##########################################################################################
##########################################################################################
# Sequence Search
#################
#################
# BLAST & HMMER
###############
RUN apt-get -y install ncbi-blast+ hmmer
RUN cd $SETUPDIR/ && wget -t 0 http://github.com/bbuchfink/diamond/releases/download/v2.0.9/diamond-linux64.tar.gz && tar zxvf diamond-linux64.tar.gz && mv diamond /usr/local/bin/
# CD-HIT
########
RUN cd $SETUPDIR/ && \
git clone https://github.com/weizhongli/cdhit.git && \
cd $SETUPDIR/cdhit && \
make && \
make install
##########################################################################################
##########################################################################################
# Alignment Tools
#################
#################
# JAligner
##########
RUN apt-get -y install jaligner
# MUSCLE
########
RUN cd $SETUPDIR/ && \
wget -t 0 https://www.drive5.com/muscle/downloads3.8.31/muscle3.8.31_src.tar.gz && \
tar zxvf muscle3.8.31_src.tar.gz && \
cd $SETUPDIR/muscle3.8.31/src && \
make && mv muscle /usr/local/bin/
# MAFFT
#######
RUN cd $SETUPDIR/ && \
wget -t 0 https://mafft.cbrc.jp/alignment/software/mafft-7.481-with-extensions-src.tgz && \
tar zxvf mafft-7.481-with-extensions-src.tgz && \
cd $SETUPDIR/mafft-7.481-with-extensions/core && \
make clean && make && make install && \
cd $SETUPDIR/mafft-7.481-with-extensions/extensions/ && \
make clean && make && make install
# BWA
#####
RUN cd $SETUPDIR/ && \
git clone https://github.com/lh3/bwa.git && \
cd $SETUPDIR/bwa && \
make && mv bwa /usr/local/bin/
# TopHat
########
# RUN cd $SETUPDIR/ && \
# wget -t 0 https://ccb.jhu.edu/software/tophat/downloads/tophat-2.1.1.Linux_x86_64.tar.gz && \
# tar zxvf tophat-2.1.1.Linux_x86_64.tar.gz && \
# cd $SETUPDIR/tophat-2.1.1.Linux_x86_64 && \
# mv tophat* /usr/local/bin/
# HISAT2
########
RUN cd $SETUPDIR/ && \
git clone https://github.com/infphilo/hisat2.git && \
cd $SETUPDIR/hisat2 && \
make && mv hisat2-* /usr/local/bin/ && mv hisat2 /usr/local/bin/
# Bowtie2
########
RUN cd $SETUPDIR/ && \
git clone https://github.com/BenLangmead/bowtie2.git && \
cd $SETUPDIR/bowtie2/ && \
make && make install
# STAR
######
RUN cd $SETUPDIR/ && \
git clone https://github.com/alexdobin/STAR.git && \
cd $SETUPDIR/STAR/source && \
make STAR && mv STAR /usr/local/bin/
# Salmon
########
RUN cd $SETUPDIR/ && \
wget -t 0 https://github.com/COMBINE-lab/salmon/releases/download/v1.4.0/salmon-1.4.0_linux_x86_64.tar.gz && \
tar zxvf salmon-1.4.0_linux_x86_64.tar.gz && \
mv $SETUPDIR/salmon-latest_linux_x86_64/bin/* /usr/local/bin/ && \
mv $SETUPDIR/salmon-latest_linux_x86_64/lib/* /usr/local/lib/
# kallisto
##########
RUN cd $SETUPDIR/ && \
git clone https://github.com/pachterlab/kallisto.git && \
cd $SETUPDIR/kallisto/ext/htslib && \
autoheader && autoconf && \
cd $SETUPDIR/kallisto/ && \
mkdir build && \
cd $SETUPDIR/kallisto/build && \
cmake .. && make && make install && \
R -e "BiocManager::install('pachterlab/sleuth', ask = FALSE, update = TRUE)"
# BBMap
#######
RUN cd $SETUPDIR/ && \
wget -t 0 https://downloads.sourceforge.net/project/bbmap/BBMap_38.90.tar.gz && \
tar zxvf BBMap_38.90.tar.gz && \
mv bbmap/* /usr/local/bin/
##########################################################################################
##########################################################################################
# BAM Processing
################
################
# HTSlib
########
RUN cd $SETUPDIR/ && \
git clone https://github.com/samtools/htslib.git && \
cd $SETUPDIR/htslib && \
autoreconf -i ; git submodule update --init --recursive ; ./configure ; make ; make install
# Samtools
##########
RUN cd $SETUPDIR/ && \
git clone git://github.com/samtools/samtools.git && \
cd $SETUPDIR/samtools && \
autoheader ; autoconf ; ./configure ; make ; make install
# Bcftools
##########
RUN cd $SETUPDIR/ && \
git clone https://github.com/samtools/bcftools.git && \
cd $SETUPDIR/bcftools && \
autoheader ; autoconf ; ./configure ; make ; make install
# Bamtools
##########
RUN cd $SETUPDIR/ && \
git clone git://github.com/pezmaster31/bamtools.git && \
cd $SETUPDIR/bamtools && \
mkdir build && \
cd $SETUPDIR/bamtools/build && \
cmake .. ; make ; make install
# VCFtools
##########
RUN cd $SETUPDIR/ && \
git clone https://github.com/vcftools/vcftools.git && \
cd $SETUPDIR/vcftools && \
./autogen.sh ; ./configure ; make ; make install
# Bedtools
##########
RUN cd $SETUPDIR/ && \
git clone https://github.com/arq5x/bedtools2.git && \
cd $SETUPDIR/bedtools2 && \
make ; make install
# deepTools
###########
RUN cd $SETUPDIR/ && \
git clone https://github.com/deeptools/deepTools && \
cd $SETUPDIR/deepTools && \
python setup.py install
# BEDOPS
########
RUN cd $SETUPDIR/ && \
git clone https://github.com/bedops/bedops.git && \
cd $SETUPDIR/bedops && \
make ; make install ; mv ./bin/* /usr/local/bin/
# SAMBAMBA
##########
RUN cd $SETUPDIR/ && \
wget -t 0 https://github.com/biod/sambamba/releases/download/v0.8.0/sambamba-0.8.0-linux-amd64-static.gz && \
gzip -d sambamba-0.8.0-linux-amd64-static.gz && \
mv sambamba-0.8.0-linux-amd64-static /usr/local/bin/sambamba && \
chmod +x /usr/local/bin/sambamba
##########################################################################################
##########################################################################################
# Assemblers
############
############
# SPAdes
########
RUN cd $SETUPDIR/ && \
wget -t 0 http://cab.spbu.ru/files/release3.15.2/SPAdes-3.15.2-Linux.tar.gz && \
tar zxvf SPAdes-3.15.2-Linux.tar.gz && \
mv SPAdes-3.15.2-Linux/bin/* /usr/local/bin/ && \
mv SPAdes-3.15.2-Linux/share/* /usr/local/share/
# ABySS
#######
RUN cd $SETUPDIR/ && \
git clone https://github.com/sparsehash/sparsehash.git && \
cd $SETUPDIR/sparsehash && \
./autogen.sh && ./configure && make && make install && \
cd $SETUPDIR/ && \
git clone https://github.com/bcgsc/abyss.git && \
cd $SETUPDIR/abyss && \
./autogen.sh && ./configure && make && make install
# Velvet
########
RUN cd $SETUPDIR/ && \
git clone https://github.com/dzerbino/velvet.git && \
cd $SETUPDIR/velvet/ && \
make && mv velvet* /usr/local/bin/
# MEGAHIT
#########
RUN cd $SETUPDIR/ && \
git clone https://github.com/voutcn/megahit.git && \
cd $SETUPDIR/megahit && \
git submodule update --init && \
mkdir build && \
cd $SETUPDIR/megahit/build && \
cmake .. -DCMAKE_BUILD_TYPE=Release && make -j4 && make simple_test && make install
# MetaVelvet
############
RUN cd $SETUPDIR/ && \
git clone git://github.com/hacchy/MetaVelvet.git && \
cd $SETUPDIR/MetaVelvet && \
make && mv meta-velvetg /usr/local/bin/
##########################################################################################
##########################################################################################
# Phylogenetics
###############
###############
# TreeTime
##########
RUN pip3 install phylo-treetime
# FastTree
##########
RUN cd $SETUPDIR/ && \
wget -t 0 http://www.microbesonline.org/fasttree/FastTree.c && \
gcc -O3 -finline-functions -funroll-loops -Wall -o FastTree FastTree.c -lm && \
gcc -DOPENMP -fopenmp -O3 -finline-functions -funroll-loops -Wall -o FastTreeMP FastTree.c -lm && \
mv FastTree /usr/local/bin && \
mv FastTreeMP /usr/local/bin
# RAxML
#######
RUN cd $SETUPDIR/ && \
git clone https://github.com/stamatak/standard-RAxML.git && \
cd $SETUPDIR/standard-RAxML && \
rm -fr *.o && make -f Makefile.gcc && cp raxmlHPC /usr/local/bin/ && \
rm -fr *.o && make -f Makefile.SSE3.gcc && cp raxmlHPC-SSE3 /usr/local/bin/ && \
rm -fr *.o && make -f Makefile.PTHREADS.gcc && cp raxmlHPC-PTHREADS /usr/local/bin/ && \
rm -fr *.o && make -f Makefile.SSE3.PTHREADS.gcc && cp raxmlHPC-PTHREADS-SSE3 /usr/local/bin/ && \
rm -fr *.o && make -f Makefile.MPI.gcc && cp raxmlHPC-MPI /usr/local/bin/ && \
rm -fr *.o && make -f Makefile.SSE3.MPI.gcc && cp raxmlHPC-MPI-SSE3 /usr/local/bin/
# RAxML NG
##########
RUN cd $SETUPDIR/ && \
git clone --recursive https://github.com/amkozlov/raxml-ng && \
cd $SETUPDIR/raxml-ng && \
mkdir build && \
cd $SETUPDIR/raxml-ng/build && \
cmake .. && make && mv ../bin/raxml-ng /usr/local/bin/ && \
cmake -DSTATIC_BUILD=ON -DENABLE_RAXML_SIMD=OFF -DENABLE_PLLMOD_SIMD=OFF .. && make && mv ../bin/raxml-ng-static /usr/local/bin/ && \
cmake -DUSE_MPI=ON .. && make && mv ../bin/raxml-ng /usr/local/bin/raxml-ng-mpi
# PhyML
#######
RUN cd $SETUPDIR/ && \
git clone https://github.com/stephaneguindon/phyml.git && \
cd $SETUPDIR/phyml/ && \
sh ./autogen.sh && ./configure && make && make install
# Pplacer
#########
RUN cd $SETUPDIR/ && \
wget -t 0 https://github.com/matsen/pplacer/releases/download/v1.1.alpha19/pplacer-linux-v1.1.alpha19.zip && \
unzip pplacer-linux-v1.1.alpha19.zip && \
cd $SETUPDIR/pplacer-Linux-v1.1.alpha19/ && \
mv guppy /usr/local/bin/ && \
mv pplacer /usr/local/bin/ && \
mv rppr /usr/local/bin/ && \
cd $SETUPDIR/pplacer-Linux-v1.1.alpha19/scripts/ && \
python setup.py install
##########################################################################################
##########################################################################################
# Gene Prediction
#################
#################
RUN cd $SETUPDIR/ && \
wget -t 0 https://github.com/hyattpd/Prodigal/releases/download/v2.6.3/prodigal.linux && \
mv prodigal.linux /usr/local/bin/prodigal && \
chmod +x /usr/local/bin/prodigal
# Infernal
##########
RUN cd $SETUPDIR/ && \
wget -t 0 http://eddylab.org/infernal/infernal-1.1.4.tar.gz && \
tar zxvf infernal-1.1.4.tar.gz && \
cd $SETUPDIR/infernal-1.1.4/ && \
./configure && make && make install
# GECCO
#######
RUN pip install gecco-tool
# DeepBGC
#########
RUN apt-get update && \
apt-get -y install software-properties-common && \
add-apt-repository ppa:deadsnakes/ppa && \
apt-get -y install python3.7
RUN python3.7 -m pip install kiwisolver --force
RUN python3.7 -m pip install deepbgc
RUN python3.7 -m pip install deepbgc[hmm]
RUN deepbgc download
# antiSMASH
###########
# RUN apt-get update && \
# apt-get -y install apt-transport-https
# RUN wget http://dl.secondarymetabolites.org/antismash-stretch.list -O /etc/apt/sources.list.d/antismash.list && \
# wget -q -O- http://dl.secondarymetabolites.org/antismash.asc | apt-key add -
# RUN apt-get update && \
# apt-get -y install hmmer2 hmmer diamond-aligner fasttree prodigal ncbi-blast+ muscle glimmerhmm
# RUN cd $SETUPDIR/
# RUN wget https://dl.secondarymetabolites.org/releases/6.0.0/antismash-6.0.0.tar.gz && tar -zxf antismash-6.0.0.tar.gz
# RUN pip install ./antismash-6.0.0
# RUN download-antismash-databases
##########################################################################################
##########################################################################################
# Misc
######
######
# Docker
########
RUN cd $SETUPDIR/ && \
wget -t 0 https://get.docker.com/ -O docker.sh && \
sh docker.sh
# Miniconda
###########
RUN cd $SETUPDIR/ && \
wget -t 0 https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
sh Miniconda3-latest-Linux-x86_64.sh -b -p /usr/local/miniconda3
# Nexflow
#########
RUN cd $SETUPDIR/ && \
wget -qO- https://get.nextflow.io | bash && \
chmod +x nextflow && \
mv nextflow /usr/local/bin/
##########################################################################################
##########################################################################################
# Variant Calling
#################
#################
# GATK
######
# Removing default openjdk because of GATK's requirement for an old version of Java.
RUN apt-get -y purge openjdk*
# Installing openjdk 8
RUN apt-get -y install openjdk-8* ant
RUN mkdir -p /apps/ && \
cd /apps/ && \
git clone https://github.com/broadinstitute/gatk.git && \
cd /apps/gatk && \
./gradlew
# IGV
#####
RUN cd /apps/ && \
wget -t 0 https://data.broadinstitute.org/igv/projects/downloads/snapshot/IGV_Linux_snapshot_WithJava.zip && \
unzip IGV_Linux_snapshot_WithJava.zip && \
mv IGV_Linux_snapshot IGV
# VEP
#####
RUN cd /apps/ && \
apt-get -y install cpanminus libtry-tiny-perl libperl4-corelibs-perl && \
cpanm autodie && \
cpanm Module::Build && \
cpanm Bio::DB::HTS::Tabix && \
git clone https://github.com/Ensembl/ensembl-vep.git && \
cd ensembl-vep && \
perl INSTALL.pl --NO_HTSLIB --AUTO alcfp --SPECIES homo_sapiens --ASSEMBLY GRCh38 --PLUGINS all
##########################################################################################
##########################################################################################
# Finishing
###########
###########
# Removing /usr/local/lib/libgomp.so.1 (seems to be broken) and use /usr/lib/x86_64-linux-gnu/libgomp.so.1 instead
RUN rm -fr /usr/local/lib/libgomp.so.1
RUN cd $SETUPDIR/
RUN echo "#!/usr/bin/bash" > $SETUPDIR/init.sh
RUN echo "export PATH=$PATH:/usr/local/ncbi/sra-tools/bin/:/usr/local/ncbi/ngs-tools/bin/:/usr/local/ncbi/ncbi-vdb/bin:/usr/local/miniconda3/bin:/apps/gatk:/apps/IGV:/apps/ensembl-vep" >> $SETUPDIR/init.sh
RUN echo "source /etc/profile.d/*" >> $SETUPDIR/init.sh
RUN echo "echo '*********************************'" >> $SETUPDIR/init.sh
RUN echo "echo 'Welcome to Bioinformatics Toolbox (v1.2)'" >> $SETUPDIR/init.sh
RUN echo "echo '*********************************'" >> $SETUPDIR/init.sh
RUN echo "echo 'Bioinformatics Toolbox is a docker container for bioinformatics'" >> $SETUPDIR/init.sh
RUN echo "echo " >> $SETUPDIR/init.sh
RUN echo "echo 'For a list of installed tools, please visit: '" >> $SETUPDIR/init.sh
RUN echo "echo 'https://github.com/ahmedmoustafa/bioinformatics-toolbox/blob/master/Tools.md'" >> $SETUPDIR/init.sh
RUN echo "echo " >> $SETUPDIR/init.sh
RUN echo "echo 'If you would like to request adding certain tools or report a problem,'" >> $SETUPDIR/init.sh
RUN echo "echo 'please submit an issue https://github.com/ahmedmoustafa/bioinformatics-toolbox/issues'" >> $SETUPDIR/init.sh
RUN echo "echo " >> $SETUPDIR/init.sh
RUN echo "echo 'If you use Bioinformatics Toolbox in your work, please cite: '" >> $SETUPDIR/init.sh
RUN echo "echo '10.5281/zenodo.5069735'" >> $SETUPDIR/init.sh
RUN echo "echo 'Have fun!'" >> $SETUPDIR/init.sh
RUN echo "echo ''" >> $SETUPDIR/init.sh
RUN echo "echo ''" >> $SETUPDIR/init.sh
RUN echo "/usr/bin/bash" >> $SETUPDIR/init.sh
RUN echo "" >> $SETUPDIR/init.sh
RUN mv $SETUPDIR/init.sh /etc/bioinformatics-toolbox.sh
RUN chmod a+x /etc/bioinformatics-toolbox.sh
WORKDIR /root/
ENTRYPOINT ["/etc/bioinformatics-toolbox.sh"]
RUN rm -fr $SETUPDIR
# Versions
##########
RUN python --version ; \
java -version ; \
R --version ; \
blastn -version ; \
diamond --version ; \
muscle -version ; \
mafft --version ; \
# tophat --version ; \
hisat2 --version ; \
bowtie2 --version ; \
STAR --version ; \
salmon --version ; \
bbmap.sh --version ; \
hts_Stats --version ; \
treetime --version ; \
# RUN FastTree
# RUN phyml --version
raxmlHPC -v ; \
raxml-ng --version ; \
pplacer --version ; \
samtools --version ; \
bcftools --version ; \
bamtools --version ; \
vcftools --version ; \
bedtools --version ; \
deeptools --version ; \
bedops --version ; \
spades.py --version ; \
megahit --version ; \
spades.py --version ; \
seqkit version ; \
fastp --version ; \
fqtrim -V ; \
seqmagick --version ; \
gecco --version ; \
deepbgc info ; \
/apps/gatk/gatk --list ; \
/apps/IGV/igv.sh --version ; \
docker --version ; \
/usr/local/miniconda3/bin/conda --version ; \
nextflow -version ; \
/apps/ensembl-vep/vep
##########################################################################################
##########################################################################################
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
我遇到了这个奇怪的错误.../Users/gideon/Documents/ca_ruby/rubytactoe/lib/player.rb:13:in`gets':Isadirectory-spec(Errno::EISDIR)player_spec.rb:require_relative'../spec_helper'#theuniverseisvastandinfinite...itcontainsagame....butnoplayersdescribe"tictactoegame"docontext"theplayerclass"doit"musthaveahumanplay
我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende
我使用raise(ConfigurationError.new(msg))引发错误我试着用rspec测试一下:expect{Base.configuration.username}.toraise_error(ConfigurationError,message)但这行不通。我该如何测试呢?目标是匹配message。 最佳答案 您可以使用正则表达式匹配错误消息:it{expect{Foo.bar}.toraise_error(NoMethodError,/private/)}这将检查NoMethodError是否由privateme
我最近一直在查看一些gem的源代码。我经常看到的一个习惯用法是使用嵌套模块,其中包含连接到版本字符串中的版本常量,即围绕此类事物的变体:moduleChunkyBaconmoduleVersionMAJOR=0MINOR=6TINY=2endVERSION=[Version::MAJOR,Version::MINOR,Version::TINY].compact*'.'end以这种方式存储库版本信息有什么好处(如果有的话)?为什么不这样做:moduleChunkyBaconVERSION='0.6.2'.freezeend 最佳答案
如何使用如下两个数组构建一个数组:名称=[a,b,c]how_many_of_each[3,5,2]得到my_array=[a,a,a,b,b,b,b,b,c,c] 最佳答案 使用zip、flat_map和数组乘法:irb(main):001:0>value=[:a,:b,:c]=>[:a,:b,:c]irb(main):002:0>times=[3,5,2]=>[3,5,2]irb(main):003:0>value.zip(times).flat_map{|v,t|[v]*t}=>[:a,:a,:a,:b,:b,:b,:b,:b
网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.