diff --git a/.gitignore b/.gitignore index 9374aee..675e259 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ scripts/__pycache__ scripts/__pycache__/ scripts/__pycache__/* scripts/__pycache__/muscle.cpython-37.pyc +Thumbs.db* # ignore file extensions *.vscode @@ -15,6 +16,7 @@ scripts/__pycache__/muscle.cpython-37.pyc *.Rbuildignore *.Rproj *.Rproj.user +*:Zone.Identifier # ignore folders **/.Rproj.user diff --git a/DESCRIPTION b/DESCRIPTION index 9c36264..d6287d7 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,15 +1,15 @@ Package: MIRA Type: Package Title: Portable, Interactive Application for High-Quality Influenza, SARS-CoV-2, & RSV Genome Assembly, Annotation, and Curation -Version: 2.0.0 +Version: 2.1.0 Date: 2024-09-23 Authors@R: c(person(given="Kristine", family="Lacek", role=c("cre", "aut"), email="qgx6@cdc.gov", comment=c(ORCID="0000-0002-6247-5082")), + person(given="Amanda", family="Sullivan", role=c("aut"), + email="xpa3@cdc.gov", comment=c(ORCID="0000-0003-2007-4210")), person(given="Reina", family="Chau", role=c("aut"), email="snu3@cdc.gov", comment=c(ORCID="0000-0003-3012-1404")), - person(given="Amanda", family="Sullivan", role=c("aut"), - email="xpa3@cdc.gov", comment=c(ORCID="0000-0003-2007-4210")), person(given="Ben", family="Rambo-Martin", role=c("led", "aut"), email="nbx0@cdc.gov", comment=c(ORCID="0000-0002-8591-3954")) ) diff --git a/Dockerfile b/Dockerfile index 7b0a1b0..19c9283 100755 --- a/Dockerfile +++ b/Dockerfile @@ -14,11 +14,7 @@ RUN if [ -n "$APT_MIRROR_NAME" ]; then sed -i.bak -E '/security/! s^https?://.+? # Install and update system libraries of general use RUN apt-get update --allow-releaseinfo-change --fix-missing \ && apt-get install --no-install-recommends -y \ - build-essential \ - iptables \ - python3.7 \ - python3-pip \ - python3-setuptools \ + vim \ dos2unix # Create a working directory variable @@ -41,11 +37,46 @@ COPY . ${MIRA_PROGRAM_DIR} ############# Install python packages ################## -# Copy python requirements file to docker images +# Copy all files to docker images COPY requirements.txt ${MIRA_PROGRAM_DIR}/requirements.txt -# Install python requirements -RUN pip3 install --no-cache-dir -r ${MIRA_PROGRAM_DIR}/requirements.txt +# Update pip and setuptools and then install python packages +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir -r ${MIRA_PROGRAM_DIR}/requirements.txt + +############# Fix vulnerablities pkgs ################## + +# Copy all files to docker images +COPY fixed_vulnerability_pkgs.txt ${MIRA_PROGRAM_DIR}/fixed_vulnerability_pkgs.txt + +# Copy all files to docker images +COPY fixed_vulnerability_pkgs.sh ${MIRA_PROGRAM_DIR}/fixed_vulnerability_pkgs.sh + +# Convert bash script from Windows style line endings to Unix-like control characters +RUN dos2unix ${MIRA_PROGRAM_DIR}/fixed_vulnerability_pkgs.sh + +# Allow permission to excute the bash script +RUN chmod a+x ${MIRA_PROGRAM_DIR}/fixed_vulnerability_pkgs.sh + +# Execute bash script to wget the file and tar the package +RUN bash ${MIRA_PROGRAM_DIR}/fixed_vulnerability_pkgs.sh + +############# Remove vulnerability pkgs ################## + +# Copy all files to docker images +COPY remove_vulnerability_pkgs.txt ${MIRA_PROGRAM_DIR}/remove_vulnerability_pkgs.txt + +# Copy all files to docker images +COPY remove_vulnerability_pkgs.sh ${MIRA_PROGRAM_DIR}/remove_vulnerability_pkgs.sh + +# Convert bash script from Windows style line endings to Unix-like control characters +RUN dos2unix ${MIRA_PROGRAM_DIR}/remove_vulnerability_pkgs.sh + +# Allow permission to excute the bash script +RUN chmod a+x ${MIRA_PROGRAM_DIR}/remove_vulnerability_pkgs.sh + +# Execute bash script to wget the file and tar the package +RUN bash ${MIRA_PROGRAM_DIR}/remove_vulnerability_pkgs.sh ############# Launch MIRA dashboard ################## diff --git a/NEWS.md b/NEWS.md index fe50014..128e59e 100755 --- a/NEWS.md +++ b/NEWS.md @@ -1,9 +1,16 @@ -# MIRA 2.0.0 +# MIRA 2.1.0 * Github Repo: https://github.com/CDCgov/MIRA * Documentation: https://cdcgov.github.io/MIRA +### v2.1.0 +- Artic RSV primers added +- VIDRL RSV primers added +- Containers rebuilt without vulnerability CVEs +- S-gene Illumina module added +- Influenza AA variants called againt updated [seasonal references](https://www.who.int/publications/m/item/recommended-composition-of-influenza-virus-vaccines-for-use-in-the-2025-2026-nh-influenza-season) and [zoonotic cvvs](https://aspr.hhs.gov/legal/Pandemic-Influenza-Strategy/Pages/Objective-1.aspx) + ### v2.0.0 - Single container distribution (previously 4 docker images) - RSV Illumina module diff --git a/_pkgdown.yml b/_pkgdown.yml index d489917..9e5752f 100755 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,4 +1,4 @@ -url: https://cdcgov.github.io/MIRA/ +url: https://github.com/CDCgov/MIRA #https://cdcgov.github.io/MIRA/ template: bootstrap: 5 @@ -11,10 +11,11 @@ authors: href: https://github.com/nbx0 Kristine Lacek: href: https://github.com/kristinelacek - Reina Chau: - href: https://github.com/rchau88 Amanda Sullivan: href: https://github.com/mandysulli + Reina Chau: + href: https://github.com/rchau88 + news: one_page: false @@ -38,10 +39,12 @@ navbar: icon: fa-home href: index.html mira_desktop: - text: "MIRA in Docker Desktop" + text: "MIRA in Docker|Podman Desktop" menu: - - text: Getting Started and Installation + - text: Getting Started and Installation with Docker href: articles/mira-dd-getting-started.html + - text: Getting Started and Installation with Podman + href: articles/mac-podman-setup.html - text: Running Genome Assembly with MIRA -- NANOPORE DATA href: articles/running-mira-dd-ont.html - text: Running Genome Assembly with MIRA -- ILLUMINA DATA diff --git a/app.py b/app.py index 124e942..35b36dc 100755 --- a/app.py +++ b/app.py @@ -460,6 +460,8 @@ def run_snake_script_onClick( docker_cmd += f"-p {Amplicon_Library_SC2} " elif "rsv-illumina" in experiment_type.lower(): docker_cmd += f"-p {Amplicon_Library_RSV} " + elif "sc2-spike-only-illumina" in experiment_type.lower(): + docker_cmd += f"-p s_gene " docker_cmd += f"-c CLEANUP-FOOTPRINT" print(f'launching docker_cmd == "{docker_cmd}"\n\n') subprocess.Popen(docker_cmd.split(), close_fds=True) @@ -1055,12 +1057,13 @@ def blank_fig(): dcc.Dropdown( [ {"label": "Flu-ONT", "value": "Flu-ONT"}, - {"label": "SC2-Spike-Only-ONT", "value": "SC2-Spike-Only-ONT"}, {"label": "Flu-Illumina", "value": "Flu-Illumina"}, + {"label": "SC2-Spike-Only-ONT", "value": "SC2-Spike-Only-ONT"}, + {"label": "SC2-Spike-Only-Illumina", "value":"SC2-Spike-Only-Illumina"}, {"label": "SC2-Whole-Genome-ONT", "value":"SC2-Whole-Genome-ONT"}, {"label": "SC2-Whole-Genome-Illumina", "value": "SC2-Whole-Genome-Illumina"}, {"label": "RSV-Illumina", "value": "RSV-Illumina"}, - {"label": "RSV-ONT", "value": "RSV-ONT",}, + {"label": "RSV-ONT", "value": "RSV-ONT"}, ], id="experiment_type", placeholder="What kind of data is this?", @@ -1075,6 +1078,7 @@ def blank_fig(): {"label": "Artic V4", "value": "articv4"}, {"label": "Artic V4.1", "value": "articv4.1"}, {"label": "Artic V5.3.2", "value": "articv5.3.2"}, + {"label": "Artic V5.4.2", "value": "articv5.4.2"}, {"label": "Qiagen QIAseq", "value": "qiagen"}, {"label": "xGen™ SARS-CoV-2 Amplicon Panel", "value": "swift"}, { @@ -1094,8 +1098,9 @@ def blank_fig(): dcc.Dropdown( [ {"label": "RSV CDC 8 amplicon 230901", "value": "RSV_CDC_8amplicon_230901"}, - {"label": "Dong et al. 230312", "value": "dong_et_al"}, + {"label": "WHO-CC Australia | 2024", "value": "australia_cc_2024"}, {"label": "Davina-Nunez et al. - WG pools", "value": "davina_nunez_wgs"}, + {"label": "Artic V1", "value":"artic_v1"} ], # add handling here for no primers used id="Amplicon_Library_RSV", placeholder="For Illumina RSV, which primer schema was used?", @@ -1306,6 +1311,13 @@ def blank_fig(): target="_blank", ), ], className="display-8") ] + + [html.Br()] + + [html.P( ["Influenza References and ", dcc.Link( + "Candidate Vaccine Viruses (CVVs)", + href="https://cdcgov.github.io/MIRA/articles/sequence-qc.html#amino-acid-variant-references", + target="_blank", + ), ], className="display-8") + ] + [html.Br()] + [dbc.Row(html.Div(id="vars_table"))] + [html.Br()] diff --git a/data/email/release_email_v2_1_0.html b/data/email/release_email_v2_1_0.html new file mode 100755 index 0000000..cf9e7ea --- /dev/null +++ b/data/email/release_email_v2_1_0.html @@ -0,0 +1,126 @@ +Subject: e(draft) MIRA v2.1.0 Released! +Content-type: text/html +Bcc: "Ben gmail" , "Ben" , "Kristine" +From: idseqsupport@cdc.gov + + + + + + MIRA v2.1.0 Released! + + + + +
+ MIRA Logo +

Dear MIRA users,

+

Due to your ongoing sequencing efforts, GISAID sequences assembled with MIRA now total over 14,000 samples + from 47 countries!

+

MIRA v2.1.0

+

We are delighted to announce the release of MIRA v2.1.0! Please be sure to upgrade your installation + following these these + instructions our website. For Mac users who have experienced problems with Docker, we now + recommend using Podman and have + instructions here.

+
Notable additions to this version include:
+ +
GISAID Submissions
+

GISAID Influenza submissions now allow you to include "Assembly Method" in the sample metadata, please + be + sure to denote MIRA here.

+ Select MIRA as the assembler when submitting to GISAID +

If you are submitting MIRA sequences to GISAID and have not been receiving monthly clade and mutation reports + from us, please reply to this email.

+
HPC Support
+

If your laboratory utilizes a High-Performance Computing Cluster (HPC), we can assist + your bioinformatics personnel with setting up MIRA-NF, which leverages a Nextflow framework to run MIRA + without the GUI on a computing cluster.

+
+

CDC's Influenza Division remains committed to providing technical support to the laboratories that we have + trained. Thank you for your ongoing collaboration and we are eager to assist with any future questions you may + have.

+
+
+ Most sincerely,

+ Ben, Kristine, Reina, and Mandy
+ Bioinformatics Infrastructure Activity
+ Influenza Division
+ United States CDC
+
+ CDC Logo +
+
+ + + \ No newline at end of file diff --git a/docker-compose-cdcgov.yml b/docker-compose-cdcgov.yml index ce749a8..c3d20e3 100644 --- a/docker-compose-cdcgov.yml +++ b/docker-compose-cdcgov.yml @@ -1,8 +1,7 @@ -version: "3.9" x-mira-image: &mira-image - cdcgov/mira:v2.0.0 + cdcgov/mira:latest x-data-volume: &data-volume @@ -19,3 +18,4 @@ services: - 8020:8050 volumes: - *data-volume + command: tail -f /dev/null diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 51b06c4..e5bc9e9 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -1,20 +1,7 @@ -version: "3.9" x-spyne-image: &spyne-image - spyne_image: cdcgov/spyne-dev:v2.0.0 - -x-mira-volume: - &mira-volume - type: bind - source: /home/snu3/Github/MIRA - target: /MIRA - -x-spyne-volume: - &spyne-volume - type: bind - source: /home/snu3/Github/spyne - target: /spyne + spyne_image: spyne:latest x-data-volume: &data-volume @@ -36,5 +23,4 @@ services: - 8020:8050 volumes: - *data-volume - - *mira-volume - - *spyne-volume + command: tail -f /dev/null diff --git a/docker-compose-git.yml b/docker-compose-git.yml index a7e6d31..f70feee 100644 --- a/docker-compose-git.yml +++ b/docker-compose-git.yml @@ -1,4 +1,3 @@ -version: "3.9" x-spyne-git-repo: &spyne-git-repo @@ -8,21 +7,29 @@ x-mira-git-repo: &mira-git-repo https://github.com/CDCgov/MIRA.git#prod +x-base-image: + &base-image + base_image: python:3.10-slim-bookworm + +x-python-version: + &python-version + python_version: python3.10 + x-irma-image: &irma-image - cdcgov/irma:v1.2.0 - + irma_image: cdcgov/irma:v1.2.1 + x-dais-image: &dais-image - cdcgov/dais-ribosome:v1.5.4 - + dais_image: cdcgov/dais-ribosome:v1.5.5 + x-spyne-image: &spyne-image - spyne:v2.0.0 + spyne:latest x-mira-image: &mira-image - mira:v2.0.0 + mira:latest x-data-volume: &data-volume @@ -38,8 +45,7 @@ services: context: *spyne-git-repo dockerfile: Dockerfile args: - irma_image: *irma-image - dais_image: *dais-image + << : [*base-image, *python-version, *irma-image, *dais-image] restart: always networks: - backend @@ -65,6 +71,7 @@ services: - 8020:8050 volumes: - *data-volume + command: tail -f /dev/null networks: backend: diff --git a/docker-compose.yml b/docker-compose.yml index 2a9b528..9ad3775 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,13 +1,12 @@ -version: "3.9" x-spyne-image: &spyne-image - spyne_image: cdcgov/spyne:v2.0.0 + spyne_image: cdcgov/spyne:latest x-data-volume: &data-volume type: bind - source: ~/FLU_SC2_SEQUENCING + source: /home/snu3/Github/FLU_SC2_SEQUENCING target: /data services: @@ -24,3 +23,4 @@ services: - 8020:8050 volumes: - *data-volume + command: tail -f /dev/null diff --git a/fixed_vulnerability_pkgs.sh b/fixed_vulnerability_pkgs.sh new file mode 100644 index 0000000..fcb60d7 --- /dev/null +++ b/fixed_vulnerability_pkgs.sh @@ -0,0 +1,49 @@ + +#!/bin/bash +# Wrapper to install python packages + +# Path to requirement file +SPYNE_PROGRAM_DIR=${SPYNE_PROGRAM_DIR:-/spyne} +fixed_pkgs=${SPYNE_PROGRAM_DIR}/fixed_vulnerability_pkgs.txt +fixed_pkgs_clean=${SPYNE_PROGRAM_DIR}/fixed_vulnerability_pkgs_clean.txt + +# Install updated version of python pkgs +if [[ -f ${fixed_pkgs} ]] +then + + echo "Update python packages" + + # Remove blank lines from the file and save a cleaner version of it + awk NF < ${fixed_pkgs} > ${fixed_pkgs_clean} + + # Get number of packages in the file + n=`wc -l < ${fixed_pkgs_clean}` + i=1 + + while [[ i -le $n ]]; + do + echo $i + # Get the name of the package and its version + updated_pkg=$(head -${i} ${fixed_pkgs_clean} | tail -1 | sed -e 's,\r,,g') + echo $updated_pkg + # Get the package name only + pkg_name=$(echo ${updated_pkg} | sed -e "s/\(.*\)\(==\)\(.*\)/\1/g") + echo $pkg_name + # Check if package already existed in pip install + check_pip_pkg=$(pip list | grep -w ${pkg_name} | sed -e "s/\s\+/==/g") + echo $check_pip_pkg + # If package exists, update to new version + case ${check_pip_pkg} in + "") ;; + *) pip install --no-cache-dir ${updated_pkg};; + esac + # Go to next pkg + i=$(($i+1)) + done + + # Return message to keep the process going + echo "Done" + +fi + + diff --git a/fixed_vulnerability_pkgs.txt b/fixed_vulnerability_pkgs.txt new file mode 100644 index 0000000..fe7610f --- /dev/null +++ b/fixed_vulnerability_pkgs.txt @@ -0,0 +1,2 @@ +setuptools==70.0.0 +idna==3.10 \ No newline at end of file diff --git a/images/gisaid_assembly_method_mira.png b/images/gisaid_assembly_method_mira.png new file mode 100644 index 0000000..baccf3c Binary files /dev/null and b/images/gisaid_assembly_method_mira.png differ diff --git a/inst/CITATION b/inst/CITATION index cc86d18..1a9aca8 100755 --- a/inst/CITATION +++ b/inst/CITATION @@ -3,12 +3,12 @@ citHeader("To cite MIRA in publications use:") citEntry( entry = "manual", - title = "MIRA: An Interactive Dashboard for Influenza Genome and SARS-CoV-2 Spike-Gene Assembly and Curation", - author = "Ben Rambo-Martin, Kristine Lacek, Reina Chau", + title = "MIRA: High-Quality Influenza, SARS-CoV-2, and RSV Genome Assembly, Annotation, and Curation", + author = "Ben Rambo-Martin, Kristine Lacek, Reina Chau, Amanda Sullivan", institution = "Centers for Disease Control and Prevention", address = "1600 Clifton Road NE, Building 21, 8th Floor, Atlanta, Georgia 30333", year = "2023", textVersion = paste( - "Rambo-Martin, B., Lacek, K., & Chau, R. MIRA: An Interactive Dashboard for Influenza Genome and SARS-CoV-2 Spike-Gene Assembly and Curation." + "Rambo-Martin, B., Lacek, K., Chau, R., & Sullivan, A. MIRA: High-Quality Influenza, SARS-CoV-2, and RSV Genome Assembly, Annotation, and Curation" ) ) \ No newline at end of file diff --git a/remove_vulnerability_pkgs.sh b/remove_vulnerability_pkgs.sh new file mode 100644 index 0000000..b93cc71 --- /dev/null +++ b/remove_vulnerability_pkgs.sh @@ -0,0 +1,38 @@ + +#!/bin/bash +# Wrapper to remove vulnerability packages + +SPYNE_PROGRAM_DIR=${SPYNE_PROGRAM_DIR:-/spyne} +remove_pkgs=${SPYNE_PROGRAM_DIR}/remove_vulnerability_pkgs.txt +remove_pkgs_clean=${SPYNE_PROGRAM_DIR}/remove_vulnerability_pkgs_clean.txt +python_version=${python_version:-python3.10} + +# Extract bbmap package to the bbtools directory +if [[ -f ${remove_pkgs} ]] +then + + echo "Remove vulnerability packages" + + # Remove blank lines from the file and save a cleaner version of it + awk NF < ${remove_pkgs} > ${remove_pkgs_clean} + + # Get number of packages in the file + n=`wc -l < ${remove_pkgs_clean}` + i=1 + + while [[ i -le $n ]]; + do + echo $i + # Get the name of the package + pkg_name=$(head -${i} ${remove_pkgs_clean} | tail -1 | sed 's,\r,,g') + echo $pkg_name + # Remove the package if it exists + find /usr/local/lib/${python_version}/site-packages -name "*${pkg_name}*" -exec rm -rf {} \; + # Go to next file + i=$(($i+1)) + done + + # Return message to keep the process going + echo "Done" + +fi diff --git a/remove_vulnerability_pkgs.txt b/remove_vulnerability_pkgs.txt new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt index 95662d2..1edd6af 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,18 +1,18 @@ colorlover -dash==2.11.0 +dash==2.15.0 dash-bio==0.2.0 dash-bootstrap-components==1.2.1 dash-core-components==2.0.0 dash-daq==0.5.0 dash-html-components==2.0.0 dash-table==5.0.0 -flask==2.1.3 +flask==3.0.3 flask-caching==1.10.1 flask-compress==1.5.0 -numpy==1.19.5 -openpyxl==3.0.10 -pandas==1.1.0 +numpy==1.23.1 +openpyxl==3.1.0 +pandas==2.0.3 plotly==5.11.0 -pyyaml==6.0 -requests==2.28.1 -Werkzeug==2.2.2 \ No newline at end of file +pyyaml==6.0.2 +requests==2.32.0 +Werkzeug==3.0.6 \ No newline at end of file diff --git a/vignettes/images/podman-install-01.png b/vignettes/images/podman-install-01.png new file mode 100644 index 0000000..89b3c15 Binary files /dev/null and b/vignettes/images/podman-install-01.png differ diff --git a/vignettes/images/podman-install-02.png b/vignettes/images/podman-install-02.png new file mode 100644 index 0000000..46c0807 Binary files /dev/null and b/vignettes/images/podman-install-02.png differ diff --git a/vignettes/images/podman-install-03.png b/vignettes/images/podman-install-03.png new file mode 100644 index 0000000..ecd59c2 Binary files /dev/null and b/vignettes/images/podman-install-03.png differ diff --git a/vignettes/images/podman-install-04.png b/vignettes/images/podman-install-04.png new file mode 100644 index 0000000..6b46054 Binary files /dev/null and b/vignettes/images/podman-install-04.png differ diff --git a/vignettes/images/podman-install-05.png b/vignettes/images/podman-install-05.png new file mode 100644 index 0000000..df405fe Binary files /dev/null and b/vignettes/images/podman-install-05.png differ diff --git a/vignettes/images/podman-install-06.png b/vignettes/images/podman-install-06.png new file mode 100644 index 0000000..09e62d0 Binary files /dev/null and b/vignettes/images/podman-install-06.png differ diff --git a/vignettes/images/podman-install-07.png b/vignettes/images/podman-install-07.png new file mode 100644 index 0000000..d52dd03 Binary files /dev/null and b/vignettes/images/podman-install-07.png differ diff --git a/vignettes/images/podman-install-08.png b/vignettes/images/podman-install-08.png new file mode 100644 index 0000000..b5d3c1d Binary files /dev/null and b/vignettes/images/podman-install-08.png differ diff --git a/vignettes/images/podman-install-09.png b/vignettes/images/podman-install-09.png new file mode 100644 index 0000000..72058c3 Binary files /dev/null and b/vignettes/images/podman-install-09.png differ diff --git a/vignettes/images/podman-install-10.png b/vignettes/images/podman-install-10.png new file mode 100644 index 0000000..97af2a0 Binary files /dev/null and b/vignettes/images/podman-install-10.png differ diff --git a/vignettes/images/podman-install-11.png b/vignettes/images/podman-install-11.png new file mode 100644 index 0000000..0a24a97 Binary files /dev/null and b/vignettes/images/podman-install-11.png differ diff --git a/vignettes/images/podman-install-12.png b/vignettes/images/podman-install-12.png new file mode 100644 index 0000000..154bd61 Binary files /dev/null and b/vignettes/images/podman-install-12.png differ diff --git a/vignettes/images/podman-install-13.png b/vignettes/images/podman-install-13.png new file mode 100644 index 0000000..3038ea8 Binary files /dev/null and b/vignettes/images/podman-install-13.png differ diff --git a/vignettes/images/podman-install-14.png b/vignettes/images/podman-install-14.png new file mode 100644 index 0000000..1f563dd Binary files /dev/null and b/vignettes/images/podman-install-14.png differ diff --git a/vignettes/images/podman-install-application.png b/vignettes/images/podman-install-application.png new file mode 100644 index 0000000..80e22a3 Binary files /dev/null and b/vignettes/images/podman-install-application.png differ diff --git a/vignettes/images/podman-install-webpage.png b/vignettes/images/podman-install-webpage.png new file mode 100644 index 0000000..be96fb5 Binary files /dev/null and b/vignettes/images/podman-install-webpage.png differ diff --git a/vignettes/images/podman-internet-warning.png b/vignettes/images/podman-internet-warning.png new file mode 100644 index 0000000..27e0423 Binary files /dev/null and b/vignettes/images/podman-internet-warning.png differ diff --git a/vignettes/images/podman-start-container.png b/vignettes/images/podman-start-container.png new file mode 100644 index 0000000..8bb088b Binary files /dev/null and b/vignettes/images/podman-start-container.png differ diff --git a/vignettes/mac-podman-setup.Rmd b/vignettes/mac-podman-setup.Rmd new file mode 100644 index 0000000..8354633 --- /dev/null +++ b/vignettes/mac-podman-setup.Rmd @@ -0,0 +1,75 @@ +# Running MIRA on an "M-chip" Mac with Podman Desktop + +## Install Podman Desktop +[Podman](https://podman-desktop.io/) is an open source replacement for Docker that allows +you to run software inside an isolated “container image” +on your computer with all of that application’s needed dependencies. +Make sure to install the version for your operating system. + +* [Click here to go to download website.](https://podman-desktop.io/downloads) +Download the "Apple silicon" version +![](images/podman-install-webpage.png) +Open the installer file and drag the "Podman Desktop" icon into the Applications folder +![](images/podman-install-application.png) + +* Open Podman Desktop from the Finder in the Applications folder. + * _The first time you open the program you may receive a warning that is was + downloaded from the internet. Click 'Open'_ + + ![](images/podman-internet-warning.png){width="50%"} + +* Unselect "kubectl CLI" from "Choose extensions to include" and click "Start onboarding". +![](images/podman-install-01.png) +* Click next to install Podman itself (this is the underlying software Podman Desktop needs). +![](images/podman-install-02.png) +* Click 'yes' in the box that pops up and follow the installation instructions. +![](images/podman-install-03.png) +* Click 'Next' on the screen displaying "Podman has been set up correctly" and then "Next" +on the following screen displaing "We could not find any Podman machine." +![](images/podman-install-04.png) ![](images/podman-install-05.png) +* On the "Create a Podman machine" screen, increase CPU(s) and Memory to about 80% of the maximum +available on your machine. Leave the other options at their defaults. Click "Create". This may take several minutes. +![](images/podman-install-06.png) +* When complete, you will see a "Podman installed" screen, click "Next". +![](images/podman-install-07.png) +* You will now see the Podman Desktop home screen. Click on "images" on the far left panel. +![](images/podman-install-08.png) +* Click on "Pull" in the top right +![](images/podman-install-09.png) +* In the "Image to Pull" box, type `docker.io/cdcgov/mira:v2.0.0` and click "Pull image". +![](images/podman-install-10.png) +* When the install completes, click "Done". +![](images/podman-install-11.png) +* Click the run arrow to the right of the MIRA image. +![](images/podman-install-12.png) +* Name the container "MIRA-v2.0.0". Under "Volumes", click the Folder icon and select the folder +where you save sequencing-runs, in this case "MIRA_NGS". On the right side "Path inside the container", +type `/data`. Leave the other options at their defaults. Click "Start Container". +![](images/podman-install-13.png) +* In the top right corner, click on the small icon of a box with an arrow in it to launch MIRA +in your browser. +![](images/podman-install-14.png) + +**Congratulations!** You are now ready to produce high quality genomes with MIRA! + +## Test your MIRA Setup + +- [Click here to download tiny test data from ONT Influenza genome and SARS-CoV-2-spike - 40Mb](https://centersfordiseasecontrol.sharefile.com/d-s839d7319e9b04e2baba07b4d328f02c2) +- [Click here for the above data set + full genomes of Influenza and SARS-CoV-2 from Illumina MiSeqs - 1Gb](https://centersfordiseasecontrol.sharefile.com/d-s3c52c0b25c2243078f506d60bd787c62) +- unzip the file and find two folders: + 1. `tiny_test_run_flu` + 2. `tiny_test_run_sc2` +- move these folders into `MIRA_NGS` + +## Next Steps + +[Run MIRA in Podman Desktop with Illumina Data](running-mira-dd-illumina.html#run-genome-assembly-with-mira) + +[Run MIRA in Podman Desktop with Oxford Nanopore Data](running-mira-dd-ont.html#run-genome-assembly-with-mira) + + + + + + + diff --git a/vignettes/mira-dd-getting-started.Rmd b/vignettes/mira-dd-getting-started.Rmd index 87fe0af..1915087 100644 --- a/vignettes/mira-dd-getting-started.Rmd +++ b/vignettes/mira-dd-getting-started.Rmd @@ -5,7 +5,9 @@ Docker allows you to run software inside an isolated "container image" on your c - [Windows](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header) - [Mac-Intel](https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=module) -- [Mac-AppleChip](https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=module) +- [~~Mac-AppleChip~~](https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=module) + - **_We recommend using podman-desktop instead of docker desktop for newer Macs with M-series chips_** + - [Mac-AppleChip Podman Desktop instructions](mac-podman-setup.html) - [Linux](https://docs.docker.com/desktop/linux/install/) diff --git a/vignettes/running-mira-dd-illumina.Rmd b/vignettes/running-mira-dd-illumina.Rmd index 01e04ab..7728a22 100644 --- a/vignettes/running-mira-dd-illumina.Rmd +++ b/vignettes/running-mira-dd-illumina.Rmd @@ -41,6 +41,9 @@ _This documentation assumes you have pulled the MIRA docker image into your Dock ![](images/mira_dd_docker_rolldown.png) +* Mac users with Podman Desktop, [open Podman Desktop](images/podman-start-container.png), click on "Containers" on the left panel. Click the three dots under "Actions" in the row with MIRA and click "Open Browser". + + ### Select run, data type, and enter sample information * Click the `REFRESH RUN LISTING` button and select your run from the dropdown box. diff --git a/vignettes/running-mira-dd-ont.Rmd b/vignettes/running-mira-dd-ont.Rmd index 8a769ed..2235eca 100644 --- a/vignettes/running-mira-dd-ont.Rmd +++ b/vignettes/running-mira-dd-ont.Rmd @@ -41,6 +41,8 @@ _This documentation assumes you have pulled the MIRA docker image into your Dock ![](./images/mira_dd_docker_rolldown.png) +* Mac users with Podman Desktop, [open Podman Desktop](images/podman-start-container.png), click on "Containers" on the left panel. Click the three dots under "Actions" in the row with MIRA and click "Open Browser". + ### Select run, data type, and enter sample information * Click the `REFRESH RUN LISTING` button and select your run from the dropdown box. diff --git a/vignettes/sequence-qc.Rmd b/vignettes/sequence-qc.Rmd index 60c6cdb..6b0fcba 100644 --- a/vignettes/sequence-qc.Rmd +++ b/vignettes/sequence-qc.Rmd @@ -74,3 +74,31 @@ Second, consensus sequences undergo additional genome-level QC to ensure complet - Less than 20 minor variants >=5% for SARS-CoV-2 whole-genome and ONT RSV - Less than 50 variants >=5% for Illumina RSV - No premature stop codons in Spike (SC2), HA (Flu), NA (Flu), G (RSV), or F (RSV) + +## Amino acid variant references +For influenza samples, MIRA will call amino acid variants in your sequences against the most genetically similar +candidate vaccine virus (CVV) recommended by the WHO for +[human seasonal](https://www.who.int/publications/m/item/recommended-composition-of-influenza-virus-vaccines-for-use-in-the-2025-2026-nh-influenza-season) +or [zoonotic viruses](https://aspr.hhs.gov/legal/Pandemic-Influenza-Strategy/Pages/Objective-1.aspx). + +Current strains and their GISAID accessions are listed in the following table: + +| Reference | Sybtype | Accession | +|-----------------------------------------------------|---------|------------------| +| A/Wisconsin/67/2022 | H1N1 | EPI_ISL_15928563 | +| A/District of Columbia/27/2023 | H3N2 | EPI_ISL_18862356 | +| A/Anhui/1/2013 | H7N9 | EPI_ISL_138739  | +| A/Ann Arbor/6/1960 | H2N2 | EPI_ISL_130415 | +| A/Astrakhan/3212/2020_N8 | H5N8 | EPI_ISL_1038924 | +| A/Northern Pintail/Alaska/UGAI17/4733/2017 | H6N5 | EPI_ISL_502620  | +| A/Sichuan/26221/2014 | H5N6 | EPI_ISL_163493  | +| A/Turkey/Ontario/6118/1968 | H8N4 | EPI_ISL_132847 | +| A/Bangladesh/0994/2011 | H9N2 | EPI_ISL_140388  | +| A/American Wigeon/South Carolina/22-000345-001/2021 | H5N1 | EPI_ISL_17008863 | +| A/California/07/2009 | H1N1 | EPI_ISL_31553 | +| A/Hong Kong/4801/2014 | H3N2 | EPI_ISL_165554 | +| A/Netherlands/219/2003 | H7N7 | EPI_ISL_67238 | +| A/Viet Nam/1203/2004 | H5N1 | EPI_ISL_21080 | +| B/Phuket/3073/2013 | BYAM | EPI_ISL_161843 | +| B/Austria/1359417/2021 | BVIC | EPI_ISL_983345 | +| B/Brisbane/60/2008 | BVIC | EPI_ISL_115157 | diff --git a/vignettes/upgrading-mira-dd.Rmd b/vignettes/upgrading-mira-dd.Rmd index 961c561..3f10a93 100644 --- a/vignettes/upgrading-mira-dd.Rmd +++ b/vignettes/upgrading-mira-dd.Rmd @@ -11,4 +11,34 @@ 4. You will be asked to confirm that you want to delete the image. ![](images/confirm_delete_img.png) -5. Then re-pull the latest MIRA image as instructed [here](mira-dd-getting-started.html) \ No newline at end of file +5. Then re-pull the latest MIRA image : + +## Pull MIRA Image within Docker Desktop + +* In the search bar at the top of the Docker Desktop App type in cdcgov/mira. Once the image has come up, check that the tag is set to latest +and click the 'pull' button. + +![](./images/pulled-mira-single-img.png) + +* MIRA's single image is about 2 GB and will take a couple of minutes to pull to the images area. Once docker has finished downloading the image, you should see it under your images tab. + +![](./images/run-mira-single-container-image.png) +
+### Provide the Settings for the Container + +* Open the 'Optional settings' section. The container settings should be filled out as seen in the screenshot below. + + ![](./images/mira-dd-container-settings.png) + + * You will need to provide a name for the container. "MIRA" is the obvious choice! + * Set the "Host Port" to 8020 + * Under Volumes click the "Host Path" box and find and select your existing "FLU_SC2_SEQUENCING" or "MIRA_NGS" folder. + ![](./images/select_folders_with_runs.png) + + **If you would like your "Host Path" to be a folder within your linux environment, use the drop down in your file browser to find it. See the screenshot below for an example.** + + ![](./images/mira-dd-mount-to-unbuntu.png) + + * Under Volumes you will make the "Container Path" type in '/data'. + + * Click "Run"! MIRA container icon should turn green, then click the 8020:8050 hyperlink to open the MIRA applicaion