diff --git a/.github/workflows/delete-docs.yml b/.github/workflows/delete-docs.yml
new file mode 100644
index 00000000..a4b10977
--- /dev/null
+++ b/.github/workflows/delete-docs.yml
@@ -0,0 +1,48 @@
+name: Delete Documentation Version
+
+on:
+ delete:
+
+permissions:
+ contents: write
+
+jobs:
+ delete-version:
+ # Only run if a branch was deleted (not a tag)
+ if: github.event.ref_type == 'branch'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.11'
+
+ - name: Install MkDocs and Mike
+ run: |
+ pip install mkdocs-material mike
+
+ - name: Configure Git User
+ run: |
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
+ git config --local user.name "github-actions[bot]"
+
+ - name: Delete Version
+ run: |
+ BRANCH_NAME="${{ github.event.ref }}"
+
+ # Handle special case: if 'develop' branch is deleted (unlikely, but safe to handle)
+ if [ "$BRANCH_NAME" == "develop" ]; then
+ VERSION="dev"
+ else
+ VERSION="$BRANCH_NAME"
+ fi
+
+ echo "Deleting documentation version: $VERSION"
+
+ # Mike delete will fail if the version doesn't exist, so we allow failure or check first.
+ # We use || true to prevent the workflow from failing if the doc version didn't exist.
+ mike delete --push $VERSION || echo "Version $VERSION not found or already deleted."
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
new file mode 100644
index 00000000..cc78442f
--- /dev/null
+++ b/.github/workflows/deploy-docs.yml
@@ -0,0 +1,100 @@
+name: Deploy Documentation
+
+on:
+ push:
+ branches:
+ - '**'
+ tags:
+ - 'v*'
+ paths:
+ - 'docs/**'
+ - 'mkdocs.yml'
+ - '.github/workflows/deploy-docs.yml'
+ workflow_dispatch:
+
+permissions:
+ contents: write
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.11'
+
+ - name: Install MkDocs and Mike
+ run: |
+ pip install mkdocs-material mike
+
+ - name: Configure Git User
+ run: |
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
+ git config --local user.name "github-actions[bot]"
+
+ - name: Deploy via Mike
+ run: |
+ # Sync README.md to docs/index.md and fix relative links
+ # 1. Remove the symlink (if it exists)
+ rm -f docs/README.md
+ # 2. Copy the root README.md to docs/README.md (Home page)
+ cp README.md docs/README.md
+ # 3. Fix relative links: replace 'docs/' prefix with empty string in docs/README.md
+ # This changes [Link](docs/file.md) -> [Link](file.md), which is correct inside docs/
+ sed -i 's|docs/||g' docs/README.md
+
+ # Determine Version and Alias
+ VERSION="${{ github.ref_name }}"
+ # Sanitize VERSION: replace '/' with '-' because mike/gh-pages doesn't support slashes in folder names
+ VERSION="${VERSION//\//-}"
+ ALIAS=""
+ HIDDEN_FLAG=""
+ TITLE=""
+
+ if [[ "$VERSION" == "develop" ]]; then
+ VERSION="dev"
+ ALIAS="latest"
+ TITLE="Development"
+ elif [[ "$VERSION" == "master" || "$VERSION" == "main" ]]; then
+ # Mapping master/main to a specific stable alias if needed, or just keeping version name
+ TITLE="Stable"
+ elif [[ "$GITHUB_REF" == refs/tags/* ]]; then
+ TITLE="$VERSION"
+ else
+ # For ALL other branches (feature/*, bugfix/*, or random names)
+ # Hide them from the dropdown key using Mike properties
+ HIDDEN_FLAG="--prop-set hidden=true"
+ TITLE="Preview: $VERSION"
+ fi
+
+ echo "Deploying Version: $VERSION (Title: $TITLE, Alias: $ALIAS)"
+
+ # Build arguments
+ ARGS="$VERSION"
+ [ -n "$ALIAS" ] && ARGS="$ARGS $ALIAS"
+ ARGS="$ARGS --title=\"$TITLE\""
+ [ -n "$HIDDEN_FLAG" ] && ARGS="$ARGS $HIDDEN_FLAG"
+
+ # Execute deploy
+ # Note: We use eval to properly handle the quoted title string
+ eval mike deploy --push --update-aliases $ARGS
+
+ echo "Documentation deployed."
+ if [ -n "$HIDDEN_FLAG" ]; then
+ echo "Hidden Preview URL: https://mskcc.github.io/tempo/$VERSION/"
+ else
+ echo "Public URL: https://mskcc.github.io/tempo/$VERSION/"
+ fi
+
+ - name: Comment on PR
+ if: github.ref_name != 'develop' && github.ref_name != 'master' && github.ref_name != 'main' && !startsWith(github.ref, 'refs/tags/')
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ URL: https://mskcc.github.io/tempo/${{ github.ref_name }}/
+ run: |
+ gh pr comment ${{ github.ref_name }} --body "š¤ **Documentation Preview**
The documentation for this branch has been deployed!
Preview: $URL" || echo "No PR found for this branch"
diff --git a/.gitignore b/.gitignore
index 4cfb8656..278cd381 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,4 @@ results/
*.tsv
docs/node_modules
*.pyc
+site/
diff --git a/.nvmrc b/.nvmrc
deleted file mode 100644
index 3c032078..00000000
--- a/.nvmrc
+++ /dev/null
@@ -1 +0,0 @@
-18
diff --git a/containers/multiqc/example_exome_multiqc_config.yaml b/containers/multiqc/example_exome_multiqc_config.yaml
index 8cef3da5..e7484706 100644
--- a/containers/multiqc/example_exome_multiqc_config.yaml
+++ b/containers/multiqc/example_exome_multiqc_config.yaml
@@ -1,5 +1,4 @@
custom_logo: 'tempoLogo.png'
-custom_logo_url: 'https://ccstempo.netlify.app/'
custom_logo_title: 'CCS - Tempo'
show_analysis_paths: False
diff --git a/containers/multiqc/example_wgs_multiqc_config.yaml b/containers/multiqc/example_wgs_multiqc_config.yaml
index 42590f1d..6af964d7 100644
--- a/containers/multiqc/example_wgs_multiqc_config.yaml
+++ b/containers/multiqc/example_wgs_multiqc_config.yaml
@@ -1,5 +1,4 @@
custom_logo: 'tempoLogo.png'
-custom_logo_url: 'https://ccstempo.netlify.app/'
custom_logo_title: 'CCS - Tempo'
show_analysis_paths: False
diff --git a/docs/.vuepress/config.yml b/docs/.vuepress/config.yml
deleted file mode 100644
index e35e2347..00000000
--- a/docs/.vuepress/config.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-title: Tempo
-description: CCS Research Pipeline for Whole-Genome and Whole-Exome Sequencing
-themeConfig:
- logo: /allegro.jpg
- sidebar:
- - ['', 'Home']
- - title: Setup
- collapsable: false
- children:
- - "/installation"
- - "/juno-setup"
- - "/aws-setup"
- - title: Usage
- collapsable: false
- children:
- - "/running-the-pipeline"
- - "/nextflow-basics"
- - "/working-with-containers"
- - "/outputs"
- - "/bioinformatic-components"
- - title: Reference Resources
- collapsable: false
- children:
- - "/reference-files"
- - "/gnomad"
- - "/wes-panel-of-normals"
- - "/variant-annotation-and-filtering"
- - title: Help and Other Resources
- collapsable: false
- children:
- - "/troubleshooting"
- - "/aws-glossary"
- - "/contributing-to-tempo"
- - "/acknowledgements"
- repo: mskcc/tempo
- docsBranch: 'develop'
-plugins:
-- - vuepress-plugin-medium-zoom
- - selector: "#diagram"
- delay: 1000
- options:
- margin: 24
- scrollOffset: 0
diff --git a/docs/.vuepress/dist/assets/css/0.styles.d4613532.css b/docs/.vuepress/dist/assets/css/0.styles.d4613532.css
deleted file mode 100644
index f6f1c0a0..00000000
--- a/docs/.vuepress/dist/assets/css/0.styles.d4613532.css
+++ /dev/null
@@ -1 +0,0 @@
-#nprogress{pointer-events:none}#nprogress .bar{background:#3eaf7c;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #3eaf7c,0 0 5px #3eaf7c;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#3eaf7c transparent transparent #3eaf7c;border-style:solid;border-width:2px;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#3eaf7c;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #389d70}.home .hero .action-button:hover{background-color:#4abf8a}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#3eaf7c}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:1.5rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#3eaf7c}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title{display:block}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #3eaf7c;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #ccc;border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#3eaf7c}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #46bd87}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}}.page-edit,.page-nav{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit,.page-nav{padding:2rem}}@media (max-width:419px){.page-edit,.page-nav{padding:1.5rem}}.page{padding-bottom:2rem;display:block}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#aaa}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-heading.clickable:hover{color:#3eaf7c}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#3eaf7c}a.sidebar-link.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number,div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#3eaf7c}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.badge[data-v-05502492]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-05502492],.badge.tip[data-v-05502492],.badge[data-v-05502492]{background-color:#42b983}.badge.error[data-v-05502492]{background-color:#da5961}.badge.warn[data-v-05502492],.badge.warning[data-v-05502492],.badge.yellow[data-v-05502492]{background-color:#e7c000}.badge+.badge[data-v-05502492]{margin-left:5px}
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/img/brandenburg5_allegro.d6292417.jpg b/docs/.vuepress/dist/assets/img/brandenburg5_allegro.d6292417.jpg
deleted file mode 100644
index 97b81b4c..00000000
Binary files a/docs/.vuepress/dist/assets/img/brandenburg5_allegro.d6292417.jpg and /dev/null differ
diff --git a/docs/.vuepress/dist/assets/img/pipeline-flowchart.ca996bb1.png b/docs/.vuepress/dist/assets/img/pipeline-flowchart.ca996bb1.png
deleted file mode 100644
index 1f83ce42..00000000
Binary files a/docs/.vuepress/dist/assets/img/pipeline-flowchart.ca996bb1.png and /dev/null differ
diff --git a/docs/.vuepress/dist/assets/img/search.83621669.svg b/docs/.vuepress/dist/assets/img/search.83621669.svg
deleted file mode 100644
index 03d83913..00000000
--- a/docs/.vuepress/dist/assets/img/search.83621669.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/.vuepress/dist/assets/js/10.7ae97b70.js b/docs/.vuepress/dist/assets/js/10.7ae97b70.js
deleted file mode 100644
index cc8e8f5e..00000000
--- a/docs/.vuepress/dist/assets/js/10.7ae97b70.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{194:function(e,n,t){"use strict";t.r(n);var s=t(0),o=Object(s.a)({},function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"gnomad"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gnomad","aria-hidden":"true"}},[e._v("#")]),e._v(" gnomAD")]),e._v(" "),t("p",[t("small",[e._v("As of 2019-08-16, the latest release of gnomAD is 2.1.1 from March 6, 2019.")])]),e._v(" "),t("p",[e._v("Variant-level allele counts and frequencies from gnomAD's exome and genome cohorts are used to annotate somatic and germline SNVs/indels.")]),e._v(" "),t("p",[e._v("These files were retrieved and processed as such:")]),e._v(" "),t("h2",{attrs:{id:"exomes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#exomes","aria-hidden":"true"}},[e._v("#")]),e._v(" Exomes")]),e._v(" "),t("p",[e._v("The exome VCF file contains a lot of information. We prune most of this to reduce file size and only keep relevant information. Only values from the non-cancer subset of the total population are used, since this excludes the normals from TCGA.")]),e._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('# Download files\nwget https://storage.googleapis.com/gnomad-public/release/2.1.1/vcf/exomes/gnomad.exomes.r2.1.1.sites.vcf.bgz\nwget https://storage.googleapis.com/gnomad-public/release/2.1.1/vcf/exomes/gnomad.exomes.r2.1.1.sites.vcf.bgz.tbi\nmv gnomad.exomes.r2.1.1.sites.vcf.bgz gnomad.exomes.r2.1.1.sites.vcf.gz\nmv gnomad.exomes.r2.1.1.sites.vcf.bgz.tbi gnomad.exomes.r2.1.1.sites.vcf.gz.tbi\n\n# Parse INFO columns to retain only relevant ones\nbcftools view --header-only gnomad.exomes.r2.1.1.sites.vcf.gz | \\\n grep -E "non_cancer_AC|non_cancer_AF" | \\\n grep -v -e "_male" -e "_female" \\\n > gnomad.exomes.r2.1.1.sites.retained.info\n\npaste <(grep -oP "(?<=ID\\=)[A-Za-z_]+" gnomad.exomes.r2.1.1.sites.retained.info) \\\n <(grep -oP "(?<=Description=\\")[A-Za-z\\(\\),\\-\\_\\ ]+" gnomad.exomes.r2.1.1.sites.retained.info) \\\n > tmp && \\\n mv tmp gnomad.exomes.r2.1.1.sites.retained.info\n\nCOLS=$(Rscript -e "out = paste0(\'^INFO/\', paste(read.delim(\'gnomad.exomes.r2.1.1.sites.retained.info\', header = F)[[\'V1\']], collapse = \',INFO/\')); cat(out)")\n\n# Apply this, and retain filtered sites\nbcftools annotate \\\n --remove "$COLS" \\\n --include \'FILTER~"PASS" | FILTER~"RF"\' \\\n --output-type z \\\n --output tmp.vcf.gz \\\n gnomad.exomes.r2.1.1.sites.vcf.gz\n\ntabix --preset vcf tmp.vcf.gz\n\n# Mark filtered sites\nbcftools annotate \\\n --annotations gnomad.exomes.r2.1.1.sites.non_cancer.vcf.gz \\\n --include \'FILTER!="PASS"\' \\\n --mark-sites "+gnomAD_FILTER" \\\n -k \\\n --output-type z \\\n --output gnomad.exomes.r2.1.1.sites.non_cancer.vcf.gz \\\n tmp.vcf.gz\n\ntabix --preset vcf gnomad.exomes.r2.1.1.sites.non_cancer.vcf.gz\n\n# Clean up\nrm gnomad.exomes.r2.1.1.sites.retained.info\nrm tmp.vcf.gz tmp.vcf.gz.tbi\n')])])]),t("h2",{attrs:{id:"genomes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#genomes","aria-hidden":"true"}},[e._v("#")]),e._v(" Genomes")]),e._v(" "),t("p",[e._v("For genomes, there is no non-cancer subset.")]),e._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('# Download, one chromosome at the time\nfor chr in {1..22} X\ndo\n wget https://storage.googleapis.com/gnomad-public/release/2.1.1/vcf/genomes/gnomad.genomes.r2.1.1.sites.${chr}.vcf.bgz\n wget https://storage.googleapis.com/gnomad-public/release/2.1.1/vcf/genomes/gnomad.genomes.r2.1.1.sites.${chr}.vcf.bgz.tbi\n mv gnomad.genomes.r2.1.1.sites.${chr}.vcf.bgz gnomad.genomes.r2.1.1.sites.${chr}.vcf.gz\n mv gnomad.genomes.r2.1.1.sites.${chr}.vcf.bgz.tbi gnomad.genomes.r2.1.1.sites.${chr}.vcf.gz.tbi\ndone\n\n# Parse INFO columns to retain only relevant ones\nbcftools view --header-only gnomad.genomes.r2.1.1.sites.1.vcf.gz | \\\n grep -E "AC|AF" | \\\n grep -v -e "_male" -e "_female" -e "controls" -e "topmed" -e "neuro" -e "vep" -e "raw" -e "=popmax" -e "AC0" | \\\n cut -f3 -d"=" | cut -f1 -d"," \\\n > gnomad.genomes.r2.1.1.sites.retained.info\n\nCOLS=$(Rscript -e "out = paste0(\'^INFO/\', paste(read.delim(\'gnomad.genomes.r2.1.1.sites.retained.info\', header = F)[[\'V1\']], collapse = \',INFO/\')); cat(out)")\nCHR=({1..22} X)\n\n# Apply this, and retain filtered sites\nfor chr in ${CHR[@]}\ndo\n bcftools annotate \\\n --remove "$COLS" \\\n --include \'FILTER~"PASS" | FILTER~"RF"\' \\\n --output-type z \\\n --output tmp.${chr}.vcf.gz \\\n gnomad.genomes.r2.1.1.sites.${chr}.vcf.gz\n\n tabix --preset vcf tmp.${chr}.vcf.gz\n\n bcftools annotate \\\n --annotations tmp.${chr}.vcf.gz \\\n --include \'FILTER!="PASS"\' \\\n --mark-sites "+gnomAD_FILTER" \\\n -k \\\n --output-type z \\\n --output gnomad.genomes.r2.1.1.sites.${chr}.minimal.vcf.gz \\\n tmp.${chr}.vcf.gz\n\n tabix --preset vcf gnomad.genomes.r2.1.1.sites.${chr}.minimal.vcf.gz\ndone\n\n# Concatenate to one file\nbcftools concat \\\n --output-type z \\\n --output gnomad.genomes.r2.1.1.sites.minimal.vcf.gz \\\n gnomad.genomes.r2.1.1.sites.{1..22}.minimal.vcf.gz \\\n gnomad.genomes.r2.1.1.sites.X.minimal.vcf.gz\n\ntabix --preset vcf gnomad.genomes.r2.1.1.sites.minimal.vcf.gz\n\n# Clean up\nfor chr in ${CHR[@]}\ndo\n rm gnomad.genomes.r2.1.1.sites.${chr}.minimal.vcf.gz*\n rm tmp.${chr}.vcf.gz*\ndone\n')])])])])},[],!1,null,null,null);n.default=o.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/11.0fc3df68.js b/docs/.vuepress/dist/assets/js/11.0fc3df68.js
deleted file mode 100644
index 2fd6b344..00000000
--- a/docs/.vuepress/dist/assets/js/11.0fc3df68.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{195:function(t,e,n){"use strict";n.r(e);var r=n(0),a=Object(r.a)({},function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"installation"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#installation","aria-hidden":"true"}},[t._v("#")]),t._v(" Installation")]),t._v(" "),n("h2",{attrs:{id:"installing-nextflow"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#installing-nextflow","aria-hidden":"true"}},[t._v("#")]),t._v(" Installing Nextflow")]),t._v(" "),n("p",[n("a",{attrs:{href:"https://www.nextflow.io",target:"_blank",rel:"noopener noreferrer"}},[t._v("Nextflow"),n("OutboundLink")],1),t._v(" requires Java 8 or later. You can check the version on your system with the command "),n("code",[t._v("java -version")]),t._v(".")]),t._v(" "),n("p",[t._v("Install Nextflow in the current directory by running:")]),t._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v("curl -s https://get.nextflow.io | bash\n")])])]),n("p",[t._v("Put the "),n("code",[t._v("nextflow")]),t._v(" executable in a directory in your "),n("code",[t._v("PATH")]),t._v(", if you want to access it from anywhere. For more details, check out the "),n("a",{attrs:{href:"https://www.nextflow.io/docs/latest/getstarted.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("documentation"),n("OutboundLink")],1),t._v(".")]),t._v(" "),n("p",[t._v("We recommend Nextflow version 19.07.0 or later.")]),t._v(" "),n("h2",{attrs:{id:"installing-tempo"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#installing-tempo","aria-hidden":"true"}},[t._v("#")]),t._v(" Installing Tempo")]),t._v(" "),n("p",[t._v("Clone the "),n("a",{attrs:{href:"http://github.com/mskcc/tempo",target:"_blank",rel:"noopener noreferrer"}},[t._v("Tempo repository"),n("OutboundLink")],1),t._v(":")]),t._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v("git clone http://github.com/mskcc/tempo.git\n")])])]),n("p",[t._v("You're now good to go!")]),t._v(" "),n("p",[t._v("For specifics on running Tempo in different environments, check out the documentation on "),n("router-link",{attrs:{to:"/juno-setup.html"}},[t._v("Juno")]),t._v(" and "),n("router-link",{attrs:{to:"/aws-setup.html"}},[t._v("AWS")]),t._v(".")],1)])},[],!1,null,null,null);e.default=a.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/12.0772b90f.js b/docs/.vuepress/dist/assets/js/12.0772b90f.js
deleted file mode 100644
index 84f43efd..00000000
--- a/docs/.vuepress/dist/assets/js/12.0772b90f.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{196:function(e,t,a){"use strict";a.r(t);var r=a(0),o=Object(r.a)({},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"juno-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#juno-setup","aria-hidden":"true"}},[e._v("#")]),e._v(" Juno Setup")]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"http://mskcchpc.org/display/CLUS/Juno+Cluster+Guide",target:"_blank",rel:"noopener noreferrer"}},[e._v("Juno compute cluster"),a("OutboundLink")],1),e._v(" is accessible to researchers within the CMO. If you do not have an account on Juno or have other questions about their services, contact "),a("a",{attrs:{href:"http://hpc.mskcc.org/contact-us",target:"_blank",rel:"noopener noreferrer"}},[e._v("HPC"),a("OutboundLink")],1),e._v(". Juno uses the LSF job scheduler and which Tempo is configured to work with.")]),e._v(" "),a("h2",{attrs:{id:"singularity-containers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#singularity-containers","aria-hidden":"true"}},[e._v("#")]),e._v(" Singularity Containers")]),e._v(" "),a("p",[e._v("As described in the page about "),a("router-link",{attrs:{to:"/working-with-containers.html"}},[e._v("containers")]),e._v(", execution of Tempo on Juno requires Singularity.")],1),e._v(" "),a("p",[e._v("In order to save time and space, you can use image files stored in a common cache directory by setting the environment variable "),a("code",[e._v("NXF_SINGULARITY_CACHEDIR")]),e._v(" to the directory "),a("code",[e._v("/juno/work/taylorlab/cmopipeline/singularity_images")]),e._v(". You can put this in your bash profile:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("export NXF_SINGULARITY_CACHEDIR=/juno/work/taylorlab/cmopipeline/singularity_images\n")])])]),a("p",[e._v("If you want to maintain your own cache of images, set this to your directory of choice, and pull/build the images.")]),e._v(" "),a("p",[e._v("We recommend using Singularity version 3.1.1, as such:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("module load singularity/3.1.1\n")])])]),a("p",[e._v("or:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("export PATH=/opt/local/singularity/3.1.1/bin:$PATH\n")])])]),a("p",[e._v("The command "),a("code",[e._v("which singularity")]),e._v(" should return "),a("code",[e._v("/opt/local/singularity/3.1.1/bin/singularity")]),e._v(" if you have done this correctly.")]),e._v(" "),a("h2",{attrs:{id:"java-version"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#java-version","aria-hidden":"true"}},[e._v("#")]),e._v(" Java Version")]),e._v(" "),a("p",[e._v("Nextflow requires Java version 8 or later. On Juno, you can load it using "),a("code",[e._v("module")]),e._v(":")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("module load java/jdk1.8.0_202\n")])])]),a("p",[e._v("or put it in your "),a("code",[e._v("PATH")]),e._v(" by inserting this into your bash profile:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("export JAVA_HOME=/opt/common/CentOS_7/java/jdk1.8.0_202/\nexport PATH=$JAVA_HOME/bin:$PATH\n")])])]),a("p",[e._v("The call "),a("code",[e._v("which java")]),e._v(" should return "),a("code",[e._v("/opt/common/CentOS_7/java/jdk1.8.0_202/bin/java")]),e._v(" if you have done this correctly.")])])},[],!1,null,null,null);t.default=o.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/13.347267f1.js b/docs/.vuepress/dist/assets/js/13.347267f1.js
deleted file mode 100644
index b4d31a03..00000000
--- a/docs/.vuepress/dist/assets/js/13.347267f1.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{197:function(e,t,o){"use strict";o.r(t);var n=o(0),i=Object(n.a)({},function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"nextflow-basics"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#nextflow-basics","aria-hidden":"true"}},[e._v("#")]),e._v(" Nextflow Basics")]),e._v(" "),o("p",[o("a",{attrs:{href:"https://nextflow.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nextflow"),o("OutboundLink")],1),e._v(" is a workflow framework that creation of computational pipelines that work in any POSIX-based environment. Nextflow is written in the Java-based "),o("a",{attrs:{href:"https://groovy-lang.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Groovy"),o("OutboundLink")],1),e._v(" language. A Nextflow script is executed by running "),o("code",[e._v("nextflow run script.nf")]),e._v(", followed by optional arguments. This page contains some useful information for Tempo users, for more read the "),o("a",{attrs:{href:"https://www.nextflow.io/docs/latest/basic.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nextflow documentation"),o("OutboundLink")],1),e._v(".")]),e._v(" "),o("ul",[o("li",[o("p",[o("strong",[e._v("Nextflow runs scripts")]),e._v(": The basic component of Nextflow is a "),o("em",[e._v("process")]),e._v(". Code inside a process is executed as a Bash script, and is thus written essentially as on the command line. Therefore you can easily see what the contents of the different steps in Tempo are by peaking at the source code.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("The number of dashes matters")]),e._v(": Nextflow has a quirk where its executor-specific, built-in flags are initiated with a single dash, whereas parameters we define require two. For example, to define which run profile to use, we call Nextflow's built-in feature "),o("code",[e._v("-profile")]),e._v(". Similarly, resume pipeline executions at a certain step, we use "),o("code",[e._v("-resume")]),e._v(". However, other parameters require double dashes. For instance, in order to provide mapping or pairing input file paths, we call arguments "),o("code",[e._v("--mapping")]),e._v(" and "),o("code",[e._v("--pairing")]),e._v(" respectively.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Configuration files")]),e._v(": Upon running a Nextflow script, you can load a "),o("code",[e._v("*.config")]),e._v(" file with various kinds of preconfigured parameters. The "),o("code",[e._v("-profile")]),e._v(" argument loads the configuration files associated with a user-defined profile, which for Tempo exist for running the pipeline on Juno and AWS.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("View the Nextflow log")]),e._v(": You can access the Nextflow cache metadata by running "),o("code",[e._v("nextflow log")]),e._v(". It contains information like TIMESTAMP, DURATION, and RUN_NAME, and a STATUS indicating a failed or successful run, among others. The values under RUN_NAME can also be submitted following the "),o("code",[e._v("-resume")]),e._v(" flag to resume previously-run Nextflow jobs.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("View intermediate output")]),e._v(": As the pipeline runs, everything needed to execute each process in the pipeline is located in the "),o("code",[e._v("work")]),e._v(" in the run directory. Thus, you can peek at input and output files for each step of the pipeline in real time.")])]),e._v(" "),o("li",[o("p",[o("strong",[e._v("Run or skip specific tools:")]),e._v(" "),o("code",[e._v("pipeline.nf")]),e._v(" has the argument "),o("code",[e._v("--tools")]),e._v(", which allows users to run only certain bioinformatic tools and skip others. The "),o("code",[e._v("--somatic")]),e._v(" and "),o("code",[e._v("--germline")]),e._v(" flags already have a preset of tools to include during a run, but you can limit this further by providing the "),o("code",[e._v("--tools")]),e._v(" flag, followed by a comma-delimited string. For example, to use only DELLY for your somatic/germline runs, do "),o("code",[e._v("--somatic --germline --tools delly")]),e._v("; to use MuTect2, Manta, and Strelka2, do "),o("code",[e._v("--somatic --tools mutect2,manta,strelka2")]),e._v(".")])])])])},[],!1,null,null,null);t.default=i.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/14.bd642595.js b/docs/.vuepress/dist/assets/js/14.bd642595.js
deleted file mode 100644
index c7c90465..00000000
--- a/docs/.vuepress/dist/assets/js/14.bd642595.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{198:function(e,t,a){"use strict";a.r(t);var s=a(0),n=Object(s.a)({},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"outputs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#outputs","aria-hidden":"true"}},[e._v("#")]),e._v(" Outputs")]),e._v(" "),a("p",[e._v("All paths below are relative to the base directory "),a("code",[e._v("outDir")]),e._v(" as described in the "),a("router-link",{attrs:{to:"/running-the-pipeline.html"}},[e._v("run instructions")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("outDir\nāāā bams\nāāā qc\nāāā somatic\nāāā germline\n")])])]),a("h2",{attrs:{id:"bam-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bam-files","aria-hidden":"true"}},[e._v("#")]),e._v(" BAM Files")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("bams")]),e._v(" folder contains the final aligned and post-processed BAM files along with index files.")]),e._v(" "),a("h2",{attrs:{id:"qc-outputs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#qc-outputs","aria-hidden":"true"}},[e._v("#")]),e._v(" QC Outputs")]),e._v(" "),a("p",[e._v("FASTQ file, read alignment and basic BAM file QC is in the "),a("code",[e._v("qc")]),e._v(" directory:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("qc\nāāā alfred\nāāā collecthsmetrics\nāāā conpair\nāāā fastp\nāāā alignment_qc.txt\n")])])]),a("p",[e._v("These outputs are:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("fastp")]),e._v(" (folder): An HTML report for each FASTQ file pair per sample.")]),e._v(" "),a("li",[a("code",[e._v("alfred")]),e._v(" (folder): A per-sample and per-readgroup BAM file alignment metrics in text and PDF files.")]),e._v(" "),a("li",[a("code",[e._v("collectshsmetrics")]),e._v(" (folder): For exomes, per-sample hybridisation-selection metrics in the.")]),e._v(" "),a("li",[a("code",[e._v("conpair")]),e._v(" (folder): Per tumor-normal-pair contamination and sample concordance estimates.")]),e._v(" "),a("li",[a("code",[e._v("alignment_qc.txt")]),e._v(": Aggregated read-alignments statistics file, from the "),a("code",[e._v("alfred")]),e._v(" and "),a("code",[e._v("collectshsmetrics")]),e._v(" folders.")])]),e._v(" "),a("h2",{attrs:{id:"somatic-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#somatic-data","aria-hidden":"true"}},[e._v("#")]),e._v(" Somatic data")]),e._v(" "),a("p",[e._v("The result of the somatic analyses is output in summarized forms in the "),a("code",[e._v("somatic")]),e._v(" folder:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("somatic\nāāā cna\nāāā mut_somatic.maf\nāāā mut_somatic_neoantigens.txt\nāāā cna_armlevel.txt\nāāā cna_genelevel.txt\nāāā cna_hisens.seg\nāāā cna_purity.seg\nāāā cna_facets_run_info.txt\nāāā sv_somatic.vcf.gz\nāāā sample_data.txt\n")])])]),a("p",[e._v("These outputs are:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("facets")]),e._v(" (folder): Individual copy-number profiles from FACETS, per tumor-normal pair.")]),e._v(" "),a("li",[a("code",[e._v("mut_somatic.maf")]),e._v(": Filtered mutations from MuTect2 and Strelka2, annotated with mutational effects, neoantigen predictions, and zygosity, as "),a("router-link",{attrs:{to:"/variant-annotation-and-filtering.html#somatic-snvs-and-indels"}},[e._v("described elsewhere")]),e._v(".")],1),e._v(" "),a("li",[a("code",[e._v("mut_somatic_neoantigens.txt")]),e._v(": Neoantigen predictions from NetMHCpan for all samples.")]),e._v(" "),a("li",[a("code",[e._v("cna_armlevel.txt")]),e._v(", "),a("code",[e._v("cna_genelevel.txt")]),e._v(", and "),a("code",[e._v("cna_hisens.seg")]),e._v(", "),a("code",[e._v("cna_purity.seg")]),e._v(", and "),a("code",[e._v("cna_facets_run_info.txt")]),e._v(", summarized arm- and gene-level output from Facets, as well as IGV-style segmentation files and Facets run information.")]),e._v(" "),a("li",[a("code",[e._v("sv_somatic.vcf.gz")]),e._v(": All structural variants detected by Delly and Manta.")]),e._v(" "),a("li",[a("code",[e._v("sample_data.txt")]),e._v(" : Merged metadata across samples and analyses.")])]),e._v(" "),a("h2",{attrs:{id:"germline-data"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#germline-data","aria-hidden":"true"}},[e._v("#")]),e._v(" Germline data")]),e._v(" "),a("p",[e._v("The result of the germline analyses is output in summarized forms in the "),a("code",[e._v("germline")]),e._v(" folder:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("germline/\nāāā mut_germline.maf\nāāā sv_germline.vcf.gz\n")])])]),a("p",[e._v("These outputs are:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("mut_germline.maf")]),e._v(": Filtered mutations from HaplotypeCaller and Strelka2, annotated with mutational effects and zygosity, as "),a("router-link",{attrs:{to:"/variant-annotation-and-filtering.html#germline-snvs-and-indels"}},[e._v("described elsewhere")]),e._v(".")],1),e._v(" "),a("li",[a("code",[e._v("sv_germline.vcf.gz")]),e._v(": All structural variants Delly and Manta.")])]),e._v(" "),a("h2",{attrs:{id:"extended-outputs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#extended-outputs","aria-hidden":"true"}},[e._v("#")]),e._v(" Extended Outputs")]),e._v(" "),a("p",[e._v("When run with the flag "),a("code",[e._v("--publishAll")]),e._v(", the pipeline will output additional intermediate data from select processes. These are:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("somatic\nāāā mutations\n āāā mutect2\n āāā strelka2\nāāā structural_variants\n āāā delly\n āāā manta \nāāā facets\nāāā lohhla\n\ngermline\nāāā mutations\n āāā haplotypecaller\n āāā strelka2\nāāā structural_variants\n āāā delly\n āāā manta\n")])])]),a("p",[e._v("The "),a("code",[e._v("mutations")]),e._v(" subdirectory contain VCFs with the unfiltered variant calls from the somatic and germline SNV/indel and SV callers. Additionally, these directories contain per-sample unfiltered MAF files generated in the "),a("code",[e._v("SomaticAnnotateMaf")]),e._v(" and "),a("code",[e._v("GermlineAnnotateMaf")]),e._v(" process, respectively. The "),a("code",[e._v("facets")]),e._v(" subdirectory will contain the full arm- and gene-level outputs per sample. In the "),a("code",[e._v("lohhla")]),e._v(" subdirectory the full LOHHLA LOH output metrics will be together with a PDF file with graphical output.")])])},[],!1,null,null,null);t.default=n.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/15.7186385d.js b/docs/.vuepress/dist/assets/js/15.7186385d.js
deleted file mode 100644
index ba49a28c..00000000
--- a/docs/.vuepress/dist/assets/js/15.7186385d.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{199:function(e,t,a){"use strict";a.r(t);var r=a(0),s=Object(r.a)({},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"reference-resources"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reference-resources","aria-hidden":"true"}},[e._v("#")]),e._v(" Reference Resources")]),e._v(" "),a("p",[e._v("This and associated pages in this section provide details on the provenance and generation of all reference files used in "),a("code",[e._v("pipeline.nf")]),e._v(". Usage of these files is defined in the "),a("a",{attrs:{href:"https://github.com/mskcc/tempo/blob/master/conf/references.config",target:"_blank",rel:"noopener noreferrer"}},[e._v("references configuration file"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("div",{staticClass:"tip custom-block"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("All reference files described herein are in assembly GRCh37/hg19 of the human genome.")])]),e._v(" "),a("h2",{attrs:{id:"genome-assembly"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#genome-assembly","aria-hidden":"true"}},[e._v("#")]),e._v(" Genome Assembly")]),e._v(" "),a("p",[e._v("Part of the "),a("a",{attrs:{href:"https://software.broadinstitute.org/gatk/download/bundle",target:"_blank",rel:"noopener noreferrer"}},[e._v("GATK bundle"),a("OutboundLink")],1),e._v(", also available "),a("a",{attrs:{href:"https://console.cloud.google.com/storage/browser/gatk-legacy-bundles/b37",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),a("OutboundLink")],1),e._v(". Tempo uses the "),a("strong",[e._v("human_g1k_v37_decoy")]),e._v(" assembly of the genome.")]),e._v(" "),a("h2",{attrs:{id:"genomic-intervals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#genomic-intervals","aria-hidden":"true"}},[e._v("#")]),e._v(" Genomic Intervals")]),e._v(" "),a("p",[e._v("BED files that specify the regions of the genome to consider for variant calling are specified in the "),a("router-link",{attrs:{to:"/running-the-pipeline.html#input-files"}},[e._v("input files")]),e._v(".")],1),e._v(" "),a("h3",{attrs:{id:"exome-capture-platforms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exome-capture-platforms","aria-hidden":"true"}},[e._v("#")]),e._v(" Exome Capture Platforms")]),e._v(" "),a("p",[e._v("For exomes, use BED file corresponding to the platform used for target capture. Currently, Tempo supports:")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("AgilentExon_51MB")]),e._v(": SureSelectXT Human All Exon V4 from Agilent.")]),e._v(" "),a("li",[a("strong",[e._v("IDT_Exome")]),e._v(": xGen Exome Research Panel v1.0 from IDT.")])]),e._v(" "),a("div",{staticClass:"tip custom-block"},[a("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),a("p",[e._v("Contact us if you are interested in support for other sequencing assays or capture kits.")])]),e._v(" "),a("p",[e._v("The bait and target files are provided by the kit manufacturer. These are used to estimate bait- and target-level coverage metrics as well as for variant calling.")]),e._v(" "),a("p",[e._v("We add 5 bp to each end of exons in the target file to make sure splice site mutations can be called:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("bedtools slop \\\n -g b37.chrom.sizes \\\n -i targets.bed \\\n -r 5 \\\n -l 5 \\\n > targets.plus5bp.bed\n")])])]),a("h3",{attrs:{id:"callable-regions-for-genomes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#callable-regions-for-genomes","aria-hidden":"true"}},[e._v("#")]),e._v(" Callable Regions for Genomes")]),e._v(" "),a("p",[e._v('For genomes, a list of "callable" regions from GATK\'s bundle is used. This is converted from an interval list to a BED file:')]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("gatk IntervalListToBed \\\n --INPUT b37_wgs_calling_regions.v1.interval_list \\\n --OUTPUT b37_wgs_calling_regions.v1.bed\n")])])]),a("h2",{attrs:{id:"repeatmasker-and-mappability-blacklist"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#repeatmasker-and-mappability-blacklist","aria-hidden":"true"}},[e._v("#")]),e._v(" RepeatMasker and Mappability Blacklist")]),e._v(" "),a("p",[e._v("BED files with genomic repeat and mappability information are used to annotate the VCFs with somatic and germline SNV/indels. These data are from "),a("a",{attrs:{href:"http://www.repeatmasker.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("RepeatMasker"),a("OutboundLink")],1),e._v(" and the "),a("a",{attrs:{href:"http://rohsdb.cmb.usc.edu/GBshape/ENCODE/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ENCODE consortium"),a("OutboundLink")],1),e._v(", and the files are retrieved from the "),a("a",{attrs:{href:"https://genome.ucsc.edu",target:"_blank",rel:"noopener noreferrer"}},[e._v("UCSC Genome Browser"),a("OutboundLink")],1),e._v(" and parsed as such:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("wget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/database/rmsk.txt.gz\ngunzip rmsk.txt.gz\ncut -f6-8,12 rmsk.txt | \\\n grep -e \"Low_complexity\" -e \"Simple_repeat\" | \\\n sed 's/^chr//g'> rmsk_mod.bed\nbgzip rmsk_mod.bed\ntabix --preset bed rmsk_mod.bed.gz\n\nwget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeMapability/wgEncodeDacMapabilityConsensusExcludable.bed.gz\ngunzip wgEncodeDacMapabilityConsensusExcludable.bed.gz\nsed -i 's/^chr//g' wgEncodeDacMapabilityConsensusExcludable.bed\nbgzip wgEncodeDacMapabilityConsensusExcludable.bed\ntabix --preset bed wgEncodeDacMapabilityConsensusExcludable.bed.gz\n")])])]),a("h2",{attrs:{id:"preferred-transcript-isoforms"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#preferred-transcript-isoforms","aria-hidden":"true"}},[e._v("#")]),e._v(" Preferred Transcript Isoforms")]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("--custom-enst")]),e._v(" argument to vcf2maf takes a list of preferred gene transcript isoforms which mutations are mapped onto. We supply a consensus list of "),a("a",{attrs:{href:"https://github.com/mskcc/vcf2maf/tree/master/data",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("isoform_overrides_at_mskcc")]),e._v(" and "),a("code",[e._v("isoform_overrides_uniprot")]),a("OutboundLink")],1),e._v(", generated as such:")]),e._v(" "),a("div",{staticClass:"language-r extra-class"},[a("pre",{pre:!0,attrs:{class:"language-r"}},[a("code",[e._v("t1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" readr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("read_tsv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'isoform_overrides_at_mskcc'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\nt2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" readr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("read_tsv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'isoform_overrides_uniprot'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\nt2 "),a("span",{pre:!0,attrs:{class:"token percent-operator operator"}},[e._v("%>%")]),e._v("\n dplyr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("filter"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("gene_name "),a("span",{pre:!0,attrs:{class:"token percent-operator operator"}},[e._v("%nin%")]),e._v(" t1"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("$")]),e._v("gene_name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token percent-operator operator"}},[e._v("%>%")]),e._v("\n dplyr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("bind_rows"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("."),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" t1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token percent-operator operator"}},[e._v("%>%")]),e._v("\n readr"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("::")]),e._v("write_tsv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'isoforms'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("h2",{attrs:{id:"hotspot-annotation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hotspot-annotation","aria-hidden":"true"}},[e._v("#")]),e._v(" Hotspot Annotation")]),e._v(" "),a("p",[e._v("Three types of mutation hotspots are annotated in the somatic MAF. These include SNV, indel in linear space as well as SNV hotspots in 3D space. These are annotated with the "),a("a",{attrs:{href:"https://github.com/taylor-lab/annotateMaf",target:"_blank",rel:"noopener noreferrer"}},[e._v("annotateMaf package"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"oncokb-annotation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#oncokb-annotation","aria-hidden":"true"}},[e._v("#")]),e._v(" OncoKB Annotation")]),e._v(" "),a("p",[e._v("Functional mutation effects and predicted oncogenicity of variants, as well as level of clinical actionability are from "),a("a",{attrs:{href:"https://oncokb.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("OncoKB"),a("OutboundLink")],1),e._v(" and annotated using the "),a("a",{attrs:{href:"https://github.com/oncokb/oncokb-annotator",target:"_blank",rel:"noopener noreferrer"}},[e._v("OncoKB annotator"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("h2",{attrs:{id:"brca-exchange-annotation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#brca-exchange-annotation","aria-hidden":"true"}},[e._v("#")]),e._v(" BRCA Exchange Annotation")]),e._v(" "),a("p",[e._v("Annotation of germline variants in "),a("em",[e._v("BRCA1")]),e._v(" and "),a("em",[e._v("BRCA2")]),e._v(" is carried out with the "),a("a",{attrs:{href:"https://github.com/taylor-lab/annotateMaf",target:"_blank",rel:"noopener noreferrer"}},[e._v("annotateMaf package"),a("OutboundLink")],1),e._v(". This includes variant-level annotation from the ENIGMA consortium and ClinVar.")]),e._v(" "),a("h2",{attrs:{id:"structural-variant-calling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#structural-variant-calling","aria-hidden":"true"}},[e._v("#")]),e._v(" Structural Variant Calling")]),e._v(" "),a("p",[e._v("Delly provides and takes as an argument a "),a("a",{attrs:{href:"https://github.com/dellytools/delly/tree/master/excludeTemplates",target:"_blank",rel:"noopener noreferrer"}},[e._v("file of regions"),a("OutboundLink")],1),e._v(" to "),a("em",[e._v("exclude")]),e._v(" from variant calling. This excludes telomeres and centromeres from auto- and allosomes as well as any other contig.")]),e._v(" "),a("p",[e._v("For Manta, subtract these regions from a bed file of the whole genome to generate a list of regions to "),a("em",[e._v("include")]),e._v(". First clean up the file provided by Delly, since it is not in "),a("code",[e._v("bed")]),e._v(" format:")]),e._v(" "),a("div",{staticClass:"language-shell extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('grep -Ev "chr|MT|GL00|NC|hs37d5" human.hg19.excl.tsv > human.hg19.excl.clean.bed\nbedtools subtract -a b37.bed -b human.hg19.excl.clean.bed > b37.minusDellyExclude.bed\n')])])])])},[],!1,null,null,null);t.default=s.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/16.e3a606ea.js b/docs/.vuepress/dist/assets/js/16.e3a606ea.js
deleted file mode 100644
index 9599bd93..00000000
--- a/docs/.vuepress/dist/assets/js/16.e3a606ea.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{200:function(e,t,n){"use strict";n.r(t);var a=n(0),i=Object(a.a)({},function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"running-the-pipeline"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#running-the-pipeline","aria-hidden":"true"}},[e._v("#")]),e._v(" Running the Pipeline")]),e._v(" "),n("h2",{attrs:{id:"overview"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#overview","aria-hidden":"true"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),n("p",[e._v("This page provides instructions on how to run the pipeline through the "),n("code",[e._v("pipeline.nf")]),e._v(" script. The basic command below shows how to run Tempo, with an explanation of flags and input arguments and files. Below is also described how to best "),n("router-link",{attrs:{to:"/run-pipeline.html#running-the-pipeline-on-juno"}},[e._v("run the pipeline on Juno")]),e._v(" as well as "),n("router-link",{attrs:{to:"/run-pipeline.html#running-the-pipeline-on-aws"}},[e._v("on AWS")]),e._v(".")],1),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('nextflow run pipeline.nf \\\n --somatic --germline \\\n --assayType \\\n --outDir \\ \n -profile juno \\\n --mapping \\\n --pairing \n')])])]),n("p",[n("em",[e._v("Note: "),n("router-link",{attrs:{to:"/nextflow-basics.html"}},[e._v("The number of dashes matters")]),e._v(".")],1)]),e._v(" "),n("p",[n("strong",[e._v("Recommended arguments:")])]),e._v(" "),n("ul",[n("li",[e._v("The "),n("code",[e._v("--somatic")]),e._v(" and "),n("code",[e._v("--germline")]),e._v(" flags are boolean that indicate to run the somatic and germline variant calling modules, respectively. If not set, the pipeline will only align BAMs.")]),e._v(" "),n("li",[n("code",[e._v("--assayType")]),e._v(" ensures appropriate resources are allocated for indicated assay type.")]),e._v(" "),n("li",[n("code",[e._v("--outDir")]),e._v(" is the directory where the output will end up. This directory does not need to exist. If not set, by default it will be set to run directory (i.e. the directory from which the command "),n("code",[e._v("nextflow run")]),e._v(" is executed.)")]),e._v(" "),n("li",[n("code",[e._v("-profile")]),e._v(" loads the preset configuration required to run the pipeline in the supported environment. Accepted values are "),n("code",[e._v("juno")]),e._v(" and "),n("code",[e._v("awsbatch")]),e._v(" for execution on the "),n("router-link",{attrs:{to:"/juno-setup.html"}},[e._v("Juno cluster")]),e._v(" or on "),n("router-link",{attrs:{to:"/aws-setup.html"}},[e._v("AWS Batch")]),e._v(", respectively.")],1),e._v(" "),n("li",[e._v("The files provided to the "),n("code",[e._v("--mapping")]),e._v(" and "),n("code",[e._v("--pairing")]),e._v(" arguments should contain the mapping of FASTQ files to sample names and of tumor-normal pairs. These are tab-separated files, see further description below and examples in the "),n("a",{attrs:{href:"../test_inputs"}},[e._v("test inputs subdirectory")]),e._v(".")])]),e._v(" "),n("div",{staticClass:"tip custom-block"},[n("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),n("p",[e._v("The "),n("code",[e._v("assayType")]),e._v(" argument is for resource allocation. This should also be specified in "),n("router-link",{attrs:{to:"/running-the-pipeline.html#the-mapping-file"}},[e._v("the mapping file")]),e._v(", but for the purpose of correct reference file usage.")],1)]),e._v(" "),n("p",[n("strong",[e._v("Optional arguments:")])]),e._v(" "),n("ul",[n("li",[n("code",[e._v("-work-dir")]),e._v("/"),n("code",[e._v("-w")]),e._v(" is the directory where the temporary output will be cached. By default, this is set to the run directory. Please see "),n("code",[e._v("NXF_WORK")]),e._v(" in "),n("a",{attrs:{href:"https://www.nextflow.io/docs/latest/config.html#environment-variables",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nextflow environment variables"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("li",[n("code",[e._v("-publishAll")]),e._v(" is a boolean, resulting in retention of intermediate output files.")]),e._v(" "),n("li",[n("code",[e._v("-with-timeline")]),e._v(" and "),n("code",[e._v("-with-report")]),e._v(" are enabled by default and results in the generation of a timeline and resource usage report for the pipeline run. These are boolean but can also be fed output names for the respective file.")])]),e._v(" "),n("p",[e._v("Using test inputs provided in the GitHub repository, here is a concrete example:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("nextflow run pipeline.nf --somatic --germline \\\n --mapping test_inputs/local/full_test_mapping.tsv \\ \n --pairing test_inputs/local/full_test_pairing.tsv \\\n -profile juno \\\n --outDir results\n")])])]),n("h2",{attrs:{id:"input-files"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#input-files","aria-hidden":"true"}},[e._v("#")]),e._v(" Input Files")]),e._v(" "),n("p",[e._v("For processing paired-end FASTQ inputs, users must provide both a mapping file and pairing file, as described below.")]),e._v(" "),n("div",{staticClass:"tip custom-block"},[n("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),n("p",[e._v("The header lines are mandatory in the following files, but not the order of their columns.")])]),e._v(" "),n("div",{staticClass:"warning custom-block"},[n("p",{staticClass:"custom-block-title"},[e._v("Be aware")]),e._v(" "),n("p",[e._v("Tempo checks for duplicated combinations of sample and lane names, empty entries, and some other things. However, it is up to the user to make sure that the inputs are in good shape.")])]),e._v(" "),n("h3",{attrs:{id:"the-mapping-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#the-mapping-file","aria-hidden":"true"}},[e._v("#")]),e._v(" The Mapping File")]),e._v(" "),n("p",[e._v("This file is necessary to map the input FASTQ pairs from one or more sequencing lanes to sample names. Additionally, this file tells the pipeline whether the samples are exome or genome samples. In the case of the former, the capture kit used is also input.")]),e._v(" "),n("p",[e._v("Example:")]),e._v(" "),n("table",[n("thead",[n("tr",[n("th",{staticStyle:{"text-align":"center"}},[e._v("SAMPLE")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("LANE")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("ASSAY")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("TARGET")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("FASTQ_PE1")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("FASTQ_PE2")])])]),e._v(" "),n("tbody",[n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("normal_sample_1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("L001")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("wes")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("agilent")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("normal1_L001_R01.fastq.gz")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("normal1_L001_R02.fastq.gz")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("normal_sample_1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("L002")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("wes")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("agilent")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("normal1_L002_R01.fastq.gz")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("normal1_L002_R02.fastq.gz")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("L001")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("wes")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("agilent")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor1_L001_R01.fastq.gz")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor1_L001_R02.fastq.gz")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("wes")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("agilent")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("L00N")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("wes")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("agilent")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor1_L00N_R01.fastq.gz")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor1_L00N_R02.fastq.gz")])])])]),e._v(" "),n("p",[e._v("Accepted values for the "),n("strong",[e._v("ASSAY")]),e._v(" column are "),n("code",[e._v("exome")]),e._v(" and "),n("code",[e._v("genome")]),e._v("."),n("br"),e._v("\nAccepted values for the "),n("strong",[e._v("TARGET")]),e._v(" column are "),n("code",[e._v("agilent")]),e._v(" and "),n("code",[e._v("idt")]),e._v("."),n("br"),e._v("\nRead further details on these parameters "),n("router-link",{attrs:{to:"/reference-resources.html#genomic-intervals"}},[e._v("here")]),e._v(".")],1),e._v(" "),n("h3",{attrs:{id:"the-pairing-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#the-pairing-file","aria-hidden":"true"}},[e._v("#")]),e._v(" The Pairing File")]),e._v(" "),n("p",[e._v("The pipeline needs to know which tumor and normal samples are to be analyzed as matched pairs. This files provides that pairing by referring to the sample names as provided in the "),n("strong",[e._v("SAMPLE")]),e._v(" column in the mapping file.")]),e._v(" "),n("p",[e._v("Example:")]),e._v(" "),n("table",[n("thead",[n("tr",[n("th",{staticStyle:{"text-align":"center"}},[e._v("NORMAL_ID")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("TUMOR_ID")])])]),e._v(" "),n("tbody",[n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("normal_sample_1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_1")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("normal_sample_2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_2")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("...")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("normal_sample_n")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_n")])])])]),e._v(" "),n("h2",{attrs:{id:"running-with-input-bams"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#running-with-input-bams","aria-hidden":"true"}},[e._v("#")]),e._v(" Running with Input BAMs")]),e._v(" "),n("p",[e._v("If the user is processing input BAMs, a mapping of tumor and normal sample names to BAM files and their pairing is used as below, in lieu of providing separate mapping and pairing files as when starting from FASTQ files.")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("nextflow run pipeline.nf --somatic --germline \\\n --bam_pairing \\\n -profile juno \\\n --outDir results \n")])])]),n("p",[e._v("The "),n("code",[e._v("bam_pairing")]),e._v(" input file is also a tab-separated file, see a further description below.")]),e._v(" "),n("h3",{attrs:{id:"the-bam-pairing-file"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#the-bam-pairing-file","aria-hidden":"true"}},[e._v("#")]),e._v(" The BAM Pairing File")]),e._v(" "),n("p",[e._v("Given BAMs as inputs, the user must specify which tumor and normal samples are to be analyzed as matched pairs. The following format is used:")]),e._v(" "),n("p",[e._v("Example:")]),e._v(" "),n("table",[n("thead",[n("tr",[n("th",{staticStyle:{"text-align":"center"}},[e._v("TUMOR_ID")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("NORMAL_ID")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("ASSAY")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("TARGET")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("TUMOR_BAM")]),e._v(" "),n("th",{staticStyle:{"text-align":"center"}},[e._v("NORMAL_BAM")])])]),e._v(" "),n("tbody",[n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("normal_sample_1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_1")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("wes")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("agilent")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("/path/to/file/tumor_1.bam")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("/path/to/file/normal_1.bam")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("normal_sample_2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_2")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("wes")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("agilent")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("/path/to/file/tumor_2.bam")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("/path/to/file/normal_2.bam")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("...")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("...")])]),e._v(" "),n("tr",[n("td",{staticStyle:{"text-align":"center"}},[e._v("normal_sample_n")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("tumor_sample_n")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("wes")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("agilent")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("/path/to/file/tumor_n.bam")]),e._v(" "),n("td",{staticStyle:{"text-align":"center"}},[e._v("/path/to/file/normal_n.bam")])])])]),e._v(" "),n("div",{staticClass:"tip custom-block"},[n("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),n("p",[e._v("The pipeline expects BAM file indices in the same subdirectories as "),n("code",[e._v("TUMOR_BAM")]),e._v(" and "),n("code",[e._v("NORMAL_BAM")]),e._v(". If the index files "),n("code",[e._v("*.bai")]),e._v(" do not exist, "),n("code",[e._v("pipeline.nf")]),e._v(" will throw an error.")])]),e._v(" "),n("h2",{attrs:{id:"running-the-pipeline-on-juno"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#running-the-pipeline-on-juno","aria-hidden":"true"}},[e._v("#")]),e._v(" Running the Pipeline on Juno")]),e._v(" "),n("h3",{attrs:{id:"submitting-the-pipeline-to-lsf"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#submitting-the-pipeline-to-lsf","aria-hidden":"true"}},[e._v("#")]),e._v(" Submitting the Pipeline to LSF")]),e._v(" "),n("p",[e._v("We recommend submitting your "),n("code",[e._v("nextflow run pipeline.nf <...>")]),e._v(" command to the cluster via "),n("code",[e._v("bsub")]),e._v(", which will launch a leader job from which individual processes are submitted as jobs to the cluster.")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('bsub -W -n 1 -R "rusage[mem=]" \\\n -o .out -e .err \\\n nextflow run pipeline.nf -profile juno <...> \n')])])]),n("p",[e._v("It is "),n("strong",[e._v("important")]),e._v(" that users use a recent version of singularity, as detailed in "),n("router-link",{attrs:{to:"/juno-setup.html"}},[e._v("Juno setup")]),e._v(".")],1),e._v(" "),n("p",[e._v("We recommend that users check the "),n("a",{attrs:{href:"https://www.ibm.com/support/knowledgecenter/en/SSETD4_9.1.2/lsf_command_ref/bsub.1.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation for LSF"),n("OutboundLink")],1),e._v(" to clarify each of the arguments above. However,")]),e._v(" "),n("ul",[n("li",[n("code",[e._v("-W ")]),e._v(" sets the time allotted for "),n("code",[e._v("nextflow run pipeline.nf")]),e._v(" to run to completion.")]),e._v(" "),n("li",[n("code",[e._v("-n 1")]),e._v(" is requesting one slot. This should be sufficient for "),n("code",[e._v("nextflow run pipeline.nf")])]),e._v(" "),n("li",[n("code",[e._v("-o .out")]),e._v(" is the name of the STDOUT file, which is quite informative for Nextflow. We "),n("strong",[e._v("strongly")]),e._v(" encourage users to set this.")]),e._v(" "),n("li",[n("code",[e._v("-e .err")]),e._v(" is the name of the STDERR file. Please set this.")]),e._v(" "),n("li",[n("code",[e._v('-R "rusage[mem=]"')]),e._v(" is the requested memory for "),n("code",[e._v("nextflow run pipeline.nf")]),e._v(", which will not be memory intensive at all.")])]),e._v(" "),n("p",[e._v("Here is a concrete example of a bsub command to process 25 WES TN pairs, running somatic and germline variant calling modules:")]),e._v(" "),n("div",{staticClass:"language-shell extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('bsub -W 80:00 -n 1 -R "rusage[mem=15]" -o nf_output.out -e nf_output.err \\\n nextflow run /pipeline.nf --somatic --germline \\\n --mapping test_inputs/local/WES_25TN.tsv --pairing test_inputs/local/WES_25TN_pairing.tsv \n --outDir results \\\n -profile juno\n')])])]),n("h3",{attrs:{id:"running-from-a-screen-session"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#running-from-a-screen-session","aria-hidden":"true"}},[e._v("#")]),e._v(" Running From a "),n("code",[e._v("screen")]),e._v(" Session")]),e._v(" "),n("p",[e._v("Another option is to use a "),n("code",[e._v("screen")]),e._v(" session for running the pipeline interactively, for example naming and entering a screen session as follows:")]),e._v(" "),n("p",[n("code",[e._v("screen -RD new_screen_name")])]),e._v(" "),n("p",[e._v("It is normally not a good idea to run things on the log-in nodes of the cluster. Instead we recommend scheduling an interactive session via e.g. "),n("code",[e._v('bsub -Is -n 1 -R "rusage[mem=20]" csh')]),e._v(" and running the "),n("code",[e._v("screen")]),e._v(" within that session.")]),e._v(" "),n("p",[e._v("Users are welcome to use "),n("code",[e._v("nohup")]),e._v(" or "),n("code",[e._v("tmux")]),e._v(" as well.")]),e._v(" "),n("h2",{attrs:{id:"running-the-pipeline-on-aws"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#running-the-pipeline-on-aws","aria-hidden":"true"}},[e._v("#")]),e._v(" Running the Pipeline on AWS")]),e._v(" "),n("p",[e._v("These instructions will assume the user is moderately knowledgeable of AWS. Please refer to "),n("router-link",{attrs:{to:"/aws-setup.html"}},[e._v("AWS Setup")]),e._v(" and the "),n("router-link",{attrs:{to:"/aws-glossary.html"}},[e._v("AWS Glossary")]),e._v(" we have curated.")],1),e._v(" "),n("h2",{attrs:{id:"modifying-or-resuming-pipeline-run"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#modifying-or-resuming-pipeline-run","aria-hidden":"true"}},[e._v("#")]),e._v(" Modifying or Resuming Pipeline Run")]),e._v(" "),n("p",[e._v("Nextflow supports "),n("a",{attrs:{href:"https://www.nextflow.io/docs/latest/getstarted.html?#modify-and-resume",target:"_blank",rel:"noopener noreferrer"}},[e._v("modify and resume"),n("OutboundLink")],1),e._v(".")]),e._v(" "),n("p",[e._v("To resume an interrupted Nextflow pipeline run, add "),n("code",[e._v("-resume")]),e._v(" (note the single dash) to your command-line call to access Nextflow's cache history and continue a job from where it left off. This will trigger a check of which jobs already completed before starting unfinished jobs in the pipeline.")]),e._v(" "),n("p",[e._v("This function also allows you to make changes to values in the "),n("code",[e._v("pipeline.nf")]),e._v(" script and continue from where you left off. Nextflow will use the cached information from the unchanged sections while running only the modified processes. If you want to make changes to processes that already successfully completed, you have to manually delete the subdirectories in "),n("code",[e._v("work")]),e._v(" where those processes where run.")]),e._v(" "),n("div",{staticClass:"tip custom-block"},[n("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),n("ul",[n("li",[e._v("If you use "),n("code",[e._v("-resume")]),e._v(" for the first time of a timeline run, Nextflow will recognize this as superfluous, and continue.")]),e._v(" "),n("li",[e._v("To peacefully interrupt an ongoing Nextflow pipeline run, do "),n("code",[e._v("control+C")]),e._v(" once and wait for Nextflow to kill submitted jobs. Otherwise orphan jobs might be left on the cluster.")])])]),e._v(" "),n("p",[e._v("To resume the pipeline from a specific run, please read the pages here on using "),n("a",{attrs:{href:"https://www.nextflow.io/blog/2019/demystifying-nextflow-resume.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("resume"),n("OutboundLink")],1),e._v("and as well troubleshooting "),n("a",{attrs:{href:"https://www.nextflow.io/blog/2019/troubleshooting-nextflow-resume.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("resumed runs"),n("OutboundLink")],1),e._v(" for more complicated use cases.")]),e._v(" "),n("p",[e._v("In order to resume from a specific time you ran the pipeline, first check the specific pipeline runs with "),n("code",[e._v("nextflow log")])]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("$ nextflow log\n\nTIMESTAMP DURATION RUN NAME STATUS REVISION ID SESSION ID COMMAND \n2019-05-06 12:07:32 1.2s focused_carson ERR a9012339ce 7363b3f0-09ac-495b-a947-28cf430d0b85 nextflow run hello \n2019-05-06 12:08:33 21.1s mighty_boyd OK a9012339ce 7363b3f0-09ac-495b-a947-28cf430d0b85 nextflow run rnaseq-nf -with-docker \n2019-05-06 12:31:15 1.2s insane_celsius ERR b9aefc67b4 4dc656d2-c410-44c8-bc32-7dd0ea87bebf nextflow run rnaseq-nf \n2019-05-06 12:31:24 17s stupefied_euclid OK b9aefc67b4 4dc656d2-c410-44c8-bc32-7dd0ea87bebf nextflow run rnaseq-nf -resume -with-docker\n")])])]),n("p",[e._v("Users can then restart the pipeline at specific run, using either the "),n("code",[e._v("RUN NAME")]),e._v(" or the "),n("code",[e._v("SESSION ID")]),e._v(". For instance")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("$ nextflow run rnaseq-nf -resume mighty_boyd\n")])])]),n("p",[e._v("or equivalently")]),e._v(" "),n("div",{staticClass:"language- extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("$ nextflow run naseq-nf -resume 4dc656d2-c410-44c8-bc32-7dd0ea87bebf\n")])])]),n("p",[e._v("Sometimes the resume feature may not work entirely as expected, as described in trouubleshooting tips "),n("a",{attrs:{href:"https://www.nextflow.io/blog/2019/troubleshooting-nextflow-resume.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("here on the Nextflow blog"),n("OutboundLink")],1)]),e._v(" "),n("h2",{attrs:{id:"after-successful-run"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#after-successful-run","aria-hidden":"true"}},[e._v("#")]),e._v(" After Successful Run")]),e._v(" "),n("p",[e._v("Nextflow creates a lot of intermediate output files. All the relevant output data should be in the directory given to the "),n("code",[e._v("outDir")]),e._v(" argument. Once you have verified that the data are satisfactory, everything outside this directory can be removed. In particular, the "),n("code",[e._v("work")]),e._v(" directory will occupy a lot of space and should be removed. The "),n("code",[e._v("nextflow clean -force")]),e._v(" command does all of this. Also see "),n("code",[e._v("nextflow clean -help")]),e._v(" for options.")]),e._v(" "),n("div",{staticClass:"warning custom-block"},[n("p",{staticClass:"custom-block-title"},[e._v("Be aware")]),e._v(" "),n("p",[e._v("Once these files are removed, modifications to or resumption of a pipeline run "),n("strong",[e._v("cannot")]),e._v(" be done.")])])])},[],!1,null,null,null);t.default=i.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/17.9eda627c.js b/docs/.vuepress/dist/assets/js/17.9eda627c.js
deleted file mode 100644
index d71a1e5c..00000000
--- a/docs/.vuepress/dist/assets/js/17.9eda627c.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{201:function(e,t,o){"use strict";o.r(t);var r=o(0),i=Object(r.a)({},function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"troubleshooting"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting","aria-hidden":"true"}},[e._v("#")]),e._v(" Troubleshooting")]),e._v(" "),o("h2",{attrs:{id:"the-nextflow-process"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#the-nextflow-process","aria-hidden":"true"}},[e._v("#")]),e._v(" The Nextflow Process")]),e._v(" "),o("p",[e._v("You can follow the Nextflow process by following what is printed to "),o("code",[e._v("stdout")]),e._v(". Additionally, the Nextflow Java process creates a "),o("code",[e._v(".nextflow.log")]),e._v(" file in the run directory where warnings and errors are logged.")]),e._v(" "),o("div",{staticClass:"tip custom-block"},[o("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),o("ul",[o("li",[e._v("The last executed Nextflow call in the run directory will be in the first few lines of "),o("code",[e._v(".nextflow.log")]),e._v(".")]),e._v(" "),o("li",[e._v("Repeated calls to "),o("code",[e._v("nextflow run")]),e._v(" in the same directory renames older output files from the Nextflow process, for example "),o("code",[e._v(".nextflow.log.3")]),e._v(" is from three runs prior to the current one.")])])]),e._v(" "),o("h2",{attrs:{id:"individual-jobs"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#individual-jobs","aria-hidden":"true"}},[e._v("#")]),e._v(" Individual Jobs")]),e._v(" "),o("p",[e._v("A job running a single process inside the pipeline can fail due to inadequate resources, which will trigger a re-run with increased resources. For other failures, you need to look inside the "),o("code",[e._v("work")]),e._v(" directory. In the "),o("code",[e._v(".html")]),e._v(" reports generated by default (or the "),o("code",[e._v("trace.txt")]),e._v(" file) in the run directory you will find for each process run its status ("),o("code",[e._v("COMPLETED")]),e._v("; "),o("code",[e._v("CACHED")]),e._v(" if resumed and completed in a prior run; and "),o("code",[e._v("FAILED")]),e._v(" if an error occured) and a "),o("code",[e._v("hash")]),e._v(". The hash indicates the subdirectory in which the process was run (for example "),o("code",[e._v("a4/00365e")]),e._v(" points to "),o("code",[e._v("work/a4/00365e9190eca55907746edeb58f77")]),e._v("). In this directory you find the following files which are useful for troubleshooting:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v(".command.run")]),e._v(": This is the actual script which sets environment variables and runs "),o("code",[e._v(".command.sh")]),e._v(", Nextflow submits this to LSF using bsub. You can manually resubmit it by running "),o("code",[e._v("bsub < .command.run")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v(".command.sh")]),e._v(": This contains the command-line calls that are defined in the corresponding process in "),o("code",[e._v("pipeline.nf")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v(".command.log")]),e._v(": Contains "),o("code",[e._v("stdout")]),e._v(" from the process itself and "),o("code",[e._v("bsub")]),e._v(".")]),e._v(" "),o("li",[o("code",[e._v(".command.out")]),e._v(": "),o("code",[e._v("stdout")]),e._v(" from the process.")]),e._v(" "),o("li",[o("code",[e._v(".command.err")]),e._v(": "),o("code",[e._v("stderr")]),e._v(" from the process.")])]),e._v(" "),o("p",[e._v("Additionally, any files used by the process are symlinked in the work directory, and any intermediate and final output files are also left here.")]),e._v(" "),o("h2",{attrs:{id:"standard-lsf-errors"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#standard-lsf-errors","aria-hidden":"true"}},[e._v("#")]),e._v(" Standard LSF Errors")]),e._v(" "),o("p",[e._v("When debugging pipeline runs, there are common errors one encounters. An incomplete list of LSF job exit codes is provided below:")]),e._v(" "),o("ul",[o("li",[e._v("error code "),o("code",[e._v("0")]),e._v(" --- this means the jobs was considered successfully run")]),e._v(" "),o("li",[e._v("error code "),o("code",[e._v("1")]),e._v(" --- this is a standard error code, which normally could mean something is wrong with the code itself")]),e._v(" "),o("li",[e._v("error code "),o("code",[e._v("130")]),e._v(" --- this means there is not enough memory for the process to complete")]),e._v(" "),o("li",[e._v("error code "),o("code",[e._v("140")]),e._v(" --- this means there was not enough time requested via LSF, which is translated from Nextflow into "),o("code",[e._v("bsub -W")]),e._v(" as detailed "),o("a",{attrs:{href:"https://www.ibm.com/support/knowledgecenter/en/SSETD4_9.1.3/lsf_command_ref/bsub.__w.1.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1)])]),e._v(" "),o("h2",{attrs:{id:"singularity-errors"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#singularity-errors","aria-hidden":"true"}},[e._v("#")]),e._v(" Singularity Errors")]),e._v(" "),o("p",[e._v("The most common error one sees with Singularity is the error "),o("code",[e._v("Failed to pull singularity image")]),e._v(", e.g.")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",{pre:!0,attrs:{class:"language-text"}},[o("code",[e._v("ERROR ~ Error executing process > 'VariantCaller'\n\nCaused by:\n Failed to pull singularity image\n command: singularity pull --name cmopipeline-variantcaller-1.0.0.img docker://cmopipeline/variantcaller:1.0.0 > /dev/null\n status : 255\n message:\n [33mWARNING: Authentication token file not found : Only pulls of public images will succeed\n INFO: Starting build...\n Getting image source signatures\n Skipping fetch of repeat blob sha256:g2wi99s7f5ij1buyrr0ep5tf8xjfk05lwc9vr3adlbgxbw1zvxlmx8053n4lvmsm\n Skipping fetch of repeat blob sha256:z1k6kz1157i0vy8r9eutu3cmfzp48wyeoxyusha8r681x725o4vwb468952vaao3\n Skipping fetch of repeat blob sha256:twc7y14h8qub3vi5i8vxvp0qxhtw01mee7nc5j7qjyhol5nx4e22fjl5kawlzf53\n Skipping fetch of repeat blob sha256:ex0gy93dwd19y35433v8n4kcozowo964jx8zt088ltd9edw8a5gob94qc9coyhc6\n Skipping fetch of repeat blob sha256:n54clmgy1tep6l409gdnkf980nvm1607oa6jr34po8q2v7u2l82o3z4rq9k6ctvg\n Copying config sha256:4s26zd3jojt2mch7t41ek56uabitwg91p7b530upbeeoyjmql6uw24wgxr5x6fel\n\n 0 B / 2.55 KiB [--------------------------------------------------------------]\n 2.55 KiB / 2.55 KiB [======================================================] 0s\n Writing manifest to image destination\n Storing signatures\n FATAL: Unable to pull docker://cmopipeline/variantcaller:1.0.0: conveyor failed to get: no descriptor found for reference \"3sw08cr0yd460ygwyjn2p29y40lakjnw9y2nj5w20za960059fij5okthwc87l66\"\n")])])]),o("p",[e._v("The error occurs when users are downloading pre-built images on Dockerhub via "),o("code",[e._v("singularity pull")]),e._v(' for the first time, i.e. "pulling" singularity images for the first time. This situation can be avoided if you set the variable '),o("code",[e._v("NXF_SINGULARITY_CACHEDIR")]),e._v(" to the subdirectory containing these images, which have already been downloaded on site. (Please read "),o("router-link",{attrs:{to:"/juno-setup.html"}},[e._v("Juno Setup")]),e._v(" and "),o("router-link",{attrs:{to:"/working-with-coontainers.html"}},[e._v("Working with Containers")]),e._v(" for more details on this topic.)")],1),e._v(" "),o("p",[e._v("Another option would be to simply execute the command above, i.e.")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",{pre:!0,attrs:{class:"language-text"}},[o("code",[e._v("singularity pull --name cmopipeline-fastp-1.0.0.img docker://cmopipeline/fastp:1.0.0 > /dev/null\n")])])]),o("div",{staticClass:"warning custom-block"},[o("p",{staticClass:"custom-block-title"},[e._v("Be aware")]),e._v(" "),o("p",[e._v("The command "),o("code",[e._v("singularity pull")]),e._v(" tends to take quite some time to run, and often slows down the login server for everyone. We recommend you don't do this often. Setting the variable "),o("code",[e._v("NXF_SINGULARITY_CACHEDIR")]),e._v(" to a location with already-downloaded images would be far more efficient.")])])])},[],!1,null,null,null);t.default=i.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/18.f6c42437.js b/docs/.vuepress/dist/assets/js/18.f6c42437.js
deleted file mode 100644
index a3a5bd9d..00000000
--- a/docs/.vuepress/dist/assets/js/18.f6c42437.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{202:function(e,t,a){"use strict";a.r(t);var o=a(0),n=Object(o.a)({},function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"variant-annotation-and-filtering"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#variant-annotation-and-filtering","aria-hidden":"true"}},[e._v("#")]),e._v(" Variant Annotation and Filtering")]),e._v(" "),a("div",{staticClass:"warning custom-block"},[a("p",{staticClass:"custom-block-title"},[e._v("Be aware")]),e._v(" "),a("ul",[a("li",[e._v("These components of the pipeline are subject to constant change.")]),e._v(" "),a("li",[e._v("Users should be aware of the pitfalls and challenges of filtering somatic variant calls, which are not further discussed here.")])])]),e._v(" "),a("h2",{attrs:{id:"somatic-snvs-and-indels"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#somatic-snvs-and-indels","aria-hidden":"true"}},[e._v("#")]),e._v(" Somatic SNVs and Indels")]),e._v(" "),a("p",[e._v("Variant-level annotation, filtering, and flagging of variants with further filter flags occur in the "),a("code",[e._v("SomaticCombineChannel")]),e._v(" and "),a("code",[e._v("SomaticAnnotateMaf")]),e._v(" processes. The union of variants that pass the somatic scoring models intrinsic to the callers ("),a("code",[e._v('FILTER="PASS"')]),e._v(" in the VCF files) are combined, giving precedence to MuTect2 for any site where both callers detected a variant.")]),e._v(" "),a("p",[e._v("The functional effect of variants is predicted using "),a("a",{attrs:{href:"https://www.ensembl.org/vep",target:"_blank",rel:"noopener noreferrer"}},[e._v("VEP"),a("OutboundLink")],1),e._v(" using "),a("a",{attrs:{href:"https://github.com/mskcc/vcf2maf",target:"_blank",rel:"noopener noreferrer"}},[e._v("vcf2maf"),a("OutboundLink")],1),e._v(", which also converts from VCF into a tab-delimited MAF file. See notes on use of "),a("router-link",{attrs:{to:"/reference-resources.html#preferred-transcript-isoforms"}},[e._v("preferred transcript isoforms")]),e._v(" and "),a("a",{attrs:{href:"https://useast.ensembl.org/info/docs/tools/vep/vep_formats.html#output",target:"_blank",rel:"noopener noreferrer"}},[e._v("VEP annotation outputs"),a("OutboundLink")],1),e._v(".")],1),e._v(" "),a("p",[e._v("The following columns are added to the final MAF file, in addition to those added during the VEP annotation:")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("Strelka2FILTER")]),e._v(": Indicates that Strelka2 detected the variant but did not classify it as a somatic variant.")]),e._v(" "),a("li",[a("code",[e._v("gnomAD_FILTER")]),e._v(": Indicates that the variant was detected in the gnomAD workflow, but ultimately "),a("em",[e._v("not")]),e._v(" classified as a "),a("em",[e._v("germline")]),e._v(" variant. Note that this is not used in current filtering schema.")]),e._v(" "),a("li",[a("code",[e._v("RepeatMasker")]),e._v(" and "),a("code",[e._v("EncodeDacMapability")]),e._v(": The variant locus is in a repeat, low-mappability, or hard-to-sequence region. More details in the "),a("router-link",{attrs:{to:"/reference-resources.html#repeatmasker-and-mappability-blacklist"}},[e._v("reference file description")]),e._v(".")],1),e._v(" "),a("li",[a("code",[e._v("PoN")]),e._v(": Panel-of-normals, the number of normal samples in which the variant was detected. "),a("router-link",{attrs:{to:"/wes-panel-of-normals.html"}},[e._v("More details on the implementation for exomes")]),e._v(". Under development for genomes, currently applies exome PoN.")],1),e._v(" "),a("li",[a("code",[e._v("Ref_Tri")]),e._v(": Trinucleotide context of SNVs, normalized to pyrimidine-to-purine transversions.")]),e._v(" "),a("li",[e._v("gnomAD allele frequencies, "),a("router-link",{attrs:{to:"/gnomad.html"}},[e._v("more details here")]),e._v(":\n"),a("ul",[a("li",[e._v("Exomes, columns named "),a("code",[e._v("non_cancer_*")]),e._v(": Allele counts ("),a("code",[e._v("AC")]),e._v(") and frequencies ("),a("code",[e._v("AF")]),e._v(") for the variant in the non-TCGA population and sub-populations of gnomAD.")]),e._v(" "),a("li",[e._v("Genomes, columns named ("),a("code",[e._v("AC_*")]),e._v("|"),a("code",[e._v("AF_*")]),e._v("): Allele counts and frequencies for the variant in populations and sub-populations of gnomAD.")])])],1),e._v(" "),a("li",[e._v("Raw allele counts: total and strand specific ("),a("code",[e._v("*_fwd")]),e._v(" and "),a("code",[e._v("*_rev")]),e._v(") allele "),a("code",[e._v("count")]),e._v(" and "),a("code",[e._v("depth")]),e._v(" for tumor ("),a("code",[e._v("t_*")]),e._v(") and normal ("),a("code",[e._v("n_*")]),e._v("). These are unfiltered values, in contrast to those from the variant callers, generated by "),a("a",{attrs:{href:"https://github.com/zengzheng123/GetBaseCountsMultiSample",target:"_blank",rel:"noopener noreferrer"}},[e._v("GetBaseCountsMultiSample"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[a("code",[e._v("alt_bias")]),e._v(": For variants with a "),a("em",[e._v("raw")]),e._v(" depth of at least 5 reads, this is true if all "),a("em",[e._v("raw")]),e._v(" variant-supporting reads are on either the forward or reverse strand.")]),e._v(" "),a("li",[a("code",[e._v("ref_bias")]),e._v(": For variants with a "),a("em",[e._v("raw")]),e._v(" depth of at least 5 reads, this is true if all "),a("em",[e._v("raw")]),e._v(" reads are on either the forward or reverse strand.")]),e._v(" "),a("li",[e._v("Mutation hotspots, also see :\n"),a("ul",[a("li",[a("code",[e._v("snv_hotspot")]),e._v(": SNV hotspots.")]),e._v(" "),a("li",[a("code",[e._v("threeD_hotspot")]),e._v(': 3D hotspots, in contrast to abovementioned "linear" hotspots.')]),e._v(" "),a("li",[a("code",[e._v("indel_hotspot")]),e._v(" and "),a("code",[e._v("indel_hotspot_type")]),e._v(": In-frame indel indel hotspots, and indication of whether it overlaps a prior indel hotspot locus ("),a("code",[e._v("prior")]),e._v(") or overlaps an SNV hotspot ("),a("code",[e._v("novel")]),e._v(").")]),e._v(" "),a("li",[a("code",[e._v("Hotspot")]),e._v(": "),a("code",[e._v("TRUE")]),e._v(" if either a linear SNV or indel hotspot.")])])]),e._v(" "),a("li",[e._v("OncoKB annotation:\n"),a("ul",[a("li",[a("code",[e._v("mutation_effect")]),e._v(" and "),a("code",[e._v("oncogenic")]),e._v(": Indicate the functional effect of the mutation and whether it is deemed to be oncogenic")]),e._v(" "),a("li",[a("code",[e._v("LEVEL_*")]),e._v(" and "),a("code",[e._v("Highest_level")]),e._v(": Indicates whether there is any drug at the given level of actionability and which is the highest level of actionability, if any. Note that this is cancer-type agnostic in current implementation.")]),e._v(" "),a("li",[a("code",[e._v("citations")]),e._v(": References for OncoKB annotation.")])])]),e._v(" "),a("li",[e._v("Variant caller metadata (development feature, subject to changes):\n"),a("ul",[a("li",[e._v("MuTect2"),a("sup",[e._v("1")]),e._v(":\n"),a("ul",[a("li",[a("code",[e._v("MBQ")]),e._v(": Median base quality, comma-separated for reference and alternate allele.")]),e._v(" "),a("li",[a("code",[e._v("MFRL")]),e._v(": Median fragment length, comma-separated for reference and alternate allele.")]),e._v(" "),a("li",[a("code",[e._v("MMQ")]),e._v(": Median mapping quality, comma-separated for reference and alternate allele.")]),e._v(" "),a("li",[a("code",[e._v("MPOS")]),e._v(": Median distance of variant from end of read.")]),e._v(" "),a("li",[a("code",[e._v("OCM")]),e._v(": Number of reads whose original alignment does not match the reference.")]),e._v(" "),a("li",[a("code",[e._v("RPA")]),e._v(": If tandem repeat, number of times repeated (can be comma-separated for reference and alternate allele).")]),e._v(" "),a("li",[a("code",[e._v("STR")]),e._v(": Boolean, indicating that variant is a short tandem repeat.")]),e._v(" "),a("li",[a("code",[e._v("ECNT")]),e._v(": Number of events in haplotype.")])])]),e._v(" "),a("li",[e._v("Strelka2"),a("sup",[e._v("2")]),e._v(":\n"),a("ul",[a("li",[a("code",[e._v("MQ")]),e._v(": Root mean square mapping quality.")]),e._v(" "),a("li",[a("code",[e._v("SNVSB")]),e._v(": Strand bias for somatic SNVs.")]),e._v(" "),a("li",[a("code",[e._v("FDP")]),e._v(": Number of basecalls filtered from original read depth for tier 1* read counts, for tumor ("),a("code",[e._v("t_FDP")]),e._v(") and normal ("),a("code",[e._v("n_FDP")]),e._v(").")]),e._v(" "),a("li",[a("code",[e._v("SUBDP")]),e._v(": Number of reads below tier 1 mapping-quality threshold aligned across site, for tumor ("),a("code",[e._v("t_SUBDP")]),e._v(") and normal ("),a("code",[e._v("n_SUBDP")]),e._v(").")]),e._v(" "),a("li",[a("code",[e._v("RU")]),e._v(": If indel, smallest repeating sequence unit in inserted or deleted sequence.")]),e._v(" "),a("li",[a("code",[e._v("IC")]),e._v(": If indel, number of times "),a("code",[e._v("RU")]),e._v(" is repeated in variant.")])])])])])]),e._v(" "),a("p",[e._v("The "),a("code",[e._v("FILTER")]),e._v(" column in the unfiltered MAF file, can contain any semi colon-separated combination of the following filter flags, or say "),a("code",[e._v("PASS")]),e._v(":")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("part_of_mnv")]),e._v(": The variant is likely part of another called multi-nucleotide variant (MNV).")]),e._v(" "),a("li",[a("code",[e._v("multiallelic2")]),e._v(": Multiallelic loci, likely artifact. For variants called by Strelka2. The "),a("code",[e._v("2")]),e._v(" is added due the presence of "),a("code",[e._v("multiallelic")]),e._v(" flag in the MuTect2 VCFs.")]),e._v(" "),a("li",[a("code",[e._v("strand_bias")]),e._v(", variants likely artifactual due to strand bias:\n"),a("ul",[a("li",[e._v("For variants called by Mutect2, if all supporting reads come from one strand and there are a least 10 reads on both strands in either normal or tumor sample.")]),e._v(" "),a("li",[e._v("For variants called by Strelka2, if the total alternate read count is above 10 and all of these fall on either strand; or low mapping-quality variant suffering from bias in both supporting reads and total reads.")])])]),e._v(" "),a("li",[a("code",[e._v("caller_conflict")]),e._v(": Variant was detected by both callers, but did not pass Strelka2's thresholds for somatic variant calling.")]),e._v(" "),a("li",[e._v("The following read depth-based flags are parameterized according to the sequencing platform, see the "),a("code",[e._v("exome.config")]),e._v(" and "),a("code",[e._v("genome.config")]),e._v(" files.\n"),a("ul",[a("li",[a("code",[e._v("low_vaf")]),e._v(": Variant falls below lower threshold for tumor variant allele fraction (VAF).")]),e._v(" "),a("li",[a("code",[e._v("low_t_depth")]),e._v(": Variant falls below lower threshold for total depth in the tumor.")]),e._v(" "),a("li",[a("code",[e._v("low_t_alt_count")]),e._v(": Variant falls below lower threshold for reads supporting variant allele in tumor.")]),e._v(" "),a("li",[a("code",[e._v("low_n_depth")]),e._v(": Variant falls below lower threshold for total depth in normal.")]),e._v(" "),a("li",[a("code",[e._v("high_n_alt_count")]),e._v(": Variant exceeds upper threshold for reads supporting variant allele normal.")]),e._v(" "),a("li",[a("code",[e._v("mappability")]),e._v("/"),a("code",[e._v("repeatmasker")]),e._v(": Variant falls in blacklisted genomic region.")]),e._v(" "),a("li",[a("code",[e._v("high_gnomad_pop_af")]),e._v(": Variant exceeds upper threshold for allele fraction in gnomAD.")]),e._v(" "),a("li",[a("code",[e._v("PoN")]),e._v(": Variant exceeds upper threshold for count in panel of normals.")]),e._v(" "),a("li",[a("code",[e._v("low_mapping_quality")]),e._v(": For indels called by Strelka2, variant falls below lower mapping quality threshold.")])])])]),e._v(" "),a("p",[a("small",[a("sup",[e._v("1")]),e._v("See the MuTect2 documentation for more information: "),a("a",{attrs:{href:"https://software.broadinstitute.org/gatk/documentation/article?id=11005",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://software.broadinstitute.org/gatk/documentation/article?id=11005"),a("OutboundLink")],1)]),a("br"),e._v(" "),a("small",[a("sup",[e._v("2")]),e._v("See the Strelka2 documentation for more information: "),a("a",{attrs:{href:"https://github.com/Illumina/strelka/blob/v2.9.x/docs/userGuide/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/Illumina/strelka/blob/v2.9.x/docs/userGuide/README.md"),a("OutboundLink")],1)])]),e._v(" "),a("h3",{attrs:{id:"whitelisting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#whitelisting","aria-hidden":"true"}},[e._v("#")]),e._v(" Whitelisting")]),e._v(" "),a("p",[e._v("Mutational hotspots, where the value in "),a("code",[e._v("Hotspot")]),e._v(" is "),a("code",[e._v("TRUE")]),e._v(", are retained in the filtered MAF file, if they:")]),e._v(" "),a("ul",[a("li",[e._v("Are flagged with "),a("code",[e._v("low_vaf")]),e._v(" but the tumor VAF is at least 0.02.")]),e._v(" "),a("li",[e._v("Are flagged with "),a("code",[e._v("low_mapping_quality")]),e._v(", "),a("code",[e._v("low_t_depth")]),e._v(", or "),a("code",[e._v("strand_bias")]),e._v(".")])]),e._v(" "),a("p",[a("em",[e._v("Note: Combinations of above filter flags results in filtering of the variant.")])]),e._v(" "),a("h3",{attrs:{id:"clonality-and-zygosity-analyses"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clonality-and-zygosity-analyses","aria-hidden":"true"}},[e._v("#")]),e._v(" Clonality and Zygosity Analyses")]),e._v(" "),a("h4",{attrs:{id:"clonality"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clonality","aria-hidden":"true"}},[e._v("#")]),e._v(" Clonality")]),e._v(" "),a("p",[e._v("Clonality of SNVs and indels is estimated based on "),a("a",{attrs:{href:"https://www.ncbi.nlm.nih.gov/pubmed/22544022",target:"_blank",rel:"noopener noreferrer"}},[e._v("prior literature"),a("OutboundLink")],1),e._v(" using "),a("a",{attrs:{href:"https://github.com/mskcc/facets-suite",target:"_blank",rel:"noopener noreferrer"}},[e._v("facets-suite"),a("OutboundLink")],1),e._v(". The cancer-cell fraction (CCF) annotation (columns "),a("code",[e._v("ccf_*")]),e._v(") contains these estimates for three presumed copy-number configurations of the mutation:")]),e._v(" "),a("ol",[a("li",[e._v("Inferred CCF if mutation exists in number of copies expected from observed VAF and local ploidy.")]),e._v(" "),a("li",[e._v("Inferred CCF if mutation is on the major allele.")]),e._v(" "),a("li",[e._v("Inferred CCF if mutation exists in one copy.\nFor each of these, error intervals and probabilities are provided.")])]),e._v(" "),a("h4",{attrs:{id:"zygosity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#zygosity","aria-hidden":"true"}},[e._v("#")]),e._v(" Zygosity")]),e._v(" "),a("p",[e._v("Tumor zygosity of SNVs and indels is estimated using the observed VAF and the expected VAF at the observed tumor purity and local copy number.")]),e._v(" "),a("h2",{attrs:{id:"germline-snvs-and-indels"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#germline-snvs-and-indels","aria-hidden":"true"}},[e._v("#")]),e._v(" Germline SNVs and Indels")]),e._v(" "),a("p",[e._v("Variant-level annotation, filtering, and flagging of variants with further filter flags occur in the "),a("code",[e._v("GermlineCombineChannel")]),e._v(" and "),a("code",[e._v("GermlineAnnotateMaf")]),e._v(" processes. The union of variants that pass the filters intrinsic to the callers ("),a("code",[e._v('FILTER="PASS"')]),e._v(" in the VCF files) are combined, giving precedence to HaplotypeCaller for any site where both callers detected a variant. See discussion elsewhere regarding "),a("a",{attrs:{href:"https://gatkforums.broadinstitute.org/gatk/discussion/23216/how-to-filter-variants-either-with-vqsr-or-by-hard-filtering",target:"_blank",rel:"noopener noreferrer"}},[e._v("single-sample filtering of HaplotypeCaller variant calls"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Functional effect predication and MAF file conversion is carried out as described above for somatic calls.")]),e._v(" "),a("p",[e._v("In the final MAF, columns "),a("code",[e._v("Strelka2FILTER")]),e._v(", "),a("code",[e._v("gnomAD_FILTER")]),e._v(", "),a("code",[e._v("RepeatMasker")]),e._v(" and "),a("code",[e._v("EncodeDacMapability")]),e._v(" as well as allele frequencies and counts from gnomAD are identical as described for somatic variants. Note that the "),a("code",[e._v("gnomAF_FILTER")]),e._v(" is used for filterig of germline variants, unlike for somatic variants.\nIn addition, the following columns are added to the germline MAF:")]),e._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://www.brcaexchange.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BRCA exchange"),a("OutboundLink")],1),e._v(" annotation:\n"),a("ul",[a("li",[a("code",[e._v("brca_exchange_id")]),e._v(": Variant ID.")]),e._v(" "),a("li",[a("code",[e._v("brca_exchange_enigma")]),e._v(": Annotation from the ENIGMA consortium.")]),e._v(" "),a("li",[a("code",[e._v("brca_exchange_clinvar")]),e._v(": Annotation from ClinVar.")])])]),e._v(" "),a("li",[a("code",[e._v("ch_gene")]),e._v(": Boolean indicating whether the gene is associated with the presence of clonal hematopoiesis (CH) ("),a("small",[a("em",[e._v("ASXL1")]),e._v(", "),a("em",[e._v("ATM")]),e._v(", "),a("em",[e._v("BCOR")]),e._v(", "),a("em",[e._v("CALR")]),e._v(", "),a("em",[e._v("CBL")]),e._v(", "),a("em",[e._v("CEBPA")]),e._v(", "),a("em",[e._v("CREBBP")]),e._v(", "),a("em",[e._v("DNMT3A")]),e._v(", "),a("em",[e._v("ETV6")]),e._v(", "),a("em",[e._v("EZH2")]),e._v(", "),a("em",[e._v("FLT3")]),e._v(", "),a("em",[e._v("GNAS")]),e._v(", "),a("em",[e._v("IDH1")]),e._v(", "),a("em",[e._v("IDH2")]),e._v(", "),a("em",[e._v("JAK2")]),e._v(", "),a("em",[e._v("KIT")]),e._v(", "),a("em",[e._v("KRAS")]),e._v(", "),a("em",[e._v("MPL")]),e._v(", "),a("em",[e._v("MYD88")]),e._v(", "),a("em",[e._v("NF1")]),e._v(", "),a("em",[e._v("NPM1")]),e._v(", "),a("em",[e._v("NRAS")]),e._v(", "),a("em",[e._v("PPM1D")]),e._v(", "),a("em",[e._v("RAD21")]),e._v(", "),a("em",[e._v("RUNX1")]),e._v(", "),a("em",[e._v("SETD2")]),e._v(", "),a("em",[e._v("SF3B1")]),e._v(", "),a("em",[e._v("SH2B3")]),e._v(", "),a("em",[e._v("SRSF2")]),e._v(", "),a("em",[e._v("STAG2")]),e._v(", "),a("em",[e._v("STAT3")]),e._v(", "),a("em",[e._v("TET2")]),e._v(", "),a("em",[e._v("TP53")]),e._v(", "),a("em",[e._v("U2AF1")]),e._v(", "),a("em",[e._v("WT1")]),e._v(", and "),a("em",[e._v("ZRSR2")]),e._v(")")])]),e._v(" "),a("li",[e._v("The following read depth-based flags are parameterized according to the sequencing platform, see the "),a("code",[e._v("exome.config")]),e._v(" and "),a("code",[e._v("genome.config")]),e._v(" files.\n"),a("ul",[a("li",[a("code",[e._v("low_n_depth")]),e._v(": Variant falls below lower threshold for total depth in normal.")]),e._v(" "),a("li",[a("code",[e._v("low_n_vaf")]),e._v(": Variant falls below lower threshold for normal VAF.")]),e._v(" "),a("li",[a("code",[e._v("ch_mutation")]),e._v(": Variant occurs in CH gene and occurs below lower threshold for normal VAF and below tumor VAF 0.25.")]),e._v(" "),a("li",[a("code",[e._v("t_in_n_contamination")]),e._v(": Tumor VAF is more than three-fold the normal VAF.")])])])]),e._v(" "),a("h3",{attrs:{id:"zygosity-analysis"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#zygosity-analysis","aria-hidden":"true"}},[e._v("#")]),e._v(" Zygosity Analysis")]),e._v(" "),a("p",[e._v("Similar to somatic mutations, tumor zygosity of germline SNVs and indels is estimated using the observed VAF and the expected VAF at the observed tumor purity and local copy number. The difference between the two cases is the calculation of the expected tumor VAF of the variant.")]),e._v(" "),a("h2",{attrs:{id:"somatic-and-germline-svs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#somatic-and-germline-svs","aria-hidden":"true"}},[e._v("#")]),e._v(" Somatic and Germline SVs")]),e._v(" "),a("p",[a("em",[e._v("Under development.")])])])},[],!1,null,null,null);t.default=n.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/19.78d93a62.js b/docs/.vuepress/dist/assets/js/19.78d93a62.js
deleted file mode 100644
index efd0d88e..00000000
--- a/docs/.vuepress/dist/assets/js/19.78d93a62.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{203:function(t,a,e){"use strict";e.r(a);var n=e(0),o=Object(n.a)({},function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"creating-a-panel-of-normals-pon-for-exomes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-panel-of-normals-pon-for-exomes","aria-hidden":"true"}},[t._v("#")]),t._v(" Creating a Panel of Normals (PoN) for Exomes")]),t._v(" "),e("p",[t._v('"Somatic" variants that occur in a panel of normal samples can be considered sequencing artifacts. We can generate a VCF file to filter against by calling variants in normal samples that look "clean", i.e. absent of tumor contamination. We use a similar variant calling strategy as for the somatic variant calling in tumor samples')]),t._v(" "),e("p",[t._v("For each normal sample call variants with "),e("code",[t._v("Strelka2")]),t._v(" and "),e("code",[t._v("MuTect2")]),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"strelka2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#strelka2","aria-hidden":"true"}},[t._v("#")]),t._v(" Strelka2")]),t._v(" "),e("p",[t._v("Run "),e("code",[t._v("Manta")]),t._v(" to seed indel calling, then run as if the normal sample is an unmatched tumor sample. Parse output with "),e("code",[t._v("bcftools")]),t._v(", subsetting on variants supported by more than one alternate read.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("$MANTA_PATH/configManta.py \\\n --referenceFasta $REF \\\n --runDir pon/manta/$NORMAL_NAME \\\n --exome \\\n --callRegions $TARGETS\n --bam $NORMAL_BAM\n\npon/manta/$NORMAL_NAME/runWorkflow.py --mode local\n\n$STRELKA_PATH/configureStrelkaGermlineWorkflow.py \\\n --ref $REF \\\n --runDir mutations/pon/strelka2/$NORMAL_NAME \\\n --exome \\\n --callRegions $TARGETS \\\n --indelCandidates pon/manta/$NORMAL_NAME/results/variants/candidateSmallIndels.vcf.gz \\\n --bam $NORMAL_BAM\n\nbcftools filter \\\n --include 'FORMAT/AD[0:1]>1' \\\n pon/strelka2/$NORMAL_NAME/results/variants/variants.vcf.gz | \\\n bcftools norm \\\n --fasta-ref $REF \\\n -check-ref s \\\n --multiallelics -both \\\n --output-type z \\\n --output pon/$NORMAL_NAME.strelka2.vcf.gz\n\ntabix --preset vcf pon/$NORMAL_NAME.strelka2.vcf.gz\n")])])]),e("h2",{attrs:{id:"mutect2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#mutect2","aria-hidden":"true"}},[t._v("#")]),t._v(" MuTect2")]),t._v(" "),e("p",[e("code",[t._v("MuTect2")]),t._v(" provides a variant calling mode for normal samples. Process the output similarly to above. Fix some VCF header tags so that the files can be combined downstream. As opposed to the somatic variant calling in tumor samples, here retain any calls at multiallelic loci.")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("gatk Mutect2 \\\n --reference $REF \\\n --intervals $TARGETS \\\n --input $NORMAL_BAM \\\n --tumor $NORMAL_NAME \\\n --output pon/mutect2/$NORMAL_NAME.vcf.gz\n\nbcftools filter \\\n --include 'FORMAT/AD[0:1]>1' \\\n pon/mutect2/$NORMAL_NAME.vcf.gz | \\\n sed -e 's/ID=RU,Number=1/ID=RU,Number=A/' -e 's/ID=AD,Number=R/ID=AD,Number=./' |\n bcftools norm \\\n --fasta-ref $REF \\\n --check-ref s \\\n --multiallelics -both \\\n --output-type z \\\n --output pon/$NORMAL_NAME.mutect2.vcf.gz\n\ntabix --preset vcf pon/$NORMAL_NAME.mutect2.vcf.gz\n")])])]),e("p",[t._v("Now, combine all individual VCFs from all normal samples. This requires a "),e("a",{attrs:{href:"https://samtools.github.io/bcftools/howtos/plugins.html",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("bcftools")]),t._v(" plugin"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("bcftools merge \\\n --merge none \\\n --output-type z \\\n --output pon.vcf.gz \\\n pon/*vcf.gz\n\nbcftools +fill-tags pon.vcf.gz \\\n --output-type z \\\n --output pon.annot.vcf.gz \\\n -- --tags AC\n\ntabix --preset vcf pon.annot.vcf.gz\n")])])]),e("p",[t._v("Now, "),e("code",[t._v("pon.annot.vcf.gz")]),t._v(" is ready to use to annotate somatic variant calls from tumor samples.")])])},[],!1,null,null,null);a.default=o.exports}}]);
\ No newline at end of file
diff --git a/docs/.vuepress/dist/assets/js/2.69b598aa.js b/docs/.vuepress/dist/assets/js/2.69b598aa.js
deleted file mode 100644
index e7f1d197..00000000
--- a/docs/.vuepress/dist/assets/js/2.69b598aa.js
+++ /dev/null
@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],[,,,,,,,,,,function(t,e,n){var r=n(40)("wks"),i=n(41),o=n(12).Symbol,a="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(12),i=n(28),o=n(15),a=n(25),s=n(44),u=function(t,e,n){var c,l,f,p,h=t&u.F,d=t&u.G,v=t&u.S,g=t&u.P,m=t&u.B,b=d?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,y=d?i:i[e]||(i[e]={}),x=y.prototype||(y.prototype={});for(c in d&&(n=e),n)f=((l=!h&&b&&void 0!==b[c])?b:n)[c],p=m&&l?s(f,r):g&&"function"==typeof f?s(Function.call,f):f,b&&a(b,c,f,t&u.U),y[c]!=f&&o(y,c,p),g&&x[c]!=f&&(x[c]=f)};r.core=i,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var r=n(94)("wks"),i=n(95),o=n(21).Symbol,a="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=r},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(24),i=n(42);t.exports=n(18)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(17);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){t.exports=!n(14)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,n){"use strict";n.d(e,"d",function(){return r}),n.d(e,"a",function(){return o}),n.d(e,"i",function(){return a}),n.d(e,"f",function(){return u}),n.d(e,"g",function(){return c}),n.d(e,"h",function(){return l}),n.d(e,"b",function(){return f}),n.d(e,"e",function(){return p}),n.d(e,"k",function(){return h}),n.d(e,"l",function(){return d}),n.d(e,"c",function(){return v}),n.d(e,"j",function(){return g});const r=/#.*$/,i=/\.(md|html)$/,o=/\/$/,a=/^(https?:|mailto:|tel:)/;function s(t){return decodeURI(t).replace(r,"").replace(i,"")}function u(t){return a.test(t)}function c(t){return/^mailto:/.test(t)}function l(t){return/^tel:/.test(t)}function f(t){if(u(t))return t;const e=t.match(r),n=e?e[0]:"",i=s(t);return o.test(i)?t:i+".html"+n}function p(t,e){const n=t.hash,i=function(t){const e=t.match(r);if(e)return e[0]}(e);return(!i||n===i)&&s(t.path)===s(e)}function h(t,e,n){if(u(e))return{type:"external",path:e};n&&(e=function(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const i=e.split("/");n&&i[i.length-1]||i.pop();const o=t.replace(/^\//,"").split("/");for(let t=0;t({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const s=a.sidebar||o.sidebar;if(s){const{base:t,config:n}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const r in e)if(0===(n=t,/(\.html|\/)$/.test(n)?n:n+"/").indexOf(encodeURI(r)))return{base:r,config:e[r]};var n;return{}}(e,s);return n?n.map(e=>(function t(e,n,r,i=1){if("string"==typeof e)return h(n,e,r);if(Array.isArray(e))return Object.assign(h(n,e[0],r),{title:e[1]});{i>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const o=e.children||[];return 0===o.length&&e.path?Object.assign(h(n,e.path,r),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:o.map(e=>t(e,n,r,i+1)),collapsable:!1!==e.collapsable}}})(e,i,t)):[]}return[]}function v(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},function(t,e){t.exports={}},function(t,e,n){var r=n(16),i=n(72),o=n(74),a=Object.defineProperty;e.f=n(18)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(12),i=n(15),o=n(26),a=n(41)("src"),s=n(108),u=(""+s).split("toString");n(28).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var c="function"==typeof n;c&&(o(n,"name")||i(n,"name",e)),t[e]!==n&&(c&&(o(n,a)||i(n,a,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(36),i=n(54);t.exports=n(38)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(75),i=n(20);t.exports=function(t){return r(i(t))}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(32),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(20);t.exports=function(t){return Object(r(t))}},function(t,e,n){"use strict";var r=n(11),i=n(48)(3);r(r.P+r.F*!n(35)([].some,!0),"Array",{some:function(t){return i(this,t,arguments[1])}})},function(t,e,n){"use strict";var r=n(14);t.exports=function(t,e){return!!t&&r(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e,n){var r=n(37),i=n(145),o=n(146),a=Object.defineProperty;e.f=n(38)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(53);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports=!n(88)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(28),i=n(12),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(71)?"pure":"global",copyright:"Ā© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){t.exports={}},function(t,e,n){var r=n(109);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(76),i=n(47);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(40)("keys"),i=n(41);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(44),i=n(75),o=n(33),a=n(31),s=n(117);t.exports=function(t,e){var n=1==t,u=2==t,c=3==t,l=4==t,f=6==t,p=5==t||f,h=e||s;return function(e,s,d){for(var v,g,m=o(e),b=i(m),y=r(s,d,3),x=a(b.length),_=0,k=n?h(e,x):u?h(e,0):void 0;x>_;_++)if((p||_ in b)&&(g=y(v=b[_],_,m),t))if(n)k[_]=g;else if(g)switch(t){case 3:return!0;case 5:return v;case 6:return _;case 2:k.push(v)}else if(l)return!1;return f?-1:c||l?l:k}}},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){var r=n(21),i=n(22),o=n(87),a=n(27),s=n(39),u=function(t,e,n){var c,l,f,p=t&u.F,h=t&u.G,d=t&u.S,v=t&u.P,g=t&u.B,m=t&u.W,b=h?i:i[e]||(i[e]={}),y=b.prototype,x=h?r:d?r[e]:(r[e]||{}).prototype;for(c in h&&(n=e),n)(l=!p&&x&&void 0!==x[c])&&s(b,c)||(f=l?x[c]:n[c],b[c]=h&&"function"!=typeof x[c]?n[c]:g&&l?o(f,r):m&&x[c]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(f):v&&"function"==typeof f?o(Function.call,f):f,v&&((b.virtual||(b.virtual={}))[c]=f,t&u.R&&y&&!y[c]&&a(y,c,f)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(157),i=n(57);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(94)("keys"),i=n(95);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},,function(t,e,n){for(var r=n(104),i=n(45),o=n(25),a=n(12),s=n(15),u=n(43),c=n(10),l=c("iterator"),f=c("toStringTag"),p=u.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=i(h),v=0;vu;)r(s,n=e[u++])&&(~o(c,n)||c.push(n));return c}},function(t,e,n){var r=n(29),i=n(31),o=n(113);t.exports=function(t){return function(e,n,a){var s,u=r(e),c=i(u.length),l=o(a,c);if(t&&n!=n){for(;c>l;)if((s=u[l++])!=s)return!0}else for(;c>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(24).f,i=n(26),o=n(10)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(33),i=n(45);n(116)("keys",function(){return function(t){return i(r(t))}})},function(t,e,n){var r=n(30);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){"use strict";var r=n(16),i=n(31),o=n(82),a=n(83);n(84)("match",1,function(t,e,n,s){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=s(n,t,this);if(e.done)return e.value;var u=r(t),c=String(this);if(!u.global)return a(u,c);var l=u.unicode;u.lastIndex=0;for(var f,p=[],h=0;null!==(f=a(u,c));){var d=String(f[0]);p[h]=d,""===d&&(u.lastIndex=o(c,i(u.lastIndex),l)),h++}return 0===h?null:p}]})},function(t,e,n){"use strict";var r=n(122)(!0);t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},function(t,e,n){"use strict";var r=n(123),i=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var o=n.call(t,e);if("object"!=typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return i.call(t,e)}},function(t,e,n){"use strict";n(124);var r=n(25),i=n(15),o=n(14),a=n(20),s=n(10),u=n(85),c=s("species"),l=!o(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}),f=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var p=s(t),h=!o(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)}),d=h?!o(function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[c]=function(){return n}),n[p](""),!e}):void 0;if(!h||!d||"replace"===t&&!l||"split"===t&&!f){var v=/./[p],g=n(a,p,""[t],function(t,e,n,r,i){return e.exec===u?h&&!i?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),m=g[0],b=g[1];r(String.prototype,t,m),i(RegExp.prototype,p,2==e?function(t,e){return b.call(t,this,e)}:function(t){return b.call(t,this)})}}},function(t,e,n){"use strict";var r,i,o=n(86),a=RegExp.prototype.exec,s=String.prototype.replace,u=a,c=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),l=void 0!==/()??/.exec("")[1];(c||l)&&(u=function(t){var e,n,r,i,u=this;return l&&(n=new RegExp("^"+u.source+"$(?!\\s)",o.call(u))),c&&(e=u.lastIndex),r=a.call(u,t),c&&r&&(u.lastIndex=u.global?r.index+r[0].length:e),l&&r&&r.length>1&&s.call(r[0],n,function(){for(i=1;i=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){"use strict";var r=n(92),i=n(52),o=n(151),a=n(27),s=n(23),u=n(152),c=n(97),l=n(161),f=n(13)("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,g,m){u(n,e,d);var b,y,x,_=function(t){if(!p&&t in O)return O[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",S="values"==v,w=!1,O=t.prototype,C=O[f]||O["@@iterator"]||v&&O[v],L=C||_(v),$=v?S?_("entries"):L:void 0,j="Array"==e&&O.entries||C;if(j&&(x=l(j.call(new t)))!==Object.prototype&&x.next&&(c(x,k,!0),r||"function"==typeof x[f]||a(x,f,h)),S&&C&&"values"!==C.name&&(w=!0,L=function(){return C.call(this)}),r&&!m||!p&&!w&&O[f]||a(O,f,L),s[e]=L,s[k]=h,v)if(b={values:S?L:_("values"),keys:g?L:_("keys"),entries:$},m)for(y in b)y in O||o(O,y,b[y]);else i(i.P+i.F*(p||w),e,b);return b}},function(t,e){t.exports=!0},function(t,e,n){var r=n(56),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(22),i=n(21),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(92)?"pure":"global",copyright:"Ā© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(36).f,i=n(39),o=n(13)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(57);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(55),i=n(13)("toStringTag"),o="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:o?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,n){"use strict";var r=n(16),i=n(33),o=n(31),a=n(32),s=n(82),u=n(83),c=Math.max,l=Math.min,f=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,h=/\$([$&`']|\d\d?)/g;n(84)("replace",2,function(t,e,n,d){return[function(r,i){var o=t(this),a=null==r?void 0:r[e];return void 0!==a?a.call(r,o,i):n.call(String(o),r,i)},function(t,e){var i=d(n,t,this,e);if(i.done)return i.value;var f=r(t),p=String(this),h="function"==typeof e;h||(e=String(e));var g=f.global;if(g){var m=f.unicode;f.lastIndex=0}for(var b=[];;){var y=u(f,p);if(null===y)break;if(b.push(y),!g)break;""===String(y[0])&&(f.lastIndex=s(p,o(f.lastIndex),m))}for(var x,_="",k=0,S=0;S=k&&(_+=p.slice(k,O)+A,k=O+w.length)}return _+p.slice(k)}];function v(t,e,r,o,a,s){var u=r+t.length,c=o.length,l=h;return void 0!==a&&(a=i(a),l=p),n.call(s,l,function(n,i){var s;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(u);case"<":s=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return n;if(l>c){var p=f(l/10);return 0===p?n:p<=c?void 0===o[p-1]?i.charAt(1):o[p-1]+i.charAt(1):n}s=o[l-1]}return void 0===s?"":s})}})},function(t,e,n){"use strict";var r=n(11),i=n(48)(1);r(r.P+r.F*!n(35)([].map,!0),"Array",{map:function(t){return i(this,t,arguments[1])}})},function(t,e,n){"use strict";n.r(e);n(34);var r=n(19),i={name:"SidebarGroup",props:["item","open","collapsable","depth"],components:{DropdownTransition:n(103).a},beforeCreate:function(){this.$options.components.SidebarLinks=n(102).default},methods:{isActive:r.e}},o=(n(180),n(0)),a=Object(o.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?n("router-link",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):n("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),n("DropdownTransition",[t.open||!t.collapsable?n("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,sidebarDepth:t.item.sidebarDepth,depth:t.depth+1}}):t._e()],1)],1)},[],!1,null,null,null).exports;n(101);function s(t,e,n,r){return t("router-link",{props:{to:e,activeClass:"",exactActiveClass:""},class:{active:r,"sidebar-link":!0}},n)}function u(t,e,n,i,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return!e||a>o?null:t("ul",{class:"sidebar-sub-headers"},e.map(function(e){var c=Object(r.e)(i,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[s(t,n+"#"+e.slug,e.title,c),u(t,e.children,n,i,o,a+1)])}))}var c={functional:!0,props:["item","sidebarDepth"],render:function(t,e){var n=e.parent,i=n.$page,o=(n.$site,n.$route),a=n.$themeConfig,c=n.$themeLocaleConfig,l=e.props,f=l.item,p=l.sidebarDepth,h=Object(r.e)(o,f.path),d="auto"===f.type?h||f.children.some(function(t){return Object(r.e)(o,f.basePath+"#"+t.slug)}):h,v="external"===f.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,f.path,f.title||f.path):s(t,f.path,f.title||f.path,d),g=i.frontmatter.sidebarDepth||p||c.sidebarDepth||a.sidebarDepth,m=null==g?1:g,b=c.displayAllHeaders||a.displayAllHeaders;return"auto"===f.type?[v,u(t,f.children,f.basePath,o,m)]:(d||b)&&f.headers&&!r.d.test(f.path)?[v,u(t,Object(r.c)(f.headers),f.path,o,m)]:v}};n(181);var l={name:"SidebarLinks",components:{SidebarGroup:a,SidebarLink:Object(o.a)(c,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth"],data:function(){return{openGroupIndex:0}},created:function(){this.refreshIndex()},watch:{$route:function(){this.refreshIndex()}},methods:{refreshIndex:function(){var t=function(t,e){for(var n=0;n-1&&(this.openGroupIndex=t)},toggleGroup:function(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive:function(t){return Object(r.e)(this.$route,t.regularPath)}}},f=Object(o.a)(l,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.items.length?n("ul",{staticClass:"sidebar-links"},t._l(t.items,function(e,r){return n("li",{key:r},["group"===e.type?n("SidebarGroup",{attrs:{item:e,open:r===t.openGroupIndex,collapsable:e.collapsable||e.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(r)}}}):n("SidebarLink",{attrs:{sidebarDepth:t.sidebarDepth,item:e}})],1)}),0):t._e()},[],!1,null,null,null);e.default=f.exports},function(t,e,n){"use strict";var r={name:"DropdownTransition",methods:{setHeight:function(t){t.style.height=t.scrollHeight+"px"},unsetHeight:function(t){t.style.height=""}}},i=(n(175),n(0)),o=Object(i.a)(r,function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)},[],!1,null,null,null);e.a=o.exports},function(t,e,n){"use strict";var r=n(105),i=n(106),o=n(43),a=n(29);t.exports=n(107)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,e,n){var r=n(10)("unscopables"),i=Array.prototype;null==i[r]&&n(15)(i,r,{}),t.exports=function(t){i[r][t]=!0}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){"use strict";var r=n(71),i=n(11),o=n(25),a=n(15),s=n(43),u=n(110),c=n(78),l=n(115),f=n(10)("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,g,m){u(n,e,d);var b,y,x,_=function(t){if(!p&&t in O)return O[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",S="values"==v,w=!1,O=t.prototype,C=O[f]||O["@@iterator"]||v&&O[v],L=C||_(v),$=v?S?_("entries"):L:void 0,j="Array"==e&&O.entries||C;if(j&&(x=l(j.call(new t)))!==Object.prototype&&x.next&&(c(x,k,!0),r||"function"==typeof x[f]||a(x,f,h)),S&&C&&"values"!==C.name&&(w=!0,L=function(){return C.call(this)}),r&&!m||!p&&!w&&O[f]||a(O,f,L),s[e]=L,s[k]=h,v)if(b={values:S?L:_("values"),keys:g?L:_("keys"),entries:$},m)for(y in b)y in O||o(O,y,b[y]);else i(i.P+i.F*(p||w),e,b);return b}},function(t,e,n){t.exports=n(40)("native-function-to-string",Function.toString)},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){"use strict";var r=n(111),i=n(42),o=n(78),a={};n(15)(a,n(10)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(16),i=n(112),o=n(47),a=n(46)("IE_PROTO"),s=function(){},u=function(){var t,e=n(73)("iframe"),r=o.length;for(e.style.display="none",n(114).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("