Question: How to create custom docker image to download bam files from SRA
0
gravatar for MAPK
3 months ago by
MAPK1.7k
MAPK1.7k wrote:

I am trying to create a docker image from docker file and entrypoint. However, it only generates <none>:<none>. This is my docker file and entrypoint.sh. Would someone please let me know what's missing here?

FROM openjdk:8-jre

LABEL maintainer="Maintainer <xxx@xxx.edu>"


LABEL org.label-schema.schema-version="1.0"
# LABEL org.label-schema.build-date=$BUILD_DATE
LABEL org.label-schema.name="testing/sratobam"
LABEL org.label-schema.description="Image for sratobam"


ENV SAMTOOLS_VERSION 1.9
ENV SRATOOL_VERSION 2.10.8

WORKDIR /tmp

RUN apt-get update -y \
  && apt-get install --no-install-recommends -y \
       wget \ 
       libxml-libxml-perl \
       make \
       gcc \
       g++ \
       libz-dev \
       libbz2-dev \
       liblzma-dev \
       ncurses-dev \
       libnss-sss \
       time \
  && wget -q https://github.com/lh3/bwa/releases/download/v${BWA_VERSION}/bwa-${BWA_VERSION}.tar.bz2 \
  && tar xjvf bwa-${BWA_VERSION}.tar.bz2 \
  && cd /tmp/bwa-${BWA_VERSION}/ \
  && make \
  && cp -av /tmp/bwa-${BWA_VERSION}/bwa /usr/bin/ \
  && cd /tmp \
  && wget -q https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VERSION}/samtools-${SAMTOOLS_VERSION}.tar.bz2 \
  && tar xjvf samtools-${SAMTOOLS_VERSION}.tar.bz2 \
  && cd /tmp/samtools-${SAMTOOLS_VERSION}/ \
  && make \
  && cp -av /tmp/samtools-${SAMTOOLS_VERSION}/samtools /usr/bin/ \ 
  && cd /tmp \
  && wget -q http://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/${SRATOOL_VERSION}/sratoolkit.${SRATOOL_VERSION}-ubuntu64.tar.gz \
  && tar -xvzf sratoolkit.${SRATOOL_VERSION}-ubuntu64.tar.gz \
  && cp /tmp/sratoolkit.${SRATOOL_VERSION}-ubuntu64/bin/sam-dump /usr/bin \
  && rm sratoolkit.${SRATOOL_VERSION}-ubuntu64.tar.gz \
  && ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime \
  && echo "America/Chicago" > /etc/timezone \
  && dpkg-reconfigure --frontend noninteractive tzdata \
  && apt-get clean all


# Copy the local dbGAP key file into the container
COPY XXX_XXXX.ngc /usr/local/bin

# And import the key to allow dbGaP downloads
RUN vdb-config --import XXX_XXXX.ngc
COPY ./entrypoint.sh /usr/local/bin/

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
# CMD ["/bin/bash"]

entrypoint.sh

#!/bin/bash

VERSION="0.0.1"
# Entrypoint script for docker container testing/sratobam

GC_THREADS=2 
CACHING=0
if [ -z "${THREADS}" ]; then THREADS=8; fi  

DATE="/bin/date +%s"
display_date () {
    /bin/date -d @${1} +%Y%m%d_%H%M%S
}

date_diff () {
    earlier=${1}
    later=${2}
    diff=$((${later}-${earlier}))
    if [ ${diff} -gt 86400 ]; then
        date -u -d @$((${diff}-86400)) +"%jd%-Hh%-Mm%-Ss"
    else
        date -u -d @${diff} +"%-Hh%-Mm%-Ss"
    fi
}

quit () {
  echo "[$(display_date $(${DATE}))] Run failed at ${1} step, exit code: 1"
  if [ "${SHELLDROP}" -eq 1 ]; then echo "Dropping to shell"; exec "/bin/bash"; else exit 1; fi
}

# trap "{ echo \"[$(display_date $(${DATE}))] Terminated by SIGTERM \"; quit \"${CUR_STEP}\"; }" SIGTERM
trap "echo \"[$(display_date $(${DATE}))] Terminated by SIGTERM \" && sleep 10s" SIGTERM

# Option for usage in docker
if [ "${SHELLDROP:=0}" -eq 1 ]; then echo "Dropping to shell"; exec "/bin/bash"; fi

# Mem
if [ -z "${MEM}" ]; then echo "WARNING, memory limit (in GB) not provided in variable \${MEM}; defaulting to 4G"; MEM=4; fi


# WORKDIR
if [ -z "${WORKDIR}" ]; then echo "WARNING, WORKDIR not provided in variable \${WORKDIR}"; fi

# SRAID
if [ -z "${SRAID}" ]; then echo "WARNING, SRAid not provided in variable \${SRAID}"; fi

if [ ! -z "${TIMING}" ]; then TIMING=(/usr/bin/time -v); fi


# Convert sra to bam
start=$(${DATE}); echo "[$(display_date ${start})] sratobam starting"
CUR_STEP="sratobam"
sam-dump ${SRAID} | samtools view -bS >  "${WORKDIR}/${SRAID}.bam"
exitcode="$?"
end=$(${DATE}); echo "[$(display_date ${end})] SRA to BAM finished, exit code: ${exitcode}, step time $(date_diff ${start} ${end})"


exit ${exitcode}
docker • 183 views
ADD COMMENTlink modified 3 months ago • written 3 months ago by MAPK1.7k
1
  1. Why are you using a Java base image? use the ubuntu:latest
  2. Install samtools with apt
  3. Use the SRA binaries instead of building it
  4. Do you need to add dbGaP keys?
  5. in your entry point, the $SRAID variable is never assigned
ADD REPLYlink written 3 months ago by JC12k

Yes, I need to add dbGaP keys.

ADD REPLYlink written 3 months ago by MAPK1.7k

Just want to comment that I have had troubles in the past getting sra-toolkit installed and operating properly in a docker container. You may want to consider using the docker image provided by the developers at ncbi. See the wiki page here for instructions: https://github.com/ncbi/sra-tools/wiki/SRA-tools-docker

ADD REPLYlink written 3 months ago by kapsakcj60
3
gravatar for JC
3 months ago by
JC12k
Mexico
JC12k wrote:

I guess you need something like this:

Dockerfile

FROM ubuntu:latest

ENV DEBIAN_FRONTEND noninteractive
RUN apt update && apt upgrade -y
RUN apt install -y samtools wget

# Add SRA toolkit binaries
WORKDIR /opt
ENV SRATOOLKIT_VERSION=2.10.8
RUN wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/${SRATOOLKIT_VERSION}/sratoolkit.${SRATOOLKIT_VERSION}-ubuntu64.tar.gz && \
    tar zxf sratoolkit.${SRATOOLKIT_VERSION}-ubuntu64.tar.gz && \
    rm sratoolkit.${SRATOOLKIT_VERSION}-ubuntu64.tar.gz
RUN ln -s /opt/sratoolkit.${SRATOOLKIT_VERSION}-ubuntu64/bin/sam-dump /usr/local/bin
RUN ln -s /opt/sratoolkit.${SRATOOLKIT_VERSION}-ubuntu64/bin/vdb-config /usr/local/bin

# Copy the local dbGAP key file into the container
COPY XXX_XXXX.ngc /opt
# And import the key to allow dbGaP downloads
RUN vdb-config --import /opt/XXX_XXXX.ngc

# define directory to mount
RUN mkdir /dump
WORKDIR /dump

# Add entrypoint
COPY entry.sh /usr/local/bin
RUN chmod +x /usr/local/bin/entry.sh
ENTRYPOINT /usr/local/bin/entry.sh

Entrypoint

#!/bin/bash

SRAID=$1
WORKDIR=/dump

sam-dump ${SRAID} | samtools view -bS >  "${WORKDIR}/${SRAID}.bam"

Execution

mkdir dump
docker run -it -v dump:/dump sradump SRRXXXXXX
ADD COMMENTlink modified 3 months ago • written 3 months ago by JC12k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1649 users visited in the last hour