Using Images

If you have docker installed on your system, you can use any of the benchmarked assembly images without requiring any further dependencies. The following script provides an example of how a set of reads may be assembled using one image.

          # Exit this script if any subsequent command fails
          set -o errexit
          # Exit if any of the variables are unset
          set -o nounset
          # Verbose logging
          set -o xtrace
          # Name of assembler image
          readonly IMAGE=$1
          # Name of config bundle to use
          readonly BUNDLE=$2
          # Location of the fastq.gz file of reads
          readonly READS=$(readlink -f $3)
          readonly SRC=$(dirname ${READS})
          readonly READ_FILE=$(basename ${READS})
          # The destination directory where output contigs should go
          readonly DST=$(readlink -f $4)
          mkdir -p $DST
          # Location of mounted volumes inside the container
          readonly CONTAINER_SRC_DIR=/inputs
          readonly CONTAINER_DST_DIR=/outputs
          readonly CONTAINER_FILE="$(mktemp -d)/container_id"
          # Assemble the reads using docker and the image
          docker run \
            --volume ${DST}:${CONTAINER_DST_DIR}:rw \
            --volume ${SRC}:${CONTAINER_SRC_DIR}:ro \
            --detach=false \
            --cidfile="${CONTAINER_FILE}" \
            ${IMAGE} \
            ${BUNDLE} \
          # Remove container after it has been used
          docker rm $(cat ${CONTAINER_FILE})

Assume this is a script with the above contents named 'assemble', with the correct permissions such as 700. This script can then be used to assemble a fastq file into a set of contigs in the current directory using idba_id as follows:

          ./assemble nucleotides/idba default /path/to/reads.fq.gz .