From e5137f1738bb17621e988258312382946e56939e Mon Sep 17 00:00:00 2001 From: Curtis Kapsak Date: Tue, 2 Jan 2024 10:00:30 -0500 Subject: [PATCH] adds Freyja 1.4.8 (#826) * added dockerfile & readme for freyja 1.4.8 * add freyja 1.4.8 main readme --- README.md | 2 +- freyja/1.4.8/Dockerfile | 76 +++++++++++++++++++++++++++++++++++++++++ freyja/1.4.8/README.md | 34 ++++++++++++++++++ 3 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 freyja/1.4.8/Dockerfile create mode 100644 freyja/1.4.8/README.md diff --git a/README.md b/README.md index 00f9923e1..82b64d726 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ To learn more about the docker pull rate limits and the open source software pro | [Filtlong](https://hub.docker.com/r/staphb/filtlong)
[![docker pulls](https://badgen.net/docker/pulls/staphb/filtlong)](https://hub.docker.com/r/staphb/filtlong) | | https://github.com/rrwick/filtlong | | [FLASH](https://hub.docker.com/r/staphb/flash)
[![docker pulls](https://badgen.net/docker/pulls/staphb/flash)](https://hub.docker.com/r/staphb/flash) | | http://ccb.jhu.edu/software/FLASH | | [Flye](https://hub.docker.com/r/staphb/flye)
[![docker pulls](https://badgen.net/docker/pulls/staphb/flye)](https://hub.docker.com/r/staphb/flye) | | https://github.com/fenderglass/Flye | -| [Freyja](https://hub.docker.com/r/staphb/freyja)
[![docker pulls](https://badgen.net/docker/pulls/staphb/freyja)](https://hub.docker.com/r/staphb/freyja) | | https://github.com/andersen-lab/Freyja | +| [Freyja](https://hub.docker.com/r/staphb/freyja)
[![docker pulls](https://badgen.net/docker/pulls/staphb/freyja)](https://hub.docker.com/r/staphb/freyja) | | https://github.com/andersen-lab/Freyja | | [GAMBIT](https://hub.docker.com/r/staphb/gambit)
[![docker pulls](https://badgen.net/docker/pulls/staphb/gambit)](https://hub.docker.com/r/staphb/gambit) | | https://github.com/jlumpe/gambit | | [GAMMA](https://hub.docker.com/r/staphb/gamma)
[![docker pulls](https://badgen.net/docker/pulls/staphb/gamma)](https://hub.docker.com/r/staphb/gamma) | | https://github.com/rastanton/GAMMA/ | | [geNomad](https://hub.docker.com/r/staphb/genomad)
[![docker pulls](https://badgen.net/docker/pulls/staphb/genomad)](https://hub.docker.com/r/staphb/genomad) | | https://github.com/apcamargo/genomad | diff --git a/freyja/1.4.8/Dockerfile b/freyja/1.4.8/Dockerfile new file mode 100644 index 000000000..dcb436889 --- /dev/null +++ b/freyja/1.4.8/Dockerfile @@ -0,0 +1,76 @@ +FROM mambaorg/micromamba:1.5.6 as app + +# Version arguments +# ARG variables only persist during build time +ARG FREYJA_SOFTWARE_VERSION="1.4.8" + +# build and run as root users since micromamba image has 'mambauser' set as the $USER +USER root +# set workdir to default for building; set to /data at the end +WORKDIR / + +LABEL base.image="mambaorg/micromamba:1.5.6" +LABEL dockerfile.version="1" +LABEL software="Freyja" +LABEL software.version=${FREYJA_SOFTWARE_VERSION} +LABEL description="Freyja is a tool to recover relative lineage abundances from mixed SARS-CoV-2 samples from a sequencing dataset (BAM aligned to the Hu-1 reference)" +LABEL website="https://github.com/andersen-lab/Freyja" +LABEL license="https://github.com/andersen-lab/Freyja/blob/main/LICENSE" +LABEL maintainer="Kevin Libuit" +LABEL maintainer.email="kevin.libuit@theiagen.com" +LABEL maintainer2="Curtis Kapsak" +LABEL maintainer2.email="curtis.kapsak@theiagen.com" +LABEL maintainer3="Erin Young" +LABEL maintainer3.email="eriny@utah.gov" + +# install dependencies; cleanup apt garbage +RUN apt-get update && apt-get install -y --no-install-recommends \ + wget \ + ca-certificates \ + procps && \ + apt-get autoclean && rm -rf /var/lib/apt/lists/* + +# Create Freyja conda environment called freyja-env from bioconda recipe +# clean up conda garbage +RUN micromamba create -n freyja-env -c conda-forge -c bioconda -c defaults freyja=${FREYJA_SOFTWARE_VERSION} && \ + micromamba clean -a -y + +# set the environment, put new conda env in PATH by default +ENV PATH="/opt/conda/envs/freyja-env/bin:/opt/conda/envs/env/bin:${PATH}" \ + LC_ALL=C.UTF-8 + +# update barcodes +# NOTE: this will download the latest version of the `freyja/data/usher_barcodes.csv` file from GitHub +RUN freyja update + +# set working directory to /data +WORKDIR /data + +# default command is to pull up help options +CMD [ "freyja", "--help" ] + +# new base for testing +FROM app as test + +# Grab test data from Freyja version 1.3.4 +RUN wget -O /data/Freyja_WWSC2.bam https://github.com/StaPH-B/docker-builds/blob/master/freyja/1.3.4/tests/Freyja_WWSC2.bam?raw=true && \ + wget -P /data https://raw.githubusercontent.com/StaPH-B/docker-builds/master/freyja/1.3.4/tests/Freyja_depths.tsv && \ + wget -P /data https://raw.githubusercontent.com/StaPH-B/docker-builds/master/freyja/1.3.4/tests/Freyja_variants.tsv && \ + wget -P /data https://raw.githubusercontent.com/StaPH-B/docker-builds/master/freyja/1.3.4/tests/nCoV-2019.reference.fasta + +# so that mamba/conda env is active when running below commands +ENV ENV_NAME="freyja-env" +ARG MAMBA_DOCKERFILE_ACTIVATE=1 + +# Run Freyja +RUN freyja variants /data/Freyja_WWSC2.bam --variants /data/test_variants.tsv --depths /data/test_depths.tsv --ref /data/nCoV-2019.reference.fasta && \ + freyja demix /data/test_variants.tsv /data/test_depths.tsv --output /data/test_demix.tsv + +# Check validity of outputs +RUN head /data/test_variants.tsv && \ + head /data/test_depths.tsv && \ + head /data/test_demix.tsv && \ + grep "Omicron" /data/test_demix.tsv + +# print barcode version and freyja version +RUN freyja demix --version && freyja --version diff --git a/freyja/1.4.8/README.md b/freyja/1.4.8/README.md new file mode 100644 index 000000000..d406fe44c --- /dev/null +++ b/freyja/1.4.8/README.md @@ -0,0 +1,34 @@ +# freyja container + +Main tool & documentation: [freyja](https://github.com/andersen-lab/Freyja) + +Freyja is a tool to recover relative lineage abundances from mixed SARS-CoV-2 samples from a sequencing dataset (BAM aligned to the Hu-1 reference). The method uses lineage-determining mutational "barcodes" derived from the UShER global phylogenetic tree as a basis set to solve the constrained (unit sum, non-negative) de-mixing problem. + +## Additional tools + +- biopython 1.82 +- ivar 1.4.2 +- mafft 7.520 +- matplotlib-base 3.8.2 +- pandas 2.1.4 +- samtools 1.19 +- scipy 1.11.4 +- seaborn 0.12.2 +- ucsc-fatovcf 448 +- usher 0.6.3 + +## freyja barcodes + +This docker image was built on **2023-12-29** and the command `freyja update` is run as part of the build to retrieve the most up-to-date barcode file `freyja/data/usher_barcodes.csv` file from Freyja's GitHub repo. The barcode version included in this docker image is **`12_29_2023-00-41`** as reported by `freyja demix --version` + +## Example Usage + +```bash +# run freyja variants to call variants from an aligned SC2 bam file +freyja variants [bamfile] --variants [variant outfile name] --depths [depths outfile name] --ref [reference.fa] + +# run freyja demix to identify lineages based on called variants +freyja demix [variants-file] [depth-file] --output [output-file] +``` + +Warning: `freyja update` does not work under all conditions. You may need to specify an output directory (`freyja update --outdir /path/to/outdir`) for which your user has write priveleges, such as a mounted volume.