diff --git a/.gitignore b/.gitignore index 48d267266c87cf..0f8b77d39a77ce 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ vendor *.swp .jekyll-metadata .jekyll-cache +plantuml.jar diff --git a/CONTRIBUTORS.yaml b/CONTRIBUTORS.yaml index 639fa6dc2eeb1d..c2c2d7105f0ba5 100644 --- a/CONTRIBUTORS.yaml +++ b/CONTRIBUTORS.yaml @@ -138,7 +138,7 @@ cganote: name: Carrie Ganote chrisbarnettster: - name: Christopher Barnettster + name: Christopher Barnett gitter: chrisbarnettster daltis20012009: @@ -205,7 +205,11 @@ fidelram: name: Fidel Ramirez foellmelanie: - name: Melanie Foell + name: Melanie Föll + email: melanie.foell@mol-med.uni-freiburg.de + twitter: MCFoell + gitter: foellmelanie + orcid: 0000-0002-1887-7543 fpsom: name: Fotis E. Psomopoulos @@ -346,7 +350,7 @@ marziacremona: email: mac78@psu.edu matthias313: - name: Matthias + name: Matthias Fahrner mblue9: name: Maria Doyle @@ -402,6 +406,10 @@ NickSto: name: Nick Stoler twitter: NickStoler +nomadscientist: + name: Wendi Bacon + email: wendi@ebi.ac.uk + nsoranzo: name: Nicola Soranzo gitter: nsoranzo @@ -496,8 +504,8 @@ subinamehta: linkedin: subinamehta gitter: subinamehta orcid: 0000-0001-9818-0537 - - + + tealiie: thomasmanke: @@ -540,7 +548,7 @@ tklingstrom: twitter: tklingstrom gitter: tklingstrom orcid: 0000-0002-9504-1352 - + valentinmarcon: name: Valentin Marcon diff --git a/Makefile b/Makefile index f7ad178eba97a8..b6fe85f1127621 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ endif default: help install-conda: ## install Miniconda - curl $(MINICONDA_URL) -o miniconda.sh + curl -L $(MINICONDA_URL) -o miniconda.sh bash miniconda.sh -b .PHONY: install-conda diff --git a/_config.yml b/_config.yml index 3b83c4a3a69945..fd51752fedf9f5 100644 --- a/_config.yml +++ b/_config.yml @@ -79,80 +79,76 @@ scholar: # Icon tag config icon-tag: - # in tutorials - question: fa-question-circle - solution: fa-eye - hands_on: fa-pencil - comment: fa-commenting-o - tip: fa-lightbulb-o - objectives: fa-bullseye - requirements: fa-check-circle - time: fa-hourglass-end - keypoints: fa-key - tool: fa-wrench - workflow: fa-project-diagram - feedback: fa-comments-o - congratulations: fa-thumbs-up - trophy: fa-trophy - warning: fa-warning - details: fa-info-circle - exchange: fa-exchange - wf-input: fa-chevron-circle-right - sticky-note: fa-sticky-note - new-history: fa-plus - param-file: fa-file-o - param-files: fa-files-o - param-collection: fa-folder-o - param-text: fa-pencil - param-check: fa-check-square-o - param-select: fa-filter - param-repeat: fa-plus-square-o - galaxy-eye: fa-eye - galaxy-info: fa-info-circle - galaxy-gear: fa-cog - galaxy-history: fa-archive - galaxy-library: fa-folder - galaxy-pencil: fa-pencil - galaxy-refresh: fa-refresh - galaxy-barchart: fa-bar-chart - galaxy-cross: fa-times - galaxy-columns: fa-columns - galaxy-tags: fa-tags - galaxy-selector: fa-check-square-o - galaxy-upload: fa fa-upload - galaxy-chart-select-data: fa fa-database - galaxy-save: fa fa-save - galaxy-scratchbook: fa fa-th - galaxy-dropdown: fa-caret-down - workflow-runtime-toggle: fa-caret-square-o-up - galaxy-wf-connection: fa-arrows-h - galaxy-wf-new: fa-plus - search: fa fa-search code-in: far fa-keyboard code-out: fas laptop-code - - # menus, links - zenodo_link: fa-files-o - tutorial: fa-laptop - slides: fa-slideshare - interactive_tour: fa-magic - workflow: fa-share-alt - topic: fa-folder-o - instances: fa-globe - docker_image: fa-ship - galaxy_instance: fa-external-link - last_modification: fa-calendar - references: fa-bookmark - gitter: fa-comments - help: fa-life-ring - github: fa-github - email: fa-envelope-o - twitter: fa-twitter - linkedin: fa-linkedin - orcid: ai-orcid - curriculum: fa-graduation-cap - level: fa-graduation-cap - hall-of-fame: fa-users + comment: far fa-comment-dots + congratulations: far fa-thumbs-up + curriculum: fas fa-graduation-cap + details: fas fa-info-circle + docker_image: fab fa-docker + email: far fa-envelope + exchange: fas fa-exchange-alt + feedback: far fa-comments + galaxy-barchart: fas fa-chart-bar + galaxy-chart-select-data: fas fa-database + galaxy-columns: fas fa-columns + galaxy-cross: fas fa-times + galaxy-dropdown: fas fa-caret-down + galaxy-eye: far fa-eye + galaxy-gear: fas fa-cog + galaxy-history: fas fa-columns + galaxy-info: fas fa-info-circle + galaxy-library: far fa-folder + galaxy-pencil: fas fa-pencil-alt + galaxy-refresh: fas fa-sync-alt + galaxy-save: far fa-save + galaxy-scratchbook: fas fa-th + galaxy-selector: far fa-check-square + galaxy-tags: fas fa-tags + galaxy-upload: fas fa-upload + galaxy-wf-connection: fas fa-arrows-alt-h + galaxy-wf-new: fas fa-plus + galaxy_instance: fas fa-external-link-alt + github: fab fa-github + gitter: fab fa-gitter + hall-of-fame: fas fa-users + hands_on: fas fa-pencil-alt + help: far fa-question-circle + instances: fas fa-globe + interactive_tour: fas fa-magic + keypoints: fas fa-key + last_modification: far fa-calendar + level: fas fa-graduation-cap + linkedin: fab fa-linkedin + new-history: fas fa-plus + objectives: fas fa-bullseye + orcid: fab fa-orcid + param-check: far fa-check-square + param-collection: far fa-folder + param-file: far fa-file + param-files: far fa-copy + param-repeat: far fa-plus-square + param-select: fas fa-filter + param-text: fas fa-pencil-alt + question: far fa-question-circle + references: far fa-bookmark + requirements: fas fa-check-circle + search: fas fa fa-search + slides: fab fa-slideshare + solution: far fa-eye + sticky-note: fas fa-sticky-note + time: fas fa-hourglass-half + tip: far fa-lightbulb + tool: fas fa-wrench + topic: far fa-folder + trophy: fas fa-trophy + tutorial: fas fa-laptop + twitter: fab fa-twitter + warning: fas fa-exclamation-triangle + wf-input: fas fa-chevron-circle-right + workflow-runtime-toggle: far fa-caret-square-up + workflow: fas fa-share-alt + zenodo_link: far fa-copy # To exclude in _site exclude: diff --git a/_layouts/base.html b/_layouts/base.html index 2e453b2ca3f1b9..5bd50245eb3c62 100644 --- a/_layouts/base.html +++ b/_layouts/base.html @@ -13,7 +13,7 @@ - + diff --git a/_layouts/base_slides.html b/_layouts/base_slides.html index 9977a0fe059e79..09fd8f148b087f 100644 --- a/_layouts/base_slides.html +++ b/_layouts/base_slides.html @@ -16,7 +16,7 @@ {% include _includes/analytics.html %} {% endif %} - + diff --git a/_plugins/jekyll-icon-tag.rb b/_plugins/jekyll-icon-tag.rb index 88c8c813cfe924..0a37a48a9f791e 100644 --- a/_plugins/jekyll-icon-tag.rb +++ b/_plugins/jekyll-icon-tag.rb @@ -18,7 +18,7 @@ def render(context) end if icon.start_with?("fa") - %Q(#{@text}) + %Q(#{@text}) elsif icon.start_with?("ai") %Q(#{@text}) end diff --git a/assets/css/font-awesome.css b/assets/css/font-awesome.css deleted file mode 100644 index a0b879fa0006d7..00000000000000 --- a/assets/css/font-awesome.css +++ /dev/null @@ -1,2199 +0,0 @@ -/*! - * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.6.3'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.fa-pull-left { - float: left; -} -.fa-pull-right { - float: right; -} -.fa.fa-pull-left { - margin-right: .3em; -} -.fa.fa-pull-right { - margin-left: .3em; -} -/* Deprecated as of 4.4.0 */ -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-feed:before, -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper-pp:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-resistance:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-y-combinator-square:before, -.fa-yc-square:before, -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} -.fa-tty:before { - content: "\f1e4"; -} -.fa-binoculars:before { - content: "\f1e5"; -} -.fa-plug:before { - content: "\f1e6"; -} -.fa-slideshare:before { - content: "\f1e7"; -} -.fa-twitch:before { - content: "\f1e8"; -} -.fa-yelp:before { - content: "\f1e9"; -} -.fa-newspaper-o:before { - content: "\f1ea"; -} -.fa-wifi:before { - content: "\f1eb"; -} -.fa-calculator:before { - content: "\f1ec"; -} -.fa-paypal:before { - content: "\f1ed"; -} -.fa-google-wallet:before { - content: "\f1ee"; -} -.fa-cc-visa:before { - content: "\f1f0"; -} -.fa-cc-mastercard:before { - content: "\f1f1"; -} -.fa-cc-discover:before { - content: "\f1f2"; -} -.fa-cc-amex:before { - content: "\f1f3"; -} -.fa-cc-paypal:before { - content: "\f1f4"; -} -.fa-cc-stripe:before { - content: "\f1f5"; -} -.fa-bell-slash:before { - content: "\f1f6"; -} -.fa-bell-slash-o:before { - content: "\f1f7"; -} -.fa-trash:before { - content: "\f1f8"; -} -.fa-copyright:before { - content: "\f1f9"; -} -.fa-at:before { - content: "\f1fa"; -} -.fa-eyedropper:before { - content: "\f1fb"; -} -.fa-paint-brush:before { - content: "\f1fc"; -} -.fa-birthday-cake:before { - content: "\f1fd"; -} -.fa-area-chart:before { - content: "\f1fe"; -} -.fa-pie-chart:before { - content: "\f200"; -} -.fa-line-chart:before { - content: "\f201"; -} -.fa-lastfm:before { - content: "\f202"; -} -.fa-lastfm-square:before { - content: "\f203"; -} -.fa-toggle-off:before { - content: "\f204"; -} -.fa-toggle-on:before { - content: "\f205"; -} -.fa-bicycle:before { - content: "\f206"; -} -.fa-bus:before { - content: "\f207"; -} -.fa-ioxhost:before { - content: "\f208"; -} -.fa-angellist:before { - content: "\f209"; -} -.fa-cc:before { - content: "\f20a"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} -.fa-meanpath:before { - content: "\f20c"; -} -.fa-buysellads:before { - content: "\f20d"; -} -.fa-connectdevelop:before { - content: "\f20e"; -} -.fa-dashcube:before { - content: "\f210"; -} -.fa-forumbee:before { - content: "\f211"; -} -.fa-leanpub:before { - content: "\f212"; -} -.fa-sellsy:before { - content: "\f213"; -} -.fa-shirtsinbulk:before { - content: "\f214"; -} -.fa-simplybuilt:before { - content: "\f215"; -} -.fa-skyatlas:before { - content: "\f216"; -} -.fa-cart-plus:before { - content: "\f217"; -} -.fa-cart-arrow-down:before { - content: "\f218"; -} -.fa-diamond:before { - content: "\f219"; -} -.fa-ship:before { - content: "\f21a"; -} -.fa-user-secret:before { - content: "\f21b"; -} -.fa-motorcycle:before { - content: "\f21c"; -} -.fa-street-view:before { - content: "\f21d"; -} -.fa-heartbeat:before { - content: "\f21e"; -} -.fa-venus:before { - content: "\f221"; -} -.fa-mars:before { - content: "\f222"; -} -.fa-mercury:before { - content: "\f223"; -} -.fa-intersex:before, -.fa-transgender:before { - content: "\f224"; -} -.fa-transgender-alt:before { - content: "\f225"; -} -.fa-venus-double:before { - content: "\f226"; -} -.fa-mars-double:before { - content: "\f227"; -} -.fa-venus-mars:before { - content: "\f228"; -} -.fa-mars-stroke:before { - content: "\f229"; -} -.fa-mars-stroke-v:before { - content: "\f22a"; -} -.fa-mars-stroke-h:before { - content: "\f22b"; -} -.fa-neuter:before { - content: "\f22c"; -} -.fa-genderless:before { - content: "\f22d"; -} -.fa-facebook-official:before { - content: "\f230"; -} -.fa-pinterest-p:before { - content: "\f231"; -} -.fa-whatsapp:before { - content: "\f232"; -} -.fa-server:before { - content: "\f233"; -} -.fa-user-plus:before { - content: "\f234"; -} -.fa-user-times:before { - content: "\f235"; -} -.fa-hotel:before, -.fa-bed:before { - content: "\f236"; -} -.fa-viacoin:before { - content: "\f237"; -} -.fa-train:before { - content: "\f238"; -} -.fa-subway:before { - content: "\f239"; -} -.fa-medium:before { - content: "\f23a"; -} -.fa-yc:before, -.fa-y-combinator:before { - content: "\f23b"; -} -.fa-optin-monster:before { - content: "\f23c"; -} -.fa-opencart:before { - content: "\f23d"; -} -.fa-expeditedssl:before { - content: "\f23e"; -} -.fa-battery-4:before, -.fa-battery-full:before { - content: "\f240"; -} -.fa-battery-3:before, -.fa-battery-three-quarters:before { - content: "\f241"; -} -.fa-battery-2:before, -.fa-battery-half:before { - content: "\f242"; -} -.fa-battery-1:before, -.fa-battery-quarter:before { - content: "\f243"; -} -.fa-battery-0:before, -.fa-battery-empty:before { - content: "\f244"; -} -.fa-mouse-pointer:before { - content: "\f245"; -} -.fa-i-cursor:before { - content: "\f246"; -} -.fa-object-group:before { - content: "\f247"; -} -.fa-object-ungroup:before { - content: "\f248"; -} -.fa-sticky-note:before { - content: "\f249"; -} -.fa-sticky-note-o:before { - content: "\f24a"; -} -.fa-cc-jcb:before { - content: "\f24b"; -} -.fa-cc-diners-club:before { - content: "\f24c"; -} -.fa-clone:before { - content: "\f24d"; -} -.fa-balance-scale:before { - content: "\f24e"; -} -.fa-hourglass-o:before { - content: "\f250"; -} -.fa-hourglass-1:before, -.fa-hourglass-start:before { - content: "\f251"; -} -.fa-hourglass-2:before, -.fa-hourglass-half:before { - content: "\f252"; -} -.fa-hourglass-3:before, -.fa-hourglass-end:before { - content: "\f253"; -} -.fa-hourglass:before { - content: "\f254"; -} -.fa-hand-grab-o:before, -.fa-hand-rock-o:before { - content: "\f255"; -} -.fa-hand-stop-o:before, -.fa-hand-paper-o:before { - content: "\f256"; -} -.fa-hand-scissors-o:before { - content: "\f257"; -} -.fa-hand-lizard-o:before { - content: "\f258"; -} -.fa-hand-spock-o:before { - content: "\f259"; -} -.fa-hand-pointer-o:before { - content: "\f25a"; -} -.fa-hand-peace-o:before { - content: "\f25b"; -} -.fa-trademark:before { - content: "\f25c"; -} -.fa-registered:before { - content: "\f25d"; -} -.fa-creative-commons:before { - content: "\f25e"; -} -.fa-gg:before { - content: "\f260"; -} -.fa-gg-circle:before { - content: "\f261"; -} -.fa-tripadvisor:before { - content: "\f262"; -} -.fa-odnoklassniki:before { - content: "\f263"; -} -.fa-odnoklassniki-square:before { - content: "\f264"; -} -.fa-get-pocket:before { - content: "\f265"; -} -.fa-wikipedia-w:before { - content: "\f266"; -} -.fa-safari:before { - content: "\f267"; -} -.fa-chrome:before { - content: "\f268"; -} -.fa-firefox:before { - content: "\f269"; -} -.fa-opera:before { - content: "\f26a"; -} -.fa-internet-explorer:before { - content: "\f26b"; -} -.fa-tv:before, -.fa-television:before { - content: "\f26c"; -} -.fa-contao:before { - content: "\f26d"; -} -.fa-500px:before { - content: "\f26e"; -} -.fa-amazon:before { - content: "\f270"; -} -.fa-calendar-plus-o:before { - content: "\f271"; -} -.fa-calendar-minus-o:before { - content: "\f272"; -} -.fa-calendar-times-o:before { - content: "\f273"; -} -.fa-calendar-check-o:before { - content: "\f274"; -} -.fa-industry:before { - content: "\f275"; -} -.fa-map-pin:before { - content: "\f276"; -} -.fa-map-signs:before { - content: "\f277"; -} -.fa-map-o:before { - content: "\f278"; -} -.fa-map:before { - content: "\f279"; -} -.fa-commenting:before { - content: "\f27a"; -} -.fa-commenting-o:before { - content: "\f27b"; -} -.fa-houzz:before { - content: "\f27c"; -} -.fa-vimeo:before { - content: "\f27d"; -} -.fa-black-tie:before { - content: "\f27e"; -} -.fa-fonticons:before { - content: "\f280"; -} -.fa-reddit-alien:before { - content: "\f281"; -} -.fa-edge:before { - content: "\f282"; -} -.fa-credit-card-alt:before { - content: "\f283"; -} -.fa-codiepie:before { - content: "\f284"; -} -.fa-modx:before { - content: "\f285"; -} -.fa-fort-awesome:before { - content: "\f286"; -} -.fa-usb:before { - content: "\f287"; -} -.fa-product-hunt:before { - content: "\f288"; -} -.fa-mixcloud:before { - content: "\f289"; -} -.fa-scribd:before { - content: "\f28a"; -} -.fa-pause-circle:before { - content: "\f28b"; -} -.fa-pause-circle-o:before { - content: "\f28c"; -} -.fa-stop-circle:before { - content: "\f28d"; -} -.fa-stop-circle-o:before { - content: "\f28e"; -} -.fa-shopping-bag:before { - content: "\f290"; -} -.fa-shopping-basket:before { - content: "\f291"; -} -.fa-hashtag:before { - content: "\f292"; -} -.fa-bluetooth:before { - content: "\f293"; -} -.fa-bluetooth-b:before { - content: "\f294"; -} -.fa-percent:before { - content: "\f295"; -} -.fa-gitlab:before { - content: "\f296"; -} -.fa-wpbeginner:before { - content: "\f297"; -} -.fa-wpforms:before { - content: "\f298"; -} -.fa-envira:before { - content: "\f299"; -} -.fa-universal-access:before { - content: "\f29a"; -} -.fa-wheelchair-alt:before { - content: "\f29b"; -} -.fa-question-circle-o:before { - content: "\f29c"; -} -.fa-blind:before { - content: "\f29d"; -} -.fa-audio-description:before { - content: "\f29e"; -} -.fa-volume-control-phone:before { - content: "\f2a0"; -} -.fa-braille:before { - content: "\f2a1"; -} -.fa-assistive-listening-systems:before { - content: "\f2a2"; -} -.fa-asl-interpreting:before, -.fa-american-sign-language-interpreting:before { - content: "\f2a3"; -} -.fa-deafness:before, -.fa-hard-of-hearing:before, -.fa-deaf:before { - content: "\f2a4"; -} -.fa-glide:before { - content: "\f2a5"; -} -.fa-glide-g:before { - content: "\f2a6"; -} -.fa-signing:before, -.fa-sign-language:before { - content: "\f2a7"; -} -.fa-low-vision:before { - content: "\f2a8"; -} -.fa-viadeo:before { - content: "\f2a9"; -} -.fa-viadeo-square:before { - content: "\f2aa"; -} -.fa-snapchat:before { - content: "\f2ab"; -} -.fa-snapchat-ghost:before { - content: "\f2ac"; -} -.fa-snapchat-square:before { - content: "\f2ad"; -} -.fa-pied-piper:before { - content: "\f2ae"; -} -.fa-first-order:before { - content: "\f2b0"; -} -.fa-yoast:before { - content: "\f2b1"; -} -.fa-themeisle:before { - content: "\f2b2"; -} -.fa-google-plus-circle:before, -.fa-google-plus-official:before { - content: "\f2b3"; -} -.fa-fa:before, -.fa-font-awesome:before { - content: "\f2b4"; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} diff --git a/assets/css/slides.css b/assets/css/slides.css index 70b373eeafad23..1a24449f7a01e5 100644 --- a/assets/css/slides.css +++ b/assets/css/slides.css @@ -296,6 +296,14 @@ th { font-size: 30px; } +.enlarge200 { + font-size: 200%; +} + +.enlarge200 .remark-code { + font-size: 36px; +} + .strike { text-decoration: line-through; } diff --git a/bin/validate-workflow-tags.sh b/bin/validate-workflow-tags.sh index 961bad154f848f..8eea5024c15ed3 100755 --- a/bin/validate-workflow-tags.sh +++ b/bin/validate-workflow-tags.sh @@ -7,33 +7,36 @@ function tester { import sys import json +problems = 0 +output = ["-----------------------ERROR-----------------------------"] with open("$1") as json_file: data = json.load(json_file) - # Checking for 'tags' in workflow - if 'tags' not in data or "$2" not in data['tags']: - sys.stderr.write("-------------------------------------------\n") - sys.stderr.write( - "Workflow {} has no corresponding 'tags' attribute. Please add:\n".format(data['name'])) - sys.stderr.write('"tags": [' + "\n\t" + '"' + "$2" + '"' + "\n]\n") - sys.exit(False) + # Checking for 'tags' in workflow if topic is known + if 'tags' not in data or not data['tags'] or "$2" not in data['tags']: + problems += 1 + output.append( + "{}. The 'tags' attribute is missing. Please add:".format(str(problems), data['name'])) + output.append('"tags": [' + "\n\t" + '"' + "$2" + '"' + "\n]") # Checking for 'annotation' in workflow - elif 'annotation' not in data or not data['annotation']: - sys.stderr.write("-------------------------------------------\n") - sys.stderr.write( - "Workflow {} has no corresponding 'annotation' attribute. Please add: \n".format(data['name'])) - sys.stderr.write('"annotation": ""' + "\n") - sys.exit(False) + if 'annotation' not in data or not data['annotation']: + problems += 1 + output.append( + "{}. The 'annotation' attribute is missing. Please add:".format(str(problems))) + output.append('"annotation": "<title of tutorial>"') # Checking if there are tools used from the testtoolshed - else: - for stepnr, step in data['steps'].items(): - if step['tool_id'] and step['type'] == 'tool' and 'testtoolshed.g2.bx.psu.edu' in step['tool_id']: - sys.stderr.write("-------------------------------------------\n") - sys.stderr.write("Workflow {} has a tool from the testtoolshed in step {}.\n".format( - data['name'], str(stepnr))) - sys.exit(False) - sys.exit(True) + for stepnr, step in data['steps'].items(): + if step['tool_id'] and step['type'] == 'tool' and 'testtoolshed.g2.bx.psu.edu' in step['tool_id']: + problems += 1 + output.append("{}. Step {} has a tool from the testtoolshed.".format(str(problems), str(stepnr))) + + if problems: + output.insert(1, "Workflow '{}' has {} problem(s) because:".format(data['name'], str(problems))) + output.append("---------------------------------------------------------\n") + sys.stderr.write("\n".join(output)) + sys.exit(False) + sys.exit(True) END } @@ -50,7 +53,6 @@ do if tester $w $topic; then - echo "-------------Invalid workflow--------------" exit_with=1 fi done @@ -58,4 +60,4 @@ do done done -exit $exit_with +exit $exit_with \ No newline at end of file diff --git a/snippets/admin-testing.md b/snippets/admin-testing.md new file mode 100644 index 00000000000000..0aee04a2a7ceb9 --- /dev/null +++ b/snippets/admin-testing.md @@ -0,0 +1,9 @@ +> ### {% icon tip %} Operating System Compatability +> +> These Ansible roles and training materials were last tested on Centos 7 and Ubuntu 18.04, but will probably work on other RHEL and Debian variants. +> +> The roles that are used in these training are currently used by `usegalaxy.*`, and other, servers in maintaining their infrastructure. ([US](https://github.com/galaxyproject/infrastructure-playbook/), [EU](https://github.com/usegalaxy-eu/infrastructure-playbook), both are running CentOS 7) +> +> If you have an issue running these trainings on your OS flavour, please report [the issue](https://github.com/galaxyproject/training-material/issues/new) in the training material and we can see if it is possible to solve. +> +{: .tip} \ No newline at end of file diff --git a/topics/admin/tutorials/ansible-galaxy/tutorial.md b/topics/admin/tutorials/ansible-galaxy/tutorial.md index b3e2d4d4da9bc8..0b51351bf05536 100644 --- a/topics/admin/tutorials/ansible-galaxy/tutorial.md +++ b/topics/admin/tutorials/ansible-galaxy/tutorial.md @@ -47,6 +47,7 @@ We want to give you a comprehensive understanding of how the Galaxy installation > {: .agenda} +{% include snippets/admin-testing.md %} # Playbook Overview diff --git a/topics/admin/tutorials/ansible/tutorial.md b/topics/admin/tutorials/ansible/tutorial.md index 5c7df1d3a109b5..a96a8c077c9341 100644 --- a/topics/admin/tutorials/ansible/tutorial.md +++ b/topics/admin/tutorials/ansible/tutorial.md @@ -37,6 +37,7 @@ This will be a very practical training with emphasis on looking at examples from > {: .agenda} +{% include snippets/admin-testing.md %} # What is Ansible? diff --git a/topics/assembly/tutorials/assembly-with-preprocessing/tutorial.md b/topics/assembly/tutorials/assembly-with-preprocessing/tutorial.md new file mode 100644 index 00000000000000..7fe7aef5c37e83 --- /dev/null +++ b/topics/assembly/tutorials/assembly-with-preprocessing/tutorial.md @@ -0,0 +1,922 @@ +--- +layout: tutorial_hands_on + +title: "Unicycler assembly of SARS-CoV-2 genome with preprocessing to remove human genome reads" +zenodo_link: "https://doi.org/10.5281/zenodo.3732358" +questions: + - How can a genome of interest be assembled against a background of contaminating reads from other genomes? + - How can sequencing data from public sources be turned into assembly-ready polished datasets? +objectives: + - Obtain viral (SARS-CoV-2) sequencing data with contaminating human reads from public sources + - Organize the data into collections and check its quality + - Detect and remove human reads + - Assemble retained reads and explore the results +time_estimation: "4h" # plus additional time for (optional) NCBI SRA downloads +level: Intermediate +key_points: + - Certain types of NGS samples can be heavily contaminated with sequences from other genomes + - Reads from known/expected contaminating sources can be identified by mapping to the respective genomes + - After mapping, use filtering tools to remove identified contaminating reads, and use conversion tools to convert remaining mapped reads back into raw sequenced reads expected by most downstream tools +requirements: + - + type: "internal" + topic_name: assembly + tutorials: + - unicycler-assembly + - + type: "internal" + topic_name: sequence-analysis + tutorials: + - mapping + - + type: "internal" + topic_name: galaxy-data-manipulation + tutorials: + - collections +tags: + - covid19 +contributors: + - wm75 + +--- + +# Introduction +{:.no_toc} + +In some research or clinical contexts it is not possible, or very hard, to +purify DNA/RNA for sequencing from just the specimen of interest. +Instead you will isolate DNA that is contaminated, sometimes heavily, with +DNA/RNA of a different origin. +This is the case for example with microbiome samples, which typically display +considerable contamination with host DNA, or with samples of body fluids for +pathogen detection. Such contamination can pose an issue with certain types of +analyses, in particular with genome assembly. + +This tutorial guides you through the preprocessing of sequencing data of +bronchoalveolar lavage fluid (BALF) samples obtained from early COVID-19 +patients in China. Since such samples are expected to be contaminated +signficantly with human sequenced reads, the goal is to enrich the data for +SARS-CoV-2 reads by identifying and discarding reads of human origin before +trying to assemble the viral genome sequence. + +> ### {% icon comment %} The usegalaxy.* COVID-19 analysis project +> This tutorial uses the same data as, and recapitulates to a large extent, the +> [Pre-processing](https://covid19.galaxyproject.org/genomics/1-PreProcessing/) +> and [Assembly](https://covid19.galaxyproject.org/genomics/2-Assembly/) steps +> of the [Genomics](https://covid19.galaxyproject.org/genomics/) section of +> [covid19.galaxyproject.org](https://covid19.galaxyproject.org/). +> +{: .comment} + +> ### Agenda +> +> In this tutorial, we will deal with: +> +> 1. TOC +> {:toc} +> +{: .agenda} + +# Get data + +We are going to create an assembly of the SARS-CoV-2 genome based on mixed +short-reads (Illumina) and long-reads (Nanopore) data from a total of six +different samples, all of which are publicly accessible through the NCBI +and EBI short-reads archives (SRAs). + +Since automated data downloads from SRAs can be unreliable at times and could +get broken by changes to the download interface on the NCBI/EBI side, this +tutorial offers two ways to access the sequenced reads input data: + +1. Direct download from the NCBI SRA based on accession numbers and using the + dedicated **Faster Download** tool + + Use this method if it works and is fast enough for you, and if you are + interested in learning to obtain short-reads data directly from NCBI, in + general. + +2. Download of the same data deposited as a copy at [Zenodo](https://zenodo.org/record/3732359) + This method uses Galaxy's generic data import functionality, and should be + very reliable and faster than the download from NCBI. + It also showcases **rule-based** uploads and demonstrates how they can be + used to download several datasets and to arrange them into easy to handle + data structures at the same time. + + > ### {% icon details %} Rule-based uploads + > In this tutorial you will only use the features of Galaxy's rule-based + > uploader that are required to get the input data ready for our analysis, + > and we will not explain those features in much detail. + > + > If, after this first taste, you are interested in a thorough introduction + > we recommend the advanced tutorial + > [Collections: Rule Based Uploader](../../../galaxy-data-manipulation/tutorials/upload-rules/tutorial.html). + {: .details} + + Use this method if the direct download from the NCBI SRA does not work, or + is too slow for your time frame, or if you are interested in advanced use + of Galaxy's data import functionality. + +The corresponding two step-by-step instructions below have been crafted to +produce identically arranged data structures in your history so all subsequent +steps are independent of the data source you choose. + +## Get data from NCBI SRA + +> ### {% icon hands_on %} Hands-on: Data upload to Galaxy from NCBI SRA +> +> 1. Create a new history for this tutorial and give it a proper name +> +> {% include snippets/create_new_history.md %} +> {% include snippets/rename_history.md %} +> +> 2. Create a new dataset listing the SRA accession numbers of the Illumina paired-end input data for this tutorial: +> +> ``` +> SRR10903401 +> SRR10903402 +> SRR10971381 +> ``` +> +> call it, *e.g.*, `Illumina accessions` and set its datatype to `tabular`. +> +> {% include snippets/create_new_file.md format="tabular" %} +> +> 3. Create another new dataset listing the SRA accession numbers of the Nanopore input data for this tutorial: +> +> ``` +> SRR10948550 +> SRR10948474 +> SRR10902284 +> ``` +> +> call it, *e.g.*, `Nanopore accessions` and set its datatype to `tabular`. +> +> 4. Add `#illumina`/`#nanopore` tags to the datasets +> +> > ### {% icon comment %} Name tags in the analysis +> > We are going to treat the Illumina- and the Nanopore-sequenced data +> > separately in this tutorial up to the actual genome assembly step. +> > +> > To make it easier to keep track of the two branches of the analysis, we +> > recommend the use of Galaxy's dataset **name tags**. +> > A name tag will automatically propagate to any new dataset derived +> > from the tagged dataset. +> {: .comment} +> +> You can create a name tag by attaching a tag starting with `#` to any +> dataset. +> +> Name tags are meant to help you identify the origin of datasets quickly. +> Feel free to either use the suggested names above or choose ones you like. +> +> {% include snippets/add_tag.md %} +> +> 4. Retrieve the Illumina reads data from NCBI: +> +> Run **Faster Download and Extract Reads in FASTQ** {% icon tool %} with +> the following parameter settings: +> - *"select input type"*: `List of SRA accession, one per line` +> - {% icon param-file %} *"sra accession list"*: +> the `Illumina accessions` dataset created above +> - in *"Advanced Options"* +> - *"Select how to split the spots"*: `--split-3` +> +> The tool run should generate four new items in your history - three +> collections and one *log* dataset with a summary of what happened. +> +> Since all three datasets that we tried to retrieve contain only +> paired-end reads, only the `Pair-end data` collection is expected to +> contain downloaded data. Click on the other two collections to verify that +> they are empty, then delete them from your history (since the collections +> do not contain any datasets, it does not matter, which delete option - +> "Collection Only", "Delete Datasets" or "Permanently Delete Datasets" you +> are choosing when prompted). +> +> 5. Retrieve the Nanopore reads data from NCBI: +> +> Run **Faster Download and Extract Reads in FASTQ** {% icon tool %} with +> the following parameter settings: +> - *"select input type"*: `List of SRA accession, one per line` +> - {% icon param-file %} *"sra accession list"*: +> the `Nanopore accessions` dataset created above +> - in *"Advanced Options"* +> - *"Select how to split the spots"*: `--split-3` +> +> As in the previous step, the tool run should generate four new items in +> your history. +> +> Since all three datasets that we tried to retrieve in this run contain +> only single-end reads, only the `Single-end data` collection is expected to +> contain downloaded data this time. Click on the other two collections to +> verify that they are empty, then delete them from your history. +> +{: .hands_on} + + +## Get data from Zenodo + +> ### {% icon hands_on %} Hands-on: Data upload to Galaxy from Zenodo +> +> 1. Create a new history for this tutorial and give it a proper name +> +> {% include snippets/create_new_history.md %} +> {% include snippets/rename_history.md %} +> +> 2. Import Illumina-sequenced reads data from [Zenodo](https://zenodo.org/record/3732359) +> +> The Zenodo links for the data are these: +> ``` +> https://zenodo.org/record/3732359/files/SRR10903401_r1.fq.gz +> https://zenodo.org/record/3732359/files/SRR10903401_r2.fq.gz +> https://zenodo.org/record/3732359/files/SRR10903402_r1.fq.gz +> https://zenodo.org/record/3732359/files/SRR10903402_r2.fq.gz +> https://zenodo.org/record/3732359/files/SRR10971381_r1.fq.gz +> https://zenodo.org/record/3732359/files/SRR10971381_r2.fq.gz +> ``` +> +> To upload these data to your Galaxy history in structured form: +> +> - Copy the above list of links +> - Open the Galaxy Upload Manager +> ({% icon galaxy-upload %} on the top right of the tool panel) +> - In the pop-up window, switch to the **Rule-based** tab and select +> - *"Upload data as:"*: `Collection(s)` +> - *"Load tabular data from:"*: `Pasted Table` +> - Paste the copied links into the text field +> - Click **Build** +> - In the next screen, select +> - {% icon param-repeat %} *"Column"*: `Using a Regular expression` +> - *"From Column"*: `A` +> - {% icon param-check %} *"Create columns matching expression groups."* +> - *"Regular Expression"*: `.+/(SRR\d+)_r(\d).fq.gz` +> - *"Number of Groups"*: `2` +> - Click **Apply** +> - {% icon param-repeat %} *"Rules"*: `Add / Modify Column Definitions` +> - {% icon param-repeat %} *"Add Definition"*: `URL` +> - *"URL"*: `A` +> - {% icon param-repeat %} *"Add Definition"*: `List Identifier(s)` +> - *"List Identifier(s)"*: `B` +> - {% icon param-repeat %} *"Add Definition"*: `Paired-end Indicator` +> - *"Paired-end Indicator"*: `C` +> - Click **Apply** +> - *"Type"*: `fastqsanger.gz` +> - *"Name"*: `Illumnia PE data` (or similar) +> - *"Add nametag for name:"* {% icon param-check %} +> +> > ### {% icon comment %} Name tags in the analysis +> > We are going to treat the Illumina- and the Nanopore-sequenced data +> > separately in this tutorial up to the actual genome assembly step. +> > +> > To make it easier to keep track of the two branches of the analysis, we +> > recommend the use of Galaxy's dataset **name tags**. +> > A name tag will automatically propagate to any new dataset derived +> > from the tagged dataset. +> {: .comment} +> +> Checking this option tells Galaxy to reuse the collection name above +> as a name tag on the collection. +> +> - Click **Upload** +> +> 3. Import Nanopore-sequenced reads data from [Zenodo](https://zenodo.org/record/3732359) +> +> ``` +> https://zenodo.org/record/3732359/files/SRR10902284_ONT.fq.gz +> https://zenodo.org/record/3732359/files/SRR10948474_ONT.fq.gz +> https://zenodo.org/record/3732359/files/SRR10948550_ONT.fq.gz +> ``` +> +> Again, we want to upload this data to our history in structured form. +> To do so: +> +> - Copy the above list of links +> - Open the Galaxy Upload Manager +> ({% icon galaxy-upload %} on the top right of the tool panel) +> - In the pop-up window, switch to the **Rule-based** tab and select +> - *"Upload data as:"*: `Collection(s)` +> - *"Load tabular data from:"*: `Pasted Table` +> - Paste the copied links into the text field +> - Click **Build** +> - In the next screen, select +> - {% icon param-repeat %} *"Column"*: `Using a Regular expression` +> - *"From Column"*: `A` +> - {% icon param-check %} *"Create columns matching expression groups."* +> - *"Regular Expression"*: `.+/(SRR\d+)_ONT.fq.gz` +> - *"Number of Groups"*: `1` +> - Click **Apply** +> - {% icon param-repeat %} *"Rules"*: `Add / Modify Column Definitions` +> - {% icon param-repeat %} *"Add Definition"*: `URL` +> - *"URL"*: `A` +> - {% icon param-repeat %} *"Add Definition"*: `List Identifier(s)` +> - *"List Identifier(s)"*: `B` +> - Click **Apply** +> - *"Type"*: `fastqsanger.gz` +> - *"Name"*: `Nanopore data` (or similar) +> - *"Add nametag for name:"* {% icon param-check %} +> - Click **Upload** +> +{: .hands_on} + + +# Read trimming and quality control + +In the end, we do not want to base our mapping on low-quality reads that may +cause misassembly of fragments or introduce sequencing artefacts into the final +assembled sequence. Since quality control, read filtering and read trimming are +all quite fast and computationally cheap operations compared to the read +mapping that we will use to identify and eliminate human reads, it is best to +perform these steps up front. + +Due to their very different nature, however, Illumina- and Nanopore-sequenced +reads should be treated rather differently. + +## Trimming and filtering of Illumina reads + +Galaxy offers a panel of different NGS reads trimming/filtering tools. Here, +we use **fastp** {% icon tool %}, which is straightforward to configure, +and when combined with **MultiQC** {% icon tool %}, enables nice and +easy-to-interpret visualizations of the effects of preprocessing, in particular +for multiple samples. + +In the following, we configure the tool to retain reads only if at most 20% of +their bases have a Phred-scaled quality >= 20 and if there length in bases after +trimming of adapter sequences (which the tool auto-detects for us) is at least +50. + +The JSON-formatted report produced by the tool, can serve as input to +**MultiQC** {% icon tool %} for a direct visual comparison of key quality +metrics for all samples before and after preprocessing. + +> ### {% icon hands_on %} Hands-on: Reads preprocessing and quality reporting +> 1. **fastp** {% icon tool %} with the following parameters +> - *"Single-end or paired reads"*: `Paired Collection` +> - *"Select paired collection(s)"*: the collection of Illumina-sequenced +> reads as produced in the *Get Data* section +> - in *"Filter Options"* +> - in *"Quality filtering options"* +> - *"Disable quality filtering"*: `No` +> - *"Qualified quality phred"*: `20` +> - *"Unqualified percent limit"*: `20` +> - in *"Length filtering options"* +> - *"Disable length filtering"*: `No` +> - *"Length required"*: `50` +> - in *"Output Options"* +> - *"Output HTML report"*: `No` +> - *"Output JSON report"*: `Yes` +> +> The tool run produces two collections - one with the actual preprocessed +> reads of all input samples, another one with a JSON-formatted report of +> the processing for every sample. +> +> 2. **MultiQC** {% icon tool %} with the following parameters +> - {% icon param-repeat %} *"Results"* +> - *"Which tool was used generate logs?"*: `fastp` +> - {% icon param-collection %} *"Output of fastp"*: the collection of +> JSON-formatted reports, second collection produced by **fastp** +> {% icon tool %} +> +> This tool run generates a single output with the combined quality reports +> for all samples before and after processing with **fastp** {% icon tool %}. +> +{: .hands_on} + +## Quality control of Nanopore reads + +Nanopore-sequenced reads differ greatly in length from one another and are, on +average, of relatively low quality (in particular when compared to +Illumina-sequenced reads). These properties make it challenging to preprocess +them with standard tools. Quality assessment tools calibrated to work well with +Illumina-sequenced reads are less useful for Nanopore-sequenced reads, too, for +the same reasons. Here we restrict ourselves to a simple quality check with +**NanoPlot** {% icon tool %}, a dedicated QC tool for Nanopore-sequenced reads. + +> ### {% icon hands_on %} Hands-on: Checking the quality of Nanopore reads with NanoPlot +> 1. **NanoPlot** {% icon tool %} with the following parameters +> - *"Select multifile mode"*: `batch` +> - *"Type of the file(s) to work on"*: `fastq` +> - {% icon param-collection %} *"files"*: the collection of +> Nanopore-sequenced reads as produced in the *Get Data* section +> - in *"Options for filtering or transforming input prior to plotting"* +> - *"Logarithmic scaling of lengths in plots."*: `Yes` +> +> > ### {% icon question %} Questions +> > +> > 1. Looking at the three generated quality reports, which of the three +> > samples seems to be of better quality overall than the other two, +> > and what are some criteria that support this conclusion? +> > +> > > ### {% icon solution %} Solution +> > > 1. Sample `SRR10948474` has the best overall quality. +> > > +> > > It has both higher average read length and quality than the other +> > > two (see the *Summary statistics* table), has a distribution of +> > > read qualities that peaks around intermediate quality scores (not +> > > low ones as for the other samples), and contains some extra-long +> > > (though at least partly rather low-quality) reads. Those last two +> > > points become most obvious when looking at the *Read lengths vs +> > > Average read quality* plots. +> > {: .solution } +> {: .question} +> +{: .hands_on} + +# Subtraction of reads mapping to the human reference genome + +## Mapping of Illumina reads + +In this tutorial, we are using **Bowtie2** for mapping our short-reads data to +the human genome. *BWA-MEM* would be a good alternative for mapping the 150 +nucleotides (see the QC report above) reads from our samples. + +According to its authors, the *Minimap2* aligner, which we will be using for +mapping the Nanopore-sequenced data in the next step, is supposed to outcompete +*Bowtie2* and *BWA-MEM* in terms of speed even for Illumina-sequenced reads +of length > 100 nts, but we opt for the conservative approach of using a +widely-used, well-tested tool here. + +> ### {% icon hands_on %} Hands-on: Mapping with Bowtie2 +> 1. **Bowtie2** {% icon tool %} with the following parameters +> - *"Is this single or paired library"*: `Paired-end Dataset Collection` +> - *"FASTQ Paired Dataset"*: the collection of preprocessed +> Illumina-sequenced reads, output of **fastp** {% icon tool %} +> - *"Write unaligned reads (in fastq format) to separate file(s)"*: `No` +> +> Activating this option may seem attractive since the unaligned reads +> are what we are interested in, but filtering for those reads with +> a dedicated tool in a separate step allows us to filter on the +> properties of the read pairs instead of those of individual reads. +> +> - *"Write aligned reads (in fastq format) to separate file(s)"*: `No` +> - *"Do you want to set paired-end options?"*: `No` +> +> - *"Will you select a reference genome from your history or use a built-in index?"*: + `Use a built-in genome index` +> - *"Select reference genome"*: `Human (Homo sapiens): hg38 Full` +> - *"Set read groups information?"*: `Do not set` +> - *"Select analysis mode"*: `Default setting only` +> - *"Do you want to tweak SAM/BAM Options?"*: `No` +> - *"Save the bowtie2 mapping statistics to the history"*: `Yes` +> +> The tool run should produce two collections of output datasets. One with +> the actual mapped reads of the three samples and one with the corresponding +> mapping statistics for each sample, which we want to have a brief look at +> next. +> +> 2. Inspect the `mapping stats` of each sample by clicking on the corresponding collection, then on the {% icon galaxy-eye %} (eye) icon of each individual sample data +> +> > ### {% icon question %} Questions +> > +> > 1. What percentage of reads of each sample has been aligned to the `hg38` reference genome? +> > 2. Which sample is the least contaminated with human reads? +> > 3. Which sample contains the highest amount of SARS-CoV2 reads? +> > +> > > ### {% icon solution %} Solution +> > > 1. The samples have between 13% and 21% of reads aligned to `hg38`. +> > > The information can be found on the last line of output for each +> > > sample. +> > > 2. Sample `SRR10971381` is the least contaminated with just above 13% +> > > of human reads +> > > 3. You cannot answer this question with this data. While `SRR10971381` +> > > shows the lowest relative contamination with human reads, that +> > > does not mean that all other reads are from SARS-CoV-2. They could +> > > come from other species (*e.g.*, bacteria or other viruses) +> > > contained in this BALF sample. +> > {: .solution } +> {: .question} +> +{: .hands_on} + +## Mapping of Nanopore reads + +For the mapping of the Nanopore-sequenced data we are using the **Minimap2** +aligner, which is particularly efficient for mapping long reads. + +> ### {% icon hands_on %} Hands-on: Nanopore reads mapping +> +> 1. **Map with minimap2** {% icon tool %} with the following parameters +> - *"Will you select a reference genome from your history or use a built-in index?"*: +> `Use a built-in genome index` +> - *"Using reference genome"*: `Human Dec. 2013 (GRCh38/hg38) (hg38)` +> +> - *"Single or Paired-end reads"*: `Single` +> - {% icon param-collection %} *"Select fastq dataset"*: the collection +> of Nanopore-sequenced reads as set up in the *Get Data* section +> +> - *"Select analysis mode (sets default)"*: `Oxford Nanopore read to reference mapping. ...` +> +> This tool run produces one collection with the actual mapped reads for +> each Nanopore-sequenced sample. Unlike **Bowtie2** it does not have an +> option to output mapping statistics directly. However, we can generate +> that information through an extra step. +> +> 2. **Samtools stats** {% icon tool %} with the following parameters +> - {% icon param-collection %} *"BAM file"*: the collection of mapped +> Nanopore-sequenced reads, output of **Map with minimap2 {% icon tool %} (step 1) +> - *"Output"*: `Separate datasets for each statistic` +> - *"Desired output files"* +> - {% icon param-check %} *"Summary numbers"* +> +> These simple summary stats correspond approximately to the +> statistics generated by **Bowtie2** and are enough for our purpose. +> +> > ### {% icon comment %} Mapping stats for Nanopore-sequenced long reads +> > +> > Since, unlike Illumina-generated reads, Nanopore-sequenced reads can +> > have very different lengths, it makes limited sense to calculate a +> > ratio of mapped to overall reads for them. +> > +> > Instead, `bases mapped` / `total length` should give a more reliable +> > estimate of which fraction of the data is due to human genome sequence. +> > +> > Try to calculate this ratio for the three samples on your own! +> {: .comment} +> +{: .hands_on} + +## Human reads subtraction + +At this point you should have two collections of mapped reads - one holding the +mapping results obtained with **Bowtie2** of the three Illumina-sequenced +samples, the other one holding the **minimap2** output for the three +Nanopore-sequenced samples. + +Next, we are going to filter the data from both collections to retain only +those reads that were *not* mapped to the human genome, *i.e* those of +potential viral origin. + +> ### {% icon hands_on %} Hands-on: Mapped reads filtering +> +> 1. **Samtools view** {% icon tool %} to filter the Illumina-sequenced reads mapped with Bowtie2: +> - {% icon param-collection %} *"SAM/BAM/CRAM data set"*: the collection of +> mapped Illumina-sequenced reads, output of **Bowtie2** {% icon tool %} +> - *"What would you like to look at?"*: `A filtered/subsampled selection of reads` +> - in *"Configure filters"* +> - *"Require that these flags are set"*: `Read is unmapped` and +> `Mate is unmapped` +> +> - *"What would you like to have reported?"*: `All reads retained after filtering and subsampling` +> - *"Produce extra dataset with dropped reads?"*: `No` +> - *"Output format"*: `BAM (-b)` +> +> 2. **Samtools view** {% icon tool %} to filter the Nanopore-sequenced reads mapped with minimap2: +> - {% icon param-collection %} *"SAM/BAM/CRAM data set"*: the collection of +> mapped Nanopore-sequenced reads, output of **minimap2** {% icon tool %} +> - *"What would you like to look at?"*: `A filtered/subsampled selection of reads` +> - In *"Configure filters"* +> - *"Require that these flags are set"*: `Read is unmapped` +> +> - *"What would you like to have reported?"*: `All reads retained after filtering and subsampling` +> - *"Produce extra dataset with dropped reads?"*: `No` +> - *"Output format"*: `BAM (-b)` +> +> 3. (Optional) Remove the database `hg38` attribute from the output files +> +> > ### {% icon details %} Why do this? +> > When we ran the **Bowtie2** {% icon tool %} and **minimap2** +> > {% icon tool %} mappers before, these tools set the *database* attribute +> > on their outputs to `hg38` to indicate that the mapped reads in these +> > outputs have been mapped against this version of the human reference +> > genome - an important piece of information for further work with those +> > mapped reads. +> > +> > In step 1 and 2 above, however, we have eliminated all mapped reads so +> > the `database: hg38` info is misleading from this point onward in the +> > analysis. While not directly harmful, it is best practice to remove this +> > metadata now. +> {: .details} +> +> For the outputs of step 1 and step 2 above, reset the database/build +> (dbkey) to `unspecified (?)`. +> +> {% include snippets/change_dbkey.md dbkey="unspecified (?)" %} +> +{: .hands_on} + + +# Format conversion of remaining reads + +## Conversion to fastq format + +Assembly tools, typically, expect their input data to be fastq-formatted, but +what we have after mapping and filtering is data in BAM format. Hence, we need +to convert the retained Illumina- and Nanopore-sequenced reads back into their +original format before proceeding to assembly. + +> ### {% icon hands_on %} Hands-on: BAM to fastq format conversion +> +> 1. **Samtools fastx** {% icon tool %} to convert the filtered Illumina-sequenced reads to fastq format +> - {% icon param-collection %} *"BAM or SAM file to convert"*: the collection of +> filtered Illumina-sequenced reads, output of first **Samtools view** {% icon tool %} run +> - *"Output format"*: `compressed FASTQ` +> - *"outputs"*: `READ1` and `READ2` +> +> 2. **Samtools fastx** {% icon tool %} to convert the filtered Nanopore-sequenced reads to fastq format +> - {% icon param-collection %} *"BAM or SAM file to convert"*: the collection of +> filtered Nanopore-sequenced reads, output of second **Samtools view** {% icon tool %} run +> - *"Output format"*: `compressed FASTQ` +> - *"outputs"*: `unspecific` +> +{: .hands_on} + +## Optional: Rearrange the filtered data into the original nested data structure + +If you compare the outputs of the last step to the input data we started out +with, you will notice that the Illumina-sequenced data is arranged differently +now than initially. It is arranged now into separate collections of forward and +reverse reads, whereas we started with a single nested collection of the data. + +We can easily cast the data back into its original structure with one of +Galaxy's collection manipulation tools, but note that we will not use the +resulting nested collection for this tutorial because the **Unicycler** tool +for assembling the reads would not be able to handle the nested data correctly. + +Thus, the following just serves as an illustration and is entirely optional. + +> ### {% icon hands_on %} Hands-on: Arrange two list collections into a list of pairs +> +> 1. **Zip Collection** {% icon tool %} with the following parameters +> - {% icon param-collection %} *"Input Dataset (Forward)"*: the collection +> of filtered Illumina-sequenced forward reads in fastq format, +> first output of first **Samtools fastx** {% icon tool %} run +> - {% icon param-collection %} *"Input Dataset (Reverse)"*: the collection +> of filtered Illumina-sequenced reverse reads in fastq format, +> second output of first **Samtools fastx** {% icon tool %} run +> +{: .hands_on} + +## Merging of reads with collection operations + +To merge reads from several samples into a combined final assembly, we need to +pass the data to **Unicycler** {% icon tool %} in partially merged form. The +forward and reverse reads of paired-end data should be kept separate, and so +should short and long reads. However, the tool has no option to combine data +from individual samples, so we need to merge the forward, reverse, and the long +reads data, respectively, across samples. Conveniently for us, the outputs of +the earlier **Samtools fastx** {% icon tool %} runs have already returned the +data structured into three corresponding collections for us. + +> ### {% icon hands_on %} Hands-on: Collapsing each collection into a single dataset +> +> 1. **Collapse Collection** {% icon tool %} of Illumina-sequenced *forward* reads +> - {% icon param-collection %} *"Collection of files to collapse into single dataset"*: +> the collection of filtered Illumina-sequenced forward reads in fastq format, +> first output of first **Samtools fastx** {% icon tool %} run +> - *"Keep one header line"*: `No` +> - *"Prepend File name"*: `No` +> +> 2. **Collapse Collection** {% icon tool %} of Illumina-sequenced *reverse* reads +> - {% icon param-collection %} *"Collection of files to collapse into single dataset"*: +> the collection of filtered Illumina-sequenced reverse reads in fastq format, +> second output of first **Samtools fastx** {% icon tool %} run +> - *"Keep one header line"*: `No` +> - *"Prepend File name"*: `No` +> +> 3. **Collapse Collection** {% icon tool %} of Nanopore-sequenced reads +> - {% icon param-collection %} *"Collection of files to collapse into single dataset"*: +> the collection of filtered Nanopore-sequenced reads in fastq format, +> output of second **Samtools fastx** {% icon tool %} run +> - *"Keep one header line"*: `No` +> - *"Prepend File name"*: `No` +> +{: .hands_on} + + +# SARS-CoV-2 genome assembly + +## Optional: Subsampling of reads + +The actual assembly of the sequenced reads represents the real bottleneck in +this tutorial. Assembly of the full set of sequences can easily take 10 hours +and would best be conducted overnight. + +If you do not have that much time, you should downsample the Illumina-sequenced +combined reads now. Which will reduce the time required to finish the +subsequent assembly step to approximately 1-2 hours. + +> ### {% icon comment %} If you are in a hurry +> The downsampling parameters below have been chosen to have minimal impact on +> the assembly results. Further speed-ups are certainly possible, but will +> likely lead to poor assembly outcomes. +{: .comment} + +> ### {% icon hands_on %} Hands-on: Subsampling of paired-end short-reads data +> +> 1. **seqtk_sample** {% icon tool %} with the following parameters +> - {% icon param-files %} *"Input FASTA/Q file"*: The two datasets with the +> combined Illumina-sequenced forward and reverse reads, outputs of the +> first and the second run of **Collapse Collection** +> - *"RNG seed"*: 4 +> - *"Subsample (decimal fraction or number)"*: 0.1 +> +{: .hands_on} + +## Create assembly + +> ### {% icon hands_on %} Hands-on: Assembly of SARS-CoV2 genome +> +> 1. **Create assemblies with Unicycler** {% icon tool %} with the following parameters +> - *"Paired or Single end data?"*: `Paired` +> - {% icon param-file %} *"Select first set of reads"*: the combined +> Illumina-sequenced forward reads from all samples, output of the +> first **Collapse Collection** {% icon tool %} run (or first output of +> **seqtk_sample** {% icon tool %} for a subsample-based assembly) +> - {% icon param-file %} *"Select second set of reads"*: the combined +> Illumina-sequenced reverse reads from all samples, output of the +> second **Collapse Collection** {% icon tool %} run (or second output +> of **seqtk_sample** {% icon tool %} for a subsample-based assembly) +> +> - {% icon param-file %} *"Select long reads. If there are no long reads, leave this empty"*: +> Nanpore-sequenced reads from all samples, output of the third +> **Collapse Collection** {% icon tool %} run +> - *"Select Bridging mode"*: `Normal (moderate contig size and misassembly rate)` +> - *"Exclude contigs from the FASTA file which are shorter than this length (bp)"*: +> `100` +> - *"The expected number of linear (i.e. non-circular) sequences in the assembly"*: +> `1` +> +{: .hands_on} + +## Explore assembly + +The **Unicycler** {% icon tool %} run above should produce two output datasets: + +- a final assembly in FASTA format +- an assembly graph + +Of these, the assembly graph is more information-rich because it not only +contains the sequences of *all* assembled fragments (including the ones shorter +than the threshold length defined for inclusion of the fragments into the FASTA +output), but also indicates the relative average coverage of the fragments by +sequenced reads and how some of the fragments could potentially be bridged +after resolving ambiguities manually. + +### Assembly inspection with Bandage + +On the downside, the assembly graph format takes some getting used to before +you can make sense out of the information it provides. + +This issue can be alleviated through the use of **Bandage**, a package for +exploring assembly graphs through summary reports and visualizations of their +contents. + +> ### {% icon hands_on %} Hands-on: Assembly stats and visualization with Bandage +> +> 1. **Bandage Info** {% icon tool %} with the following parameters +> - {% icon param-file %} *"Graphical Fragment Assembly"*: the assembly graph dataset produced by +> **Unicycler** +> - *"Output the information in a single tab-delimited line starting with the graph file"*: +> `No` +> +> 2. **Bandage Image** {% icon tool %} with the following parameters +> - {% icon param-file %} *"Graphical Fragment Assembly"*: the assembly graph dataset produced by +> **Unicycler** +> - *"Node name labels?"*: `Yes` +> - *"Node length labels?"*: `Yes` +> +{: .hands_on} + +Let us inspect the summary report produced by **Bandage Info** {% icon tool %} +first: + +You may be rather disappointed by the large *percentage of of dead ends* in the +assembly graph (in general, lower is better here), and by the correspondingly +large *node count*. After all, should the viral sequence not be encoded on a +single small contig (a quick check at +[Wikipedia](https://en.wikipedia.org/wiki/Coronavirus#Genome) reveals that +coronaviruses have genomes in the size range of 30kb)? + +On the other hand, there is the *Longest node* of 29768 bp of assembled +sequence, which is suspiciously close to the expected genome size, but a much +larger *Estimated sequence length*. + +Next, take a look at the assembly graph visualization generated by **Bandage +Image** {% icon tool %} to see if that tells us more: + +Indeed, this output shows that **Unicycler** {% icon tool %} managed to +assemble a good number of contigs of moderate size, then had trouble with a +number of really small fragments that it could only assemble with lots of +ambiguities (leading to that ugly clutter of nodes in the top row of the +image). Those small fragments will probably be hard to make sense of, but the +manageable list of moderate-size contigs (nodes 1-23, 25, 26) is encouraging. + +Of these, node 1 is the longest node mentioned in the report with a size close +to our expectations. + +Node 2 looks peculiar since **Unicycler** claims it is circular, while +Coronavirus genomes are known to be linear. + +### Check origin of assembled sequences with BLAST + +While we could view the actual contents of the assembly graph output of +**Unicycler** {% icon tool %} and extract node sequences of interest from it +(the longest node and that circular one could be a start), things are much +easier if we work with the FASTA output of **Unicycler** instead. + +From the visualization with **Bandage Image** {% icon tool %} we know that the +separately assembled nodes are all longer than 1000 bp. We can extract those +sequences based on the length threshold in Galaxy, then BLAST all retained +sequences in one go. + +> ### {% icon hands_on %} Hands-on: Filter FASTA sequences by their length +> +> 1. **Filter sequences by length** {% icon tool %} with the following parameters +> - {% icon param-file %} *"Fasta file"*: the FASTA output produced by +> **Unicycler** +> - *"Minimal length"*: `1000` +> +> This outputs a new FASTA datasets with only the sequences satisfying our +> length threshold. +> +> > ### {% icon tip %} Apply length filters after instead of during assembly +> > You may have noted that in the **Unicycler** {% icon tool %} run we kept +> > the tool's *"Exclude contigs from the FASTA file which are shorter than +> > this length (bp)"* option at its default value of `100` instead of using +> > the 1,000 bp threshold there directly to save a step in the analysis. +> > +> > The reason we did this is that normally you will not know the exact length +> > threshold you want until *after* having explored the generated assembly. +> > +> > Length-filtering some FASTA sequences is a trivial process that takes very +> > little time, but you would not want to rerun an hours-long assembly job +> > just because you accidentally stripped some interesting assembled sequences +> > from the output. +> {: .tip} +> +{: .hands_on} + +> ### {% icon hands_on %} Hands-on: NCBI BLAST of multiple contigs +> +> 1. View the output of **Filter sequences by length** {% icon tool %} by +> clicking the {% icon galaxy-eye %} (eye) icon attached to that dataset. +> 2. Click into the middle panel, which should now display the content of the +> dataset, select all sequences by pressing <kbd>Ctrl</kbd>+<kbd>A</kbd>, +> then copy the selection to the clipboard with <kbd>Ctrl</kbd>+<kbd>C</kbd> +> 3. Head over to the +> [NCBI BLAST](https://blast.ncbi.nlm.nih.gov/Blast.cgi?PAGE=MegaBlast&PROGRAM=blastn) +> service, paste the copied content into the `Enter Query Sequence` text +> box and click `BLAST` at the bottom of the form. +> 4. Wait for the *BLAST* run to finish. +> 5. On the results page, look for the drop-down menu next to `Results for`. +> It lets you toggle the BLAST hits list further down to include only the +> matches to individual sequences from your multi-sequence query. +> +{: .hands_on} + +Now take a bit of time to explore the BLAST hits uncovered for some of your +assembled nodes. Pay attention, specifically, to the node with the longest +sequence (node #1) and the circular node #2, but also investigate the results +for a few others. + +> ### {% icon question %} Question +> +> 1. Which genome is represented by node #1? +> 2. Which genome corresponds to node #2? Does this finding remind you of +> something you have learnt before? +> 3. What do most other node sequences have in common? Do these additinal +> findings make sense? +> +> > ### {% icon solution %} Solution +> > 1. The sequence of node #1 is the assembled SARS-CoV-2 sequence we are +> > looking for. It is a perfect match to various SARS-CoV-2 genome +> > sequences found in Genbank over the entire assembled length, and we have +> > been able to assemble almost the entire genome even from the subsampled +> > sequencing data. +> > 2. The circular sequence of node #2 corresponds to the 5,386 bp genome of +> > bacteriophage phiX174. As explained in the more general +> > [Unicycler assembly](../unicycler-assembly/tutorial.html) tutorial, +> > this genome is often used as a spike-in in Illumina sequencing. +> > Finding the complete sequence here is, thus, another indication that +> > our analysis worked and produced meaningful results. +> > 3. Almost all other assembled sequences appear to represent parts of +> > bacterial genomes. The only exceptions are the node #10 sequence, for +> > which no significant BLAST hits could be found, and the node #11 +> > sequence, which represents a small stretch of left-over human genomic +> > DNA, which seems to have survived our subtraction approach. +> > +> > What all the bacterial genomes have in common is that they represent +> > genera of bacteria that are known to colonize the oral cavity and +> > mucosa. Since all samples in this analysis are BALF samples the presence +> > of DNA from such bacteria should not be surprising. In addition, some +> > members of the identified genera are known as opportunistic pathogens. +> > In particular, members of the genus *Prevotella* can infect the +> > respiratory tract and contribute to inflammation under anaerobic +> > conditions caused by primary infections. Hence, an alternative +> > explanation for the presence of some of these sequences in the samples +> > might be that the corresponding bacteria contributed to the clinical +> > picture of some of the Covid-19 patients they were obtained from. +> {: .solution} +> +{: .question} + +# Conclusion +{:.no_toc} + +The power of modern genome assembly tools is remarkable, and so is their +robustness in the face of data of metagenomic nature. Assembling reads derived +from a virus and a good handful of copurified bacteria back into separate +contigs is a challenging task, which Unicycler solved without major issues! + +Nevertheless, good quality assemblies still rely on proper preprocessing and +filtering to reduce the number of misassembly events, ambiguous assemblies and +of incorporation of sequencing errors into the final assembly. + diff --git a/topics/assembly/tutorials/assembly-with-preprocessing/workflows/assembly_with_preprocessing.ga b/topics/assembly/tutorials/assembly-with-preprocessing/workflows/assembly_with_preprocessing.ga new file mode 100644 index 00000000000000..e2de007d945975 --- /dev/null +++ b/topics/assembly/tutorials/assembly-with-preprocessing/workflows/assembly_with_preprocessing.ga @@ -0,0 +1,1088 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "Assembly with preprocessing", + "format-version": "0.1", + "name": "assembly_with_preprocessing", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [], + "label": "Collection of paired short-reads data", + "name": "Input dataset collection", + "outputs": [], + "position": { + "left": 268.13330078125, + "top": 341.41668701171875 + }, + "tool_id": null, + "tool_state": "{\"collection_type\": \"list:paired\"}", + "tool_version": null, + "type": "data_collection_input", + "uuid": "3e7dab04-77db-4780-b1dd-c724b80a8b7b", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "daba9931-3837-42b5-a93f-e2e51f5f667a" + } + ] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [], + "label": "Collection of long-reads data", + "name": "Input dataset collection", + "outputs": [], + "position": { + "left": 267.13330078125, + "top": 756.4166717529297 + }, + "tool_id": null, + "tool_state": "{\"collection_type\": \"lis\"}", + "tool_version": null, + "type": "data_collection_input", + "uuid": "bd1f5561-95a1-4fb5-af1e-f3d4cbb40639", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "7146e49b-ab4b-44a8-ac54-e98539fecb97" + } + ] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_fastx/samtools_fastx/1.9+galaxy1", + "errors": null, + "id": 10, + "input_connections": { + "input": { + "id": 7, + "output_name": "outputsam" + } + }, + "inputs": [], + "label": null, + "name": "Samtools fastx", + "outputs": [ + { + "name": "nonspecific", + "type": "fasta" + } + ], + "position": { + "left": 1333.63330078125, + "top": 852.4166717529297 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_fastx/samtools_fastx/1.9+galaxy1", + "tool_shed_repository": { + "changeset_revision": "a8d69aee190e", + "name": "samtools_fastx", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"copy_arb_tags\": \"\\\"\\\"\", \"__page__\": null, \"output_fmt_cond\": \"{\\\"__current_case__\\\": 2, \\\"default_quality\\\": \\\"\\\", \\\"ilumina_casava\\\": \\\"false\\\", \\\"output_fmt_select\\\": \\\"fastqsanger.gz\\\", \\\"output_quality\\\": \\\"false\\\"}\", \"idxout_cond\": \"{\\\"__current_case__\\\": 0, \\\"idxout_select\\\": \\\"no\\\"}\", \"read_numbering\": \"\\\"\\\"\", \"exclusive_filter\": \"null\", \"exclusive_filter_all\": \"null\", \"inclusive_filter\": \"null\", \"outputs\": \"[\\\"r0\\\"]\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"copy_tags\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.9+galaxy1", + "type": "tool", + "uuid": "31e2b4e8-7631-46c0-8382-b805cee2b739", + "workflow_outputs": [ + { + "label": null, + "output_name": "nonspecific", + "uuid": "cfbf839f-53f0-4a82-8966-2bdb6919de5e" + } + ] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_fastx/samtools_fastx/1.9+galaxy1", + "errors": null, + "id": 11, + "input_connections": { + "input": { + "id": 9, + "output_name": "outputsam" + } + }, + "inputs": [], + "label": null, + "name": "Samtools fastx", + "outputs": [ + { + "name": "forward", + "type": "fasta" + }, + { + "name": "reverse", + "type": "fasta" + } + ], + "position": { + "left": 1533.63330078125, + "top": 638.4166717529297 + }, + "post_job_actions": { + "HideDatasetActionforward": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "forward" + }, + "HideDatasetActionreverse": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "reverse" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_fastx/samtools_fastx/1.9+galaxy1", + "tool_shed_repository": { + "changeset_revision": "a8d69aee190e", + "name": "samtools_fastx", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"copy_arb_tags\": \"\\\"\\\"\", \"__page__\": null, \"output_fmt_cond\": \"{\\\"__current_case__\\\": 2, \\\"default_quality\\\": \\\"\\\", \\\"ilumina_casava\\\": \\\"false\\\", \\\"output_fmt_select\\\": \\\"fastqsanger.gz\\\", \\\"output_quality\\\": \\\"false\\\"}\", \"idxout_cond\": \"{\\\"__current_case__\\\": 0, \\\"idxout_select\\\": \\\"no\\\"}\", \"read_numbering\": \"\\\"\\\"\", \"exclusive_filter\": \"null\", \"exclusive_filter_all\": \"null\", \"inclusive_filter\": \"null\", \"outputs\": \"[\\\"r1\\\", \\\"r2\\\"]\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"copy_tags\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.9+galaxy1", + "type": "tool", + "uuid": "a9623672-277b-4b9f-aa00-fd88cf5e55a1", + "workflow_outputs": [] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "errors": null, + "id": 12, + "input_connections": { + "input_list": { + "id": 10, + "output_name": "nonspecific" + } + }, + "inputs": [], + "label": null, + "name": "Collapse Collection", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 1715.63330078125, + "top": 1015.4166870117188 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "tool_shed_repository": { + "changeset_revision": "830961c48e42", + "name": "collapse_collections", + "owner": "nml", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_list\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"one_header\": \"\\\"false\\\"\", \"filename\": \"{\\\"__current_case__\\\": 1, \\\"add_name\\\": \\\"false\\\"}\"}", + "tool_version": "4.2", + "type": "tool", + "uuid": "423fc320-f6b5-45fe-aabd-4046ff3cf54d", + "workflow_outputs": [] + }, + "13": { + "annotation": "", + "content_id": "__ZIP_COLLECTION__", + "errors": null, + "id": 13, + "input_connections": { + "input_forward": { + "id": 11, + "output_name": "forward" + }, + "input_reverse": { + "id": 11, + "output_name": "reverse" + } + }, + "inputs": [], + "label": null, + "name": "Zip Collection", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 1754.63330078125, + "top": 477.41668701171875 + }, + "post_job_actions": {}, + "tool_id": "__ZIP_COLLECTION__", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_reverse\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"input_forward\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "9ba89e81-9c53-4f5b-9d61-42319b7d574c", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "ebc8f563-c45e-4e17-a541-b1275e7f61ad" + } + ] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "errors": null, + "id": 14, + "input_connections": { + "input_list": { + "id": 11, + "output_name": "forward" + } + }, + "inputs": [], + "label": null, + "name": "Collapse Collection", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 1837.6333312988281, + "top": 710.4166717529297 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "tool_shed_repository": { + "changeset_revision": "830961c48e42", + "name": "collapse_collections", + "owner": "nml", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_list\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"one_header\": \"\\\"false\\\"\", \"filename\": \"{\\\"__current_case__\\\": 1, \\\"add_name\\\": \\\"false\\\"}\"}", + "tool_version": "4.2", + "type": "tool", + "uuid": "6b7925f4-4706-4983-8840-0323858b6978", + "workflow_outputs": [] + }, + "15": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "errors": null, + "id": 15, + "input_connections": { + "input_list": { + "id": 11, + "output_name": "reverse" + } + }, + "inputs": [], + "label": null, + "name": "Collapse Collection", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 1808.6333312988281, + "top": 860.4166717529297 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "tool_shed_repository": { + "changeset_revision": "830961c48e42", + "name": "collapse_collections", + "owner": "nml", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_list\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"one_header\": \"\\\"false\\\"\", \"filename\": \"{\\\"__current_case__\\\": 1, \\\"add_name\\\": \\\"false\\\"}\"}", + "tool_version": "4.2", + "type": "tool", + "uuid": "f53e47f8-969b-4948-b608-7fed0e95680d", + "workflow_outputs": [] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_sample/1.3.2", + "errors": null, + "id": 16, + "input_connections": { + "in_file": { + "id": 14, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool seqtk_sample", + "name": "in_file" + } + ], + "label": null, + "name": "seqtk_sample", + "outputs": [ + { + "name": "default", + "type": "input" + } + ], + "position": { + "left": 2129.4166717529297, + "top": 711.4166717529297 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_sample/1.3.2", + "tool_shed_repository": { + "changeset_revision": "58c8ece95b53", + "name": "seqtk", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"s\": \"\\\"4\\\"\", \"in_file\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"subsample_size\": \"\\\"0.1\\\"\", \"advanced\": \"{\\\"single_pass_mode\\\": \\\"false\\\"}\"}", + "tool_version": "1.3.2", + "type": "tool", + "uuid": "4f7c9133-a664-46dc-9583-c9980d5d1011", + "workflow_outputs": [ + { + "label": null, + "output_name": "default", + "uuid": "be52344e-6874-431c-8d86-9d0e9371aed9" + } + ] + }, + "17": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_sample/1.3.2", + "errors": null, + "id": 17, + "input_connections": { + "in_file": { + "id": 15, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool seqtk_sample", + "name": "in_file" + } + ], + "label": null, + "name": "seqtk_sample", + "outputs": [ + { + "name": "default", + "type": "input" + } + ], + "position": { + "left": 2116.4166717529297, + "top": 859.4166717529297 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_sample/1.3.2", + "tool_shed_repository": { + "changeset_revision": "58c8ece95b53", + "name": "seqtk", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"s\": \"\\\"4\\\"\", \"in_file\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"subsample_size\": \"\\\"0.1\\\"\", \"advanced\": \"{\\\"single_pass_mode\\\": \\\"false\\\"}\"}", + "tool_version": "1.3.2", + "type": "tool", + "uuid": "79064891-aa79-42e3-b848-7a6240022acc", + "workflow_outputs": [ + { + "label": null, + "output_name": "default", + "uuid": "3e196eb1-8ba1-4be5-90d0-c5b8d3df4ff0" + } + ] + }, + "18": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/unicycler/unicycler/0.4.8.0", + "errors": null, + "id": 18, + "input_connections": { + "long": { + "id": 12, + "output_name": "output" + }, + "paired_unpaired|fastq_input1": { + "id": 16, + "output_name": "default" + }, + "paired_unpaired|fastq_input2": { + "id": 17, + "output_name": "default" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "lr_align" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "long" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "paired_unpaired" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "paired_unpaired" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "rotation" + } + ], + "label": null, + "name": "Create assemblies with Unicycler", + "outputs": [ + { + "name": "assembly_graph", + "type": "tabular" + }, + { + "name": "assembly", + "type": "fasta" + } + ], + "position": { + "left": 2365.633331298828, + "top": 706.4166717529297 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/unicycler/unicycler/0.4.8.0", + "tool_shed_repository": { + "changeset_revision": "88c240872a65", + "name": "unicycler", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"linear_seqs\": \"\\\"1\\\"\", \"spades\": \"{\\\"depth_filter\\\": \\\"0.25\\\", \\\"kmer_count\\\": \\\"10\\\", \\\"kmers\\\": \\\"\\\", \\\"largest_component\\\": \\\"false\\\", \\\"max_kmer_frac\\\": \\\"0.95\\\", \\\"min_kmer_frac\\\": \\\"0.2\\\", \\\"no_correct\\\": \\\"false\\\"}\", \"graph_clean\": \"{\\\"min_component_size\\\": \\\"1000\\\", \\\"min_dead_end_size\\\": \\\"1000\\\"}\", \"__page__\": null, \"min_anchor_seg_len\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"lr_align\": \"{\\\"contamination\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"low_score\\\": \\\"\\\", \\\"scores\\\": \\\"3,-6,-5,-2\\\"}\", \"long\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"paired_unpaired\": \"{\\\"__current_case__\\\": 0, \\\"fastq_input1\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"fastq_input2\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"fastq_input_selector\\\": \\\"paired\\\"}\", \"min_fasta_length\": \"\\\"100\\\"\", \"mode\": \"\\\"normal\\\"\", \"rotation\": \"{\\\"no_rotate\\\": \\\"false\\\", \\\"start_gene_cov\\\": \\\"95.0\\\", \\\"start_gene_id\\\": \\\"90.0\\\", \\\"start_genes\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}\", \"pilon\": \"{\\\"min_polish_size\\\": \\\"1000\\\", \\\"no_pilon\\\": \\\"false\\\"}\"}", + "tool_version": "0.4.8.0", + "type": "tool", + "uuid": "851c6be6-c202-450a-9cd3-19e205dcc496", + "workflow_outputs": [ + { + "label": null, + "output_name": "assembly", + "uuid": "702dd61e-6072-49d9-a502-44e0a23f5a98" + }, + { + "label": null, + "output_name": "assembly_graph", + "uuid": "3285cc00-6b39-4f3d-87a5-87abd483ede6" + } + ] + }, + "19": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bandage/bandage_info/0.8.1+galaxy1", + "errors": null, + "id": 19, + "input_connections": { + "input_file": { + "id": 18, + "output_name": "assembly_graph" + } + }, + "inputs": [], + "label": null, + "name": "Bandage Info", + "outputs": [ + { + "name": "outfile", + "type": "txt" + } + ], + "position": { + "left": 2665.633331298828, + "top": 811.4166717529297 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bandage/bandage_info/0.8.1+galaxy1", + "tool_shed_repository": { + "changeset_revision": "b2860df42e16", + "name": "bandage", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"tsv\": \"\\\"false\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "0.8.1+galaxy1", + "type": "tool", + "uuid": "4aa230bd-3269-41c3-81f5-9085fcc4001d", + "workflow_outputs": [ + { + "label": null, + "output_name": "outfile", + "uuid": "cf5eab6a-97ae-430e-a27a-6ecc33d4b8c0" + } + ] + }, + "2": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fastp/fastp/0.19.5+galaxy1", + "errors": null, + "id": 2, + "input_connections": { + "single_paired|paired_input": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": "fastp: Trimmed Illumina Reads", + "name": "fastp", + "outputs": [ + { + "name": "output_paired_coll", + "type": "input" + }, + { + "name": "report_html", + "type": "html" + }, + { + "name": "report_json", + "type": "json" + } + ], + "position": { + "left": 585, + "top": 365.04998779296875 + }, + "post_job_actions": { + "HideDatasetActionreport_html": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "report_html" + }, + "HideDatasetActionreport_json": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "report_json" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fastp/fastp/0.19.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "1d8fe9bc4cb0", + "name": "fastp", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"output_options\": \"{\\\"report_html\\\": \\\"true\\\", \\\"report_json\\\": \\\"true\\\"}\", \"single_paired\": \"{\\\"__current_case__\\\": 2, \\\"adapter_trimming_options\\\": {\\\"adapter_sequence1\\\": \\\"\\\", \\\"adapter_sequence2\\\": \\\"\\\", \\\"disable_adapter_trimming\\\": \\\"false\\\"}, \\\"global_trimming_options\\\": {\\\"trim_front1\\\": \\\"\\\", \\\"trim_front2\\\": \\\"\\\", \\\"trim_tail1\\\": \\\"\\\", \\\"trim_tail2\\\": \\\"\\\"}, \\\"paired_input\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"single_paired_selector\\\": \\\"paired_collection\\\"}\", \"read_mod_options\": \"{\\\"base_correction_options\\\": {\\\"correction\\\": \\\"false\\\"}, \\\"cutting_by_quality_options\\\": {\\\"cut_by_quality3\\\": \\\"false\\\", \\\"cut_by_quality5\\\": \\\"false\\\", \\\"cut_mean_quality\\\": \\\"\\\", \\\"cut_window_size\\\": \\\"\\\"}, \\\"polyg_tail_trimming\\\": {\\\"__current_case__\\\": 1, \\\"poly_g_min_len\\\": \\\"\\\", \\\"trimming_select\\\": \\\"\\\"}, \\\"polyx_tail_trimming\\\": {\\\"__current_case__\\\": 1, \\\"polyx_trimming_select\\\": \\\"\\\"}, \\\"umi_processing\\\": {\\\"umi\\\": \\\"false\\\", \\\"umi_len\\\": \\\"\\\", \\\"umi_loc\\\": \\\"\\\", \\\"umi_prefix\\\": \\\"\\\"}}\", \"overrepresented_sequence_analysis\": \"{\\\"overrepresentation_analysis\\\": \\\"false\\\", \\\"overrepresentation_sampling\\\": \\\"\\\"}\", \"filter_options\": \"{\\\"length_filtering_options\\\": {\\\"disable_length_filtering\\\": \\\"false\\\", \\\"length_required\\\": \\\"50\\\"}, \\\"low_complexity_filter\\\": {\\\"complexity_threshold\\\": \\\"\\\", \\\"enable_low_complexity_filter\\\": \\\"false\\\"}, \\\"quality_filtering_options\\\": {\\\"disable_quality_filtering\\\": \\\"false\\\", \\\"n_base_limit\\\": \\\"\\\", \\\"qualified_quality_phred\\\": \\\"20\\\", \\\"unqualified_percent_limit\\\": \\\"20\\\"}}\", \"__rerun_remap_job_id__\": null}", + "tool_version": "0.19.5+galaxy1", + "type": "tool", + "uuid": "7508c22b-dc6a-4071-8dd0-d5616718e62b", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_paired_coll", + "uuid": "a7be7eab-3e80-4be6-b1a4-ab303c314096" + } + ] + }, + "20": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fasta_filter_by_length/fasta_filter_by_length/1.2", + "errors": null, + "id": 20, + "input_connections": { + "input": { + "id": 18, + "output_name": "assembly" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Filter sequences by length", + "name": "input" + } + ], + "label": null, + "name": "Filter sequences by length", + "outputs": [ + { + "name": "output", + "type": "fasta" + } + ], + "position": { + "left": 2574.4166870117188, + "top": 1254.4166870117188 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fasta_filter_by_length/fasta_filter_by_length/1.2", + "tool_shed_repository": { + "changeset_revision": "8cacfcf96a52", + "name": "fasta_filter_by_length", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"input\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"__rerun_remap_job_id__\": null, \"max_length\": \"\\\"0\\\"\", \"min_length\": \"\\\"1000\\\"\"}", + "tool_version": "1.2", + "type": "tool", + "uuid": "3cbd67e0-3e55-4726-8dbe-0c61aec4d293", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "e4143f49-239f-4266-ba8d-e6299a331403" + } + ] + }, + "21": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bandage/bandage_image/0.8.1+galaxy2", + "errors": null, + "id": 21, + "input_connections": { + "input_file": { + "id": 18, + "output_name": "assembly_graph" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Bandage Image", + "name": "input_file" + } + ], + "label": null, + "name": "Bandage Image", + "outputs": [ + { + "name": "outfile", + "type": "jpg" + } + ], + "position": { + "left": 2667.4166870117188, + "top": 1052.4166870117188 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bandage/bandage_image/0.8.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "b2860df42e16", + "name": "bandage", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"input_file\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"lengths\": \"\\\"true\\\"\", \"output_format\": \"\\\"jpg\\\"\", \"height\": \"\\\"1000\\\"\", \"width\": \"\\\"\\\"\", \"names\": \"\\\"true\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "0.8.1+galaxy2", + "type": "tool", + "uuid": "ef2c6a46-8421-499e-a840-8dd03483c5c9", + "workflow_outputs": [ + { + "label": null, + "output_name": "outfile", + "uuid": "5e535f98-b740-44ec-aba1-9d9090acb89a" + } + ] + }, + "3": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/nanoplot/nanoplot/1.25.0+galaxy1", + "errors": null, + "id": 3, + "input_connections": { + "mode|reads|files": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "NanoPlot", + "outputs": [ + { + "name": "output_html", + "type": "html" + }, + { + "name": "nanostats", + "type": "txt" + }, + { + "name": "nanostats_post_filtering", + "type": "txt" + }, + { + "name": "read_length", + "type": "png" + }, + { + "name": "log_read_length", + "type": "png" + } + ], + "position": { + "left": 630, + "top": 650.4666595458984 + }, + "post_job_actions": { + "HideDatasetActionlog_read_length": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "log_read_length" + }, + "HideDatasetActionnanostats": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "nanostats" + }, + "HideDatasetActionnanostats_post_filtering": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "nanostats_post_filtering" + }, + "HideDatasetActionread_length": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "read_length" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/nanoplot/nanoplot/1.25.0+galaxy1", + "tool_shed_repository": { + "changeset_revision": "645159bcee2d", + "name": "nanoplot", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"filter\": \"{\\\"alength\\\": \\\"false\\\", \\\"barcoded\\\": \\\"false\\\", \\\"downsample\\\": \\\"\\\", \\\"drop_outliers\\\": \\\"false\\\", \\\"loglength\\\": \\\"true\\\", \\\"maxlength\\\": \\\"\\\", \\\"minlength\\\": \\\"\\\", \\\"minqual\\\": \\\"\\\", \\\"percentqual\\\": \\\"false\\\", \\\"readtype\\\": null}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"mode\": \"{\\\"__current_case__\\\": 0, \\\"choice\\\": \\\"batch\\\", \\\"reads\\\": {\\\"__current_case__\\\": 0, \\\"files\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"type\\\": \\\"fastq\\\"}}\", \"customization\": \"{\\\"N50\\\": \\\"false\\\", \\\"color\\\": null, \\\"format\\\": \\\"png\\\", \\\"noN50\\\": \\\"false\\\", \\\"plots\\\": null}\"}", + "tool_version": "1.25.0+galaxy1", + "type": "tool", + "uuid": "9b1d43ac-82e3-463f-9c88-08c8826a62c9", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_html", + "uuid": "cd8570c7-02db-479b-81a9-cd0d26643f71" + } + ] + }, + "4": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/minimap2/minimap2/2.17+galaxy1", + "errors": null, + "id": 4, + "input_connections": { + "fastq_input|fastq_input1": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Map with minimap2", + "outputs": [ + { + "name": "alignment_output", + "type": "bam" + } + ], + "position": { + "left": 709.199951171875, + "top": 1131.9666748046875 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/minimap2/minimap2/2.17+galaxy1", + "tool_shed_repository": { + "changeset_revision": "53c0b7a1a0c3", + "name": "minimap2", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"alignment_options\": \"{\\\"-O2\\\": \\\"\\\", \\\"A\\\": \\\"\\\", \\\"B\\\": \\\"\\\", \\\"E\\\": \\\"\\\", \\\"E2\\\": \\\"\\\", \\\"O\\\": \\\"\\\", \\\"s\\\": \\\"\\\", \\\"u\\\": null, \\\"z\\\": \\\"\\\"}\", \"analysis_type_selector\": \"\\\"splice\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"io_options\": \"{\\\"K\\\": \\\"\\\", \\\"L\\\": \\\"false\\\", \\\"Q\\\": \\\"false\\\", \\\"Y\\\": \\\"false\\\", \\\"c\\\": \\\"false\\\", \\\"cs\\\": null, \\\"eqx\\\": \\\"false\\\", \\\"output_format\\\": \\\"BAM\\\"}\", \"mapping_options\": \"{\\\"F\\\": \\\"\\\", \\\"G\\\": \\\"\\\", \\\"N\\\": \\\"\\\", \\\"X\\\": \\\"false\\\", \\\"f\\\": \\\"\\\", \\\"g\\\": \\\"\\\", \\\"m\\\": \\\"\\\", \\\"min_occ_floor\\\": \\\"\\\", \\\"n\\\": \\\"\\\", \\\"p\\\": \\\"\\\", \\\"r\\\": \\\"\\\"}\", \"fastq_input\": \"{\\\"__current_case__\\\": 1, \\\"fastq_input1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"fastq_input_selector\\\": \\\"single\\\"}\", \"reference_source\": \"{\\\"__current_case__\\\": 0, \\\"ref_file\\\": \\\"hg38\\\", \\\"reference_source_selector\\\": \\\"cached\\\"}\", \"indexing_options\": \"{\\\"H\\\": \\\"false\\\", \\\"I\\\": \\\"\\\", \\\"k\\\": \\\"\\\", \\\"w\\\": \\\"\\\"}\"}", + "tool_version": "2.17+galaxy1", + "type": "tool", + "uuid": "098d2283-1218-489b-9882-8822e79d9444", + "workflow_outputs": [ + { + "label": null, + "output_name": "alignment_output", + "uuid": "9972015d-4bdc-440f-b8b6-84e92a64ef8f" + } + ] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.7", + "errors": null, + "id": 5, + "input_connections": { + "results_0|software_cond|input": { + "id": 2, + "output_name": "report_json" + } + }, + "inputs": [], + "label": null, + "name": "MultiQC", + "outputs": [ + { + "name": "stats", + "type": "input" + }, + { + "name": "html_report", + "type": "html" + } + ], + "position": { + "left": 938.699951171875, + "top": 250 + }, + "post_job_actions": { + "HideDatasetActionstats": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "stats" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.7", + "tool_shed_repository": { + "changeset_revision": "b2f1f75d49c4", + "name": "multiqc", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"comment\": \"\\\"\\\"\", \"__page__\": null, \"title\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"results\": \"[{\\\"__index__\\\": 0, \\\"software_cond\\\": {\\\"__current_case__\\\": 7, \\\"input\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"software\\\": \\\"fastp\\\"}}]\", \"saveLog\": \"\\\"false\\\"\"}", + "tool_version": "1.7", + "type": "tool", + "uuid": "73566697-4a46-4d35-b8e2-61770acc62c0", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_report", + "uuid": "15f42a94-2c97-4932-8e3f-f26a72b58be4" + } + ] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.3.4.3+galaxy0", + "errors": null, + "id": 6, + "input_connections": { + "library|input_1": { + "id": 2, + "output_name": "output_paired_coll" + } + }, + "inputs": [], + "label": null, + "name": "Bowtie2", + "outputs": [ + { + "name": "output", + "type": "bam" + }, + { + "name": "mapping_stats", + "type": "txt" + } + ], + "position": { + "left": 913.9166259765625, + "top": 564.6333312988281 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.3.4.3+galaxy0", + "tool_shed_repository": { + "changeset_revision": "749c918495f7", + "name": "bowtie2", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"sam_options\": \"{\\\"__current_case__\\\": 1, \\\"sam_options_selector\\\": \\\"no\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"library\": \"{\\\"__current_case__\\\": 2, \\\"aligned_file\\\": \\\"false\\\", \\\"input_1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"paired_options\\\": {\\\"__current_case__\\\": 1, \\\"paired_options_selector\\\": \\\"no\\\"}, \\\"type\\\": \\\"paired_collection\\\", \\\"unaligned_file\\\": \\\"false\\\"}\", \"reference_genome\": \"{\\\"__current_case__\\\": 0, \\\"index\\\": \\\"hg38full\\\", \\\"source\\\": \\\"indexed\\\"}\", \"rg\": \"{\\\"__current_case__\\\": 3, \\\"rg_selector\\\": \\\"do_not_set\\\"}\", \"save_mapping_stats\": \"\\\"true\\\"\", \"analysis_type\": \"{\\\"__current_case__\\\": 0, \\\"analysis_type_selector\\\": \\\"simple\\\", \\\"presets\\\": \\\"no_presets\\\"}\"}", + "tool_version": "2.3.4.3+galaxy0", + "type": "tool", + "uuid": "43331d2c-7116-410e-a6bd-7e7520d93a52", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "eeae40f6-f1b2-4c56-9860-ac7b8eb1dec0" + }, + { + "label": null, + "output_name": "mapping_stats", + "uuid": "c567226e-efaf-4188-bdec-3ba20d0733b0" + } + ] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_view/samtools_view/1.9+galaxy1", + "errors": null, + "id": 7, + "input_connections": { + "input": { + "id": 4, + "output_name": "alignment_output" + } + }, + "inputs": [], + "label": null, + "name": "Samtools view", + "outputs": [ + { + "name": "outputsam", + "type": "input" + } + ], + "position": { + "left": 954.63330078125, + "top": 961.4166717529297 + }, + "post_job_actions": { + "HideDatasetActionoutputsam": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outputsam" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_view/samtools_view/1.9+galaxy1", + "tool_shed_repository": { + "changeset_revision": "b01db2684fa5", + "name": "samtools_view", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"addref_cond\": \"{\\\"__current_case__\\\": 0, \\\"addref_select\\\": \\\"no\\\"}\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"mode\": \"{\\\"__current_case__\\\": 1, \\\"filter_config\\\": {\\\"cigarcons\\\": \\\"\\\", \\\"cond_region\\\": {\\\"__current_case__\\\": 0, \\\"select_region\\\": \\\"no\\\"}, \\\"cond_rg\\\": {\\\"__current_case__\\\": 0, \\\"select_rg\\\": \\\"no\\\"}, \\\"exclusive_filter\\\": null, \\\"exclusive_filter_all\\\": null, \\\"inclusive_filter\\\": [\\\"4\\\"], \\\"library\\\": \\\"\\\", \\\"quality\\\": \\\"\\\"}, \\\"output_options\\\": {\\\"__current_case__\\\": 0, \\\"adv_output\\\": {\\\"collapsecigar\\\": \\\"false\\\", \\\"readtags\\\": []}, \\\"complementary_output\\\": \\\"false\\\", \\\"output_format\\\": {\\\"__current_case__\\\": 1, \\\"fmtopt\\\": \\\"-b\\\", \\\"oformat\\\": \\\"bam\\\"}, \\\"reads_report_type\\\": \\\"retained\\\"}, \\\"outtype\\\": \\\"selected_reads\\\", \\\"subsample_config\\\": {\\\"subsampling_mode\\\": {\\\"__current_case__\\\": 0, \\\"factor\\\": \\\"1.0\\\", \\\"seed\\\": \\\"\\\", \\\"select_subsample\\\": \\\"fraction\\\"}}}\", \"__page__\": null}", + "tool_version": "1.9+galaxy1", + "type": "tool", + "uuid": "22379db6-5fca-40fb-9ce9-d59a1336c679", + "workflow_outputs": [] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/samtools_stats/samtools_stats/2.0.2+galaxy2", + "errors": null, + "id": 8, + "input_connections": { + "input": { + "id": 4, + "output_name": "alignment_output" + } + }, + "inputs": [], + "label": null, + "name": "Samtools stats", + "outputs": [ + { + "name": "output_collection", + "type": "input" + } + ], + "position": { + "left": 1022.4166259765625, + "top": 1254.4166870117188 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/samtools_stats/samtools_stats/2.0.2+galaxy2", + "tool_shed_repository": { + "changeset_revision": "145f6d74ff5e", + "name": "samtools_stats", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"coverage_cond\": \"{\\\"__current_case__\\\": 0, \\\"coverage_select\\\": \\\"no\\\"}\", \"gc_depth\": \"\\\"\\\"\", \"cov_threshold\": \"\\\"\\\"\", \"most_inserts\": \"\\\"\\\"\", \"cond_region\": \"{\\\"__current_case__\\\": 0, \\\"select_region\\\": \\\"no\\\"}\", \"split_output_cond\": \"{\\\"__current_case__\\\": 1, \\\"generate_tables\\\": [\\\"SN\\\"], \\\"split_output_selector\\\": \\\"yes\\\"}\", \"read_length\": \"\\\"\\\"\", \"trim_quality\": \"\\\"\\\"\", \"remove_overlaps\": \"\\\"false\\\"\", \"filter_by_flags\": \"{\\\"__current_case__\\\": 1, \\\"filter_flags\\\": \\\"nofilter\\\"}\", \"sparse\": \"\\\"false\\\"\", \"addref_cond\": \"{\\\"__current_case__\\\": 0, \\\"addref_select\\\": \\\"no\\\"}\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"insert_size\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"remove_dups\": \"\\\"false\\\"\"}", + "tool_version": "2.0.2+galaxy2", + "type": "tool", + "uuid": "15f6252f-79d4-4319-855d-09665deac6a3", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_collection", + "uuid": "faed6306-eed6-40bd-ac9f-9fb3a4e980ea" + } + ] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_view/samtools_view/1.9+galaxy1", + "errors": null, + "id": 9, + "input_connections": { + "input": { + "id": 6, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Samtools view", + "outputs": [ + { + "name": "outputsam", + "type": "input" + } + ], + "position": { + "left": 1221.63330078125, + "top": 531.4166717529297 + }, + "post_job_actions": { + "HideDatasetActionoutputsam": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outputsam" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_view/samtools_view/1.9+galaxy1", + "tool_shed_repository": { + "changeset_revision": "b01db2684fa5", + "name": "samtools_view", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"addref_cond\": \"{\\\"__current_case__\\\": 0, \\\"addref_select\\\": \\\"no\\\"}\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"mode\": \"{\\\"__current_case__\\\": 1, \\\"filter_config\\\": {\\\"cigarcons\\\": \\\"\\\", \\\"cond_region\\\": {\\\"__current_case__\\\": 0, \\\"select_region\\\": \\\"no\\\"}, \\\"cond_rg\\\": {\\\"__current_case__\\\": 0, \\\"select_rg\\\": \\\"no\\\"}, \\\"exclusive_filter\\\": null, \\\"exclusive_filter_all\\\": null, \\\"inclusive_filter\\\": [\\\"4\\\", \\\"8\\\"], \\\"library\\\": \\\"\\\", \\\"quality\\\": \\\"\\\"}, \\\"output_options\\\": {\\\"__current_case__\\\": 0, \\\"adv_output\\\": {\\\"collapsecigar\\\": \\\"false\\\", \\\"readtags\\\": []}, \\\"complementary_output\\\": \\\"false\\\", \\\"output_format\\\": {\\\"__current_case__\\\": 1, \\\"fmtopt\\\": \\\"-b\\\", \\\"oformat\\\": \\\"bam\\\"}, \\\"reads_report_type\\\": \\\"retained\\\"}, \\\"outtype\\\": \\\"selected_reads\\\", \\\"subsample_config\\\": {\\\"subsampling_mode\\\": {\\\"__current_case__\\\": 0, \\\"factor\\\": \\\"1.0\\\", \\\"seed\\\": \\\"\\\", \\\"select_subsample\\\": \\\"fraction\\\"}}}\", \"__page__\": null}", + "tool_version": "1.9+galaxy1", + "type": "tool", + "uuid": "cca12f9c-c2c5-4238-b396-fc8f1fdd9ad7", + "workflow_outputs": [] + } + }, + "tags": [ + "GTN", + "assembly" + ], + "uuid": "4041a0cb-dfb6-439e-9ca9-e36bf9a0cc88", + "version": 5 +} diff --git a/topics/assembly/tutorials/assembly-with-preprocessing/workflows/assembly_with_preprocessing_and_sra_download.ga b/topics/assembly/tutorials/assembly-with-preprocessing/workflows/assembly_with_preprocessing_and_sra_download.ga new file mode 100644 index 00000000000000..856d711c005231 --- /dev/null +++ b/topics/assembly/tutorials/assembly-with-preprocessing/workflows/assembly_with_preprocessing_and_sra_download.ga @@ -0,0 +1,1228 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "Assembly with preprocessing and SRA download", + "format-version": "0.1", + "name": "assembly_with_preprocessing_and_sra_download", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [], + "label": "List of Illumina accessions", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 257.683349609375, + "top": 215.9166259765625 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "1a61a3b3-4515-47a1-8ee5-fb79f05a8dfa", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "ea340c2d-d9e8-4ea5-bbc0-7ee7d92a57bf" + } + ] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [], + "label": "List of ONT accessions", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 264.9833984375, + "top": 522.7166442871094 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "0988bf07-dc80-4d7b-a62f-8e5e852b0982", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "fb053f14-71fc-45ac-83ea-a308a5c22918" + } + ] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/samtools_stats/samtools_stats/2.0.2+galaxy2", + "errors": null, + "id": 10, + "input_connections": { + "input": { + "id": 6, + "output_name": "alignment_output" + } + }, + "inputs": [], + "label": null, + "name": "Samtools stats", + "outputs": [ + { + "name": "output_collection", + "type": "input" + } + ], + "position": { + "left": 1328.4166259765625, + "top": 1239.4166259765625 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/samtools_stats/samtools_stats/2.0.2+galaxy2", + "tool_shed_repository": { + "changeset_revision": "145f6d74ff5e", + "name": "samtools_stats", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"coverage_cond\": \"{\\\"__current_case__\\\": 0, \\\"coverage_select\\\": \\\"no\\\"}\", \"gc_depth\": \"\\\"\\\"\", \"cov_threshold\": \"\\\"\\\"\", \"most_inserts\": \"\\\"\\\"\", \"cond_region\": \"{\\\"__current_case__\\\": 0, \\\"select_region\\\": \\\"no\\\"}\", \"split_output_cond\": \"{\\\"__current_case__\\\": 1, \\\"generate_tables\\\": [\\\"SN\\\"], \\\"split_output_selector\\\": \\\"yes\\\"}\", \"read_length\": \"\\\"\\\"\", \"trim_quality\": \"\\\"\\\"\", \"remove_overlaps\": \"\\\"false\\\"\", \"filter_by_flags\": \"{\\\"__current_case__\\\": 1, \\\"filter_flags\\\": \\\"nofilter\\\"}\", \"sparse\": \"\\\"false\\\"\", \"addref_cond\": \"{\\\"__current_case__\\\": 0, \\\"addref_select\\\": \\\"no\\\"}\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"insert_size\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"remove_dups\": \"\\\"false\\\"\"}", + "tool_version": "2.0.2+galaxy2", + "type": "tool", + "uuid": "ae176340-d7da-4c2e-851b-e6129a0c222d", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_collection", + "uuid": "8652ea8a-35f5-4531-8b89-88bca189ab9f" + } + ] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_view/samtools_view/1.9+galaxy1", + "errors": null, + "id": 11, + "input_connections": { + "input": { + "id": 8, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Samtools view", + "outputs": [ + { + "name": "outputsam", + "type": "input" + } + ], + "position": { + "left": 1516.4166259765625, + "top": 531.4166412353516 + }, + "post_job_actions": { + "HideDatasetActionoutputsam": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outputsam" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_view/samtools_view/1.9+galaxy1", + "tool_shed_repository": { + "changeset_revision": "b01db2684fa5", + "name": "samtools_view", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"addref_cond\": \"{\\\"__current_case__\\\": 0, \\\"addref_select\\\": \\\"no\\\"}\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"mode\": \"{\\\"__current_case__\\\": 1, \\\"filter_config\\\": {\\\"cigarcons\\\": \\\"\\\", \\\"cond_region\\\": {\\\"__current_case__\\\": 0, \\\"select_region\\\": \\\"no\\\"}, \\\"cond_rg\\\": {\\\"__current_case__\\\": 0, \\\"select_rg\\\": \\\"no\\\"}, \\\"exclusive_filter\\\": null, \\\"exclusive_filter_all\\\": null, \\\"inclusive_filter\\\": [\\\"4\\\", \\\"8\\\"], \\\"library\\\": \\\"\\\", \\\"quality\\\": \\\"\\\"}, \\\"output_options\\\": {\\\"__current_case__\\\": 0, \\\"adv_output\\\": {\\\"collapsecigar\\\": \\\"false\\\", \\\"readtags\\\": []}, \\\"complementary_output\\\": \\\"false\\\", \\\"output_format\\\": {\\\"__current_case__\\\": 1, \\\"fmtopt\\\": \\\"-b\\\", \\\"oformat\\\": \\\"bam\\\"}, \\\"reads_report_type\\\": \\\"retained\\\"}, \\\"outtype\\\": \\\"selected_reads\\\", \\\"subsample_config\\\": {\\\"subsampling_mode\\\": {\\\"__current_case__\\\": 0, \\\"factor\\\": \\\"1.0\\\", \\\"seed\\\": \\\"\\\", \\\"select_subsample\\\": \\\"fraction\\\"}}}\", \"__page__\": null}", + "tool_version": "1.9+galaxy1", + "type": "tool", + "uuid": "cca12f9c-c2c5-4238-b396-fc8f1fdd9ad7", + "workflow_outputs": [] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_fastx/samtools_fastx/1.9+galaxy1", + "errors": null, + "id": 12, + "input_connections": { + "input": { + "id": 9, + "output_name": "outputsam" + } + }, + "inputs": [], + "label": null, + "name": "Samtools fastx", + "outputs": [ + { + "name": "nonspecific", + "type": "fasta" + } + ], + "position": { + "left": 1628.4166259765625, + "top": 852.4166412353516 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_fastx/samtools_fastx/1.9+galaxy1", + "tool_shed_repository": { + "changeset_revision": "a8d69aee190e", + "name": "samtools_fastx", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"copy_arb_tags\": \"\\\"\\\"\", \"__page__\": null, \"output_fmt_cond\": \"{\\\"__current_case__\\\": 2, \\\"default_quality\\\": \\\"\\\", \\\"ilumina_casava\\\": \\\"false\\\", \\\"output_fmt_select\\\": \\\"fastqsanger.gz\\\", \\\"output_quality\\\": \\\"false\\\"}\", \"idxout_cond\": \"{\\\"__current_case__\\\": 0, \\\"idxout_select\\\": \\\"no\\\"}\", \"read_numbering\": \"\\\"\\\"\", \"exclusive_filter\": \"null\", \"exclusive_filter_all\": \"null\", \"inclusive_filter\": \"null\", \"outputs\": \"[\\\"r0\\\"]\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"copy_tags\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.9+galaxy1", + "type": "tool", + "uuid": "31e2b4e8-7631-46c0-8382-b805cee2b739", + "workflow_outputs": [ + { + "label": null, + "output_name": "nonspecific", + "uuid": "cfbf839f-53f0-4a82-8966-2bdb6919de5e" + } + ] + }, + "13": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_fastx/samtools_fastx/1.9+galaxy1", + "errors": null, + "id": 13, + "input_connections": { + "input": { + "id": 11, + "output_name": "outputsam" + } + }, + "inputs": [], + "label": null, + "name": "Samtools fastx", + "outputs": [ + { + "name": "forward", + "type": "fasta" + }, + { + "name": "reverse", + "type": "fasta" + } + ], + "position": { + "left": 1828.4166870117188, + "top": 638.4166412353516 + }, + "post_job_actions": { + "HideDatasetActionforward": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "forward" + }, + "HideDatasetActionreverse": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "reverse" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_fastx/samtools_fastx/1.9+galaxy1", + "tool_shed_repository": { + "changeset_revision": "a8d69aee190e", + "name": "samtools_fastx", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"copy_arb_tags\": \"\\\"\\\"\", \"__page__\": null, \"output_fmt_cond\": \"{\\\"__current_case__\\\": 2, \\\"default_quality\\\": \\\"\\\", \\\"ilumina_casava\\\": \\\"false\\\", \\\"output_fmt_select\\\": \\\"fastqsanger.gz\\\", \\\"output_quality\\\": \\\"false\\\"}\", \"idxout_cond\": \"{\\\"__current_case__\\\": 0, \\\"idxout_select\\\": \\\"no\\\"}\", \"read_numbering\": \"\\\"\\\"\", \"exclusive_filter\": \"null\", \"exclusive_filter_all\": \"null\", \"inclusive_filter\": \"null\", \"outputs\": \"[\\\"r1\\\", \\\"r2\\\"]\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"copy_tags\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.9+galaxy1", + "type": "tool", + "uuid": "a9623672-277b-4b9f-aa00-fd88cf5e55a1", + "workflow_outputs": [] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "errors": null, + "id": 14, + "input_connections": { + "input_list": { + "id": 12, + "output_name": "nonspecific" + } + }, + "inputs": [], + "label": null, + "name": "Collapse Collection", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 2010.4166870117188, + "top": 1015.4166412353516 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "tool_shed_repository": { + "changeset_revision": "830961c48e42", + "name": "collapse_collections", + "owner": "nml", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_list\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"one_header\": \"\\\"false\\\"\", \"filename\": \"{\\\"__current_case__\\\": 1, \\\"add_name\\\": \\\"false\\\"}\"}", + "tool_version": "4.2", + "type": "tool", + "uuid": "423fc320-f6b5-45fe-aabd-4046ff3cf54d", + "workflow_outputs": [] + }, + "15": { + "annotation": "", + "content_id": "__ZIP_COLLECTION__", + "errors": null, + "id": 15, + "input_connections": { + "input_forward": { + "id": 13, + "output_name": "forward" + }, + "input_reverse": { + "id": 13, + "output_name": "reverse" + } + }, + "inputs": [], + "label": null, + "name": "Zip Collection", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 2049.4166870117188, + "top": 477.4166259765625 + }, + "post_job_actions": {}, + "tool_id": "__ZIP_COLLECTION__", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_reverse\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"input_forward\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "9ba89e81-9c53-4f5b-9d61-42319b7d574c", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "ebc8f563-c45e-4e17-a541-b1275e7f61ad" + } + ] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "errors": null, + "id": 16, + "input_connections": { + "input_list": { + "id": 13, + "output_name": "forward" + } + }, + "inputs": [], + "label": null, + "name": "Collapse Collection", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 2132.4166870117188, + "top": 710.4166412353516 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "tool_shed_repository": { + "changeset_revision": "830961c48e42", + "name": "collapse_collections", + "owner": "nml", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_list\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"one_header\": \"\\\"false\\\"\", \"filename\": \"{\\\"__current_case__\\\": 1, \\\"add_name\\\": \\\"false\\\"}\"}", + "tool_version": "4.2", + "type": "tool", + "uuid": "6b7925f4-4706-4983-8840-0323858b6978", + "workflow_outputs": [] + }, + "17": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "errors": null, + "id": 17, + "input_connections": { + "input_list": { + "id": 13, + "output_name": "reverse" + } + }, + "inputs": [], + "label": null, + "name": "Collapse Collection", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 2103.4166870117188, + "top": 860.4166412353516 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "tool_shed_repository": { + "changeset_revision": "830961c48e42", + "name": "collapse_collections", + "owner": "nml", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_list\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"one_header\": \"\\\"false\\\"\", \"filename\": \"{\\\"__current_case__\\\": 1, \\\"add_name\\\": \\\"false\\\"}\"}", + "tool_version": "4.2", + "type": "tool", + "uuid": "f53e47f8-969b-4948-b608-7fed0e95680d", + "workflow_outputs": [] + }, + "18": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_sample/1.3.2", + "errors": null, + "id": 18, + "input_connections": { + "in_file": { + "id": 16, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool seqtk_sample", + "name": "in_file" + } + ], + "label": null, + "name": "seqtk_sample", + "outputs": [ + { + "name": "default", + "type": "input" + } + ], + "position": { + "left": 2438.0833282470703, + "top": 688.6833190917969 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_sample/1.3.2", + "tool_shed_repository": { + "changeset_revision": "58c8ece95b53", + "name": "seqtk", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"s\": \"\\\"4\\\"\", \"in_file\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"subsample_size\": \"\\\"0.1\\\"\", \"advanced\": \"{\\\"single_pass_mode\\\": \\\"false\\\"}\"}", + "tool_version": "1.3.2", + "type": "tool", + "uuid": "b4e40092-e076-4eb0-af30-c8c47885fefa", + "workflow_outputs": [ + { + "label": null, + "output_name": "default", + "uuid": "cf3eb8ef-fce5-42af-a14d-60ff915fbff3" + } + ] + }, + "19": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_sample/1.3.2", + "errors": null, + "id": 19, + "input_connections": { + "in_file": { + "id": 17, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool seqtk_sample", + "name": "in_file" + } + ], + "label": null, + "name": "seqtk_sample", + "outputs": [ + { + "name": "default", + "type": "input" + } + ], + "position": { + "left": 2413.0833129882812, + "top": 864.6833190917969 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/seqtk/seqtk_sample/1.3.2", + "tool_shed_repository": { + "changeset_revision": "58c8ece95b53", + "name": "seqtk", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"s\": \"\\\"4\\\"\", \"in_file\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"subsample_size\": \"\\\"0.1\\\"\", \"advanced\": \"{\\\"single_pass_mode\\\": \\\"false\\\"}\"}", + "tool_version": "1.3.2", + "type": "tool", + "uuid": "1ef9ca9e-e447-4933-8871-c0e8e9a953c4", + "workflow_outputs": [ + { + "label": null, + "output_name": "default", + "uuid": "bf722cb7-0b06-42ed-8fbc-9dc3896e9340" + } + ] + }, + "2": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/sra_tools/fasterq_dump/2.10.4+galaxy1", + "errors": null, + "id": 2, + "input_connections": { + "input|file_list": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": "Illumina data", + "name": "Faster Download and Extract Reads in FASTQ", + "outputs": [ + { + "name": "list_paired", + "type": "input" + }, + { + "name": "output_collection", + "type": "input" + }, + { + "name": "output_collection_other", + "type": "input" + }, + { + "name": "log", + "type": "txt" + } + ], + "position": { + "left": 511.783447265625, + "top": 273.1666259765625 + }, + "post_job_actions": { + "HideDatasetActionlog": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "log" + }, + "HideDatasetActionoutput_collection": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_collection" + }, + "HideDatasetActionoutput_collection_other": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_collection_other" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/sra_tools/fasterq_dump/2.10.4+galaxy1", + "tool_shed_repository": { + "changeset_revision": "aad3885b3216", + "name": "sra_tools", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"minlen\\\": \\\"\\\", \\\"skip_technical\\\": \\\"true\\\", \\\"split\\\": \\\"--split-3\\\"}\", \"input\": \"{\\\"__current_case__\\\": 2, \\\"file_list\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"input_select\\\": \\\"file_list\\\"}\", \"__rerun_remap_job_id__\": null, \"__page__\": null}", + "tool_version": "2.10.4+galaxy1", + "type": "tool", + "uuid": "b097b5cb-44a8-4881-9ba0-a089ef1b4ad6", + "workflow_outputs": [ + { + "label": null, + "output_name": "list_paired", + "uuid": "c6b4e7f2-5cf4-4051-afd1-a110381c4679" + } + ] + }, + "20": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/unicycler/unicycler/0.4.8.0", + "errors": null, + "id": 20, + "input_connections": { + "long": { + "id": 14, + "output_name": "output" + }, + "paired_unpaired|fastq_input1": { + "id": 18, + "output_name": "default" + }, + "paired_unpaired|fastq_input2": { + "id": 19, + "output_name": "default" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "lr_align" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "long" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "paired_unpaired" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "paired_unpaired" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "rotation" + } + ], + "label": null, + "name": "Create assemblies with Unicycler", + "outputs": [ + { + "name": "assembly_graph", + "type": "tabular" + }, + { + "name": "assembly", + "type": "fasta" + } + ], + "position": { + "left": 2673.4166717529297, + "top": 699.4166412353516 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/unicycler/unicycler/0.4.8.0", + "tool_shed_repository": { + "changeset_revision": "88c240872a65", + "name": "unicycler", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"linear_seqs\": \"\\\"1\\\"\", \"spades\": \"{\\\"depth_filter\\\": \\\"0.25\\\", \\\"kmer_count\\\": \\\"10\\\", \\\"kmers\\\": \\\"\\\", \\\"largest_component\\\": \\\"false\\\", \\\"max_kmer_frac\\\": \\\"0.95\\\", \\\"min_kmer_frac\\\": \\\"0.2\\\", \\\"no_correct\\\": \\\"false\\\"}\", \"graph_clean\": \"{\\\"min_component_size\\\": \\\"1000\\\", \\\"min_dead_end_size\\\": \\\"1000\\\"}\", \"__page__\": null, \"min_anchor_seg_len\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"lr_align\": \"{\\\"contamination\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"low_score\\\": \\\"\\\", \\\"scores\\\": \\\"3,-6,-5,-2\\\"}\", \"long\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"paired_unpaired\": \"{\\\"__current_case__\\\": 0, \\\"fastq_input1\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"fastq_input2\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"fastq_input_selector\\\": \\\"paired\\\"}\", \"min_fasta_length\": \"\\\"100\\\"\", \"mode\": \"\\\"normal\\\"\", \"rotation\": \"{\\\"no_rotate\\\": \\\"false\\\", \\\"start_gene_cov\\\": \\\"95.0\\\", \\\"start_gene_id\\\": \\\"90.0\\\", \\\"start_genes\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}\", \"pilon\": \"{\\\"min_polish_size\\\": \\\"1000\\\", \\\"no_pilon\\\": \\\"false\\\"}\"}", + "tool_version": "0.4.8.0", + "type": "tool", + "uuid": "851c6be6-c202-450a-9cd3-19e205dcc496", + "workflow_outputs": [ + { + "label": null, + "output_name": "assembly", + "uuid": "17700863-7cc5-4a67-ac0f-aa5f7b258d62" + }, + { + "label": null, + "output_name": "assembly_graph", + "uuid": "3285cc00-6b39-4f3d-87a5-87abd483ede6" + } + ] + }, + "21": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bandage/bandage_info/0.8.1+galaxy1", + "errors": null, + "id": 21, + "input_connections": { + "input_file": { + "id": 20, + "output_name": "assembly_graph" + } + }, + "inputs": [], + "label": null, + "name": "Bandage Info", + "outputs": [ + { + "name": "outfile", + "type": "txt" + } + ], + "position": { + "left": 2977.4166870117188, + "top": 803.4166412353516 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bandage/bandage_info/0.8.1+galaxy1", + "tool_shed_repository": { + "changeset_revision": "b2860df42e16", + "name": "bandage", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"tsv\": \"\\\"false\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"input_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "0.8.1+galaxy1", + "type": "tool", + "uuid": "4aa230bd-3269-41c3-81f5-9085fcc4001d", + "workflow_outputs": [ + { + "label": null, + "output_name": "outfile", + "uuid": "cf5eab6a-97ae-430e-a27a-6ecc33d4b8c0" + } + ] + }, + "22": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bandage/bandage_image/0.8.1+galaxy2", + "errors": null, + "id": 22, + "input_connections": { + "input_file": { + "id": 20, + "output_name": "assembly_graph" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Bandage Image", + "name": "input_file" + } + ], + "label": null, + "name": "Bandage Image", + "outputs": [ + { + "name": "outfile", + "type": "jpg" + } + ], + "position": { + "left": 2975.4166870117188, + "top": 1017.4166412353516 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bandage/bandage_image/0.8.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "b2860df42e16", + "name": "bandage", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"input_file\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"lengths\": \"\\\"true\\\"\", \"output_format\": \"\\\"jpg\\\"\", \"height\": \"\\\"1000\\\"\", \"width\": \"\\\"\\\"\", \"names\": \"\\\"true\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "0.8.1+galaxy2", + "type": "tool", + "uuid": "7683e21a-0fe1-4871-b044-7e74321fe44b", + "workflow_outputs": [ + { + "label": null, + "output_name": "outfile", + "uuid": "12e0cc76-0374-4ce8-b882-f5f21a942ad1" + } + ] + }, + "23": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fasta_filter_by_length/fasta_filter_by_length/1.2", + "errors": null, + "id": 23, + "input_connections": { + "input": { + "id": 20, + "output_name": "assembly" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Filter sequences by length", + "name": "input" + } + ], + "label": null, + "name": "Filter sequences by length", + "outputs": [ + { + "name": "output", + "type": "fasta" + } + ], + "position": { + "left": 2978.4166870117188, + "top": 1220.4166259765625 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fasta_filter_by_length/fasta_filter_by_length/1.2", + "tool_shed_repository": { + "changeset_revision": "8cacfcf96a52", + "name": "fasta_filter_by_length", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"input\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"__rerun_remap_job_id__\": null, \"max_length\": \"\\\"0\\\"\", \"min_length\": \"\\\"1000\\\"\"}", + "tool_version": "1.2", + "type": "tool", + "uuid": "ef08963b-e96b-4841-b1fd-02056f6ab1f2", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "637c866b-dc17-4c32-aa1e-5207ae2c79a0" + } + ] + }, + "3": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/sra_tools/fasterq_dump/2.10.4+galaxy1", + "errors": null, + "id": 3, + "input_connections": { + "input|file_list": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": "ONT data", + "name": "Faster Download and Extract Reads in FASTQ", + "outputs": [ + { + "name": "list_paired", + "type": "input" + }, + { + "name": "output_collection", + "type": "input" + }, + { + "name": "output_collection_other", + "type": "input" + }, + { + "name": "log", + "type": "txt" + } + ], + "position": { + "left": 516.13330078125, + "top": 540.7166442871094 + }, + "post_job_actions": { + "HideDatasetActionlist_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "list_paired" + }, + "HideDatasetActionlog": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "log" + }, + "HideDatasetActionoutput_collection_other": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_collection_other" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/sra_tools/fasterq_dump/2.10.4+galaxy1", + "tool_shed_repository": { + "changeset_revision": "aad3885b3216", + "name": "sra_tools", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"minlen\\\": \\\"\\\", \\\"skip_technical\\\": \\\"true\\\", \\\"split\\\": \\\"--split-3\\\"}\", \"input\": \"{\\\"__current_case__\\\": 2, \\\"file_list\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"input_select\\\": \\\"file_list\\\"}\", \"__rerun_remap_job_id__\": null, \"__page__\": null}", + "tool_version": "2.10.4+galaxy1", + "type": "tool", + "uuid": "2ea0a236-4ecc-43b4-a815-40f37bf1bd59", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_collection", + "uuid": "9cd44dd5-4375-4c34-9edc-804544192c34" + } + ] + }, + "4": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/fastp/fastp/0.19.5+galaxy1", + "errors": null, + "id": 4, + "input_connections": { + "single_paired|paired_input": { + "id": 2, + "output_name": "list_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool fastp", + "name": "single_paired" + } + ], + "label": "fastp: Trimmed Illumina Reads", + "name": "fastp", + "outputs": [ + { + "name": "output_paired_coll", + "type": "input" + }, + { + "name": "report_json", + "type": "json" + } + ], + "position": { + "left": 879.7833251953125, + "top": 365.04998779296875 + }, + "post_job_actions": { + "HideDatasetActionreport_json": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "report_json" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/fastp/fastp/0.19.5+galaxy1", + "tool_shed_repository": { + "changeset_revision": "1d8fe9bc4cb0", + "name": "fastp", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"output_options\": \"{\\\"report_html\\\": \\\"false\\\", \\\"report_json\\\": \\\"true\\\"}\", \"single_paired\": \"{\\\"__current_case__\\\": 2, \\\"adapter_trimming_options\\\": {\\\"adapter_sequence1\\\": \\\"\\\", \\\"adapter_sequence2\\\": \\\"\\\", \\\"disable_adapter_trimming\\\": \\\"false\\\"}, \\\"global_trimming_options\\\": {\\\"trim_front1\\\": \\\"\\\", \\\"trim_front2\\\": \\\"\\\", \\\"trim_tail1\\\": \\\"\\\", \\\"trim_tail2\\\": \\\"\\\"}, \\\"paired_input\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"single_paired_selector\\\": \\\"paired_collection\\\"}\", \"read_mod_options\": \"{\\\"base_correction_options\\\": {\\\"correction\\\": \\\"false\\\"}, \\\"cutting_by_quality_options\\\": {\\\"cut_by_quality3\\\": \\\"false\\\", \\\"cut_by_quality5\\\": \\\"false\\\", \\\"cut_mean_quality\\\": \\\"\\\", \\\"cut_window_size\\\": \\\"\\\"}, \\\"polyg_tail_trimming\\\": {\\\"__current_case__\\\": 1, \\\"poly_g_min_len\\\": \\\"\\\", \\\"trimming_select\\\": \\\"\\\"}, \\\"polyx_tail_trimming\\\": {\\\"__current_case__\\\": 1, \\\"polyx_trimming_select\\\": \\\"\\\"}, \\\"umi_processing\\\": {\\\"umi\\\": \\\"false\\\", \\\"umi_len\\\": \\\"\\\", \\\"umi_loc\\\": \\\"\\\", \\\"umi_prefix\\\": \\\"\\\"}}\", \"overrepresented_sequence_analysis\": \"{\\\"overrepresentation_analysis\\\": \\\"false\\\", \\\"overrepresentation_sampling\\\": \\\"\\\"}\", \"filter_options\": \"{\\\"length_filtering_options\\\": {\\\"disable_length_filtering\\\": \\\"false\\\", \\\"length_required\\\": \\\"50\\\"}, \\\"low_complexity_filter\\\": {\\\"complexity_threshold\\\": \\\"\\\", \\\"enable_low_complexity_filter\\\": \\\"false\\\"}, \\\"quality_filtering_options\\\": {\\\"disable_quality_filtering\\\": \\\"false\\\", \\\"n_base_limit\\\": \\\"\\\", \\\"qualified_quality_phred\\\": \\\"20\\\", \\\"unqualified_percent_limit\\\": \\\"20\\\"}}\", \"__rerun_remap_job_id__\": null}", + "tool_version": "0.19.5+galaxy1", + "type": "tool", + "uuid": "7508c22b-dc6a-4071-8dd0-d5616718e62b", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_paired_coll", + "uuid": "a7be7eab-3e80-4be6-b1a4-ab303c314096" + } + ] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/nanoplot/nanoplot/1.25.0+galaxy1", + "errors": null, + "id": 5, + "input_connections": { + "mode|reads|files": { + "id": 3, + "output_name": "output_collection" + } + }, + "inputs": [], + "label": null, + "name": "NanoPlot", + "outputs": [ + { + "name": "output_html", + "type": "html" + }, + { + "name": "nanostats", + "type": "txt" + }, + { + "name": "nanostats_post_filtering", + "type": "txt" + }, + { + "name": "read_length", + "type": "png" + }, + { + "name": "log_read_length", + "type": "png" + } + ], + "position": { + "left": 924.7833251953125, + "top": 650.4666442871094 + }, + "post_job_actions": { + "HideDatasetActionlog_read_length": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "log_read_length" + }, + "HideDatasetActionnanostats": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "nanostats" + }, + "HideDatasetActionnanostats_post_filtering": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "nanostats_post_filtering" + }, + "HideDatasetActionread_length": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "read_length" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/nanoplot/nanoplot/1.25.0+galaxy1", + "tool_shed_repository": { + "changeset_revision": "645159bcee2d", + "name": "nanoplot", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"filter\": \"{\\\"alength\\\": \\\"false\\\", \\\"barcoded\\\": \\\"false\\\", \\\"downsample\\\": \\\"\\\", \\\"drop_outliers\\\": \\\"false\\\", \\\"loglength\\\": \\\"true\\\", \\\"maxlength\\\": \\\"\\\", \\\"minlength\\\": \\\"\\\", \\\"minqual\\\": \\\"\\\", \\\"percentqual\\\": \\\"false\\\", \\\"readtype\\\": null}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"mode\": \"{\\\"__current_case__\\\": 0, \\\"choice\\\": \\\"batch\\\", \\\"reads\\\": {\\\"__current_case__\\\": 0, \\\"files\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"type\\\": \\\"fastq\\\"}}\", \"customization\": \"{\\\"N50\\\": \\\"false\\\", \\\"color\\\": null, \\\"format\\\": \\\"png\\\", \\\"noN50\\\": \\\"false\\\", \\\"plots\\\": null}\"}", + "tool_version": "1.25.0+galaxy1", + "type": "tool", + "uuid": "9b1d43ac-82e3-463f-9c88-08c8826a62c9", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_html", + "uuid": "cd8570c7-02db-479b-81a9-cd0d26643f71" + } + ] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/minimap2/minimap2/2.17+galaxy1", + "errors": null, + "id": 6, + "input_connections": { + "fastq_input|fastq_input1": { + "id": 3, + "output_name": "output_collection" + } + }, + "inputs": [], + "label": null, + "name": "Map with minimap2", + "outputs": [ + { + "name": "alignment_output", + "type": "bam" + } + ], + "position": { + "left": 1003.9833984375, + "top": 1131.9666442871094 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/minimap2/minimap2/2.17+galaxy1", + "tool_shed_repository": { + "changeset_revision": "53c0b7a1a0c3", + "name": "minimap2", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"alignment_options\": \"{\\\"-O2\\\": \\\"\\\", \\\"A\\\": \\\"\\\", \\\"B\\\": \\\"\\\", \\\"E\\\": \\\"\\\", \\\"E2\\\": \\\"\\\", \\\"O\\\": \\\"\\\", \\\"s\\\": \\\"\\\", \\\"u\\\": null, \\\"z\\\": \\\"\\\"}\", \"analysis_type_selector\": \"\\\"splice\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"io_options\": \"{\\\"K\\\": \\\"\\\", \\\"L\\\": \\\"false\\\", \\\"Q\\\": \\\"false\\\", \\\"Y\\\": \\\"false\\\", \\\"c\\\": \\\"false\\\", \\\"cs\\\": null, \\\"eqx\\\": \\\"false\\\", \\\"output_format\\\": \\\"BAM\\\"}\", \"mapping_options\": \"{\\\"F\\\": \\\"\\\", \\\"G\\\": \\\"\\\", \\\"N\\\": \\\"\\\", \\\"X\\\": \\\"false\\\", \\\"f\\\": \\\"\\\", \\\"g\\\": \\\"\\\", \\\"m\\\": \\\"\\\", \\\"min_occ_floor\\\": \\\"\\\", \\\"n\\\": \\\"\\\", \\\"p\\\": \\\"\\\", \\\"r\\\": \\\"\\\"}\", \"fastq_input\": \"{\\\"__current_case__\\\": 1, \\\"fastq_input1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"fastq_input_selector\\\": \\\"single\\\"}\", \"reference_source\": \"{\\\"__current_case__\\\": 0, \\\"ref_file\\\": \\\"hg38\\\", \\\"reference_source_selector\\\": \\\"cached\\\"}\", \"indexing_options\": \"{\\\"H\\\": \\\"false\\\", \\\"I\\\": \\\"\\\", \\\"k\\\": \\\"\\\", \\\"w\\\": \\\"\\\"}\"}", + "tool_version": "2.17+galaxy1", + "type": "tool", + "uuid": "098d2283-1218-489b-9882-8822e79d9444", + "workflow_outputs": [ + { + "label": null, + "output_name": "alignment_output", + "uuid": "9972015d-4bdc-440f-b8b6-84e92a64ef8f" + } + ] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.7", + "errors": null, + "id": 7, + "input_connections": { + "results_0|software_cond|input": { + "id": 4, + "output_name": "report_json" + } + }, + "inputs": [], + "label": null, + "name": "MultiQC", + "outputs": [ + { + "name": "stats", + "type": "input" + }, + { + "name": "html_report", + "type": "html" + } + ], + "position": { + "left": 1152.4833984375, + "top": 200 + }, + "post_job_actions": { + "HideDatasetActionstats": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "stats" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.7", + "tool_shed_repository": { + "changeset_revision": "b2f1f75d49c4", + "name": "multiqc", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"comment\": \"\\\"\\\"\", \"__page__\": null, \"title\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"results\": \"[{\\\"__index__\\\": 0, \\\"software_cond\\\": {\\\"__current_case__\\\": 7, \\\"input\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"software\\\": \\\"fastp\\\"}}]\", \"saveLog\": \"\\\"false\\\"\"}", + "tool_version": "1.7", + "type": "tool", + "uuid": "73566697-4a46-4d35-b8e2-61770acc62c0", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_report", + "uuid": "15f42a94-2c97-4932-8e3f-f26a72b58be4" + } + ] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.3.4.3+galaxy0", + "errors": null, + "id": 8, + "input_connections": { + "library|input_1": { + "id": 4, + "output_name": "output_paired_coll" + } + }, + "inputs": [], + "label": null, + "name": "Bowtie2", + "outputs": [ + { + "name": "output", + "type": "bam" + }, + { + "name": "mapping_stats", + "type": "txt" + } + ], + "position": { + "left": 1208.699951171875, + "top": 564.6333160400391 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.3.4.3+galaxy0", + "tool_shed_repository": { + "changeset_revision": "749c918495f7", + "name": "bowtie2", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"sam_options\": \"{\\\"__current_case__\\\": 1, \\\"sam_options_selector\\\": \\\"no\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"library\": \"{\\\"__current_case__\\\": 2, \\\"aligned_file\\\": \\\"false\\\", \\\"input_1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"paired_options\\\": {\\\"__current_case__\\\": 1, \\\"paired_options_selector\\\": \\\"no\\\"}, \\\"type\\\": \\\"paired_collection\\\", \\\"unaligned_file\\\": \\\"false\\\"}\", \"reference_genome\": \"{\\\"__current_case__\\\": 0, \\\"index\\\": \\\"hg38full\\\", \\\"source\\\": \\\"indexed\\\"}\", \"rg\": \"{\\\"__current_case__\\\": 3, \\\"rg_selector\\\": \\\"do_not_set\\\"}\", \"save_mapping_stats\": \"\\\"true\\\"\", \"analysis_type\": \"{\\\"__current_case__\\\": 0, \\\"analysis_type_selector\\\": \\\"simple\\\", \\\"presets\\\": \\\"no_presets\\\"}\"}", + "tool_version": "2.3.4.3+galaxy0", + "type": "tool", + "uuid": "43331d2c-7116-410e-a6bd-7e7520d93a52", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "eeae40f6-f1b2-4c56-9860-ac7b8eb1dec0" + }, + { + "label": null, + "output_name": "mapping_stats", + "uuid": "c567226e-efaf-4188-bdec-3ba20d0733b0" + } + ] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_view/samtools_view/1.9+galaxy1", + "errors": null, + "id": 9, + "input_connections": { + "input": { + "id": 6, + "output_name": "alignment_output" + } + }, + "inputs": [], + "label": null, + "name": "Samtools view", + "outputs": [ + { + "name": "outputsam", + "type": "input" + } + ], + "position": { + "left": 1249.4166259765625, + "top": 961.4166412353516 + }, + "post_job_actions": { + "HideDatasetActionoutputsam": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outputsam" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/samtools_view/samtools_view/1.9+galaxy1", + "tool_shed_repository": { + "changeset_revision": "b01db2684fa5", + "name": "samtools_view", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"addref_cond\": \"{\\\"__current_case__\\\": 0, \\\"addref_select\\\": \\\"no\\\"}\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"mode\": \"{\\\"__current_case__\\\": 1, \\\"filter_config\\\": {\\\"cigarcons\\\": \\\"\\\", \\\"cond_region\\\": {\\\"__current_case__\\\": 0, \\\"select_region\\\": \\\"no\\\"}, \\\"cond_rg\\\": {\\\"__current_case__\\\": 0, \\\"select_rg\\\": \\\"no\\\"}, \\\"exclusive_filter\\\": null, \\\"exclusive_filter_all\\\": null, \\\"inclusive_filter\\\": [\\\"4\\\"], \\\"library\\\": \\\"\\\", \\\"quality\\\": \\\"\\\"}, \\\"output_options\\\": {\\\"__current_case__\\\": 0, \\\"adv_output\\\": {\\\"collapsecigar\\\": \\\"false\\\", \\\"readtags\\\": []}, \\\"complementary_output\\\": \\\"false\\\", \\\"output_format\\\": {\\\"__current_case__\\\": 1, \\\"fmtopt\\\": \\\"-b\\\", \\\"oformat\\\": \\\"bam\\\"}, \\\"reads_report_type\\\": \\\"retained\\\"}, \\\"outtype\\\": \\\"selected_reads\\\", \\\"subsample_config\\\": {\\\"subsampling_mode\\\": {\\\"__current_case__\\\": 0, \\\"factor\\\": \\\"1.0\\\", \\\"seed\\\": \\\"\\\", \\\"select_subsample\\\": \\\"fraction\\\"}}}\", \"__page__\": null}", + "tool_version": "1.9+galaxy1", + "type": "tool", + "uuid": "22379db6-5fca-40fb-9ce9-d59a1336c679", + "workflow_outputs": [] + } + }, + "tags": [ + "GTN", + "assembly" + ], + "uuid": "d3a0ed14-e8eb-4c2a-b76f-20af5e91c46b", + "version": 9 +} diff --git a/topics/assembly/tutorials/assembly-with-preprocessing/workflows/index.md b/topics/assembly/tutorials/assembly-with-preprocessing/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/assembly/tutorials/assembly-with-preprocessing/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/assembly/tutorials/general-introduction/workflows/assembly-general-introduction.ga b/topics/assembly/tutorials/general-introduction/workflows/assembly-general-introduction.ga index af93fd8d312224..ba703195904cdf 100644 --- a/topics/assembly/tutorials/general-introduction/workflows/assembly-general-introduction.ga +++ b/topics/assembly/tutorials/general-introduction/workflows/assembly-general-introduction.ga @@ -1,203 +1,546 @@ { - "a_galaxy_workflow": "true", - "annotation": "Introduction to Genome Assembly", - "format-version": "0.1", - "name": "Assembly General Intro", - "steps": { - "0": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 0, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "mutant_R1.fastq" + "a_galaxy_workflow": "true", + "annotation": "tutorial", + "format-version": "0.1", + "name": "Intro to Genome Assembly", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "mutant_R1.fastq" + } + ], + "label": "mutant_R1.fastq", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 241, + "top": 367.6875 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "ae357211-b491-4cab-98c2-11da142da53b", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "6082dd9a-a97c-4f0e-a6b6-cf6d93bc1a56" + } + ] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "mutant_R2.fastq" + } + ], + "label": "mutant_R2.fastq", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 197, + "top": 523.203125 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "b614685b-d77b-4cb4-a1cf-745302274379", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "9476849b-1cd4-41b8-91b9-72acbe6927e2" + } + ] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "Genome file" + } + ], + "label": "Genome file", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 984, + "top": 651.75 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "ee2978d6-4c6d-456d-9be0-66d0edb629e5", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "6463d497-a5ad-4475-ae92-186dfe76c6bd" + } + ] + }, + "3": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 3, + "input_connections": { + "input_file": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 618.890625, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": null, + "type": "tool", + "uuid": "3a5a44fd-e16b-4069-82f3-2cd7eabada8b", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "22a51e6e-2e5f-4415-a127-e0b1c179a1b1" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "51ec8c05-eb47-4359-9120-0eca1a6d5c2f" + } + ] + }, + "4": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 4, + "input_connections": { + "input_file": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 621.625, + "top": 481.03125 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": null, + "type": "tool", + "uuid": "7ac25d0a-b294-4c4b-8b24-b5ed56f2f758", + "workflow_outputs": [] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_interlacer/fastq_paired_end_interlacer/1.2.0.1+galaxy0", + "errors": null, + "id": 5, + "input_connections": { + "reads|input1_file": { + "id": 0, + "output_name": "output" + }, + "reads|input2_file": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "FASTQ interlacer", + "outputs": [ + { + "name": "outfile_pairs", + "type": "input" + }, + { + "name": "outfile_singles", + "type": "input" + } + ], + "position": { + "left": 450, + "top": 825 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastq_paired_end_interlacer/fastq_paired_end_interlacer/1.2.0.1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "2ccb8dcabddc", + "name": "fastq_paired_end_interlacer", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"reads\": {\"input2_file\": {\"__class__\": \"ConnectedValue\"}, \"input1_file\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 0, \"reads_selector\": \"paired\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": null, + "type": "tool", + "uuid": "af9b6352-c51e-4f0c-83f6-4f5b9272985a", + "workflow_outputs": [ + { + "label": null, + "output_name": "outfile_pairs", + "uuid": "225edf5f-3b90-4f84-a38a-5c786000a3fc" + }, + { + "label": null, + "output_name": "outfile_singles", + "uuid": "dae90093-ae96-4bb2-824d-c92b61585096" + } + ] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.7", + "errors": null, + "id": 6, + "input_connections": { + "results_0|software_cond|output_0|input": { + "id": 3, + "output_name": "text_file" + }, + "results_0|software_cond|output_1|input": { + "id": 4, + "output_name": "text_file" + } + }, + "inputs": [], + "label": null, + "name": "MultiQC", + "outputs": [ + { + "name": "stats", + "type": "input" + }, + { + "name": "html_report", + "type": "html" + } + ], + "position": { + "left": 963.890625, + "top": 340.6875 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.7", + "tool_shed_repository": { + "changeset_revision": "b2f1f75d49c4", + "name": "multiqc", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"comment\": \"\", \"__page__\": null, \"title\": \"\", \"__rerun_remap_job_id__\": null, \"results\": [{\"__index__\": 0, \"software_cond\": {\"output\": [{\"__index__\": 0, \"type\": \"data\", \"input\": {\"__class__\": \"ConnectedValue\"}}, {\"__index__\": 1, \"type\": \"data\", \"input\": {\"__class__\": \"ConnectedValue\"}}], \"__current_case__\": 8, \"software\": \"fastqc\"}}], \"saveLog\": \"false\"}", + "tool_version": null, + "type": "tool", + "uuid": "95440a74-31d3-4b9c-8c8f-4e91fd54cf01", + "workflow_outputs": [ + { + "label": null, + "output_name": "stats", + "uuid": "85e3704a-859d-4657-b3d7-9b67e4981d21" + }, + { + "label": null, + "output_name": "html_report", + "uuid": "fab7e06a-604e-4432-b0ed-b63157a8643b" + } + ] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/velvet/velveth/1.2.10.1", + "errors": null, + "id": 7, + "input_connections": { + "inputs_0|input": { + "id": 5, + "output_name": "outfile_pairs" + } + }, + "inputs": [], + "label": null, + "name": "velveth", + "outputs": [ + { + "name": "out_file1", + "type": "velvet" + } + ], + "position": { + "left": 763, + "top": 877 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/velvet/velveth/1.2.10.1", + "tool_shed_repository": { + "changeset_revision": "5da9a0e2fb2d", + "name": "velvet", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"hash_length\": \"29\", \"__rerun_remap_job_id__\": null, \"strand_specific\": \"false\", \"inputs\": [{\"__index__\": 0, \"read_type\": \"-shortPaired\", \"input\": {\"__class__\": \"RuntimeValue\"}, \"file_format\": \"-fastq\"}]}", + "tool_version": null, + "type": "tool", + "uuid": "f98f0453-b473-4407-82da-8348aff285dd", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "607a214d-9137-4e73-9b73-954c79678937" + } + ] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/velvet/velvetg/1.2.10.1", + "errors": null, + "id": 8, + "input_connections": { + "input": { + "id": 7, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "velvetg", + "outputs": [ + { + "name": "stats", + "type": "tabular" + }, + { + "name": "contigs", + "type": "fasta" + } + ], + "position": { + "left": 1018, + "top": 882 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/velvet/velvetg/1.2.10.1", + "tool_shed_repository": { + "changeset_revision": "5da9a0e2fb2d", + "name": "velvet", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"last_graph\": {\"generate_graph\": \"no\", \"__current_case__\": 0}, \"generate_amos\": {\"afg\": \"no\", \"__current_case__\": 0}, \"reads\": {\"paired\": \"yes\", \"options\": {\"__current_case__\": 0, \"advanced\": \"no\"}, \"__current_case__\": 1, \"ins_length\": \"-1\"}, \"unused_reads\": {\"generate_unused\": \"no\", \"__current_case__\": 0}, \"coverage\": {\"cutoff\": \"none\", \"__current_case__\": 0}, \"expected\": {\"__current_case__\": 0, \"coverage\": \"none\"}, \"input\": {\"__class__\": \"ConnectedValue\"}, \"read_trkg\": \"false\", \"contig_lgth\": {\"__current_case__\": 0, \"use_contig_lgth\": \"no\"}}", + "tool_version": null, + "type": "tool", + "uuid": "c34bb33c-0e8a-4698-a370-f8d8f96f0921", + "workflow_outputs": [ + { + "label": null, + "output_name": "contigs", + "uuid": "b0cf3779-6199-42c9-963f-a733559f90bb" + }, + { + "label": null, + "output_name": "stats", + "uuid": "54926701-ccae-4143-b649-b7e08e1c6a8e" + } + ] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/quast/quast/5.0.2+galaxy0", + "errors": null, + "id": 9, + "input_connections": { + "assembly|ref|r": { + "id": 2, + "output_name": "output" + }, + "in|inputs": { + "id": 8, + "output_name": "contigs" + } + }, + "inputs": [], + "label": null, + "name": "Quast", + "outputs": [ + { + "name": "quast_tabular", + "type": "tabular" + }, + { + "name": "report_html", + "type": "html" + }, + { + "name": "report_pdf", + "type": "pdf" + }, + { + "name": "log", + "type": "txt" + }, + { + "name": "mis_ass", + "type": "tabular" + }, + { + "name": "unalign", + "type": "tabular" + } + ], + "position": { + "left": 1390.5, + "top": 594.25 + }, + "post_job_actions": { + "HideDatasetActionlog": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "log" + }, + "HideDatasetActionmis_ass": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "mis_ass" + }, + "HideDatasetActionquast_tabular": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "quast_tabular" + }, + "HideDatasetActionunalign": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "unalign" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/quast/quast/5.0.2+galaxy0", + "tool_shed_repository": { + "changeset_revision": "59db8ea8c845", + "name": "quast", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"scaffold_gap_max_size\": \"1000\", \"skip_unaligned_mis_contigs\": \"true\", \"assembly\": {\"ref\": {\"operons\": {\"__class__\": \"RuntimeValue\"}, \"r\": {\"__class__\": \"ConnectedValue\"}, \"use_ref\": \"true\", \"features\": {\"__class__\": \"RuntimeValue\"}, \"__current_case__\": 0}, \"orga_type\": \"\", \"type\": \"genome\", \"__current_case__\": 0}, \"circos\": \"false\", \"contig_thresholds\": \"0,1000\", \"__page__\": null, \"strict_NA\": \"false\", \"__rerun_remap_job_id__\": null, \"genes\": {\"rna_finding\": \"false\", \"gene_finding\": {\"tool\": \"none\", \"__current_case__\": 0}, \"conserved_genes_finding\": \"false\"}, \"unaligned_part_size\": \"500\", \"al\": {\"upper_bound_assembly\": \"false\", \"min_identity\": \"95.0\", \"ambiguity_score\": \"0.99\", \"ambiguity_usage\": \"one\", \"upper_bound_min_con\": \"2\", \"fragmented\": \"false\", \"fragmented_max_indent\": \"50\", \"use_all_alignments\": \"false\", \"min_alignment\": \"65\"}, \"extensive_mis_size\": \"1000\", \"large\": \"false\", \"in\": {\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"custom\": \"false\"}, \"k_mer\": {\"k_mer_stats\": \"\", \"__current_case__\": 1}, \"split_scaffolds\": \"false\", \"min_contig\": \"500\"}", + "tool_version": null, + "type": "tool", + "uuid": "80922e53-cb63-4bba-8fd6-d53e48b17327", + "workflow_outputs": [ + { + "label": null, + "output_name": "report_html", + "uuid": "0babe959-4d63-4838-9e18-4526b3dd0db5" + }, + { + "label": null, + "output_name": "report_pdf", + "uuid": "f41c43c4-763c-42bc-b36e-9ea76e7752c2" + } + ] } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 10 - }, - "tool_id": null, - "tool_state": "{\"name\": \"mutant_R1.fastq\"}", - "tool_version": null, - "type": "data_input", - "uuid": "d8f71ebc-9556-4abf-b3a4-31f42fa703fc", - "workflow_outputs": [] - }, - "1": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 1, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "mutant_R2.fastq" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 130 - }, - "tool_id": null, - "tool_state": "{\"name\": \"mutant_R2.fastq\"}", - "tool_version": null, - "type": "data_input", - "uuid": "a33fa5e6-b342-40d3-9dcc-d74939ccf70f", - "workflow_outputs": [] - }, - "2": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.69", - "errors": null, - "id": 2, - "input_connections": { - "input_file": { - "id": 0, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.69", - "tool_shed_repository": { - "changeset_revision": "9337dd1fbc66", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"contaminants\": \"null\", \"chromInfo\": \"\\\"/galaxy-central/tool-data/shared/ucsc/chrom/?.len\\\"\"}", - "tool_version": "0.69", - "type": "tool", - "uuid": "cba4f7f3-6e0d-4b7f-902c-dce13b1a7b62", - "workflow_outputs": [] - }, - "3": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/simon-gladman/velvetoptimiser/velvet/0.1.0", - "errors": null, - "id": 3, - "input_connections": { - "files_0|paired_type|input1": { - "id": 0, - "output_name": "output" - }, - "files_0|paired_type|input2": { - "id": 1, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "velvet", - "outputs": [ - { - "name": "contigs", - "type": "fasta" - }, - { - "name": "stats", - "type": "tabular" - }, - { - "name": "graph", - "type": "tabular" - }, - { - "name": "log", - "type": "tabular" - } - ], - "position": { - "left": 230, - "top": 130 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/simon-gladman/velvetoptimiser/velvet/0.1.0", - "tool_shed_repository": { - "changeset_revision": "d81360ea69d8", - "name": "velvetoptimiser", - "owner": "simon-gladman", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"files\": \"[{\\\"__index__\\\": 0, \\\"filetype\\\": \\\"fastq\\\", \\\"paired_type\\\": {\\\"input2\\\": null, \\\"paired_type_selector\\\": \\\"paired\\\", \\\"input1\\\": null, \\\"__current_case__\\\": 0}}]\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/galaxy-central/tool-data/shared/ucsc/chrom/?.len\\\"\", \"kmer\": \"\\\"29\\\"\"}", - "tool_version": "0.1.0", - "type": "tool", - "uuid": "8b992d49-f94d-47a5-8030-51d31fcc9ffc", - "workflow_outputs": [] - }, - "4": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/simon-gladman/fasta_stats/fasta-stats/1.0.0", - "errors": null, - "id": 4, - "input_connections": { - "dataset": { - "id": 3, - "output_name": "contigs" - } - }, - "inputs": [], - "label": null, - "name": "Fasta Statistics", - "outputs": [ - { - "name": "stats", - "type": "tabular" - } - ], - "position": { - "left": 450, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/simon-gladman/fasta_stats/fasta-stats/1.0.0", - "tool_shed_repository": { - "changeset_revision": "20ca2574216a", - "name": "fasta_stats", - "owner": "simon-gladman", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/galaxy-central/tool-data/shared/ucsc/chrom/?.len\\\"\", \"dataset\": \"null\"}", - "tool_version": "1.0.0", - "type": "tool", - "uuid": "ca342af6-786b-4a91-9f81-13ed8e6f9a72", - "workflow_outputs": [ - { - "output_name": "stats", - "label": "fasta_stats_tabular" - } - ] - } - }, - "uuid": "89e97456-31e7-40b2-b16e-f94e3c93c407", - "tags": [ - "assembly" - ] + }, + "tags": [ + "assembly" + ], + "uuid": "d631b74f-8a83-4f06-97a2-d37a34eb3736", + "version": 3 } \ No newline at end of file diff --git a/topics/assembly/tutorials/unicycler-assembly/workflows/unicycler.ga b/topics/assembly/tutorials/unicycler-assembly/workflows/unicycler.ga index ae87df392ba4ca..5536985e0b0dd9 100644 --- a/topics/assembly/tutorials/unicycler-assembly/workflows/unicycler.ga +++ b/topics/assembly/tutorials/unicycler-assembly/workflows/unicycler.ga @@ -1,438 +1,590 @@ { - "uuid": "2fa1768f-116d-4695-83c5-6a07eff7be33", - "tags": [ - "assembly" - ], - "format-version": "0.1", - "name": "Unicycler Training", - "steps": { - "0": { - "tool_id": null, - "tool_version": null, - "outputs": [], - "workflow_outputs": [], - "input_connections": {}, - "tool_state": "{\"name\": \"forward_reads\"}", - "id": 0, - "uuid": "1e8ef78c-1cb2-4376-9fc5-3f9d47acfe69", - "errors": null, - "name": "Input dataset", - "label": "Forward reads", - "inputs": [ - { - "name": "forward_reads", - "description": "" + "a_galaxy_workflow": "true", + "annotation": "Unicycler Assembly", + "format-version": "0.1", + "name": "Unicycler training", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "Forward reads" + } + ], + "label": "Forward reads", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 230.140625, + "top": 404.015625 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "5152d41f-3523-496e-afa2-8d4b0af89b2a", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "e14afa81-ce6c-4577-b17e-90ef2b75c885" + } + ] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "Reverse Reads" + } + ], + "label": "Reverse Reads", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 187.359375, + "top": 656.765625 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "25209075-9248-4e70-9396-87e6e28995e1", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "4cade8d2-87ae-4bae-8795-b1f64c5c3cab" + } + ] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "Long Reads" + } + ], + "label": "Long Reads", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 186.65625, + "top": 803.734375 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "c1cfa6a5-2c17-4cd7-b582-ce85ff552b67", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "bf7b5353-30b6-471b-91b7-5fd2143bf981" + } + ] + }, + "3": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 3, + "input_connections": { + "input_file": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 415.015625, + "top": 199.984375 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "d0e16801-e8f6-4889-9502-c57aa6b1a436", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "3c8f9841-bf87-4c4b-9af2-115a0b84f13f" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "5c63bd29-f9c1-423b-ad6e-4b944e32c6ac" + } + ] + }, + "4": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 4, + "input_connections": { + "input_file": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 415.390625, + "top": 410.765625 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "1f890a7b-848b-40e0-987b-26450c9f5203", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "0dee124c-9984-4c90-9a76-353ffbcea854" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "f80ae006-d3ee-4794-bfe1-b656aea05823" + } + ] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/unicycler/unicycler/0.4.8.0", + "errors": null, + "id": 5, + "input_connections": { + "long": { + "id": 2, + "output_name": "output" + }, + "paired_unpaired|fastq_input1": { + "id": 0, + "output_name": "output" + }, + "paired_unpaired|fastq_input2": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "lr_align" + }, + { + "description": "runtime parameter for tool Create assemblies with Unicycler", + "name": "rotation" + } + ], + "label": null, + "name": "Create assemblies with Unicycler", + "outputs": [ + { + "name": "assembly_graph", + "type": "tabular" + }, + { + "name": "assembly", + "type": "fasta" + } + ], + "position": { + "left": 397.15625, + "top": 636.984375 + }, + "post_job_actions": { + "HideDatasetActionassembly_graph": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "assembly_graph" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/unicycler/unicycler/0.4.8.0", + "tool_shed_repository": { + "changeset_revision": "88c240872a65", + "name": "unicycler", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"linear_seqs\": \"0\", \"spades\": {\"no_correct\": \"false\", \"kmer_count\": \"10\", \"depth_filter\": \"0.25\", \"kmers\": \"\", \"min_kmer_frac\": \"0.2\", \"max_kmer_frac\": \"0.95\", \"largest_component\": \"false\"}, \"graph_clean\": {\"min_dead_end_size\": \"1000\", \"min_component_size\": \"1000\"}, \"__page__\": null, \"min_anchor_seg_len\": \"\", \"__rerun_remap_job_id__\": null, \"lr_align\": {\"low_score\": \"\", \"scores\": \"\", \"contamination\": {\"__class__\": \"RuntimeValue\"}}, \"long\": {\"__class__\": \"ConnectedValue\"}, \"paired_unpaired\": {\"fastq_input2\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 0, \"fastq_input_selector\": \"paired\", \"fastq_input1\": {\"__class__\": \"ConnectedValue\"}}, \"min_fasta_length\": \"100\", \"mode\": \"normal\", \"rotation\": {\"start_genes\": {\"__class__\": \"RuntimeValue\"}, \"start_gene_cov\": \"95.0\", \"no_rotate\": \"false\", \"start_gene_id\": \"90.0\"}, \"pilon\": {\"no_pilon\": \"false\", \"min_polish_size\": \"1000\"}}", + "tool_version": "0.4.8.0", + "type": "tool", + "uuid": "98050cb0-ca52-4a9d-a1c3-cd301f36356c", + "workflow_outputs": [ + { + "label": null, + "output_name": "assembly", + "uuid": "c35c6740-11f7-4ca3-8b93-a1fe502b8719" + } + ] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.7", + "errors": null, + "id": 6, + "input_connections": { + "results_0|software_cond|output_0|input": { + "id": 3, + "output_name": "text_file" + }, + "results_0|software_cond|output_1|input": { + "id": 4, + "output_name": "text_file" + } + }, + "inputs": [], + "label": null, + "name": "MultiQC", + "outputs": [ + { + "name": "stats", + "type": "input" + }, + { + "name": "html_report", + "type": "html" + } + ], + "position": { + "left": 650.71875, + "top": 251.3125 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.7", + "tool_shed_repository": { + "changeset_revision": "b2f1f75d49c4", + "name": "multiqc", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"comment\": \"\", \"__page__\": null, \"title\": \"\", \"__rerun_remap_job_id__\": null, \"results\": [{\"__index__\": 0, \"software_cond\": {\"output\": [{\"__index__\": 0, \"type\": \"data\", \"input\": {\"__class__\": \"ConnectedValue\"}}, {\"__index__\": 1, \"type\": \"data\", \"input\": {\"__class__\": \"ConnectedValue\"}}], \"__current_case__\": 8, \"software\": \"fastqc\"}}], \"saveLog\": \"false\"}", + "tool_version": "1.7", + "type": "tool", + "uuid": "3277000f-cee0-4279-80d3-0b266694cce2", + "workflow_outputs": [ + { + "label": null, + "output_name": "stats", + "uuid": "3bfec2db-625d-4aa5-9016-e16fe27bf466" + }, + { + "label": null, + "output_name": "html_report", + "uuid": "6f40035d-5c8d-4e18-82ea-0093237d250f" + } + ] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/quast/quast/5.0.2+galaxy0", + "errors": null, + "id": 7, + "input_connections": { + "in|inputs": { + "id": 5, + "output_name": "assembly" + } + }, + "inputs": [], + "label": null, + "name": "Quast", + "outputs": [ + { + "name": "quast_tabular", + "type": "tabular" + }, + { + "name": "report_html", + "type": "html" + }, + { + "name": "report_pdf", + "type": "pdf" + }, + { + "name": "log", + "type": "txt" + } + ], + "position": { + "left": 648.875, + "top": 416.5 + }, + "post_job_actions": { + "HideDatasetActionlog": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "log" + }, + "HideDatasetActionquast_tabular": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "quast_tabular" + }, + "HideDatasetActionreport_pdf": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "report_pdf" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/quast/quast/5.0.2+galaxy0", + "tool_shed_repository": { + "changeset_revision": "59db8ea8c845", + "name": "quast", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"scaffold_gap_max_size\": \"1000\", \"skip_unaligned_mis_contigs\": \"true\", \"assembly\": {\"ref\": {\"use_ref\": \"false\", \"est_ref_size\": \"\", \"__current_case__\": 1}, \"orga_type\": \"\", \"type\": \"genome\", \"__current_case__\": 0}, \"circos\": \"false\", \"contig_thresholds\": \"0,1000\", \"__page__\": null, \"strict_NA\": \"false\", \"__rerun_remap_job_id__\": null, \"genes\": {\"rna_finding\": \"false\", \"gene_finding\": {\"tool\": \"none\", \"__current_case__\": 0}, \"conserved_genes_finding\": \"false\"}, \"unaligned_part_size\": \"500\", \"al\": {\"upper_bound_assembly\": \"false\", \"min_identity\": \"95.0\", \"ambiguity_score\": \"0.99\", \"ambiguity_usage\": \"one\", \"upper_bound_min_con\": \"2\", \"fragmented\": \"false\", \"fragmented_max_indent\": \"50\", \"use_all_alignments\": \"false\", \"min_alignment\": \"65\"}, \"extensive_mis_size\": \"1000\", \"large\": \"false\", \"in\": {\"inputs\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"custom\": \"false\"}, \"k_mer\": {\"k_mer_stats\": \"\", \"__current_case__\": 1}, \"split_scaffolds\": \"false\", \"min_contig\": \"500\"}", + "tool_version": "5.0.2+galaxy0", + "type": "tool", + "uuid": "1bb7b9fa-3e76-48b6-aa08-1169710715c5", + "workflow_outputs": [ + { + "label": null, + "output_name": "quast_tsv", + "uuid": "22d4aad1-6145-4209-8261-8dadf4fd4c02" + }, + { + "label": null, + "output_name": "report_html", + "uuid": "0de88512-45db-4372-9457-94f136a77267" + }, + { + "label": null, + "output_name": "icarus", + "uuid": "84990237-682a-4800-9ce3-dfeb83c7042d" + } + ] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/crs4/prokka/prokka/1.14.5", + "errors": null, + "id": 8, + "input_connections": { + "input": { + "id": 5, + "output_name": "assembly" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Prokka", + "name": "proteins" + } + ], + "label": null, + "name": "Prokka", + "outputs": [ + { + "name": "out_gff", + "type": "gff" + }, + { + "name": "out_gbk", + "type": "txt" + }, + { + "name": "out_fna", + "type": "fasta" + }, + { + "name": "out_faa", + "type": "fasta" + }, + { + "name": "out_ffn", + "type": "fasta" + }, + { + "name": "out_sqn", + "type": "asn1" + }, + { + "name": "out_fsa", + "type": "fasta" + }, + { + "name": "out_tbl", + "type": "txt" + }, + { + "name": "out_err", + "type": "txt" + }, + { + "name": "out_txt", + "type": "txt" + }, + { + "name": "out_log", + "type": "txt" + } + ], + "position": { + "left": 647.125, + "top": 603.75 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/crs4/prokka/prokka/1.14.5", + "tool_shed_repository": { + "changeset_revision": "bf68eb663bc3", + "name": "prokka", + "owner": "crs4", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"strain\": \"C-1\", \"increment\": \"10\", \"species\": \"Coli\", \"__page__\": null, \"usegenus\": \"true\", \"evalue\": \"1e-06\", \"locustag\": \"PROKKA\", \"fast\": \"false\", \"compliant\": {\"mincontig\": \"200\", \"__current_case__\": 0, \"compliant_select\": \"no\", \"addgenes\": \"false\"}, \"input\": {\"__class__\": \"ConnectedValue\"}, \"kingdom\": {\"gcode\": \"11\", \"kingdom_select\": \"Bacteria\", \"__current_case__\": 1}, \"metagenome\": \"false\", \"centre\": \"\", \"outputs\": [\"gff\", \"gbk\", \"fna\", \"faa\", \"ffn\", \"sqn\", \"fsa\", \"tbl\", \"err\", \"txt\"], \"gffver\": \"3\", \"norrna\": \"false\", \"proteins\": {\"__class__\": \"RuntimeValue\"}, \"notrna\": \"false\", \"plasmid\": \"\", \"rfam\": \"false\", \"genus\": \"Escherichia\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.14.5", + "type": "tool", + "uuid": "dd9a67df-68a8-423b-90d2-2167393949e6", + "workflow_outputs": [ + { + "label": "tbl", + "output_name": "out_tbl", + "uuid": "0d6b33c9-b105-4997-9045-b86e52f00156" + }, + { + "label": null, + "output_name": "out_txt", + "uuid": "4b7ef57d-3075-41cf-bc75-a5fc4aa8c942" + }, + { + "label": "gbk", + "output_name": "out_gbk", + "uuid": "8e08b54d-87e1-4269-9b96-8ebf1a9bb4ab" + }, + { + "label": null, + "output_name": "out_err", + "uuid": "d2cd11ae-12f9-4123-bfde-119fa409da73" + }, + { + "label": "ffn", + "output_name": "out_ffn", + "uuid": "65e4ddf9-f5bc-4078-8b4e-37b332e12ece" + }, + { + "label": null, + "output_name": "out_fsa", + "uuid": "14a0d804-36f3-488f-a85d-4d18ff95d56f" + }, + { + "label": null, + "output_name": "out_fna", + "uuid": "d494a946-ff3c-4900-a3f5-573ff1540ea3" + }, + { + "label": null, + "output_name": "out_log", + "uuid": "80ed53bf-7d76-4de2-85b5-7dc487922e0e" + }, + { + "label": null, + "output_name": "out_faa", + "uuid": "249632ad-2412-4010-a703-aa8faeecc538" + }, + { + "label": null, + "output_name": "out_sqn", + "uuid": "175956d0-42a8-4270-b976-3eefef7384ab" + }, + { + "label": null, + "output_name": "out_gff", + "uuid": "0e2ffd13-e194-4693-9adf-54e561fd24e5" + } + ] } - ], - "position": { - "top": 346, - "left": 160.98333740234375 - }, - "annotation": "", - "content_id": null, - "type": "data_input" - }, - "1": { - "tool_id": null, - "tool_version": null, - "outputs": [], - "workflow_outputs": [], - "input_connections": {}, - "tool_state": "{\"name\": \"reverse_reads\"}", - "id": 1, - "uuid": "251d7a96-2b0d-4b8c-bf34-d24b65b32b41", - "errors": null, - "name": "Input dataset", - "label": "Reverse Reads", - "inputs": [ - { - "name": "reverse_reads", - "description": "" - } - ], - "position": { - "top": 683, - "left": 103.9666748046875 - }, - "annotation": "", - "content_id": null, - "type": "data_input" - }, - "2": { - "tool_id": null, - "tool_version": null, - "outputs": [], - "workflow_outputs": [], - "input_connections": {}, - "tool_state": "{\"name\": \"long_reads\"}", - "id": 2, - "uuid": "80a96186-0c6f-448e-a8cd-11f18e04629d", - "errors": null, - "name": "Input dataset", - "label": "Long Reads", - "inputs": [ - { - "name": "long_reads", - "description": "" - } - ], - "position": { - "top": 878.9833374023438, - "left": 103 - }, - "annotation": "", - "content_id": null, - "type": "data_input" - }, - "3": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.71", - "tool_version": "0.71", - "outputs": [ - { - "type": "html", - "name": "html_file" - }, - { - "type": "txt", - "name": "text_file" - } - ], - "workflow_outputs": [], - "input_connections": { - "input_file": { - "output_name": "output", - "id": 0 - } - }, - "tool_state": "{\"__page__\": null, \"contaminants\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"__rerun_remap_job_id__\": null, \"limits\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_file\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\"}", - "id": 3, - "tool_shed_repository": { - "owner": "devteam", - "changeset_revision": "ff9530579d1f", - "name": "fastqc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "ca4cf888-bf14-4cc9-9bc1-202b3ed818d0", - "errors": null, - "name": "FastQC", - "post_job_actions": {}, - "label": null, - "inputs": [ - { - "name": "contaminants", - "description": "runtime parameter for tool FastQC" - }, - { - "name": "limits", - "description": "runtime parameter for tool FastQC" - }, - { - "name": "input_file", - "description": "runtime parameter for tool FastQC" - } - ], - "position": { - "top": 271.31666564941406, - "left": 684.8333129882812 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.71", - "type": "tool" - }, - "4": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.71", - "tool_version": "0.71", - "outputs": [ - { - "type": "html", - "name": "html_file" - }, - { - "type": "txt", - "name": "text_file" - } - ], - "workflow_outputs": [], - "input_connections": { - "input_file": { - "output_name": "output", - "id": 1 - } - }, - "tool_state": "{\"__page__\": null, \"contaminants\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"__rerun_remap_job_id__\": null, \"limits\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_file\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\"}", - "id": 4, - "tool_shed_repository": { - "owner": "devteam", - "changeset_revision": "ff9530579d1f", - "name": "fastqc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "988ebf23-99af-4b76-a476-28b58f505f61", - "errors": null, - "name": "FastQC", - "post_job_actions": {}, - "label": null, - "inputs": [ - { - "name": "contaminants", - "description": "runtime parameter for tool FastQC" - }, - { - "name": "limits", - "description": "runtime parameter for tool FastQC" - }, - { - "name": "input_file", - "description": "runtime parameter for tool FastQC" - } - ], - "position": { - "top": 603, - "left": 339.98333740234375 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.71", - "type": "tool" - }, - "5": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/unicycler/unicycler/0.2.0", - "tool_version": "0.2.0", - "outputs": [ - { - "type": "txt", - "name": "assembly_grapth" - }, - { - "type": "fasta", - "name": "assembly" - } - ], - "workflow_outputs": [], - "input_connections": { - "paired_unpaired|fastq_input2": { - "output_name": "output", - "id": 1 - }, - "paired_unpaired|fastq_input1": { - "output_name": "output", - "id": 0 - }, - "long_reads": { - "output_name": "output", - "id": 2 - } - }, - "tool_state": "{\"__page__\": null, \"spades\": \"{\\\"min_kmer_frac\\\": \\\"\\\", \\\"max_kmer_frac\\\": \\\"\\\", \\\"kmer_count\\\": \\\"\\\"}\", \"graph_clean\": \"{\\\"min_dead_end_size\\\": \\\"\\\", \\\"min_component_size\\\": \\\"\\\"}\", \"uc_opt\": \"{\\\"no_correct\\\": \\\"false\\\", \\\"min_fasta_length\\\": \\\"\\\", \\\"mode\\\": \\\"normal\\\", \\\"no_pilon\\\": \\\"false\\\", \\\"no_rotate\\\": \\\"false\\\", \\\"lin_seq\\\": \\\"\\\"}\", \"__rerun_remap_job_id__\": null, \"lr_align\": \"{\\\"low_score\\\": \\\"\\\", \\\"scores\\\": \\\"\\\", \\\"contamination_fasta\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}\", \"paired_unpaired\": \"{\\\"fastq_input2\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"__current_case__\\\": 0, \\\"fastq_input_selector\\\": \\\"paired\\\", \\\"fastq_input1\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}\", \"__job_resource\": \"{\\\"__current_case__\\\": 0, \\\"__job_resource__select\\\": \\\"no\\\"}\", \"rotation\": \"{\\\"start_gene_id\\\": \\\"\\\", \\\"start_gene_cov\\\": \\\"\\\", \\\"start_genes\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}\", \"chromInfo\": \"\\\"/galaxy-repl/localdata/chrom/?.len\\\"\", \"long_reads\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"pilon\": \"{\\\"min_polish_size\\\": \\\"\\\"}\"}", - "id": 5, - "tool_shed_repository": { - "owner": "iuc", - "changeset_revision": "e9c1cdb9f9dc", - "name": "unicycler", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "f469e49a-5729-4dbd-8f08-f5be3fca6191", - "errors": null, - "name": "Create assemblies with Unicycler", - "post_job_actions": {}, - "label": null, - "inputs": [ - { - "name": "lr_align", - "description": "runtime parameter for tool Create assemblies with Unicycler" - }, - { - "name": "paired_unpaired", - "description": "runtime parameter for tool Create assemblies with Unicycler" - }, - { - "name": "paired_unpaired", - "description": "runtime parameter for tool Create assemblies with Unicycler" - }, - { - "name": "rotation", - "description": "runtime parameter for tool Create assemblies with Unicycler" - }, - { - "name": "long_reads", - "description": "runtime parameter for tool Create assemblies with Unicycler" - } - ], - "position": { - "top": 609.9833374023438, - "left": 725 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/unicycler/unicycler/0.2.0", - "type": "tool" - }, - "6": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/quast/quast/4.1.1", - "tool_version": "4.1.1", - "outputs": [ - { - "type": "txt", - "name": "quast_out" - }, - { - "type": "tsv", - "name": "quast_tsv" - }, - { - "type": "tex", - "name": "quast_tex" - }, - { - "type": "html", - "name": "icarus" - }, - { - "type": "html", - "name": "report_html" - } - ], - "workflow_outputs": [], - "input_connections": { - "files_0|input": { - "output_name": "assembly", - "id": 5 - } - }, - "tool_state": "{\"files\": \"[{\\\"type_file\\\": \\\"scaffold\\\", \\\"__index__\\\": 0, \\\"input\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}]\", \"input_operon\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"__page__\": null, \"threshold_contig\": \"\\\"0,1000\\\"\", \"__rerun_remap_job_id__\": null, \"annot\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_size\": \"\\\"\\\"\", \"input_ref\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"chromInfo\": \"\\\"/galaxy-repl/localdata/chrom/?.len\\\"\", \"min_contig\": \"\\\"500\\\"\", \"gene_selection\": \"\\\"prokaryotes\\\"\"}", - "id": 6, - "tool_shed_repository": { - "owner": "iuc", - "changeset_revision": "2f581f956e1c", - "name": "quast", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "f20468eb-8292-4273-ac9e-b0d9c09b9e2e", - "errors": null, - "name": "Quast", - "post_job_actions": {}, - "label": null, - "inputs": [ - { - "name": "input_operon", - "description": "runtime parameter for tool Quast" - }, - { - "name": "annot", - "description": "runtime parameter for tool Quast" - }, - { - "name": "input_ref", - "description": "runtime parameter for tool Quast" - } - ], - "position": { - "top": 200, - "left": 1145.9833984375 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/quast/quast/4.1.1", - "type": "tool" - }, - "7": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/crs4/prokka/prokka/1.12.0", - "tool_version": "1.12.0", - "outputs": [ - { - "type": "gff", - "name": "out_gff" - }, - { - "type": "txt", - "name": "out_gbk" - }, - { - "type": "fasta", - "name": "out_fna" - }, - { - "type": "fasta", - "name": "out_faa" - }, - { - "type": "fasta", - "name": "out_ffn" - }, - { - "type": "asn1", - "name": "out_sqn" - }, - { - "type": "fasta", - "name": "out_fsa" - }, - { - "type": "txt", - "name": "out_tbl" - }, - { - "type": "txt", - "name": "out_err" - }, - { - "type": "txt", - "name": "out_txt" - }, - { - "type": "txt", - "name": "out_log" - } - ], - "workflow_outputs": [ - { - "output_name": "out_ffn", - "label": "ffn" - }, - { - "output_name": "out_gbk", - "label": "gbk" - }, - { - "output_name": "out_tbl", - "label": "tbl" - } - ], - "input_connections": { - "input": { - "output_name": "assembly", - "id": 5 - } - }, - "tool_state": "{\"strain\": \"\\\"C\\\"\", \"increment\": \"\\\"10\\\"\", \"species\": \"\\\"Coli\\\"\", \"__page__\": null, \"usegenus\": \"\\\"true\\\"\", \"evalue\": \"\\\"1e-06\\\"\", \"compliant\": \"{\\\"mincontig\\\": \\\"200\\\", \\\"__current_case__\\\": 0, \\\"compliant_select\\\": \\\"no\\\", \\\"addgenes\\\": \\\"false\\\"}\", \"fast\": \"\\\"false\\\"\", \"__job_resource\": \"{\\\"__current_case__\\\": 0, \\\"__job_resource__select\\\": \\\"no\\\"}\", \"locustag\": \"\\\"PROKKA\\\"\", \"input\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"kingdom\": \"{\\\"gcode\\\": \\\"11\\\", \\\"kingdom_select\\\": \\\"Bacteria\\\", \\\"__current_case__\\\": 1}\", \"metagenome\": \"\\\"false\\\"\", \"centre\": \"\\\"\\\"\", \"outputs\": \"[\\\"gff\\\", \\\"gbk\\\", \\\"fna\\\", \\\"faa\\\", \\\"ffn\\\", \\\"sqn\\\", \\\"fsa\\\", \\\"tbl\\\", \\\"err\\\", \\\"txt\\\"]\", \"gffver\": \"\\\"3\\\"\", \"norrna\": \"\\\"false\\\"\", \"proteins\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"notrna\": \"\\\"false\\\"\", \"plasmid\": \"\\\"\\\"\", \"rfam\": \"\\\"false\\\"\", \"genus\": \"\\\"Escherichia\\\"\", \"chromInfo\": \"\\\"/galaxy-repl/localdata/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", - "id": 7, - "tool_shed_repository": { - "owner": "crs4", - "changeset_revision": "a17498c603ec", - "name": "prokka", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "9a6e8f35-351c-42c4-bbe0-9a9da64ae1a8", - "errors": null, - "name": "Prokka", - "post_job_actions": {}, - "label": null, - "inputs": [ - { - "name": "input", - "description": "runtime parameter for tool Prokka" - }, - { - "name": "proteins", - "description": "runtime parameter for tool Prokka" - } - ], - "position": { - "top": 555, - "left": 1100.9833984375 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/crs4/prokka/prokka/1.12.0", - "type": "tool" - } - }, - "annotation": "Unicycler Assembly", - "a_galaxy_workflow": "true" -} \ No newline at end of file + }, + "tags": [ + "assembly" + ], + "uuid": "732443e4-0655-4fde-b0a7-770d97f608f5", + "version": 1 +} diff --git a/topics/climate/images/climate_stripes_temperature_Paris.png b/topics/climate/images/climate_stripes_temperature_Paris.png new file mode 100644 index 00000000000000..96a0e7be8c4198 Binary files /dev/null and b/topics/climate/images/climate_stripes_temperature_Paris.png differ diff --git a/topics/climate/images/rh_ecv_july_1980_2018.png b/topics/climate/images/rh_ecv_july_1980_2018.png new file mode 100644 index 00000000000000..07ddc156a3b59a Binary files /dev/null and b/topics/climate/images/rh_ecv_july_1980_2018.png differ diff --git a/topics/climate/images/weather_versus_climate.png b/topics/climate/images/weather_versus_climate.png new file mode 100755 index 00000000000000..33f668949f1cec Binary files /dev/null and b/topics/climate/images/weather_versus_climate.png differ diff --git a/topics/climate/images/yearly_mean_temperature_Paris.png b/topics/climate/images/yearly_mean_temperature_Paris.png new file mode 100644 index 00000000000000..995ba0354673e4 Binary files /dev/null and b/topics/climate/images/yearly_mean_temperature_Paris.png differ diff --git a/topics/climate/metadata.yaml b/topics/climate/metadata.yaml index 5b8888a8bbdac0..274a48bcbd475e 100644 --- a/topics/climate/metadata.yaml +++ b/topics/climate/metadata.yaml @@ -1,6 +1,5 @@ --- name: climate -enable: false type: use title: Climate summary: Learn to analyze climate data through Galaxy. diff --git a/topics/climate/tutorials/climate-101/tutorial.md b/topics/climate/tutorials/climate-101/tutorial.md new file mode 100644 index 00000000000000..eed1ca0972a3d6 --- /dev/null +++ b/topics/climate/tutorials/climate-101/tutorial.md @@ -0,0 +1,411 @@ +--- +layout: tutorial_hands_on +title: Getting your hands-on climate data +zenodo_link: 'https://doi.org/10.5281/zenodo.3776499' +questions: +- What is climate? +- What type of data is available? +objectives: +- Learn about the terminology +- Learn about the different source of climate data +- Learn about climate observations, reanalysis, climate predictions and climate projections +time_estimation: 1H +key_points: +- Weather versus Climate +- Essential Climate Variables +- Observations, reanalysis, predictions and projections. +contributors: +- annefou + +--- + + +# Introduction +{:.no_toc} + +> ### {% icon comment %} Comment +> +> This tutorial is significantly based on [Getting your hands-on Climate data](https://nordicesmhub.github.io/climate-data-tutorial/). +> +{: .comment} + +The practical aims at familiarzing you with Climate Science and the terminology used by climate scientists. The target audience is not a climate scientist but +anyone interested in learning about climate. + +> ### Agenda +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + +> ### {% icon comment %} Background +> +> [European Copernicus Climate Change Service (C3S)](https://climate.copernicus.eu/) provide authoritative information about the past, present +> and future climate. C3S is one of the many services provided by Copernicus, the European Union's Earth Observation Programme, looking +> at our planet and its environment for the ultimate benefit of all European citizens. +> The C3S [Climate Data Store (CDS)](https://cds.climate.copernicus.eu/#!/home) provides a single point of access to a wide range of +> quality-assured climate datasets distributed in the cloud. +> Access to the CDS data is open, free and unrestricted. +> We will be using freely available datasets from the CDS, including +> observations, historical climate data records, estimates of Essential Climate Variables (ECVs) derived from Earth observations, +> global and regional climate reanalyses of past observations, seasonal forecasts and climate projections. +{: .comment} + +For the purpose of this tutorial, sample datasets have been created from data downloaded from [C3S](https://climate.copernicus.eu/) through +[Copernicus Climate Data Store](https://cds.climate.copernicus.eu/#!/home): +- [E-OBS daily gridded meteorological data for Europe from 1950 to present derived from in-situ observations](https://cds.climate.copernicus.eu/cdsapp#!/dataset/insitu-gridded-observations-europe?tab=overview) +- [Essential climate variables for assessment of climate variability from 1979 to present](https://cds.climate.copernicus.eu/cdsapp#!/dataset/ecv-for-climate-change?tab=overview) + +To reduce the volume of data, the data resolution (in space and/or time) has been significantly reduced and/or data has been selected on sample locations (Paris, Oslo and +Freiburg). The data format may also have been changed (for instance to tabular) to ease processing. + +## Get data + +> ### {% icon hands_on %} Hands-on: Data upload +> +> 1. Create a new history for this tutorial. If you are not inspired, you can name it *climate101*. +> {% include snippets/create_new_history.md %} +> 2. Import the files from [Zenodo]() or from the shared data library +> +> ``` +> https://zenodo.org/record/3776500/files/tg_ens_mean_0.1deg_reg_v20.0e_Paris_daily.csv +> https://zenodo.org/record/3776500/files/ts_cities.csv +> ``` +> +> {% include snippets/import_via_link.md %} +> {% include snippets/import_from_data_library.md %} +> +> 3. Check that the datatype is **csv** +> +> {% include snippets/change_datatype.md datatype="datatypes" %} +> +> 4. Add a tag to the dataset corresponding to `copernicus` +> +> {% include snippets/add_tag.md %} +> +{: .hands_on} + +# What is climate? + +According to [wikipedia](https://en.wikipedia.org/wiki/Climate), +Climate is defined as the average state of everyday's weather condition **over a period of 30 years**. It is measured by assessing +the patterns of variation in temperature, humidity, atmospheric pressure, wind, precipitation, atmospheric particle count and +other meteorological variables in a given region over a long period of time (usually 20 or 30 years). +Climate differs from weather, in that weather only describes the short-term conditions of these variables in a given region. + + +## Climate versus Weather + +Quantities that climate scientists are interested in are similar to those used to assess the weather (temperature, precipitation, etc.). +But there is a big difference between climate and weather: **weather** varies from hour to hour and from day to day whereas **climate** +is defined as the average of weather over several decades or longer. + +The figure below shows a woman walking her dog and we can use it to make an analogy to illustrate the difference between weather and climate. +if you focus your attention on the dog, you can see that it is all over the place, sometimes upwards, sometimes downwards: this can represent the weather and its +variability. The dog (weather) is not following a fully random pattern and varies around a main direction (trend) that is given by the woman: the woman is representing +the climate and gives us an indication of where both the woman and dog are likely to be in the future. + + ![Illustrate the difference between weather and climate](../../images/weather_versus_climate.png "Weather versus Climate") + +*Source: [Animated short introduction to statistics in climate research](https://youtu.be/e0vj-0imOLw) from Norwegian infotainment program Siffer. Produced by TeddyTV for NRK. Animation by Ole Christoffer Haga* + + +You can also watch an animated illustration of the difference between climate and weather: + +<div class="embed-responsive embed-responsive-16by9"><iframe src="https://www.youtube.com/embed/e0vj-0imOLw" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div> + + +# What is the weather like in Paris? + +In order to answer this question, we are going to inspect and visualize the dataset `tg_ens_mean_0.1deg_reg_v20.0e_Paris_daily.csv` using simple galaxy tools. + +> ### {% icon hands_on %} Hands-on: Daily temperature time series +> > ### {% icon comment %} Tip: search for the tool +> > +> > Many different tools can be used to answer to the questions. Here we give you some guidelines to help you to choose. +> > Use the **tools search box** at the top of the tool panel to find **Select lines that match an expression** {% icon tool %} and **Datamash** {% icon tool %}. +> {: .tip} +> +> > ### {% icon question %} Questions +> > +> > 1. What was the average temperature in Paris on the 14th of July 2003? +> > 2. What is the minimum and maximum temperatures in Paris? +> > 3. On which date did the minimum temperature occured? +> > 4. On which date did the maximum temperature occured? +> > +> > > ### {% icon solution %} Solution +> > > 1. The average temperature in Paris on the 14th of July 2003 was 26.73 degrees Celcius. It can be found by using **Select lines that match an expression** {% icon tool %} with parameter **"the pattern"** set to 2003-07-14. +> > > 2. The minimum temperature in Paris is -11.6799995 degrees celcius and the maximum temperature in Paris is 33.579998 degrees celcius. To find out, you can use **Datamash** {% icon tool %} with the following parameters: +> > > - {% icon param-file %} *"Input tabular dataset"*: `tg_ens_mean_0.1deg_reg_v20.0e_Paris_daily.csv` +> > > - *"Input file has a header line"*: `Yes` +> > > - *"Print header line"*: `Yes` +> > > - "Print all fields from input file": `No` +> > > - In *"Operation to perform on each group"*: +> > > - {% icon param-repeat %} *"Insert Operation to perform on each group"* +> > > - *"Type"*: `minimum` +> > > - *"On column"*: `c2` +> > > - {% icon param-repeat %} *"Insert Operation to perform on each group"* +> > > - *"Type"*: `maximum` +> > > - *"On column"*: `c2` +> > > +> > > 3. The minimum temperature (-11.6799995 degrees celcius) was observed on January 16 1985. +> > > You can use different Galaxy tools to find out the solution and here we show you how to use **Datamash** {% icon tool %} with the following parameters: +> > > - {% icon param-file %} *"Input tabular dataset"*: `tg_ens_mean_0.1deg_reg_v20.0e_Paris_daily.csv` +> > > - *"Input file has a header line"*: `Yes` +> > > - *"Print header line"*: `Yes` +> > > - "Print all fields from input file": `Yes` +> > > - In *"Operation to perform on each group"*: +> > > - {% icon param-repeat %} *"Insert Operation to perform on each group"* +> > > - *"Type"*: `minimum` +> > > - *"On column"*: `c2` +> > > +> > > 4. The maximum temperature (33.579998 degrees celcius) was observed on July 25 2019. For the **maximum**, repeat **Datamash** {% icon tool %} with the following parameters: +> > > +> > > - {% icon param-file %} *"Input tabular dataset"*: `tg_ens_mean_0.1deg_reg_v20.0e_Paris_daily.csv` +> > > - *"Input file has a header line"*: `Yes` +> > > - *"Print header line"*: `Yes` +> > > - "Print all fields from input file": `Yes` +> > > - In *"Operation to perform on each group"*: +> > > - {% icon param-repeat %} *"Insert Operation to perform on each group"* +> > > - *"Type"*: `maximum` +> > > - *"On column"*: `c2` +> > {: .solution} +> {: .question} +> +{: .hands_on} + +# What is the climate in Paris? + +To get some information about the (past and current) climate in Paris, we will first look at monthly averages. + +## Seasonality + +> ### {% icon hands_on %} Hands-on: What is the monthly climatological temperature in Paris? +> +> To answer to this question, we will compute the global average temperatures over the entire period 1950 and 2019 for each month (January, February, etc.). Indeed, +> this period of time is sufficiently long for computing monthly climatological temperature (more than 30 years). +> > ### {% icon question %} Questions +> > +> > 1. What is the warmest summer month e.g. between June, July and August (JJA) in Paris? +> > 2. What is the coolest winter month e.g. between December, January and February (DJF) in Paris? +> > +> > > ### {% icon solution %} Solution +> > > 1. The warmest summer month in Paris is July (19.921018171429 degrees celcius). However, it is interesting to remark that on our dataset we see very little difference in the mean temperature between July and August. +> > > 2. The coolest winter month in Paris is January (4.4669169722484 degrees celcius). +> > > +> > > Below, we show you how we found these results. +> > > We will first split all the dates (first column) from YYYY-MM-DD (where YYYY is the year, MM the month and DD the day) to three column to get 3 columns: one for the year, one for the month and one for the day. Use **Text reformatting with awk** {% icon tool %} with parameters: +> > > - **File to process**: `tg_ens_mean_0.1deg_reg_v20.0e_Paris_daily.csv` +> > > - **AWK Program**: `gsub(/-/,"\t",$1){$1=$1} {print}` +> > > +> > > Rename the resulting file to `split_dates_Paris.csv`. +> > > +> > > Then use **Datamash** {% icon tool %} with the following parameters: +> > > - {% icon param-file %} *"Input tabular dataset"*: `split_dates_Paris.csv` +> > > - *"Group by fields"*: 2 +> > > - *"Input file has a header line"*: `Yes` +> > > - *"Print header line"*: `No` +> > > - "Print all fields from input file": `No` +> > > - In *"Operation to perform on each group"*: +> > > - {% icon param-repeat %} *"Insert Operation to perform on each group"* +> > > - *"Type"*: `Mean` +> > > - *"On column"*: `c4` +> > > +> > > Rename the resulting file to `climatology_Paris.csv`. +> > > Then use again **Datamash** to get the month where the minimum and maximum temperatures are found: +> > > - {% icon param-file %} *"Input tabular dataset"*: `climatology_Paris.csv` +> > > - *"Group by fields"*: +> > > - *"Input file has a header line"*: `Yes` +> > > - *"Print header line"*: `No` +> > > - "Print all fields from input file": `Yes` +> > > - In *"Operation to perform on each group"*: +> > > - {% icon param-repeat %} *"Insert Operation to perform on each group"* +> > > - *"Type"*: `minimum` +> > > - *"On column"*: `c2` +> > > +> > > Look at the resulting file and the first field will give you the month (07 e.g. July) where the maximum temperature is found. +> > > +> > > For the **maximum**, repeat **Datamash** {% icon tool %} with the following parameters: +> > > - {% icon param-file %} *"Input tabular dataset"*: `climatology_Paris.csv` +> > > - *"Group by fields"*: `` +> > > - *"Input file has a header line"*: `Yes` +> > > - *"Print header line"*: `No` +> > > - "Print all fields from input file": `Yes` +> > > - In *"Operation to perform on each group"*: +> > > - {% icon param-repeat %} *"Insert Operation to perform on each group"* +> > > - *"Type"*: `maximum` +> > > - *"On column"*: `c2` +> > > +> > > The result is in the first column of the resulting file which indicates `01` e.g. January. +> > > +> > > Please note that you may use other Galaxy tools to reach the same results. +> > > Results can be slightly different when using different source of climate information. However, you will always observe the same pattern e.g. cool month in winter and warm month on summer. We can also clearly see that Paris has a mild climate with on average no extreme temperatures. +> > {: .solution} +> {: .question} +> +{: .hands_on} + +> ### {% icon tip %} Tip: Using existing climatologies +> +> In this tutorial, we compute manually the monthly climatological temperatures to explain you the algorithm used behing. +> However, many data providers have pre-computed climatologies and can be directly downloaded. For instance, on the [CDS](https://cds.climate.copernicus.eu/cdsapp#!/search?type=dataset), climatologies are provided for [Essential climate variables for assessment of climate variability from 1979 to present](https://cds.climate.copernicus.eu/cdsapp#!/dataset/ecv-for-climate-change?tab=overview). +{: .tip} + + +## Yearly average + +> ### {% icon hands_on %} Hands-on: What is the trend (cooling/warming) in the climate for Paris between 1950 and 2019? +> +> To answer to this question, we will compute yearly mean of the temperature in Paris and visualize it. +> +> 1. Use **Datamash** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input tabular dataset"*: `split_dates_Paris.csv` +> - *"Group by fields"*: 1 +> - *"Input file has a header line"*: `Yes` +> - *"Print header line"*: `No` +> - "Print all fields from input file": `No` +> - *"Sort input"*: `Yes` +> - In *"Operation to perform on each group"*: +> - {% icon param-repeat %} *"Insert Operation to perform on each group"* +> - *"Type"*: `Mean` +> - *"On column"*: `c4` +> +> 2. Rename the resulting file to `yearly_mean_Paris.csv`. +> +> 3. To make a plot, you can use **Scatterplot w ggplot2** {% icon tool %} with the following parameters: +> - *"Input in tabular format"*: `yearly_mean_Paris.csv` +> - *"Column to plot on x-axis"*: 1 +> - *"Column to plot on y-axis"*: 2 +> - *"Plot title"*: Yearly mean temperature in Paris from 1950 to 2019 +> - *"Label for x axis"*: Year (YYYY) +> - *"Label for y axis"*: Temperature (degrees celcius) +> - And finally in `Advanced Options` change `Type of plot` to **Points and Lines**. +> +> 4. **View** {% icon galaxy-eye%} the resulting plot: +> +> ![Yearly mean temperature in Paris](../../images/yearly_mean_temperature_Paris.png) +> +> > ### {% icon question %} Questions +> > +> > Can we easily observe a trend? +> > +> > > ### {% icon solution %} Solution +> > > +> > > The plot clearly shows a slight increase in the yearly mean temperature between 1950 and 2019. Even though it looks no more than a few degrees celcius, it is +> > > quite significant. +> > > +> > {: .solution} +> {: .question} +> +{: .hands_on} + +## Anomalies + +In climate change studies, temperature **anomalies** are more important than **absolute** temperature. A temperature anomaly is the difference from an average, or baseline, +temperature. The baseline temperature is typically computed by averaging 30 or more years of temperature data. A *positive anomaly* indicates the observed temperature was *warmer* than the baseline, while a *negative anomaly* indicates the observed temperature was *cooler* than the baseline. + +> ### {% icon hands_on %} Hands-on: Climate stripes for Paris +> Computing temperature anomalies is out of scope of this tutorial and we will therefore use pre-computed temperature anomalies `ts_cities.csv`. +> A simple way to visualize anomalies and highlight cooling/warming over the years, is to use **climate stripes from timeseries** {% icon tool %} with the following parameters: +> - *"timeseries to plot"*: `ts_cities.csv` +> - *"column name to use for plotting"*: `tg_anomalies_paris` +> - *"plot title"*: `Climate stripes for Paris (1950-2019)` +> +> **View** {% icon galaxy-eye%} the resulting plot: +> +> ![Climate stripes in Paris](../../images/climate_stripes_temperature_Paris.png) +> +> > ### {% icon question %} Question: do you observe a warming or cooling between 1950 and 2019? +> > +> > > ### {% icon solution %} Solution +> > > +> > > The climate stripes clearly show a warming between 1950 and 2019. +> > {: .solution} +> {: .question} +> +{: .hands_on} + +> ### {% icon tip %} Tip: Copernicus Climate Bulletin +> +> [Copernicus Climate Bulletins](https://climate.copernicus.eu/climate-bulletins) presents the current condition of the climate using key climate change indicators. +> They also provide data, analysis of the maps and guidance on how they are produced. Datasets for temperature anomalies can be found and are +> regularly updated (with recent dates). For instance, in March 2020, the corresponding dataset can be found [here](https://climate.copernicus.eu/sites/default/files/2020-04/ts_1month_anomaly_Global_ea_2t_202003_v01.csv). +> +{: .tip} + +# Climate variables + +*Temperature* is often the first variable that comes to mind when we talk about climate. However, it is insufficient to fully characterize the climate, and scientists have agreed on a number of variables to systematically observe Earth`s changing climate. + +That is what we call *Essential Climate Variables*. + +## Essential Climate Variables + +The [Global Climate Observing System](https://gcos.wmo.int/) (GCOS) and its GCOS expert panels maintain definitions of [Essential Climate Variables](https://gcos.wmo.int/en/essential-climate-variables) (ECVs). + +GCOS is co-sponsored by the [World Meteorological Organization](https://public.wmo.int/en) (WMO), the [Intergovernmental Oceanographic Commission of the United Nations Educational, Scientific and Cultural Organization](http://www.ioc-unesco.org/) (IOC-UNESCO), the [United Nations Environment Programme](https://www.unenvironment.org/) (UN Environment), and the [International Science Council](https://council.science/) (ISC). It regularly assesses the status of global climate observations of the atmosphere, land and ocean and produces guidance for its improvement. + +At the moment, there are [54 ECVs](https://gcos.wmo.int/en/essential-climate-variables). + +*Source: [https://gcos.wmo.int/en/essential-climate-variables](https://gcos.wmo.int/en/essential-climate-variables)* + +> ### {% icon hands_on %} Hands-on: Essential Climate Variables +> +> We will look at the [Water Vapor Essential Climate Variable ](https://gcos.wmo.int/en/essential-climate-variables/surface-vapour/): +> *The humidity of air near the surface of the Earth affects the comfort and health of humans, livestock and wildlife, the swarming behaviour of insects and the occurrence of plant disease. The humidity of air near the surface affects evaporation and the strength of the hydrological and energy cycles. Evaporation from the surface of the earth is the source of water in the atmosphere and so is responsible for important feedbacks in the climate system due to clouds and radiation.* +> +> 1. **Copernicus Essential Climate Variables** {% icon tool %} with the following parameters: +> - *"Variable(s)"*: surface_air_relative_humidity +> - *"Select type of data"*: Monthly mean +> - *"Select year(s)"*: `1980` and `2018` +> - *"Select month"*: `July` +> Rename the resulting file to `rh_mean_july_1980_2018.nc` +> 2. **map plot gridded (lat/lon) netCDF data** {% icon tool %} with the following parameters: +> - *"input with geographical coordinates (netCDF format)"*: `rh_mean_july_1980_2018.nc` +> - *"variable name as given in the netCDF file": `tp` +> - And finally in `Advanced Options` change: +> - *"multiple times"*: `Yes` +> - *"comma separated list of indexes for fields to plot"*: 0,1 +> - *"number of rows for subplot grid"*: 2 +> - *"subplot title (repeated on each subplot)"*: relative humidity in percentage +> - *"colormap"*: PiYG +> 3. **View** {% icon galaxy-eye%} the resulting plot: +> +> ![Relative humidity in July 1980 and July 2018](../../images/rh_ecv_july_1980_2018.png) +> +> +> > ### {% icon question %} Relative humidity +> > +> > 1. Do you observe any significant changes relative humidity in France from 1979 to 2018? +> > 2. Do we have sufficient information to make any conclusions on the change in climate? +> > +> > > ### {% icon solution %} Solution +> > > 1. We can see significant changes on the plot over France. The relative humidity of air near the surface of the Earth is lower in July 2018 than in July 1980. +> > > 2. We do not have sufficient information to draw any conclusions about the change in climate. In our analysis, we only used two different months (July 1980 and July 2018) and can only discuss the average changes in weather during these two periods (July 1980 and July 2018). We learnt that to draw any conclusions on the climate, we would need to make statistics over a long period of time e.g. we would need to download about 30 years of data and for instance compute anomalies in relative humidity to check if there is any trend. These aspects will be discussed further in other Galaxy tutorials. +> > > +> > {: .solution} +> {: .question} +> +{: .hands_on} + + +## Past, present and future climate? + + +When we talk about climate data, the type of data can vary significantly. We have very little actual observations at the scale of climate and usually not covering a large area. In addition to observations, we can make use of: +- Re-analyses where observations and numerical modelling are combined together. +- Climate models. + +Observations and re-analyses provide information about the past and current climate while climate models can provide past, current and future climate information. +When it comes to future climate, we usually need to make some assumptions (such as how much CO2 emissions, etc.) and simulate different scenarios e.g. we run climate models using different assumptions and look at future trends under each of these scenarios: this is what we call **climate projections**. Climate projections will be discussed in a separate Galaxy tutorial. + + +# Conclusion + +{:.no_toc} + +We have learnt to differentiate climate from weather and got an overview of the terminology used by climate scientists to identify the +various source of climate data. diff --git a/topics/climate/tutorials/panoply/tutorial.md b/topics/climate/tutorials/panoply/tutorial.md index 4712c1aae25dd3..97a51f9989fccd 100644 --- a/topics/climate/tutorials/panoply/tutorial.md +++ b/topics/climate/tutorials/panoply/tutorial.md @@ -1,6 +1,5 @@ --- layout: tutorial_hands_on -enable: false title: Visualize Climate data with Panoply netCDF viewer zenodo_link: 'https://doi.org/10.5281/zenodo.3695482' questions: @@ -84,9 +83,17 @@ In this tutorial, we will be using data from the [Copernicus Climate Data Store] > > 3. Check that the datatype is **netcdf** > +> Files you uploaded are in netcdf format. In Galaxy, Datatypes are, by default, automatically guessed. Here, as necdf is a derivative of the h5 format, Galaxy automatically affect the h5 datatype to netcdf files. To cope with that, one can change the datatype manually, once datasets uploaded (as shown below) OR you can directly specify datatype on the upload tool form so Galaxy will not try to automatically guess it. +> > {% include snippets/change_datatype.md datatype="datatypes" %} > -> 4. Add a tag to the dataset corresponding to `copernicus` +> 4. Rename Datasets +> +> As "https://zenodo.org/record/3697454/files/ecv_1979.nc" is not a beautiful name and can give errors for some tools, it is a good practice to change the dataset name by something more meaningfull. For example by removing `https://zenodo.org/record/3697454/files/` to obtain `ecv_1979.nc` and `ecv_2018.nc`, respectively. +> +> {% include snippets/rename_dataset.md %} +> +> 5. Add a tag to the dataset corresponding to `copernicus` > > {% include snippets/add_tag.md %} > @@ -101,7 +108,7 @@ In this tutorial, we will be using data from the [Copernicus Climate Data Store] > Panoply is available as a Galaxy interactive environment and may not be available on all Galaxy servers. > > > ### {% icon tip %} Tip: Launch Panoply in Galaxy -> > Currently Panoply in Galaxy is available on [Live.useGalaxy.eu](https://live.usegalaxy.eu) +> > Currently Panoply in Galaxy is available on useGalaxy.eu instance, on the "Interactive tools" tool panel section or, as all interactive tools, from the dedicated usGalaxy.eu subdomain: [Live.useGalaxy.eu](https://live.usegalaxy.eu) > > > > 1. Open the Panoply tool {% icon tool %} by clicking [here](https://live.usegalaxy.eu/?tool_id=interactive_tool_panoply){:target="_blank"} > > 2. Check **ecv_1979.nc** dataset selected in the netcdf input field @@ -118,11 +125,13 @@ In this tutorial, we will be using data from the [Copernicus Climate Data Store] > ### {% icon hands_on %} Hands-on: Inspect dataset > -> 1. Inspect the sea ice area fraction (**siconc**) +> 1. Inspect dataset content +> +> Here you can look at the dataset (ecv_1979.nc) and related variables (`latitude`, `longitude`, `number`, `siconc`, etc) > > > ### {% icon question %} Question > > -> > what is the unit of this variable? +> > what is the unit of the `sea ice area fraction` variable (**siconc**) variable? > > > > > ### {% icon solution %} Solution > > > diff --git a/topics/computational-chemistry/images/empot.png b/topics/computational-chemistry/images/empot.png new file mode 100644 index 00000000000000..88ddd05bc48091 Binary files /dev/null and b/topics/computational-chemistry/images/empot.png differ diff --git a/topics/computational-chemistry/images/hsp90lig.png b/topics/computational-chemistry/images/hsp90lig.png new file mode 100644 index 00000000000000..66786f2060de84 Binary files /dev/null and b/topics/computational-chemistry/images/hsp90lig.png differ diff --git a/topics/computational-chemistry/images/htmd_analysis_pc1_hsp90.gif b/topics/computational-chemistry/images/htmd_analysis_pc1_hsp90.gif new file mode 100644 index 00000000000000..7821e9e390a229 Binary files /dev/null and b/topics/computational-chemistry/images/htmd_analysis_pc1_hsp90.gif differ diff --git a/topics/computational-chemistry/images/htmd_analysis_pca.png b/topics/computational-chemistry/images/htmd_analysis_pca.png new file mode 100644 index 00000000000000..604ff65df502fb Binary files /dev/null and b/topics/computational-chemistry/images/htmd_analysis_pca.png differ diff --git a/topics/computational-chemistry/images/htmd_analysis_rmsd1_histo.png b/topics/computational-chemistry/images/htmd_analysis_rmsd1_histo.png new file mode 100644 index 00000000000000..02470a68acc13d Binary files /dev/null and b/topics/computational-chemistry/images/htmd_analysis_rmsd1_histo.png differ diff --git a/topics/computational-chemistry/images/htmd_analysis_rmsd1_series.png b/topics/computational-chemistry/images/htmd_analysis_rmsd1_series.png new file mode 100644 index 00000000000000..9003b5d66fcca4 Binary files /dev/null and b/topics/computational-chemistry/images/htmd_analysis_rmsd1_series.png differ diff --git a/topics/computational-chemistry/images/htmd_analysis_rmsd2_histo.png b/topics/computational-chemistry/images/htmd_analysis_rmsd2_histo.png new file mode 100644 index 00000000000000..9f6e681ddb3e2a Binary files /dev/null and b/topics/computational-chemistry/images/htmd_analysis_rmsd2_histo.png differ diff --git a/topics/computational-chemistry/images/htmd_analysis_rmsd2_series.png b/topics/computational-chemistry/images/htmd_analysis_rmsd2_series.png new file mode 100644 index 00000000000000..92f89e928795d2 Binary files /dev/null and b/topics/computational-chemistry/images/htmd_analysis_rmsd2_series.png differ diff --git a/topics/computational-chemistry/images/htmd_analysis_rmsf.png b/topics/computational-chemistry/images/htmd_analysis_rmsf.png new file mode 100644 index 00000000000000..0a8b9ca7103f65 Binary files /dev/null and b/topics/computational-chemistry/images/htmd_analysis_rmsf.png differ diff --git a/topics/computational-chemistry/images/mpro.png b/topics/computational-chemistry/images/mpro.png new file mode 100644 index 00000000000000..509cb6ce180402 Binary files /dev/null and b/topics/computational-chemistry/images/mpro.png differ diff --git a/topics/computational-chemistry/tutorials/cheminformatics/tutorial.md b/topics/computational-chemistry/tutorials/cheminformatics/tutorial.md index 3a77807aa006db..e16421c09656b6 100644 --- a/topics/computational-chemistry/tutorials/cheminformatics/tutorial.md +++ b/topics/computational-chemistry/tutorials/cheminformatics/tutorial.md @@ -163,6 +163,13 @@ We will generate our compound library by searching ChEMBL for compounds which ha There are some other tools available, which will not be used in this tutorial, which help to develop a more focused compound library. For example, the 'Natural product likeness calculator' and 'Drug-likeness' tools assign a score to compounds based on how similar they are to typical natural products and drugs respectively, which could then be used to filter the library. If you are interested, you can try testing them out on the library just generated. +> ### {% icon tip %} Tip: Generating a compound library +> If you try using this tutorial using your own data, you might encounter some issues. Important things to remember: +> * If you encounter an error, check the SMILES file only has a single column. Additional columns can be removed using the 'Cut' tool. +> * If the output file is empty, it may be that the ChEMBL database doesn't have any compounds similar to the input. Consider lowering the Tanimoto coefficient to 70 if this is the case and removing filters (including the Lipinski RO5 filter). If this doesn't help, you will have to use another source of chemical data (e.g. PubChem). +> * Finally, please remember this step is totally optional if you already have a list of compounds for docking (in SMILES or another format). In this case you can upload them to Galaxy and continue with the next step. +{: .tip} + > ### {% icon details %} What are SMILES and SDF formats? > > SMILES and SD-files both represent chemical structures. A SMILES file represents the 2D structure of a molecule as a chemical graph. In other words, it states only the atoms and the connectivity between them. An example of a SMILES string (taken from the ligand in the PDB file) is `c1c2OCCOc2ccc1c1c(C)[nH]nc1c1cc(CC)c(O)cc1O`. For more information on how the notation works, please consult the [OpenSMILES specification](http://opensmiles.org/opensmiles.html) or the description provided by [Wikipedia](https://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system). A more comprehensive alternative to the SMILES system is the International Chemical Identifier (InChI). diff --git a/topics/computational-chemistry/tutorials/cheminformatics/_workflows/_main_workflow._ga b/topics/computational-chemistry/tutorials/cheminformatics/workflows/main_workflow.ga similarity index 100% rename from topics/computational-chemistry/tutorials/cheminformatics/_workflows/_main_workflow._ga rename to topics/computational-chemistry/tutorials/cheminformatics/workflows/main_workflow.ga diff --git a/topics/computational-chemistry/tutorials/covid19-docking/tutorial.bib b/topics/computational-chemistry/tutorials/covid19-docking/tutorial.bib new file mode 100644 index 00000000000000..aeeaacd61ee518 --- /dev/null +++ b/topics/computational-chemistry/tutorials/covid19-docking/tutorial.bib @@ -0,0 +1,103 @@ + +# This is the bibliography file for your tutorial. +# +# To add bibliography (bibtex) entries here, follow these steps: +# 1) Find the DOI for the article you want to cite +# 2) Go to https://doi2bib.org and fill in the DOI +# 3) Copy the resulting bibtex entry into this file +# +# To cite the example below, in your tutorial.md file +# use {% Batut2018 %} + +@article{Batut2018, + doi = {10.1016/j.cels.2018.05.012}, + url = {https://doi.org/10.1016/j.cels.2018.05.012}, + year = {2018}, + month = jun, + publisher = {Elsevier {BV}}, + volume = {6}, + number = {6}, + pages = {752--758.e1}, + author = {B{\'{e}}r{\'{e}}nice Batut and Saskia Hiltemann and Andrea Bagnacani and Dannon Baker and Vivek Bhardwaj and + Clemens Blank and Anthony Bretaudeau and Loraine Brillet-Gu{\'{e}}guen and Martin {\v{C}}ech and John Chilton + and Dave Clements and Olivia Doppelt-Azeroual and Anika Erxleben and Mallory Ann Freeberg and Simon Gladman and + Youri Hoogstrate and Hans-Rudolf Hotz and Torsten Houwaart and Pratik Jagtap and Delphine Larivi{\`{e}}re and + Gildas Le Corguill{\'{e}} and Thomas Manke and Fabien Mareuil and Fidel Ram{\'{i}}rez and Devon Ryan and + Florian Christoph Sigloch and Nicola Soranzo and Joachim Wolff and Pavankumar Videm and Markus Wolfien and + Aisanjiang Wubuli and Dilmurat Yusuf and James Taylor and Rolf Backofen and Anton Nekrutenko and Bj\"{o}rn Gr\"{u}ning}, + title = {Community-Driven Data Analysis Training for Biology}, + journal = {Cell Systems} +} + +@article{OBoyle2011, + doi = {10.1186/1758-2946-3-33}, + url = {https://doi.org/10.1186/1758-2946-3-33}, + year = {2011}, + month = oct, + publisher = {Springer Science and Business Media {LLC}}, + volume = {3}, + number = {1}, + author = {Noel M O{\textquotesingle}Boyle and Michael Banck and Craig A James and Chris Morley and Tim Vandermeersch and Geoffrey R Hutchison}, + title = {Open Babel: An open chemical toolbox}, + journal = {Journal of Cheminformatics} +} + +@article{rdock, + author = {Ruiz-Carmona, Sergio AND Alvarez-Garcia, Daniel AND Foloppe, Nicolas AND Garmendia-Doval, A. Beatriz AND Juhos, Szilveszter AND Schmidtke, Peter AND Barril, Xavier AND Hubbard, Roderick E. AND Morley, S. David}, + journal = {PLOS Computational Biology}, + publisher = {Public Library of Science}, + title = {rDock: A Fast, Versatile and Open Source Program for Docking Ligands to Proteins and Nucleic Acids}, + year = {2014}, + month = {04}, + volume = {10}, + url = {https://doi.org/10.1371/journal.pcbi.1003571}, + pages = {1-7}, + number = {4}, + doi = {10.1371/journal.pcbi.1003571} +} + +@article{transfs, + author = {Scantlebury, Jack et al.}, + publisher = {Biorxiv}, + title = {Dataset Augmentation Allows Deep Learning-Based Virtual Screening To Better Generalise To Unseen Target Classes, And Highlight Important Binding Interactions}, + year = {2019}, + url = {https://www.biorxiv.org/content/10.1101/2020.03.06.979625v1}, +} + +@article{sucos, + author = {Leong, Susan et al.}, + publisher = {Chemrxiv}, + title = {SuCOS is Better than RMSD for Evaluating Fragment Elaboration and Docking Poses}, + year = {2019}, + url = {https://chemrxiv.org/articles/SuCOS_is_Better_than_RMSD_for_Evaluating_Fragment_Elaboration_and_Docking_Poses/8100203/1}, + doi = {10.26434/chemrxiv.8100203.v1} +} + +@article{Ropp2019, + doi = {10.1186/s13321-019-0336-9}, + url = {https://doi.org/10.1186/s13321-019-0336-9}, + year = {2019}, + month = feb, + publisher = {Springer Science and Business Media {LLC}}, + volume = {11}, + number = {1}, + author = {Patrick J. Ropp and Jesse C. Kaminsky and Sara Yablonski and Jacob D. Durrant}, + title = {Dimorphite-{DL}: an open-source program for enumerating the ionization states of drug-like small molecules}, + journal = {Journal of Cheminformatics} +} + +@article{ngl, + author = {Rose, Alexander S and Bradley, Anthony R and Valasatava, Yana and Duarte, Jose M and Prlić, Andreas and Rose, Peter W}, + title = "{NGL viewer: web-based molecular graphics for large complexes}", + journal = {Bioinformatics}, + volume = {34}, + number = {21}, + pages = {3755-3758}, + year = {2018}, + month = {05}, + abstract = "{The interactive visualization of very large macromolecular complexes on the web is becoming a challenging problem as experimental techniques advance at an unprecedented rate and deliver structures of increasing size.We have tackled this problem by developing highly memory-efficient and scalable extensions for the NGL WebGL-based molecular viewer and by using Macromolecular Transmission Format (MMTF), a binary and compressed MMTF. These enable NGL to download and render molecular complexes with millions of atoms interactively on desktop computers and smartphones alike, making it a tool of choice for web-based molecular visualization in research and education.The source code is freely available under the MIT license at github.com/arose/ngl and distributed on NPM (npmjs.com/package/ngl). MMTF-JavaScript encoders and decoders are available at github.com/rcsb/mmtf-javascript.}", + issn = {1367-4803}, + doi = {10.1093/bioinformatics/bty419}, + url = {https://doi.org/10.1093/bioinformatics/bty419}, + eprint = {https://academic.oup.com/bioinformatics/article-pdf/34/21/3755/26147052/bty419.pdf}, +} \ No newline at end of file diff --git a/topics/computational-chemistry/tutorials/covid19-docking/tutorial.md b/topics/computational-chemistry/tutorials/covid19-docking/tutorial.md new file mode 100644 index 00000000000000..d1b46abdfacbb7 --- /dev/null +++ b/topics/computational-chemistry/tutorials/covid19-docking/tutorial.md @@ -0,0 +1,347 @@ +--- +layout: tutorial_hands_on + +title: Virtual screening of the SARS-CoV-2 main protease with rDock and pose scoring +level: Intermediate +zenodo_link: 'https://zenodo.org/record/3730474' +questions: +- How can candidate ligands be generated and docked to a protein in Galaxy? +- How can the poses of the docked ligands be evaluated? +- How can a workflow for drug virtual screening be constructed in Galaxy? +objectives: +- Understand how Galaxy was used to perform docking and pose scoring on the SARS-CoV-2 main protease (MPro). +- Replicate the study on a (very) small scale +- Gain familiarity with the docking and scoring techniques involved. +time_estimation: 2H # Just 1 week (if you have 5000 CPUs) ;) +key_points: +- Galaxy can support large, rapid studies in computational chemistry +- Protein-ligand docking contributes to the discovery of new drugs +requirements: + - + type: "internal" + topic_name: computational-chemistry + tutorials: + - cheminformatics +tags: +- covid19 +contributors: +- simonbray + +--- + +# Introduction +{:.no_toc} + +This tutorial provides a companion to the work performed in March 2020 by InformaticsMatters, the Diamond Light Source, and the European Galaxy Team to perform virtual screening on candidate ligands for the SARS-CoV-2 main protease (MPro). This work is described [here](https://covid19.galaxyproject.org/cheminformatics). + +In this tutorial, you will perform protein-ligand docking to MPro using rDock ({% cite rdock %}) and score the results using two different methods. The same tools will be used as in the original study, but with a smaller dataset. + +> ### Agenda +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + +# Background + +Early in March 2020, the Diamond Light Source completed a successful fragment screen on MPro, which provided 55 fragment hits (see their [press release](https://www.diamond.ac.uk/covid-19/for-scientists/Main-protease-structure-and-XChem.html) here). In an effort to identify candidate molecules for binding, InformaticsMatters, the XChem group and the European Galaxy team joined forces to construct and execute a Galaxy workflow for performing and evaluating molecular docking on a massive scale. + +An initial list of 41,000 candidate molecules was assembled by using the Fragalysis fragment network to elaborate from the initial fragment hits, as described [here](https://diamondlightsource.atlassian.net/wiki/spaces/FRAG/pages/8323192/The+Astex+Fragment+network). These were used as inputs for the docking and scoring workflow. The workflow consists of the following steps, each of which was carried out using tools installed on the European Galaxy server: +1. Charge enumeration of the 41,000 candidate molecules selected based on the fragment hits. +2. Generation of 3D conformations based on SMILES strings of the candidate molecules. +3. Docking of molecules into each of the MPro structures using rDock. +4. Evaluation of the docking poses using a TransFS, a deep learning approach ({% cite transfs %}) developed by the XChem group and collaborators, and SuCOS scoring ({% cite sucos %}), which compares the poses with the structures of the original fragment hits. + +The original study required almost 20 years of CPU time, not counting GPU resources consumed. This is obviously not reproducible as a tutorial. Therefore, we will repeat the workflow with a small library of just 100 molecules, on a single MPro fragment structure. Links will be provided to original Galaxy histories, with notes to explain where and why things were done differently to the tutorial. + +![MPro structure, with a fragment bound]({% link topics/computational-chemistry/images/mpro.png %} "Structure of MPro, with a fragment bound. <a href="https://usegalaxy.eu/u/sbray/v/mpro-x0072">Click to view</a> in NGL. ({% cite ngl %})") + +# Get data + +We require three datasets for the simulation and analysis: +1. A list of 100 ligand candidates. These are the molecules which will be docking into the protein binding site. +2. A PDB file of the receptor MPro protein (without ligand or solvent). +3. A list of fragment hits (17 in total) in SDF format. + +> ### {% icon details %} Differences with the original study +> +> Of the initial 55 fragment hits, 17 were chosen for further study. From these, 41,587 compounds were generated using the Fragalysis fragment network for further study. The 100 compounds used in the tutorial are taken from this list. +> +> +> Starting data is available from this Galaxy history: [https://usegalaxy.eu/u/sbray/h/mpro-raw-data](https://usegalaxy.eu/u/sbray/h/mpro-raw-data). +> +> +> This history contains 103 files. One of these (`Initial candidates for docking`) contains the 41k candidate compounds in SMILES format. The remaining 102 files (all with names beginning with `Mpro-x...`) provide structural information on the fragment hits - 6 files per hit (hence 17 x 6 = 102). +> +> +> The identity of the files is as follows: +> +> - the `*_0.mol` files contain the fragment structure in mol format. +> - the `*_0.pdb` files contain the fragment structure in pdb format. +> - the `*_0_apo.pdb` files contain the protein with solvent, but without ligand +> - the `*_0_apo-desolv.pdb` files contain the protein without either solvent or ligand +> - the `*_0_apo-solv.pdb` files contain only solvent +> - the `*_0_bound.pdb` file contain everything (protein, ligand and solvent) +> +> The PDB file of the receptor that we are using is `Mpro-x0195_0_apo-desolv.pdb`. In other words, the structure is derived from just one fragment hit. In the original study, however, all compounds were docked against all of the fragment hit structures. +{: .details} + +> ### {% icon hands_on %} Hands-on: Data upload +> +> 1. Create a new history for this tutorial +> 2. Import the files from [Zenodo](https://zenodo.org/record/3730474): +> +> ``` +> https://zenodo.org/record/3730474/files/candidates.smi +> https://zenodo.org/record/3730474/files/Mpro-x0195_0_apo-desolv.pdb +> https://zenodo.org/record/3730474/files/hits.sdf +> ``` +> +> {% include snippets/import_via_link.md %} +> +> 3. Rename the datasets `Candidates SMILES`, `Receptor PDB` and `Hits SDF` respectively. +> 4. Check that the datatypes (`smi`, `pdb`, and `sdf` respectively) are correct. In particularly, check the `Candidates SMILES` file, as the SMILES datatype is not detected automatically by Galaxy. +> +> {% include snippets/change_datatype.md datatype="datatypes" %} +{: .hands_on} + +# Preparation for docking + +Before docking, the candidate ligands need to be prepared for docking with the following steps: 1) charge enumeration, 2) generation of three-dimensional structures, and 3) splitting the SD-file into a collection. + +> ### {% icon details %} Differences with the original study +> +> This stage is carried out as described here, except of course with the full set of 42,000 compounds. See [here](https://covid19.galaxyproject.org/cheminformatics/1-DockingPrep/) for more details. +{: .details} + +## Charge enumeration + +Many of the compounds may contain functional groups which can exist in multiple charge states, and this will affect the quality of binding to the receptor dramatically. Therefore, we perform 'charge enumeration', which means that we generate all charge forms of the compounds within a certain pH range. + +> ### {% icon hands_on %} Hands-on: Charge enumeration +> +> 1. **Enumerate changes** {% icon tool %} with the following parameters: +> - *"Input molecule data"*: `Candidate SMILES` +> - *"Minimum pH"*: `4.4` +> - *"Maximum pH"*: `10.4` +> 2. Rename the output file `Enumerated candidates SMILES`. +> +> > ### {% icon comment %} Comment +> > +> > The **Enumerate charges** {% icon tool %} tool is based on the Dimorphite-DL program. ({% cite Ropp2019 %}) +> {: .comment} +> +{: .hands_on} + +The output is another SMILES file, with several hundred entries. + +## Generate three-dimensional conformations + +So far our list of enumerated candidate compounds is still in SMILES format; we need to produce three-dimensional structures in SDF format for docking. This can be done with the **Compound conversion** {% icon tool %} tool. + +If you are not familiar with SMILES and SDF formats, consult the introductory [protein-ligand docking tutorial](../cheminformatics/tutorial.html) for more details. + +> ### {% icon hands_on %} Hands-on: Convert to SDF format +> +> 1. **Compound conversion** {% icon tool %} with the following parameters: +> - *"Molecular input file"*: `Enumerated candidates` dataset. +> - *"Output format"*: `MDL MOL format (sdf, mol)` +> - *"Generate 3D coordinates"*: `Yes` +> 2. Rename the output file `Enumerated candidates SDF`. +> +> > ### {% icon comment %} Comment +> > +> > The **Compound conversion** {% icon tool %} tool is based on the OpenBabel toolkit. ({% cite OBoyle2011 %}) +> {: .comment} +> +{: .hands_on} + +## Splitting the SD-file into a collection + +The next stage is to split the SD-file with the candidate ligands into a set of smaller SD-files. + + +> ### {% icon question %} Questions +> +> Why is splitting the file necessary? +> +> > ### {% icon solution %} Solution +> > +> > The rDock tool performs one docking at a time (more technically: the task is not parallelized, as it uses only a single CPU). Therefore, splitting the large SD-file into many small files allows the work to be carried out by multiple Galaxy jobs in parallel, so it completes faster. +> > +> > In the original study, this kind of parallelization was absolutely essential because of the enormous dataset; at some points, there were 5,000 docking jobs running concurrently on the European Galaxy server. Even on the much smaller scale of this tutorial, we can speed things up considerably using this trick. +> > +> {: .solution} +{: .question} + +> ### {% icon hands_on %} Hands-on: Split the SD-files +> +> 1. **Split file to dataset collection** {% icon tool %} with the following parameters: +> - *"Select the file type to split"*: `SD-files` +> - *"SD-file to split"*: `Enumerated candidates SDF` +> - *"Specify number of output files or number of records per file?"*: `Number of output files` +> - *"Number of new files"*: `10` +> - *"Method to allocate records to new files"*: `Alternate output files` +> +> +{: .hands_on} + +# Active site preparation + +The active site also needs to be prepared for docking, using the following steps: 1) conversion to MOL2 format, and 2) generation of the active site using the **rbcavity** {% icon tool %} tool. + +> ### {% icon details %} Differences with the original study +> +> This stage was carried out as described here. However, it was repeated for each of the fragment hit structures, not just the `Mpro-x0195_0_apo-desolv.pdb` file used here. See [here](https://covid19.galaxyproject.org/cheminformatics/2-ActiveSitePrep/) for more details. +{: .details} + +## Convert protein structure to MOL2 format + +The receptor file we are using is in PDB format, but the rDock tool we use for docking requires an input in MOL2 format. Therefore, we first convert the file. + +> ### {% icon hands_on %} Hands-on: Conversion to MOL2 format +> +> 1. **Compound conversion** {% icon tool %} with the following parameters: +> - *"Molecular input file"*: `Receptor PDB` dataset. +> - *"Output format"*: `Sybyl Mol2 format (mol2)` +> 2. Rename the output file `Receptor MOL2`. +> +> +{: .hands_on} + +## Generate Frankenstein ligand + +For docking with rDock, a file needs to be created defining the active site. This requires two input files - one for the protein and one for the ligand. We want an active site generation that takes into account the features of all 17 fragments, and therefore need to generate a 'Frankenstein ligand' which possesses the properties of all the fragments. A very simple Galaxy tool is available for this. + +> ### {% icon question %} Questions +> +> What is a 'Frankenstein ligand' and why do we need it? +> +> > ### {% icon solution %} Solution +> > +> > The Frankenstein ligand combines the atoms of all the fragments and therefore occupies the entire space of the binding site. Therefore, it is the best choice for cavity definition. See the [information provided by InformaticsMatters](https://www.informaticsmatters.com/blog/2018/11/23/cavities-and-frankenstein-molecules.html) for more details. +> > +> {: .solution} +> +{: .question} + +> ### {% icon hands_on %} Hands-on: Generate Frankenstein ligand +> +> 1. **Create Frankenstein ligand** {% icon tool %} with the following parameters: +> - *"Input file"*: `Hits SDF` +> 2. Rename the file to `Frankstein SDF`. +> +{: .hands_on} + +## Generate active site definition + +The active site can now be generated using the **rbcavity** {% icon tool %} tool, which requires the receptor in MOL2 format as input as well as a single reference ligand in Mol/SDF format. We use the Frankenstein ligand as the reference. + +> ### {% icon hands_on %} Hands-on: Active site preparation +> +> 1. **rDock cavity definition** {% icon tool %} with the following parameters: +> - *"Receptor"*: `Receptor MOL2` +> - *"Reference ligand"*: `Frankenstein SDF` +> - *"Mapper sphere radius"*: `3.0` +> - *"Mapper small sphere radius"*: `1.0` +> - *"Mapper minimum volume"*: `100` +> - *"Mapper volume increment"*: `0` +> - *"Mapper grid step"*: `0.5` +> - *"Cavity weight"*: `1.0` +> +> 2. Rename the output file `Active site`. +> > ### {% icon comment %} Comment +> > +> > The meanings of these parameters are too complex to go into in this tutorial. If you are interested, see the [rDock documentation](http://rdock.sourceforge.net/wp-content/uploads/2015/08/rDock_User_Guide.pdf) for more details. +> {: .comment} +> +{: .hands_on} + +# Docking and scoring + +Docking and scoring are now performed, using the following steps: 1) docking using rDock, 2) recombining the results into a single SDF file, 3) TransFS scoring, and 4) SuCOS scoring. + +> ### {% icon details %} Differences with the original study +> +> This section in the original study differed from this tutorial in the following ways: +> 1. Docking was performed on over 100,000 enumerated candidates, rather than the 300 used here. +> 2. 25 different poses were generated per candidate, rather than 5, as in this tutorial. +> 3. Because of the large number of poses to score (more than a million), the scoring steps were parallelized by splitting into collections. This is skipped in the tutorial. +> 4. The entire process was repeated 17 times, using a different fragment hit as the receptor structure each time. +> See [here](https://covid19.galaxyproject.org/cheminformatics/3-Docking/) and [here](https://covid19.galaxyproject.org/cheminformatics/3-Docking/) for more details. A full list of Galaxy histories generated is listed [here](https://covid19.galaxyproject.org/cheminformatics/Histories/). +{: .details} + +## Docking with rDock + +> ### {% icon hands_on %} Hands-on: Docking +> +> 1. **rDock docking** {% icon tool %} with the following parameters: +> - *"Receptor"*: `Receptor MOL2` +> - *"Active site"*: `Active site` +> - *"Ligands"*: `Split file` collection +> - *"Number of dockings"*: `5` +> - *"Number of best poses"*: `5` +> +> > ### {% icon comment %} Comment +> > +> > For more information about docking, check out the [introductory tutorial](../cheminformatics/tutorial.html). It uses a different tool, AutoDock Vina, rather than rDock, but the general principles are the same. +> {: .comment} +> +{: .hands_on} + +## Collapse collection to a single file + +Having created a collection to parallelize the docking procedure, we can now recombine the results to a single file. + +> ### {% icon hands_on %} Hands-on: Collapse collection +> +> 1. **Collapse Collection** {% icon tool %} with the following parameters: +> - *"Collection of files to collapse into single dataset"*: Output of docking step +> 2. Rename to `Docked poses SDF`. +> +{: .hands_on} + +The output file should contain around 1,900 docked poses in SDF format. + +## Pose scoring with TransFS + +In this step, we carry out scoring of the poses using TransFS. This is a deep learning approach developed at the University of Oxford, employing augmentation of training data with incorrectly docked ligands to prompt the model to learn from protein-ligand interactions. ({% cite transfs %}) + +The TransFS scoring returns a value (saved as `<TransFSScore>` in the SDF file) between 0 (poor) and 1 (good). + +> ### {% icon hands_on %} Hands-on: TransFS scoring +> +> 1. **XChem TransFS pose scoring** {% icon tool %} with the following parameters: +> - *"Receptor"*: `Receptor PDB` +> - *"Ligands"*: `Docked poses SDF` +> - *"Distance to waters"*: `2` +> +{: .hands_on} + +## Pose scoring with SuCOS + +This step involves scoring of the poses from each molecule against the original fragment screening hit ligands using the SuCOS MAX shape and feature overlay algorithm. ({% cite sucos %}) The conformation and position of the poses are compared to known structures (i.e. the fragment hits) to determine a score. + +SuCOS scoring returns a value (saved as `<Max_SuCOS_Score>` in the SDF file) between 0 (poor) and 1 (good). + +> ### {% icon hands_on %} Hands-on: SuCOS scoring +> +> 1. **Max SuCOS score** {% icon tool %} with the following parameters: +> - *"Ligands to be scored"*: Output of the TransFS step +> - *"Set of clusters to score against"*: `Hits SDF` +> 2. Rename the output file to `Scored poses`. +{: .hands_on} + +# Compound selection + +The aim of the original study was to select 500 candidate molecules for synthesis and experimental study. In order to do this, the data for all fragment hits had to be combined (i.e. so that each compound was assigned the lowest score from all the fragments). The resulting table was then compared with a list of compounds available from [Enamine](https://enamine.net/) and [Chemspace](https://chem-space.com/) and the 500 highest scoring matching compounds were selected for purchase. + +This step is skipped in the tutorial, as only 100 compounds were tested, using only a single fragment hit structure. If you want, though, check out the [history](https://usegalaxy.eu/u/timdudgeon/h/top-500-enamine--chemspace-bb) and [workflow](https://usegalaxy.eu/u/timdudgeon/w/filter-results) used. + +# Conclusion +{:.no_toc} + +This tutorial guided you through docking and scoring of a small set of compounds to the MPro protein. Hopefully, you have a better understanding of how docking can be practically used, as well as how the original study was performed. diff --git a/topics/computational-chemistry/tutorials/covid19-docking/workflows/index.md b/topics/computational-chemistry/tutorials/covid19-docking/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/computational-chemistry/tutorials/covid19-docking/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/computational-chemistry/tutorials/covid19-docking/workflows/workflow.ga b/topics/computational-chemistry/tutorials/covid19-docking/workflows/workflow.ga new file mode 100644 index 00000000000000..47f232724aaa51 --- /dev/null +++ b/topics/computational-chemistry/tutorials/covid19-docking/workflows/workflow.ga @@ -0,0 +1,669 @@ +{ + "uuid":"1c4462a7-0da3-40cb-be85-15a74be5d8ec", + "tags":[ + "computational-chemistry" + ], + "format-version":"0.1", + "name":"Virtual screening of the SARS-CoV-2 main protease with rDock and pose scoring (imported from uploaded file)", + "version":3, + "steps":{ + "0":{ + "tool_id":null, + "tool_version":null, + "outputs":[ + + ], + "workflow_outputs":[ + { + "output_name":"output", + "uuid":"cdab037e-aee1-49b8-a998-cd9fe7ddcdb7", + "label":null + } + ], + "input_connections":{ + + }, + "tool_state":"{\"name\": \"Candidates\"}", + "id":0, + "uuid":"47bf8c53-ae1e-4af6-bece-6adfd74b627c", + "errors":null, + "name":"Input dataset", + "label":"Candidates", + "inputs":[ + { + "name":"Candidates", + "description":"" + } + ], + "position":{ + "top":200, + "left":218 + }, + "annotation":"", + "content_id":null, + "type":"data_input" + }, + "1":{ + "tool_id":null, + "tool_version":null, + "outputs":[ + + ], + "workflow_outputs":[ + { + "output_name":"output", + "uuid":"1fd1c624-37c6-4874-b863-a40eac5e4994", + "label":null + } + ], + "input_connections":{ + + }, + "tool_state":"{\"name\": \"Mpro-x0195_0_apo-desolv.pdb\"}", + "id":1, + "uuid":"156f4aeb-d160-456a-974e-7884b79cb83a", + "errors":null, + "name":"Input dataset", + "label":"Mpro-x0195_0_apo-desolv.pdb", + "inputs":[ + { + "name":"Mpro-x0195_0_apo-desolv.pdb", + "description":"" + } + ], + "position":{ + "top":289.76666259765625, + "left":218 + }, + "annotation":"", + "content_id":null, + "type":"data_input" + }, + "2":{ + "tool_id":null, + "tool_version":null, + "outputs":[ + + ], + "workflow_outputs":[ + { + "output_name":"output", + "uuid":"1c8fb3cc-52ad-4f62-a00d-80b14b2c1d4a", + "label":null + } + ], + "input_connections":{ + + }, + "tool_state":"{\"name\": \"hits.sdf\"}", + "id":2, + "uuid":"dd2d3bc0-8138-4e66-b2d9-e5e90e27b659", + "errors":null, + "name":"Input dataset", + "label":"hits.sdf", + "inputs":[ + { + "name":"hits.sdf", + "description":"" + } + ], + "position":{ + "top":400.5333251953125, + "left":218 + }, + "annotation":"", + "content_id":null, + "type":"data_input" + }, + "3":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/bgruening/enumerate_charges/enumerate_charges/0.1", + "tool_version":"0.1", + "outputs":[ + { + "type":"smi", + "name":"output" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "input":{ + "output_name":"output", + "id":0 + } + }, + "tool_state":"{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"min_ph\": \"\\\"4.4\\\"\", \"max_ph\": \"\\\"10.4\\\"\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id":3, + "tool_shed_repository":{ + "owner":"bgruening", + "changeset_revision":"2a868592ebcb", + "name":"enumerate_charges", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"73172813-0c22-4d96-846e-c5dbe6702fce", + "errors":null, + "name":"Enumerate changes", + "post_job_actions":{ + "HideDatasetActionoutput":{ + "output_name":"output", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":200, + "left":478.76666259765625 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/bgruening/enumerate_charges/enumerate_charges/0.1", + "type":"tool" + }, + "4":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/bgruening/openbabel_compound_convert/openbabel_compound_convert/2.4.2.2.0", + "tool_version":"2.4.2.2.0", + "outputs":[ + { + "type":"text", + "name":"outfile" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "infile":{ + "output_name":"output", + "id":1 + } + }, + "tool_state":"{\"__page__\": null, \"dative_bonds\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null, \"appendtotitle\": \"\\\"\\\"\", \"remove_h\": \"\\\"false\\\"\", \"oformat\": \"{\\\"__current_case__\\\": 41, \\\"gen2d\\\": \\\"false\\\", \\\"gen3d\\\": \\\"false\\\", \\\"mol2_ignore_res\\\": \\\"false\\\", \\\"oformat_opts_selector\\\": \\\"mol2\\\"}\", \"ph\": \"\\\"-1.0\\\"\", \"unique\": \"{\\\"__current_case__\\\": 0, \\\"unique_opts_selector\\\": \\\"\\\"}\", \"infile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"split\": \"\\\"false\\\"\"}", + "id":4, + "tool_shed_repository":{ + "owner":"bgruening", + "changeset_revision":"b59c91adeac1", + "name":"openbabel_compound_convert", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"af4592e4-64e6-40ed-bd1f-9494dcdc7652", + "errors":null, + "name":"Compound conversion", + "post_job_actions":{ + "HideDatasetActionoutfile":{ + "output_name":"outfile", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":321.76666259765625, + "left":478.76666259765625 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/bgruening/openbabel_compound_convert/openbabel_compound_convert/2.4.2.2.0", + "type":"tool" + }, + "5":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/bgruening/ctb_frankenstein_ligand/ctb_frankenstein_ligand/0.1.1", + "tool_version":"0.1.1", + "outputs":[ + { + "type":"sdf", + "name":"outfile" + } + ], + "workflow_outputs":[ + { + "output_name":"outfile", + "uuid":"53c557af-d5b9-4033-be54-7c197591e750", + "label":null + } + ], + "input_connections":{ + "infile":{ + "output_name":"output", + "id":2 + } + }, + "tool_state":"{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"infile\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\"}", + "id":5, + "tool_shed_repository":{ + "owner":"bgruening", + "changeset_revision":"8e214e52e461", + "name":"ctb_frankenstein_ligand", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"081abe35-347a-4244-99ae-ec35329e3de0", + "errors":null, + "name":"Create Frankenstein ligand", + "post_job_actions":{ + + }, + "label":null, + "inputs":[ + { + "name":"infile", + "description":"runtime parameter for tool Create Frankenstein ligand" + } + ], + "position":{ + "top":483.5333251953125, + "left":478.76666259765625 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/bgruening/ctb_frankenstein_ligand/ctb_frankenstein_ligand/0.1.1", + "type":"tool" + }, + "6":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/bgruening/openbabel_compound_convert/openbabel_compound_convert/2.4.2.2.0", + "tool_version":"2.4.2.2.0", + "outputs":[ + { + "type":"text", + "name":"outfile" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "infile":{ + "output_name":"output", + "id":3 + } + }, + "tool_state":"{\"__page__\": null, \"dative_bonds\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null, \"appendtotitle\": \"\\\"\\\"\", \"remove_h\": \"\\\"false\\\"\", \"oformat\": \"{\\\"__current_case__\\\": 58, \\\"gen2d\\\": \\\"false\\\", \\\"gen3d\\\": \\\"true\\\", \\\"oformat_opts_selector\\\": \\\"sdf\\\", \\\"sdf_alias_out\\\": \\\"false\\\", \\\"sdf_exp_h\\\": \\\"false\\\", \\\"sdf_no_prop\\\": \\\"false\\\", \\\"sdf_wedge_bonds\\\": \\\"false\\\"}\", \"ph\": \"\\\"-1.0\\\"\", \"unique\": \"{\\\"__current_case__\\\": 0, \\\"unique_opts_selector\\\": \\\"\\\"}\", \"infile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"split\": \"\\\"false\\\"\"}", + "id":6, + "tool_shed_repository":{ + "owner":"bgruening", + "changeset_revision":"b59c91adeac1", + "name":"openbabel_compound_convert", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"70d0c83d-9255-46e4-95f3-beaa4622f25e", + "errors":null, + "name":"Compound conversion", + "post_job_actions":{ + "HideDatasetActionoutfile":{ + "output_name":"outfile", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":200, + "left":806.5333251953125 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/bgruening/openbabel_compound_convert/openbabel_compound_convert/2.4.2.2.0", + "type":"tool" + }, + "7":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/bgruening/rdock_rbcavity/rdock_rbcavity/0.1", + "tool_version":"0.1", + "outputs":[ + { + "type":"rdock_as", + "name":"activesite" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "receptor":{ + "output_name":"outfile", + "id":4 + }, + "ligand":{ + "output_name":"outfile", + "id":5 + } + }, + "tool_state":"{\"__page__\": null, \"ligand\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"weight\": \"\\\"1.0\\\"\", \"vol_incr\": \"\\\"0.0\\\"\", \"__rerun_remap_job_id__\": null, \"min_volume\": \"\\\"100\\\"\", \"gridstep\": \"\\\"0.5\\\"\", \"sphere\": \"\\\"1.0\\\"\", \"radius\": \"\\\"3.0\\\"\", \"receptor\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id":7, + "tool_shed_repository":{ + "owner":"bgruening", + "changeset_revision":"744a777e9f90", + "name":"rdock_rbcavity", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"f2b86fbe-cbbf-46a8-b588-9f227d83320a", + "errors":null, + "name":"rDock cavity definition", + "post_job_actions":{ + "HideDatasetActionactivesite":{ + "output_name":"activesite", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":361.76666259765625, + "left":806.5333251953125 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/bgruening/rdock_rbcavity/rdock_rbcavity/0.1", + "type":"tool" + }, + "8":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.4.0", + "tool_version":"0.4.0", + "outputs":[ + { + "type":"input", + "name":"list_output_sdf" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "split_parms|input":{ + "output_name":"outfile", + "id":6 + } + }, + "tool_state":"{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"split_parms\": \"{\\\"__current_case__\\\": 4, \\\"input\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"newfilenames\\\": \\\"split_file\\\", \\\"select_allocate\\\": {\\\"__current_case__\\\": 2, \\\"allocate\\\": \\\"byrow\\\"}, \\\"select_ftype\\\": \\\"sdf\\\", \\\"select_mode\\\": {\\\"__current_case__\\\": 1, \\\"mode\\\": \\\"numnew\\\", \\\"numnew\\\": \\\"10\\\"}}\"}", + "id":8, + "tool_shed_repository":{ + "owner":"bgruening", + "changeset_revision":"e77b954f0da5", + "name":"split_file_to_collection", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"ffb7a033-9c35-4276-82f0-49e5e0e19eb9", + "errors":null, + "name":"Split file", + "post_job_actions":{ + "HideDatasetActionlist_output_sdf":{ + "output_name":"list_output_sdf", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":200, + "left":1134.2999877929688 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection/split_file_to_collection/0.4.0", + "type":"tool" + }, + "9":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/bgruening/rdock_rbdock/rdock_rbdock/0.1.4", + "tool_version":"0.1.4", + "outputs":[ + { + "type":"sdf", + "name":"output" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "receptor":{ + "output_name":"outfile", + "id":4 + }, + "ligands":{ + "output_name":"list_output_sdf", + "id":8 + }, + "active_site":{ + "output_name":"activesite", + "id":7 + } + }, + "tool_state":"{\"__page__\": null, \"name\": \"\\\"false\\\"\", \"active_site\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"filter\": \"{\\\"__current_case__\\\": 1, \\\"filter_select\\\": \\\"no_filter\\\"}\", \"num\": \"\\\"5\\\"\", \"custom_rec\": \"{\\\"__current_case__\\\": 1, \\\"custom_rec_select\\\": \\\"false\\\", \\\"flex\\\": \\\"3.0\\\"}\", \"receptor\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"seed\": \"\\\"\\\"\", \"ligands\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "id":9, + "tool_shed_repository":{ + "owner":"bgruening", + "changeset_revision":"a22969b08177", + "name":"rdock_rbdock", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"23c7a051-7e65-48f6-929e-c562c4dbe1cb", + "errors":null, + "name":"rDock docking", + "post_job_actions":{ + "HideDatasetActionoutput":{ + "output_name":"output", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":200, + "left":1413.066650390625 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/bgruening/rdock_rbdock/rdock_rbdock/0.1.4", + "type":"tool" + }, + "10":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "tool_version":"4.2", + "outputs":[ + { + "type":"input", + "name":"output" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "input_list":{ + "output_name":"output", + "id":9 + } + }, + "tool_state":"{\"__page__\": null, \"one_header\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null, \"filename\": \"{\\\"__current_case__\\\": 1, \\\"add_name\\\": \\\"false\\\"}\", \"input_list\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id":10, + "tool_shed_repository":{ + "owner":"nml", + "changeset_revision":"830961c48e42", + "name":"collapse_collections", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"bd5a919a-4c2c-437a-bdd7-e023347ed0f3", + "errors":null, + "name":"Collapse Collection", + "post_job_actions":{ + "HideDatasetActionoutput":{ + "output_name":"output", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":200, + "left":1710.8333740234375 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/nml/collapse_collections/collapse_dataset/4.2", + "type":"tool" + }, + "11":{ + "tool_id":"xchem_pose_scoring", + "tool_version":"0.2.0", + "outputs":[ + { + "type":"sdf", + "name":"output" + }, + { + "type":"txt", + "name":"predictions" + }, + { + "type":"txt", + "name":"inputs_types" + }, + { + "type":"tar", + "name":"output_receptors" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "receptor":{ + "output_name":"output", + "id":1 + }, + "ligands":{ + "output_name":"output", + "id":10 + } + }, + "tool_state":"{\"__page__\": null, \"distance\": \"\\\"2.0\\\"\", \"__rerun_remap_job_id__\": null, \"receptor\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"ligands\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"mock\": \"\\\"\\\"\"}", + "id":11, + "uuid":"5064b254-b27e-4f1f-a019-ed4a6b066d59", + "errors":null, + "name":"XChem TransFS pose scoring", + "post_job_actions":{ + "HideDatasetActionpredictions":{ + "output_name":"predictions", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + }, + "HideDatasetActionoutput_receptors":{ + "output_name":"output_receptors", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + }, + "HideDatasetActionoutput":{ + "output_name":"output", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + }, + "HideDatasetActioninputs_types":{ + "output_name":"inputs_types", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":200, + "left":2038.5999755859375 + }, + "annotation":"", + "content_id":"xchem_pose_scoring", + "type":"tool" + }, + "12":{ + "tool_id":"toolshed.g2.bx.psu.edu/repos/bgruening/sucos_max_score/sucos_max_score/0.2.3", + "tool_version":"0.2.3", + "outputs":[ + { + "type":"sdf", + "name":"output" + } + ], + "workflow_outputs":[ + + ], + "input_connections":{ + "input":{ + "output_name":"output", + "id":11 + }, + "clusters":{ + "output_name":"output", + "id":2 + } + }, + "tool_state":"{\"__page__\": null, \"filter_value\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"filter_field\": \"\\\"\\\"\", \"clusters\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "id":12, + "tool_shed_repository":{ + "owner":"bgruening", + "changeset_revision":"d4c67ced6abc", + "name":"sucos_max_score", + "tool_shed":"toolshed.g2.bx.psu.edu" + }, + "uuid":"9c8db659-3123-40fa-8ae9-a4b9b9751e14", + "errors":null, + "name":"Max SuCOS score", + "post_job_actions":{ + "HideDatasetActionoutput":{ + "output_name":"output", + "action_type":"HideDatasetAction", + "action_arguments":{ + + } + } + }, + "label":null, + "inputs":[ + + ], + "position":{ + "top":200, + "left":2366.36669921875 + }, + "annotation":"", + "content_id":"toolshed.g2.bx.psu.edu/repos/bgruening/sucos_max_score/sucos_max_score/0.2.3", + "type":"tool" + } + }, + "annotation":"Virtual screening of the SARS-CoV-2 main protease with rDock and pose scoring", + "a_galaxy_workflow":"true" +} diff --git a/topics/computational-chemistry/tutorials/htmd-analysis/tutorial.bib b/topics/computational-chemistry/tutorials/htmd-analysis/tutorial.bib new file mode 100644 index 00000000000000..063ae02b5299b2 --- /dev/null +++ b/topics/computational-chemistry/tutorials/htmd-analysis/tutorial.bib @@ -0,0 +1,764 @@ + +# This is the bibliography file for your tutorial. +# +# To add bibliography (bibtex) entries here, follow these steps: +# 1) Find the DOI for the article you want to cite +# 2) Go to https://doi2bib.org and fill in the DOI +# 3) Copy the resulting bibtex entry into this file +# +# To cite the example below, in your tutorial.md file +# use {% Batut2018 %} + +% bmc_article.bib +% +% An example of bibtex entries. +% Entries taken from BMC instructions for authors page. + +% uncomment next line to make author-year bibliography +% @settings{label, options="nameyear"} + +@article{blank, + author = {}, + title = {}, + journal = {}, + year = {}, + month = {}, + volume= {}, + number= {}, + pages = {}, + note = {} +} + +% Article within a journal +@ARTICLE{koon, + author = {Koonin, E V and Altschul, S F and P Bork}, + title = {BRCA1 protein products: functional motifs}, + journal = {Nat Genet}, + year = {1996}, + volume = {13}, + pages = {266-267} +} + +% Article within a journal supplement +@ARTICLE{oreg, + author = {Orengo, C A and Bray, J E and Hubbard, + T and LoConte, L and Sillitoe, I}, + title = {Analysis and assessment of ab initio + three-dimensional prediction, secondary + structure, and contacts prediction}, + journal = {Proteins}, + year = {1999}, + volume = {Suppl 3}, + pages = {149-170} +} + +% In press article +@inpress{khar, + author = {Kharitonov, S A and Barnes, P J}, + title = {Clinical aspects of exhaled nitric oxide}, + journal = {Eur Respir J}, + note = {in press} +} + +% +% Published abstract +% +@ARTICLE{zvai, + author = {Zvaifler, N J and Burger, J A and Marinova-Mutafchieva, + L and Taylor, P and Maini, R N}, + title = {Mesenchymal cells, stromal derived factor-1 and + rheumatoid arthritis [abstract]}, + journal = {Arthritis Rheum}, + year = {1999}, + volume = {42}, + pages = {s250}, +} + + +% +% Article within conference proceedings +% +@Inproceedings{xjon, + author = {X Jones}, + title = {Zeolites and synthetic mechanisms}, + booktitle = {Proceedings of the First National Conference on + Porous Sieves: 27-30 June 1996; Baltimore}, + year = {1996}, + editor = {Y Smith}, + pages = {16-27}, + organization = {Stoneham: Butterworth-Heinemann} +} + +%%%%%%%% +% Book chapter, or article within a book +% +@incollection{schn, + author = {E Schnepf}, + title = {From prey via endosymbiont to plastids: + comparative studies in dinoflagellates}, + booktitle = {Origins of Plastids}, + editor = {R A Lewin}, + publisher = {Chapman and Hall}, + pages = {53-76}, + year = {1993}, + address = {New York}, + volume = {2}, + edition = {2nd} +} + +%%%%%%%% +% Whole issue of journal +% +@wholejournal{pond, + editor = {B Ponder and S Johnston and L Chodosh}, + title = {Innovative oncology}, + journal = {Breast Cancer Res}, + year = {1998}, + volume= {10}, + pages = {1-72} +} + + +%%%%%%%% +% Whole conference proceedings +% +@proceedings{smith, + editor = {Y Smith}, + title = {Proceedings of the First National Conference + on Porous Sieves: 27-30 June 1996; Baltimore}, + year = 1996, + address= {Stoneham}, + publisher = {Butterworth-Heinemann}, +} + + +%%%%%%%% +% Complete book +% +@book{marg, + author = {L Margulis}, + title = {Origin of Eukaryotic Cells}, + publisher = {Yale University Press}, + year = {1970}, + address = {New Haven} +} + + + +%%%%%%%% +% Monograph or book in series +% +@incollection{hunn, + author = {G W Hunninghake and J E Gadek}, + title = {The alveloar macrophage}, + booktitle = {Cultured Human Cells and Tissues}, + publisher = {Academic Press}, + year = {1995}, + pages = {54-56}, + editor = {T J R Harris}, + address = {New York}, + note = {Stoner G (Series Editor): Methods and Perspectives in Cell Biology, vol 1} +} + + +%%%%%%%% +% Book with institutional author +@manual{advi, + title = {Annual Report}, + organization = {Advisory Committee on Genetic Modification}, + address = {London}, + year = {1999} +} + + +%%%%%%%% +% PHD Thesis +% +@phdthesis{koha, + author = {R Kohavi}, + title = {Wrappers for performance enhancement and + obvious decision graphs}, + school = {Stanford University, Computer Science Department}, + year = {1995} +} + +%%%%%%%% +% Webpage Link / URL +% + + + +@article{Batut2018, + doi = {10.1016/j.cels.2018.05.012}, + url = {https://doi.org/10.1016/j.cels.2018.05.012}, + year = {2018}, + month = jun, + publisher = {Elsevier {BV}}, + volume = {6}, + number = {6}, + pages = {752--758.e1}, + author = {{Batut et al.}}, + title = {Community-Driven Data Analysis Training for Biology}, + journal = {Cell Systems} +} + + +@article{michaudagrawal_mdanalysis_2011, + title = {{MDAnalysis}: {A} toolkit for the analysis of molecular dynamics simulations}, + volume = {32}, + copyright = {Copyright © 2011 Wiley Periodicals, Inc.}, + issn = {1096-987X}, + shorttitle = {{MDAnalysis}}, + url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.21787}, + doi = {10.1002/jcc.21787}, + abstract = {MDAnalysis is an object-oriented library for structural and temporal analysis of molecular dynamics (MD) simulation trajectories and individual protein structures. It is written in the Python language with some performance-critical code in C. It uses the powerful NumPy package to expose trajectory data as fast and efficient NumPy arrays. It has been tested on systems of millions of particles. Many common file formats of simulation packages including CHARMM, Gromacs, Amber, and NAMD and the Protein Data Bank format can be read and written. Atoms can be selected with a syntax similar to CHARMM's powerful selection commands. MDAnalysis enables both novice and experienced programmers to rapidly write their own analytical tools and access data stored in trajectories in an easily accessible manner that facilitates interactive explorative analysis. MDAnalysis has been tested on and works for most Unix-based platforms such as Linux and Mac OS X. It is freely available under the GNU General Public License from http://mdanalysis.googlecode.com. © 2011 Wiley Periodicals, Inc. J Comput Chem 2011}, + language = {en}, + number = {10}, + urldate = {2020-04-17}, + journal = {Journal of Computational Chemistry}, + author = {Michaud‐Agrawal, Naveen and Denning, Elizabeth J. and Woolf, Thomas B. and Beckstein, Oliver}, + year = {2011}, + keywords = {analysis, membrane systems, molecular dynamics simulations, object-oriented design, proteins, Python programming language, software}, + pages = {2319--2327}, +} + +@article{mcgibbon_mdtraj_2015, + title = {{MDTraj}: {A} {Modern} {Open} {Library} for the {Analysis} of {Molecular} {Dynamics} {Trajectories}}, + volume = {109}, + issn = {0006-3495}, + shorttitle = {{MDTraj}}, + url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4623899/}, + doi = {10.1016/j.bpj.2015.08.015}, + abstract = {As molecular dynamics (MD) simulations continue to evolve into powerful computational tools for studying complex biomolecular systems, the necessity of flexible and easy-to-use software tools for the analysis of these simulations is growing. We have developed MDTraj, a modern, lightweight, and fast software package for analyzing MD simulations. MDTraj reads and writes trajectory data in a wide variety of commonly used formats. It provides a large number of trajectory analysis capabilities including minimal root-mean-square-deviation calculations, secondary structure assignment, and the extraction of common order parameters. The package has a strong focus on interoperability with the wider scientific Python ecosystem, bridging the gap between MD data and the rapidly growing collection of industry-standard statistical analysis and visualization tools in Python. MDTraj is a powerful and user-friendly software package that simplifies the analysis of MD data and connects these datasets with the modern interactive data science software ecosystem in Python.}, + number = {8}, + urldate = {2020-04-17}, + journal = {Biophysical Journal}, + author = {McGibbon, Robert T. and Beauchamp, Kyle A. and Harrigan, Matthew P. and Klein, Christoph and Swails, Jason M. and Hernández, Carlos X. and Schwantes, Christian R. and Wang, Lee-Ping and Lane, Thomas J. and Pande, Vijay S.}, + month = oct, + year = {2015}, + pmcid = {PMC4623899}, + pages = {1528--1532}, +} + +@article{skjaerven_integrating_2014, + title = {Integrating protein structural dynamics and evolutionary analysis with {Bio3D}}, + volume = {15}, + issn = {1471-2105}, + url = {https://doi.org/10.1186/s12859-014-0399-6}, + doi = {10.1186/s12859-014-0399-6}, + abstract = {Popular bioinformatics approaches for studying protein functional dynamics include comparisons of crystallographic structures, molecular dynamics simulations and normal mode analysis. However, determining how observed displacements and predicted motions from these traditionally separate analyses relate to each other, as well as to the evolution of sequence, structure and function within large protein families, remains a considerable challenge. This is in part due to the general lack of tools that integrate information of molecular structure, dynamics and evolution.}, + number = {1}, + urldate = {2020-04-17}, + journal = {BMC Bioinformatics}, + author = {Skjærven, Lars and Yao, Xin-Qiu and Scarabelli, Guido and Grant, Barry J.}, + month = dec, + year = {2014}, + pages = {399}, +} + +@article{senapathi_biomolecular_2019, + title = {Biomolecular {Reaction} and {Interaction} {Dynamics} {Global} {Environment} ({BRIDGE})}, + volume = {35}, + issn = {1367-4803}, + url = {https://academic.oup.com/bioinformatics/article/35/18/3508/5317160}, + doi = {10.1093/bioinformatics/btz107}, + abstract = {AbstractMotivation. The pathway from genomics through proteomics and onto a molecular description of biochemical processes makes the discovery of drugs and bio}, + language = {en}, + number = {18}, + urldate = {2020-04-17}, + journal = {Bioinformatics}, + author = {Senapathi, Tharindu and Bray, Simon and Barnett, Christopher B. and Grüning, Björn and Naidoo, Kevin J.}, + month = sep, + year = {2019}, + note = {Publisher: Oxford Academic}, + pages = {3508--3509}, +} + +@article{abraham_gromacs_2015, + title = {{GROMACS}: {High} performance molecular simulations through multi-level parallelism from laptops to supercomputers}, + volume = {1-2}, + issn = {2352-7110}, + shorttitle = {{GROMACS}}, + url = {http://www.sciencedirect.com/science/article/pii/S2352711015000059}, + doi = {10.1016/j.softx.2015.06.001}, + abstract = {GROMACS is one of the most widely used open-source and free software codes in chemistry, used primarily for dynamical simulations of biomolecules. It provides a rich set of calculation types, preparation and analysis tools. Several advanced techniques for free-energy calculations are supported. In version 5, it reaches new performance heights, through several new and enhanced parallelization algorithms. These work on every level; SIMD registers inside cores, multithreading, heterogeneous CPU–GPU acceleration, state-of-the-art 3D domain decomposition, and ensemble-level parallelization through built-in replica exchange and the separate Copernicus framework. The latest best-in-class compressed trajectory storage format is supported.}, + language = {en}, + urldate = {2020-04-17}, + journal = {SoftwareX}, + author = {Abraham, Mark James and Murtola, Teemu and Schulz, Roland and Páll, Szilárd and Smith, Jeremy C. and Hess, Berk and Lindahl, Erik}, + month = sep, + year = {2015}, + keywords = {Free energy, GPU, Molecular dynamics, SIMD}, + pages = {19--25}, +} + + +@article{afgan_galaxy_2018, + title = {The {Galaxy} platform for accessible, reproducible and collaborative biomedical analyses: 2018 update}, + volume = {46}, + issn = {0305-1048}, + shorttitle = {The {Galaxy} platform for accessible, reproducible and collaborative biomedical analyses}, + url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6030816/}, + doi = {10.1093/nar/gky379}, + abstract = {Galaxy (homepage: https://galaxyproject.org, main public server: https://usegalaxy.org) is a web-based scientific analysis platform used by tens of thousands of scientists across the world to analyze large biomedical datasets such as those found in genomics, proteomics, metabolomics and imaging. Started in 2005, Galaxy continues to focus on three key challenges of data-driven biomedical science: making analyses accessible to all researchers, ensuring analyses are completely reproducible, and making it simple to communicate analyses so that they can be reused and extended. During the last two years, the Galaxy team and the open-source community around Galaxy have made substantial improvements to Galaxy's core framework, user interface, tools, and training materials. Framework and user interface improvements now enable Galaxy to be used for analyzing tens of thousands of datasets, and {\textgreater}5500 tools are now available from the Galaxy ToolShed. The Galaxy community has led an effort to create numerous high-quality tutorials focused on common types of genomic analyses. The Galaxy developer and user communities continue to grow and be integral to Galaxy's development. The number of Galaxy public servers, developers contributing to the Galaxy framework and its tools, and users of the main Galaxy server have all increased substantially.}, + number = {Web Server issue}, + urldate = {2020-04-17}, + journal = {Nucleic Acids Research}, + author = {Afgan, Enis and Baker, Dannon and Batut, Bérénice and van den Beek, Marius and Bouvier, Dave and Čech, Martin and Chilton, John and Clements, Dave and Coraor, Nate and Grüning, Björn A and Guerler, Aysam and Hillman-Jackson, Jennifer and Hiltemann, Saskia and Jalili, Vahid and Rasche, Helena and Soranzo, Nicola and Goecks, Jeremy and Taylor, James and Nekrutenko, Anton and Blankenberg, Daniel}, + month = jul, + year = {2018}, + pmcid = {PMC6030816}, + pages = {W537--W544}, +} + +@article{hump_vmd_1996, + author={William Humphrey and Andrew Dalke and Klaus Schulten}, + title={{VMD} -- {V}isual {M}olecular {D}ynamics}, + journal={Journal of Molecular Graphics}, + year=1996, + volume=14, + pages={33-38}, + note={}, + tbstatus={Published.}, + techrep={}, + tbreference={222} +} + +@article{miller_mmpbsa, +author = {Miller, Bill R. and McGee, T. Dwight and Swails, Jason M. and Homeyer, Nadine and Gohlke, Holger and Roitberg, Adrian E.}, +title = {MMPBSA.py: An Efficient Program for End-State Free Energy Calculations}, +journal = {Journal of Chemical Theory and Computation}, +volume = {8}, +number = {9}, +pages = {3314-3321}, +year = {2012}, +doi = {10.1021/ct300418h}, +URL = { + https://doi.org/10.1021/ct300418h + }, +eprint = { + https://doi.org/10.1021/ct300418h + } +} + +@article{sloggett_bioblend, + author = {Sloggett, Clare and Goonasekera, Nuwan and Afgan, Enis}, + title = "{BioBlend: automating pipeline analyses within Galaxy and CloudMan}", + journal = {Bioinformatics}, + volume = {29}, + number = {13}, + pages = {1685-1686}, + year = {2013}, + month = {04}, + abstract = "{Summary: We present BioBlend, a unified API in a high-level language (python) that wraps the functionality of Galaxy and CloudMan APIs. BioBlend makes it easy for bioinformaticians to automate end-to-end large data analysis, from scratch, in a way that is highly accessible to collaborators, by allowing them to both provide the required infrastructure and automate complex analyses over large datasets within the familiar Galaxy environment.Availability and implementation:http://bioblend.readthedocs.org/. Automated installation of BioBlend is available via PyPI (e.g. pip install bioblend). Alternatively, the source code is available from the GitHub repository (https://github.com/afgane/bioblend) under the MIT open source license. The library has been tested and is working on Linux, Macintosh and Windows-based systems.Contact:enis.afgan@unimelb.edu.au}", + issn = {1367-4803}, + doi = {10.1093/bioinformatics/btt199}, + url = {https://doi.org/10.1093/bioinformatics/btt199}, +} + +@article{Schuetz2018, + doi = {10.1021/acs.jcim.8b00614}, + url = {https://doi.org/10.1021/acs.jcim.8b00614}, + year = {2018}, + month = nov, + publisher = {American Chemical Society ({ACS})}, + volume = {59}, + number = {1}, + pages = {535--549}, + author = {Doris A. Schuetz and Mattia Bernetti and Martina Bertazzo and Djordje Musil and Hans-Michael Eggenweiler and Maurizio Recanatini and Matteo Masetti and Gerhard F. Ecker and Andrea Cavalli}, + title = {Predicting Residence Time and Drug Unbinding Pathway through Scaled Molecular Dynamics}, + journal = {Journal of Chemical Information and Modeling} +} + +@article{Pearl2006, + doi = {10.1146/annurev.biochem.75.103004.142738}, + url = {https://doi.org/10.1146/annurev.biochem.75.103004.142738}, + year = {2006}, + month = jun, + publisher = {Annual Reviews}, + volume = {75}, + number = {1}, + pages = {271--294}, + author = {Laurence H. Pearl and Chrisostomos Prodromou}, + title = {Structure and Mechanism of the {Hsp90} Molecular Chaperone Machinery}, + journal = {Annual Review of Biochemistry} +} + +@article{Vanommeslaeghe2009, + doi = {10.1002/jcc.21367}, + url = {https://doi.org/10.1002/jcc.21367}, + year = {2009}, + publisher = {Wiley}, + pages = {NA--NA}, + author = {K. Vanommeslaeghe and E. Hatcher and C. Acharya and S. Kundu and S. Zhong and J. Shim and E. Darian and O. Guvench and P. Lopes and I. Vorobyov and A. D. Mackerell}, + title = {{CHARMM} general force field: A force field for drug-like molecules compatible with the {CHARMM} all-atom additive biological force fields}, + journal = {Journal of Computational Chemistry} +} + +@article{Maier2015, + doi = {10.1021/acs.jctc.5b00255}, + url = {https://doi.org/10.1021/acs.jctc.5b00255}, + year = {2015}, + month = jul, + publisher = {American Chemical Society ({ACS})}, + volume = {11}, + number = {8}, + pages = {3696--3713}, + author = {James A. Maier and Carmenza Martinez and Koushik Kasavajhala and Lauren Wickstrom and Kevin E. Hauser and Carlos Simmerling}, + title = {ff14SB: Improving the Accuracy of Protein Side Chain and Backbone Parameters from ff99SB}, + journal = {Journal of Chemical Theory and Computation} +} + +@article{reif2012, +author = {Reif, Maria M. and Hünenberger, Philippe H. and Oostenbrink, Chris}, +title = {New Interaction Parameters for Charged Amino Acid Side Chains in the {GROMOS} Force Field}, +journal = {Journal of Chemical Theory and Computation}, +volume = {8}, +number = {10}, +pages = {3705-3723}, +year = {2012}, +doi = {10.1021/ct300156h}, + +URL = { + https://doi.org/10.1021/ct300156h + +}, +eprint = { + https://doi.org/10.1021/ct300156h + +} + +} + + +@article{Mobley2018, +author = {Mobley, David L. and Bannan, Caitlin C. and Rizzi, Andrea and Bayly, Christopher I. and Chodera, John D. and Lim, Victoria T. and Lim, Nathan M. and Beauchamp, Kyle A. and Slochower, David R. and Shirts, Michael R. and Gilson, Michael K. and Eastman, Peter +K.}, +title = {Escaping Atom Types in Force Fields Using Direct Chemical Perception}, +journal = {Journal of Chemical Theory and Computation}, +volume = {14}, +number = {11}, +pages = {6076-6092}, +year = {2018}, +doi = {10.1021/acs.jctc.8b00640} +} + +@misc{Swails2016, + title={{ParmEd}: Cross-program parameter and topology file editor and molecular mechanical simulator engine}, + author={Swails, J and Hernandez, CX and Mobley, DL and Nguyen, H and Wang, LP and Janowski, P}, + url={https://parmed.github.io/ParmEd/html/index.html}, + year={2016}, + note = {Accessed: 23.01.20} +} + +@book{berendsen01, +title={Simulating the Physical World: Hierarchical Modeling from Quantum Mechanics to Fluid Dynamics.}, +DOI={10.1017/CBO9780511815348}, +publisher={Cambridge University Press}, +address={Cambridge, United Kingdom}, +author={Berendsen, Herman J. C.}, +year={2007} +} + +@incollection{Lemkul2020, + doi = {10.1016/bs.pmbts.2019.12.009}, + year = {2020}, + publisher = {Elsevier}, + pages = {1--71}, + author = {Justin A. Lemkul}, + title = {Pairwise-additive and polarizable atomistic force fields for molecular dynamics simulations of proteins}, + address = {New York}, + booktitle = {Computational Approaches for Understanding Dynamical Systems: Protein Folding and Assembly} +} + +@article{Wang2004, + doi = {10.1002/jcc.20035}, + year = {2004}, + publisher = {Wiley}, + volume = {25}, + number = {9}, + pages = {1157--1174}, + author = {Junmei Wang and Romain M. Wolf and James W. Caldwell and Peter A. Kollman and David A. Case}, + title = {Development and testing of a general {AMBER} force field}, + journal = {Journal of Computational Chemistry} +} + +@article{Onufriev2017, + doi = {10.1002/wcms.1347}, + year = {2017}, + month = nov, + publisher = {Wiley}, + volume = {8}, + number = {2}, + pages = {e1347}, + author = {Alexey V. Onufriev and Saeed Izadi}, + title = {Water models for biomolecular simulations}, + journal = {Wiley Interdisciplinary Reviews: Computational Molecular Science} +} + +@article{Rose2018ngl, + author = {Rose, Alexander S and Bradley, Anthony R and Valasatava, Yana and Duarte, Jose M and Prlić, Andreas and Rose, Peter W}, + title = "{NGL viewer: web-based molecular graphics for large complexes}", + journal = {Bioinformatics}, + volume = {34}, + number = {21}, + pages = {3755-3758}, + year = {2018}, + month = {05}, + abstract = "{The interactive visualization of very large macromolecular complexes on the web is becoming a challenging problem as experimental techniques advance at an unprecedented rate and deliver structures of increasing size.We have tackled this problem by developing highly memory-efficient and scalable extensions for the NGL WebGL-based molecular viewer and by using Macromolecular Transmission Format (MMTF), a binary and compressed MMTF. These enable NGL to download and render molecular complexes with millions of atoms interactively on desktop computers and smartphones alike, making it a tool of choice for web-based molecular visualization in research and education.The source code is freely available under the MIT license at github.com/arose/ngl and distributed on NPM (npmjs.com/package/ngl). MMTF-JavaScript encoders and decoders are available at github.com/rcsb/mmtf-javascript.}", + issn = {1367-4803}, + doi = {10.1093/bioinformatics/bty419}, +} + + +@article{Trott2009, + year = {2009}, + publisher = {Wiley}, + pages = {NA--NA}, + author = {Oleg Trott and Arthur J. Olson}, + title = {{AutoDock Vina}: Improving the speed and accuracy of docking with a new scoring function, efficient optimization, and multithreading}, + journal = {Journal of Computational Chemistry}, + doi={10.1002/jcc.21334}, + volume={31}, + number={2}, +} + +@article{Ruiz2014, + title={{rDock}: a fast, versatile and open source program for docking ligands to proteins and nucleic acids}, + author={Ruiz-Carmona, Sergio and Alvarez-Garcia, Daniel and Foloppe, Nicolas and Garmendia-Doval, A Beatriz and Juhos, Szilveszter and Schmidtke, Peter and Barril, Xavier and Hubbard, Roderick E and Morley, S David}, + journal={PLoS Computational Biology}, + volume={10}, + number={4}, + pages={e1003571}, + year={2014}, + doi={10.1371/journal.pcbi.1003571}, + publisher={Public Library of Science} +} + + +@misc{gtn_comp, + key = {Galaxy {Training}: {Computational} chemistry}, + title = {Galaxy {Training}: {Computational} chemistry}, + shorttitle = {Galaxy {Training}}, + url = {https://training.galaxyproject.org/training-material/topics/computational-chemistry/tutorials/htmd-analysis/tutorial.html}, + abstract = {Modelling, simulation and analysis of biomolecular systems}, + language = {en}, + +} + +@misc{gtn_collections, + key = {Galaxy Training: Collections: Using dataset collection}, + title = {Galaxy Training: Collections: Using dataset collection}, + shorttitle = {Galaxy {Training}}, + url = {https://galaxyproject.github.io/training-material/topics/galaxy-data-manipulation/tutorials/collections/tutorial.html}, + language = {en}, + urldate = {2020-04-29}, +} + +@misc{gtn_toworkflow, + key = {Workflows: Extracting Workflows from Histories}, + title = {Workflows: Extracting Workflows from Histories}, + shorttitle = {Galaxy {Training}}, + url = {https://galaxyproject.github.io/training-material/topics/galaxy-ui/tutorials/history-to-workflow/tutorial.html}, + language = {en}, + urldate = {2020-04-29}, +} + +@misc{gtn_multiple, + key = {Histories: Understanding Galaxy history system}, + title = {Galaxy Training: Histories: Understanding Galaxy history system}, + shorttitle = {Galaxy {Training}}, + url = {https://galaxyproject.github.io/training-material/topics/galaxy-ui/tutorials/history/tutorial.html}, + language = {en}, + urldate = {2020-04-29}, +} + +@misc{gtn_api, + key = {Scripting Galaxy using the API and BioBlend}, + title = {Galaxy Training: Scripting Galaxy using the API and BioBlend}, + shorttitle = {Galaxy {Training}}, + url = {https://training.galaxyproject.org/training-material/topics/dev/tutorials/bioblend-api/slides.html}, + language = {en}, + urldate = {2020-04-29}, +} + + +@misc{eu_6hhr, + key = {Protein-ligand docking (6hhr)}, + title = {Galaxy | Europe | Accessible History | Protein-ligand docking (6hhr)}, + url = {https://cheminformatics.usegalaxy.eu/u/sbray/h/protein-ligand-docking-6hhr}, + language = {en}, + urldate = {2020-04-29} +} + +@misc{eu_htmd_simulation_workflow, + key = {Protein-ligand HTMD simulation workflow}, + title = {Galaxy | Europe | Accessible History | Protein-ligand HTMD simulation}, + url = {https://cheminformatics.usegalaxy.eu/u/sbray/w/protein-ligand-htmd-sim}, + language = {en}, + urldate = {2020-04-29} +} + +@misc{eu_htmd_analysis_workflow, + key = {Protein-ligand HTMD analysis workflow}, + title = {Galaxy | Europe | Accessible History | Protein-ligand HTMD analysis}, + url = {https://cheminformatics.usegalaxy.eu/u/sbray/w/protein-ligand-htmd-analysis}, + language = {en}, + urldate = {2020-04-29} +} + +@misc{za_htmd_simulation_workflow, + key = {Protein-ligand HTMD simulation workflow}, + title = {Galaxy | South Africa | Accessible History | Protein-ligand HTMD analysis}, + url = {https://galaxy-compchem.ilifu.ac.za/u/sbray/w/protein-ligand-htmd-sim}, + language = {en}, + urldate = {2020-04-29} +} + +@misc{za_htmd_analysis_workflow, + key = {Protein-ligand HTMD analysis workflow}, + title = {Galaxy | South Africa | Accessible History | Protein-ligand HTMD analysis}, + url = {https://galaxy-compchem.ilifu.ac.za/u/sbray/w/protein-ligand-htmd-analysis}, + language = {en}, + urldate = {2020-04-29} +} + + +@article{Stebbins1997, + doi = {10.1016/s0092-8674(00)80203-2}, + year = {1997}, + month = apr, + publisher = {Elsevier {BV}}, + volume = {89}, + number = {2}, + pages = {239--250}, + author = {Charles E Stebbins and Alicia A Russo and Christine Schneider and Neal Rosen and F.Ulrich Hartl and Nikola P Pavletich}, + title = {Crystal Structure of an {Hsp90}{\textendash}Geldanamycin Complex: Targeting of a Protein Chaperone by an Antitumor Agent}, + journal = {Cell} +} + +@article{Hermane2019, + doi = {10.1039/c9ob00892f}, + year = {2019}, + publisher = {Royal Society of Chemistry ({RSC})}, + volume = {17}, + number = {21}, + pages = {5269--5278}, + author = {Jekaterina Hermane and Simone Eichner and Lena Mancuso and Benjamin Schr\"{o}der and Florenz Sasse and Carsten Zeilinger and Andreas Kirschning}, + title = {New geldanamycin derivatives with anti {Hsp} properties by mutasynthesis}, + journal = {Organic {\&} Biomolecular Chemistry} +} + +@article{Schopf2017, + doi = {10.1038/nrm.2017.20}, + year = {2017}, + month = apr, + publisher = {Springer Science and Business Media {LLC}}, + volume = {18}, + number = {6}, + pages = {345--360}, + author = {Florian H. Schopf and Maximilian M. Biebl and Johannes Buchner}, + title = {The {HSP}90 chaperone machinery}, + journal = {Nature Reviews Molecular Cell Biology} +} + + +@misc{ligand_resorcinol, + key = {3-(2,4-{Dihydroxyphenyl})-4-(2-fluorophenyl)-{1H}-1,2,4-triazole-5-thione}, + title = {3-(2,4-{Dihydroxyphenyl})-4-(2-fluorophenyl)-{1H}-1,2,4-triazole-5-thione}, + url = {https://pubchem.ncbi.nlm.nih.gov/compound/135508238}, + abstract = {3-(2,4-Dihydroxyphenyl)-4-(2-fluorophenyl)-1H-1,2,4-triazole-5-thione {\textbar} C14H10FN3O2S {\textbar} CID 135508238 - structure, chemical names, physical and chemical properties, classification, patents, literature, biological activities, safety/hazards/toxicity information, supplier lists, and more.}, + language = {en}, + urldate = {2020-04-29}, + author = {PubChem}, + note = {Library Catalog: pubchem.ncbi.nlm.nih.gov}, +} + + + +@article{kuzmanic_determination_2010, + title = {Determination of {Ensemble}-{Average} {Pairwise} {Root} {Mean}-{Square} {Deviation} from {Experimental} {B}-{Factors}}, + volume = {98}, + issn = {0006-3495}, + doi = {10.1016/j.bpj.2009.11.011}, + abstract = {Root mean-square deviation (RMSD) after roto-translational least-squares fitting is a measure of global structural similarity of macromolecules used commonly. On the other hand, experimental x-ray B-factors are used frequently to study local structural heterogeneity and dynamics in macromolecules by providing direct information about root mean-square fluctuations (RMSF) that can also be calculated from molecular dynamics simulations. We provide a mathematical derivation showing that, given a set of conservative assumptions, a root mean-square ensemble-average of an all-against-all distribution of pairwise RMSD for a single molecular species, {\textless}RMSD2{\textgreater}1/2, is directly related to average B-factors ({\textless}B{\textgreater}) and {\textless}RMSF2{\textgreater}1/2. We show this relationship and explore its limits of validity on a heterogeneous ensemble of structures taken from molecular dynamics simulations of villin headpiece generated using distributed-computing techniques and the Folding@Home cluster. Our results provide a basis for quantifying global structural diversity of macromolecules in crystals directly from x-ray experiments, and we show this on a large set of structures taken from the Protein Data Bank. In particular, we show that the ensemble-average pairwise backbone RMSD for a microscopic ensemble underlying a typical protein x-ray structure is ∼1.1 Å, under the assumption that the principal contribution to experimental B-factors is conformational variability.}, + number = {5}, + urldate = {2020-04-30}, + journal = {Biophysical Journal}, + author = {Kuzmanic, Antonija and Zagrovic, Bojan}, + month = mar, + year = {2010}, + pmcid = {PMC2830444}, + pages = {861--871}, +} + + +@article{berjanskii_nmr_2006, + title = {{NMR}: prediction of protein flexibility}, + volume = {1}, + copyright = {2006 Nature Publishing Group}, + issn = {1750-2799}, + shorttitle = {{NMR}}, + doi = {10.1038/nprot.2006.108}, + abstract = {We present a protocol for predicting protein flexibility from NMR chemical shifts. The protocol consists of (i) ensuring that the chemical shift assignments are correctly referenced or, if not, performing a reference correction using information derived from the chemical shift index, (ii) calculating the random coil index (RCI), and (iii) predicting the expected root mean square fluctuations (RMSFs) and order parameters (S2) of the protein from the RCI. The key advantages of this protocol over existing methods for studying protein dynamics are that (i) it does not require prior knowledge of a protein's tertiary structure, (ii) it is not sensitive to the protein's overall tumbling and (iii) it does not require additional NMR measurements beyond the standard experiments for backbone assignments. When chemical shift assignments are available, protein flexibility parameters, such as S2 and RMSF, can be calculated within 1–2 h using a spreadsheet program.}, + language = {en}, + number = {2}, + urldate = {2020-04-30}, + journal = {Nature Protocols}, + author = {Berjanskii, Mark and Wishart, David S.}, + month = aug, + year = {2006}, + note = {Number: 2 +Publisher: Nature Publishing Group}, + pages = {683--688}, + +} + +@article{Lemkul2019, + doi = {10.33011/livecoms.1.1.5068}, + year = {2019}, + publisher = {University of Colorado at Boulder}, + volume = {1}, + number = {1}, + author = {Justin Lemkul}, + title = {From Proteins to Perturbed {H}amiltonians: A Suite of Tutorials for the {GROMACS}-2018 Molecular Simulation Package [Article v1.0]}, + journal = {Living Journal of Computational Molecular Science} +} + +@article{HARVEY20121059, +title = "High-throughput molecular dynamics: the powerful new tool for drug discovery", +journal = "Drug Discovery Today", +volume = "17", +number = "19", +pages = "1059 - 1062", +year = "2012", +issn = "1359-6446", +doi = "https://doi.org/10.1016/j.drudis.2012.03.017", +author = "Matthew J. Harvey and Gianni [De Fabritiis]", + +} + +@article{Guterres2020, + doi = {10.1021/acs.jcim.0c00057}, + year = {2020}, + month = mar, + publisher = {American Chemical Society ({ACS})}, + volume = {60}, + number = {4}, + pages = {2189--2198}, + author = {Hugo Guterres and Wonpil Im}, + title = {Improving Protein-Ligand Docking Results with High-Throughput Molecular Dynamics Simulations}, + journal = {Journal of Chemical Information and Modeling} +} + +@article{SousadaSilva2012, + doi = {10.1186/1756-0500-5-367}, + year = {2012}, + publisher = {Springer Science and Business Media {LLC}}, + volume = {5}, + number = {1}, + pages = {367}, + author = {Alan W Sousa da Silva and Wim F Vranken}, + title = {{ACPYPE} - {AnteChamber} {PYthon} Parser {interfacE}}, + journal = {{BMC} Research Notes} +} \ No newline at end of file diff --git a/topics/computational-chemistry/tutorials/htmd-analysis/tutorial.md b/topics/computational-chemistry/tutorials/htmd-analysis/tutorial.md new file mode 100644 index 00000000000000..1ad95ca8fa7cec --- /dev/null +++ b/topics/computational-chemistry/tutorials/htmd-analysis/tutorial.md @@ -0,0 +1,630 @@ +--- +layout: tutorial_hands_on + +title: High Throughput Molecular Dynamics and Analysis +level: Advanced +zenodo_link: 'https://zenodo.org/badge/latestdoi/260474701' +questions: +- How are protein-ligand systems parameterized for molecular dynamics simulation? +- What kind of analysis can be carried out on molecular trajectories? +- How can high-throughput MD be used to study multiple ligands? +objectives: +- Learn about force-fields and MD parameterization +- Learn how to conduct MD simulation and analysis for a protein-ligand system +- Understand how different molecular interactions contribute to the binding affinity of various ligands for the Hsp90 protein. +time_estimation: 3H +key_points: +- Simulating protein-ligand systems is more complex than simply simulating protein-only systems. +- There are a range of Galaxy tools for MD simulation (using GROMACS) and analysis. +- Galaxy makes assembling and scaling up workflows for high-throughput MD straightforward for users. +contributors: +- simonbray +- tsenapathi +- chrisbarnettster +- bgruening + +--- + + +# Introduction +{:.no_toc} + +This tutorial provides an introduction to using high-throughput molecular dynamics to study protein-ligand interaction, as applied to N-terminus of Hsp90 (heat shock protein 90). + + +> ### Agenda +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + +# Background + +## What is high-throughput molecular dynamics? +Molecular dynamics (MD) is a method to simulate molecular motion by iterative application of Newton's laws of motion. It is often applied to large biomolecules such as proteins or nucleic acids. A common application is to assess the interaction between these macromolecules and a number of small molecules (e.g.~potential drug candidates). This tutorial provides a guide to setting up and running a high-throughput workflow for screening multiple small molecules, using the open-source GROMACS tools provided through the Galaxy platform. Following simulation, the trajectory data is analyzed using a range of tools to investigate structural properties and correlations over time. + + +## Why is Hsp90 interesting to study? +The 90 kDa heat shock protein (Hsp90) is a chaperone protein responsible for catalyzing the conversion of a wide variety of proteins to a functional form; examples of the Hsp90 clientele, which totals several hundred proteins, include nuclear steroid hormone receptors and protein kinases({% cite Pearl2006 %}). The mechanism by which Hsp90 acts varies between clients, as does the client binding site; the process is dependent on post-translational modifications of Hsp90 and the identity of co-chaperones which bind and regulate the conformational cycle({% cite Schopf2017 %}). + +Due to its vital biochemical role as a chaperone protein involved in facilitating the folding of many client proteins, Hsp90 is an attractive pharmaceutical target. In particular, as protein folding is a potential bottleneck to cellular reproduction and growth, blocking Hsp90 function using inhibitors which bind tightly to the ATP binding site of the NTD could assist in treating cancer; for example, the antibiotic geldanamycin and its analogs are under investigation as possible anti-tumor agents ({% cite Stebbins1997 %}, {% cite Hermane2019 %}). + +In the structure which will be examined during this tutorial, the ligand of concern is a resorcinol, a common class of compounds with affinity for the Hsp90 N-terminal domain. It is registered in the PubChem database under the compound ID 135508238 ({% cite ligand_resorcinol %}). As can be seen by viewing the PDB structure, the resorcinol part of the structure is embedded in the binding site, bound by a hydrogen bond to residue aspartate-93. The ligand structure also contains a triazole and a fluorophenyl ring, which lie nearer to the surface of the protein. + +![Hsp90 structure, with a ligand bound]({% link topics/computational-chemistry/images/hsp90lig.png %} "Structure of Hsp90, with a ligand bound. <a href="https://usegalaxy.eu/u/sbray/v/hsp90-lig">Click to view</a> in NGL. ({% cite ngl %})") + + +## Get data + +As a first step, we create a new Galaxy history and then we download a crystal structure for the Hsp90 protein from the Protein Data Bank (PDB). The structure is provided under accession code `6HHR` ({% cite Schuetz2018 %}) and shows Hsp90 in complex with a ligand belonging to the resorcinol class. + +> ### {% icon hands_on %} Hands-on: Data upload +> +> 1. Create a new history for this tutorial +> 2. Search Galaxy for the 'Get PDB' tool. Request the accession code ```6hhr```. +> 3. Rename the dataset to 'Hsp90 structure' +> 4. Check that the datatype is correct (PDB file). +> +> {% include snippets/change_datatype.md datatype="datatypes" %} +> +{: .hands_on} + + +# Simulation + +## Topology generation + +Now we have downloaded a PDB structure of the protein we wish to study, we will start preparing it for MD simulation; this process may also be referred to as parameterization or topology generation. + +GROMACS distinguishes between constant and dynamic attributes of the atoms in the system. The constant attributes (e.g. atom charges, bonds connecting atoms) are listed in the topology (TOP file), while dynamic attributes (attributes that can change during a simulation, e.g. atom position, velocities and forces) are stored in structure (PDB or GRO) and trajectory (XTC and TRR) files. + +The PDB file we start from only explicitly states atom element (i.e.carbon, oxygen, and so on) and 3D Cartesian coordinates of each atom; additionally, it will usually not include hydrogen atoms. Therefore, before beginning simulation, we need to calculate the rest of the information contained within the topology file. Parameterization needs to be done separately for the ligand and protein. Therefore, the first step is to separate the PDB file into two sets of coordinates - one for the ligand and one for the protein. + + +### Extract protein and ligand coordinates + +Parameterization needs to be done separately for the ligand and protein. Therefore, the first step is to separate the PDB file into two sets of coordinates - one for the ligand and one for the protein. Here, we can make use of the simple text manipulation tools integrated into Galaxy. + +> ### {% icon question %} Question +> +> 1. Why do protein and ligand need to be parameterized separately? +> +> > ### {% icon solution %} Solution +> > +> > 1. Protein and small molecules are constructed differently. A protein is made up of 20 different building blocks (amino acids) - therefore, to construct a protein topology, amino acid topologies simply need to be combined appropriately. By contrast, the structure of small molecules is far more flexible and needs to be calculated for each different structure. +> > +> {: .solution} +> +{: .question} + +> ### {% icon hands_on %} Hands-on: Separate protein and ligand coordinates +> +> 1. **Search in textfiles** {% icon tool %} with the following parameters: +> - *"Select lines from"*: 'Hsp90 structure' +> - *"that"*: `Don't Match` +> - *"Regular Expression"*: `HETATM` +> 2. Rename output to 'Protein (PDB)' +> 3. **Search in textfiles** {% icon tool %} with the following parameters: +> - *"Select lines from"*: 'Hsp90 structure' +> - *"that"*: `Match` +> - *"Regular Expression"*: `AG5E` +> 4. Rename output to 'Ligand (PDB)' +> +{: .hands_on} + +Here, we simply filter the original PDB twice: once for lines which do not match `HETATM`, which returns a PDB file containing only protein, not ligand and solvent; and once for lines which match the ligand's identity code `AG5E`, which returns a PDB file containing only the ligand. + +### Set up protein topology + +Firstly, we need to calculate the topology for the protein file. We will use the **GROMACS initial setup** {% icon tool %} tool. + +> ### {% icon hands_on %} Hands-on: Generate protein topology +> +> 1. **GROMACS initial setup** {% icon tool %} with the following parameters: +> - *"PDB input file"*: 'Protein (PDB)' file +> - *"Force field"*: `AMBER99SB` +> - *"Water model"*: `TIP3P` +> - *"Generate detailed log"*: `Yes` +> +> > ### {% icon comment %} Comment +> > A force field is essentially a function to calculate the potential energy of a system, based on various empirical parameters (for the atoms, bonds, charges, dihedral angles and so on). There are a number of families of forcefields; some of the most commonly used include CHARMM, AMBER, GROMOS and OpenFF (for a recent, accessible overview see ({% cite Lemkul2020 %}). +> > +> > +> > A wide range of models exist for modeling water. Here we are using the common TIP3P model, which is an example of a 'three-site model' - so-called because the molecule is modeled using three points, corresponding to the three atoms of water. (Four- and five-site models include additional 'dummy atoms' representing the negative charges of the lone pairs of the oxygen atom). +> {: .comment} +> +{: .hands_on} + +The tool produces four outputs: a GRO file (containing the coordinates of the protein), a TOP file (containing other information, including on charges, masses, bonds and angles), an ITP file (which will be used to restrain the protein position in the equilibration step later on), and a log for the tool. + +Please note all GROMACS tools output a log. Generally, you only need to look at this when a job fails. These provide useful information for debugging if we encounter any problems. + + <!-- ({% cite %}) --> + +### Generate a topology for the ligand + +To generate a topology for the ligand, we will use the **acpype** {% icon tool %} tool ({% cite SousadaSilva2012 %}). This provides a convenient interface to the AmberTools suite and allows us to easily create the ligand topology in the format required by GROMACS. + +> ### {% icon hands_on %} Hands-on: Generate ligand topology +> +> 1. **Generate MD topologies for small molecules** {% icon tool %} with the following parameters: +> - *"Input file"*: 'Ligand (PDB)' +> - *"Charge of the molecule"*: `0` +> - *"Multiplicity"*: `1` +> - *"Force field to use for parameterization"*: `gaff` +> - *"Save GRO file?"*: `Yes` +> +{: .hands_on} + +Here, we use GAFF (general AMBER force field), which is a generalized AMBER force field which can be applied to almost any small organic molecule. + +We select charge and multiplicity as appropriate. The ligand studied here is neutral, so the charge is 0. The multiplicity is 1, which will be the case for every simple organic molecule we encounter; only if we deal with more exotic species such as metal complexes or carbenes will we need to consider higher values. + +Having generated topologies, we now need to combine them, define the box +which contains the system, add solvent and ions, and perform an energy +minimization step. + +<!-- ## Solvation and energy minimization --> + + +## Combine topology and GRO files + +While we have separate topology and structure files for both protein and ligand, we need to combine them into a single set of files to continue with the simulation setup. A dedicated Galaxy tool is provided for this, using the Python library ParmEd ({% cite Swails2016 %}). + +> ### {% icon hands_on %} Hands-on: Combine GRO and topology files +> +> 1. **Merge GROMACS topologies** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Protein topology (TOP) file"*: `TOP` file created by the **GROMACS initial setup** tool +> - {% icon param-file %} *"Ligand topology (TOP or ITP file)"*: `Topology` created by the **acpype** tool +> - {% icon param-file %} *"Protein structure (GRO) file"*: `GRO` file created by the **GROMACS initial setup** tool +> - {% icon param-file %} *"Ligand structure (GRO) file"*: `Structure file (GRO format)` created by the **acpype** tool +> +{: .hands_on} + + +## Create the simulation box with **GROMACS structure configuration** + +The next step, once combined coordinate (GRO) and topology (TOP) files have been created, is to create a simulation box in which the system is situated. + +> ### {% icon hands_on %} Hands-on: Create simulation box +> +> 1. **GROMACS structure configuration** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input structure"*: `System GRO file` (Input dataset) +> - *"Configure box?"*: `Yes` +> - *"Box dimensions in nanometers"*: `1.0` +> - *"Box type"*: `Triclinic` +> - *"Generate detailed log"*: `Yes` +> +> +> > ### {% icon comment %} Comment +> > +> > This tool returns a new GRO structure file, containing the same coordinates as before, but defining a simulation box such that every atom is a minimum of 1 nm from the box boundary. A distance of at least 1 nm is recommended to avoid interactions between the protein and its mirror image. On the other hand, increasing the box size too far will increase the simulation time, due to the greater number of solvent molecules which need to be treated. A variety of box shapes are available to choose: we select triclinic, as it provides the most efficient packing in space and thus fewer computational resources need to be devoted to simulation of solvent. +> {: .comment} +> +{: .hands_on} + + + +## Solvation + +The next step is solvation of the newly created simulation box - as we are simulating under biological conditions, we use water as the solvent. Note that the system is charged (depending on the pH) - the solvation tool also adds sodium or chloride ions (replacing existing water molecules) as required to neutralize this. + +> ### {% icon hands_on %} Hands-on: Solvation +> +> 1. **GROMACS solvation and adding ions** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"GRO structure file"*: `output` (output of **GROMACS structure configuration** {% icon tool %}) +> - {% icon param-file %} *"System topology"*: `output` +> - *"Generate detailed log"*: `Yes` +> +> +{: .hands_on} + + +## Energy minimization + +After the solvation step, parameterization of the system is complete and preparatory simulations can be performed. The first of theses is energy minimization, which can be carried out using the **GROMACS energy minimization** {% icon tool %} tool. + +> ### {% icon question %} Question +> +> 1. What is the purpose of energy minimization? +> +> > ### {% icon solution %} Solution +> > +> > 1. Running an energy minimization (EM) algorithm relaxes the structure by removing any steric clashes or unusual geometry which would artificially raise the energy of the system. +> > +> {: .solution} +> +{: .question} + + +> ### {% icon hands_on %} Hands-on: Energy minimization +> +> 1. **GROMACS energy minimization** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"GRO structure file."*: GRO output of **GROMACS solvation and adding ions** {% icon tool %} +> - {% icon param-file %} *"Topology (TOP) file."*: TOP output of **GROMACS solvation and adding ions** {% icon tool %} +> - *"Parameter input"*: `Use default (partially customisable) setting` +> - *"Number of steps for the MD simulation"*: `50000` +> - *"EM tolerance"*: `1000.0` +> - *"Generate detailed log"*: `Yes` +> - Rename output to `Minimized GRO file` +> +{: .hands_on} + +The EM tolerance here refers to the maximum force which will be allowed in a minimized system. The simulation will be terminated when the maximum force is less than this value, or when 50000 steps have elapsed. + +As an aside, we can use the `Extract energy components` tool to plot the convergence of the potential energy during the minimization. + +> ### {% icon hands_on %} Hands-on: Checking EM convergence +> +> 1. **Extract energy components with GROMACS** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"EDR file."*: EDR output of **GROMACS energy minimization** {% icon tool %} +> - *"Terms to calculate"*: `Potential` +> - *"Output format"*: `Galaxy tabular` +> 2. On the output tabular file, click on the 'Visualize this data' icon. This provides a range of visualization options. Select 'Line chart (jqPlot)'. +> 3. In the visualization window which appears, click on `Select data.` Enter the following parameters: +> - *"Provide a label"*: `Energy potential` +> - *"Values for x-axis"*: `Column: 1` +> - *"Values for y-axis"*: `Column: 2` +> +{: .hands_on} + +The resulting plot should resemble the figure below. The system first drops rapidly in energy, before slowly converging on the minimized state. + +![Energy potential during the EM simulation]({% link topics/computational-chemistry/images/empot.png %} "Energy potential during the EM simulation. <a href="https://usegalaxy.eu/u/sbray/v/em-pot">Click to view</a> as a Galaxy visualization") + +## Equilibration + +We now carry out equilibration in two stages: NVT and NPT. This is discussed at greater length in the basic GROMACS tutorial. Equilibration requires restraining the protein structure - we use the ITP file produced by the initial setup tool for this. + +> ### {% icon comment %} More detail about equilibration +> +> At this point equilibration of the solvent around the solute (i.e. the protein) is necessary. This is performed in two stages: equilibration under an NVT (or isothermal-isochoric) ensemble, followed by an NPT (or isothermal-isobaric) ensemble. Use of the NVT ensemble entails maintaining constant number of particles, volume and temperature, while the NPT ensemble maintains constant number of particles, pressure and temperature. +> +> For equilibration, the protein must be held in place while the solvent is allowed to move freely around it. This is achieved using the position restraint file (ITP) we created in system setup. When we specify this restraint, protein movement is not forbidden, but is energetically penalized. +> +{: .comment} + + +> ### {% icon hands_on %} Hands-on: NVT equilibration +> +> 1. **GROMACS simulation** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"GRO structure file"*: `Minimized GRO file` (from energy minimization step) +> - {% icon param-file %} *"Topology (TOP) file"*: TOP file produced by solvation step. +> - In *"Inputs"*: +> - {% icon param-file %} *"Position restraint (ITP) file"*: ITP file produced by initial setup step. +> - In *"Outputs"*: +> - *"Trajectory output"*: `Return .xtc file (reduced precision)` +> - *"Structure output"*: `Return .gro file` +> - *"Produce a checkpoint (CPT) file"*: `Produce CPT output` +> - *"Produce an energy (EDR) file"*: `Produce EDR output` +> - In *"Settings"*: +> - *"Parameter input"*: `Use default (partially customisable) setting` +> - *"Bond constraints (constraints)"*: `All bonds (all-bonds).` +> - *"Temperature /K"*: `300` +> - *"Step length in ps"*: `0.0002` +> - *"Number of steps that elapse between saving data points (velocities, forces, energies)"*: `1000` +> - *"Number of steps for the simulation"*: `50000` +> - *"Generate detailed log"*: `Yes` +> +> +{: .hands_on} + +Once the NVT equilibration is complete, it is worth using the `Extract energy components` tool again to check whether the system temperature has converged on 300 K. This can be done as described for energy minimization, this time specifying `Temperature` under `Terms to calculate` rather than `Potential`. The plot should show the temperature reaching 300 K and remaining there, albeit with some fluctuation. + +Having stabilized the temperature of the system with NVT equilibration, +we also need to stabilize the pressure of the system. We therefore +equilibrate again using the NPT (constant number of particles, pressure, +temperature) ensemble. + +Note that we can continue where the last simulation left off (with new +parameters) by using the checkpoint (CPT) file saved at the end of the +NVT simulation. + +> ### {% icon hands_on %} Hands-on: NPT equilibration +> +> 1. **GROMACS simulation** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"GRO structure file"*: GRO output of **GROMACS simulation** {% icon tool %} (NVT equilibration) +> - {% icon param-file %} *"Topology (TOP) file"*: TOP file produced by solvation step. +> - In *"Inputs"*: +> - {% icon param-file %} *"Checkpoint (CPT) file"*: Output of **GROMACS simulation** {% icon tool %} (NVT equilibration)) +> - {% icon param-file %} *"Position restraint (ITP) file"*: ITP file produced by initial setup step. +> - In *"Outputs"*: +> - *"Trajectory output"*: `Return .xtc file (reduced precision)` +> - *"Structure output"*: `Return .gro file` +> - *"Produce a checkpoint (CPT) file"*: `Produce CPT output` +> - *"Produce an energy (EDR) file"*: `Produce EDR output` +> - In *"Settings"*: +> - *"Ensemble"*: `Isothermal-isobaric ensemble (NPT)` +> - *"Parameter input"*: `Use default (partially customisable) setting` +> - *"Bond constraints (constraints)"*: `All bonds (all-bonds).` +> - *"Temperature /K"*: `300` +> - *"Step length in ps"*: `0.002` +> - *"Number of steps that elapse between saving data points (velocities, forces, energies)"*: `1000` +> - *"Number of steps for the simulation"*: `50000` +> - *"Generate detailed log"*: `Yes` +> +> +{: .hands_on} + +After the NPT equilibration is complete, **Extract energy components** {% icon tool %} can be used again to view the pressure of the system. This is done as described for energy minimization, specifying `Pressure` under `Terms to calculate`. The plot should show convergence on 1 bar and remain there, although some fluctuation is expected. + +## Production simulation + +We can now remove the restraints and continue with the production simulation. The simulation will run for 1 million steps, with a step size of 1 fs, so will have a total length of 1 ns. This is rather short compared to the state-of-the-art, but sufficient for the purposes of a tutorial. For longer-scale simulations, the tool can be used multiple times (with the checkpoint file) to continue the existing simulation. + +> ### {% icon hands_on %} Hands-on: Task description +> +> 1. **GROMACS simulation** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"GRO structure file"*: Output of **GROMACS simulation** {% icon tool %} (NPT equilibration) +> - {% icon param-file %} *"Topology (TOP) file"*: Output of the solvation step +> - In *"Inputs"*: +> - {% icon param-file %} *"Checkpoint (CPT) file"*: Output of **GROMACS simulation** {% icon tool %} (NPT simulation)) +> - In *"Outputs"*: +> - *"Trajectory output"*: `Return .xtc file (reduced precision)` +> - *"Structure output"*: `Return .gro file` +> - *"Produce a checkpoint (CPT) file"*: `Produce CPT output` +> - In *"Settings"*: +> - *"Ensemble"*: `Isothermal-isobaric ensemble (NPT)` +> - *"Parameter input"*: `Use default (partially customisable) setting` +> - *"Temperature /K"*: `300` +> - *"Step length in ps"*: `0.001` +> - *"Number of steps that elapse between saving data points (velocities, forces, energies)"*: `1000` +> - *"Number of steps for the simulation"*: `1000000` +> - *"Generate detailed log"*: `Yes` +> +> +{: .hands_on} + + +# Analysis + +After the completion of the simulation, the following questions arise: 1) is the simulation converged enough, and 2) what interesting molecular properties are observed. To answer these questions, an analysis of the GROMACS simulation outputs (structure and trajectory file) will be carried out using Galaxy tools developed for computational chemistry ({% cite senapathi_biomolecular_2019 %}) based on popular analysis software, such as MDAnalysis ({% cite michaudagrawal_mdanalysis_2011 %}), MDTraj ({% cite mcgibbon_mdtraj_2015 %}), and Bio3D ({% cite skjaerven_integrating_2014 %}). These tools output both tabular files as well as a variety of attractive plots. + + +## Create PDB file needed by most analysis tools + +Before beginning a detailed analysis, the structure and trajectory files generated previously need to be converted into different formats. First, convert the structural coordinates of the system in GRO format into PDB format. This PDB file will be used by most analysis tools as a starting structure. Next, convert the trajectory from XTC to DCD format, as a number of tools (particularly those based on Bio3D) only accept trajectories in DCD format. + +> ### {% icon hands_on %} Hands-on: Convert coordinate format +> +> 1. **GROMACS structure configuration** {% icon tool %} with the following parameters: +> - *"Output format"*: `PDB file` +> - *"Configure box?"*: `No` +> +> > ### {% icon comment %} Comment +> > +> > This tool can also be used to carry out initial setup (as discussed in the simulation methods section) for GROMACS simulations and convert from PDB to GRO format. +> {: .comment} +> +{: .hands_on} + + +## Convert trajectory to DCD format + +Convert from XTC to DCD format. A number of the analysis tools being used have been built to analyse trajectories in CHARMM's DCD format. + +> ### {% icon hands_on %} Hands-on: Convert trajectory format +> +> 1. **MDTraj file converter** {% icon tool %} with the following parameters: +> - *"Output format"*: `DCD file` +> +> > ### {% icon comment %} Comment +> > +> > This tool can also be used to interconvert between several trajectory formats. +> {: .comment} +> +{: .hands_on} + + +## RMSD analysis - protein + +The Root Mean Square Deviation (RMSD) and Root Mean Square Fluctuation (RMSF) are calculated to check the stability and conformation of the protein and ligand through the course of the simulation. +RMSD is a standard measure of structural distance between coordinate +sets that measures the average distance between a group of atoms. The +RMSD of the Cα atoms of the protein backbone is calculated here and +is a measure of how much the protein conformation has changed between different time points in the trajectory. + + +> ### {% icon hands_on %} Hands-on: RMSD Analysis +> +> 1. **RMSD Analysis** {% icon tool %} with the following parameters: +> - *"Select domains"*: `C-alpha` +> +> > ### {% icon comment %} Comment +> > +> > Note that for more complex systems, you may need to consider a more focused selection. For example, if you have a ligand that is a protein consider modifying this selection. +> {: .comment} +> +{: .hands_on} + +![RMSD timeseries Hsp90](../../images/htmd_analysis_rmsd1_series.png "RMSD timeseries for the Hsp90 Cα atoms") + +![RMSD histogram Hsp90](../../images/htmd_analysis_rmsd1_histo.png "RMSD histogram for the Hsp90 Cα atoms") + +The RMSD time series for the protein shows a thermally stable and equilibrated structure that plateaus at 1.0Å with an average RMSD between 0.8Å and 1.0Å. There are no large conformational changes during the simulation. The RMSD histogram confirms this. Note these graphs are automatically created by Galaxy as part of the tool's outputs. + + +## RMSD analysis - ligand + +Calculating the RMSD of the ligand is necessary to check if it is stable in the active site and to identify possible binding modes. If the ligand is not stable, there will be large fluctuations in the RMSD. + +For the RMSD analysis of the ligand, the `Select domains` parameter of the tool can for convenience be set to `Ligand`; however, this automatic selection sometimes fails. The other alternative, which we apply here, is to specify the `Residue ID` in the textbox provided. In this example the ligand's Residue ID is `G5E`. The output is the requested RMSD data as a time series, the RMSD plotted as a time series and as a histogram. + + +> ### {% icon hands_on %} Hands-on: RMSD analysis +> +> 1. **RMSD Analysis** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"DCD trajectory input"*: `output` (output of **MDTraj file converter** {% icon tool %}) +> - {% icon param-file %} *"PDB input"*: `output` (output of **GROMACS structure configuration** {% icon tool %}) +> - *"Select domains"*: `Residue ID` +> - *"Residue ID"*: `G5E` +> +> +{: .hands_on} + +In our case the ligand is stable with a single binding mode. The RMSD fluctuates around 0.3Å, with a slight fluctuation near the end of the simulation. This is more clearly seen in the histogram. The conformation seen during simulation is very similar to that in the crystal structure and the ligand is stable in the active site. + +![RMSD timeseries Hsp90 ligand](../../images/htmd_analysis_rmsd2_series.png "RMSD timeseries for the Hsp90 Residue ID G5E (ligand)") + +![RMSD histogram Hsp90 ligand](../../images/htmd_analysis_rmsd2_histo.png "RMSD histogram for the Hsp90 Residue ID G5E (ligand)") + + +## RMSF analysis + +The Root Mean Square Fluctuation (RMSF) is valuable to consider, as it represents the deviation at a reference position over time. The fluctuation in space of particular amino acids in the protein are considered. The Cα of the protein, designated by `C-alpha`, is a good selection to understand the change in protein structure. Depending on the system these fluctuations can be correlated to experimental techniques including Nuclear Magnetic Resonance (NMR) and M\"{o}ssbauer spectroscopy ({% cite berjanskii_nmr_2006 %}, {% cite kuzmanic_determination_2010 %}). The output from the tools is the requested RMSF data and the RMSF plotted as a time series. + +> ### {% icon hands_on %} Hands-on: RMSF analysis +> +> 1. **RMSF Analysis** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"DCD trajectory input"*: `output` (output of **MDTraj file converter** {% icon tool %}) +> - {% icon param-file %} *"PDB input"*: `output` (output of **GROMACS structure configuration** {% icon tool %}) +> - *"Select domains"*: `C-alpha` +> +> +{: .hands_on} + +![RMSF Hsp90](../../images/htmd_analysis_rmsf.png "RMSF(Å) vs the residue position. Large fluctuations occur at various positions, which correspond to flexible loop regions on the surface of the protein.") + +When considering the RMSF, fluctuations greater than 1.0Å are of interest; for example see the fluctuations near residue positions 50, 110 and 160. Inspecting the structure with molecular visualization software such as VMD, these can be seen to correspond to flexible loop regions on the protein surface. In addition, very large fluctuations are seen for the C-terminus; this is common and no investigation is needed. + +Note that the first few residues of this protein are missing in the PDB, and therefore residue position 0 in the RMSF corresponds to position 17 in the Hsp90 FASTA primary sequence. This is a fairly common problem that can occur with molecular modeling of proteins, where there may be missing residues at the beginning or within the sequence. + + + +## PCA analysis + +Principal component analysis (PCA) converts a set of correlated +observations (movement of selected atoms in protein) to a set of principal +components (PCs) which are linearly independent (or uncorrelated). Here several related tools are used. +The PCA tool calculates the PCA in order to determine the relationship between statistically meaningful conformations (major global motions) sampled during the trajectory. The Cα carbons of the protein backbone are again a good selection for this purpose. Outputs include the PCA raw data and figures of the relevant principal components (PCs) as well as an eigenvalue rank plot which is used to visualize the proportion of variance due to each principal component (remembering that the PCs are ranked eigenvectors based on the variance). +Having discovered the principal components usually these are visualized. The PCA visualization tool will create trajectories of specific principal components which can be viewed in a molecular viewer such as VMD ({% cite hump_vmd_1996 %}) or NGL viewer ({% cite Rose2018ngl %}). We also consider the PCA cosine content which when close to 1 indicates that the simulation is not converged and a longer simulation is needed. For values below 0.7, no statement can be made about convergence or lack thereof. + +> ### {% icon hands_on %} Hands-on: PCA +> +> 1. **PCA** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"DCD trajectory input"*: `output` (output of **MDTraj file converter** {% icon tool %}) +> - {% icon param-file %} *"PDB input"*: `output` (output of **GROMACS structure configuration** {% icon tool %}) +> - *"Select domains"*: `C-alpha` +> +> +{: .hands_on} + + +![PCA Hsp90](../../images/htmd_analysis_pca.png "PCA results which include graphs of PC2 vs PC1, PC2 vs PC3, PC3 vs PC1 colored from blue to red in order of time, and an eigenvalue rank plot. In the eigenvalue plot the cumulative variance is labeled for each data point.") + +The first three principal components are responsible for 32.8% of the total variance, as seen in the eigenvalue rank plot. The first principal component (PC1) accounts for 15.4% of the variance (see PC1 vs PC2 and eigenvalue rank plots). Visualization of PC1 using VMD shows a rocking motion and wagging of the C-terminus. + + +> ### {% icon hands_on %} Hands-on: PCA cosine content calculation +> +> 1. **Cosine Content** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"DCD/XTC trajectory input"*: `output` (output of **MDTraj file converter** {% icon tool %}) +> - {% icon param-file %} *"PDB/GRO input"*: `output` (output of **GROMACS structure configuration** {% icon tool %}) +> +> +{: .hands_on} + + +The PCA cosine content of the dominant motion related to PC1 is 0.93, indicating that the simulation is not fully converged. This is expected due to the short simulation length. For production level simulations, it is the norm to extend simulations to hundreds of nanoseconds in length, if not microseconds. As this tutorial is designed to be carried out on public webservers, we limit simulations to 1 ns, as we cannot provide a large amount of computational resources for training purposes. + +> ### {% icon hands_on %} Hands-on: PCA visualisation +> +> 1. **PCA visualization** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"DCD trajectory input"*: `output` (output of **MDTraj file converter** {% icon tool %}) +> - {% icon param-file %} *"PDB input"*: `output` (output of **GROMACS structure configuration** {% icon tool %}) +> - *"Select domains"*: `C-alpha` +> +> +{: .hands_on} + +![PC1 Hsp90 gif](../../images/htmd_analysis_pc1_hsp90.gif "PC1 motion for Hsp90") + +## Hydrogen bond analysis + +Hydrogen bonding interactions contribute to binding and are worth investigating, in particular persistent hydrogen bonds. All possible hydrogen bonding interactions between the two selected regions, here the protein and the ligand, are investigated over time using the VMD hydrogen bond analysis tool included in Galaxy. Hydrogen bonds are identified and in the output the total number of hydrogen bonds and occupancy over time is returned. + +> ### {% icon hands_on %} Hands-on: Hydrogen bond analysis +> +> 1. **Hydrogen Bond Analysis using VMD** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"DCD/XTC trajectory input"*: `output` (output of **MDTraj file converter** {% icon tool %}) +> - {% icon param-file %} *"PDB/GRO input"*: `output` (output of **GROMACS structure configuration** {% icon tool %}) +> - *"Selection 1"*: `protein` +> - *"Selection 2"*: `resname G5E` +> +> +{: .hands_on} + +The active site of this protein is quite hydrophobic, yet multiple hydrogen bonds were identified. The hydrogen bond between aspartate-93 and the ligand (as identified in the crystal structure) was found to be persistent, meeting the hydrogen bond criteria for 89.22% of the simulation. A hydrogen bond between the ligand and the carbonyl group of glycine-97 was found to have a 15.27% occupancy. Hydrogen bonding interactions with threonine-184, asparagine-51 and lysine-58 were also observed but these are not persistent and only present for a minority of the simulation. These values can be accessed from the 'Percentage occupancy of the H-bond' output of the hydrogen bond analysis tool. + + +# Optional: Automating high throughput calculations +Up until this step, Galaxy tools have been applied sequentially to datasets. This is useful to gain an understanding of the steps involved, but becomes tedious if the workflow needs to be run on multiple protein-ligand systems. Fortunately, Galaxy allows entire workflows to be executed with a single mouse-click, enabling straightforward high-throughput analyses. + +We will demonstrate the high-throughput capabilities of Galaxy by running the workflow detailed so far on a further three ligands. + +> ### {% icon hands_on %} Hands-on: High-throughput MD +> +> 1. Create a new history for running the high-throughput workflow and name it `Hsp90 HTMD simulation` +> 2. Upload the SD-file containing the new ligand structures from Zenodo and rename it `Ligands (SDF)` +> 3. Import the simulation workflow from the European ({%cite eu_htmd_simulation_workflow %}) or the South African Galaxy server ({%cite za_htmd_simulation_workflow %}). +> 4. Run the imported workflow with the following parameters: +> - *"Send results to a new history"*: `Yes` +> - *"History name results to a new history"*: `Hsp90 HTMD analysis` +> - *"GRO input"*: 'Collection of GRO files produced by simulation workflow' +> - *"XTC input"*: 'Collection of XTC files produced by simulation workflow' +> +{: .hands_on} + + +This process runs the entire simulation and analysis procedure described so far on the new set of ligands. It uses Galaxy's [collection feature]({% link topics/galaxy-data-manipulation/tutorials/collections/tutorial.md %}) to organize the data; each item in the history is a collection (essentially a directory containing multiple individual datasets) containing one file corresponding to each of the input ligands. + +Note that the SD-file needs to contain ligands with the correct 3D coordinates for MD simulation. The easiest way to obtain these is using a molecular docking tool such as Autodock Vina ({% cite Trott2009 %}) or rDock ({% cite Ruiz2014 %}); tutorials and workflows are available for both of these from the Galaxy Training Network. As an example, the history in which the SD-file used in the HTMD workflow is generated (using AutoDock Vina) is provided ({% cite eu_6hhr %}). + + +Apart from manual setups or collections, there are several other alternatives which are helpful in scaling up workflows. Galaxy supports and provides training material for converting [histories to workflows]({% link topics/galaxy-ui/tutorials/history-to-workflow/tutorial.md %}), using [multiple histories]({% link topics/galaxy-ui/tutorials/history/tutorial.md %}), and the [Galaxy Application Programming Interface (API)]({% link topics/dev/tutorials/bioblend-api/slides.html %}). For beginners and users who prefer a visual interface, automation can be done using multiple histories and collections with the standard Galaxy user interface. + +If you are able to write small scripts, you can automate everything you have learned here with the Galaxy API. This allows you to interact with the server to automate repetitive tasks and create more complex workflows (which may have repetition or branching). The simplest way to access the API is through the Python library BioBlend ({% cite sloggett_bioblend %}). An example Python script, which uses BioBlend to run the GROMACS simulation workflow for each of a list of ligands, is given in the hands-on box below. + +> ### {% icon hands_on %} Hands-on: Bioblend script +> +> ``` +>from bioblend import galaxy +> +># Server and account details +>API_KEY = 'YOUR USEGALAXY.EU API KEY' +>gi = galaxy.GalaxyInstance(key=API_KEY, +> url='https://usegalaxy.eu/') +> +># ID for GROMACS workflow +>workflow_id = 'adc6d049e9283789' +> +># Dataset IDs for ligands to dock +>ligands = { +># ligand_name: dataset ID, +>'lig1': '11ac94870d0bb33a79c5fa18b0fd3b4c', +># ... +>} +> +># Loop over ligands, invoking workflow +>for name, _id in ligands.items(): +> inv = gi.workflows.invoke_workflow( +> workflow_id, +> inputs={ +> '1': {'src': 'hda', 'id': _id} +> }, +> history_name=f'HTMD run on {name}' +> ) +> ``` +> +{: .hands_on} + + +# Conclusion +{:.no_toc} + +This tutorial provides a guide on how to study protein-ligand interaction using molecular dynamics in Galaxy. Performing such analyses in Galaxy makes it straightforward to set up, schedule and run workflows, removing much of the difficulty from MD simulation. Thus, the technical barrier to performing high-throughput studies is greatly reduced. Results are structured in the form of Galaxy histories or collections, and include ready-plotted diagrams, which ensure data can be easily understood and reproduced if necessary. Apart from streamlining the process for existing MD users, this tutorial should also prove useful as a pedagogical guide for educating students or newcomers to the field. + +After completing the tutorial, the user will be familiar at a basic level with a range of MD analysis techniques, and understand the steps required for a typical MD simulation. Thus, they will be equipped to apply these tools to their own problems. diff --git a/topics/computational-chemistry/tutorials/htmd-analysis/workflows/analysis_workflow.ga b/topics/computational-chemistry/tutorials/htmd-analysis/workflows/analysis_workflow.ga new file mode 100644 index 00000000000000..581662119773d4 --- /dev/null +++ b/topics/computational-chemistry/tutorials/htmd-analysis/workflows/analysis_workflow.ga @@ -0,0 +1,446 @@ +{ + "uuid": "38641d95-e161-4aa7-a6a9-1b88e1562f13", + "tags": [ + "computational-chemistry" + ], + "format-version": "0.1", + "name": "Workflow constructed from history 'Hsp90-MDAnalysis'", + "version": 0, + "steps": { + "0": { + "tool_id": null, + "tool_version": null, + "outputs": [], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"name\": \"Galaxy30-[GROMACS_simulation_on_data_28,_data_15,_and_data_26].gro\"}", + "id": 0, + "uuid": "82ae4961-8bb0-440d-bed6-9206d8b9d860", + "errors": null, + "name": "Input dataset", + "label": null, + "inputs": [{ + "name": "Galaxy30-[GROMACS_simulation_on_data_28,_data_15,_and_data_26].gro", + "description": "" + }], + "position": { + "top": 10, + "left": 10 + }, + "annotation": "", + "content_id": null, + "type": "data_input" + }, + "1": { + "tool_id": null, + "tool_version": null, + "outputs": [], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"name\": \"Galaxy31-[GROMACS_simulation_on_data_28,_data_15,_and_data_26].xtc\"}", + "id": 1, + "uuid": "f67e98b9-2b4f-4d7d-9da7-ec3c23ffbd38", + "errors": null, + "name": "Input dataset", + "label": null, + "inputs": [{ + "name": "Galaxy31-[GROMACS_simulation_on_data_28,_data_15,_and_data_26].xtc", + "description": "" + }], + "position": { + "top": 130, + "left": 10 + }, + "annotation": "", + "content_id": null, + "type": "data_input" + }, + "2": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_editconf/gmx_editconf/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "gro", + "name": "output" + }], + "workflow_outputs": [], + "input_connections": { + "input_file": { + "output_name": "output", + "id": 0 + } + }, + "tool_state": "{\"box\": \"{\\\"__current_case__\\\": 1, \\\"config\\\": \\\"false\\\"}\", \"__page__\": null, \"capture_log\": \"\\\"false\\\"\", \"input_file\": \"null\", \"output_format\": \"\\\"pdb\\\"\", \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "id": 2, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "3b8a9d5ced85", + "name": "gmx_editconf", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "8e7740cc-9889-46df-9534-5b904688efdf", + "errors": null, + "name": "GROMACS structure configuration", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 230 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_editconf/gmx_editconf/2019.1.4", + "type": "tool" + }, + "3": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/md_converter/md_converter/1.9.3.2", + "tool_version": "1.9.3.2", + "outputs": [{ + "type": "data", + "name": "output" + }], + "workflow_outputs": [], + "input_connections": { + "input_file": { + "output_name": "output", + "id": 1 + } + }, + "tool_state": "{\"__page__\": null, \"input_file\": \"null\", \"output_format\": \"\\\"dcd\\\"\", \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "id": 3, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "79e8ab8f1e81", + "name": "md_converter", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "c7e8f328-8ea6-451b-9c00-d305a351d4ac", + "errors": null, + "name": "MDTraj file converter", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 130, + "left": 230 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/md_converter/md_converter/1.9.3.2", + "type": "tool" + }, + "4": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsd/bio3d_rmsd/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "png", + "name": "rmsd_plot" + }, { + "type": "png", + "name": "rmsd_hist_plot" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 2 + }, + "dcdin": { + "output_name": "output", + "id": 3 + } + }, + "tool_state": "{\"__page__\": null, \"rmsd\": \"{\\\"__current_case__\\\": 0, \\\"sele\\\": \\\"calpha\\\"}\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"pdbin\": \"null\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"dcdin\": \"null\"}", + "id": 4, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "77e28e1da9f4", + "name": "bio3d_rmsd", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "a76c9ffd-fca2-443a-b872-0fc8cf1ae22e", + "errors": null, + "name": "RMSD Analysis", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsd/bio3d_rmsd/2.3.4", + "type": "tool" + }, + "5": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsf/bio3d_rmsf/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "png", + "name": "rmsf_plot" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 2 + }, + "dcdin": { + "output_name": "output", + "id": 3 + } + }, + "tool_state": "{\"__page__\": null, \"rmsf\": \"{\\\"__current_case__\\\": 0, \\\"sele\\\": \\\"calpha\\\"}\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"pdbin\": \"null\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"dcdin\": \"null\"}", + "id": 5, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "6bcb804a54c3", + "name": "bio3d_rmsf", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "8ca09773-3d34-45d7-b36e-7a06d6a825fd", + "errors": null, + "name": "RMSF Analysis", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 130, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsf/bio3d_rmsf/2.3.4", + "type": "tool" + }, + "6": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_pca/bio3d_pca/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "png", + "name": "pca_plot" + }, { + "type": "png", + "name": "pca_cluster" + }, { + "type": "png", + "name": "pc1_rmsf" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 2 + }, + "dcdin": { + "output_name": "output", + "id": 3 + } + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"dcdin\": \"null\", \"pdbin\": \"null\", \"pca\": \"{\\\"__current_case__\\\": 0, \\\"sele\\\": \\\"calpha\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"method\": \"\\\"false\\\"\"}", + "id": 6, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "24867ab16f36", + "name": "bio3d_pca", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "fdcabd33-6303-459e-a14c-0732e97bda39", + "errors": null, + "name": "PCA", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 250, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_pca/bio3d_pca/2.3.4", + "type": "tool" + }, + "7": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/mdanalysis_cosine_analysis/mdanalysis_cosine_analysis/0.20", + "tool_version": "0.20", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "txt", + "name": "cosout" + }], + "workflow_outputs": [], + "input_connections": { + "trajin": { + "output_name": "output", + "id": 3 + }, + "strin": { + "output_name": "output", + "id": 2 + } + }, + "tool_state": "{\"index\": \"\\\"0\\\"\", \"__page__\": null, \"strin\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"trajin\": \"null\", \"components\": \"\\\"3\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id": 7, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "e39bc1f90d8f", + "name": "mdanalysis_cosine_analysis", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "32333821-6326-449b-b8fe-ad9685874a76", + "errors": null, + "name": "Cosine Content", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 370, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/mdanalysis_cosine_analysis/mdanalysis_cosine_analysis/0.20", + "type": "tool" + }, + "8": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_pca_visualize/bio3d_pca_visualize/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "pdb", + "name": "pdbout" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 2 + }, + "dcdin": { + "output_name": "output", + "id": 3 + } + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"dcdin\": \"null\", \"pc_id\": \"\\\"1\\\"\", \"pdbin\": \"null\", \"pca\": \"{\\\"__current_case__\\\": 0, \\\"sele\\\": \\\"calpha\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"method\": \"\\\"false\\\"\"}", + "id": 8, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "f61a718993fd", + "name": "bio3d_pca_visualize", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "a08577af-1864-461c-8e18-41baaad461fd", + "errors": null, + "name": "PCA visualization", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 490, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_pca_visualize/bio3d_pca_visualize/2.3.4", + "type": "tool" + }, + "9": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/vmd_hbonds/vmd_hbonds/1.9.3", + "tool_version": "1.9.3", + "outputs": [{ + "type": "txt", + "name": "detail" + }, { + "type": "txt", + "name": "hbond" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "trajin": { + "output_name": "output", + "id": 3 + }, + "strin": { + "output_name": "output", + "id": 2 + } + }, + "tool_state": "{\"distance\": \"\\\"3.0\\\"\", \"angle\": \"\\\"20.0\\\"\", \"__page__\": null, \"sele2\": \"\\\"resname G5E\\\"\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"trajin\": \"null\", \"sele1\": \"\\\"protein\\\"\", \"strin\": \"null\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"molid\": \"\\\"0\\\"\"}", + "id": 9, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "8aa5e465b043", + "name": "vmd_hbonds", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "5f044466-9a0d-4f9c-b2e6-3e9cdc4910c2", + "errors": null, + "name": "Hydrogen Bond Analysis using VMD", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 610, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/vmd_hbonds/vmd_hbonds/1.9.3", + "type": "tool" + }, + "10": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsd/bio3d_rmsd/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "png", + "name": "rmsd_plot" + }, { + "type": "png", + "name": "rmsd_hist_plot" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 2 + }, + "dcdin": { + "output_name": "output", + "id": 3 + } + }, + "tool_state": "{\"__page__\": null, \"rmsd\": \"{\\\"__current_case__\\\": 12, \\\"resid\\\": \\\"G5E\\\", \\\"sele\\\": \\\"resid\\\"}\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"33a7c4388bba11eaaa3d001b21d75532\\\"\", \"pdbin\": \"null\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"dcdin\": \"null\"}", + "id": 10, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "77e28e1da9f4", + "name": "bio3d_rmsd", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "e0fa1995-3a30-4aea-9368-e1e45446b6ba", + "errors": null, + "name": "RMSD Analysis", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 730, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsd/bio3d_rmsd/2.3.4", + "type": "tool" + } + }, + "annotation": "Protein-ligand analysis workflow (HTMD)", + "a_galaxy_workflow": "true" +} diff --git a/topics/computational-chemistry/tutorials/htmd-analysis/workflows/index.md b/topics/computational-chemistry/tutorials/htmd-analysis/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/computational-chemistry/tutorials/htmd-analysis/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/computational-chemistry/tutorials/htmd-analysis/workflows/main_workflow.ga b/topics/computational-chemistry/tutorials/htmd-analysis/workflows/main_workflow.ga new file mode 100644 index 00000000000000..3903f462a51edb --- /dev/null +++ b/topics/computational-chemistry/tutorials/htmd-analysis/workflows/main_workflow.ga @@ -0,0 +1,1138 @@ +{ + "uuid": "253ee9a8-2ae8-4a7d-a5da-90973972ab28", + "tags": [ + "computational-chemistry" + ], + "format-version": "0.1", + "name": "Workflow Hsp90-lig_analysis TS", + "version": 0, + "steps": { + "0": { + "tool_id": null, + "tool_version": null, + "outputs": [], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"name\": \"Galaxy13-[Topology].itp\"}", + "id": 0, + "uuid": "49009750-5d63-4986-937c-cd00683b7bd7", + "errors": null, + "name": "Input dataset", + "label": null, + "inputs": [{ + "name": "Galaxy13-[Topology].itp", + "description": "" + }], + "position": { + "top": 10, + "left": 10 + }, + "annotation": "", + "content_id": null, + "type": "data_input" + }, + "1": { + "tool_id": null, + "tool_version": null, + "outputs": [], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"name\": \"Galaxy14-[Structure_file_(GRO_format,_optional)].gro\"}", + "id": 1, + "uuid": "cee452c1-75df-4b5c-af05-5f5e2fe7f582", + "errors": null, + "name": "Input dataset", + "label": null, + "inputs": [{ + "name": "Galaxy14-[Structure_file_(GRO_format,_optional)].gro", + "description": "" + }], + "position": { + "top": 130, + "left": 10 + }, + "annotation": "", + "content_id": null, + "type": "data_input" + }, + "2": { + "tool_id": null, + "tool_version": null, + "outputs": [], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"name\": \"Galaxy6-[GROMACS_initial_setup_on_data_2].gro\"}", + "id": 2, + "uuid": "b42068d1-358f-42ef-825f-3cfa7e83c6f7", + "errors": null, + "name": "Input dataset", + "label": null, + "inputs": [{ + "name": "Galaxy6-[GROMACS_initial_setup_on_data_2].gro", + "description": "" + }], + "position": { + "top": 250, + "left": 10 + }, + "annotation": "", + "content_id": null, + "type": "data_input" + }, + "3": { + "tool_id": null, + "tool_version": null, + "outputs": [], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"name\": \"Galaxy5-[GROMACS_initial_setup_on_data_2].top\"}", + "id": 3, + "uuid": "309a68f1-3679-44da-9ed2-1cb142cee24b", + "errors": null, + "name": "Input dataset", + "label": null, + "inputs": [{ + "name": "Galaxy5-[GROMACS_initial_setup_on_data_2].top", + "description": "" + }], + "position": { + "top": 370, + "left": 10 + }, + "annotation": "", + "content_id": null, + "type": "data_input" + }, + "4": { + "tool_id": null, + "tool_version": null, + "outputs": [], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"name\": \"Galaxy5-[GROMACS_initial_setup_on_data_2].top\"}", + "id": 4, + "uuid": "0daad8a0-1001-44b7-8c6a-5166c8cd24c9", + "errors": null, + "name": "Input dataset", + "label": null, + "inputs": [{ + "name": "Galaxy5-[GROMACS_initial_setup_on_data_2].top", + "description": "" + }], + "position": { + "top": 490, + "left": 10 + }, + "annotation": "", + "content_id": null, + "type": "data_input" + }, + "5": { + "tool_id": null, + "tool_version": null, + "outputs": [], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"name\": \"Galaxy37-[GROMACS_solvation_and_adding_ions_on_data_35_and_data_30].top\"}", + "id": 5, + "uuid": "03e3c449-a5b7-4d49-a6ad-f461489c263e", + "errors": null, + "name": "Input dataset", + "label": null, + "inputs": [{ + "name": "Galaxy37-[GROMACS_solvation_and_adding_ions_on_data_35_and_data_30].top", + "description": "" + }], + "position": { + "top": 610, + "left": 10 + }, + "annotation": "", + "content_id": null, + "type": "data_input" + }, + "6": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/get_pdb/get_pdb/0.1.0", + "tool_version": "0.1.0", + "outputs": [{ + "type": "pdb", + "name": "output" + }], + "workflow_outputs": [], + "input_connections": {}, + "tool_state": "{\"pdb_id\": \"\\\"6hhr\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id": 6, + "tool_shed_repository": { + "owner": "bgruening", + "changeset_revision": "538790c6c21b", + "name": "get_pdb", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "575d6ca7-b859-4078-8d07-d9749b556cd6", + "errors": null, + "name": "Get PDB file", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 730, + "left": 10 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/get_pdb/get_pdb/0.1.0", + "type": "tool" + }, + "7": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_makendx/gmx_makendx/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "ndx", + "name": "ndx" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "input_file": { + "output_name": "output", + "id": 1 + } + }, + "tool_state": "{\"__page__\": null, \"capture_log\": \"\\\"true\\\"\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"sel\": \"\\\"0 & ! a H*\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id": 7, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "01a435922dd5", + "name": "gmx_makendx", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "1fae4a94-4dc4-4c3d-a625-6fe6949d3d06", + "errors": null, + "name": "Create GROMACS index files", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 370, + "left": 230 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_makendx/gmx_makendx/2019.1.4", + "type": "tool" + }, + "8": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_editconf/gmx_editconf/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "gro", + "name": "output" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "input_file": { + "output_name": "output", + "id": 2 + } + }, + "tool_state": "{\"box\": \"{\\\"__current_case__\\\": 0, \\\"config\\\": \\\"true\\\", \\\"dim\\\": \\\"1.0\\\", \\\"type\\\": \\\"triclinic\\\"}\", \"__page__\": null, \"capture_log\": \"\\\"true\\\"\", \"input_file\": \"null\", \"output_format\": \"\\\"gro\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "id": 8, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "e69ce1e7fb6a", + "name": "gmx_editconf", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "5bab3739-9dd3-4ce5-a102-a63ab892a0ea", + "errors": null, + "name": "GROMACS structure configuration", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 250, + "left": 230 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_editconf/gmx_editconf/2019.1.4", + "type": "tool" + }, + "9": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_grep_tool/1.1.1", + "tool_version": "1.1.1", + "outputs": [{ + "type": "input", + "name": "output" + }], + "workflow_outputs": [], + "input_connections": { + "infile": { + "output_name": "output", + "id": 6 + } + }, + "tool_state": "{\"lines_before\": \"\\\"0\\\"\", \"regex_type\": \"\\\"-P\\\"\", \"__page__\": null, \"color\": \"\\\"NOCOLOR\\\"\", \"invert\": \"\\\"-v\\\"\", \"case_sensitive\": \"\\\"-i\\\"\", \"__rerun_remap_job_id__\": null, \"url_paste\": \"\\\"HETATM\\\"\", \"lines_after\": \"\\\"0\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"infile\": \"null\"}", + "id": 9, + "tool_shed_repository": { + "owner": "bgruening", + "changeset_revision": "0a8c6b61f0f4", + "name": "text_processing", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "af970e71-9955-4a76-ba2f-0eb21ddaf0c1", + "errors": null, + "name": "Search in textfiles", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 230 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_grep_tool/1.1.1", + "type": "tool" + }, + "10": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_grep_tool/1.1.1", + "tool_version": "1.1.1", + "outputs": [{ + "type": "input", + "name": "output" + }], + "workflow_outputs": [], + "input_connections": { + "infile": { + "output_name": "output", + "id": 6 + } + }, + "tool_state": "{\"lines_before\": \"\\\"0\\\"\", \"regex_type\": \"\\\"-P\\\"\", \"__page__\": null, \"color\": \"\\\"NOCOLOR\\\"\", \"invert\": \"\\\"\\\"\", \"case_sensitive\": \"\\\"-i\\\"\", \"__rerun_remap_job_id__\": null, \"url_paste\": \"\\\"AG5E\\\"\", \"lines_after\": \"\\\"0\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"infile\": \"null\"}", + "id": 10, + "tool_shed_repository": { + "owner": "bgruening", + "changeset_revision": "0a8c6b61f0f4", + "name": "text_processing", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "eaeb4b1d-64ea-4bdc-9a55-ed02cc9a1fca", + "errors": null, + "name": "Search in textfiles", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 130, + "left": 230 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_grep_tool/1.1.1", + "type": "tool" + }, + "11": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_restraints/gmx_restraints/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "itp", + "name": "output1" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "gro_input": { + "output_name": "output", + "id": 1 + }, + "ndx_input": { + "output_name": "ndx", + "id": 7 + } + }, + "tool_state": "{\"index\": \"\\\"0\\\"\", \"capture_log\": \"\\\"true\\\"\", \"__page__\": null, \"ndx_input\": \"null\", \"gro_input\": \"null\", \"fc\": \"\\\"1000 1000 1000\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "id": 11, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "f79f4671eaf2", + "name": "gmx_restraints", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "51be2f75-fe09-4307-ac46-eef51f0ce11d", + "errors": null, + "name": "Create GROMACS position restraints files", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 370, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_restraints/gmx_restraints/2019.1.4", + "type": "tool" + }, + "12": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_solvate/gmx_solvate/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "gro", + "name": "output1" + }, { + "type": "top", + "name": "output2" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "top_input": { + "output_name": "output", + "id": 4 + }, + "gro_input": { + "output_name": "output", + "id": 8 + } + }, + "tool_state": "{\"__page__\": null, \"capture_log\": \"\\\"true\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null, \"gro_input\": \"null\", \"water_model\": \"\\\"spc216\\\"\", \"top_input\": \"null\", \"neutralise\": \"\\\"true\\\"\"}", + "id": 12, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "3c77d66e7fe5", + "name": "gmx_solvate", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "cdb5b93f-247b-4414-8b59-9f638e131291", + "errors": null, + "name": "GROMACS solvation and adding ions", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 250, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_solvate/gmx_solvate/2019.1.4", + "type": "tool" + }, + "13": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_setup/gmx_setup/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "top", + "name": "output1" + }, { + "type": "gro", + "name": "output2" + }, { + "type": "itp", + "name": "output3" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "pdb_input": { + "output_name": "output", + "id": 9 + } + }, + "tool_state": "{\"__page__\": null, \"ff\": \"\\\"amber99sb\\\"\", \"capture_log\": \"\\\"true\\\"\", \"__rerun_remap_job_id__\": null, \"water\": \"\\\"tip3p\\\"\", \"pdb_input\": \"null\", \"ignore_h\": \"\\\"false\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id": 13, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "ccdf0b30a422", + "name": "gmx_setup", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "74d0f987-8759-4589-b8d2-f2f5c8a30bda", + "errors": null, + "name": "GROMACS initial setup", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_setup/gmx_setup/2019.1.4", + "type": "tool" + }, + "14": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/openbabel_compound_convert/openbabel_compound_convert/2.4.2.1.0", + "tool_version": "2.4.2.1.0", + "outputs": [{ + "type": "text", + "name": "outfile" + }], + "workflow_outputs": [], + "input_connections": { + "infile": { + "output_name": "output", + "id": 10 + } + }, + "tool_state": "{\"__page__\": null, \"dative_bonds\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null, \"appendtotitle\": \"\\\"\\\"\", \"remove_h\": \"\\\"false\\\"\", \"oformat\": \"{\\\"__current_case__\\\": 41, \\\"gen2d\\\": \\\"false\\\", \\\"gen3d\\\": \\\"false\\\", \\\"mol2_ignore_res\\\": \\\"false\\\", \\\"oformat_opts_selector\\\": \\\"mol2\\\"}\", \"ph\": \"\\\"-1.0\\\"\", \"unique\": \"{\\\"__current_case__\\\": 0, \\\"unique_opts_selector\\\": \\\"\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"infile\": \"null\", \"split\": \"\\\"false\\\"\"}", + "id": 14, + "tool_shed_repository": { + "owner": "bgruening", + "changeset_revision": "a072cb207571", + "name": "openbabel_compound_convert", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "a9399171-56de-4301-90d7-e766fe11ba99", + "errors": null, + "name": "Compound conversion", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 130, + "left": 450 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/openbabel_compound_convert/openbabel_compound_convert/2.4.2.1.0", + "type": "tool" + }, + "15": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_em/gmx_em/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "gro", + "name": "output1" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "top_input": { + "output_name": "output2", + "id": 12 + }, + "gro_input": { + "output_name": "output1", + "id": 12 + } + }, + "tool_state": "{\"__page__\": null, \"capture_log\": \"\\\"true\\\"\", \"__rerun_remap_job_id__\": null, \"gro_input\": \"null\", \"top_input\": \"null\", \"mdp\": \"{\\\"__current_case__\\\": 1, \\\"coulombtype\\\": \\\"PME\\\", \\\"cutoffscheme\\\": \\\"Verlet\\\", \\\"emstep\\\": \\\"0.01\\\", \\\"emtol\\\": \\\"1000.0\\\", \\\"integrator\\\": \\\"steep\\\", \\\"md_steps\\\": \\\"50000\\\", \\\"mdpfile\\\": \\\"default\\\", \\\"rcoulomb\\\": \\\"1.0\\\", \\\"rlist\\\": \\\"1.0\\\", \\\"rvdw\\\": \\\"1.0\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id": 15, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "476cdf677b03", + "name": "gmx_em", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "a4367418-58d9-4b59-9f1f-4c5dd35b1a25", + "errors": null, + "name": "GROMACS energy minimization", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 670 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_em/gmx_em/2019.1.4", + "type": "tool" + }, + "16": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_makendx/gmx_makendx/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "ndx", + "name": "ndx" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "input_file": { + "output_name": "output1", + "id": 15 + } + }, + "tool_state": "{\"__page__\": null, \"capture_log\": \"\\\"true\\\"\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"sel\": \"\\\"1 | 13\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id": 16, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "01a435922dd5", + "name": "gmx_makendx", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "33c38586-7b9b-4f69-bb48-86b98e6e61b2", + "errors": null, + "name": "Create GROMACS index files", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 890 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_makendx/gmx_makendx/2019.1.4", + "type": "tool" + }, + "17": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_sim/gmx_sim/2019.1.4.1", + "tool_version": "2019.1.4.1", + "outputs": [{ + "type": "gro", + "name": "output1" + }, { + "type": "xtc", + "name": "output4" + }, { + "type": "cpt", + "name": "output5" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "inps|itp_in": { + "output_name": "output3", + "id": 13 + }, + "top_input": { + "output_name": "output", + "id": 5 + }, + "gro_input": { + "output_name": "output1", + "id": 15 + } + }, + "tool_state": "{\"__page__\": null, \"capture_log\": \"\\\"true\\\"\", \"__rerun_remap_job_id__\": null, \"gro_input\": \"null\", \"sets\": \"{\\\"ensemble\\\": \\\"nvt\\\", \\\"mdp\\\": {\\\"__current_case__\\\": 1, \\\"constraints\\\": \\\"all-bonds\\\", \\\"coulombtype\\\": \\\"PME\\\", \\\"cutoffscheme\\\": \\\"Verlet\\\", \\\"integrator\\\": \\\"md\\\", \\\"md_steps\\\": \\\"50000\\\", \\\"mdpfile\\\": \\\"default\\\", \\\"rcoulomb\\\": \\\"1.0\\\", \\\"rlist\\\": \\\"1.0\\\", \\\"rvdw\\\": \\\"1.0\\\", \\\"step_length\\\": \\\"0.002\\\", \\\"temperature\\\": \\\"300\\\", \\\"write_freq\\\": \\\"1000\\\"}}\", \"top_input\": \"null\", \"outps\": \"{\\\"cpt_out\\\": \\\"true\\\", \\\"edr_out\\\": \\\"false\\\", \\\"str\\\": \\\"gro\\\", \\\"tpr_out\\\": \\\"false\\\", \\\"traj\\\": \\\"xtc\\\", \\\"xvg_out\\\": \\\"false\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"inps\": \"{\\\"cpt_in\\\": null, \\\"itp_in\\\": null, \\\"ndx_in\\\": null}\"}", + "id": 17, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "b1061cc2653a", + "name": "gmx_sim", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "4f54eda0-96ba-4f83-863f-14d50260655d", + "errors": null, + "name": "GROMACS simulation", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 130, + "left": 890 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_sim/gmx_sim/2019.1.4.1", + "type": "tool" + }, + "18": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_sim/gmx_sim/2019.1.4.1", + "tool_version": "2019.1.4.1", + "outputs": [{ + "type": "gro", + "name": "output1" + }, { + "type": "xtc", + "name": "output4" + }, { + "type": "cpt", + "name": "output5" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "inps|itp_in": { + "output_name": "output3", + "id": 13 + }, + "top_input": { + "output_name": "output", + "id": 5 + }, + "gro_input": { + "output_name": "output1", + "id": 17 + }, + "inps|cpt_in": { + "output_name": "output5", + "id": 17 + } + }, + "tool_state": "{\"__page__\": null, \"capture_log\": \"\\\"true\\\"\", \"__rerun_remap_job_id__\": null, \"gro_input\": \"null\", \"sets\": \"{\\\"ensemble\\\": \\\"npt\\\", \\\"mdp\\\": {\\\"__current_case__\\\": 1, \\\"constraints\\\": \\\"all-bonds\\\", \\\"coulombtype\\\": \\\"PME\\\", \\\"cutoffscheme\\\": \\\"Verlet\\\", \\\"integrator\\\": \\\"md\\\", \\\"md_steps\\\": \\\"50000\\\", \\\"mdpfile\\\": \\\"default\\\", \\\"rcoulomb\\\": \\\"1.0\\\", \\\"rlist\\\": \\\"1.0\\\", \\\"rvdw\\\": \\\"1.0\\\", \\\"step_length\\\": \\\"0.002\\\", \\\"temperature\\\": \\\"300\\\", \\\"write_freq\\\": \\\"1000\\\"}}\", \"top_input\": \"null\", \"outps\": \"{\\\"cpt_out\\\": \\\"true\\\", \\\"edr_out\\\": \\\"false\\\", \\\"str\\\": \\\"gro\\\", \\\"tpr_out\\\": \\\"false\\\", \\\"traj\\\": \\\"xtc\\\", \\\"xvg_out\\\": \\\"false\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"inps\": \"{\\\"cpt_in\\\": null, \\\"itp_in\\\": null, \\\"ndx_in\\\": null}\"}", + "id": 18, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "b1061cc2653a", + "name": "gmx_sim", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "99b2cc3b-1bca-420d-88c0-63ad5a0c1cac", + "errors": null, + "name": "GROMACS simulation", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 1110 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_sim/gmx_sim/2019.1.4.1", + "type": "tool" + }, + "19": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_sim/gmx_sim/2019.1.4.1", + "tool_version": "2019.1.4.1", + "outputs": [{ + "type": "gro", + "name": "output1" + }, { + "type": "xtc", + "name": "output4" + }, { + "type": "cpt", + "name": "output5" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "top_input": { + "output_name": "output2", + "id": 12 + }, + "gro_input": { + "output_name": "output1", + "id": 18 + }, + "inps|cpt_in": { + "output_name": "output5", + "id": 18 + } + }, + "tool_state": "{\"__page__\": null, \"capture_log\": \"\\\"true\\\"\", \"__rerun_remap_job_id__\": null, \"gro_input\": \"null\", \"sets\": \"{\\\"ensemble\\\": \\\"npt\\\", \\\"mdp\\\": {\\\"__current_case__\\\": 1, \\\"constraints\\\": \\\"none\\\", \\\"coulombtype\\\": \\\"PME\\\", \\\"cutoffscheme\\\": \\\"Verlet\\\", \\\"integrator\\\": \\\"md\\\", \\\"md_steps\\\": \\\"1000000\\\", \\\"mdpfile\\\": \\\"default\\\", \\\"rcoulomb\\\": \\\"1.0\\\", \\\"rlist\\\": \\\"1.0\\\", \\\"rvdw\\\": \\\"1.0\\\", \\\"step_length\\\": \\\"0.001\\\", \\\"temperature\\\": \\\"300\\\", \\\"write_freq\\\": \\\"1000\\\"}}\", \"top_input\": \"null\", \"outps\": \"{\\\"cpt_out\\\": \\\"true\\\", \\\"edr_out\\\": \\\"false\\\", \\\"str\\\": \\\"gro\\\", \\\"tpr_out\\\": \\\"false\\\", \\\"traj\\\": \\\"xtc\\\", \\\"xvg_out\\\": \\\"false\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"inps\": \"{\\\"cpt_in\\\": null, \\\"itp_in\\\": null, \\\"ndx_in\\\": null}\"}", + "id": 19, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "b1061cc2653a", + "name": "gmx_sim", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "201ee70f-e5ea-4f83-813e-fd645146328d", + "errors": null, + "name": "GROMACS simulation", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 1330 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_sim/gmx_sim/2019.1.4.1", + "type": "tool" + }, + "20": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/md_converter/md_converter/1.9.3.2", + "tool_version": "1.9.3.2", + "outputs": [{ + "type": "data", + "name": "output" + }], + "workflow_outputs": [], + "input_connections": { + "input_file": { + "output_name": "output4", + "id": 19 + } + }, + "tool_state": "{\"__page__\": null, \"output_format\": \"\\\"dcd\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null, \"input_file\": \"null\"}", + "id": 20, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "79e8ab8f1e81", + "name": "md_converter", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "c25828ec-69ac-4c13-8138-f7a365e1f770", + "errors": null, + "name": "MDTraj file converter", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 1550 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/md_converter/md_converter/1.9.3.2", + "type": "tool" + }, + "21": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_editconf/gmx_editconf/2019.1.4", + "tool_version": "2019.1.4", + "outputs": [{ + "type": "gro", + "name": "output" + }], + "workflow_outputs": [], + "input_connections": { + "input_file": { + "output_name": "output1", + "id": 19 + } + }, + "tool_state": "{\"box\": \"{\\\"__current_case__\\\": 1, \\\"config\\\": \\\"false\\\"}\", \"__page__\": null, \"capture_log\": \"\\\"false\\\"\", \"input_file\": \"null\", \"output_format\": \"\\\"pdb\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "id": 21, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "e69ce1e7fb6a", + "name": "gmx_editconf", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "e3e86b20-504b-48b0-a530-843d541bda82", + "errors": null, + "name": "GROMACS structure configuration", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 130, + "left": 1550 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/gmx_editconf/gmx_editconf/2019.1.4", + "type": "tool" + }, + "22": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsd/bio3d_rmsd/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "png", + "name": "rmsd_plot" + }, { + "type": "png", + "name": "rmsd_hist_plot" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 21 + }, + "dcdin": { + "output_name": "output", + "id": 20 + } + }, + "tool_state": "{\"__page__\": null, \"rmsd\": \"{\\\"__current_case__\\\": 0, \\\"sele\\\": \\\"calpha\\\"}\", \"__rerun_remap_job_id__\": null, \"pdbin\": \"null\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"dcdin\": \"null\"}", + "id": 22, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "77e28e1da9f4", + "name": "bio3d_rmsd", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "767b019a-780e-4dd5-8ad3-2036a48da2be", + "errors": null, + "name": "RMSD Analysis", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 10, + "left": 1770 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsd/bio3d_rmsd/2.3.4", + "type": "tool" + }, + "23": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsf/bio3d_rmsf/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "png", + "name": "rmsf_plot" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 21 + }, + "dcdin": { + "output_name": "output", + "id": 20 + } + }, + "tool_state": "{\"__page__\": null, \"rmsf\": \"{\\\"__current_case__\\\": 0, \\\"sele\\\": \\\"calpha\\\"}\", \"__rerun_remap_job_id__\": null, \"pdbin\": \"null\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"dcdin\": \"null\"}", + "id": 23, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "6bcb804a54c3", + "name": "bio3d_rmsf", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "360aa76d-cf2a-4032-a996-fa466744fd21", + "errors": null, + "name": "RMSF Analysis", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 130, + "left": 1770 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsf/bio3d_rmsf/2.3.4", + "type": "tool" + }, + "24": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/vmd_hbonds/vmd_hbonds/1.9.3", + "tool_version": "1.9.3", + "outputs": [{ + "type": "txt", + "name": "detail" + }, { + "type": "txt", + "name": "hbond" + }, { + "type": "txt", + "name": "report" + }], + "workflow_outputs": [], + "input_connections": { + "trajin": { + "output_name": "output", + "id": 20 + }, + "strin": { + "output_name": "output", + "id": 21 + } + }, + "tool_state": "{\"distance\": \"\\\"3.0\\\"\", \"angle\": \"\\\"20.0\\\"\", \"__page__\": null, \"sele2\": \"\\\"resname UNL\\\"\", \"__rerun_remap_job_id__\": null, \"trajin\": \"null\", \"sele1\": \"\\\"protein \\\"\", \"strin\": \"null\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"molid\": \"\\\"0\\\"\"}", + "id": 24, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "8aa5e465b043", + "name": "vmd_hbonds", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "ef2d75f6-6a59-4db2-8599-5e625598b35d", + "errors": null, + "name": "Hydrogen Bond Analysis using VMD", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 250, + "left": 1770 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/vmd_hbonds/vmd_hbonds/1.9.3", + "type": "tool" + }, + "25": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsd/bio3d_rmsd/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "png", + "name": "rmsd_plot" + }, { + "type": "png", + "name": "rmsd_hist_plot" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 21 + }, + "dcdin": { + "output_name": "output", + "id": 20 + } + }, + "tool_state": "{\"__page__\": null, \"rmsd\": \"{\\\"__current_case__\\\": 12, \\\"resid\\\": \\\"UNL\\\", \\\"sele\\\": \\\"resid\\\"}\", \"__rerun_remap_job_id__\": null, \"pdbin\": \"null\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"dcdin\": \"null\"}", + "id": 25, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "77e28e1da9f4", + "name": "bio3d_rmsd", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "c6babea0-be48-4421-a6af-b2d48cf6b95f", + "errors": null, + "name": "RMSD Analysis", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 370, + "left": 1770 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_rmsd/bio3d_rmsd/2.3.4", + "type": "tool" + }, + "26": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_pca/bio3d_pca/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "png", + "name": "pca_plot" + }, { + "type": "png", + "name": "pca_cluster" + }, { + "type": "png", + "name": "pc1_rmsf" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 21 + }, + "dcdin": { + "output_name": "output", + "id": 20 + } + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"method\": \"\\\"false\\\"\", \"pdbin\": \"null\", \"pca\": \"{\\\"__current_case__\\\": 0, \\\"sele\\\": \\\"calpha\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"dcdin\": \"null\"}", + "id": 26, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "24867ab16f36", + "name": "bio3d_pca", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "f68cdfca-76a3-4065-a9b3-f7427876cd3c", + "errors": null, + "name": "PCA", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 490, + "left": 1770 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_pca/bio3d_pca/2.3.4", + "type": "tool" + }, + "27": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_pca_visualize/bio3d_pca_visualize/2.3.4", + "tool_version": "2.3.4", + "outputs": [{ + "type": "pdb", + "name": "pdbout" + }], + "workflow_outputs": [], + "input_connections": { + "pdbin": { + "output_name": "output", + "id": 21 + }, + "dcdin": { + "output_name": "output", + "id": 20 + } + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"dcdin\": \"null\", \"pc_id\": \"\\\"1\\\"\", \"pdbin\": \"null\", \"pca\": \"{\\\"__current_case__\\\": 0, \\\"sele\\\": \\\"calpha\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"method\": \"\\\"false\\\"\"}", + "id": 27, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "f61a718993fd", + "name": "bio3d_pca_visualize", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "d493e6c4-c2c2-4299-b3e7-3b58f9bdf24e", + "errors": null, + "name": "PCA visualization", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 610, + "left": 1770 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/bio3d_pca_visualize/bio3d_pca_visualize/2.3.4", + "type": "tool" + }, + "28": { + "tool_id": "toolshed.g2.bx.psu.edu/repos/chemteam/mdanalysis_cosine_analysis/mdanalysis_cosine_analysis/0.20", + "tool_version": "0.20", + "outputs": [{ + "type": "tabular", + "name": "output" + }, { + "type": "txt", + "name": "cosout" + }], + "workflow_outputs": [], + "input_connections": { + "trajin": { + "output_name": "output", + "id": 20 + }, + "strin": { + "output_name": "output", + "id": 21 + } + }, + "tool_state": "{\"index\": \"\\\"0\\\"\", \"__page__\": null, \"strin\": \"null\", \"__rerun_remap_job_id__\": null, \"trajin\": \"null\", \"components\": \"\\\"3\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "id": 28, + "tool_shed_repository": { + "owner": "chemteam", + "changeset_revision": "e39bc1f90d8f", + "name": "mdanalysis_cosine_analysis", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "uuid": "8e5d6f10-f397-4781-a418-0a9d34af8716", + "errors": null, + "name": "Cosine Content", + "post_job_actions": {}, + "label": null, + "inputs": [], + "position": { + "top": 730, + "left": 1770 + }, + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/chemteam/mdanalysis_cosine_analysis/mdanalysis_cosine_analysis/0.20", + "type": "tool" + } + }, + "annotation": "Protein-ligand simulation workflow (HTMD)", + "a_galaxy_workflow": "true" +} diff --git a/topics/contributing/metadata.yaml b/topics/contributing/metadata.yaml index c5617447a61e9b..3f182b9ba18582 100644 --- a/topics/contributing/metadata.yaml +++ b/topics/contributing/metadata.yaml @@ -3,7 +3,7 @@ name: "contributing" type: "instructors" title: "Contributing to the Galaxy Training Material" summary: "Galaxy is a great solution to train the bioinformatics concepts: -numerous bioinformatics tools are available (almost 5,000 in the ToolShed), it +numerous bioinformatics tools are available (more than 7,000 in the ToolShed), it can be used by people without amy computer science skills, it trains to use technology, outlining available resources and efforts that have made them accessible to researchers, it is scalable.<br> diff --git a/topics/contributing/tutorials/create-new-tutorial-content/tutorial.md b/topics/contributing/tutorials/create-new-tutorial-content/tutorial.md index fb275aacd5f5ce..93a4fbb01379c3 100644 --- a/topics/contributing/tutorials/create-new-tutorial-content/tutorial.md +++ b/topics/contributing/tutorials/create-new-tutorial-content/tutorial.md @@ -178,15 +178,16 @@ To help developing the tutorial, we recommend to create a workflow of the differ > ### {% icon hands_on %} Hands-on: Create the structure of the tutorial from a workflow > > 1. Create a small workflow with one or two steps on a running Galaxy instance -> 2. Get the workflow id +> 2. Add the topic name as Tag and the tutorial title as Annotation/Notes to the workflow using the workflow editor. +> 3. Get the workflow id > 1. Go the "Share" page of the workflow > 2. Copy the information after `id=` in the URL of the page -> 3. Get your API key for this Galaxy instance +> 4. Get your API key for this Galaxy instance > 1. Click on **User** --> **Preferences** > 2. Click on **Manage API key** > 3. Click on **Create a new key** (if none is available) > 4. Copy the API key -> 4. Generate the skeleton of the tutorial locally +> 5. Generate the skeleton of the tutorial locally > > ``` > $ planemo training_generate_from_wf \ @@ -198,7 +199,7 @@ To help developing the tutorial, we recommend to create a workflow of the differ > --zenodo_link "URL to the Zenodo record (Optional)" > ``` > -> > ### {% icon comment %} Using a local worklfow +> > ### {% icon comment %} Using a local workflow > > It is also possible to download the workflow locally (with the `.ga` extension), and then run a slightly different command: > > > > ``` @@ -210,7 +211,7 @@ To help developing the tutorial, we recommend to create a workflow of the differ > > ``` > {: .comment} > -> 5. Inspect the generated `tutorial.md` +> 6. Inspect the generated `tutorial.md` {: .hands_on} The generated tutorial is structured with: @@ -778,5 +779,6 @@ A bibliography will automatically be appended to the end of your tutorial (scrol > If you have a DOI for a paper, you can easily obtain the bibtex citation using [doi2bib.org](https://www.doi2bib.org/). {: .tip} + # Conclusion {:.no_toc} diff --git a/topics/contributing/tutorials/create-new-tutorial-technical/tutorial.md b/topics/contributing/tutorials/create-new-tutorial-technical/tutorial.md index aab64b1b85dd8c..14cae4b16afc50 100644 --- a/topics/contributing/tutorials/create-new-tutorial-technical/tutorial.md +++ b/topics/contributing/tutorials/create-new-tutorial-technical/tutorial.md @@ -50,9 +50,10 @@ Once the tutorial is ready, we need to develop a workflow that represents the st > ### {% icon hands_on %} Hands-on: Extract the workflow > -> 1. Download the workflow for the tutorial -> 2. Save it in the `workflow` directory of the tutorial -> 3. Check that your `workflow` directory has an `index.md` with the contents: +> 1. Add the topic name as Tag and the tutorial title as Annotation/Notes to the workflow using the workflow editor. +> 2. Download the workflow for the tutorial +> 3. Save it in the `workflow` directory of the tutorial +> 4. Check that your `workflow` directory has an `index.md` with the contents: > > ```yaml > --- @@ -60,8 +61,6 @@ Once the tutorial is ready, we need to develop a workflow that represents the st > --- > ``` {: .hands_on} -> 3. Edit the workflow with a text editor to add the topic name as 'tags' and to add the tutorial title as 'annotation' to the workflow. - ## Testing the workflow (recommended) @@ -282,7 +281,7 @@ items: > ``` > > 3. Check that the `data-library.yaml` has been generated (or updated) -> 4. Check tha the Zenodo link is in the metadata at the top of the `tutorial.md` +> 4. Check that the Zenodo link is in the metadata at the top of the `tutorial.md` {: .hands_on} # Creating the `data-manager.yaml` (optional) diff --git a/topics/contributing/tutorials/create-new-tutorial/tutorial.md b/topics/contributing/tutorials/create-new-tutorial/tutorial.md index d769bb71df2fe7..ee7ea837ae717f 100644 --- a/topics/contributing/tutorials/create-new-tutorial/tutorial.md +++ b/topics/contributing/tutorials/create-new-tutorial/tutorial.md @@ -259,8 +259,9 @@ For the next times, you can make it quicker. > > 1. Determine the topic > 2. Create your workflow on a running Galaxy instance -> 3. Create a Zenodo record with the input data -> 4. Generate the skeleton of your tutorial +> 3. Add the topic name as Tag and the tutorial title as Annotation/Notes to the workflow using the workflow editor. +> 4. Create a Zenodo record with the input data +> 5. Generate the skeleton of your tutorial > - option 1: from a workflow located on a Galaxy > ``` > $ planemo training_init \ @@ -285,7 +286,7 @@ For the next times, you can make it quicker. > You can use the example workflow file located in `topics/contributing/tutorials/create-new-tutorial/workflows/example-workflow.ga` if > you do not have a workflow of your own. This is the workflow belonging to the *Galaxy 101* introduction tutorial. > -> 5. Fill the remaining metadata in the `tutorial.md` -> 6. Fill the content of the `tutorial.md` -> 7. Check it using Jekyll +> 6. Fill the remaining metadata in the `tutorial.md` +> 7. Fill the content of the `tutorial.md` +> 8. Check it using Jekyll {: .hands_on} diff --git a/topics/dev/images/Makefile b/topics/dev/images/Makefile new file mode 100644 index 00000000000000..7c1c37ab7318d3 --- /dev/null +++ b/topics/dev/images/Makefile @@ -0,0 +1,10 @@ +INPUTS := $(wildcard *.plantuml.txt) +OUTPUTS := $(INPUTS:.txt=.svg) + +all: plantuml.jar plantuml_options.txt $(OUTPUTS) + +$(OUTPUTS): $(INPUTS) + java -jar plantuml.jar -c plantuml_options.txt -tsvg $(INPUTS) + +plantuml.jar: + wget http://jaist.dl.sourceforge.net/project/plantuml/plantuml.jar diff --git a/topics/dev/images/core_branches.plantuml.svg b/topics/dev/images/core_branches.plantuml.svg new file mode 100644 index 00000000000000..f65513ded9ea26 --- /dev/null +++ b/topics/dev/images/core_branches.plantuml.svg @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="422px" preserveAspectRatio="none" style="width:460px;height:422px;" version="1.1" viewBox="0 0 460 422" width="460px" zoomAndPan="magnify"><defs><filter height="300%" id="f1rpk5k5wh7b97" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f1rpk5k5wh7b97)" points="22.5,197.7813,22.5,197.9914,32.6667,197.3669,42.8333,197.9745,53,198.1809,63.1667,197.0679,73.3333,197.7035,83.5,197.7813,83.4456,197.6499,85.2188,198.3954,87.0268,199.2247,88.7151,199.765,90.6417,200.8807,92.3388,201.4424,92.1447,201.362,93.0102,203.185,93.9363,205.033,94.5091,206.7348,95.2888,208.5222,96,210.2813,95.9894,210.2813,96.0595,212.5406,96.0797,214.8,96.1952,217.0594,96.2237,219.3188,96,221.5781,96.2092,221.6648,95.3462,223.3784,94.6783,225.1728,94.0196,226.971,92.849,228.5572,92.3388,230.417,92.4254,230.6259,90.5332,231.0579,88.8714,232.0458,86.9724,232.4612,85.259,233.3248,83.5,234.0781,83.5,234.8197,73.3333,234.0294,63.1667,234.1834,53,234.4168,42.8333,234.4944,32.6667,234.0742,22.5,234.0781,22.5366,234.1666,20.6592,233.1696,19.0007,232.7012,17.2666,232.0502,15.4856,231.2861,13.6612,230.417,13.85,230.4952,12.7802,228.5876,11.9959,226.7982,11.2731,225.0344,10.7141,223.3384,10,221.5781,9.9345,221.5781,10.2271,219.3188,9.9418,217.0594,9.8856,214.8,10.0761,212.5406,10,210.2813,9.7946,210.1962,10.5724,208.4473,11.6643,206.8285,12.3309,205.0335,13.1551,203.3039,13.6612,201.4424,13.6201,201.3433,15.4696,200.8085,17.272,200.1598,18.9042,199.1002,20.72,198.484,22.5,197.7813" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="66" x="20" y="220.7764">Branches</text><polygon fill="#FFEFD5" filter="url(#f1rpk5k5wh7b97)" points="158.5,20,158.5,20.2102,168.4286,19.5857,178.3571,20.1933,188.2857,20.3997,198.2143,19.2866,208.1429,19.9223,218.0714,19.5735,228,19.6165,237.9286,19.9318,247.8571,19.3086,257.7857,20.5536,267.7143,19.3697,277.6429,19.8022,287.5714,20.4319,297.5,19.9142,307.4286,20.0682,317.3571,19.9681,327.2857,20.1785,337.2143,20.2391,347.1429,20.5857,357.0714,20.6711,367,20.6793,376.9286,20.2546,386.8571,20.4636,396.7857,20.7022,406.7143,19.2788,416.6429,20.6785,426.5714,19.7035,436.5,20,436.5681,20.1644,438.2046,20.5798,440.0268,21.4434,441.8979,22.4251,443.5649,22.9139,445.3388,23.6612,445.3713,23.6746,446.1754,25.4721,446.9315,27.2498,447.5343,28.964,448.3562,30.7689,449,32.5,448.8092,32.5,449.0948,41.2781,449.1827,50.0563,449.1482,58.8344,449.2043,67.6125,449,76.3906,448.8512,76.329,448.0669,78.0752,447.3442,79.8469,446.7852,81.6864,446.0105,83.4366,445.3388,85.2295,445.4258,85.4393,443.5488,85.9079,441.7595,86.5883,440.0647,87.4965,438.1827,87.953,436.5,88.8906,436.5,88.3715,426.5714,89.5396,416.6429,89.3263,406.7143,89.6251,396.7857,88.5688,386.8571,89.2098,376.9286,89.481,367,88.4182,357.0714,88.7948,347.1429,89.0166,337.2143,89.5424,327.2857,88.8864,317.3571,89.3532,307.4286,88.3368,297.5,88.2134,287.5714,89.3942,277.6429,88.1737,267.7143,89.3996,257.7857,89.0973,247.8571,88.6227,237.9286,88.5369,228,89.3494,218.0714,88.5913,208.1429,89.4825,198.2143,88.3379,188.2857,89.5081,178.3571,89.3749,168.4286,89.1356,158.5,88.8906,158.506,88.9052,156.8249,88.3822,155.0427,87.6151,153.2183,86.746,151.4631,86.0443,149.6612,85.2295,149.621,85.2128,149.1496,83.5531,148.2444,81.7137,147.5176,79.9482,146.5449,78.0808,146,76.3906,145.8649,76.3906,146.1769,67.6125,146.1433,58.8344,145.9857,50.0563,145.8926,41.2781,146,32.5,145.9326,32.4721,146.5209,30.6447,147.5922,29.0174,148.4245,27.291,149.091,25.4961,149.6612,23.6612,149.7498,23.8752,151.4115,22.8868,153.2078,22.2236,154.915,21.3451,156.7685,20.8197,158.5,20" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="29" x="156" y="42.9951">dev</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="279" x="160" y="59.292">Most active development happens here!</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="236" x="160" y="75.5889">New features must be added here</text><path d="M96,215.9297 L96,216.1165 L98,215.5614 L100,216.1015 L102,216.285 L104,215.2956 L106,215.9297 L106,215.9297 L105.9719,215.9095 L106.8421,214.4314 L107.8537,213.0548 L108.9637,211.7488 L109.7347,210.1995 L110.9805,208.9909 L111.2211,209.0425 L111.4917,205.2735 L112.4648,201.6552 L113.5236,198.0553 L114.0838,194.3484 L114.9063,190.6978 L114.9363,190.7019 L115.2276,188.2515 L115.6558,185.8199 L116.0179,183.3792 L116.5059,180.9558 L116.5835,178.476 L116.8798,178.5096 L117.1926,175.7818 L117.3141,173.0324 L117.7155,170.3146 L118.1299,167.5984 L118.1289,164.835 L117.8099,164.8041 L119.0033,158.9346 L119.1462,152.9633 L120.0877,147.0694 L120.2068,141.0958 L121,135.1875 L120.9697,135.1846 L121.9023,129.2898 L122.1269,123.3264 L122.7692,117.4035 L123.4467,111.484 L123.8711,105.54 L124.0549,105.5608 L124.1785,102.8116 L124.6161,100.0979 L124.5455,97.3267 L125.233,94.6414 L125.4165,91.899 L125.6579,91.9321 L125.9477,89.4815 L126.3573,87.0473 L126.2101,84.5367 L126.4711,82.0822 L127.0938,79.6772 L126.8237,79.6193 L127.8533,76.0131 L128.5787,72.3417 L129.7453,68.7649 L130.1585,65.0264 L131.0195,61.3841 L130.8957,61.2952 L132.098,60.0555 L132.7709,58.4358 L133.8204,57.0863 L135.2382,56.0013 L136,54.4453 L136,54.8326 L138,55.0982 L140,54.1593 L142,54.729 L144,54.9701 L146,54.4453 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1rpk5k5wh7b97)" points="158.5,108.8906,158.5,109.1008,168.6304,108.4763,178.7609,109.0839,188.8913,109.2903,199.0217,108.1772,209.1522,108.8129,219.2826,108.4641,229.413,108.5071,239.5435,108.8225,249.6739,108.1993,259.8043,109.4443,269.9348,108.2603,280.0652,108.6929,290.1957,109.3226,300.3261,108.8048,310.4565,108.9589,320.587,108.8587,330.7174,109.0692,340.8478,109.1298,350.9783,109.4763,361.1087,109.5617,371.2391,109.5699,381.3696,109.1453,391.5,108.8906,391.5591,109.0334,393.3573,109.8391,394.9435,110.133,396.8899,111.2963,398.5332,111.7282,400.3388,112.5518,400.5032,112.6199,400.9186,114.2564,401.7822,116.0786,402.7639,117.9497,403.2528,119.6166,404,121.3906,404.1053,121.3906,404.3386,131.4219,404.4162,141.4531,403.9961,151.4844,404.2872,161.5156,403.4276,171.5469,404,181.5781,404.0876,181.6144,403.4366,183.4158,402.6724,185.1704,401.9921,186.9596,400.9223,188.5876,400.3388,190.417,400.2556,190.2161,398.4918,190.9578,396.7958,191.8633,395.0105,192.5531,393.3547,193.5557,391.5,194.0781,391.5,193.9034,381.3696,193.7351,371.2391,194.3064,361.1087,193.4113,350.9783,193.559,340.8478,194.7271,330.7174,194.5138,320.587,194.8126,310.4565,193.7563,300.3261,194.3973,290.1957,194.6685,280.0652,193.6057,269.9348,193.9823,259.8043,194.2041,249.6739,194.7299,239.5435,194.0739,229.413,194.5407,219.2826,193.5243,209.1522,193.4009,199.0217,194.5817,188.8913,193.3612,178.7609,194.5871,168.6304,194.2848,158.5,194.0781,158.4658,193.9956,156.6871,193.2369,155.023,192.7549,153.1585,191.7892,151.5044,191.3315,149.6612,190.417,149.4909,190.3465,149.1191,188.728,148.3458,186.9432,147.5399,185.1449,146.7468,183.3519,146,181.5781,146.7266,181.5781,146.6136,171.5469,146.1693,161.5156,146.2682,151.4844,145.8697,141.4531,146.7165,131.4219,146,121.3906,146.0477,121.4104,146.7854,119.6449,147.2771,117.7775,148.0719,116.0356,149.0924,114.3873,149.6612,112.5518,149.716,112.6841,151.4235,111.8063,153.1556,110.9881,154.9365,110.2877,156.6447,109.4115,158.5,108.8906" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="61" x="156" y="131.8857">master/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="224" x="160" y="148.1826">References latest stable branch.</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="234" x="160" y="164.4795">Generally never develop or deploy</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="160" y="180.7764">against this branch.</text><path d="M96,215.9297 L96,216.1165 L98,215.5614 L100,216.1015 L102,216.285 L104,215.2956 L106,215.9297 L106,215.9297 L105.9741,215.9068 L107.6393,213.7902 L109.4348,211.7889 L111.3211,209.8679 L112.8948,207.6704 L114.9063,205.8601 L115.1411,205.9334 L115.2834,203.7124 L116.1114,201.7054 L117.0231,199.7245 L117.448,197.5917 L118.1289,195.5388 L118.1584,195.5459 L118.6893,193.1691 L119.3545,190.8248 L119.9548,188.4648 L120.6787,186.1348 L121,183.707 L121.2898,183.7774 L121.8676,181.4119 L122.2584,179.001 L122.9229,176.6566 L123.6002,174.3152 L123.8711,171.8753 L123.5651,171.7797 L124.8035,169.9009 L125.0344,167.7075 L126.0312,165.7532 L126.2392,163.5526 L127.0938,161.554 L127.0709,161.5338 L129.1219,159.7584 L130.64,157.5118 L132.4726,155.5432 L134.3315,153.598 L136,151.4844 L136,151.8544 L138,151.4809 L140,151.7397 L142,150.9756 L144,151.7372 L146,151.4844 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1rpk5k5wh7b97)" points="158.5,214.0781,158.5,214.2883,168.4231,213.6638,178.3462,214.2714,188.2692,214.4778,198.1923,213.3647,208.1154,214.0004,218.0385,213.6516,227.9615,213.6946,237.8846,214.01,247.8077,213.3868,257.7308,214.6318,267.6538,213.4478,277.5769,213.8804,287.5,214.5101,297.4231,213.9923,307.3462,214.1464,317.2692,214.0462,327.1923,214.2567,337.1154,214.3173,347.0385,214.6638,356.9615,214.7492,366.8846,214.7574,376.8077,214.3328,386.7308,214.5417,396.6538,214.7804,406.5769,213.3569,416.5,214.0781,416.5866,214.2871,418.2299,214.719,420.1036,215.707,421.7402,216.1224,423.5623,216.986,425.3388,217.7393,425.5672,217.8339,426.0561,219.5008,426.8357,221.2883,427.6398,223.0858,428.3959,224.8635,429,226.5781,428.9961,226.5781,429.2872,236.6094,428.4276,246.6406,429.2844,256.6719,429.5482,266.7031,429.4445,276.7344,429,286.7656,429.1888,286.8438,428.119,288.4718,427.3347,290.218,426.6119,291.9897,426.0529,293.8292,425.3388,295.6045,425.3138,295.5439,423.658,296.5465,421.781,297.0151,419.9918,297.6955,418.2969,298.6037,416.5,299.2656,416.5,298.5988,406.5769,298.7465,396.6538,299.9146,386.7308,299.7013,376.8077,300.0001,366.8846,298.9438,356.9615,299.5848,347.0385,299.856,337.1154,298.7932,327.1923,299.1698,317.2692,299.3916,307.3462,299.9174,297.4231,299.2614,287.5,299.7282,277.5769,298.7118,267.6538,298.5884,257.7308,299.7692,247.8077,298.5487,237.8846,299.7746,227.9615,299.4723,218.0385,298.9977,208.1154,298.9119,198.1923,299.7244,188.2692,298.9663,178.3462,299.8575,168.4231,298.7129,158.5,299.2656,158.5788,299.4558,156.794,298.6825,154.9957,297.8766,153.2027,297.0835,151.5216,296.5605,149.6612,295.6045,149.8501,295.6827,148.9811,293.8583,148.2793,292.1031,147.4243,290.2845,146.9529,288.6248,146,286.7656,146.1549,286.7656,146.1726,276.7344,145.3916,266.7031,145.5948,256.6719,146.5307,246.6406,146.4298,236.6094,146,226.5781,145.9868,226.5726,146.633,224.7693,147.397,223.0147,147.9854,221.1873,149.0567,219.56,149.6612,217.7393,149.7555,217.967,151.4961,217.1692,153.2853,216.4888,154.947,215.5005,156.7434,214.8372,158.5,214.0781" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="116" x="156" y="237.0732">release_20.05/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="259" x="160" y="253.3701">Release branches - named by month.</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="226" x="160" y="269.667">Generally bug fixes should target</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="154" x="160" y="285.9639">oldest relevant branch</text><path d="M96,215.9297 L96,216.1165 L98,215.5614 L100,216.1015 L102,216.285 L104,215.2956 L106,215.9297 L106,215.9297 L105.9799,215.9016 L107.671,217.0487 L109.4634,218.3374 L111.3261,219.7246 L112.9463,220.7725 L114.9063,222.2957 L115.1319,222.3938 L115.8681,224.9849 L117.2632,227.8626 L118.7385,230.7753 L119.7463,233.4845 L121,236.3008 L121.0278,236.3129 L122.2057,239.0961 L123.5103,241.9345 L124.7537,244.7463 L126.1137,247.6087 L127.0938,250.3059 L127.2672,250.5485 L129.0506,251.8247 L130.7221,252.9444 L132.5573,254.2931 L134.4002,255.6526 L136,256.6719 L136,256.0308 L138,257.275 L140,256.4083 L142,257.1464 L144,256.2319 L146,256.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1rpk5k5wh7b97)" points="158.5,319.2656,158.5,319.4758,168.5909,318.8513,178.6818,319.4589,188.7727,319.6653,198.8636,318.5522,208.9545,319.1879,219.0455,318.8391,229.1364,318.8821,239.2273,319.1975,249.3182,318.5743,259.4091,319.8193,269.5,319.2656,269.4196,319.0715,271.2425,319.937,273.0906,320.8631,274.7924,321.4359,276.5798,322.2156,278.3388,322.9268,278.329,322.9227,279.126,324.7173,279.8769,326.4928,280.7159,328.3048,281.4744,330.0835,282,331.7656,282.2264,331.7656,282.0849,334.025,282.1545,336.2844,282.2341,338.5438,281.7596,340.8031,282,343.0625,282.209,343.1491,281.1765,344.7924,280.6999,346.6661,279.6509,348.3027,279.05,350.1248,278.3388,351.9013,278.4334,352.1297,276.5649,352.6186,274.8167,353.3982,273.0787,354.2023,271.3209,354.9584,269.5,355.5625,269.5,355.5586,259.4091,355.8497,249.3182,354.9901,239.2273,355.8469,229.1364,356.1107,219.0455,356.007,208.9545,356.1755,198.8636,355.0794,188.7727,354.9103,178.6818,354.9411,168.5909,355.5036,158.5,355.5625,158.4749,355.502,156.8192,355.0401,154.9422,354.0442,153.1529,353.2602,151.4581,352.7039,149.6612,351.9013,149.4558,351.8163,148.7691,350.0673,148.3965,348.4486,147.5986,346.6536,146.9584,344.924,146,343.0625,145.8927,343.0625,146.1064,340.8031,146.1968,338.5438,145.8425,336.2844,145.968,334.025,146,331.7656,146.0388,331.7817,146.9329,330.081,147.4632,328.2296,148.3392,326.5213,148.7584,324.6239,149.6612,322.9268,149.5748,322.7182,151.4932,322.3496,153.1052,321.2415,155.0294,320.8868,156.7586,320.0615,158.5,319.2656" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="116" x="156" y="342.2607">release_20.01/</text><path d="M96,215.9297 L96,216.1165 L98,215.5614 L100,216.1015 L102,216.285 L104,215.2956 L106,215.9297 L106,215.9297 L105.975,215.9058 L106.8589,216.8428 L107.8689,217.9 L108.9664,219.0408 L109.7621,219.8936 L110.9805,221.1497 L111.2171,221.2172 L111.4962,223.8253 L112.4663,226.6304 L113.5205,229.4595 L114.0844,232.1488 L114.9063,234.9116 L114.9362,234.9166 L115.5368,238.8006 L116.2736,242.7072 L116.9447,246.6029 L117.7412,250.5193 L118.1289,254.3681 L118.4247,254.4062 L119.0025,258.8674 L119.3896,263.3041 L120.0559,267.7767 L120.7353,272.251 L121,276.6719 L120.6821,276.631 L121.8733,281.1711 L122.0177,285.5766 L122.958,290.0844 L123.0787,294.4868 L123.8711,298.9756 L123.8411,298.9707 L124.8408,302.9208 L125.1388,306.7547 L125.8509,310.6572 L126.5977,314.5654 L127.0938,318.4321 L127.2716,318.4829 L127.8772,321.184 L128.7868,323.9719 L129.2046,326.6195 L130.3559,329.4763 L131.0195,332.194 L131.1958,332.3622 L132.1586,333.3744 L133.2088,334.4701 L133.8525,335.1778 L134.7942,336.17 L136,337.4141 L136,336.8617 L138,337.3617 L140,337.2394 L142,338.0198 L144,337.2588 L146,337.4141 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1rpk5k5wh7b97)" points="158.5,375.5625,158.5,375.7727,168.5909,375.1482,178.6818,375.7558,188.7727,375.9622,198.8636,374.8491,208.9545,375.4848,219.0455,375.136,229.1364,375.179,239.2273,375.4943,249.3182,374.8711,259.4091,376.1161,269.5,375.5625,269.4196,375.3684,271.2425,376.2338,273.0906,377.16,274.7924,377.7328,276.5798,378.5124,278.3388,379.2237,278.329,379.2196,279.126,381.0142,279.8769,382.7897,280.7159,384.6017,281.4744,386.3803,282,388.0625,282.2264,388.0625,282.0849,390.3219,282.1545,392.5813,282.2341,394.8406,281.7596,397.1,282,399.3594,282.209,399.4459,281.1765,401.0893,280.6999,402.963,279.6509,404.5995,279.05,406.4217,278.3388,408.1982,278.4334,408.4266,276.5649,408.9154,274.8167,409.6951,273.0787,410.4992,271.3209,411.2553,269.5,411.8594,269.5,411.8555,259.4091,412.1466,249.3182,411.287,239.2273,412.1438,229.1364,412.4076,219.0455,412.3039,208.9545,412.4724,198.8636,411.3763,188.7727,411.2072,178.6818,411.238,168.5909,411.8005,158.5,411.8594,158.4749,411.7989,156.8192,411.337,154.9422,410.3411,153.1529,409.557,151.4581,409.0007,149.6612,408.1982,149.4558,408.1131,148.7691,406.3642,148.3965,404.7455,147.5986,402.9505,146.9584,401.2208,146,399.3594,145.8927,399.3594,146.1064,397.1,146.1968,394.8406,145.8425,392.5813,145.968,390.3219,146,388.0625,146.0388,388.0786,146.9329,386.3779,147.4632,384.5264,148.3392,382.8182,148.7584,380.9208,149.6612,379.2237,149.5748,379.0151,151.4932,378.6465,153.1052,377.5384,155.0294,377.1837,156.7586,376.3584,158.5,375.5625" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="116" x="156" y="398.5576">release_19.09/</text><path d="M96,215.9297 L96,216.1165 L98,215.5614 L100,216.1015 L102,216.285 L104,215.2956 L106,215.9297 L106,215.9297 L105.9711,215.9108 L106.8373,217.354 L107.8494,218.8922 L108.9629,220.4966 L109.727,221.8731 L110.9805,223.5687 L111.2199,223.6253 L111.1224,225.2578 L111.724,227.0555 L112.4109,228.8734 L112.6016,230.574 L113.0532,232.3363 L113.0832,232.3411 L113.4098,234.6083 L113.8727,236.8977 L114.2699,239.1764 L114.7926,241.4755 L114.9063,243.708 L115.2022,243.7449 L115.5413,246.4364 L115.6894,249.1041 L116.1171,251.8066 L116.5578,254.5107 L116.5835,257.1631 L116.2647,257.1303 L117.1926,260.1975 L117.0706,263.1567 L117.7467,266.198 L117.601,269.1547 L118.1289,272.1808 L118.0986,272.1781 L119.0315,278.7376 L119.2558,285.2347 L119.8982,291.7686 L120.5757,298.3056 L121,304.8203 L121.1843,304.8365 L121.5725,311.3481 L122.2756,317.8873 L122.4692,324.3817 L123.4228,330.943 L123.8711,337.4598 L124.1135,337.4848 L124.3767,340.4836 L124.7603,343.4948 L124.5848,346.4485 L124.8191,349.4443 L125.4165,352.4775 L125.1424,352.4433 L125.726,355.1653 L126.0007,357.8487 L126.7234,360.588 L126.6813,363.232 L127.0938,365.9326 L126.9433,365.9081 L127.5645,368.2233 L127.5424,370.4337 L127.9778,372.7186 L128.8608,375.0764 L128.9468,377.3044 L129.1352,377.3489 L129.679,379.133 L129.6367,380.7785 L130.3285,382.5975 L130.8603,384.3788 L131.0195,386.0719 L130.8437,385.9572 L131.9799,387.5764 L133.0586,389.1581 L134.2505,390.8135 L135.0023,392.1821 L136,393.7109 L136,394.1221 L138,393.2187 L140,393.1089 L142,394.1586 L144,393.0737 L146,393.7109 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[75be49de950d89d6992435e770d2534f] +@startmindmap + +!include plantuml_style.txt +!include plantuml_options.txt + +* Branches +**:<b><i>dev</i></b> + Most active development happens here! + New features must be added here; +**:<b><i>master/</i></b> + References latest stable branch. + Generally never develop or deploy + against this branch.; +**:<b><i>release_20.05/</i></b> + Release branches - named by month. + Generally bug fixes should target + oldest relevant branch; +** <b><i>release_20.01/</i></b> +** <b><i>release_19.09/</i></b> +@endmindmap + +@startmindmap + +<style> +mindmapDiagram { + node { + BackgroundColor #FFEFD5 + BorderColor DarkOrange + LineColor Orange + } +} +</style> +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +* Branches +**:<b><i>dev</i></b> + Most active development happens here! + New features must be added here; +**:<b><i>master/</i></b> + References latest stable branch. + Generally never develop or deploy + against this branch.; +**:<b><i>release_20.05/</i></b> + Release branches - named by month. + Generally bug fixes should target + oldest relevant branch; +** <b><i>release_20.01/</i></b> +** <b><i>release_19.09/</i></b> +@endmindmap + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/core_branches.plantuml.txt b/topics/dev/images/core_branches.plantuml.txt new file mode 100644 index 00000000000000..ba54dd4eee94be --- /dev/null +++ b/topics/dev/images/core_branches.plantuml.txt @@ -0,0 +1,19 @@ +@startmindmap +!include plantuml_style.txt +!include plantuml_options.txt + +* Branches +**:<b><i>dev</i></b> + Most active development happens here! + New features must be added here; +**:<b><i>master/</i></b> + References latest stable branch. + Generally never develop or deploy + against this branch.; +**:<b><i>release_20.05/</i></b> + Release branches - named by month. + Generally bug fixes should target + oldest relevant branch; +** <b><i>release_20.01/</i></b> +** <b><i>release_19.09/</i></b> +@endmindmap diff --git a/topics/dev/images/core_files_ci.plantuml.svg b/topics/dev/images/core_files_ci.plantuml.svg new file mode 100644 index 00000000000000..530d0fbdf51f78 --- /dev/null +++ b/topics/dev/images/core_files_ci.plantuml.svg @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="510px" preserveAspectRatio="none" style="width:860px;height:510px;" version="1.1" viewBox="0 0 860 510" width="860px" zoomAndPan="magnify"><defs><filter height="300%" id="fkup0oyj8d9pv" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="22.5,241.4844,22.5268,241.5491,24.2149,242.089,26.0602,243.0084,27.8543,243.8042,29.4801,244.1936,31.3388,245.1455,31.3149,245.1356,31.9397,246.8589,32.6852,248.6322,33.5145,250.4401,34.0549,252.1284,35,253.9844,35.1845,253.9844,34.7899,256.2438,34.9341,258.5031,35.144,260.7625,34.9714,263.0219,35,265.2813,35.021,265.29,34.2579,267.0449,33.5905,268.8396,32.8769,270.6151,32.2514,272.427,31.3388,274.1201,31.4244,274.3267,29.6577,275.0615,27.8358,275.663,26.0947,276.4595,24.3573,277.2653,22.5,277.7813,22.408,277.5592,20.8188,277.258,18.9266,276.2255,17.2648,275.7489,15.3658,274.6999,13.6612,274.1201,13.6401,274.1113,13.1573,272.4469,12.1817,270.5783,11.4969,268.8302,10.8365,267.0922,10,265.2813,10.1387,265.2813,9.9987,263.0219,10.0957,260.7625,9.8092,258.5031,10.0948,256.2438,10,253.9844,10.1688,254.0543,10.8691,252.2733,11.6533,250.527,12.0479,248.6195,12.7281,246.8301,13.6612,245.1455,13.5819,244.9542,15.4214,244.3952,17.1716,243.6206,19.0514,243.1587,20.71,242.1628,22.5,241.4844" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="5" x="20" y="264.4795">/</text><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="97.5,68.1484,97.5,68.3586,107.6,67.7341,117.7,68.3417,127.8,68.5481,137.9,67.435,148,68.0707,158.1,67.7219,168.2,67.7649,178.3,68.0803,188.4,67.4571,198.5,68.7021,208.6,67.5182,218.7,67.9507,228.8,68.5804,238.9,68.0627,249,68.2167,259.1,68.1165,269.2,68.327,279.3,68.3876,289.4,68.7341,299.5,68.1484,299.5856,68.3551,301.3544,69.0899,303.068,69.6913,304.8624,70.4879,306.6606,71.2936,308.3388,71.8096,308.1167,71.7176,309.28,73.6639,309.712,75.3073,310.6999,77.181,311.1153,78.8175,312,80.6484,311.9772,80.6484,312.2472,86.1672,311.9838,91.6859,312.0351,97.2047,312.1129,102.7234,312,108.2422,312.1282,108.2953,311.2666,110.0095,310.624,111.8144,309.627,113.4725,309.1586,115.3495,308.3388,117.081,308.4088,117.2498,306.6278,117.9502,304.8815,118.7343,302.9739,119.129,301.1846,119.8091,299.5,120.7422,299.5,120.1208,289.4,120.6833,279.3,120.5457,269.2,121.4236,259.1,120.5675,249,120.3991,238.9,120.9705,228.8,120.0753,218.7,120.2231,208.6,121.3911,198.5,121.1779,188.4,121.4767,178.3,120.4204,168.2,121.0614,158.1,121.3326,148,120.2698,137.9,120.6463,127.8,120.8682,117.7,121.3939,107.6,120.738,97.5,120.7422,97.559,120.8846,95.6616,119.8394,93.8781,119.0692,92.2609,118.7006,90.3375,117.5925,88.6612,117.081,88.8179,117.1459,87.9926,115.3396,87.1142,113.5113,86.3555,111.7326,85.8735,110.0685,85,108.2422,84.9002,108.2422,85.1973,102.7234,84.8158,97.2047,85.2058,91.6859,85.1614,86.1672,85,80.6484,85.0754,80.6797,85.7468,78.8867,86.6882,77.2056,87.3857,75.4234,87.9811,73.599,88.6612,71.8096,88.6954,71.8922,90.4123,71.0373,92.2881,70.5658,93.9842,69.6606,95.7542,68.9338,97.5,68.1484" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="18" x="95" y="91.1436">.ci</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="203" x="99" y="107.4404">scripts for linting Python, etc..</text><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="374.5,51.8516,374.5,52.0617,384.5333,51.4372,394.5667,52.0448,404.6,52.2512,414.6333,51.1382,424.6667,51.7738,434.7,51.4251,444.7333,51.4681,454.7667,51.7834,464.8,51.1602,474.8333,52.4052,484.8667,51.2213,494.9,51.6538,504.9333,52.2835,514.9667,51.7658,525,51.9198,535.0333,51.8196,545.0667,52.0301,555.1,52.0907,565.1333,52.4373,575.1667,52.5226,585.2,52.5308,595.2333,52.1062,605.2667,52.3151,615.3,52.5538,625.3333,51.1304,635.3667,52.5301,645.4,51.5551,655.4333,52.3854,665.4667,51.3565,675.5,51.8516,675.4913,51.8305,677.3624,52.8122,679.0293,53.301,680.8167,54.0807,682.6143,54.8848,684.3388,55.5127,684.467,55.5658,685.0699,57.28,685.8918,59.0849,686.3593,60.743,687.3553,62.6201,688,64.3516,688.5482,64.3516,688.4445,74.3828,688.613,84.4141,687.5169,94.4453,687.3478,104.4766,687.3786,114.5078,688,124.5391,687.9819,124.5316,687.2072,126.2818,686.7454,128.1615,685.7495,129.8201,684.9654,131.5664,684.3388,133.3779,684.368,133.4482,682.486,133.9048,680.7371,134.6825,679.1183,135.7744,677.3233,136.441,675.5,137.0391,675.5,137.7736,665.4667,136.7173,655.4333,137.3583,645.4,137.6295,635.3667,136.5667,625.3333,136.9432,615.3,137.165,605.2667,137.6908,595.2333,137.0349,585.2,137.5016,575.1667,136.4853,565.1333,136.3618,555.1,137.5427,545.0667,136.3221,535.0333,137.548,525,137.2457,514.9667,136.7711,504.9333,136.6853,494.9,137.4978,484.8667,136.7397,474.8333,137.6309,464.8,136.4863,454.7667,137.6565,444.7333,137.5234,434.7,137.284,424.6667,137.0863,414.6333,137.7657,404.6,137.6526,394.5667,137.2083,384.5333,137.3073,374.5,137.0391,374.4834,136.9989,372.8236,136.5275,370.9842,135.6223,369.2187,134.8955,367.3513,133.9228,365.6612,133.3779,365.5364,133.3262,365.0924,131.6778,364.329,129.8972,363.4512,128.0691,362.633,126.2657,362,124.5391,361.7811,124.5391,361.3138,114.5078,362.4147,104.4766,362.7396,94.4453,362.5264,84.4141,362.6949,74.3828,362,64.3516,361.9579,64.3341,362.7591,62.5949,363.3451,60.7666,364.2842,59.0845,365.0049,57.312,365.6612,55.5127,365.7316,55.6828,367.3996,54.7098,369.1796,54.0069,371.021,53.4526,372.8046,52.7585,374.5,51.8516" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="62" x="372" y="74.8467">jenkins/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="302" x="376" y="91.1436">sub-directory per Jenkins job type, wrappers</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="275" x="376" y="107.4404">around run_tests for Dockerized testing</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="195" x="376" y="123.7373">can be used outside Jenkins</text><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="750.5,20,750.5,20.0701,755.3,19.8619,760.1,20.0644,764.9,20.1332,769.7,19.7622,774.5,20,774.4901,19.9761,776.2134,20.6009,777.9866,21.3464,779.7946,22.1757,781.4829,22.716,783.3388,23.6612,783.5093,23.7318,783.877,25.3485,784.7424,27.1715,785.6686,29.0196,786.2414,30.7213,787,32.5,787.0227,32.5,786.9894,34.7594,787.0595,37.0188,787.0797,39.2781,787.1952,41.5375,787,43.7969,787.2067,43.8825,786.477,45.6513,785.6139,47.3649,784.9461,49.1593,784.2873,50.9575,783.3388,52.6357,783.2468,52.4136,781.6576,53.5769,779.7655,54.0089,778.1036,54.9968,776.2046,55.4122,774.5,56.2969,774.5,56.274,769.7,56.5441,764.9,56.2806,760.1,56.332,755.3,56.4098,750.5,56.2969,750.5531,56.4251,748.7317,55.5634,747.0011,54.9209,745.1237,53.9239,743.4652,53.4555,741.6612,52.6357,741.83,52.7056,741.0658,50.9246,740.3855,49.1784,739.3157,47.2708,738.5314,45.4814,738,43.7969,737.7929,43.7969,737.9804,41.5375,737.9345,39.2781,738.2271,37.0188,737.9418,34.7594,738,32.5,737.8944,32.4562,738.8025,30.7614,739.2591,28.8794,740.0368,27.1305,741.1288,25.5117,741.6612,23.6612,741.7167,23.7953,743.5226,23.1551,745.1557,22.0976,747.0052,21.5628,748.8075,20.9141,750.5,20" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="29" x="748" y="42.9951">api/</text><path d="M688,94.4453 L688,94.6321 L690,94.077 L692,94.6171 L694,94.8006 L696,93.8112 L698,94.4453 L698,94.4453 L697.9757,94.4207 L699.6481,92.5512 L701.4427,90.8055 L703.3225,89.1459 L704.9091,87.1896 L706.9063,85.6489 L707.138,85.7317 L707.287,83.7514 L708.1125,82.0128 L709.0206,80.3038 L709.4485,78.4231 L710.1289,76.6326 L710.1581,76.6407 L710.6894,74.5617 L711.3538,72.5196 L711.954,70.4596 L712.6766,68.4337 L713,66.2969 L713.2874,66.3767 L713.8651,64.3105 L714.2575,62.1929 L714.9212,60.1506 L715.5976,58.1118 L715.8711,55.9611 L715.5693,55.8532 L716.7996,54.2594 L717.0361,52.3102 L718.0281,50.6312 L718.242,48.674 L719.0938,46.9448 L719.0724,46.9232 L721.1066,45.4201 L722.641,43.4109 L724.4704,41.7003 L726.3245,40.0148 L728,38.1484 L728,38.5184 L730,38.145 L732,38.4037 L734,37.6396 L736,38.4012 L738,38.1484 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="750.5,76.2969,750.5,76.5071,760.0556,75.8826,769.6111,76.4902,779.1667,76.6966,788.7222,75.5835,798.2778,76.2192,807.8333,75.8704,817.3889,75.9134,826.9444,76.2287,836.5,76.2969,836.4118,76.084,838.3384,77.1996,839.9551,77.5672,841.7781,78.4327,843.6262,79.3588,845.3388,79.958,845.3124,79.9471,846.0921,81.7345,846.7935,83.4895,847.5905,85.2841,848.3414,87.0596,849,88.7969,849.1952,88.7969,849.2237,91.0563,849.2264,93.3156,849.0849,95.575,849.1545,97.8344,849,100.0938,849.2163,100.1833,848.0457,101.7695,847.7445,103.7158,846.712,105.3592,846.2355,107.2329,845.3388,108.9326,845.2757,108.7801,843.5623,109.6437,841.8979,110.6254,840.0293,111.1143,838.2812,111.8939,836.5,112.5938,836.5,112.9324,826.9444,113.01,817.3889,112.5898,807.8333,112.881,798.2778,112.0213,788.7222,112.8781,779.1667,113.1419,769.6111,113.0383,760.0556,113.2068,750.5,112.5938,750.4384,112.445,748.649,111.6607,746.8852,110.9379,745.1892,110.3789,743.4039,109.6043,741.6612,108.9326,741.871,109.0195,740.8751,107.1425,740.0911,105.3533,739.5348,103.6584,738.5269,101.7765,738,100.0938,737.827,100.0938,738.2163,97.8344,738.1452,95.575,738.2448,93.3156,737.8927,91.0563,738,88.7969,738.0983,88.8376,738.9141,87.1044,739.319,85.2011,740.1672,83.4813,740.9677,81.7419,741.6612,79.958,741.7443,80.1588,743.4284,79.2245,745.2557,78.636,746.8938,77.5908,748.6458,76.8205,750.5,76.2969" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="91" x="748" y="99.292">framework/</text><path d="M688,94.4453 L688,94.6321 L690,94.077 L692,94.6171 L694,94.8006 L696,93.8112 L698,94.4453 L698,94.4453 L698,94.4108 L704,94.2558 L710,94.2749 L716,94.415 L722,94.138 L728,94.4453 L728,94.9374 L730,93.8851 L732,94.2695 L734,94.8293 L736,94.3691 L738,94.4453 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="750.5,132.5938,750.5,132.8039,760.9286,132.1794,771.3571,132.787,781.7857,132.9934,792.2143,131.8804,802.6429,132.516,813.0714,132.1673,823.5,132.5938,823.4511,132.4756,825.2591,133.305,826.9473,133.8453,828.8739,134.9609,830.4907,135.3286,832.3388,136.2549,832.2779,136.2297,833.2041,138.0778,833.7769,139.7795,834.5565,141.5669,835.2579,143.3219,836,145.0938,836.0595,145.0938,836.0797,147.3531,836.1952,149.6125,836.2237,151.8719,836.2264,154.1313,836,156.3906,836.0784,156.4231,835.4105,158.2175,834.7518,160.0157,833.5812,161.6019,833.28,163.5482,832.3388,165.2295,832.301,165.1381,830.6392,166.1261,828.7402,166.5415,827.0268,167.4051,825.3624,168.3868,823.5,168.8906,823.5,168.8419,813.0714,168.9959,802.6429,169.2293,792.2143,169.3069,781.7857,168.8867,771.3571,169.1778,760.9286,168.3182,750.5,168.8906,750.5363,168.9782,748.8022,168.3272,747.0212,167.5631,745.2749,166.8827,743.3673,165.8129,741.6612,165.2295,741.4603,165.1463,740.7376,163.3824,740.1786,161.6864,739.4039,159.9011,738.9421,158.2453,738,156.3906,737.9418,156.3906,737.8856,154.1313,738.0761,151.8719,737.7777,149.6125,737.827,147.3531,738,145.0938,738.1999,145.1765,738.8664,143.3816,739.6907,141.6519,740.0976,139.7494,741.0272,138.0634,741.6612,136.2549,741.7365,136.4367,743.3687,135.3772,745.1845,134.7609,746.9805,134.097,748.8154,133.5267,750.5,132.5938" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="748" y="155.5889">selenium/</text><path d="M688,94.4453 L688,94.6321 L690,94.077 L692,94.6171 L694,94.8006 L696,93.8112 L698,94.4453 L698,94.4453 L697.9757,94.4207 L699.6481,96.0697 L701.4427,97.8426 L703.3225,99.7016 L704.9091,101.2638 L706.9063,103.2417 L707.138,103.3245 L707.287,104.9507 L708.1125,106.8186 L709.0206,108.7161 L709.4485,110.4419 L710.1289,112.258 L710.1581,112.2661 L710.6894,114.3213 L711.3538,116.4135 L711.954,118.4879 L712.6766,120.5963 L713,122.5938 L713.2874,122.6736 L713.8651,124.7417 L714.2575,126.7583 L714.9212,128.8503 L715.5976,130.9459 L715.8711,132.9295 L715.5693,132.8216 L716.7996,134.8343 L717.0361,136.4917 L718.0281,138.4191 L718.242,140.0685 L719.0938,141.9458 L719.0724,141.9241 L721.1066,143.9396 L722.641,145.4489 L724.4704,147.2569 L726.3245,149.09 L728,150.7422 L728,151.1122 L730,150.7387 L732,150.9975 L734,150.2334 L736,150.995 L738,150.7422 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M312,94.4453 L312,94.6321 L314,94.077 L316,94.6171 L318,94.8006 L320,93.8112 L322,94.4453 L322,94.4453 L322,94.4108 L328,94.2558 L334,94.2749 L340,94.415 L346,94.138 L352,94.4453 L352,94.9374 L354,93.8851 L356,94.2695 L358,94.8293 L360,94.3691 L362,94.4453 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,259.6328 L35,259.8196 L37,259.2645 L39,259.8046 L41,259.9881 L43,258.9987 L45,259.6328 L45,259.6328 L44.9717,259.613 L45.8409,258.1044 L46.8527,256.6958 L47.9635,255.3567 L48.7328,253.778 L49.9805,252.5349 L50.2213,252.5854 L50.4915,248.7349 L51.4648,245.0318 L52.5238,241.3467 L53.0838,237.557 L53.9063,233.8223 L53.9363,233.8263 L54.2276,231.32 L54.6558,228.832 L55.0179,226.3352 L55.506,223.8553 L55.5835,221.3203 L55.8799,221.3531 L56.1926,218.5627 L56.3141,215.7512 L56.7155,212.9707 L57.13,210.1916 L57.1289,207.3665 L56.8098,207.3362 L58.0033,201.3294 L58.1462,195.2231 L59.0878,189.1924 L59.2068,183.0838 L60,177.0391 L59.9697,177.0362 L60.9024,171.0046 L61.1269,164.9061 L61.7692,158.847 L62.4467,152.7913 L62.8711,146.7117 L63.055,146.732 L63.1785,143.9207 L63.6161,141.1442 L63.5455,138.3114 L64.233,135.5625 L64.4165,132.7578 L64.658,132.7902 L64.9478,130.2837 L65.3574,127.7933 L65.2101,125.2281 L65.471,122.7177 L66.0938,120.2559 L65.8235,120.1992 L66.8533,116.508 L67.5786,112.7529 L68.7456,109.0905 L69.1584,105.2698 L70.0195,101.5432 L69.8947,101.4556 L71.0987,100.1819 L71.7691,98.5338 L72.8189,97.1519 L74.24,96.0306 L75,94.4453 L75,94.8326 L77,95.0982 L79,94.1593 L81,94.729 L83,94.9701 L85,94.4453 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="97.5,197.0391,97.5,197.2492,107.6667,196.6247,117.8333,197.2323,128,197.4387,138.1667,196.3257,148.3333,196.9613,158.5,197.0391,158.4456,196.9077,160.2188,197.6532,162.0268,198.4825,163.7151,199.0228,165.6417,200.1385,167.3388,200.7002,167.1447,200.6198,168.0102,202.4428,168.9363,204.2909,169.5091,205.9926,170.2888,207.78,171,209.5391,170.9894,209.5391,171.0595,211.7984,171.0797,214.0578,171.1952,216.3172,171.2237,218.5766,171,220.8359,171.2092,220.9226,170.3462,222.6362,169.6783,224.4306,169.0196,226.2288,167.849,227.815,167.3388,229.6748,167.4254,229.8837,165.5332,230.3157,163.8714,231.3036,161.9724,231.719,160.259,232.5826,158.5,233.3359,158.5,234.0775,148.3333,233.2872,138.1667,233.4412,128,233.6746,117.8333,233.7522,107.6667,233.332,97.5,233.3359,97.5366,233.4244,95.6592,232.4274,94.0007,231.9591,92.2666,231.3081,90.4856,230.5439,88.6612,229.6748,88.85,229.753,87.7802,227.8454,86.9959,226.056,86.2731,224.2922,85.7141,222.5962,85,220.8359,84.9345,220.8359,85.2271,218.5766,84.9418,216.3172,84.8856,214.0578,85.0761,211.7984,85,209.5391,84.7946,209.454,85.5724,207.7051,86.6643,206.0863,87.3309,204.2913,88.1551,202.5617,88.6612,200.7002,88.6201,200.6011,90.4696,200.0663,92.272,199.4176,93.9042,198.358,95.72,197.7418,97.5,197.0391" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="66" x="95" y="220.0342">.circleci/</text><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="233.5,188.8906,233.5,189.1008,243.3824,188.4763,253.2647,189.0839,263.1471,189.2903,273.0294,188.1772,282.9118,188.8129,292.7941,188.4641,302.6765,188.5071,312.5588,188.8225,322.4412,188.1993,332.3235,189.4443,342.2059,188.2603,352.0882,188.6929,361.9706,189.3226,371.8529,188.8048,381.7353,188.9589,391.6176,188.8587,401.5,189.0692,411.3824,189.1298,421.2647,189.4763,431.1471,189.5617,441.0294,189.5699,450.9118,189.1453,460.7941,189.3542,470.6765,189.5929,480.5588,188.1694,490.4412,189.5691,500.3235,188.5941,510.2059,189.4244,520.0882,188.3956,529.9706,188.8221,539.8529,189.6322,549.7353,188.8419,559.6176,188.9959,569.5,188.8906,569.5432,188.9949,571.3209,189.751,573.035,190.3539,574.8399,191.1758,576.498,191.6433,578.3388,192.5518,578.4264,192.5881,579.2399,194.3895,579.9402,196.144,580.7243,197.9333,581.119,199.5612,582,201.3906,581.7826,201.3906,581.7929,206.9094,581.9804,212.4281,581.9345,217.9469,582.2271,223.4656,582,228.9844,581.9462,228.9621,581.1621,230.7084,580.6058,232.549,579.5979,234.2026,578.9112,235.9892,578.3388,237.8232,578.4216,238.0231,576.6266,238.6896,574.897,239.5139,572.9945,239.9208,571.3085,240.8504,569.5,241.4844,569.5,242.0748,559.6176,241.012,549.7353,241.3885,539.8529,241.6104,529.9706,242.1361,520.0882,241.4802,510.2059,241.9469,500.3235,240.9306,490.4412,240.8071,480.5588,241.988,470.6765,240.7674,460.7941,241.9933,450.9118,241.691,441.0294,241.2165,431.1471,241.1306,421.2647,241.9431,411.3824,241.185,401.5,242.0762,391.6176,240.9316,381.7353,242.1018,371.8529,241.9687,361.9706,241.7293,352.0882,241.5316,342.2059,242.211,332.3235,242.098,322.4412,241.6536,312.5588,241.7526,302.6765,241.3541,292.7941,242.2008,282.9118,241.6392,273.0294,241.6569,263.1471,240.876,253.2647,241.0792,243.3824,242.0151,233.5,241.4844,233.5548,241.6167,231.7268,240.7389,229.9234,239.9207,228.1688,239.2203,226.3414,238.3441,224.6612,237.8232,224.7889,237.8761,224.1567,236.1498,223.3588,234.3548,222.6785,232.6086,221.6901,230.7347,221,228.9844,221.0291,228.9844,220.8708,223.4656,221.0947,217.9469,221.0823,212.4281,221.1841,206.9094,221,201.3906,220.9293,201.3613,221.6908,199.6057,222.601,197.9117,223.3714,196.1597,223.7711,194.2542,224.6612,192.5518,224.6364,192.4921,226.448,191.8655,228.1188,190.8992,230.0095,190.4639,231.7651,189.7023,233.5,188.8906" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="83" x="231" y="211.8857">config.yml</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="337" x="235" y="228.1826">run unit tests, lint, tool validation, etc.. on CircleCI</text><path d="M171,215.1875 L171,215.3743 L173,214.8192 L175,215.3593 L177,215.5428 L179,214.5534 L181,215.1875 L181,215.1875 L181,215.153 L187,214.9979 L193,215.0171 L199,215.1572 L205,214.8802 L211,215.1875 L211,215.6796 L213,214.6273 L215,215.0117 L217,215.5715 L219,215.1113 L221,215.1875 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,259.6328 L35,259.8196 L37,259.2645 L39,259.8046 L41,259.9881 L43,258.9987 L45,259.6328 L45,259.6328 L44.9788,259.6056 L46.6647,258.0944 L48.4577,256.7206 L50.3251,255.4422 L51.9361,253.8348 L53.9063,252.6882 L54.1348,252.7794 L54.8648,249.5288 L56.2621,246.5444 L57.7408,243.5925 L58.7458,240.4516 L60,237.4102 L60.0282,237.4214 L61.2056,234.3493 L62.5112,231.3283 L63.755,228.2827 L65.1168,225.2841 L66.0938,222.1321 L66.2771,222.3673 L68.0606,220.9812 L69.7258,219.4435 L71.5642,218.1278 L73.4107,216.8225 L75,215.1875 L75,214.5464 L77,215.7906 L79,214.9239 L81,215.662 L83,214.7475 L85,215.1875 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="97.5,362.2266,97.5,362.4367,107.3571,361.8122,117.2143,362.4198,127.0714,362.6262,136.9286,361.5132,146.7857,362.1488,156.6429,361.8001,166.5,361.8431,176.3571,362.1584,186.2143,361.5352,196.0714,362.7802,205.9286,361.5963,215.7857,362.0288,225.6429,362.6585,235.5,362.2266,235.4891,362.2001,237.2765,362.9798,239.0315,363.6812,240.8261,364.4782,242.6016,365.2291,244.3388,365.8877,244.5192,365.9624,245.2777,367.7411,246.0125,369.5099,246.6139,371.2235,247.4105,373.0179,248,374.7266,248.2341,374.7266,247.7596,376.9859,248.2262,379.2453,247.9012,381.5047,248.1779,383.7641,248,386.0234,247.8476,385.9603,247.2467,387.7825,246.7639,389.6536,245.7883,391.3205,245.1035,393.1079,244.3388,394.8623,244.382,394.9666,242.6242,395.7227,240.8028,396.3255,239.0722,397.1474,237.1947,397.6149,235.5,398.5234,235.5,398.8078,225.6429,399.0716,215.7857,398.968,205.9286,399.1365,196.0714,398.0404,186.2143,397.8713,176.3571,397.902,166.5,398.4646,156.6429,398.3269,146.7857,399.2048,136.9286,398.3488,127.0714,398.1804,117.2143,398.7517,107.3571,397.8566,97.5,398.5234,97.4338,398.3636,95.815,397.9911,94.02,397.1931,92.2904,396.5529,90.3879,395.4954,88.6612,394.8623,88.7595,394.903,88.1108,393.1698,87.0512,391.2665,86.4349,389.5467,85.771,387.8073,85,386.0234,85.2173,386.0234,84.9986,383.7641,85.1542,381.5047,84.8154,379.2453,84.7742,376.9859,85,374.7266,85.1551,374.7908,85.5114,372.8673,86.6212,371.256,87.2603,369.4496,87.8464,367.6213,88.6612,365.8877,88.616,365.7788,90.4875,365.2968,92.1585,364.3311,94.04,363.8733,95.6617,362.7886,97.5,362.2266" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="143" x="95" y="385.2217">.github/workflows</text><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="310.5,261.4844,310.5,261.6946,320.4032,261.0701,330.3065,261.6777,340.2097,261.8841,350.1129,260.771,360.0161,261.4067,369.9194,261.0579,379.8226,261.1009,389.7258,261.4162,399.629,260.793,409.5323,262.038,419.4355,260.8541,429.3387,261.2866,439.2419,261.9163,449.1452,261.3986,459.0484,261.5526,468.9516,261.4524,478.8548,261.6629,488.7581,261.7235,498.6613,262.0701,508.5645,262.1554,518.4677,262.1636,528.371,261.739,538.2742,261.948,548.1774,262.1866,558.0806,260.7632,567.9839,262.1629,577.8871,261.1879,587.7903,262.0182,597.6935,260.9894,607.5968,261.4159,617.5,261.4844,617.5946,261.7128,619.2616,262.2016,621.049,262.9813,622.8465,263.7854,624.6242,264.5415,626.3388,265.1455,626.3376,265.145,627.1595,266.9499,627.627,268.6081,628.6231,270.4851,629.4366,272.2865,630,273.9844,630.1482,273.9844,630.2043,279.5031,629.839,285.0219,629.7826,290.5406,629.7929,296.0594,630,301.5781,629.9819,301.5706,629.2072,303.3208,628.7454,305.2006,627.7495,306.8591,626.9654,308.6054,626.3388,310.417,626.368,310.4873,624.486,310.9438,622.7371,311.7216,621.1183,312.8135,619.3233,313.4801,617.5,314.0781,617.5,314.8126,607.5968,313.7563,597.6935,314.3973,587.7903,314.6685,577.8871,313.6057,567.9839,313.9823,558.0806,314.2041,548.1774,314.7299,538.2742,314.0739,528.371,314.5407,518.4677,313.5243,508.5645,313.4009,498.6613,314.5817,488.7581,313.3612,478.8548,314.5871,468.9516,314.2848,459.0484,313.8102,449.1452,313.7244,439.2419,314.5369,429.3387,313.7788,419.4355,314.67,409.5323,313.5254,399.629,314.6956,389.7258,314.5624,379.8226,314.3231,369.9194,314.1253,360.0161,314.8047,350.1129,314.6917,340.2097,314.2474,330.3065,314.3463,320.4032,313.9479,310.5,314.0781,310.5914,314.2988,308.752,313.3936,306.9865,312.6668,305.1191,311.6941,303.3772,311.0244,301.6612,310.417,301.8246,310.4847,301.0613,308.704,300.1835,306.8759,299.3653,305.0726,298.6648,303.318,298,301.5781,297.7713,301.5781,298.1382,296.0594,298.2465,290.5406,298.1755,285.0219,298.2316,279.5031,298,273.9844,297.9579,273.9669,298.7591,272.2277,299.3451,270.3994,300.2842,268.7173,301.0049,266.9448,301.6612,265.1455,301.7316,265.3157,303.3996,264.3426,305.1796,263.6397,307.021,263.0854,308.8046,262.3913,310.5,261.4844" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="133" x="308" y="284.4795">integration.yaml</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="308" x="312" y="300.7764">run integration test suite with GitHub Actions</text><path d="M248,380.375 L248,380.5618 L250,380.0067 L252,380.5468 L254,380.7303 L256,379.7409 L258,380.375 L258,380.375 L257.9706,380.3569 L259.6198,377.3821 L261.4174,374.4985 L263.318,371.6785 L264.8633,368.6397 L266.9063,365.9072 L267.1467,365.9595 L267.277,362.8818 L268.1094,359.9568 L269.0274,357.0503 L269.4471,354.0356 L270.1289,351.0778 L270.1588,351.0828 L270.6891,347.6755 L271.3556,344.2911 L271.9564,340.8957 L272.6825,337.5214 L273,334.0781 L273.2941,334.1278 L273.8719,330.7285 L274.26,327.2971 L274.9258,323.9127 L275.6046,320.5304 L275.8711,317.0785 L275.5579,317.0104 L276.8103,314.1766 L277.0314,311.1187 L278.0365,308.2312 L278.2342,305.1682 L279.0938,302.249 L279.0678,302.2331 L281.1557,299.5283 L282.6378,296.4506 L284.4774,293.5929 L286.3469,290.7537 L288,287.7813 L288,288.1512 L290,287.7778 L292,288.0366 L294,287.2724 L296,288.034 L298,287.7813 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="310.5,334.0781,310.5,334.2883,320.4048,333.6638,330.3095,334.2714,340.2143,334.4778,350.119,333.3647,360.0238,334.0004,369.9286,333.6516,379.8333,333.6946,389.7381,334.01,399.6429,333.3868,409.5476,334.6318,419.4524,333.4478,429.3571,333.8804,439.2619,334.5101,449.1667,333.9923,459.0714,334.1464,468.9762,334.0462,478.881,334.2567,488.7857,334.3173,498.6905,334.6638,508.5952,334.7492,518.5,334.0781,518.5866,334.2873,520.3002,334.8888,522.0947,335.6854,523.8929,336.4911,525.4791,336.785,527.3388,337.7393,527.5478,337.8258,527.9798,339.4692,528.9677,341.3429,529.3831,342.9794,530.2467,344.8016,531,346.5781,531.2472,346.5781,530.9838,348.8375,531.0351,351.0969,531.1129,353.3563,531.1387,355.6156,531,357.875,530.9988,357.8745,530.3562,359.6794,529.3593,361.3375,528.8909,363.2146,528.2399,365.016,527.3388,366.7138,527.3955,366.8507,525.6493,367.6349,523.7417,368.0295,521.9523,368.7097,520.1885,369.4514,518.5,370.375,518.5,370.3161,508.5952,370.1785,498.6905,371.0564,488.7857,370.2003,478.881,370.0319,468.9762,370.6033,459.0714,369.7082,449.1667,369.8559,439.2619,371.024,429.3571,370.8107,419.4524,371.1095,409.5476,370.0532,399.6429,370.6942,389.7381,370.9654,379.8333,369.9026,369.9286,370.2791,360.0238,370.501,350.119,371.0268,340.2143,370.3708,330.3095,370.8376,320.4048,369.8212,310.5,370.375,310.4136,370.1664,308.7965,369.7979,306.873,368.6897,305.2616,368.335,303.4553,367.5097,301.6612,366.7138,301.5787,366.6797,300.82,364.9009,300.338,363.2368,299.3723,361.3724,298.9145,359.7183,298,357.875,297.8158,357.875,298.2058,355.6156,298.1614,353.3563,298.0817,351.0969,298.0157,348.8375,298,346.5781,298.2238,346.6708,298.9212,344.8886,299.5166,343.0642,300.2793,341.309,300.8888,339.4904,301.6612,337.7393,301.7526,337.9599,303.4487,337.0547,305.2187,336.328,306.8869,335.3552,308.6805,334.6856,310.5,334.0781" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="213" x="308" y="357.0732">integration_selenium.yaml</text><path d="M248,380.375 L248,380.5618 L250,380.0067 L252,380.5468 L254,380.7303 L256,379.7409 L258,380.375 L258,380.375 L257.9847,380.344 L259.6973,379.3254 L261.487,378.4629 L263.3303,377.7089 L264.9889,376.5809 L266.9063,375.9768 L267.1145,376.1079 L267.888,373.8923 L269.2694,372.0596 L270.7249,370.2735 L271.749,368.2157 L273,366.3008 L273.0257,366.3169 L274.2067,364.358 L275.5046,362.4727 L276.7462,360.5518 L278.0953,358.6987 L279.0938,356.6248 L279.2258,356.8922 L281.0087,356.0158 L282.7064,354.9669 L284.5287,354.1706 L286.3569,353.386 L288,352.2266 L288,351.5855 L290,352.8297 L292,351.963 L294,352.7011 L296,351.7865 L298,352.2266 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="310.5,390.375,310.5,390.5852,320.3182,389.9607,330.1364,390.5683,339.9545,390.7747,349.7727,389.6616,359.5909,390.2973,369.4091,389.9485,379.2273,389.9915,389.0455,390.3068,398.8636,389.6836,408.6818,390.9286,418.5,390.375,418.4196,390.1809,420.2425,391.0463,422.0906,391.9725,423.7924,392.5453,425.5798,393.3249,427.3388,394.0362,427.329,394.0321,428.126,395.8267,428.8769,397.6022,429.7159,399.4142,430.4744,401.1928,431,402.875,431.2264,402.875,431.0849,405.1344,431.1545,407.3938,431.2341,409.6531,430.7596,411.9125,431,414.1719,431.209,414.2584,430.1765,415.9018,429.6999,417.7755,428.6509,419.412,428.05,421.2342,427.3388,423.0107,427.4334,423.2391,425.5649,423.7279,423.8167,424.5076,422.0787,425.3117,420.3209,426.0678,418.5,426.6719,418.5,426.668,408.6818,426.9591,398.8636,426.0995,389.0455,426.9563,379.2273,427.2201,369.4091,427.1164,359.5909,427.2849,349.7727,426.1888,339.9545,426.0197,330.1364,426.0505,320.3182,426.613,310.5,426.6719,310.4749,426.6114,308.8192,426.1495,306.9422,425.1536,305.1529,424.3695,303.4581,423.8132,301.6612,423.0107,301.4558,422.9256,300.7691,421.1767,300.3965,419.558,299.5986,417.763,298.9584,416.0333,298,414.1719,297.8927,414.1719,298.1064,411.9125,298.1968,409.6531,297.8425,407.3938,297.968,405.1344,298,402.875,298.0388,402.8911,298.9329,401.1904,299.4632,399.3389,300.3392,397.6307,300.7584,395.7333,301.6612,394.0362,301.5748,393.8276,303.4932,393.459,305.1052,392.3509,307.0294,391.9962,308.7586,391.1709,310.5,390.375" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="113" x="308" y="413.3701">toolshed.yaml</text><path d="M248,380.375 L248,380.5618 L250,380.0067 L252,380.5468 L254,380.7303 L256,379.7409 L258,380.375 L258,380.375 L257.9847,380.344 L259.6973,381.0847 L261.487,381.9815 L263.3303,382.9868 L264.9889,383.618 L266.9063,384.7732 L267.1145,384.9043 L267.888,386.5591 L269.2694,388.5968 L270.7249,390.6811 L271.749,392.4937 L273,394.4492 L273.0257,394.4654 L274.2067,396.3769 L275.5046,398.3619 L276.7462,400.3115 L278.0953,402.3288 L279.0938,404.1252 L279.2258,404.3927 L281.0087,405.2756 L282.7064,405.986 L284.5287,406.9489 L286.3569,407.9236 L288,408.5234 L288,407.8824 L290,409.1266 L292,408.2599 L294,408.9979 L296,408.0834 L298,408.5234 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fkup0oyj8d9pv)" points="310.5,446.6719,310.5,446.8821,320.5417,446.2576,330.5833,446.8652,340.625,447.0716,350.6667,445.9585,360.7083,446.5942,370.75,446.2454,380.7917,446.2884,390.8333,446.6037,400.875,445.9805,410.9167,447.2255,420.9583,446.0416,431,446.4741,441.0417,447.1038,451.0833,446.5861,461.125,446.7401,471.1667,446.6399,481.2083,446.8504,491.25,446.911,501.2917,447.2576,511.3333,447.3429,521.375,447.3511,531.4167,446.9265,541.4583,447.1355,551.5,446.6719,551.5896,446.8881,553.1758,447.182,555.1221,448.3453,556.7655,448.7773,558.6392,449.7652,560.3388,450.333,560.1864,450.2699,561.05,452.0921,562.0317,453.9632,562.5205,455.6301,563.3002,457.4175,564,459.1719,564.1129,459.1719,564.1387,464.6906,563.9987,470.2094,564.0957,475.7281,563.8092,481.2469,564,486.7656,564.0876,486.8019,563.4366,488.6033,562.6724,490.3579,561.9921,492.1471,560.9223,493.7751,560.3388,495.6045,560.2556,495.4036,558.4918,496.1453,556.7958,497.0508,555.0105,497.7406,553.3547,498.7432,551.5,499.2656,551.5,499.0909,541.4583,498.9226,531.4167,499.4939,521.375,498.5988,511.3333,498.7465,501.2917,499.9146,491.25,499.7013,481.2083,500.0001,471.1667,498.9438,461.125,499.5848,451.0833,499.856,441.0417,498.7932,431,499.1698,420.9583,499.3916,410.9167,499.9174,400.875,499.2614,390.8333,499.7282,380.7917,498.7118,370.75,498.5884,360.7083,499.7692,350.6667,498.5487,340.625,499.7746,330.5833,499.4723,320.5417,498.9977,310.5,499.2656,310.4549,499.1567,308.7908,498.6747,306.9263,497.709,305.2722,497.2512,303.3584,496.1665,301.6612,495.6045,301.8513,495.6832,301.0781,493.8985,300.2721,492.1002,299.479,490.3072,298.956,488.6261,298,486.7656,298.2045,486.7656,298.0564,481.2469,298.0894,475.7281,297.9566,470.2094,298.2388,464.6906,298,459.1719,298.0477,459.1916,298.7854,457.4261,299.2771,455.5587,300.0719,453.8169,301.0924,452.1685,301.6612,450.333,301.716,450.4654,303.4235,449.5876,305.1556,448.7694,306.9365,448.0689,308.6447,447.1928,310.5,446.6719" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="168" x="308" y="469.667">converter_tests.yaml</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="242" x="312" y="485.9639">run tool tests for datatype converts</text><path d="M248,380.375 L248,380.5618 L250,380.0067 L252,380.5468 L254,380.7303 L256,379.7409 L258,380.375 L258,380.375 L257.9706,380.3569 L259.6198,383.1692 L261.4174,386.0728 L263.318,389.0398 L264.8633,391.7881 L266.9063,394.8428 L267.1467,394.895 L267.277,397.7492 L268.1094,400.7559 L269.0274,403.7812 L269.4471,406.6983 L270.1289,409.6722 L270.1588,409.6773 L270.6891,413.0698 L271.3556,416.4853 L271.9564,419.8897 L272.6825,423.3153 L273,426.6719 L273.2941,426.7215 L273.8719,430.1221 L274.26,433.4906 L274.9258,436.906 L275.6046,440.3236 L275.8711,443.6715 L275.5579,443.6034 L276.8103,446.7014 L277.0314,449.5753 L278.0365,452.6196 L278.2342,455.4884 L279.0938,458.501 L279.0678,458.485 L281.1557,461.5673 L282.6378,464.2767 L284.4774,467.2062 L286.3469,470.1541 L288,472.9688 L288,473.3387 L290,472.9653 L292,473.2241 L294,472.4599 L296,473.2215 L298,472.9688 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,259.6328 L35,259.8196 L37,259.2645 L39,259.8046 L41,259.9881 L43,258.9987 L45,259.6328 L45,259.6328 L44.9751,259.6089 L45.8594,260.5392 L46.8692,261.59 L47.9664,262.7247 L48.7627,263.5705 L49.9805,264.821 L50.217,264.8888 L50.4964,267.4792 L51.4663,270.2678 L52.5205,273.0806 L53.0845,275.7527 L53.9063,278.4988 L53.9362,278.5038 L54.5368,282.364 L55.2736,286.2469 L55.9447,290.1188 L56.7411,294.0117 L57.1289,297.8364 L57.4247,297.8747 L58.0025,302.3087 L58.3896,306.7179 L59.0559,311.1634 L59.7353,315.6105 L60,320.0039 L59.6821,319.9627 L60.8733,324.4761 L61.0177,328.854 L61.9579,333.3349 L62.0787,337.7097 L62.8711,342.1714 L62.8411,342.1664 L63.8407,346.0931 L64.1388,349.9029 L64.8509,353.7817 L65.5977,357.6663 L66.0938,361.509 L66.2716,361.5601 L66.8772,364.2441 L67.7868,367.0154 L68.2047,369.6455 L69.3559,372.4862 L70.0195,375.1869 L70.1953,375.3556 L71.1582,376.3613 L72.2083,377.4508 L72.8529,378.1511 L73.7948,379.1366 L75,380.375 L75,379.8226 L77,380.3227 L79,380.2003 L81,380.9807 L83,380.2197 L85,380.375 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[0e9c95926e9ec8af3ca8bbbc38b72f10] +@startmindmap + +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>.ci</i></b> + scripts for linting Python, etc..; +***:<b><i>jenkins/</i></b> + sub-directory per Jenkins job type, wrappers + around run_tests for Dockerized testing + can be used outside Jenkins; +**** <b><i>api/</i></b> +**** <b><i>framework/</i></b> +**** <b><i>selenium/</i></b> +** <b><i>.circleci/</i></b> +***:<b><i>config.yml</i></b> + run unit tests, lint, tool validation, etc.. on CircleCI; +** <b><i>.github/workflows</i></b> +***:<b><i>integration.yaml</i></b> + run integration test suite with GitHub Actions; +*** <b><i>integration_selenium.yaml</i></b> +*** <b><i>toolshed.yaml</i></b> +***:<b><i>converter_tests.yaml</i></b> + run tool tests for datatype converts; +@endmindmap + +@startmindmap + +<style> +mindmapDiagram { + node { + BackgroundColor #FFEFD5 + BorderColor DarkOrange + LineColor Orange + } +} +</style> +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +* / +**:<b><i>.ci</i></b> + scripts for linting Python, etc..; +***:<b><i>jenkins/</i></b> + sub-directory per Jenkins job type, wrappers + around run_tests for Dockerized testing + can be used outside Jenkins; +**** <b><i>api/</i></b> +**** <b><i>framework/</i></b> +**** <b><i>selenium/</i></b> +** <b><i>.circleci/</i></b> +***:<b><i>config.yml</i></b> + run unit tests, lint, tool validation, etc.. on CircleCI; +** <b><i>.github/workflows</i></b> +***:<b><i>integration.yaml</i></b> + run integration test suite with GitHub Actions; +*** <b><i>integration_selenium.yaml</i></b> +*** <b><i>toolshed.yaml</i></b> +***:<b><i>converter_tests.yaml</i></b> + run tool tests for datatype converts; +@endmindmap + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/core_files_ci.plantuml.txt b/topics/dev/images/core_files_ci.plantuml.txt new file mode 100644 index 00000000000000..59a5fb7bdc2de0 --- /dev/null +++ b/topics/dev/images/core_files_ci.plantuml.txt @@ -0,0 +1,25 @@ +@startmindmap +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>.ci</i></b> + scripts for linting Python, etc..; +***:<b><i>jenkins/</i></b> + sub-directory per Jenkins job type, wrappers + around run_tests for Dockerized testing + can be used outside Jenkins; +**** <b><i>api/</i></b> +**** <b><i>framework/</i></b> +**** <b><i>selenium/</i></b> +** <b><i>.circleci/</i></b> +***:<b><i>config.yml</i></b> + run unit tests, lint, tool validation, etc.. on CircleCI; +** <b><i>.github/workflows</i></b> +***:<b><i>integration.yaml</i></b> + run integration test suite with GitHub Actions; +*** <b><i>integration_selenium.yaml</i></b> +*** <b><i>toolshed.yaml</i></b> +***:<b><i>converter_tests.yaml</i></b> + run tool tests for datatype converts; +@endmindmap diff --git a/topics/dev/images/core_files_code.plantuml.svg b/topics/dev/images/core_files_code.plantuml.svg new file mode 100644 index 00000000000000..caed7ec43f7157 --- /dev/null +++ b/topics/dev/images/core_files_code.plantuml.svg @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="373px" preserveAspectRatio="none" style="width:748px;height:373px;" version="1.1" viewBox="0 0 748 373" width="748px" zoomAndPan="magnify"><defs><filter height="300%" id="fnz4mo6tp61my" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="22.5,173.3359,22.5268,173.4007,24.2149,173.9406,26.0602,174.8599,27.8543,175.6557,29.4801,176.0452,31.3388,176.9971,31.3149,176.9872,31.9397,178.7105,32.6852,180.4837,33.5145,182.2917,34.0549,183.98,35,185.8359,35.1845,185.8359,34.7899,188.0953,34.9341,190.3547,35.144,192.6141,34.9714,194.8734,35,197.1328,35.021,197.1415,34.2579,198.8965,33.5905,200.6911,32.8769,202.4666,32.2514,204.2786,31.3388,205.9716,31.4244,206.1783,29.6577,206.9131,27.8358,207.5145,26.0947,208.3111,24.3573,209.1168,22.5,209.6328,22.408,209.4107,20.8188,209.1095,18.9266,208.077,17.2648,207.6005,15.3658,206.5514,13.6612,205.9716,13.6401,205.9629,13.1573,204.2985,12.1817,202.4299,11.4969,200.6818,10.8365,198.9438,10,197.1328,10.1387,197.1328,9.9987,194.8734,10.0957,192.6141,9.8092,190.3547,10.0948,188.0953,10,185.8359,10.1688,185.9059,10.8691,184.1249,11.6533,182.3786,12.0479,180.471,12.7281,178.6817,13.6612,176.9971,13.5819,176.8057,15.4214,176.2467,17.1716,175.4721,19.0514,175.0103,20.71,174.0144,22.5,173.3359" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="5" x="20" y="196.3311">/</text><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="97.5,92.5938,97.5,92.8039,107.2917,92.1794,117.0833,92.787,126.875,92.9934,136.6667,91.8804,146.4583,92.516,156.25,92.1673,166.0417,92.2103,175.8333,92.5256,185.625,91.9024,195.4167,93.1474,205.2083,91.9635,215,92.396,224.7917,93.0257,234.5833,92.508,244.375,92.662,254.1667,92.5618,263.9583,92.7723,273.75,92.8329,283.5417,93.1794,293.3333,93.2648,303.125,93.273,312.9167,92.8484,322.7083,93.0573,332.5,92.5938,332.5896,92.81,334.1758,93.1039,336.1221,94.2672,337.7655,94.6991,339.6392,95.6871,341.3388,96.2549,341.1864,96.1918,342.05,98.0139,343.0317,99.885,343.5205,101.552,344.3002,103.3394,345,105.0938,345.1129,105.0938,345.1387,110.6125,344.9987,116.1313,345.0957,121.65,344.8092,127.1688,345,132.6875,345.0876,132.7238,344.4366,134.5252,343.6724,136.2797,342.9921,138.069,341.9223,139.6969,341.3388,141.5263,341.2556,141.3255,339.4918,142.0672,337.7958,142.9727,336.0105,143.6625,334.3547,144.6651,332.5,145.1875,332.5,145.0128,322.7083,144.8444,312.9167,145.4158,303.125,144.5207,293.3333,144.6684,283.5417,145.8365,273.75,145.6232,263.9583,145.922,254.1667,144.8657,244.375,145.5067,234.5833,145.7779,224.7917,144.7151,215,145.0916,205.2083,145.3135,195.4167,145.8393,185.625,145.1833,175.8333,145.6501,166.0417,144.6337,156.25,144.5102,146.4583,145.6911,136.6667,144.4706,126.875,145.6965,117.0833,145.3941,107.2917,144.9196,97.5,145.1875,97.4549,145.0786,95.7908,144.5965,93.9263,143.6309,92.2722,143.1731,90.3584,142.0883,88.6612,141.5263,88.8513,141.6051,88.0781,139.8203,87.2721,138.022,86.479,136.2291,85.956,134.548,85,132.6875,85.2045,132.6875,85.0564,127.1688,85.0894,121.65,84.9566,116.1313,85.2388,110.6125,85,105.0938,85.0477,105.1135,85.7854,103.348,86.2771,101.4806,87.0719,99.7388,88.0924,98.0904,88.6612,96.2549,88.716,96.3873,90.4235,95.5095,92.1556,94.6912,93.9365,93.9908,95.6447,93.1147,97.5,92.5938" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="25" x="95" y="115.5889">lib/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="236" x="99" y="131.8857">root of monolithic Python backend</text><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="407.5,20,407.5,20.2102,417.5323,19.5857,427.5645,20.1933,437.5968,20.3997,447.629,19.2866,457.6613,19.9223,467.6935,19.5735,477.7258,19.6165,487.7581,19.9318,497.7903,19.3086,507.8226,20.5536,517.8548,19.3697,527.8871,19.8022,537.9194,20.4319,547.9516,19.9142,557.9839,20.0682,568.0161,19.9681,578.0484,20.1785,588.0806,20.2391,598.1129,20.5857,608.1452,20.6711,618.1774,20.6793,628.2097,20.2546,638.2419,20.4636,648.2742,20.7022,658.3065,19.2788,668.3387,20.6785,678.371,19.7035,688.4032,20.5338,698.4355,19.505,708.4677,19.9315,718.5,20,718.5946,20.2284,720.2616,20.7172,722.049,21.4969,723.8465,22.301,725.6242,23.0571,727.3388,23.6612,727.3376,23.6607,728.1595,25.4656,728.627,27.1237,729.6231,29.0007,730.4366,30.8022,731,32.5,731.1482,32.5,731.2043,38.0188,730.839,43.5375,730.7826,49.0563,730.7929,54.575,731,60.0938,730.9819,60.0862,730.2072,61.8364,729.7454,63.7162,728.7495,65.3748,727.9654,67.1211,727.3388,68.9326,727.368,69.0029,725.486,69.4595,723.7371,70.2372,722.1183,71.3291,720.3233,71.9957,718.5,72.5938,718.5,73.3282,708.4677,72.272,698.4355,72.9129,688.4032,73.1842,678.371,72.1213,668.3387,72.4979,658.3065,72.7197,648.2742,73.2455,638.2419,72.5896,628.2097,73.0563,618.1774,72.04,608.1452,71.9165,598.1129,73.0974,588.0806,71.8768,578.0484,73.1027,568.0161,72.8004,557.9839,72.3258,547.9516,72.24,537.9194,73.0525,527.8871,72.2944,517.8548,73.1856,507.8226,72.041,497.7903,73.2112,487.7581,73.0781,477.7258,72.8387,467.6935,72.641,457.6613,73.3204,447.629,73.2073,437.5968,72.763,427.5645,72.8619,417.5323,72.4635,407.5,72.5938,407.5914,72.8144,405.752,71.9092,403.9865,71.1824,402.1191,70.2097,400.3772,69.54,398.6612,68.9326,398.8246,69.0003,398.0613,67.2196,397.1835,65.3916,396.3653,63.5882,395.6648,61.8336,395,60.0938,394.7713,60.0938,395.1382,54.575,395.2465,49.0563,395.1755,43.5375,395.2316,38.0188,395,32.5,394.9579,32.4826,395.7591,30.7434,396.3451,28.915,397.2842,27.2329,398.0049,25.4604,398.6612,23.6612,398.7316,23.8313,400.3996,22.8582,402.1796,22.1553,404.021,21.601,405.8046,20.9069,407.5,20" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="405" y="42.9951">galaxy/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="312" x="409" y="59.292">most of the code that makes up the backend</text><path d="M345,118.8906 L345,119.0775 L347,118.5223 L349,119.0624 L351,119.2459 L353,118.2565 L355,118.8906 L355,118.8906 L354.9728,118.8693 L356.6322,116.505 L358.4284,114.2483 L360.3199,112.0663 L361.8833,109.6266 L363.9063,107.5479 L364.1434,107.6136 L364.2808,105.1478 L365.1106,102.8738 L366.0248,100.6233 L366.4476,98.2366 L367.1289,95.9215 L367.1586,95.9279 L367.6892,93.253 L368.3549,90.6071 L368.9555,87.9472 L369.6803,85.3141 L370,82.5938 L370.2916,82.6566 L370.8693,79.9918 L371.2591,77.2865 L371.9241,74.6405 L372.602,71.9973 L372.8711,69.266 L372.5622,69.1804 L373.8062,67.0213 L374.0332,64.5803 L375.0333,62.3536 L375.2372,59.9061 L376.0938,57.6396 L376.0698,57.6208 L378.1342,55.5746 L379.6392,53.0892 L381.4743,50.8629 L383.3371,48.6584 L385,46.2969 L385,46.6669 L387,46.2934 L389,46.5522 L391,45.7881 L393,46.5497 L395,46.2969 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="407.5,92.5938,407.5,92.8039,417.4063,92.1794,427.3125,92.787,437.2188,92.9934,447.125,91.8804,457.0313,92.516,466.9375,92.1673,476.8438,92.2103,486.75,92.5256,496.6563,91.9024,506.5625,93.1474,516.4688,91.9635,526.375,92.396,536.2813,93.0257,546.1875,92.508,556.0938,92.662,566,92.5618,575.9063,92.7723,585.8125,92.8329,595.7188,93.1794,605.625,93.2648,615.5313,93.273,625.4375,92.8484,635.3438,93.0573,645.25,93.296,655.1563,91.8726,665.0625,93.2723,674.9688,92.2972,684.875,93.1276,694.7813,92.0987,704.6875,92.5253,714.5938,93.3354,724.5,92.5938,724.4938,92.5787,726.2812,93.3584,728.0787,94.1625,729.8564,94.9186,731.5706,95.5215,733.3388,96.2549,733.4273,96.2916,733.8948,97.9497,734.8909,99.8267,735.7044,101.6281,736.4047,103.3827,737,105.0938,737.2043,105.0938,736.839,110.6125,736.7826,116.1313,736.7929,121.65,736.9804,127.1688,737,132.6875,736.9395,132.6624,736.4776,134.5422,735.4817,136.2008,734.6977,137.947,734.1414,139.7877,733.3388,141.5263,733.2538,141.321,731.5048,142.0987,729.8861,143.1907,728.0911,143.8572,726.3615,144.6815,724.5,145.1875,724.5,144.8657,714.5938,145.5067,704.6875,145.7779,694.7813,144.7151,684.875,145.0916,674.9688,145.3135,665.0625,145.8393,655.1563,145.1833,645.25,145.6501,635.3438,144.6337,625.4375,144.5102,615.5313,145.6911,605.625,144.4706,595.7188,145.6965,585.8125,145.3941,575.9063,144.9196,566,144.8337,556.0938,145.6463,546.1875,144.8882,536.2813,145.7794,526.375,144.6348,516.4688,145.8049,506.5625,145.6718,496.6563,145.4325,486.75,145.2347,476.8438,145.9141,466.9375,145.8011,457.0313,145.3568,447.125,145.4557,437.2188,145.0572,427.3125,145.904,417.4063,145.3424,407.5,145.1875,407.522,145.2406,405.6546,144.2679,403.9128,143.5982,402.2644,143.1542,400.4838,142.3909,398.6612,141.5263,398.6479,141.5209,397.8297,139.7175,397.1293,137.9629,396.2532,136.1355,395.86,134.5082,395,132.6875,395.2465,132.6875,395.1755,127.1688,395.2316,121.65,394.9544,116.1313,395.0291,110.6125,395,105.0938,394.8806,105.0443,395.8197,103.3622,396.5405,101.5897,397.3668,99.8609,397.8582,97.9934,398.6612,96.2549,398.644,96.2135,400.4855,95.6593,402.2691,94.9652,403.8991,93.9004,405.7075,93.2663,407.5,92.5938" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="89" x="405" y="115.5889">galaxy_ext/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="318" x="409" y="131.8857">a few more files used standalone by jobs, etc..</text><path d="M345,118.8906 L345,119.0775 L347,118.5223 L349,119.0624 L351,119.2459 L353,118.2565 L355,118.8906 L355,118.8906 L355,118.8561 L361,118.7011 L367,118.7202 L373,118.8603 L379,118.5833 L385,118.8906 L385,119.3828 L387,118.3304 L389,118.7148 L391,119.2746 L393,118.8144 L395,118.8906 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="407.5,165.1875,407.5,165.3977,417.62,164.7732,427.74,165.3808,437.86,165.5872,447.98,164.4741,458.1,165.1098,468.22,164.761,478.34,164.804,488.46,165.1193,498.58,164.4961,508.7,165.7411,518.82,164.5572,528.94,164.9897,539.06,165.6194,549.18,165.1017,559.3,165.2557,569.42,165.1556,579.54,165.366,589.66,165.4266,599.78,165.7732,609.9,165.8586,620.02,165.8668,630.14,165.4421,640.26,165.6511,650.38,165.8897,660.5,165.1875,660.408,164.9654,662.3543,166.1287,663.9977,166.5607,665.8714,167.5486,667.5079,167.964,669.3388,168.8487,669.3177,168.8399,670.2995,170.711,670.7883,172.378,671.568,174.1654,672.3721,175.9629,673,177.6875,673.1387,177.6875,672.9987,183.2063,673.0957,188.725,672.8092,194.2438,673.0948,199.7625,673,205.2813,673.1688,205.3512,672.4047,207.1057,671.7243,208.895,670.6545,210.5229,669.8702,212.2691,669.3388,214.1201,669.2596,213.9287,667.5636,214.8342,665.7782,215.524,664.1225,216.5266,662.2455,216.9952,660.5,217.7813,660.5,217.4382,650.38,218.0095,640.26,217.1144,630.14,217.2621,620.02,218.4302,609.9,218.2169,599.78,218.5157,589.66,217.4595,579.54,218.1004,569.42,218.3717,559.3,217.3088,549.18,217.6854,539.06,217.9072,528.94,218.433,518.82,217.7771,508.7,218.2438,498.58,217.2275,488.46,217.104,478.34,218.2849,468.22,217.0643,458.1,218.2902,447.98,217.9879,437.86,217.5133,427.74,217.4275,417.62,218.24,407.5,217.7813,407.4618,217.6891,405.8077,217.2313,403.894,216.1466,402.2755,215.7747,400.4907,215.0015,398.6612,214.1201,398.7366,214.1513,397.9435,212.3583,397.4205,210.6772,396.6534,208.8951,395.7844,207.0706,395,205.2813,395.0894,205.2813,394.9566,199.7625,395.2388,194.2438,395.0516,188.725,395.0575,183.2063,395,177.6875,394.8127,177.6099,395.6074,175.868,396.6279,174.2197,397.329,172.439,397.9157,170.611,398.6612,168.8487,398.6201,168.7494,400.401,168.049,402.1092,167.1729,404.0174,166.7797,405.8266,166.1475,407.5,165.1875" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="82" x="405" y="188.1826">tool_shed/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="254" x="409" y="204.4795">source code for the Galaxy ToolShed</text><path d="M345,118.8906 L345,119.0775 L347,118.5223 L349,119.0624 L351,119.2459 L353,118.2565 L355,118.8906 L355,118.8906 L354.9728,118.8693 L356.6322,121.0421 L358.4284,123.3225 L360.3199,125.6776 L361.8833,127.7751 L363.9063,130.2334 L364.1434,130.2991 L364.2808,132.4838 L365.1106,134.8605 L366.0248,137.2605 L366.4476,139.5243 L367.1289,141.8597 L367.1586,141.8661 L367.6892,144.5223 L368.3549,147.2076 L368.9555,149.8788 L369.6803,152.5768 L370,155.1875 L370.2916,155.2503 L370.8693,157.9166 L371.2591,160.5424 L371.9241,163.2275 L372.602,165.9154 L372.8711,168.5153 L372.5622,168.4296 L373.8062,170.9211 L374.0332,173.1306 L375.0333,175.5544 L375.2372,177.7576 L376.0938,180.1416 L376.0698,180.1228 L378.1342,182.6137 L379.6392,184.6653 L381.4743,186.9762 L383.3371,189.3088 L385,191.4844 L385,191.8544 L387,191.4809 L389,191.7397 L391,190.9756 L393,191.7372 L395,191.4844 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,191.4844 L35,191.6712 L37,191.1161 L39,191.6562 L41,191.8396 L43,190.8502 L45,191.4844 L45,191.4844 L44.9728,191.463 L46.6322,189.0988 L48.4284,186.842 L50.3199,184.66 L51.8833,182.2204 L53.9063,180.1416 L54.1434,180.2073 L54.2808,177.7415 L55.1106,175.4676 L56.0248,173.2171 L56.4476,170.8303 L57.1289,168.5153 L57.1586,168.5216 L57.6892,165.8467 L58.3549,163.2009 L58.9555,160.541 L59.6803,157.9079 L60,155.1875 L60.2916,155.2503 L60.8693,152.5855 L61.2591,149.8802 L61.9241,147.2342 L62.602,144.591 L62.8711,141.8597 L62.5622,141.7741 L63.8062,139.615 L64.0332,137.174 L65.0333,134.9473 L65.2372,132.4999 L66.0938,130.2334 L66.0698,130.2146 L68.1342,128.1684 L69.6392,125.6829 L71.4743,123.4566 L73.3371,121.2521 L75,118.8906 L75,119.2606 L77,118.8872 L79,119.1459 L81,118.3818 L83,119.1434 L85,118.8906 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="97.5,237.7813,97.5,237.9914,107.5,237.3669,117.5,237.9745,127.5,238.1809,137.5,237.0679,147.5,237.7035,157.5,237.3548,167.5,237.3978,177.5,237.7131,187.5,237.0899,197.5,238.3349,207.5,237.151,217.5,237.5835,227.5,238.2132,237.5,237.6955,247.5,237.8495,257.5,237.7493,267.5,237.9598,277.5,238.0204,287.5,238.3669,297.5,238.4523,307.5,238.4605,317.5,238.0359,327.5,238.2448,337.5,238.4835,347.5,237.0601,357.5,238.4598,367.5,237.4847,377.5,238.3151,387.5,237.2862,397.5,237.7128,407.5,238.5229,417.5,237.7325,427.5,237.8866,437.5,238.1199,447.5,238.1975,457.5,237.7773,467.5,237.7813,467.5366,237.8697,469.1947,238.3372,471.0718,239.3333,472.8732,240.1468,474.6278,240.8471,476.3388,241.4424,476.5276,241.5206,476.9223,243.1486,477.6025,244.8948,478.3442,246.6664,479.2496,248.506,480,250.2813,479.9345,250.2813,480.2271,255.8,479.9418,261.3188,479.8856,266.8375,480.0761,272.3563,480,277.875,479.7946,277.7899,479.1079,279.5765,478.7354,281.4933,477.9375,283.2339,477.2973,285.0398,476.3388,286.7138,476.2978,286.6147,474.6118,287.5444,472.8786,288.3601,470.9753,288.7651,469.2555,289.6132,467.5,290.375,467.5,290.501,457.5,291.0268,447.5,290.3708,437.5,290.8376,427.5,289.8212,417.5,289.6977,407.5,290.8786,397.5,289.6581,387.5,290.884,377.5,290.5816,367.5,290.1071,357.5,290.0212,347.5,290.8338,337.5,290.0757,327.5,290.9669,317.5,289.8223,307.5,290.9924,297.5,290.8593,287.5,290.62,277.5,290.4222,267.5,291.1016,257.5,290.9886,247.5,290.5443,237.5,290.6432,227.5,290.2447,217.5,291.0915,207.5,290.5299,197.5,290.5476,187.5,289.7666,177.5,289.9698,167.5,290.9057,157.5,290.8048,147.5,290.3321,137.5,290.0528,127.5,290.1561,117.5,289.6888,107.5,290.7897,97.5,290.375,97.5943,290.6028,95.7994,289.8049,94.0531,289.1245,92.1793,288.1362,90.4401,287.4729,88.6612,286.7138,88.5418,286.6644,88.0164,284.9823,87.2727,283.2098,86.6346,281.481,85.6615,279.6135,85,277.875,84.9552,277.875,85.1478,272.3563,85.1891,266.8375,84.8292,261.3188,84.9354,255.8,85,250.2813,85.046,250.3003,85.5441,248.4356,86.5733,246.7908,87.2761,245.0109,87.8979,243.1973,88.6612,241.4424,88.6793,241.4862,90.5219,240.9346,92.1568,239.8816,94.0046,239.3427,95.7687,238.6015,97.5,237.7813" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="95" y="260.7764">packages/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="371" x="99" y="277.0732">Python backend decomposed into pieces (same files)</text><path d="M35,191.4844 L35,191.6712 L37,191.1161 L39,191.6562 L41,191.8396 L43,190.8502 L45,191.4844 L45,191.4844 L44.9728,191.463 L46.6322,193.6359 L48.4284,195.9162 L50.3199,198.2713 L51.8833,200.3688 L53.9063,202.8271 L54.1434,202.8929 L54.2808,205.0776 L55.1106,207.4542 L56.0248,209.8542 L56.4476,212.118 L57.1289,214.4535 L57.1586,214.4599 L57.6892,217.1161 L58.3549,219.8013 L58.9555,222.4725 L59.6803,225.1705 L60,227.7813 L60.2916,227.8441 L60.8693,230.5104 L61.2591,233.1362 L61.9241,235.8213 L62.602,238.5092 L62.8711,241.109 L62.5622,241.0234 L63.8062,243.5148 L64.0332,245.7243 L65.0333,248.1482 L65.2372,250.3513 L66.0938,252.7354 L66.0698,252.7166 L68.1342,255.2075 L69.6392,257.2591 L71.4743,259.5699 L73.3371,261.9025 L75,264.0781 L75,264.4481 L77,264.0747 L79,264.3334 L81,263.5693 L83,264.3309 L85,264.0781 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="97.5,310.375,97.5,310.5852,107.375,309.9607,117.25,310.5683,127.125,310.7747,137,309.6616,146.875,310.2973,156.75,309.9485,166.625,309.9915,176.5,310.3068,186.375,309.6836,196.25,310.9286,206.125,309.7447,216,310.1772,225.875,310.8069,235.75,310.2892,245.625,310.4432,255.5,310.375,255.4959,310.3652,257.2905,311.1622,259.066,311.9131,260.878,312.7521,262.6567,313.5106,264.3388,314.0362,264.548,314.1228,265.1495,315.8364,265.9461,317.6308,266.7518,319.429,267.0457,321.0152,268,322.875,268.2262,322.875,267.9012,328.3938,268.1779,333.9125,267.835,339.4313,267.9772,344.95,268,350.4688,268.2284,350.5634,267.2528,352.2303,266.568,354.0177,265.9076,355.8152,265.1993,357.5929,264.3388,359.3076,264.3383,359.3064,262.6077,360.1283,260.7303,360.5958,259.0718,361.5919,257.3377,362.4053,255.5,362.9688,255.5,363.4133,245.625,363.5818,235.75,362.4857,225.875,362.3166,216,362.3473,206.125,362.9099,196.25,362.7722,186.375,363.6502,176.5,362.7941,166.625,362.6257,156.75,363.197,146.875,362.3019,137,362.4496,127.125,363.6177,117.25,363.4044,107.375,363.7032,97.5,362.9688,97.459,362.8697,95.773,362.3348,94.0398,361.6861,92.1364,360.6266,90.4167,360.0103,88.6612,359.3076,88.7,359.3237,88.1296,357.623,87.1954,355.7715,86.6069,354.0633,85.5617,352.1659,85,350.4688,84.7742,350.4688,85.1679,344.95,84.761,339.4313,85.1697,333.9125,85.0689,328.3938,85,322.875,84.9175,322.8408,85.6233,321.0621,86.6057,319.398,87.1045,317.5335,88.1112,315.8794,88.6612,314.0362,88.5907,313.8659,90.5077,313.4941,92.2585,312.7208,93.9957,311.9149,95.7383,311.1218,97.5,310.375" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="50" x="95" y="333.3701">client/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="159" x="99" y="349.667">Galaxy frontend project</text><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="330.5,318.5234,330.5,318.7336,340.7,318.1091,350.9,318.7167,361.1,318.9231,371.3,317.81,381.5,318.5234,381.4901,318.4995,383.2134,319.1243,384.9866,319.8698,386.7946,320.6991,388.4829,321.2395,390.3388,322.1846,390.5093,322.2552,390.877,323.872,391.7424,325.6949,392.6686,327.543,393.2414,329.2447,394,331.0234,394.0227,331.0234,393.9894,333.2828,394.0595,335.5422,394.0797,337.8016,394.1952,340.0609,394,342.3203,394.2067,342.4059,393.477,344.1747,392.6139,345.8883,391.9461,347.6827,391.2873,349.481,390.3388,351.1591,390.2468,350.9371,388.6576,352.1003,386.7655,352.5323,385.1036,353.5202,383.2046,353.9356,381.5,354.8203,381.5,354.7518,371.3,355.5619,361.1,354.7716,350.9,354.9256,340.7,355.1589,330.5,354.8203,330.5531,354.9485,328.7317,354.0869,327.0011,353.4443,325.1237,352.4473,323.4652,351.979,321.6612,351.1591,321.83,351.2291,321.0658,349.4481,320.3855,347.7018,319.3157,345.7942,318.5314,344.0049,318,342.3203,317.7929,342.3203,317.9804,340.0609,317.9345,337.8016,318.2271,335.5422,317.9418,333.2828,318,331.0234,317.8944,330.9797,318.8025,329.2848,319.2591,327.4028,320.0368,325.6539,321.1288,324.0352,321.6612,322.1846,321.7167,322.3188,323.5226,321.6786,325.1557,320.621,327.0052,320.0862,328.8075,319.4375,330.5,318.5234" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="328" y="341.5186">galaxy/</text><polygon fill="#FFEFD5" filter="url(#fnz4mo6tp61my)" points="456.5,310.375,456.5,310.5852,466.5,309.9607,476.5,310.5683,486.5,310.7747,496.5,309.6616,506.5,310.2973,516.5,309.9485,526.5,309.9915,536.5,310.3068,546.5,309.6836,556.5,310.9286,566.5,309.7447,576.5,310.1772,586.5,310.8069,596.5,310.2892,606.5,310.4432,616.5,310.3431,626.5,310.5535,636.5,310.6141,646.5,310.9607,656.5,311.0461,666.5,311.0543,676.5,310.375,676.5325,310.4534,678.3269,311.25,680.1251,312.0557,681.7113,312.3496,683.6576,313.5129,685.3388,314.0362,685.2475,313.9983,686.2355,315.872,686.6509,317.5086,687.5144,319.3307,688.4962,321.2018,689,322.875,688.9838,322.875,689.0351,328.3938,689.1129,333.9125,689.1387,339.4313,688.9987,344.95,689,350.4688,689.0885,350.5054,688.0915,352.1635,687.6231,354.0406,686.9721,355.842,686.208,357.5965,685.3388,359.3076,685.417,359.4964,683.5094,359.891,681.7201,360.5712,679.9563,361.3129,678.2603,362.2184,676.5,362.9688,676.5,362.7722,666.5,363.6502,656.5,362.7941,646.5,362.6257,636.5,363.197,626.5,362.3019,616.5,362.4496,606.5,363.6177,596.5,363.4044,586.5,363.7032,576.5,362.647,566.5,363.2879,556.5,363.5592,546.5,362.4963,536.5,362.8729,526.5,363.0947,516.5,363.6205,506.5,362.9646,496.5,363.4313,486.5,362.415,476.5,362.2915,466.5,363.4724,456.5,362.9688,456.4085,362.748,454.7972,362.3933,452.9908,361.5679,451.1625,360.6895,449.3838,359.9309,447.6612,359.3076,447.8024,359.3661,446.8367,357.5016,446.379,355.8475,445.2942,353.9338,444.9224,352.3153,444,350.4688,444.1614,350.4688,444.0817,344.95,444.0157,339.4313,444.2422,333.9125,444.2045,328.3938,444,322.875,444.0521,322.8966,444.8148,321.1414,445.4243,319.3228,446.4173,317.6631,446.9766,315.8237,447.6612,314.0362,447.6832,314.0893,449.3513,313.1166,451.145,312.4469,453.0322,312.0029,454.7871,311.2396,456.5,310.375" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="58" x="454" y="333.3701">scripts/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="221" x="458" y="349.667">Galaxy frontend ES6 source files</text><path d="M394,336.6719 L394,336.8587 L396,336.3036 L398,336.8437 L400,337.0271 L402,336.0377 L404,336.6719 L404,336.6719 L404,336.6373 L410,336.4823 L416,336.5014 L422,336.6416 L428,336.3646 L434,336.6719 L434,337.164 L436,336.1116 L438,336.4961 L440,337.0558 L442,336.5956 L444,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M268,336.6719 L268,336.8587 L270,336.3036 L272,336.8437 L274,337.0271 L276,336.0377 L278,336.6719 L278,336.6719 L278,336.6373 L284,336.4823 L290,336.5014 L296,336.6416 L302,336.3646 L308,336.6719 L308,337.164 L310,336.1116 L312,336.4961 L314,337.0558 L316,336.5956 L318,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,191.4844 L35,191.6712 L37,191.1161 L39,191.6562 L41,191.8396 L43,190.8502 L45,191.4844 L45,191.4844 L44.973,191.4628 L45.848,192.6138 L46.859,193.8734 L47.9646,195.2086 L48.7442,196.2835 L49.9805,197.7229 L50.2198,197.78 L50.4932,200.9473 L51.4653,204.2813 L52.5227,207.6357 L53.084,210.8717 L53.9063,214.1699 L53.9362,214.1745 L54.2277,216.3654 L54.6556,218.5772 L55.0177,220.7789 L55.5054,222.9998 L55.5835,225.1582 L55.8794,225.1955 L56.1921,227.6489 L56.3139,230.0781 L56.7152,232.5426 L57.1295,235.0088 L57.1289,237.4226 L56.8102,237.3883 L58.003,242.786 L58.1463,248.0707 L59.0874,253.4413 L59.207,258.7235 L60,264.0781 L59.9697,264.0749 L60.9019,269.4445 L61.1269,274.738 L61.7692,280.0764 L62.4465,285.4187 L62.8711,290.7336 L63.0546,290.7568 L63.1785,293.1863 L63.6159,295.6554 L63.5459,298.0605 L64.2328,300.5609 L64.4165,302.998 L64.6574,303.0348 L64.9473,305.2255 L65.3567,307.4345 L65.2106,309.5586 L65.4718,311.7449 L66.0938,313.9863 L65.8251,313.9222 L66.8535,317.2697 L67.5791,320.5449 L68.7438,323.9249 L69.1589,327.1259 L70.0195,330.4333 L69.9004,330.3382 L71.0949,331.7444 L71.7801,332.7439 L72.8275,334.0325 L74.2293,335.6041 L75,336.6719 L75,337.0591 L77,337.3248 L79,336.3858 L81,336.9556 L83,337.1967 L85,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[d1edb86edfa6f30de2d0279b069c7ebb] +@startmindmap + +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>lib/</i></b> + root of monolithic Python backend; +***:<b><i>galaxy/</i></b> + most of the code that makes up the backend; +***:<b><i>galaxy_ext/</i></b> + a few more files used standalone by jobs, etc..; +***:<b><i>tool_shed/</i></b> + source code for the Galaxy ToolShed; +**:<b><i>packages/</i></b> + Python backend decomposed into pieces (same files); +**:<b><i>client/</i></b> + Galaxy frontend project; +*** <b><i>galaxy/</i></b> +****:<b><i>scripts/</i></b> + Galaxy frontend ES6 source files; +@endmindmap + +@startmindmap + +<style> +mindmapDiagram { + node { + BackgroundColor #FFEFD5 + BorderColor DarkOrange + LineColor Orange + } +} +</style> +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +* / +**:<b><i>lib/</i></b> + root of monolithic Python backend; +***:<b><i>galaxy/</i></b> + most of the code that makes up the backend; +***:<b><i>galaxy_ext/</i></b> + a few more files used standalone by jobs, etc..; +***:<b><i>tool_shed/</i></b> + source code for the Galaxy ToolShed; +**:<b><i>packages/</i></b> + Python backend decomposed into pieces (same files); +**:<b><i>client/</i></b> + Galaxy frontend project; +*** <b><i>galaxy/</i></b> +****:<b><i>scripts/</i></b> + Galaxy frontend ES6 source files; +@endmindmap + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/core_files_code.plantuml.txt b/topics/dev/images/core_files_code.plantuml.txt new file mode 100644 index 00000000000000..4ad063a0125d33 --- /dev/null +++ b/topics/dev/images/core_files_code.plantuml.txt @@ -0,0 +1,21 @@ +@startmindmap +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>lib/</i></b> + root of monolithic Python backend; +***:<b><i>galaxy/</i></b> + most of the code that makes up the backend; +***:<b><i>galaxy_ext/</i></b> + a few more files used standalone by jobs, etc..; +***:<b><i>tool_shed/</i></b> + source code for the Galaxy ToolShed; +**:<b><i>packages/</i></b> + Python backend decomposed into pieces (same files); +**:<b><i>client/</i></b> + Galaxy frontend project; +*** <b><i>galaxy/</i></b> +****:<b><i>scripts/</i></b> + Galaxy frontend ES6 source files; +@endmindmap diff --git a/topics/dev/images/core_files_project_docs.plantuml.svg b/topics/dev/images/core_files_project_docs.plantuml.svg new file mode 100644 index 00000000000000..d134743fa2b94b --- /dev/null +++ b/topics/dev/images/core_files_project_docs.plantuml.svg @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="591px" preserveAspectRatio="none" style="width:692px;height:591px;" version="1.1" viewBox="0 0 692 591" width="692px" zoomAndPan="magnify"><defs><filter height="300%" id="f1uemygw3zepw0" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="22.5,282.2266,22.5268,282.2913,24.2149,282.8312,26.0602,283.7506,27.8543,284.5463,29.4801,284.9358,31.3388,285.8877,31.3149,285.8778,31.9397,287.6011,32.6852,289.3743,33.5145,291.1823,34.0549,292.8706,35,294.7266,35.1845,294.7266,34.7899,296.9859,34.9341,299.2453,35.144,301.5047,34.9714,303.7641,35,306.0234,35.021,306.0321,34.2579,307.7871,33.5905,309.5817,32.8769,311.3572,32.2514,313.1692,31.3388,314.8623,31.4244,315.0689,29.6577,315.8037,27.8358,316.4052,26.0947,317.2017,24.3573,318.0075,22.5,318.5234,22.408,318.3013,20.8188,318.0002,18.9266,316.9677,17.2648,316.4911,15.3658,315.4421,13.6612,314.8623,13.6401,314.8535,13.1573,313.1891,12.1817,311.3205,11.4969,309.5724,10.8365,307.8344,10,306.0234,10.1387,306.0234,9.9987,303.7641,10.0957,301.5047,9.8092,299.2453,10.0948,296.9859,10,294.7266,10.1688,294.7965,10.8691,293.0155,11.6533,291.2692,12.0479,289.3616,12.7281,287.5723,13.6612,285.8877,13.5819,285.6964,15.4214,285.1374,17.1716,284.3627,19.0514,283.9009,20.71,282.905,22.5,282.2266" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="5" x="20" y="305.2217">/</text><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="97.5,20,97.5,20.2102,107.6,19.5857,117.7,20.1933,127.8,20.3997,137.9,19.2866,148,19.9223,158.1,19.5735,168.2,19.6165,178.3,19.9318,188.4,19.3086,198.5,20.5536,208.6,19.3697,218.7,19.8022,228.8,20.4319,238.9,19.9142,249,20.0682,259.1,19.9681,269.2,20.1785,279.3,20.2391,289.4,20.5857,299.5,20,299.5856,20.2067,301.3544,20.9414,303.068,21.5429,304.8624,22.3395,306.6606,23.1452,308.3388,23.6612,308.1167,23.5692,309.28,25.5155,309.712,27.1589,310.6999,29.0326,311.1153,30.6691,312,32.5,311.9772,32.5,312.2472,38.0188,311.9838,43.5375,312.0351,49.0563,312.1129,54.575,312,60.0938,312.1282,60.1468,311.2666,61.861,310.624,63.6659,309.627,65.324,309.1586,67.2011,308.3388,68.9326,308.4088,69.1014,306.6278,69.8017,304.8815,70.5858,302.9739,70.9805,301.1846,71.6607,299.5,72.5938,299.5,71.9723,289.4,72.5349,279.3,72.3972,269.2,73.2752,259.1,72.4191,249,72.2507,238.9,72.822,228.8,71.9269,218.7,72.0746,208.6,73.2427,198.5,73.0294,188.4,73.3282,178.3,72.272,168.2,72.9129,158.1,73.1842,148,72.1213,137.9,72.4979,127.8,72.7197,117.7,73.2455,107.6,72.5896,97.5,72.5938,97.559,72.7362,95.6616,71.691,93.8781,70.9207,92.2609,70.5521,90.3375,69.444,88.6612,68.9326,88.8179,68.9975,87.9926,67.1912,87.1142,65.3629,86.3555,63.5842,85.8735,61.92,85,60.0938,84.9002,60.0938,85.1973,54.575,84.8158,49.0563,85.2058,43.5375,85.1614,38.0188,85,32.5,85.0754,32.5312,85.7468,30.7383,86.6882,29.0572,87.3857,27.275,87.9811,25.4505,88.6612,23.6612,88.6954,23.7438,90.4123,22.8888,92.2881,22.4173,93.9842,21.5122,95.7542,20.7854,97.5,20" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="95" x="95" y="42.9951">README.rst</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="203" x="99" y="59.292">how to install and start Galaxy</text><path d="M35,300.375 L35,300.5618 L37,300.0067 L39,300.5468 L41,300.7303 L43,299.7409 L45,300.375 L45,300.375 L44.9686,300.3607 L45.8236,298.1128 L46.8371,295.9373 L47.9607,293.812 L48.7048,291.5135 L49.9805,289.4576 L50.2232,289.4977 L50.1187,286.9058 L50.7229,284.4311 L51.4135,281.9708 L51.6011,279.4272 L52.0532,276.9274 L52.0834,276.9308 L52.4097,273.6753 L52.8733,270.4355 L53.2706,267.1882 L53.7943,263.9552 L53.9063,260.6753 L54.2034,260.7012 L54.5424,256.8556 L54.6899,252.9933 L55.1179,249.1555 L55.559,245.3188 L55.5835,241.4457 L55.2638,241.4227 L56.1934,237.1749 L56.0702,232.8512 L56.7474,228.5852 L56.6004,224.2598 L57.1289,219.9831 L57.0377,219.9775 L58.6901,210.7144 L58.2125,201.3202 L58.9917,192.0034 L59.8764,182.6931 L60,173.3359 L60.5539,173.37 L60.569,164.0062 L61.5307,154.7006 L60.9609,145.3008 L62.6753,136.0415 L62.8711,126.6888 L63.1141,126.7063 L63.3772,122.4104 L63.761,118.1233 L63.5842,113.7958 L63.8183,109.4978 L64.4165,105.2261 L64.1414,105.2021 L64.7259,101.3779 L65.0004,97.5267 L65.7246,93.7147 L65.681,89.8357 L66.0938,85.9966 L65.9423,85.9793 L66.5652,82.7577 L66.5405,79.4622 L66.9763,76.2192 L67.8627,73.0276 L67.9468,69.7445 L68.1378,69.7761 L68.6834,67.2917 L68.6348,64.7091 L69.3304,62.2495 L69.8639,59.7632 L70.0195,57.2143 L69.8285,57.1272 L70.9769,55.0131 L72.0627,52.8706 L73.2714,50.7841 L74.0022,48.4796 L75,46.2969 L75,46.708 L77,45.8046 L79,45.6949 L81,46.7445 L83,45.6596 L85,46.2969 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="97.5,92.5938,97.5,92.8039,107.3421,92.1794,117.1842,92.787,127.0263,92.9934,136.8684,91.8804,146.7105,92.516,156.5526,92.1673,166.3947,92.2103,176.2368,92.5256,186.0789,91.9024,195.9211,93.1474,205.7632,91.9635,215.6053,92.396,225.4474,93.0257,235.2895,92.508,245.1316,92.662,254.9737,92.5618,264.8158,92.7723,274.6579,92.8329,284.5,92.5938,284.5747,92.7741,286.3534,93.5326,288.1222,94.2674,289.8358,94.8689,291.6302,95.6654,293.3388,96.2549,293.5551,96.3445,293.849,97.9307,295.0123,99.877,295.4442,101.5204,296.4322,103.3941,297,105.0938,296.835,105.0938,296.9772,110.6125,297.2472,116.1313,296.9838,121.65,297.0351,127.1688,297,132.6875,297.1043,132.7307,296.3959,134.5084,295.5343,136.2225,294.8918,138.0274,293.8948,139.6855,293.3388,141.5263,293.3751,141.6139,291.641,142.4274,289.86,143.1277,288.1137,143.9118,286.2061,144.3065,284.5,145.1875,284.5,144.5353,274.6579,144.5661,264.8158,145.1286,254.9737,144.991,245.1316,145.8689,235.2895,145.0128,225.4474,144.8444,215.6053,145.4158,205.7632,144.5207,195.9211,144.6684,186.0789,145.8365,176.2368,145.6232,166.3947,145.922,156.5526,144.8657,146.7105,145.5067,136.8684,145.7779,127.0263,144.7151,117.1842,145.0916,107.3421,145.3135,97.5,145.1875,97.5831,145.3882,95.7317,144.454,94.0235,143.8655,92.1261,142.8203,90.3425,142.05,88.6612,141.5263,88.8163,141.5906,87.7081,139.6671,87.3534,138.0557,86.5281,136.2494,85.6497,134.4211,85,132.6875,84.8821,132.6875,85.1529,127.1688,84.9002,121.65,85.1973,116.1313,84.8158,110.6125,85,105.0938,85.1901,105.1725,85.8814,103.3878,86.5399,101.5895,87.2112,99.7965,88.1527,98.1154,88.6612,96.2549,88.7394,96.4439,90.4505,95.5748,92.2309,94.873,93.9478,94.0181,95.8236,93.5466,97.5,92.5938" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="150" x="95" y="115.5889">CONTRIBUTING.md</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="188" x="99" y="131.8857">how to contribute to Galaxy</text><path d="M35,300.375 L35,300.5618 L37,300.0067 L39,300.5468 L41,300.7303 L43,299.7409 L45,300.375 L45,300.375 L44.9709,300.3564 L45.8363,298.7133 L46.8485,297.164 L47.9628,295.6798 L48.7254,293.9711 L49.9805,292.5768 L50.2202,292.6324 L50.1221,290.7236 L50.7239,288.9769 L51.4111,287.2501 L51.6015,285.4081 L52.0532,283.6267 L52.0832,283.6315 L52.4098,281.3027 L52.8728,278.9957 L53.27,276.6783 L53.7927,274.3808 L53.9063,272.0181 L54.2023,272.0542 L54.5414,269.3076 L54.6895,266.5376 L55.1171,263.8018 L55.5578,261.0676 L55.5835,258.2827 L55.2646,258.2505 L56.1926,255.2468 L56.0705,252.1373 L56.7468,249.1082 L56.6009,245.9962 L57.1289,242.9522 L57.0986,242.9496 L58.0315,236.3166 L58.2558,229.6226 L58.8982,222.9646 L59.5757,216.3096 L60,209.6328 L60.1843,209.6487 L60.5725,202.9688 L61.2756,196.316 L61.4692,189.6193 L62.4228,182.9881 L62.8711,176.3134 L63.1135,176.3379 L63.3767,173.2671 L63.7603,170.2086 L63.5847,167.0936 L63.819,164.02 L64.4165,160.9829 L64.1424,160.9495 L64.726,158.2327 L65.0007,155.4782 L65.7235,152.7784 L65.6812,149.9852 L66.0938,147.2476 L65.9432,147.2235 L66.5645,144.9418 L66.5423,142.5574 L66.9777,140.246 L67.861,138.0061 L67.9468,135.6389 L68.1354,135.6826 L68.6794,133.9226 L68.6365,132.0266 L69.3286,130.3009 L69.8606,128.538 L70.0195,126.6888 L69.8426,126.5758 L70.9797,125.1062 L72.0589,123.5997 L73.2519,122.1658 L74.0023,120.4493 L75,118.8906 L75,119.3018 L77,118.3984 L79,118.2886 L81,119.3383 L83,118.2533 L85,118.8906 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="97.5,165.1875,97.5,165.3977,107.575,164.7732,117.65,165.3808,127.725,165.5872,137.8,164.4741,147.875,165.1098,157.95,164.761,168.025,164.804,178.1,165.1193,188.175,164.4961,198.25,165.7411,208.325,164.5572,218.4,164.9897,228.475,165.6194,238.55,165.1017,248.625,165.2557,258.7,165.1556,268.775,165.366,278.85,165.4266,288.925,165.7732,299,165.8586,309.075,165.8668,319.15,165.4421,329.225,165.6511,339.3,165.8897,349.375,164.4663,359.45,165.866,369.525,164.891,379.6,165.7213,389.675,164.6925,399.75,165.119,409.825,165.9291,419.9,165.1388,429.975,165.2928,440.05,165.5261,450.125,165.6037,460.2,165.1836,470.275,165.4747,480.35,164.6151,490.425,165.4719,500.5,165.1875,500.5699,165.3563,502.3245,166.0566,504.1137,166.8408,505.7417,167.2354,507.4879,167.9156,509.3388,168.8487,509.1475,168.7694,510.0529,170.6089,510.7428,172.3591,511.7454,174.2389,512.214,175.8975,513,177.6875,512.8856,177.6875,513.0761,183.2063,512.7777,188.725,512.827,194.2438,513.2163,199.7625,513,205.2813,513.1342,205.3368,512.494,207.1427,511.4364,208.7757,510.9016,210.6253,510.2529,212.4276,509.3388,214.1201,509.2786,213.9746,507.5588,214.8228,505.8194,215.6233,504.1187,216.5175,502.2672,217.0477,500.5,217.7813,500.5,218.2438,490.425,217.2275,480.35,217.104,470.275,218.2849,460.2,217.0643,450.125,218.2902,440.05,217.9879,429.975,217.5133,419.9,217.4275,409.825,218.24,399.75,217.4819,389.675,218.3731,379.6,217.2285,369.525,218.3987,359.45,218.2656,349.375,218.0262,339.3,217.8285,329.225,218.5079,319.15,218.3948,309.075,217.9505,299,218.0494,288.925,217.651,278.85,218.4977,268.775,217.9361,258.7,217.9538,248.625,217.1729,238.55,217.376,228.475,218.312,218.4,218.211,208.325,217.7383,198.25,217.4591,188.175,217.5623,178.1,217.0951,168.025,218.196,157.95,218.5208,147.875,218.3076,137.8,218.4762,127.725,217.6445,117.65,217.8685,107.575,217.3937,97.5,217.7813,97.5362,217.8687,95.7637,217.125,94.0349,216.4869,92.1674,215.5138,90.4118,214.8109,88.6612,214.1201,88.7977,214.1767,88.1036,212.4247,87.0389,210.5192,86.4048,208.7921,85.7782,207.0681,85,205.2813,84.7964,205.2813,85.1178,199.7625,85.086,194.2438,84.9664,188.725,85.0474,183.2063,85,177.6875,85.2244,177.7805,85.6359,175.8798,86.5615,174.1921,87.2847,172.4206,87.9646,170.6312,88.6612,168.8487,88.6791,168.8921,90.4434,168.1514,92.1171,167.192,93.9133,166.5285,95.6734,165.7776,97.5,165.1875" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="187" x="95" y="188.1826">CODE_OF_CONDUCT.md</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="404" x="99" y="204.4795">"expectations for participants within the Galaxy community"</text><path d="M35,300.375 L35,300.5618 L37,300.0067 L39,300.5468 L41,300.7303 L43,299.7409 L45,300.375 L45,300.375 L44.9694,300.359 L46.6133,296.8843 L48.4115,293.4903 L50.3169,290.1525 L51.8528,286.6212 L53.9063,283.3608 L54.1482,283.4056 L54.2753,279.822 L55.1089,276.3691 L56.0286,272.932 L56.4469,269.4023 L57.1289,265.9213 L57.1589,265.9256 L57.6891,261.921 L58.3559,257.9359 L58.9568,253.9415 L59.6834,249.965 L60,245.9297 L60.2952,245.9721 L60.873,241.9743 L61.2605,237.9491 L61.9266,233.964 L62.6058,229.9807 L62.8711,225.938 L62.5559,225.8798 L63.8122,222.5049 L64.0306,218.9383 L65.038,215.5175 L65.2329,211.9465 L66.0938,208.4985 L66.0668,208.4844 L68.167,205.2486 L69.6371,201.6828 L71.479,198.3117 L73.3521,194.957 L75,191.4844 L75,191.8544 L77,191.4809 L79,191.7397 L81,190.9756 L83,191.7372 L85,191.4844 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="97.5,237.7813,97.5,237.9914,107.3889,237.3669,117.2778,237.9745,127.1667,238.1809,137.0556,237.0679,146.9444,237.7035,156.8333,237.3548,166.7222,237.3978,176.6111,237.7131,186.5,237.7813,186.4118,237.5683,188.3384,238.684,189.9551,239.0516,191.7781,239.917,193.6262,240.8432,195.3388,241.4424,195.3124,241.4315,196.0921,243.2189,196.7935,244.9739,197.5905,246.7685,198.3414,248.544,199,250.2813,199.1952,250.2813,199.2237,255.8,199.2264,261.3188,199.0849,266.8375,199.1545,272.3563,199,277.875,199.2163,277.9646,198.0457,279.5508,197.7445,281.4971,196.712,283.1405,196.2355,285.0142,195.3388,286.7138,195.2757,286.5614,193.5623,287.425,191.8979,288.4067,190.0293,288.8955,188.2812,289.6752,186.5,290.375,186.5,290.7136,176.6111,290.7912,166.7222,290.3711,156.8333,290.6622,146.9444,289.8026,137.0556,290.6594,127.1667,290.9232,117.2778,290.8195,107.3889,290.988,97.5,290.375,97.4384,290.2262,95.649,289.4419,93.8852,288.7192,92.1892,288.1602,90.4039,287.3855,88.6612,286.7138,88.871,286.8008,87.8751,284.9238,87.0911,283.1345,86.5348,281.4397,85.5269,279.5577,85,277.875,84.827,277.875,85.2163,272.3563,85.1452,266.8375,85.2448,261.3188,84.8927,255.8,85,250.2813,85.0983,250.322,85.9141,248.5888,86.319,246.6855,87.1672,244.9657,87.9677,243.2263,88.6612,241.4424,88.7443,241.6431,90.4284,240.7089,92.2557,240.1204,93.8938,239.0752,95.6458,238.3049,97.5,237.7813" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="94" x="95" y="260.7764">LICENSE.txt</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="77" x="99" y="277.0732">AFL license</text><path d="M35,300.375 L35,300.5618 L37,300.0067 L39,300.5468 L41,300.7303 L43,299.7409 L45,300.375 L45,300.375 L44.9814,300.3459 L46.6794,299.0808 L48.4709,297.9627 L50.3275,296.9466 L51.96,295.5787 L53.9063,294.7036 L54.1274,294.8116 L54.8733,292.0853 L56.2648,289.6742 L57.735,287.3016 L58.747,284.7052 L60,282.2266 L60.0273,282.2399 L61.206,279.7249 L62.5088,277.2706 L63.7518,274.787 L65.1089,272.3592 L66.0938,269.7495 L66.2539,270.0011 L68.0372,268.8699 L69.717,267.5764 L71.5482,266.5205 L73.3864,265.4757 L75,264.0781 L75,263.4371 L77,264.6812 L79,263.8146 L81,264.5526 L83,263.6381 L85,264.0781 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="97.5,310.375,97.5,310.5852,107.5455,309.9607,117.5909,310.5683,127.6364,310.7747,137.6818,309.6616,147.7273,310.2973,157.7727,309.9485,167.8182,309.9915,177.8636,310.3068,187.9091,309.6836,197.9545,310.9286,208,309.7447,218.0455,310.1772,228.0909,310.8069,238.1364,310.2892,248.1818,310.4432,258.2273,310.3431,268.2727,310.5535,278.3182,310.6141,288.3636,310.9607,298.4091,311.0461,308.4545,311.0543,318.5,310.375,318.5325,310.4534,320.3269,311.25,322.1251,312.0557,323.7113,312.3496,325.6576,313.5129,327.3388,314.0362,327.2475,313.9983,328.2355,315.872,328.6509,317.5086,329.5144,319.3307,330.4962,321.2018,331,322.875,330.9838,322.875,331.0351,328.3938,331.1129,333.9125,331.1387,339.4313,330.9987,344.95,331,350.4688,331.0885,350.5054,330.0915,352.1635,329.6231,354.0406,328.9721,355.842,328.208,357.5965,327.3388,359.3076,327.417,359.4964,325.5094,359.891,323.7201,360.5712,321.9563,361.3129,320.2603,362.2184,318.5,362.9688,318.5,362.7722,308.4545,363.6502,298.4091,362.7941,288.3636,362.6257,278.3182,363.197,268.2727,362.3019,258.2273,362.4496,248.1818,363.6177,238.1364,363.4044,228.0909,363.7032,218.0455,362.647,208,363.2879,197.9545,363.5592,187.9091,362.4963,177.8636,362.8729,167.8182,363.0947,157.7727,363.6205,147.7273,362.9646,137.6818,363.4313,127.6364,362.415,117.5909,362.2915,107.5455,363.4724,97.5,362.9688,97.4085,362.748,95.7972,362.3933,93.9908,361.5679,92.1625,360.6895,90.3838,359.9309,88.6612,359.3076,88.8024,359.3661,87.8367,357.5016,87.379,355.8475,86.2942,353.9338,85.9224,352.3153,85,350.4688,85.1614,350.4688,85.0817,344.95,85.0157,339.4313,85.2422,333.9125,85.2045,328.3938,85,322.875,85.0521,322.8966,85.8148,321.1414,86.4243,319.3228,87.4173,317.6631,87.9766,315.8237,88.6612,314.0362,88.6832,314.0893,90.3513,313.1166,92.145,312.4469,94.0322,312.0029,95.7871,311.2396,97.5,310.375" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="75" x="95" y="333.3701">CITATION</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="222" x="99" y="349.667">description of how to cite Galaxy</text><path d="M35,300.375 L35,300.5618 L37,300.0067 L39,300.5468 L41,300.7303 L43,299.7409 L45,300.375 L45,300.375 L44.9814,300.3459 L46.6794,301.3494 L48.4709,302.4998 L50.3275,303.7523 L51.96,304.6529 L53.9063,306.0464 L54.1274,306.1544 L54.8733,308.4189 L56.2648,310.9986 L57.735,313.6169 L58.747,316.0113 L60,318.5234 L60.0273,318.5367 L61.206,321.0126 L62.5088,323.5491 L63.7518,326.0563 L65.1089,328.6193 L66.0938,331.0005 L66.2539,331.2521 L68.0372,332.3894 L69.717,333.3645 L71.5482,334.5771 L73.3864,335.8009 L75,336.6719 L75,336.0308 L77,337.275 L79,336.4083 L81,337.1464 L83,336.2319 L85,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="97.5,382.9688,97.5,383.1789,107.5417,382.5544,117.5833,383.162,127.625,383.3684,137.6667,382.2554,147.7083,382.891,157.75,382.5423,167.7917,382.5853,177.8333,382.9006,187.875,382.2774,197.9167,383.5224,207.9583,382.3385,218,382.771,228.0417,383.4007,238.0833,382.883,248.125,383.037,258.1667,382.9368,268.2083,383.1473,278.25,383.2079,288.2917,383.5544,298.3333,383.6398,308.375,383.648,318.4167,383.2234,328.4583,383.4323,338.5,382.9688,338.5896,383.185,340.1758,383.4789,342.1221,384.6422,343.7655,385.0741,345.6392,386.0621,347.3388,386.6299,347.1864,386.5668,348.05,388.3889,349.0317,390.26,349.5205,391.927,350.3002,393.7144,351,395.4688,351.1129,395.4688,351.1387,400.9875,350.9987,406.5063,351.0957,412.025,350.8092,417.5438,351,423.0625,351.0876,423.0988,350.4366,424.9002,349.6724,426.6547,348.9921,428.444,347.9223,430.0719,347.3388,431.9013,347.2556,431.7005,345.4918,432.4422,343.7958,433.3477,342.0105,434.0375,340.3547,435.0401,338.5,435.5625,338.5,435.3878,328.4583,435.2194,318.4167,435.7908,308.375,434.8957,298.3333,435.0434,288.2917,436.2115,278.25,435.9982,268.2083,436.297,258.1667,435.2407,248.125,435.8817,238.0833,436.1529,228.0417,435.0901,218,435.4666,207.9583,435.6885,197.9167,436.2143,187.875,435.5583,177.8333,436.0251,167.7917,435.0087,157.75,434.8852,147.7083,436.0661,137.6667,434.8456,127.625,436.0715,117.5833,435.7691,107.5417,435.2946,97.5,435.5625,97.4549,435.4536,95.7908,434.9715,93.9263,434.0059,92.2722,433.5481,90.3584,432.4633,88.6612,431.9013,88.8513,431.9801,88.0781,430.1953,87.2721,428.397,86.479,426.6041,85.956,424.923,85,423.0625,85.2045,423.0625,85.0564,417.5438,85.0894,412.025,84.9566,406.5063,85.2388,400.9875,85,395.4688,85.0477,395.4885,85.7854,393.723,86.2771,391.8556,87.0719,390.1138,88.0924,388.4654,88.6612,386.6299,88.716,386.7623,90.4235,385.8845,92.1556,385.0662,93.9365,384.3658,95.6447,383.4897,97.5,382.9688" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="155" x="95" y="405.9639">CONTRIBUTORS.md</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="242" x="99" y="422.2607">list of people who have contributed</text><path d="M35,300.375 L35,300.5618 L37,300.0067 L39,300.5468 L41,300.7303 L43,299.7409 L45,300.375 L45,300.375 L44.9694,300.359 L46.6133,303.6899 L48.4115,307.1016 L50.3169,310.5694 L51.8528,313.8438 L53.9063,317.3892 L54.1482,317.4339 L54.2753,320.8262 L55.1089,324.349 L56.0286,327.8878 L56.4469,331.3338 L57.1289,334.8287 L57.1589,334.833 L57.6891,338.825 L58.3559,342.8366 L58.9568,346.8388 L59.6834,350.859 L60,354.8203 L60.2952,354.8627 L60.873,358.8616 L61.2605,362.8331 L61.9266,366.8446 L62.6058,370.858 L62.8711,374.812 L62.5559,374.7537 L63.8122,378.3547 L64.0306,381.7638 L65.038,385.3188 L65.2329,388.7236 L66.0938,392.2515 L66.0668,392.2373 L68.167,395.8072 L69.6371,399.0471 L71.479,402.4817 L73.3521,405.9326 L75,409.2656 L75,409.6356 L77,409.2622 L79,409.5209 L81,408.7568 L83,409.5184 L85,409.2656 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="97.5,500.0078,97.5,500.0779,103.1,499.8697,108.7,500.0722,114.3,500.141,119.9,499.77,125.5,500.0078,125.4901,499.9839,127.2134,500.6087,128.9866,501.3542,130.7946,502.1835,132.4829,502.7238,134.3388,503.669,134.5093,503.7396,134.877,505.3563,135.7424,507.1793,136.6686,509.0274,137.2414,510.7291,138,512.5078,138.0227,512.5078,137.9894,514.7672,138.0595,517.0266,138.0797,519.2859,138.1952,521.5453,138,523.8047,138.2067,523.8903,137.477,525.6591,136.6139,527.3727,135.9461,529.1671,135.2873,530.9653,134.3388,532.6435,134.2468,532.4214,132.6576,533.5847,130.7655,534.0167,129.1036,535.0046,127.2046,535.42,125.5,536.3047,125.5,536.2819,119.9,536.5519,114.3,536.2884,108.7,536.3398,103.1,536.4176,97.5,536.3047,97.5531,536.4329,95.7317,535.5713,94.0011,534.9287,92.1237,533.9317,90.4652,533.4633,88.6612,532.6435,88.83,532.7135,88.0658,530.9325,87.3855,529.1862,86.3157,527.2786,85.5314,525.4893,85,523.8047,84.7929,523.8047,84.9804,521.5453,84.9345,519.2859,85.2271,517.0266,84.9418,514.7672,85,512.5078,84.8944,512.4641,85.8025,510.7692,86.2591,508.8872,87.0368,507.1383,88.1288,505.5195,88.6612,503.669,88.7167,503.8031,90.5226,503.1629,92.1557,502.1054,94.0052,501.5706,95.8075,500.9219,97.5,500.0078" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="33" x="95" y="523.0029">doc/</text><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="200.5,500.0078,200.5,500.218,211.1,499.5935,221.7,500.2011,232.3,500.4075,242.9,499.2944,253.5,500.0078,253.4901,499.9839,255.2134,500.6087,256.9866,501.3542,258.7946,502.1835,260.4829,502.7238,262.3388,503.669,262.5093,503.7396,262.877,505.3563,263.7424,507.1793,264.6686,509.0274,265.2414,510.7291,266,512.5078,266.0227,512.5078,265.9894,514.7672,266.0595,517.0266,266.0797,519.2859,266.1952,521.5453,266,523.8047,266.2067,523.8903,265.477,525.6591,264.6139,527.3727,263.9461,529.1671,263.2873,530.9653,262.3388,532.6435,262.2468,532.4214,260.6576,533.5847,258.7655,534.0167,257.1036,535.0046,255.2046,535.42,253.5,536.3047,253.5,536.2362,242.9,537.0463,232.3,536.256,221.7,536.41,211.1,536.6433,200.5,536.3047,200.5531,536.4329,198.7317,535.5713,197.0011,534.9287,195.1237,533.9317,193.4652,533.4633,191.6612,532.6435,191.83,532.7135,191.0658,530.9325,190.3855,529.1862,189.3157,527.2786,188.5314,525.4893,188,523.8047,187.7929,523.8047,187.9804,521.5453,187.9345,519.2859,188.2271,517.0266,187.9418,514.7672,188,512.5078,187.8944,512.4641,188.8025,510.7692,189.2591,508.8872,190.0368,507.1383,191.1288,505.5195,191.6612,503.669,191.7167,503.8031,193.5226,503.1629,195.1557,502.1054,197.0052,501.5706,198.8075,500.9219,200.5,500.0078" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="58" x="198" y="523.0029">source/</text><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="328.5,500.0078,328.5,500.218,338,499.5935,347.5,500.2011,357,500.4075,366.5,499.2944,376,499.9301,385.5,500.0078,385.4456,499.8765,387.2188,500.6219,389.0268,501.4513,390.7151,501.9916,392.6417,503.1072,394.3388,503.669,394.1447,503.5886,395.0102,505.4115,395.9363,507.2596,396.5091,508.9613,397.2888,510.7488,398,512.5078,397.9894,512.5078,398.0595,514.7672,398.0797,517.0266,398.1952,519.2859,398.2237,521.5453,398,523.8047,398.2092,523.8913,397.3462,525.6049,396.6783,527.3994,396.0196,529.1976,394.849,530.7838,394.3388,532.6435,394.4254,532.8525,392.5332,533.2844,390.8714,534.2724,388.9724,534.6878,387.259,535.5514,385.5,536.3047,385.5,537.0463,376,536.256,366.5,536.41,357,536.6433,347.5,536.7209,338,536.3008,328.5,536.3047,328.5366,536.3931,326.6592,535.3962,325.0007,534.9278,323.2666,534.2768,321.4856,533.5127,319.6612,532.6435,319.85,532.7217,318.7802,530.8141,317.9959,529.0248,317.2731,527.261,316.7141,525.5649,316,523.8047,315.9345,523.8047,316.2271,521.5453,315.9418,519.2859,315.8856,517.0266,316.0761,514.7672,316,512.5078,315.7946,512.4227,316.5724,510.6738,317.6643,509.0551,318.3309,507.2601,319.1551,505.5304,319.6612,503.669,319.6201,503.5699,321.4696,503.035,323.272,502.3863,324.9042,501.3268,326.72,500.7105,328.5,500.0078" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="62" x="326" y="523.0029">project/</text><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="460.5,455.5625,460.5,455.7727,470.5556,455.1482,480.6111,455.7558,490.6667,455.9622,500.7222,454.8491,510.7778,455.4848,520.8333,455.136,530.8889,455.179,540.9444,455.4943,551,454.8711,561.0556,456.1161,571.1111,454.9322,581.1667,455.3647,591.2222,455.9944,601.2778,455.4767,611.3333,455.6307,621.3889,455.5306,631.4444,455.741,641.5,455.5625,641.5305,455.6361,643.3425,456.4751,645.1211,457.2336,646.8899,457.9684,648.6035,458.5698,650.3388,459.2237,650.4816,459.2828,651.2873,461.081,651.5812,462.6672,652.7445,464.6135,653.1765,466.2569,654,468.0625,654.1779,468.0625,653.835,473.5813,653.9772,479.1,654.2472,484.6188,653.9838,490.1375,654,495.6563,654.0324,495.6697,653.3721,497.4672,652.6637,499.2449,651.8021,500.9591,651.1595,502.764,650.3388,504.4951,650.2658,504.3188,648.6073,505.3149,646.8732,506.1284,645.0922,506.8287,643.346,507.6128,641.5,508.1563,641.5,507.6732,631.4444,507.5041,621.3889,507.5348,611.3333,508.0974,601.2778,507.9597,591.2222,508.8377,581.1667,507.9816,571.1111,507.8132,561.0556,508.3845,551,507.4894,540.9444,507.6371,530.8889,508.8052,520.8333,508.5919,510.7778,508.8907,500.7222,507.8345,490.6667,508.4754,480.6111,508.7467,470.5556,507.6838,460.5,508.1563,460.4878,508.1267,458.7483,507.4628,457.0476,506.8925,455.1962,505.9583,453.4879,505.3698,451.6612,504.4951,451.4906,504.4244,450.7204,502.6409,450.3518,501.0238,449.2437,499.1003,448.889,497.4889,448,495.6563,448.0689,495.6563,447.9107,490.1375,447.8821,484.6188,448.1529,479.1,447.9002,473.5813,448,468.0625,448.1823,468.138,448.562,466.2242,449.6546,464.6057,450.3458,462.821,451.0044,461.0227,451.6612,459.2237,451.6672,459.2382,453.5216,458.7152,455.275,457.9482,456.9861,457.0791,458.7664,456.3773,460.5,455.5625" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="76" x="458" y="478.5576">issues.rst</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="182" x="462" y="494.8545">describes Github tags, etc</text><path d="M398,518.1563 L398,518.3431 L400,517.788 L402,518.3281 L404,518.5115 L406,517.5221 L408,518.1563 L408,518.1563 L407.9814,518.1271 L409.6794,516.8621 L411.4709,515.7439 L413.3275,514.7279 L414.96,513.36 L416.9063,512.4849 L417.1274,512.5928 L417.8733,509.8665 L419.2648,507.4555 L420.735,505.0829 L421.747,502.4865 L423,500.0078 L423.0273,500.0211 L424.206,497.5062 L425.5088,495.0518 L426.7518,492.5682 L428.1089,490.1404 L429.0938,487.5308 L429.2539,487.7823 L431.0372,486.6511 L432.717,485.3577 L434.5482,484.3017 L436.3864,483.2569 L438,481.8594 L438,481.2183 L440,482.4625 L442,481.5958 L444,482.3339 L446,481.4194 L448,481.8594 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1uemygw3zepw0)" points="460.5,528.1563,460.5,528.3664,470.4048,527.7419,480.3095,528.3495,490.2143,528.5559,500.119,527.4429,510.0238,528.0785,519.9286,527.7298,529.8333,527.7728,539.7381,528.0881,549.6429,527.4649,559.5476,528.7099,569.4524,527.526,579.3571,527.9585,589.2619,528.5882,599.1667,528.0705,609.0714,528.2245,618.9762,528.1243,628.881,528.3348,638.7857,528.3954,648.6905,528.7419,658.5952,528.8273,668.5,528.1563,668.5866,528.3654,670.3002,528.9669,672.0947,529.7635,673.8929,530.5692,675.4791,530.8631,677.3388,531.8174,677.5478,531.904,677.9798,533.5474,678.9677,535.421,679.3831,537.0576,680.2467,538.8797,681,540.6563,681.2472,540.6563,680.9838,546.175,681.0351,551.6938,681.1129,557.2125,681.1387,562.7313,681,568.25,680.9988,568.2495,680.3562,570.0544,679.3593,571.7125,678.8909,573.5896,678.2399,575.391,677.3388,577.0888,677.3955,577.2257,675.6493,578.0099,673.7417,578.4045,671.9523,579.0847,670.1885,579.8264,668.5,580.75,668.5,580.6911,658.5952,580.5535,648.6905,581.4314,638.7857,580.5753,628.881,580.4069,618.9762,580.9783,609.0714,580.0832,599.1667,580.2309,589.2619,581.399,579.3571,581.1857,569.4524,581.4845,559.5476,580.4282,549.6429,581.0692,539.7381,581.3404,529.8333,580.2776,519.9286,580.6541,510.0238,580.876,500.119,581.4018,490.2143,580.7458,480.3095,581.2126,470.4048,580.1962,460.5,580.75,460.4136,580.5414,458.7965,580.1729,456.873,579.0647,455.2616,578.71,453.4553,577.8847,451.6612,577.0888,451.5787,577.0547,450.82,575.2759,450.338,573.6118,449.3723,571.7474,448.9145,570.0933,448,568.25,447.8158,568.25,448.2058,562.7313,448.1614,557.2125,448.0817,551.6938,448.0157,546.175,448,540.6563,448.2238,540.7489,448.9212,538.9668,449.5166,537.1423,450.2793,535.3872,450.8888,533.5686,451.6612,531.8174,451.7526,532.0381,453.4487,531.1329,455.2187,530.4061,456.8869,529.4334,458.6805,528.7637,460.5,528.1563" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="127" x="458" y="551.1514">organization.rst</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="209" x="462" y="567.4482">project governance document</text><path d="M398,518.1563 L398,518.3431 L400,517.788 L402,518.3281 L404,518.5115 L406,517.5221 L408,518.1563 L408,518.1563 L407.9814,518.1271 L409.6794,519.1306 L411.4709,520.281 L413.3275,521.5335 L414.96,522.4342 L416.9063,523.8276 L417.1274,523.9356 L417.8733,526.2001 L419.2648,528.7799 L420.735,531.3981 L421.747,533.7925 L423,536.3047 L423.0273,536.318 L424.206,538.7939 L425.5088,541.3303 L426.7518,543.8376 L428.1089,546.4006 L429.0938,548.7817 L429.2539,549.0333 L431.0372,550.1707 L432.717,551.1457 L434.5482,552.3584 L436.3864,553.5821 L438,554.4531 L438,553.8121 L440,555.0562 L442,554.1896 L444,554.9276 L446,554.0131 L448,554.4531 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M266,518.1563 L266,518.3431 L268,517.788 L270,518.3281 L272,518.5115 L274,517.5221 L276,518.1563 L276,518.1563 L276,518.1217 L282,517.9667 L288,517.9858 L294,518.126 L300,517.849 L306,518.1563 L306,518.6484 L308,517.596 L310,517.9805 L312,518.5402 L314,518.08 L316,518.1563 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M138,518.1563 L138,518.3431 L140,517.788 L142,518.3281 L144,518.5115 L146,517.5221 L148,518.1563 L148,518.1563 L148,518.1217 L154,517.9667 L160,517.9858 L166,518.126 L172,517.849 L178,518.1563 L178,518.6484 L180,517.596 L182,517.9805 L184,518.5402 L186,518.08 L188,518.1563 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,300.375 L35,300.5618 L37,300.0067 L39,300.5468 L41,300.7303 L43,299.7409 L45,300.375 L45,300.375 L44.9695,300.3588 L45.8288,302.1575 L46.8417,304.038 L47.9615,305.9754 L48.7131,307.7169 L49.9805,309.7328 L50.2221,309.7794 L50.12,311.8277 L50.7233,314.0122 L51.4126,316.2133 L51.6012,318.3177 L52.0532,320.473 L52.0833,320.477 L52.4098,323.2572 L52.8731,326.0556 L53.2704,328.8452 L53.7937,331.6516 L53.9063,334.4033 L54.203,334.4335 L54.542,337.7304 L54.6897,341.0078 L55.1176,344.3137 L55.5585,347.6209 L55.5835,350.8858 L55.2641,350.859 L56.1931,354.5903 L56.0703,358.2334 L56.7472,361.9436 L56.6006,365.5846 L57.1289,369.2823 L57.0985,369.2802 L58.0319,377.3026 L58.2557,385.2741 L58.8982,393.2757 L59.5759,401.2797 L60,409.2656 L60.1845,409.2789 L60.5725,417.2622 L61.2758,425.2681 L61.4689,433.2374 L62.4229,441.2613 L62.8711,449.2489 L63.1139,449.2693 L63.3771,452.9448 L63.7608,456.6303 L63.5844,460.2689 L63.8186,463.9419 L64.4165,467.6455 L64.1417,467.6175 L64.7259,470.9393 L65.0005,474.2296 L65.7241,477.5656 L65.6811,480.8236 L66.0938,484.1279 L65.9426,484.1078 L66.5649,486.9274 L66.5412,489.661 L66.9769,492.4557 L67.8621,495.3102 L67.9468,498.0583 L68.1369,498.095 L68.6819,500.2682 L68.6355,502.3272 L69.3297,504.5293 L69.8626,506.7001 L70.0195,508.7985 L69.8342,508.6998 L70.978,510.65 L72.0611,512.5679 L73.2635,514.5492 L74.0023,516.2838 L75,518.1563 L75,518.5674 L77,517.664 L79,517.5542 L81,518.6039 L83,517.519 L85,518.1563 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[e25b9321e95a1467b640bdef4a287b54] +@startmindmap + +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>README.rst</i></b> + how to install and start Galaxy; +**:<b><i>CONTRIBUTING.md</i></b> + how to contribute to Galaxy; +**:<b><i>CODE_OF_CONDUCT.md</i></b> + "expectations for participants within the Galaxy community"; +**:<b><i>LICENSE.txt</i></b> + AFL license; +**:<b><i>CITATION</i></b> + description of how to cite Galaxy; +**:<b><i>CONTRIBUTORS.md</i></b> + list of people who have contributed; +** <b><i>doc/</i></b> +*** <b><i>source/</i></b> +**** <b><i>project/</i></b> +*****:<b><i>issues.rst</i></b> + describes Github tags, etc; +*****:<b><i>organization.rst</i></b> + project governance document; +@endmindmap + +@startmindmap + +<style> +mindmapDiagram { + node { + BackgroundColor #FFEFD5 + BorderColor DarkOrange + LineColor Orange + } +} +</style> +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +* / +**:<b><i>README.rst</i></b> + how to install and start Galaxy; +**:<b><i>CONTRIBUTING.md</i></b> + how to contribute to Galaxy; +**:<b><i>CODE_OF_CONDUCT.md</i></b> + "expectations for participants within the Galaxy community"; +**:<b><i>LICENSE.txt</i></b> + AFL license; +**:<b><i>CITATION</i></b> + description of how to cite Galaxy; +**:<b><i>CONTRIBUTORS.md</i></b> + list of people who have contributed; +** <b><i>doc/</i></b> +*** <b><i>source/</i></b> +**** <b><i>project/</i></b> +*****:<b><i>issues.rst</i></b> + describes Github tags, etc; +*****:<b><i>organization.rst</i></b> + project governance document; +@endmindmap + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/core_files_project_docs.plantuml.txt b/topics/dev/images/core_files_project_docs.plantuml.txt new file mode 100644 index 00000000000000..51334d1e6e0b33 --- /dev/null +++ b/topics/dev/images/core_files_project_docs.plantuml.txt @@ -0,0 +1,25 @@ +@startmindmap +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>README.rst</i></b> + how to install and start Galaxy; +**:<b><i>CONTRIBUTING.md</i></b> + how to contribute to Galaxy; +**:<b><i>CODE_OF_CONDUCT.md</i></b> + "expectations for participants within the Galaxy community"; +**:<b><i>LICENSE.txt</i></b> + AFL license; +**:<b><i>CITATION</i></b> + description of how to cite Galaxy; +**:<b><i>CONTRIBUTORS.md</i></b> + list of people who have contributed; +** <b><i>doc/</i></b> +*** <b><i>source/</i></b> +**** <b><i>project/</i></b> +*****:<b><i>issues.rst</i></b> + describes Github tags, etc; +*****:<b><i>organization.rst</i></b> + project governance document; +@endmindmap diff --git a/topics/dev/images/core_files_scripts.plantuml.svg b/topics/dev/images/core_files_scripts.plantuml.svg new file mode 100644 index 00000000000000..db78fa7d2d9bf9 --- /dev/null +++ b/topics/dev/images/core_files_scripts.plantuml.svg @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="373px" preserveAspectRatio="none" style="width:1246px;height:373px;" version="1.1" viewBox="0 0 1246 373" width="1246px" zoomAndPan="magnify"><defs><filter height="300%" id="f11pkztedvcmx2" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="22.5,173.3359,22.5268,173.4007,24.2149,173.9406,26.0602,174.8599,27.8543,175.6557,29.4801,176.0452,31.3388,176.9971,31.3149,176.9872,31.9397,178.7105,32.6852,180.4837,33.5145,182.2917,34.0549,183.98,35,185.8359,35.1845,185.8359,34.7899,188.0953,34.9341,190.3547,35.144,192.6141,34.9714,194.8734,35,197.1328,35.021,197.1415,34.2579,198.8965,33.5905,200.6911,32.8769,202.4666,32.2514,204.2786,31.3388,205.9716,31.4244,206.1783,29.6577,206.9131,27.8358,207.5145,26.0947,208.3111,24.3573,209.1168,22.5,209.6328,22.408,209.4107,20.8188,209.1095,18.9266,208.077,17.2648,207.6005,15.3658,206.5514,13.6612,205.9716,13.6401,205.9629,13.1573,204.2985,12.1817,202.4299,11.4969,200.6818,10.8365,198.9438,10,197.1328,10.1387,197.1328,9.9987,194.8734,10.0957,192.6141,9.8092,190.3547,10.0948,188.0953,10,185.8359,10.1688,185.9059,10.8691,184.1249,11.6533,182.3786,12.0479,180.471,12.7281,178.6817,13.6612,176.9971,13.5819,176.8057,15.4214,176.2467,17.1716,175.4721,19.0514,175.0103,20.71,174.0144,22.5,173.3359" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="5" x="20" y="196.3311">/</text><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="97.5,20,97.5,20.2102,107.5,19.5857,117.5,20.1933,127.5,20.3997,137.5,19.2866,147.5,19.9223,157.5,19.5735,167.5,19.6165,177.5,19.9318,187.5,19.3086,197.5,20.5536,207.5,19.3697,217.5,19.8022,227.5,20.4319,237.5,19.9142,247.5,20.0682,257.5,19.9681,267.5,20.1785,277.5,20.2391,287.5,20.5857,297.5,20.6711,307.5,20.6793,317.5,20.2546,327.5,20.4636,337.5,20.7022,347.5,19.2788,357.5,20.6785,367.5,19.7035,377.5,20,377.5681,20.1644,379.2046,20.5798,381.0268,21.4434,382.8979,22.4251,384.5649,22.9139,386.3388,23.6612,386.3713,23.6746,387.1754,25.4721,387.9315,27.2498,388.5343,28.964,389.3562,30.7689,390,32.5,389.8092,32.5,390.0948,38.0188,390.1827,43.5375,390.1482,49.0563,390.2043,54.575,390,60.0938,389.8512,60.0321,389.0669,61.7783,388.3442,63.55,387.7852,65.3895,387.0105,67.1397,386.3388,68.9326,386.4258,69.1424,384.5488,69.611,382.7595,70.2914,381.0647,71.1996,379.1827,71.6562,377.5,72.5938,377.5,72.0746,367.5,73.2427,357.5,73.0294,347.5,73.3282,337.5,72.272,327.5,72.9129,317.5,73.1842,307.5,72.1213,297.5,72.4979,287.5,72.7197,277.5,73.2455,267.5,72.5896,257.5,73.0563,247.5,72.04,237.5,71.9165,227.5,73.0974,217.5,71.8768,207.5,73.1027,197.5,72.8004,187.5,72.3258,177.5,72.24,167.5,73.0525,157.5,72.2944,147.5,73.1856,137.5,72.041,127.5,73.2112,117.5,73.0781,107.5,72.8387,97.5,72.5938,97.506,72.6083,95.8249,72.0853,94.0427,71.3182,92.2183,70.4492,90.4631,69.7474,88.6612,68.9326,88.621,68.916,88.1496,67.2562,87.2444,65.4168,86.5176,63.6513,85.5449,61.7839,85,60.0938,84.8649,60.0938,85.1769,54.575,85.1433,49.0563,84.9857,43.5375,84.8926,38.0188,85,32.5,84.9326,32.4721,85.5209,30.6447,86.5922,29.0174,87.4245,27.291,88.091,25.4961,88.6612,23.6612,88.7498,23.8752,90.4115,22.8868,92.2078,22.2236,93.915,21.3451,95.7685,20.8197,97.5,20" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="50" x="95" y="42.9951">run.sh</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="281" x="99" y="59.292">shell script for starting Galaxy standalone</text><path d="M35,191.4844 L35,191.6712 L37,191.1161 L39,191.6562 L41,191.8396 L43,190.8502 L45,191.4844 L45,191.4844 L44.973,191.4628 L45.848,190.1184 L46.859,188.8826 L47.9646,187.7224 L48.7442,186.3018 L49.9805,185.2458 L50.2198,185.303 L50.4932,181.8914 L51.4653,178.6466 L52.5227,175.4222 L53.084,172.0794 L53.9063,168.7988 L53.9362,168.8034 L54.2277,166.599 L54.6556,164.4155 L55.0177,162.2219 L55.5054,160.0475 L55.5835,157.8105 L55.8794,157.8478 L56.1921,155.3954 L56.3139,152.9189 L56.7152,150.4777 L57.1295,148.038 L57.1289,145.5461 L56.8102,145.5118 L58.003,140.2473 L58.1463,134.8698 L59.0874,129.5782 L59.207,124.1982 L60,118.8906 L59.9697,118.8874 L60.9019,113.5948 L61.1269,108.2261 L61.7692,102.9023 L62.4465,97.5823 L62.8711,92.2351 L63.0546,92.2582 L63.1785,89.782 L63.6159,87.3453 L63.5459,84.8447 L64.2328,82.4394 L64.4165,79.9707 L64.6574,80.0075 L64.9473,77.8029 L65.3567,75.6165 L65.2106,73.3453 L65.4718,71.1363 L66.0938,68.9824 L65.8251,68.9183 L66.8535,65.6869 L67.5791,62.3833 L68.7438,59.1845 L69.1589,55.8068 L70.0195,52.5354 L69.9004,52.4403 L71.0949,51.351 L71.7801,49.8551 L72.8275,48.6483 L74.2293,47.7245 L75,46.2969 L75,46.6841 L77,46.9498 L79,46.0108 L81,46.5806 L83,46.8217 L85,46.2969 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="97.5,92.5938,97.5,92.8039,107.5313,92.1794,117.5625,92.787,127.5938,92.9934,137.625,91.8804,147.6563,92.516,157.6875,92.1673,167.7188,92.2103,177.75,92.5256,187.7813,91.9024,197.8125,93.1474,207.8438,91.9635,217.875,92.396,227.9063,93.0257,237.9375,92.508,247.9688,92.662,258,92.5618,268.0313,92.7723,278.0625,92.8329,288.0938,93.1794,298.125,93.2648,308.1563,93.273,318.1875,92.8484,328.2188,93.0573,338.25,93.296,348.2813,91.8726,358.3125,93.2723,368.3438,92.2972,378.375,93.1276,388.4063,92.0987,398.4375,92.5253,408.4688,93.3354,418.5,92.5938,418.4938,92.5787,420.2812,93.3584,422.0787,94.1625,423.8564,94.9186,425.5706,95.5215,427.3388,96.2549,427.4273,96.2916,427.8948,97.9497,428.8909,99.8267,429.7044,101.6281,430.4047,103.3827,431,105.0938,431.2043,105.0938,430.839,110.6125,430.7826,116.1313,430.7929,121.65,430.9804,127.1688,431,132.6875,430.9395,132.6624,430.4776,134.5422,429.4817,136.2008,428.6977,137.947,428.1414,139.7877,427.3388,141.5263,427.2538,141.321,425.5048,142.0987,423.8861,143.1907,422.0911,143.8572,420.3615,144.6815,418.5,145.1875,418.5,144.8657,408.4688,145.5067,398.4375,145.7779,388.4063,144.7151,378.375,145.0916,368.3438,145.3135,358.3125,145.8393,348.2813,145.1833,338.25,145.6501,328.2188,144.6337,318.1875,144.5102,308.1563,145.6911,298.125,144.4706,288.0938,145.6965,278.0625,145.3941,268.0313,144.9196,258,144.8337,247.9688,145.6463,237.9375,144.8882,227.9063,145.7794,217.875,144.6348,207.8438,145.8049,197.8125,145.6718,187.7813,145.4325,177.75,145.2347,167.7188,145.9141,157.6875,145.8011,147.6563,145.3568,137.625,145.4557,127.5938,145.0572,117.5625,145.904,107.5313,145.3424,97.5,145.1875,97.522,145.2406,95.6546,144.2679,93.9128,143.5982,92.2644,143.1542,90.4838,142.3909,88.6612,141.5263,88.6479,141.5209,87.8297,139.7175,87.1293,137.9629,86.2532,136.1355,85.86,134.5082,85,132.6875,85.2465,132.6875,85.1755,127.1688,85.2316,121.65,84.9544,116.1313,85.0291,110.6125,85,105.0938,84.8806,105.0443,85.8197,103.3622,86.5405,101.5897,87.3668,99.8609,87.8582,97.9934,88.6612,96.2549,88.644,96.2135,90.4855,95.6593,92.2691,94.9652,93.8991,93.9004,95.7075,93.2663,97.5,92.5938" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="68" x="95" y="115.5889">Makefile</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="322" x="99" y="131.8857">common developement and deployment tasks</text><path d="M35,191.4844 L35,191.6712 L37,191.1161 L39,191.6562 L41,191.8396 L43,190.8502 L45,191.4844 L45,191.4844 L44.9728,191.463 L46.6322,189.0988 L48.4284,186.842 L50.3199,184.66 L51.8833,182.2204 L53.9063,180.1416 L54.1434,180.2073 L54.2808,177.7415 L55.1106,175.4676 L56.0248,173.2171 L56.4476,170.8303 L57.1289,168.5153 L57.1586,168.5216 L57.6892,165.8467 L58.3549,163.2009 L58.9555,160.541 L59.6803,157.9079 L60,155.1875 L60.2916,155.2503 L60.8693,152.5855 L61.2591,149.8802 L61.9241,147.2342 L62.602,144.591 L62.8711,141.8597 L62.5622,141.7741 L63.8062,139.615 L64.0332,137.174 L65.0333,134.9473 L65.2372,132.4999 L66.0938,130.2334 L66.0698,130.2146 L68.1342,128.1684 L69.6392,125.6829 L71.4743,123.4566 L73.3371,121.2521 L75,118.8906 L75,119.2606 L77,118.8872 L79,119.1459 L81,118.3818 L83,119.1434 L85,118.8906 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="97.5,165.1875,97.5,165.3977,107.3889,164.7732,117.2778,165.3808,127.1667,165.5872,137.0556,164.4741,146.9444,165.1098,156.8333,164.761,166.7222,164.804,176.6111,165.1193,186.5,164.4961,196.3889,165.7411,206.2778,164.5572,216.1667,164.9897,226.0556,165.6194,235.9444,165.1017,245.8333,165.2557,255.7222,165.1556,265.6111,165.366,275.5,165.4266,285.3889,165.7732,295.2778,165.8586,305.1667,165.8668,315.0556,165.4421,324.9444,165.6511,334.8333,165.8897,344.7222,164.4663,354.6111,165.866,364.5,164.891,374.3889,165.7213,384.2778,164.6925,394.1667,165.119,404.0556,165.9291,413.9444,165.1388,423.8333,165.2928,433.7222,165.5261,443.6111,165.6037,453.5,165.1875,453.4995,165.1863,455.3044,166.0082,456.9625,166.4757,458.8396,167.4718,460.641,168.2853,462.3388,168.8487,462.4757,168.9054,463.2599,170.6946,463.6545,172.3226,464.3347,174.0688,465.0764,175.8405,466,177.6875,465.9804,177.6875,465.9345,183.2063,466.2271,188.725,465.9418,194.2438,465.8856,199.7625,466,205.2813,466.0703,205.3104,465.0624,206.964,464.3757,208.7506,464.0032,210.6673,463.2052,212.4079,462.3388,214.1201,462.4325,214.3463,460.53,214.7532,458.844,215.6829,457.1108,216.4986,455.2075,216.9035,453.5,217.7813,453.5,217.6854,443.6111,217.9072,433.7222,218.433,423.8333,217.7771,413.9444,218.2438,404.0556,217.2275,394.1667,217.104,384.2778,218.2849,374.3889,217.0643,364.5,218.2902,354.6111,217.9879,344.7222,217.5133,334.8333,217.4275,324.9444,218.24,315.0556,217.4819,305.1667,218.3731,295.2778,217.2285,285.3889,218.3987,275.5,218.2656,265.6111,218.0262,255.7222,217.8285,245.8333,218.5079,235.9444,218.3948,226.0556,217.9505,216.1667,218.0494,206.2778,217.651,196.3889,218.4977,186.5,217.9361,176.6111,217.9538,166.7222,217.1729,156.8333,217.376,146.9444,218.312,137.0556,218.211,127.1667,217.7383,117.2778,217.4591,107.3889,217.5623,97.5,217.7813,97.4125,217.5699,95.7851,217.1767,94.0588,216.5445,92.2638,215.7467,90.5176,215.0663,88.6612,214.1201,88.6191,214.1026,87.9558,212.3634,87.0773,210.5351,86.5519,208.853,85.8082,207.0805,85,205.2813,85.1841,205.2813,84.9234,199.7625,84.9552,194.2438,85.1478,188.725,85.1891,183.2063,85,177.6875,84.8422,177.6221,85.6725,175.895,86.5104,174.171,87.0086,172.3063,88.0378,170.6615,88.6612,168.8487,88.6941,168.9281,90.4161,168.0854,92.2148,167.428,94.0574,166.8764,95.6923,165.8234,97.5,165.1875" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="97" x="95" y="188.1826">run_tests.sh</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="357" x="99" y="204.4795">script meant to be friendly wrapper for running tests</text><path d="M35,191.4844 L35,191.6712 L37,191.1161 L39,191.6562 L41,191.8396 L43,190.8502 L45,191.4844 L45,191.4844 L45,191.4498 L51,191.2948 L57,191.3139 L63,191.4541 L69,191.1771 L75,191.4844 L75,191.9765 L77,190.9241 L79,191.3086 L81,191.8683 L83,191.4081 L85,191.4844 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="97.5,237.7813,97.5,237.9914,107.6053,237.3669,117.7105,237.9745,127.8158,238.1809,137.9211,237.0679,148.0263,237.7035,158.1316,237.3548,168.2368,237.3978,178.3421,237.7131,188.4474,237.0899,198.5526,238.3349,208.6579,237.151,218.7632,237.5835,228.8684,238.2132,238.9737,237.6955,249.0789,237.8495,259.1842,237.7493,269.2895,237.9598,279.3947,238.0204,289.5,238.3669,299.6053,238.4523,309.7105,238.4605,319.8158,238.0359,329.9211,238.2448,340.0263,238.4835,350.1316,237.0601,360.2368,238.4598,370.3421,237.4847,380.4474,238.3151,390.5526,237.2862,400.6579,237.7128,410.7632,238.5229,420.8684,237.7325,430.9737,237.8866,441.0789,238.1199,451.1842,238.1975,461.2895,237.7773,471.3947,238.0685,481.5,237.7813,481.427,237.605,483.304,238.6011,485.1055,239.4145,486.86,240.1148,488.6493,240.899,490.3388,241.4424,490.1901,241.3808,490.8702,243.127,491.6119,244.8987,492.5174,246.7382,493.2072,248.4884,494,250.2813,494.2271,250.2813,493.9418,255.8,493.8856,261.3188,494.0761,266.8375,493.7777,272.3563,494,277.875,493.8401,277.8088,493.4676,279.7255,492.6697,281.4661,492.0295,283.272,490.972,284.905,490.3388,286.7138,490.3796,286.8121,488.6464,287.6279,486.743,288.0328,485.0233,288.881,483.2838,289.6816,481.5,290.375,481.5,291.0268,471.3947,290.3708,461.2895,290.8376,451.1842,289.8212,441.0789,289.6977,430.9737,290.8786,420.8684,289.6581,410.7632,290.884,400.6579,290.5816,390.5526,290.1071,380.4474,290.0212,370.3421,290.8338,360.2368,290.0757,350.1316,290.9669,340.0263,289.8223,329.9211,290.9924,319.8158,290.8593,309.7105,290.62,299.6053,290.4222,289.5,291.1016,279.3947,290.9886,269.2895,290.5443,259.1842,290.6432,249.0789,290.2447,238.9737,291.0915,228.8684,290.5299,218.7632,290.5476,208.6579,289.7666,198.5526,289.9698,188.4474,290.9057,178.3421,290.8048,168.2368,290.3321,158.1316,290.0528,148.0263,290.1561,137.9211,289.6888,127.8158,290.7897,117.7105,291.1146,107.6053,290.9014,97.5,290.375,97.5886,290.589,95.7148,289.6007,93.9756,288.9374,92.1473,288.0589,90.4652,287.5335,88.6612,286.7138,88.7372,286.7453,88.099,285.0165,87.126,283.149,86.4231,281.3934,85.8688,279.6993,85,277.875,85.1891,277.875,84.8292,272.3563,84.9354,266.8375,85.0498,261.3188,84.7964,255.8,85,250.2813,85.1088,250.3263,85.8117,248.5464,86.4334,246.7329,87.2405,244.9961,88.1533,243.3031,88.6612,241.4424,88.6213,241.3461,90.4691,240.8072,92.2331,240.0659,93.9792,239.2814,95.7502,238.5569,97.5,237.7813" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="58" x="95" y="260.7764">scripts/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="385" x="99" y="277.0732">directory full of more specific scripts (mostly admin stuff)</text><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="556.5,165.1875,556.5,165.3977,566.3929,164.7732,576.2857,165.3808,586.1786,165.5872,596.0714,164.4741,605.9643,165.1098,615.8571,164.761,625.75,164.804,635.6429,165.1193,645.5357,164.4961,655.4286,165.7411,665.3214,164.5572,675.2143,164.9897,685.1071,165.6194,695,165.1017,704.8929,165.2557,714.7857,165.1556,724.6786,165.366,734.5714,165.4266,744.4643,165.7732,754.3571,165.8586,764.25,165.8668,774.1429,165.4421,784.0357,165.6511,793.9286,165.8897,803.8214,164.4663,813.7143,165.866,823.6071,164.891,833.5,165.1875,833.5681,165.3519,835.2046,165.7673,837.0268,166.6309,838.8979,167.6126,840.5649,168.1014,842.3388,168.8487,842.3713,168.8621,843.1754,170.6596,843.9315,172.4373,844.5343,174.1515,845.3562,175.9564,846,177.6875,845.8092,177.6875,846.0948,183.2063,846.1827,188.725,846.1482,194.2438,846.2043,199.7625,846,205.2813,845.8512,205.2196,845.0669,206.9658,844.3442,208.7375,843.7852,210.577,843.0105,212.3272,842.3388,214.1201,842.4258,214.3299,840.5488,214.7985,838.7595,215.4789,837.0647,216.3871,835.1827,216.8437,833.5,217.7813,833.5,217.2621,823.6071,218.4302,813.7143,218.2169,803.8214,218.5157,793.9286,217.4595,784.0357,218.1004,774.1429,218.3717,764.25,217.3088,754.3571,217.6854,744.4643,217.9072,734.5714,218.433,724.6786,217.7771,714.7857,218.2438,704.8929,217.2275,695,217.104,685.1071,218.2849,675.2143,217.0643,665.3214,218.2902,655.4286,217.9879,645.5357,217.5133,635.6429,217.4275,625.75,218.24,615.8571,217.4819,605.9643,218.3731,596.0714,217.2285,586.1786,218.3987,576.2857,218.2656,566.3929,218.0262,556.5,217.7813,556.506,217.7958,554.8249,217.2728,553.0427,216.5057,551.2183,215.6367,549.4631,214.9349,547.6612,214.1201,547.621,214.1035,547.1496,212.4437,546.2444,210.6043,545.5176,208.8388,544.5449,206.9714,544,205.2813,543.8649,205.2813,544.1769,199.7625,544.1433,194.2438,543.9857,188.725,543.8926,183.2063,544,177.6875,543.9326,177.6596,544.5209,175.8322,545.5922,174.2049,546.4245,172.4785,547.091,170.6836,547.6612,168.8487,547.7498,169.0627,549.4115,168.0743,551.2078,167.4111,552.915,166.5326,554.7685,166.0072,556.5,165.1875" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="96" x="554" y="188.1826">galaxy-main</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="278" x="558" y="204.4795">script to run Galaxy without a web server</text><path d="M494,264.0781 L494,264.265 L496,263.7098 L498,264.2499 L500,264.4334 L502,263.444 L504,264.0781 L504,264.0781 L503.9728,264.0568 L505.6322,261.6925 L507.4284,259.4358 L509.3199,257.2538 L510.8833,254.8141 L512.9063,252.7354 L513.1434,252.8011 L513.2808,250.3353 L514.1106,248.0613 L515.0248,245.8108 L515.4476,243.4241 L516.1289,241.109 L516.1586,241.1154 L516.6892,238.4405 L517.3549,235.7946 L517.9555,233.1347 L518.6803,230.5016 L519,227.7813 L519.2916,227.8441 L519.8693,225.1793 L520.2591,222.474 L520.9241,219.828 L521.602,217.1848 L521.8711,214.4535 L521.5622,214.3679 L522.8062,212.2088 L523.0332,209.7678 L524.0333,207.5411 L524.2372,205.0936 L525.0938,202.8271 L525.0698,202.8083 L527.1342,200.7621 L528.6392,198.2767 L530.4743,196.0504 L532.3371,193.8459 L534,191.4844 L534,191.8544 L536,191.4809 L538,191.7397 L540,190.9756 L542,191.7372 L544,191.4844 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="556.5,237.7813,556.5,237.9914,566.5222,237.3669,576.5444,237.9745,586.5667,238.1809,596.5889,237.0679,606.6111,237.7035,616.6333,237.3548,626.6556,237.3978,636.6778,237.7131,646.7,237.0899,656.7222,238.3349,666.7444,237.151,676.7667,237.5835,686.7889,238.2132,696.8111,237.6955,706.8333,237.8495,716.8556,237.7493,726.8778,237.9598,736.9,238.0204,746.9222,238.3669,756.9444,238.4523,766.9667,238.4605,776.9889,238.0359,787.0111,238.2448,797.0333,238.4835,807.0556,237.0601,817.0778,238.4598,827.1,237.4847,837.1222,238.3151,847.1444,237.2862,857.1667,237.7128,867.1889,238.5229,877.2111,237.7325,887.2333,237.8866,897.2556,238.1199,907.2778,238.1975,917.3,237.7773,927.3222,238.0685,937.3444,237.2088,947.3667,238.0656,957.3889,238.3294,967.4111,238.2258,977.4333,238.3943,987.4556,237.2982,997.4778,237.1291,1007.5,237.7813,1007.4207,237.5899,1009.2603,238.4954,1011.0105,239.1852,1012.8902,240.1878,1014.5488,240.6564,1016.3388,241.4424,1016.2332,241.3987,1017.1414,243.2393,1017.5979,244.8929,1018.3757,246.6795,1019.4676,248.5963,1020,250.2813,1020.1452,250.2813,1020.2448,255.8,1019.8927,261.3188,1020.1064,266.8375,1020.1968,272.3563,1020,277.875,1019.8545,277.8147,1019.2382,279.6305,1018.5743,281.4266,1018.004,283.2614,1017.0698,284.9455,1016.3388,286.7138,1016.3978,286.8563,1014.5004,287.2755,1012.7169,287.9697,1011.0998,289.0656,1009.1763,289.422,1007.5,290.375,1007.5,290.884,997.4778,290.5816,987.4556,290.1071,977.4333,290.0212,967.4111,290.8338,957.3889,290.0757,947.3667,290.9669,937.3444,289.8223,927.3222,290.9924,917.3,290.8593,907.2778,290.62,897.2556,290.4222,887.2333,291.1016,877.2111,290.9886,867.1889,290.5443,857.1667,290.6432,847.1444,290.2447,837.1222,291.0915,827.1,290.5299,817.0778,290.5476,807.0556,289.7666,797.0333,289.9698,787.0111,290.9057,776.9889,290.8048,766.9667,290.3321,756.9444,290.0528,746.9222,290.1561,736.9,289.6888,726.8778,290.7897,716.8556,291.1146,706.8333,290.9014,696.8111,291.0699,686.7889,290.2383,676.7667,290.4622,666.7444,289.9874,656.7222,290.659,646.7,290.6218,636.6778,290.9274,626.6556,290.1453,616.6333,290.2406,606.6111,290.8185,596.5889,290.9423,586.5667,289.8625,576.5444,290.1811,566.5222,290.5243,556.5,290.375,556.4221,290.1869,554.7773,289.7516,552.9974,288.99,551.1838,288.1473,549.4471,287.4899,547.6612,286.7138,547.8856,286.8068,546.8326,284.9062,546.2937,283.2185,545.5524,281.447,544.7679,279.6575,544,277.875,544.047,277.875,544.0378,272.3563,543.7919,266.8375,543.8664,261.3188,543.8462,255.8,544,250.2813,544.0197,250.2894,544.7594,248.5247,545.5143,246.7663,546.1071,244.9408,546.9081,243.2016,547.6612,241.4424,547.6458,241.4054,549.5025,240.8878,551.2511,240.1093,552.9025,239.0962,554.7229,238.491,556.5,237.7813" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="89" x="554" y="260.7764">db_shell.py</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="452" x="558" y="277.0732">interactive environment for exploring Galaxy database and models</text><path d="M494,264.0781 L494,264.265 L496,263.7098 L498,264.2499 L500,264.4334 L502,263.444 L504,264.0781 L504,264.0781 L504,264.0436 L510,263.8886 L516,263.9077 L522,264.0478 L528,263.7708 L534,264.0781 L534,264.5703 L536,263.5179 L538,263.9023 L540,264.4621 L542,264.0019 L544,264.0781 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="556.5,318.5234,556.5,318.7336,566.2857,318.1091,576.0714,318.7167,585.8571,318.9231,595.6429,317.81,605.4286,318.4457,615.2143,318.0969,625,318.1399,634.7857,318.4553,644.5714,317.8321,654.3571,319.0771,664.1429,317.8932,673.9286,318.3257,683.7143,318.9554,693.5,318.5234,693.4891,318.497,695.2765,319.2767,697.0315,319.9781,698.8261,320.7751,700.6016,321.526,702.3388,322.1846,702.5192,322.2593,703.2777,324.038,704.0125,325.8068,704.6139,327.5204,705.4105,329.3148,706,331.0234,706.2341,331.0234,705.7596,333.2828,706.2262,335.5422,705.9012,337.8016,706.1779,340.0609,706,342.3203,705.8476,342.2572,705.2467,344.0793,704.7639,345.9504,703.7883,347.6174,703.1035,349.4048,702.3388,351.1591,702.382,351.2634,700.6242,352.0196,698.8028,352.6224,697.0722,353.4443,695.1947,353.9118,693.5,354.8203,693.5,355.1047,683.7143,355.3685,673.9286,355.2648,664.1429,355.4333,654.3571,354.3372,644.5714,354.1681,634.7857,354.1989,625,354.7614,615.2143,354.6238,605.4286,355.5017,595.6429,354.6456,585.8571,354.4773,576.0714,355.0486,566.2857,354.1535,556.5,354.8203,556.4338,354.6604,554.815,354.2879,553.02,353.49,551.2904,352.8498,549.3879,351.7923,547.6612,351.1591,547.7595,351.1999,547.1108,349.4667,546.0512,347.5634,545.4349,345.8436,544.771,344.1042,544,342.3203,544.2173,342.3203,543.9986,340.0609,544.1542,337.8016,543.8154,335.5422,543.7742,333.2828,544,331.0234,544.1551,331.0877,544.5114,329.1642,545.6212,327.5528,546.2603,325.7465,546.8464,323.9182,547.6612,322.1846,547.616,322.0757,549.4875,321.5936,551.1585,320.628,553.04,320.1702,554.6617,319.0854,556.5,318.5234" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="142" x="554" y="341.5186">cleanup_datasets/</text><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="768.5,310.375,768.5,310.5852,778.5889,309.9607,788.6778,310.5683,798.7667,310.7747,808.8556,309.6616,818.9444,310.2973,829.0333,309.9485,839.1222,309.9915,849.2111,310.3068,859.3,309.6836,869.3889,310.9286,879.4778,309.7447,889.5667,310.1772,899.6556,310.8069,909.7444,310.2892,919.8333,310.4432,929.9222,310.3431,940.0111,310.5535,950.1,310.6141,960.1889,310.9607,970.2778,311.0461,980.3667,311.0543,990.4556,310.6296,1000.5444,310.8386,1010.6333,311.0772,1020.7222,309.6538,1030.8111,311.0535,1040.9,310.0785,1050.9889,310.9088,1061.0778,309.88,1071.1667,310.3065,1081.2556,311.1166,1091.3444,310.3263,1101.4333,310.4803,1111.5222,310.7136,1121.6111,310.7912,1131.7,310.3711,1141.7889,310.6622,1151.8778,309.8026,1161.9667,310.6594,1172.0556,310.9232,1182.1444,310.8195,1192.2333,310.988,1202.3222,309.8919,1212.4111,309.7228,1222.5,310.375,1222.4207,310.1836,1224.2603,311.0891,1226.0105,311.7789,1227.8902,312.7815,1229.5488,313.2501,1231.3388,314.0362,1231.2332,313.9924,1232.1414,315.8331,1232.5979,317.4866,1233.3757,319.2732,1234.4676,321.19,1235,322.875,1235.1452,322.875,1235.2448,328.3938,1234.8927,333.9125,1235.1064,339.4313,1235.1968,344.95,1235,350.4688,1234.8545,350.4085,1234.2382,352.2243,1233.5743,354.0204,1233.004,355.8552,1232.0698,357.5393,1231.3388,359.3076,1231.3978,359.45,1229.5004,359.8693,1227.7169,360.5635,1226.0998,361.6594,1224.1763,362.0157,1222.5,362.9688,1222.5,363.4777,1212.4111,363.1754,1202.3222,362.7008,1192.2333,362.615,1182.1444,363.4275,1172.0556,362.6694,1161.9667,363.5606,1151.8778,362.416,1141.7889,363.5862,1131.7,363.4531,1121.6111,363.2137,1111.5222,363.016,1101.4333,363.6954,1091.3444,363.5823,1081.2556,363.138,1071.1667,363.2369,1061.0778,362.8385,1050.9889,363.6852,1040.9,363.1236,1030.8111,363.1413,1020.7222,362.3604,1010.6333,362.5635,1000.5444,363.4995,990.4556,363.3985,980.3667,362.9258,970.2778,362.6466,960.1889,362.7498,950.1,362.2826,940.0111,363.3835,929.9222,363.7083,919.8333,363.4951,909.7444,363.6637,899.6556,362.832,889.5667,363.056,879.4778,362.5812,869.3889,363.2528,859.3,363.2155,849.2111,363.5211,839.1222,362.7391,829.0333,362.8343,818.9444,363.4122,808.8556,363.5361,798.7667,362.4562,788.6778,362.7749,778.5889,363.118,768.5,362.9688,768.4221,362.7806,766.7773,362.3453,764.9974,361.5837,763.1838,360.741,761.4471,360.0836,759.6612,359.3076,759.8856,359.4005,758.8326,357.4999,758.2937,355.8122,757.5524,354.0407,756.7679,352.2513,756,350.4688,756.047,350.4688,756.0378,344.95,755.7919,339.4313,755.8664,333.9125,755.8462,328.3938,756,322.875,756.0197,322.8831,756.7594,321.1185,757.5143,319.3601,758.1071,317.5346,758.9081,315.7953,759.6612,314.0362,759.6458,313.9991,761.5025,313.4816,763.2511,312.7031,764.9025,311.6899,766.7229,311.0848,768.5,310.375" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="106" x="766" y="333.3701">pgcleanup.py</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="455" x="770" y="349.667">optimized postgres commands for managing Galaxy datasets, etc.</text><path d="M706,336.6719 L706,336.8587 L708,336.3036 L710,336.8437 L712,337.0271 L714,336.0377 L716,336.6719 L716,336.6719 L716,336.6373 L722,336.4823 L728,336.5014 L734,336.6416 L740,336.3646 L746,336.6719 L746,337.164 L748,336.1116 L750,336.4961 L752,337.0558 L754,336.5956 L756,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M494,264.0781 L494,264.265 L496,263.7098 L498,264.2499 L500,264.4334 L502,263.444 L504,264.0781 L504,264.0781 L503.9728,264.0568 L505.6322,266.2296 L507.4284,268.51 L509.3199,270.8651 L510.8833,272.9626 L512.9063,275.4209 L513.1434,275.4866 L513.2808,277.6713 L514.1106,280.048 L515.0248,282.448 L515.4476,284.7118 L516.1289,287.0472 L516.1586,287.0536 L516.6892,289.7098 L517.3549,292.3951 L517.9555,295.0663 L518.6803,297.7643 L519,300.375 L519.2916,300.4378 L519.8693,303.1041 L520.2591,305.7299 L520.9241,308.415 L521.602,311.1029 L521.8711,313.7028 L521.5622,313.6171 L522.8062,316.1086 L523.0332,318.3181 L524.0333,320.7419 L524.2372,322.9451 L525.0938,325.3291 L525.0698,325.3103 L527.1342,327.8012 L528.6392,329.8528 L530.4743,332.1637 L532.3371,334.4963 L534,336.6719 L534,337.0419 L536,336.6684 L538,336.9272 L540,336.1631 L542,336.9247 L544,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,191.4844 L35,191.6712 L37,191.1161 L39,191.6562 L41,191.8396 L43,190.8502 L45,191.4844 L45,191.4844 L44.9728,191.463 L46.6322,193.6359 L48.4284,195.9162 L50.3199,198.2713 L51.8833,200.3688 L53.9063,202.8271 L54.1434,202.8929 L54.2808,205.0776 L55.1106,207.4542 L56.0248,209.8542 L56.4476,212.118 L57.1289,214.4535 L57.1586,214.4599 L57.6892,217.1161 L58.3549,219.8013 L58.9555,222.4725 L59.6803,225.1705 L60,227.7813 L60.2916,227.8441 L60.8693,230.5104 L61.2591,233.1362 L61.9241,235.8213 L62.602,238.5092 L62.8711,241.109 L62.5622,241.0234 L63.8062,243.5148 L64.0332,245.7243 L65.0333,248.1482 L65.2372,250.3513 L66.0938,252.7354 L66.0698,252.7166 L68.1342,255.2075 L69.6392,257.2591 L71.4743,259.5699 L73.3371,261.9025 L75,264.0781 L75,264.4481 L77,264.0747 L79,264.3334 L81,263.5693 L83,264.3309 L85,264.0781 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f11pkztedvcmx2)" points="97.5,310.375,97.5,310.5852,107.375,309.9607,117.25,310.5683,127.125,310.7747,137,309.6616,146.875,310.2973,156.75,309.9485,166.625,309.9915,176.5,310.3068,186.375,309.6836,196.25,310.9286,206.125,309.7447,216,310.1772,225.875,310.8069,235.75,310.2892,245.625,310.4432,255.5,310.3431,265.375,310.5535,275.25,310.6141,285.125,310.9607,295,311.0461,304.875,311.0543,314.75,310.6296,324.625,310.8386,334.5,311.0772,344.375,309.6538,354.25,311.0535,364.125,310.0785,374,310.9088,383.875,309.88,393.75,310.3065,403.625,311.1166,413.5,310.375,413.4938,310.36,415.2812,311.1397,417.0787,311.9437,418.8564,312.6999,420.5706,313.3027,422.3388,314.0362,422.4273,314.0728,422.8948,315.7309,423.8909,317.608,424.7044,319.4094,425.4047,321.1639,426,322.875,426.2043,322.875,425.839,328.3938,425.7826,333.9125,425.7929,339.4313,425.9804,344.95,426,350.4688,425.9395,350.4437,425.4776,352.3234,424.4817,353.982,423.6977,355.7283,423.1414,357.5689,422.3388,359.3076,422.2538,359.1022,420.5048,359.8799,418.8861,360.9719,417.0911,361.6385,415.3615,362.4627,413.5,362.9688,413.5,362.647,403.625,363.2879,393.75,363.5592,383.875,362.4963,374,362.8729,364.125,363.0947,354.25,363.6205,344.375,362.9646,334.5,363.4313,324.625,362.415,314.75,362.2915,304.875,363.4724,295,362.2518,285.125,363.4777,275.25,363.1754,265.375,362.7008,255.5,362.615,245.625,363.4275,235.75,362.6694,225.875,363.5606,216,362.416,206.125,363.5862,196.25,363.4531,186.375,363.2137,176.5,363.016,166.625,363.6954,156.75,363.5823,146.875,363.138,137,363.2369,127.125,362.8385,117.25,363.6852,107.375,363.1236,97.5,362.9688,97.522,363.0219,95.6546,362.0492,93.9128,361.3795,92.2644,360.9355,90.4838,360.1722,88.6612,359.3076,88.6479,359.3021,87.8297,357.4987,87.1293,355.7441,86.2532,353.9168,85.86,352.2894,85,350.4688,85.2465,350.4688,85.1755,344.95,85.2316,339.4313,84.9544,333.9125,85.0291,328.3938,85,322.875,84.8806,322.8256,85.8197,321.1435,86.5405,319.3709,87.3668,317.6422,87.8582,315.7746,88.6612,314.0362,88.644,313.9948,90.4855,313.4405,92.2691,312.7464,93.8991,311.6816,95.7075,311.0475,97.5,310.375" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="113" x="95" y="333.3701">manage_db.sh</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="317" x="99" y="349.667">script to upgrade/downgrade Galaxy database</text><path d="M35,191.4844 L35,191.6712 L37,191.1161 L39,191.6562 L41,191.8396 L43,190.8502 L45,191.4844 L45,191.4844 L44.973,191.4628 L45.848,192.6138 L46.859,193.8734 L47.9646,195.2086 L48.7442,196.2835 L49.9805,197.7229 L50.2198,197.78 L50.4932,200.9473 L51.4653,204.2813 L52.5227,207.6357 L53.084,210.8717 L53.9063,214.1699 L53.9362,214.1745 L54.2277,216.3654 L54.6556,218.5772 L55.0177,220.7789 L55.5054,222.9998 L55.5835,225.1582 L55.8794,225.1955 L56.1921,227.6489 L56.3139,230.0781 L56.7152,232.5426 L57.1295,235.0088 L57.1289,237.4226 L56.8102,237.3883 L58.003,242.786 L58.1463,248.0707 L59.0874,253.4413 L59.207,258.7235 L60,264.0781 L59.9697,264.0749 L60.9019,269.4445 L61.1269,274.738 L61.7692,280.0764 L62.4465,285.4187 L62.8711,290.7336 L63.0546,290.7568 L63.1785,293.1863 L63.6159,295.6554 L63.5459,298.0605 L64.2328,300.5609 L64.4165,302.998 L64.6574,303.0348 L64.9473,305.2255 L65.3567,307.4345 L65.2106,309.5586 L65.4718,311.7449 L66.0938,313.9863 L65.8251,313.9222 L66.8535,317.2697 L67.5791,320.5449 L68.7438,323.9249 L69.1589,327.1259 L70.0195,330.4333 L69.9004,330.3382 L71.0949,331.7444 L71.7801,332.7439 L72.8275,334.0325 L74.2293,335.6041 L75,336.6719 L75,337.0591 L77,337.3248 L79,336.3858 L81,336.9556 L83,337.1967 L85,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[c54c0b33b3a631c6a2e0618d9c6b9b89] +@startmindmap + +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>run.sh</i></b> + shell script for starting Galaxy standalone; +**:<b><i>Makefile</i></b> + common developement and deployment tasks; +**:<b><i>run_tests.sh</i></b> + script meant to be friendly wrapper for running tests; +**:<b><i>scripts/</i></b> + directory full of more specific scripts (mostly admin stuff); +***:<b><i>galaxy-main</i></b> + script to run Galaxy without a web server; +***:<b><i>db_shell.py</i></b> + interactive environment for exploring Galaxy database and models; +*** <b><i>cleanup_datasets/</i></b> +****:<b><i>pgcleanup.py</i></b> + optimized postgres commands for managing Galaxy datasets, etc.; +**:<b><i>manage_db.sh</i></b> + script to upgrade/downgrade Galaxy database; + +@endmindmap + +@startmindmap + +<style> +mindmapDiagram { + node { + BackgroundColor #FFEFD5 + BorderColor DarkOrange + LineColor Orange + } +} +</style> +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +* / +**:<b><i>run.sh</i></b> + shell script for starting Galaxy standalone; +**:<b><i>Makefile</i></b> + common developement and deployment tasks; +**:<b><i>run_tests.sh</i></b> + script meant to be friendly wrapper for running tests; +**:<b><i>scripts/</i></b> + directory full of more specific scripts (mostly admin stuff); +***:<b><i>galaxy-main</i></b> + script to run Galaxy without a web server; +***:<b><i>db_shell.py</i></b> + interactive environment for exploring Galaxy database and models; +*** <b><i>cleanup_datasets/</i></b> +****:<b><i>pgcleanup.py</i></b> + optimized postgres commands for managing Galaxy datasets, etc.; +**:<b><i>manage_db.sh</i></b> + script to upgrade/downgrade Galaxy database; + +@endmindmap + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/core_files_scripts.plantuml.txt b/topics/dev/images/core_files_scripts.plantuml.txt new file mode 100644 index 00000000000000..0c54b46b764f3c --- /dev/null +++ b/topics/dev/images/core_files_scripts.plantuml.txt @@ -0,0 +1,24 @@ +@startmindmap +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>run.sh</i></b> + shell script for starting Galaxy standalone; +**:<b><i>Makefile</i></b> + common developement and deployment tasks; +**:<b><i>run_tests.sh</i></b> + script meant to be friendly wrapper for running tests; +**:<b><i>scripts/</i></b> + directory full of more specific scripts (mostly admin stuff); +***:<b><i>galaxy-main</i></b> + script to run Galaxy without a web server; +***:<b><i>db_shell.py</i></b> + interactive environment for exploring Galaxy database and models; +*** <b><i>cleanup_datasets/</i></b> +****:<b><i>pgcleanup.py</i></b> + optimized postgres commands for managing Galaxy datasets, etc.; +**:<b><i>manage_db.sh</i></b> + script to upgrade/downgrade Galaxy database; + +@endmindmap diff --git a/topics/dev/images/core_files_test.plantuml.svg b/topics/dev/images/core_files_test.plantuml.svg new file mode 100644 index 00000000000000..59eaea650a6de5 --- /dev/null +++ b/topics/dev/images/core_files_test.plantuml.svg @@ -0,0 +1,115 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="720px" preserveAspectRatio="none" style="width:733px;height:720px;" version="1.1" viewBox="0 0 733 720" width="733px" zoomAndPan="magnify"><defs><filter height="300%" id="fic06tcy5hz77" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="22.5,346.6719,22.5268,346.7366,24.2149,347.2765,26.0602,348.1959,27.8543,348.9917,29.4801,349.3811,31.3388,350.333,31.3149,350.3231,31.9397,352.0464,32.6852,353.8197,33.5145,355.6276,34.0549,357.3159,35,359.1719,35.1845,359.1719,34.7899,361.4313,34.9341,363.6906,35.144,365.95,34.9714,368.2094,35,370.4688,35.021,370.4775,34.2579,372.2324,33.5905,374.0271,32.8769,375.8026,32.2514,377.6145,31.3388,379.3076,31.4244,379.5142,29.6577,380.249,27.8358,380.8505,26.0947,381.647,24.3573,382.4528,22.5,382.9688,22.408,382.7467,20.8188,382.4455,18.9266,381.413,17.2648,380.9364,15.3658,379.8874,13.6612,379.3076,13.6401,379.2988,13.1573,377.6344,12.1817,375.7658,11.4969,374.0177,10.8365,372.2797,10,370.4688,10.1387,370.4688,9.9987,368.2094,10.0957,365.95,9.8092,363.6906,10.0948,361.4313,10,359.1719,10.1688,359.2418,10.8691,357.4608,11.6533,355.7145,12.0479,353.807,12.7281,352.0176,13.6612,350.333,13.5819,350.1417,15.4214,349.5827,17.1716,348.8081,19.0514,348.3462,20.71,347.3503,22.5,346.6719" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="5" x="20" y="369.667">/</text><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="97.5,92.5938,97.5,92.8039,107.7105,92.1794,117.9211,92.787,128.1316,92.9934,138.3421,91.8804,148.5526,92.516,158.7632,92.1673,168.9737,92.2103,179.1842,92.5256,189.3947,91.9024,199.6053,93.1474,209.8158,91.9635,220.0263,92.396,230.2368,93.0257,240.4474,92.508,250.6579,92.662,260.8684,92.5618,271.0789,92.7723,281.2895,92.8329,291.5,92.5938,291.5747,92.7741,293.3534,93.5326,295.1222,94.2674,296.8358,94.8689,298.6302,95.6654,300.3388,96.2549,300.5551,96.3445,300.849,97.9307,302.0123,99.877,302.4442,101.5204,303.4322,103.3941,304,105.0938,303.835,105.0938,303.9772,110.6125,304.2472,116.1313,303.9838,121.65,304.0351,127.1688,304,132.6875,304.1043,132.7307,303.3959,134.5084,302.5343,136.2225,301.8918,138.0274,300.8948,139.6855,300.3388,141.5263,300.3751,141.6139,298.641,142.4274,296.86,143.1277,295.1137,143.9118,293.2061,144.3065,291.5,145.1875,291.5,144.5353,281.2895,144.5661,271.0789,145.1286,260.8684,144.991,250.6579,145.8689,240.4474,145.0128,230.2368,144.8444,220.0263,145.4158,209.8158,144.5207,199.6053,144.6684,189.3947,145.8365,179.1842,145.6232,168.9737,145.922,158.7632,144.8657,148.5526,145.5067,138.3421,145.7779,128.1316,144.7151,117.9211,145.0916,107.7105,145.3135,97.5,145.1875,97.5831,145.3882,95.7317,144.454,94.0235,143.8655,92.1261,142.8203,90.3425,142.05,88.6612,141.5263,88.8163,141.5906,87.7081,139.6671,87.3534,138.0557,86.5281,136.2494,85.6497,134.4211,85,132.6875,84.8821,132.6875,85.1529,127.1688,84.9002,121.65,85.1973,116.1313,84.8158,110.6125,85,105.0938,85.1901,105.1725,85.8814,103.3878,86.5399,101.5895,87.2112,99.7965,88.1527,98.1154,88.6612,96.2549,88.7394,96.4439,90.4505,95.5748,92.2309,94.873,93.9478,94.0181,95.8236,93.5466,97.5,92.5938" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="164" x="95" y="115.5889">client/galaxy/scripts/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="195" x="99" y="131.8857">JS sources include unit tests</text><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="366.5,20,366.5,20.2102,376.5882,19.5857,386.6765,20.1933,396.7647,20.3997,406.8529,19.2866,416.9412,19.9223,427.0294,19.5735,437.1176,19.6165,447.2059,19.9318,457.2941,19.3086,467.3824,20.5536,477.4706,19.3697,487.5588,19.8022,497.6471,20.4319,507.7353,19.9142,517.8235,20.0682,527.9118,19.9681,538,20.1785,548.0882,20.2391,558.1765,20.5857,568.2647,20.6711,578.3529,20.6793,588.4412,20.2546,598.5294,20.4636,608.6176,20.7022,618.7059,19.2788,628.7941,20.6785,638.8824,19.7035,648.9706,20.5338,659.0588,19.505,669.1471,19.9315,679.2353,20.7416,689.3235,19.9513,699.4118,20.1053,709.5,20,709.5432,20.1043,711.3209,20.8604,713.035,21.4633,714.8399,22.2851,716.498,22.7527,718.3388,23.6612,718.4264,23.6974,719.2399,25.4989,719.9402,27.2534,720.7243,29.0427,721.119,30.6706,722,32.5,721.7826,32.5,721.7929,38.0188,721.9804,43.5375,721.9345,49.0563,722.2271,54.575,722,60.0938,721.9462,60.0715,721.1621,61.8178,720.6058,63.6584,719.5979,65.312,718.9112,67.0986,718.3388,68.9326,718.4216,69.1324,716.6266,69.799,714.897,70.6232,712.9945,71.0302,711.3085,71.9598,709.5,72.5938,709.5,73.1842,699.4118,72.1213,689.3235,72.4979,679.2353,72.7197,669.1471,73.2455,659.0588,72.5896,648.9706,73.0563,638.8824,72.04,628.7941,71.9165,618.7059,73.0974,608.6176,71.8768,598.5294,73.1027,588.4412,72.8004,578.3529,72.3258,568.2647,72.24,558.1765,73.0525,548.0882,72.2944,538,73.1856,527.9118,72.041,517.8235,73.2112,507.7353,73.0781,497.6471,72.8387,487.5588,72.641,477.4706,73.3204,467.3824,73.2073,457.2941,72.763,447.2059,72.8619,437.1176,72.4635,427.0294,73.3102,416.9412,72.7486,406.8529,72.7663,396.7647,71.9854,386.6765,72.1885,376.5882,73.1245,366.5,72.5938,366.5548,72.7261,364.7268,71.8483,362.9234,71.0301,361.1688,70.3296,359.3414,69.4535,357.6612,68.9326,357.7889,68.9855,357.1567,67.2592,356.3588,65.4642,355.6785,63.7179,354.6901,61.8441,354,60.0938,354.0291,60.0938,353.8708,54.575,354.0947,49.0563,354.0823,43.5375,354.1841,38.0188,354,32.5,353.9293,32.4707,354.6908,30.7151,355.601,29.021,356.3714,27.2691,356.7711,25.3636,357.6612,23.6612,357.6364,23.6015,359.448,22.9749,361.1188,22.0086,363.0095,21.5733,364.7651,20.8117,366.5,20" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="103" x="364" y="42.9951">components/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="344" x="368" y="59.292">VueJS components define tests next to source file</text><path d="M304,118.8906 L304,119.0775 L306,118.5223 L308,119.0624 L310,119.2459 L312,118.2565 L314,118.8906 L314,118.8906 L313.9728,118.8693 L315.6322,116.505 L317.4284,114.2483 L319.3199,112.0663 L320.8833,109.6266 L322.9063,107.5479 L323.1434,107.6136 L323.2808,105.1478 L324.1106,102.8738 L325.0248,100.6233 L325.4476,98.2366 L326.1289,95.9215 L326.1586,95.9279 L326.6892,93.253 L327.3549,90.6071 L327.9555,87.9472 L328.6803,85.3141 L329,82.5938 L329.2916,82.6566 L329.8693,79.9918 L330.2591,77.2865 L330.9241,74.6405 L331.602,71.9973 L331.8711,69.266 L331.5622,69.1804 L332.8062,67.0213 L333.0332,64.5803 L334.0333,62.3536 L334.2372,59.9061 L335.0938,57.6396 L335.0698,57.6208 L337.1342,55.5746 L338.6392,53.0892 L340.4743,50.8629 L342.3371,48.6584 L344,46.2969 L344,46.6669 L346,46.2934 L348,46.5522 L350,45.7881 L352,46.5497 L354,46.2969 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="366.5,92.5938,366.5,92.8039,376.5952,92.1794,386.6905,92.787,396.7857,92.9934,406.881,91.8804,416.9762,92.516,427.0714,92.1673,437.1667,92.2103,447.2619,92.5256,457.3571,91.9024,467.4524,93.1474,477.5476,91.9635,487.6429,92.396,497.7381,93.0257,507.8333,92.508,517.9286,92.662,528.0238,92.5618,538.119,92.7723,548.2143,92.8329,558.3095,93.1794,568.4048,93.2648,578.5,92.5938,578.5866,92.8029,580.3002,93.4044,582.0947,94.201,583.8929,95.0067,585.4791,95.3006,587.3388,96.2549,587.5478,96.3415,587.9798,97.9849,588.9677,99.8585,589.3831,101.4951,590.2467,103.3172,591,105.0938,591.2472,105.0938,590.9838,110.6125,591.0351,116.1313,591.1129,121.65,591.1387,127.1688,591,132.6875,590.9988,132.687,590.3562,134.4919,589.3593,136.15,588.8909,138.0271,588.2399,139.8285,587.3388,141.5263,587.3955,141.6632,585.6493,142.4474,583.7417,142.842,581.9523,143.5222,580.1885,144.2639,578.5,145.1875,578.5,145.1286,568.4048,144.991,558.3095,145.8689,548.2143,145.0128,538.119,144.8444,528.0238,145.4158,517.9286,144.5207,507.8333,144.6684,497.7381,145.8365,487.6429,145.6232,477.5476,145.922,467.4524,144.8657,457.3571,145.5067,447.2619,145.7779,437.1667,144.7151,427.0714,145.0916,416.9762,145.3135,406.881,145.8393,396.7857,145.1833,386.6905,145.6501,376.5952,144.6337,366.5,145.1875,366.4136,144.9789,364.7965,144.6104,362.873,143.5022,361.2616,143.1475,359.4553,142.3222,357.6612,141.5263,357.5787,141.4922,356.82,139.7134,356.338,138.0493,355.3723,136.1849,354.9145,134.5308,354,132.6875,353.8158,132.6875,354.2058,127.1688,354.1614,121.65,354.0817,116.1313,354.0157,110.6125,354,105.0938,354.2238,105.1864,354.9212,103.4043,355.5166,101.5798,356.2793,99.8247,356.8888,98.0061,357.6612,96.2549,357.7526,96.4756,359.4487,95.5704,361.2187,94.8436,362.8869,93.8709,364.6805,93.2012,366.5,92.5938" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="57" x="364" y="115.5889">mocha/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="213" x="368" y="131.8857">standalone JS mocha unit tests</text><path d="M304,118.8906 L304,119.0775 L306,118.5223 L308,119.0624 L310,119.2459 L312,118.2565 L314,118.8906 L314,118.8906 L314,118.8561 L320,118.7011 L326,118.7202 L332,118.8603 L338,118.5833 L344,118.8906 L344,119.3828 L346,118.3304 L348,118.7148 L350,119.2746 L352,118.8144 L354,118.8906 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="366.5,165.1875,366.5,165.3977,376.375,164.7732,386.25,165.3808,396.125,165.5872,406,164.4741,415.875,165.1098,425.75,164.761,435.625,164.804,445.5,165.1193,455.375,164.4961,465.25,165.7411,475.125,164.5572,485,164.9897,494.875,165.6194,504.75,165.1017,514.625,165.2557,524.5,165.1875,524.4959,165.1777,526.2905,165.9747,528.066,166.7256,529.878,167.5646,531.6567,168.3231,533.3388,168.8487,533.548,168.9353,534.1495,170.6489,534.9461,172.4433,535.7518,174.2415,536.0457,175.8277,537,177.6875,537.2262,177.6875,536.9012,183.2063,537.1779,188.725,536.835,194.2438,536.9772,199.7625,537,205.2813,537.2284,205.3759,536.2528,207.0428,535.568,208.8302,534.9076,210.6277,534.1993,212.4054,533.3388,214.1201,533.3383,214.1189,531.6077,214.9408,529.7303,215.4083,528.0718,216.4044,526.3377,217.2178,524.5,217.7813,524.5,218.2258,514.625,218.3943,504.75,217.2982,494.875,217.1291,485,217.1598,475.125,217.7224,465.25,217.5847,455.375,218.4627,445.5,217.6066,435.625,217.4382,425.75,218.0095,415.875,217.1144,406,217.2621,396.125,218.4302,386.25,218.2169,376.375,218.5157,366.5,217.7813,366.459,217.6822,364.773,217.1473,363.0398,216.4986,361.1364,215.4391,359.4167,214.8228,357.6612,214.1201,357.7,214.1362,357.1296,212.4355,356.1954,210.584,355.6069,208.8758,354.5617,206.9784,354,205.2813,353.7742,205.2813,354.1679,199.7625,353.761,194.2438,354.1697,188.725,354.0689,183.2063,354,177.6875,353.9175,177.6533,354.6233,175.8746,355.6057,174.2105,356.1045,172.346,357.1112,170.6919,357.6612,168.8487,357.5907,168.6784,359.5077,168.3066,361.2585,167.5333,362.9957,166.7274,364.7383,165.9343,366.5,165.1875" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="47" x="364" y="188.1826">qunit/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="159" x="368" y="204.4795">older JS qunit unit tests</text><path d="M304,118.8906 L304,119.0775 L306,118.5223 L308,119.0624 L310,119.2459 L312,118.2565 L314,118.8906 L314,118.8906 L313.9728,118.8693 L315.6322,121.0421 L317.4284,123.3225 L319.3199,125.6776 L320.8833,127.7751 L322.9063,130.2334 L323.1434,130.2991 L323.2808,132.4838 L324.1106,134.8605 L325.0248,137.2605 L325.4476,139.5243 L326.1289,141.8597 L326.1586,141.8661 L326.6892,144.5223 L327.3549,147.2076 L327.9555,149.8788 L328.6803,152.5768 L329,155.1875 L329.2916,155.2503 L329.8693,157.9166 L330.2591,160.5424 L330.9241,163.2275 L331.602,165.9154 L331.8711,168.5153 L331.5622,168.4296 L332.8062,170.9211 L333.0332,173.1306 L334.0333,175.5544 L334.2372,177.7576 L335.0938,180.1416 L335.0698,180.1228 L337.1342,182.6137 L338.6392,184.6653 L340.4743,186.9762 L342.3371,189.3088 L344,191.4844 L344,191.8544 L346,191.4809 L348,191.7397 L350,190.9756 L352,191.7372 L354,191.4844 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,364.8203 L35,365.0071 L37,364.452 L39,364.9921 L41,365.1756 L43,364.1862 L45,364.8203 L45,364.8203 L44.9688,364.8056 L45.8246,362.626 L46.838,360.5207 L47.9609,358.467 L48.7064,356.2355 L49.9805,354.253 L50.223,354.2945 L50.1189,351.7802 L50.7229,349.3869 L51.4134,347.0083 L51.6011,344.5439 L52.0532,342.1247 L52.0833,342.1282 L52.4097,338.9768 L52.8732,335.8416 L53.2706,332.6986 L53.7942,329.5704 L53.9063,326.3938 L54.2033,326.4206 L54.5424,322.6983 L54.6899,318.9588 L55.1178,315.2446 L55.5589,311.5315 L55.5835,307.781 L55.2639,307.7572 L56.1933,303.6485 L56.0702,299.4614 L56.7473,295.334 L56.6004,291.1452 L57.1289,287.0066 L57.0378,287.0008 L58.6899,278.0391 L58.2125,268.942 L58.9917,259.9248 L59.8764,250.9144 L60,241.8555 L60.5539,241.8907 L60.569,232.8249 L61.5306,223.8193 L60.961,214.7163 L62.6753,205.7586 L62.8711,196.7043 L63.1141,196.7224 L63.3772,192.5641 L63.761,188.4148 L63.5842,184.2238 L63.8184,180.0633 L64.4165,175.93 L64.1414,175.9052 L64.7259,172.2051 L65.0004,168.477 L65.7245,164.7895 L65.681,161.0327 L66.0938,157.3171 L65.9423,157.2993 L66.5651,154.1828 L66.5406,150.9901 L66.9764,147.8516 L67.8626,144.7662 L67.9468,141.5863 L68.1376,141.6189 L68.6831,139.2156 L68.6349,136.7108 L69.3303,134.3332 L69.8636,131.9278 L70.0195,129.4579 L69.8296,129.3684 L70.9771,127.3263 L72.0624,125.2549 L73.2698,123.241 L74.0022,121.0033 L75,118.8906 L75,119.3018 L77,118.3984 L79,118.2886 L81,119.3383 L83,118.2533 L85,118.8906 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="97.5,310.375,97.5,310.5852,107.4091,309.9607,117.3182,310.5683,127.2273,310.7747,137.1364,309.6616,147.0455,310.2973,156.9545,309.9485,166.8636,309.9915,176.7727,310.3068,186.6818,309.6836,196.5909,310.9286,206.5,309.7447,216.4091,310.1772,226.3182,310.8069,236.2273,310.2892,246.1364,310.4432,256.0455,310.3431,265.9545,310.5535,275.8636,310.6141,285.7727,310.9607,295.6818,311.0461,305.5909,311.0543,315.5,310.375,315.5325,310.4534,317.3269,311.25,319.1251,312.0557,320.7113,312.3496,322.6576,313.5129,324.3388,314.0362,324.2475,313.9983,325.2355,315.872,325.6509,317.5086,326.5144,319.3307,327.4962,321.2018,328,322.875,327.9838,322.875,328.0351,328.3938,328.1129,333.9125,328.1387,339.4313,327.9987,344.95,328,350.4688,328.0885,350.5054,327.0915,352.1635,326.6231,354.0406,325.9721,355.842,325.208,357.5965,324.3388,359.3076,324.417,359.4964,322.5094,359.891,320.7201,360.5712,318.9563,361.3129,317.2603,362.2184,315.5,362.9688,315.5,362.7722,305.5909,363.6502,295.6818,362.7941,285.7727,362.6257,275.8636,363.197,265.9545,362.3019,256.0455,362.4496,246.1364,363.6177,236.2273,363.4044,226.3182,363.7032,216.4091,362.647,206.5,363.2879,196.5909,363.5592,186.6818,362.4963,176.7727,362.8729,166.8636,363.0947,156.9545,363.6205,147.0455,362.9646,137.1364,363.4313,127.2273,362.415,117.3182,362.2915,107.4091,363.4724,97.5,362.9688,97.4085,362.748,95.7972,362.3933,93.9908,361.5679,92.1625,360.6895,90.3838,359.9309,88.6612,359.3076,88.8024,359.3661,87.8367,357.5016,87.379,355.8475,86.2942,353.9338,85.9224,352.3153,85,350.4688,85.1614,350.4688,85.0817,344.95,85.0157,339.4313,85.2422,333.9125,85.2045,328.3938,85,322.875,85.0521,322.8966,85.8148,321.1414,86.4243,319.3228,87.4173,317.6631,87.9766,315.8237,88.6612,314.0362,88.6832,314.0893,90.3513,313.1166,92.145,312.4469,94.0322,312.0029,95.7871,311.2396,97.5,310.375" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="120" x="95" y="333.3701">lib/galaxy_test/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="219" x="99" y="349.667">properly packaged Python tests</text><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="390.5,237.7813,390.5,237.9914,400.3077,237.3669,410.1154,237.9745,419.9231,238.1809,429.7308,237.0679,439.5385,237.7035,449.3462,237.3548,459.1538,237.3978,468.9615,237.7131,478.7692,237.0899,488.5769,238.3349,498.3846,237.151,508.1923,237.5835,518,238.2132,527.8077,237.6955,537.6154,237.8495,547.4231,237.7493,557.2308,237.9598,567.0385,238.0204,576.8462,238.3669,586.6538,238.4523,596.4615,238.4605,606.2692,238.0359,616.0769,238.2448,625.8846,238.4835,635.6923,237.0601,645.5,237.7813,645.5866,237.9902,647.2299,238.4222,649.1036,239.4101,650.7402,239.8255,652.5623,240.6891,654.3388,241.4424,654.5672,241.537,655.0561,243.204,655.8357,244.9914,656.6398,246.7889,657.3959,248.5666,658,250.2813,657.9987,250.2813,658.0957,255.8,657.8092,261.3188,658.0948,266.8375,658.1827,272.3563,658,277.875,658.1369,277.9317,657.4566,279.721,656.3868,281.3489,655.6025,283.0951,654.8797,284.8668,654.3388,286.7138,654.3313,286.6957,652.546,287.3855,650.8902,288.3881,649.0133,288.8567,647.224,289.5371,645.5,290.375,645.5,290.6033,635.6923,289.7082,625.8846,289.8559,616.0769,291.024,606.2692,290.8107,596.4615,291.1095,586.6538,290.0532,576.8462,290.6942,567.0385,290.9654,557.2308,289.9026,547.4231,290.2791,537.6154,290.501,527.8077,291.0268,518,290.3708,508.1923,290.8376,498.3846,289.8212,488.5769,289.6977,478.7692,290.8786,468.9615,289.6581,459.1538,290.884,449.3462,290.5816,439.5385,290.1071,429.7308,290.0212,419.9231,290.8338,410.1154,290.0757,400.3077,290.9669,390.5,290.375,390.4295,290.2048,388.811,289.8329,387.0262,289.0597,385.2279,288.2537,383.435,287.4606,381.6612,286.7138,381.8849,286.8065,381.1179,285.0243,380.2488,283.1999,379.5471,281.4447,378.6921,279.6262,378,277.875,378.2388,277.875,378.0516,272.3563,378.0575,266.8375,377.7972,261.3188,377.8649,255.8,378,250.2813,378.1634,250.349,378.8646,248.5683,379.4512,246.7402,380.0975,244.9369,380.8615,243.1823,381.6612,241.4424,381.5736,241.2311,383.4818,240.8379,385.291,240.2057,387.0316,239.4078,388.8209,238.7275,390.5,237.7813" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="42" x="388" y="260.7764">base/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="256" x="392" y="277.0732">base Python infrastructure for testing</text><path d="M328,336.6719 L328,336.8587 L330,336.3036 L332,336.8437 L334,337.0271 L336,336.0377 L338,336.6719 L338,336.6719 L337.9728,336.6505 L339.6322,334.2863 L341.4284,332.0295 L343.3199,329.8475 L344.8833,327.4079 L346.9063,325.3291 L347.1434,325.3948 L347.2808,322.929 L348.1106,320.6551 L349.0248,318.4046 L349.4476,316.0178 L350.1289,313.7028 L350.1586,313.7091 L350.6892,311.0342 L351.3549,308.3884 L351.9555,305.7285 L352.6803,303.0954 L353,300.375 L353.2916,300.4378 L353.8693,297.773 L354.2591,295.0677 L354.9241,292.4217 L355.602,289.7785 L355.8711,287.0472 L355.5622,286.9616 L356.8062,284.8025 L357.0332,282.3615 L358.0333,280.1348 L358.2372,277.6874 L359.0938,275.4209 L359.0698,275.4021 L361.1342,273.3559 L362.6392,270.8704 L364.4743,268.6441 L366.3371,266.4396 L368,264.0781 L368,264.4481 L370,264.0747 L372,264.3334 L374,263.5693 L376,264.3309 L378,264.0781 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="390.5,310.375,390.5,310.5852,400.5625,309.9607,410.625,310.5683,420.6875,310.7747,430.75,309.6616,440.8125,310.2973,450.875,309.9485,460.9375,309.9915,471,310.3068,481.0625,309.6836,491.125,310.9286,501.1875,309.7447,511.25,310.1772,521.3125,310.8069,531.375,310.2892,541.4375,310.4432,551.5,310.375,551.4959,310.3652,553.2905,311.1622,555.066,311.9131,556.878,312.7521,558.6567,313.5106,560.3388,314.0362,560.548,314.1228,561.1495,315.8364,561.9461,317.6308,562.7518,319.429,563.0457,321.0152,564,322.875,564.2262,322.875,563.9012,328.3938,564.1779,333.9125,563.835,339.4313,563.9772,344.95,564,350.4688,564.2284,350.5634,563.2528,352.2303,562.568,354.0177,561.9076,355.8152,561.1993,357.5929,560.3388,359.3076,560.3383,359.3064,558.6077,360.1283,556.7303,360.5958,555.0718,361.5919,553.3377,362.4053,551.5,362.9688,551.5,363.4133,541.4375,363.5818,531.375,362.4857,521.3125,362.3166,511.25,362.3473,501.1875,362.9099,491.125,362.7722,481.0625,363.6502,471,362.7941,460.9375,362.6257,450.875,363.197,440.8125,362.3019,430.75,362.4496,420.6875,363.6177,410.625,363.4044,400.5625,363.7032,390.5,362.9688,390.459,362.8697,388.773,362.3348,387.0398,361.6861,385.1364,360.6266,383.4167,360.0103,381.6612,359.3076,381.7,359.3237,381.1296,357.623,380.1954,355.7715,379.6069,354.0633,378.5617,352.1659,378,350.4688,377.7742,350.4688,378.1679,344.95,377.761,339.4313,378.1697,333.9125,378.0689,328.3938,378,322.875,377.9175,322.8408,378.6233,321.0621,379.6057,319.398,380.1045,317.5335,381.1112,315.8794,381.6612,314.0362,381.5907,313.8659,383.5077,313.4941,385.2585,312.7208,386.9957,311.9149,388.7383,311.1218,390.5,310.375" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="29" x="388" y="333.3701">api/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="162" x="392" y="349.667">tests against Galaxy API</text><path d="M328,336.6719 L328,336.8587 L330,336.3036 L332,336.8437 L334,337.0271 L336,336.0377 L338,336.6719 L338,336.6719 L338,336.6373 L344,336.4823 L350,336.5014 L356,336.6416 L362,336.3646 L368,336.6719 L368,337.164 L370,336.1116 L372,336.4961 L374,337.0558 L376,336.5956 L378,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="390.5,382.9688,390.5,383.1789,400.3966,382.5544,410.2931,383.162,420.1897,383.3684,430.0862,382.2554,439.9828,382.891,449.8793,382.5423,459.7759,382.5853,469.6724,382.9006,479.569,382.2774,489.4655,383.5224,499.3621,382.3385,509.2586,382.771,519.1552,383.4007,529.0517,382.883,538.9483,383.037,548.8448,382.9368,558.7414,383.1473,568.6379,383.2079,578.5345,383.5544,588.431,383.6398,598.3276,383.648,608.2241,383.2234,618.1207,383.4323,628.0172,383.671,637.9138,382.2476,647.8103,383.6473,657.7069,382.6722,667.6034,383.5026,677.5,382.9688,677.4369,382.8163,679.259,383.6799,681.1301,384.6616,682.7971,385.1504,684.5845,385.9301,686.3388,386.6299,686.4431,386.6731,687.1993,388.4508,687.8021,390.165,688.624,391.9699,689.0915,393.628,690,395.4688,690.0948,395.4688,690.1827,400.9875,690.1482,406.5063,690.2043,412.025,689.839,417.5438,690,423.0625,689.7992,422.9793,689.0764,424.751,688.5174,426.5905,687.7428,428.3407,687.2809,430.2205,686.3388,431.9013,686.3166,431.8475,684.5273,432.5279,682.8324,433.4361,680.9505,433.8927,679.2015,434.6704,677.5,435.5625,677.5,436.2115,667.6034,435.9982,657.7069,436.297,647.8103,435.2407,637.9138,435.8817,628.0172,436.1529,618.1207,435.0901,608.2241,435.4666,598.3276,435.6885,588.431,436.2143,578.5345,435.5583,568.6379,436.0251,558.7414,435.0087,548.8448,434.8852,538.9483,436.0661,529.0517,434.8456,519.1552,436.0715,509.2586,435.7691,499.3621,435.2946,489.4655,435.2087,479.569,436.0213,469.6724,435.2632,459.7759,436.1544,449.8793,435.0098,439.9828,436.1799,430.0862,436.0468,420.1897,435.8075,410.2931,435.6097,400.3966,436.2891,390.5,435.5625,390.5783,435.7515,388.7538,434.8824,386.9987,434.1806,385.1801,433.3257,383.5203,432.8542,381.6612,431.9013,381.7089,431.9211,380.9821,430.1556,380.0094,428.2882,379.3397,426.5463,378.8957,424.898,378,423.0625,378.1433,423.0625,377.9857,417.5438,377.8926,412.025,377.927,406.5063,377.7713,400.9875,378,395.4688,378.1277,395.5217,378.96,393.7953,379.6266,392.0004,380.4107,390.2541,380.8868,388.3802,381.6612,386.6299,381.6723,386.6568,383.3795,385.7783,385.2329,385.2529,386.9959,384.5092,388.8027,383.8711,390.5,382.9688" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="388" y="405.9639">selenium/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="288" x="392" y="422.2607">end-to-end tests with automated browser</text><path d="M328,336.6719 L328,336.8587 L330,336.3036 L332,336.8437 L334,337.0271 L336,336.0377 L338,336.6719 L338,336.6719 L337.9728,336.6505 L339.6322,338.8234 L341.4284,341.1037 L343.3199,343.4588 L344.8833,345.5563 L346.9063,348.0146 L347.1434,348.0804 L347.2808,350.2651 L348.1106,352.6417 L349.0248,355.0417 L349.4476,357.3055 L350.1289,359.641 L350.1586,359.6474 L350.6892,362.3036 L351.3549,364.9888 L351.9555,367.66 L352.6803,370.358 L353,372.9688 L353.2916,373.0316 L353.8693,375.6979 L354.2591,378.3237 L354.9241,381.0088 L355.602,383.6967 L355.8711,386.2965 L355.5622,386.2109 L356.8062,388.7023 L357.0332,390.9118 L358.0333,393.3357 L358.2372,395.5388 L359.0938,397.9229 L359.0698,397.9041 L361.1342,400.395 L362.6392,402.4466 L364.4743,404.7574 L366.3371,407.09 L368,409.2656 L368,409.6356 L370,409.2622 L372,409.5209 L374,408.7568 L376,409.5184 L378,409.2656 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,364.8203 L35,365.0071 L37,364.452 L39,364.9921 L41,365.1756 L43,364.1862 L45,364.8203 L45,364.8203 L44.9847,364.7893 L46.6973,363.7707 L48.487,362.9082 L50.3303,362.1542 L51.9889,361.0262 L53.9063,360.4221 L54.1145,360.5532 L54.888,358.3376 L56.2694,356.5049 L57.7249,354.7188 L58.749,352.661 L60,350.7461 L60.0257,350.7623 L61.2067,348.8033 L62.5046,346.918 L63.7462,344.9971 L65.0953,343.144 L66.0938,341.0701 L66.2258,341.3375 L68.0087,340.4611 L69.7064,339.4123 L71.5287,338.6159 L73.3569,337.8314 L75,336.6719 L75,336.0308 L77,337.275 L79,336.4083 L81,337.1464 L83,336.2319 L85,336.6719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="97.5,520.0078,97.5,520.218,107.6667,519.5935,117.8333,520.2011,128,520.4075,138.1667,519.2944,148.3333,519.9301,158.5,519.5813,168.6667,519.6243,178.8333,519.9397,189,519.3164,199.1667,520.5615,209.3333,519.3775,219.5,520.0078,219.4748,519.9469,221.3229,520.8731,223.0246,521.4459,224.812,522.2255,226.567,522.9269,228.3388,523.669,228.3938,523.6918,229.1447,525.4672,229.9837,527.2792,230.7422,529.0579,231.477,530.8267,232,532.5078,232.0849,532.5078,232.1545,538.0266,232.2341,543.5453,231.7596,549.0641,232.2262,554.5828,232,560.1016,231.9087,560.0637,231.4322,561.9374,230.3831,563.574,229.7822,565.3961,229.2995,567.2672,228.3388,568.9404,228.3326,568.9254,226.5845,569.7051,224.8465,570.5091,223.0886,571.2653,221.2673,571.8681,219.5,572.6016,219.5,572.8888,209.3333,572.0291,199.1667,572.8859,189,573.1498,178.8333,573.0461,168.6667,573.2146,158.5,572.1185,148.3333,571.9494,138.1667,571.9802,128,572.5427,117.8333,572.405,107.6667,573.283,97.5,572.6016,97.4777,572.5478,95.6885,571.7637,93.9936,571.2074,92.1116,570.1995,90.3627,569.5128,88.6612,568.9404,88.861,569.0232,88.0631,567.2282,87.4229,565.4986,86.3654,563.596,85.8305,561.91,85,560.1016,85.1968,560.1016,84.8425,554.5828,84.968,549.0641,85.042,543.5453,85.2173,538.0266,85,532.5078,84.9987,532.5073,85.8747,530.7991,86.2939,528.9016,86.9881,527.1181,88.084,525.501,88.6612,523.669,88.5697,523.4482,90.4939,523.0935,92.2231,522.2681,93.9303,521.3898,95.6871,520.6311,97.5,520.0078" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="37" x="95" y="543.0029">test/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="123" x="99" y="559.2998">misc Python tests</text><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="294.5,455.5625,294.5,455.7727,304.537,455.1482,314.5741,455.7558,324.6111,455.9622,334.6481,454.8491,344.6852,455.4848,354.7222,455.136,364.7593,455.179,374.7963,455.4943,384.8333,454.8711,394.8704,456.1161,404.9074,454.9322,414.9444,455.3647,424.9815,455.9944,435.0185,455.4767,445.0556,455.6307,455.0926,455.5306,465.1296,455.741,475.1667,455.8016,485.2037,456.1482,495.2407,456.2336,505.2778,456.2418,515.3148,455.8171,525.3519,456.0261,535.3889,456.2647,545.4259,454.8413,555.463,456.241,565.5,455.5625,565.4622,455.4712,567.3359,456.4591,568.9724,456.8745,570.7946,457.7381,572.6657,458.7198,574.3388,459.2237,574.3238,459.2174,575.1035,461.0049,575.9076,462.8024,576.6637,464.5801,577.2666,466.2942,578,468.0625,578.0957,468.0625,577.8092,473.5813,578.0948,479.1,578.1827,484.6188,578.1482,490.1375,578,495.6563,578.1888,495.7344,577.119,497.3624,576.3347,499.1086,575.6119,500.8803,575.0529,502.7198,574.3388,504.4951,574.3138,504.4346,572.658,505.4372,570.781,505.9058,568.9918,506.5861,567.2969,507.4943,565.5,508.1563,565.5,507.4894,555.463,507.6371,545.4259,508.8052,535.3889,508.5919,525.3519,508.8907,515.3148,507.8345,505.2778,508.4754,495.2407,508.7467,485.2037,507.6838,475.1667,508.0604,465.1296,508.2822,455.0926,508.808,445.0556,508.1521,435.0185,508.6188,424.9815,507.6025,414.9444,507.479,404.9074,508.6599,394.8704,507.4393,384.8333,508.6652,374.7963,508.3629,364.7593,507.8883,354.7222,507.8025,344.6852,508.615,334.6481,507.8569,324.6111,508.7481,314.5741,507.6035,304.537,508.7737,294.5,508.1563,294.5618,508.3054,292.7635,507.4995,290.9705,506.7063,289.2894,506.1833,287.5072,505.4163,285.6612,504.4951,285.7133,504.5167,285.0115,502.7615,284.1566,500.9429,283.6851,499.2832,282.7799,497.4438,282,495.6563,282.0575,495.6563,281.7972,490.1375,281.8649,484.6188,282.1769,479.1,282.1433,473.5813,282,468.0625,281.9868,468.057,282.633,466.2536,283.397,464.499,283.9854,462.6717,285.0567,461.0443,285.6612,459.2237,285.7555,459.4514,287.4961,458.6535,289.2853,457.9732,290.947,456.9849,292.7434,456.3216,294.5,455.5625" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="95" x="292" y="478.5576">integration/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="272" x="296" y="494.8545">API tests against custom Galaxy configs</text><path d="M232,546.3047 L232,546.4915 L234,545.9364 L236,546.4765 L238,546.66 L240,545.6706 L242,546.3047 L242,546.3047 L241.9741,546.2818 L243.6393,544.1652 L245.4348,542.1639 L247.3211,540.2429 L248.8948,538.0454 L250.9063,536.2351 L251.1411,536.3084 L251.2834,534.0874 L252.1114,532.0804 L253.0231,530.0995 L253.448,527.9667 L254.1289,525.9138 L254.1584,525.9209 L254.6893,523.5441 L255.3545,521.1998 L255.9548,518.8398 L256.6787,516.5098 L257,514.082 L257.2898,514.1524 L257.8676,511.7869 L258.2584,509.376 L258.9229,507.0316 L259.6002,504.6902 L259.8711,502.2503 L259.5651,502.1547 L260.8035,500.2759 L261.0344,498.0825 L262.0312,496.1282 L262.2392,493.9276 L263.0938,491.929 L263.0709,491.9088 L265.1219,490.1334 L266.64,487.8868 L268.4726,485.9182 L270.3315,483.973 L272,481.8594 L272,482.2294 L274,481.8559 L276,482.1147 L278,481.3506 L280,482.1122 L282,481.8594 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="294.5,528.1563,294.5,528.3664,304.5,527.7419,314.5,528.3495,324.5,528.5559,334.5,527.4429,344.5,528.0785,354.5,527.7298,364.5,527.7728,374.5,528.0881,384.5,527.4649,394.5,528.7099,404.5,527.526,414.5,527.9585,424.5,528.5882,434.5,528.0705,444.5,528.2245,454.5,528.1243,464.5,528.1563,464.5228,528.2112,466.2983,528.9621,468.1102,529.8011,469.8889,530.5596,471.6577,531.2944,473.3388,531.8174,473.4172,531.8499,474.2138,533.6443,475.0196,535.4425,475.3134,537.0287,476.4767,538.975,477,540.6563,476.9012,540.6563,477.1779,542.9156,476.835,545.175,476.9772,547.4344,477.2472,549.6938,477,551.9531,476.985,551.9469,476.3002,553.7343,475.6398,555.5319,474.9315,557.3095,474.0699,559.0237,473.3388,560.792,473.3755,560.8804,471.498,561.3479,469.8396,562.344,468.1055,563.1575,466.3245,563.8578,464.5,564.4531,464.5,565.0661,454.5,563.97,444.5,563.8009,434.5,563.8317,424.5,564.3942,414.5,564.2566,404.5,565.1345,394.5,564.2784,384.5,564.1101,374.5,564.6814,364.5,563.7863,354.5,563.934,344.5,565.1021,334.5,564.8888,324.5,565.1876,314.5,564.1313,304.5,564.7723,294.5,564.4531,294.5753,564.635,292.672,563.5754,290.9522,562.9591,289.2128,562.2952,287.5121,561.7249,285.6612,560.792,285.6599,560.7914,285.0714,559.0832,284.0262,557.1858,283.2559,555.4023,282.8873,553.7851,282,551.9531,281.761,551.9531,282.1697,549.6938,282.0689,547.4344,281.9107,545.175,281.8821,542.9156,282,540.6563,282.1413,540.7148,282.6401,538.8503,283.6467,537.1962,284.0265,535.2824,285.1191,533.6639,285.6612,531.8174,285.7229,531.9666,287.4602,531.1606,289.2027,530.3675,291.0572,529.8445,292.8105,529.0774,294.5,528.1563" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="175" x="292" y="551.1514">integration_selenium/</text><path d="M232,546.3047 L232,546.4915 L234,545.9364 L236,546.4765 L238,546.66 L240,545.6706 L242,546.3047 L242,546.3047 L242,546.2701 L248,546.1151 L254,546.1342 L260,546.2744 L266,545.9974 L272,546.3047 L272,546.7968 L274,545.7444 L276,546.1289 L278,546.6886 L280,546.2284 L282,546.3047 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="294.5,584.4531,294.5,584.6633,304.1667,584.0388,313.8333,584.6464,323.5,584.8528,333.1667,583.7397,342.8333,584.3754,352.5,584.0266,362.1667,584.0696,371.8333,584.385,381.5,583.7618,391.1667,585.0068,400.8333,583.8228,410.5,584.4531,410.4748,584.3922,412.3229,585.3184,414.0246,585.8912,415.812,586.6708,417.567,587.3722,419.3388,588.1143,419.3938,588.1371,420.1447,589.9126,420.9837,591.7245,421.7422,593.5032,422.477,595.272,423,596.9531,423.0849,596.9531,423.1545,602.4719,423.2341,607.9906,422.7596,613.5094,423.2262,619.0281,423,624.5469,422.9087,624.5091,422.4322,626.3827,421.3831,628.0193,420.7822,629.8414,420.2995,631.7125,419.3388,633.3857,419.3326,633.3707,417.5845,634.1504,415.8465,634.9545,414.0886,635.7106,412.2673,636.3134,410.5,637.0469,410.5,637.3341,400.8333,636.4745,391.1667,637.3313,381.5,637.5951,371.8333,637.4914,362.1667,637.6599,352.5,636.5638,342.8333,636.3947,333.1667,636.4255,323.5,636.988,313.8333,636.8503,304.1667,637.7283,294.5,637.0469,294.4777,636.9931,292.6885,636.209,290.9936,635.6527,289.1116,634.6448,287.3627,633.9581,285.6612,633.3857,285.861,633.4685,285.0631,631.6735,284.4229,629.9439,283.3654,628.0414,282.8305,626.3554,282,624.5469,282.1968,624.5469,281.8425,619.0281,281.968,613.5094,282.042,607.9906,282.2173,602.4719,282,596.9531,281.9987,596.9526,282.8747,595.2444,283.2939,593.3469,283.9881,591.5634,285.084,589.9463,285.6612,588.1143,285.5697,587.8935,287.4939,587.5388,289.2231,586.7135,290.9303,585.8351,292.6871,585.0764,294.5,584.4531" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="37" x="292" y="607.4482">unit/</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="117" x="296" y="623.7451">Python unit tests</text><path d="M232,546.3047 L232,546.4915 L234,545.9364 L236,546.4765 L238,546.66 L240,545.6706 L242,546.3047 L242,546.3047 L241.9741,546.2818 L243.6393,548.193 L245.4348,550.2196 L247.3211,552.3264 L248.8948,554.1568 L250.9063,556.3743 L251.1411,556.4476 L251.2834,558.355 L252.1114,560.4766 L253.0231,562.6243 L253.448,564.62 L254.1289,566.6956 L254.1584,566.7027 L254.6893,569.0586 L255.3545,571.447 L255.9548,573.8197 L256.6787,576.2224 L257,578.5273 L257.2898,578.5977 L257.8676,580.9649 L258.2584,583.2867 L258.9229,585.675 L259.6002,588.0663 L259.8711,590.3591 L259.5651,590.2636 L260.8035,592.5132 L261.0344,594.4484 L262.0312,596.6226 L262.2392,598.5506 L263.0938,600.6804 L263.0709,600.6603 L265.1219,602.9127 L266.64,604.6939 L268.4726,606.7532 L270.3315,608.8358 L272,610.75 L272,611.12 L274,610.7465 L276,611.0053 L278,610.2412 L280,611.0028 L282,610.75 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M35,364.8203 L35,365.0071 L37,364.452 L39,364.9921 L41,365.1756 L43,364.1862 L45,364.8203 L45,364.8203 L44.9709,364.8017 L45.8363,366.2779 L46.8485,367.8478 L47.9628,369.4829 L48.7254,370.8934 L49.9805,372.6185 L50.2202,372.674 L50.1221,374.3453 L50.7239,376.1787 L51.4111,378.0319 L51.6015,379.77 L52.0532,381.5686 L52.0832,381.5734 L52.4098,383.8881 L52.8728,386.2246 L53.27,388.5506 L53.7927,390.8966 L53.9063,393.1772 L54.2023,393.2134 L54.5414,395.9609 L54.6895,398.6851 L55.1171,401.4435 L55.5578,404.2034 L55.5835,406.9126 L55.2646,406.8805 L56.1926,410.009 L56.0705,413.0316 L56.7468,416.1347 L56.6009,419.1549 L57.1289,422.2431 L57.0986,422.2405 L58.0315,428.9353 L58.2558,435.569 L58.8982,442.2388 L59.5757,448.9115 L60,455.5625 L60.1843,455.5784 L60.5725,462.2262 L61.2756,468.9012 L61.4692,475.5323 L62.4228,482.2289 L62.8711,488.8819 L63.1135,488.9063 L63.3767,491.9678 L63.7603,495.0414 L63.5847,498.0586 L63.819,501.1172 L64.4165,504.2124 L64.1424,504.1789 L64.726,506.9563 L65.0007,509.6959 L65.7235,512.4903 L65.6812,515.1913 L66.0938,517.9478 L65.9432,517.9237 L66.5645,520.2855 L66.5423,522.5445 L66.9777,524.8766 L67.861,527.2801 L67.9468,529.5564 L68.1354,529.6001 L68.6794,531.4201 L68.6365,533.1042 L69.3286,534.9585 L69.8606,536.7757 L70.0195,538.5065 L69.8426,538.3935 L70.9797,540.0432 L72.0589,541.6559 L73.2519,543.3413 L74.0023,544.7441 L75,546.3047 L75,546.7159 L77,545.8124 L79,545.7027 L81,546.7523 L83,545.6674 L85,546.3047 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fic06tcy5hz77)" points="97.5,657.0469,97.5,657.2571,107.4615,656.6326,117.4231,657.2402,127.3846,657.4466,137.3462,656.3335,147.3077,656.9692,157.2692,656.6204,167.2308,656.6634,177.1923,656.9787,187.1538,656.3555,197.1154,657.6005,207.0769,656.4166,217.0385,656.8491,227,657.4788,236.9615,656.9611,246.9231,657.1151,256.8846,657.0149,266.8462,657.2254,276.8077,657.286,286.7692,657.6326,296.7308,657.7179,306.6923,657.7261,316.6538,657.3015,326.6154,657.5105,336.5769,657.7491,346.5385,656.3257,356.5,657.0469,356.5866,657.2558,358.2299,657.6878,360.1036,658.6757,361.7402,659.0911,363.5623,659.9547,365.3388,660.708,365.5672,660.8026,366.0561,662.4696,366.8357,664.257,367.6398,666.0545,368.3959,667.8322,369,669.5469,368.9987,669.5469,369.0957,675.0656,368.8092,680.5844,369.0948,686.1031,369.1827,691.6219,369,697.1406,369.1369,697.1973,368.4566,698.9866,367.3868,700.6145,366.6025,702.3607,365.8797,704.1324,365.3388,705.9795,365.3313,705.9613,363.546,706.6512,361.8902,707.6538,360.0133,708.1224,358.224,708.8027,356.5,709.6406,356.5,709.8689,346.5385,708.9738,336.5769,709.1215,326.6154,710.2896,316.6538,710.0763,306.6923,710.3751,296.7308,709.3188,286.7692,709.9598,276.8077,710.231,266.8462,709.1682,256.8846,709.5448,246.9231,709.7666,236.9615,710.2924,227,709.6364,217.0385,710.1032,207.0769,709.0868,197.1154,708.9634,187.1538,710.1442,177.1923,708.9237,167.2308,710.1496,157.2692,709.8473,147.3077,709.3727,137.3462,709.2869,127.3846,710.0994,117.4231,709.3413,107.4615,710.2325,97.5,709.6406,97.4295,709.4704,95.811,709.0985,94.0262,708.3253,92.2279,707.5194,90.435,706.7262,88.6612,705.9795,88.8849,706.0721,88.1179,704.29,87.2488,702.4655,86.5471,700.7104,85.6921,698.8918,85,697.1406,85.2388,697.1406,85.0516,691.6219,85.0575,686.1031,84.7972,680.5844,84.8649,675.0656,85,669.5469,85.1634,669.6146,85.8646,667.8339,86.4512,666.0059,87.0975,664.2025,87.8615,662.4479,88.6612,660.708,88.5736,660.4967,90.4818,660.1035,92.291,659.4713,94.0316,658.6734,95.8209,657.9931,97.5,657.0469" style="stroke: #FFA500; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="51" x="95" y="680.042">tox.ini</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="260" x="99" y="696.3389">Tox entry point for linting Python, etc..</text><path d="M35,364.8203 L35,365.0071 L37,364.452 L39,364.9921 L41,365.1756 L43,364.1862 L45,364.8203 L45,364.8203 L44.9675,364.8085 L45.818,367.4928 L46.832,370.2366 L47.9598,373.0219 L48.6956,375.6645 L49.9805,378.5069 L50.2244,378.5391 L50.1173,381.6119 L50.7224,384.7787 L51.4144,387.957 L51.6009,391.0686 L52.0532,394.2153 L52.0834,394.218 L52.4097,398.2889 L52.8735,402.3722 L53.2709,406.4495 L53.7949,410.5383 L53.9063,414.5896 L54.2038,414.6103 L54.5429,419.432 L54.69,424.2403 L55.1181,429.0681 L55.5594,433.8969 L55.5835,438.6966 L55.2635,438.6782 L56.1936,444.0952 L56.0701,449.4516 L56.7476,454.8541 L56.6002,460.2092 L57.1289,465.6031 L57.0377,465.5986 L58.595,475.3981 L58.021,485.0929 L58.7047,494.8495 L59.4939,504.6112 L60.0758,514.3628 L60,524.082 L59.9948,524.0818 L60.861,533.8473 L60.1947,543.5376 L61.8143,553.3401 L62.6441,563.1038 L62.9846,572.8435 L62.8711,582.5609 L63.1431,582.5766 L62.9658,587.9299 L63.1999,593.3069 L63.5226,598.689 L64.0813,604.0847 L64.4165,609.4675 L64.3294,609.4614 L65.0541,614.3099 L65.01,619.1049 L65.2708,623.9211 L65.8595,628.7601 L66.0938,633.5745 L65.7986,633.5476 L66.2346,637.6284 L67.1222,641.7503 L67.3984,645.8166 L67.9013,649.9035 L67.9468,653.9488 L67.805,653.9301 L68.502,657.109 L69.036,660.2665 L68.9823,663.3464 L69.5627,666.5099 L70.0195,669.6572 L70.0721,669.6763 L71.2878,672.4936 L72.01,675.1312 L73.201,677.9394 L73.7726,680.5223 L75,683.3438 L75,682.7417 L77,683.7914 L79,682.7065 L81,683.7962 L83,683.5274 L85,683.3438 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[6f0d85493c7707b0aba0704e285c5190] +@startmindmap + +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>client/galaxy/scripts/</i></b> + JS sources include unit tests; +***:<b><i>components/</i></b> + VueJS components define tests next to source file; +***:<b><i>mocha/</i></b> + standalone JS mocha unit tests; +***:<b><i>qunit/</i></b> + older JS qunit unit tests; +**:<b><i>lib/galaxy_test/</i></b> + properly packaged Python tests; +***:<b><i>base/</i></b> + base Python infrastructure for testing; +***:<b><i>api/</i></b> + tests against Galaxy API; +***:<b><i>selenium/</i></b> + end-to-end tests with automated browser; +**:<b><i>test/</i></b> + misc Python tests; +***:<b><i>integration/</i></b> + API tests against custom Galaxy configs; +*** <b><i>integration_selenium/</i></b> +***:<b><i>unit/</i></b> + Python unit tests; +**:<b><i>tox.ini</i></b> + Tox entry point for linting Python, etc..; +@endmindmap + +@startmindmap + +<style> +mindmapDiagram { + node { + BackgroundColor #FFEFD5 + BorderColor DarkOrange + LineColor Orange + } +} +</style> +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +* / +**:<b><i>client/galaxy/scripts/</i></b> + JS sources include unit tests; +***:<b><i>components/</i></b> + VueJS components define tests next to source file; +***:<b><i>mocha/</i></b> + standalone JS mocha unit tests; +***:<b><i>qunit/</i></b> + older JS qunit unit tests; +**:<b><i>lib/galaxy_test/</i></b> + properly packaged Python tests; +***:<b><i>base/</i></b> + base Python infrastructure for testing; +***:<b><i>api/</i></b> + tests against Galaxy API; +***:<b><i>selenium/</i></b> + end-to-end tests with automated browser; +**:<b><i>test/</i></b> + misc Python tests; +***:<b><i>integration/</i></b> + API tests against custom Galaxy configs; +*** <b><i>integration_selenium/</i></b> +***:<b><i>unit/</i></b> + Python unit tests; +**:<b><i>tox.ini</i></b> + Tox entry point for linting Python, etc..; +@endmindmap + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/core_files_test.plantuml.txt b/topics/dev/images/core_files_test.plantuml.txt new file mode 100644 index 00000000000000..8227717e40a781 --- /dev/null +++ b/topics/dev/images/core_files_test.plantuml.txt @@ -0,0 +1,31 @@ +@startmindmap +!include plantuml_style.txt +!include plantuml_options.txt + +* / +**:<b><i>client/galaxy/scripts/</i></b> + JS sources include unit tests; +***:<b><i>components/</i></b> + VueJS components define tests next to source file; +***:<b><i>mocha/</i></b> + standalone JS mocha unit tests; +***:<b><i>qunit/</i></b> + older JS qunit unit tests; +**:<b><i>lib/galaxy_test/</i></b> + properly packaged Python tests; +***:<b><i>base/</i></b> + base Python infrastructure for testing; +***:<b><i>api/</i></b> + tests against Galaxy API; +***:<b><i>selenium/</i></b> + end-to-end tests with automated browser; +**:<b><i>test/</i></b> + misc Python tests; +***:<b><i>integration/</i></b> + API tests against custom Galaxy configs; +*** <b><i>integration_selenium/</i></b> +***:<b><i>unit/</i></b> + Python unit tests; +**:<b><i>tox.ini</i></b> + Tox entry point for linting Python, etc..; +@endmindmap diff --git a/topics/dev/images/hda_dataset.plantuml.svg b/topics/dev/images/hda_dataset.plantuml.svg index b0241914189fba..c5ac0bcd61c044 100644 --- a/topics/dev/images/hda_dataset.plantuml.svg +++ b/topics/dev/images/hda_dataset.plantuml.svg @@ -1 +1,94 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="142px" style="width:401px;height:142px;" version="1.1" viewBox="0 0 401 142" width="401px"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f1)" points="6,8.5,6,9.1144,15.85,7.7675,25.7,8.5353,35.55,8.1282,45.4,7.8888,55.25,8.093,65.1,7.8425,74.95,8.0746,84.8,8.0534,94.65,8.2825,104.5,8.4292,114.35,8.562,124.2,8.4275,134.05,8.5053,143.9,9.012,153.75,8.511,163.6,8.6362,173.45,9.2427,183.3,8.4818,193.15,8.5747,203,8.5,203.3552,8.5,203.6055,18.9023,202.2847,29.3047,202.6042,39.707,203.1282,50.1094,202.8968,60.5117,203.7447,70.9141,202.9683,81.3164,203.1218,91.7188,202.5938,102.1211,202.831,112.5234,203.2137,122.9258,203,133.3281,203,133.2143,193.15,133.5847,183.3,133.5713,173.45,133.4428,163.6,132.6775,153.75,133.6113,143.9,133.0877,134.05,132.8767,124.2,132.7132,114.35,132.7509,104.5,133.8997,94.65,132.6787,84.8,132.686,74.95,133.3544,65.1,132.6308,55.25,133.1782,45.4,132.8972,35.55,132.9897,25.7,133.4253,15.85,132.9877,6,133.3281,5.4966,133.3281,5.4447,122.9258,6.0447,112.5234,5.4918,102.1211,6.1467,91.7188,6.2423,81.3164,5.2983,70.9141,6.3105,60.5117,6.214,50.1094,5.2826,39.707,6.0326,29.3047,5.9766,18.9023,6,8.5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="31.1897,26.5122,30.6119,29.382,28.7783,32.4926,26.941,33.281,24.8459,35.2248,22.5166,35.3078,20.0492,35.9095,17.5873,35.5841,15.2939,33.2266,11.8463,31.4193,10.5115,29.6393,10.7131,27.3197,10.5242,25.259,9.7856,22.5629,10.9233,19.3033,13.4103,17.3969,15.1817,14.8618,17.423,14.0332,19.3018,13.1495,22.4134,13.573,25.8534,13.9691,28.357,16.6442,29.7275,18.2987,30.9691,21.2572,32.5779,24.231,31.7095,27.168" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M23.9688,30.1406 Q23.3906,30.4375 22.75,30.5859 Q22.1094,30.7344 21.4063,30.7344 Q18.9063,30.7344 17.5859,29.0859 Q16.2656,27.4375 16.2656,24.3125 Q16.2656,21.1875 17.5859,19.5313 Q18.9063,17.875 21.4063,17.875 Q22.1094,17.875 22.7578,18.0313 Q23.4063,18.1875 23.9688,18.4844 L23.9688,21.2031 Q23.3438,20.625 22.75,20.3516 Q22.1563,20.0781 21.5313,20.0781 Q20.1875,20.0781 19.5,21.1484 Q18.8125,22.2188 18.8125,24.3125 Q18.8125,26.4063 19.5,27.4766 Q20.1875,28.5469 21.5313,28.5469 Q22.1563,28.5469 22.75,28.2734 Q23.3438,28 23.9688,27.4219 L23.9688,30.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="165" x="35" y="28.6543">HistoryDatasetAssociation</text><path d="M7,40.5 L7,41.2996 L16.75,41.2862 L26.5,39.5266 L36.25,39.5883 L46,40.8218 L55.75,41.4331 L65.5,40.8638 L75.25,39.6371 L85,41.3802 L94.75,39.9638 L104.5,41.3905 L114.25,40.7805 L124,41.3161 L133.75,40.5527 L143.5,40.0798 L153.25,41.16 L163,41.149 L172.75,41.3459 L182.5,40.4738 L192.25,39.8499 L202,40.5 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="12" y="54.7104">hid: integer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="103" x="12" y="67.5151">history_id: integer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="12" y="80.3198">dataset_id: integer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="12" y="93.1245">state: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="12" y="105.9292">name: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="62" x="12" y="118.7339">info: string</text><path d="M7,125.3281 L7,124.7498 L16.75,124.4056 L26.5,125.6411 L36.25,125.9915 L46,124.7637 L55.75,124.3896 L65.5,125.4302 L75.25,124.7506 L85,125.0971 L94.75,124.3446 L104.5,125.3615 L114.25,125.1546 L124,126.0912 L133.75,124.9732 L143.5,124.5332 L153.25,125.3161 L163,124.7253 L172.75,125.6208 L182.5,124.8468 L192.25,125.408 L202,125.3281 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="238.25,15,238.25,14.3539,248.5167,15.643,258.7833,15.0247,269.05,15.2593,279.3167,14.5999,289.5833,14.5467,299.85,14.9058,310.1167,14.9825,320.3833,14.857,330.65,15.4424,340.9167,14.3031,351.1833,14.2797,361.45,15.0895,371.7167,15.6727,381.9833,15.2795,392.25,15,391.7014,15,392.0459,25.1839,392.4648,35.3679,392.0767,45.5518,391.9414,55.7358,391.8624,65.9197,392.2574,76.1037,392.983,86.2876,392.8058,96.4716,391.8491,106.6555,392.8564,116.8395,392.25,127.0234,392.25,126.802,381.9833,127.2602,371.7167,126.879,361.45,127.2999,351.1833,127.7156,340.9167,127.6713,330.65,126.513,320.3833,127.5315,310.1167,127.6199,299.85,126.7109,289.5833,126.8171,279.3167,126.4335,269.05,127.1842,258.7833,127.2556,248.5167,127.289,238.25,127.0234,238.7138,127.0234,237.632,116.8395,237.6758,106.6555,237.5999,96.4716,237.9909,86.2876,238.5608,76.1037,238.9224,65.9197,238.7136,55.7358,238.1312,45.5518,238.898,35.3679,238.6622,25.1839,238.25,15" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="297.3155,33.3176,296.7004,35.6842,294.2188,37.2458,293.1033,38.9233,290.6513,41.556,287.5368,42.5477,285.4776,41.8824,283.1005,41.7869,279.7138,40.4034,278.2444,38.7992,276.3713,36.3546,276.041,34.211,274.8988,31.2259,275.0423,28.2419,276.3913,24.4932,278.8522,21.8671,282.2868,19.9274,285.1552,20.0935,288.1482,19.6493,290.0263,21.447,292.9633,21.7574,295.2256,24.6146,296.8314,27.5259,296.7973,31.3368" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M288.9688,36.6406 Q288.3906,36.9375 287.75,37.0859 Q287.1094,37.2344 286.4063,37.2344 Q283.9063,37.2344 282.5859,35.5859 Q281.2656,33.9375 281.2656,30.8125 Q281.2656,27.6875 282.5859,26.0313 Q283.9063,24.375 286.4063,24.375 Q287.1094,24.375 287.7578,24.5313 Q288.4063,24.6875 288.9688,24.9844 L288.9688,27.7031 Q288.3438,27.125 287.75,26.8516 Q287.1563,26.5781 286.5313,26.5781 Q285.1875,26.5781 284.5,27.6484 Q283.8125,28.7188 283.8125,30.8125 Q283.8125,32.9063 284.5,33.9766 Q285.1875,35.0469 286.5313,35.0469 Q287.1563,35.0469 287.75,34.7734 Q288.3438,34.5 288.9688,33.9219 L288.9688,36.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="306.5" y="35.1543">Dataset</text><path d="M239.25,47 L239.25,47.5547 L249.3833,47.5585 L259.5167,47.2359 L269.65,46.6478 L279.7833,46.6843 L289.9167,46.2412 L300.05,47.1933 L310.1833,46.4709 L320.3167,47.5403 L330.45,47.9324 L340.5833,47.9832 L350.7167,47.8028 L360.85,46.05 L370.9833,46.6221 L381.1167,46.5906 L391.25,47 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="127" x="244.25" y="61.2104">object_store_id: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="244.25" y="74.0151">external_filename: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="137" x="244.25" y="86.8198">_extra_files_path: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="244.25" y="99.6245">file_size: integer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="101" x="244.25" y="112.4292">total_size: integer</text><path d="M239.25,119.0234 L239.25,118.8755 L249.3833,118.1566 L259.5167,119.6522 L269.65,118.3996 L279.7833,119.6996 L289.9167,119.9766 L300.05,118.1289 L310.1833,118.9649 L320.3167,118.7607 L330.45,119.2033 L340.5833,119.0691 L350.7167,119.7889 L360.85,118.2302 L370.9833,119.3125 L381.1167,118.9203 L391.25,119.0234 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M202.744,71 L202.744,71.2752 L208.7318,71.0702 L214.7196,70.8441 L220.7074,70.8885 L226.6952,71.0816 L232.683,71 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="237.902,71,237.8973,70.9893,236.0773,70.1444,234.3645,69.5406,232.5793,68.7739,230.6864,67.765,228.902,67,228.8551,66.9531,229.7583,67.8563,230.4196,68.5176,231.1938,69.2918,231.9404,70.0384,232.902,71,233.0613,71.1593,231.9988,71.6968,231.4076,72.7056,230.5423,73.4403,229.8551,74.3531,228.902,75,228.9451,75.097,230.7348,74.2738,232.4098,73.1925,234.3871,72.7916,236.0643,71.7153,237.902,71" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="210.8517" y="66.4017">*</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="222.3399" y="66.3939">1</text></g></svg> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="143px" preserveAspectRatio="none" style="width:403px;height:143px;" version="1.1" viewBox="0 0 403 143" width="403px" zoomAndPan="magnify"><defs><filter height="300%" id="f1k7bqve0h3he6" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[7b84bcf171019e7f7c35d4c599fad13e] +class HistoryDatasetAssociation--><polygon fill="#FFEFD5" filter="url(#f1k7bqve0h3he6)" points="6,8,6,8.2102,15.85,7.5857,25.7,8.1933,35.55,8.3997,45.4,7.2866,55.25,7.9223,65.1,7.5735,74.95,7.6165,84.8,7.9318,94.65,7.3086,104.5,8.5536,114.35,7.3697,124.2,7.8022,134.05,8.4319,143.9,7.9142,153.75,8.0682,163.6,7.9681,173.45,8.1785,183.3,8.2391,193.15,8.5857,203,8,203.6711,8,203.6793,18.4023,203.2546,28.8047,203.4636,39.207,203.7022,49.6094,202.2788,60.0117,203.6785,70.4141,202.7035,80.8164,203.5338,91.2188,202.505,101.6211,202.9315,112.0234,203.7416,122.4258,203,132.8281,203,132.7794,193.15,132.9334,183.3,133.1668,173.45,133.2444,163.6,132.8242,153.75,133.1153,143.9,132.2557,134.05,133.1125,124.2,133.3763,114.35,133.2727,104.5,133.4411,94.65,132.345,84.8,132.1759,74.95,132.2067,65.1,132.7692,55.25,132.6316,45.4,133.5095,35.55,132.6534,25.7,132.4851,15.85,133.0564,6,132.8281,5.3332,132.8281,5.4809,122.4258,6.649,112.0234,6.4357,101.6211,6.7345,91.2188,5.6782,80.8164,6.3192,70.4141,6.5904,60.0117,5.5276,49.6094,5.9041,39.207,6.126,28.8047,6.6518,18.4023,6,8" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="32.0608,26.6756,30.4484,28.8788,28.5412,32.1057,25.8136,34.2804,22.9474,35.4696,20.662,35.5728,17.7247,34.0855,14.9532,33.1139,12.8495,31.1412,11.7461,28.8828,11.0917,27.0845,10.4506,24.7357,9.41,22.7145,10.2096,20.741,10.9102,18.5792,13.5393,16.8695,15.389,14.6511,17.6784,13.9144,20.4001,13.2801,23.8904,13.657,25.8021,14.5585,28.0247,14.9672,30.7272,17.736,31.6693,20.659,32.0786,22.6534,31.615,25.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M23.9688,29.6406 Q23.3906,29.9375 22.75,30.0781 Q22.1094,30.2344 21.4063,30.2344 Q18.9063,30.2344 17.5781,28.5938 Q16.2656,26.9375 16.2656,23.8125 Q16.2656,20.6875 17.5781,19.0313 Q18.9063,17.375 21.4063,17.375 Q22.1094,17.375 22.75,17.5313 Q23.4063,17.6875 23.9688,17.9844 L23.9688,20.7031 Q23.3438,20.125 22.75,19.8594 Q22.1563,19.5781 21.5313,19.5781 Q20.1875,19.5781 19.5,20.6563 Q18.8125,21.7188 18.8125,23.8125 Q18.8125,25.9063 19.5,26.9844 Q20.1875,28.0469 21.5313,28.0469 Q22.1563,28.0469 22.75,27.7813 Q23.3438,27.5 23.9688,26.9219 L23.9688,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="165" x="35" y="28.1543">HistoryDatasetAssociation</text><path d="M7,40 L7,40.2802 L16.75,39.4476 L26.5,40.2577 L36.25,40.5329 L46,39.0488 L55.75,39.8964 L65.5,39.4313 L75.25,39.4887 L85,39.9091 L94.75,39.0782 L104.5,40.7382 L114.25,39.1596 L124,39.7363 L133.75,40.5759 L143.5,39.8856 L153.25,40.091 L163,39.9574 L172.75,40.238 L182.5,40.3188 L192.25,40.7809 L202,40 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="12" y="54.2104">hid: integer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="103" x="12" y="67.0151">history_id: integer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="12" y="79.8198">dataset_id: integer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="12" y="92.6245">state: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="12" y="105.4292">name: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="62" x="12" y="118.2339">info: string</text><path d="M7,124.8281 L7,125.1084 L16.75,124.2757 L26.5,125.0858 L36.25,125.361 L46,123.8769 L55.75,124.7245 L65.5,124.2595 L75.25,124.3168 L85,124.7372 L94.75,123.9063 L104.5,125.5663 L114.25,123.9878 L124,124.5644 L133.75,125.4041 L143.5,124.7138 L153.25,124.9191 L163,124.7855 L172.75,125.0662 L182.5,125.147 L192.25,125.609 L202,124.8281 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[8b82677223ea9eb28a50de16faa90dcd] +class Dataset--><polygon fill="#FFEFD5" filter="url(#f1k7bqve0h3he6)" points="238.5,14.5,238.5,14.7102,248.7667,14.0857,259.0333,14.6933,269.3,14.8997,279.5667,13.7866,289.8333,14.4223,300.1,14.0735,310.3667,14.1165,320.6333,14.4318,330.9,13.8086,341.1667,15.0536,351.4333,13.8697,361.7,14.3022,371.9667,14.9319,382.2333,14.4142,392.5,14.5,392.5682,14.5,392.4681,24.6839,392.6785,34.8679,392.7391,45.0518,393.0857,55.2358,393.1711,65.4197,393.1793,75.6037,392.7546,85.7876,392.9636,95.9716,393.2022,106.1555,391.7788,116.3395,392.5,126.5234,392.5,127.2019,382.2333,126.2269,371.9667,127.0572,361.7,126.0284,351.4333,126.4549,341.1667,127.265,330.9,126.4747,320.6333,126.6287,310.3667,126.8621,300.1,126.9397,289.8333,126.5195,279.5667,126.8107,269.3,125.951,259.0333,126.8078,248.7667,127.0716,238.5,126.5234,238.9445,126.5234,239.113,116.3395,238.0169,106.1555,237.8478,95.9716,237.8786,85.7876,238.4411,75.6037,238.3035,65.4197,239.1814,55.2358,238.3253,45.0518,238.1569,34.8679,238.7283,24.6839,238.5,14.5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="297.3108,33.1756,295.6984,35.3788,293.7912,38.6057,291.0636,40.7804,288.1974,41.9696,285.912,42.0728,282.9747,40.5855,280.2032,39.6139,278.0995,37.6412,276.9961,35.3828,276.3417,33.5845,275.7006,31.2357,274.66,29.2145,275.4596,27.241,276.1602,25.0792,278.7893,23.3695,280.639,21.1511,282.9284,20.4144,285.6501,19.7801,289.1404,20.157,291.0521,21.0585,293.2747,21.4672,295.9772,24.236,296.9193,27.159,297.3286,29.1534,296.865,32.4399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M289.2188,36.1406 Q288.6406,36.4375 288,36.5781 Q287.3594,36.7344 286.6563,36.7344 Q284.1563,36.7344 282.8281,35.0938 Q281.5156,33.4375 281.5156,30.3125 Q281.5156,27.1875 282.8281,25.5313 Q284.1563,23.875 286.6563,23.875 Q287.3594,23.875 288,24.0313 Q288.6563,24.1875 289.2188,24.4844 L289.2188,27.2031 Q288.5938,26.625 288,26.3594 Q287.4063,26.0781 286.7813,26.0781 Q285.4375,26.0781 284.75,27.1563 Q284.0625,28.2188 284.0625,30.3125 Q284.0625,32.4063 284.75,33.4844 Q285.4375,34.5469 286.7813,34.5469 Q287.4063,34.5469 288,34.2813 Q288.5938,34 289.2188,33.4219 L289.2188,36.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="306.75" y="34.6543">Dataset</text><path d="M239.5,46.5 L239.5,46.7802 L249.6333,45.9476 L259.7667,46.7577 L269.9,47.0329 L280.0333,45.5488 L290.1667,46.3964 L300.3,45.9313 L310.4333,45.9887 L320.5667,46.4091 L330.7,45.5782 L340.8333,47.2382 L350.9667,45.6596 L361.1,46.2363 L371.2333,47.0759 L381.3667,46.3856 L391.5,46.5 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="127" x="244.5" y="60.7104">object_store_id: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="244.5" y="73.5151">external_filename: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="137" x="244.5" y="86.3198">_extra_files_path: string</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="244.5" y="99.1245">file_size: integer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="101" x="244.5" y="111.9292">total_size: integer</text><path d="M239.5,118.5234 L239.5,118.8037 L249.6333,117.971 L259.7667,118.7812 L269.9,119.0563 L280.0333,117.5722 L290.1667,118.4198 L300.3,117.9548 L310.4333,118.0121 L320.5667,118.4326 L330.7,117.6016 L340.8333,119.2616 L350.9667,117.6831 L361.1,118.2597 L371.2333,119.0994 L381.3667,118.4091 L391.5,118.5234 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[36a4af299efebbfff4fbc2b5b571abe7] +link HistoryDatasetAssociation to Dataset--><path d="M203.4063,70.5 L203.4063,70.5934 L209.3722,70.3159 L215.3381,70.5859 L221.3041,70.6776 L227.27,70.1829 L233.2359,70.5 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="238.4355,70.5,238.464,70.564,236.5794,69.5738,234.8617,68.9589,233.0896,68.2217,231.1389,67.0827,229.4355,66.5,229.4172,66.4817,230.135,67.1995,230.9451,68.0096,231.8194,68.8839,232.4725,69.537,233.4355,70.5,233.566,70.6305,232.4869,71.1514,231.7889,72.0534,231.1373,73.0018,230.2153,73.6798,229.4355,74.5,229.4447,74.5208,231.2312,73.6903,233.0597,72.9544,234.8679,72.1728,236.7148,71.4784,238.4355,70.5" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="210.9268" y="67.0273">*</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="222.4557" y="66.834">1</text><!--MD5=[c82bc52b79db5abdaa55aacaf631f49d] +@startuml + + +!include plantuml_options.txt + +class HistoryDatasetAssociation { + hid: integer + history_id: integer + dataset_id: integer + state: string + name: string + info: string +} + +class Dataset { + object_store_id: string + external_filename: string + _extra_files_path: string + file_size: integer + total_size: integer +} + +HistoryDatasetAssociation "*" -> "1" Dataset +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +class HistoryDatasetAssociation { + hid: integer + history_id: integer + dataset_id: integer + state: string + name: string + info: string +} + +class Dataset { + object_store_id: string + external_filename: string + _extra_files_path: string + file_size: integer + total_size: integer +} + +HistoryDatasetAssociation "*" -> "1" Dataset +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/hda_dataset.plantuml.txt b/topics/dev/images/hda_dataset.plantuml.txt new file mode 100644 index 00000000000000..92d56b5b1b41c2 --- /dev/null +++ b/topics/dev/images/hda_dataset.plantuml.txt @@ -0,0 +1,23 @@ +@startuml + +!include plantuml_options.txt + +class HistoryDatasetAssociation { + hid: integer + history_id: integer + dataset_id: integer + state: string + name: string + info: string +} + +class Dataset { + object_store_id: string + external_filename: string + _extra_files_path: string + file_size: integer + total_size: integer +} + +HistoryDatasetAssociation "*" -> "1" Dataset +@enduml \ No newline at end of file diff --git a/topics/dev/images/hda_hdca.plantuml.svg b/topics/dev/images/hda_hdca.plantuml.svg index 1deb70e2b056dd..f47ff65d0f331d 100644 --- a/topics/dev/images/hda_hdca.plantuml.svg +++ b/topics/dev/images/hda_hdca.plantuml.svg @@ -1 +1,114 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="454px" style="width:502px;height:454px;" version="1.1" viewBox="0 0 502 454" width="502px"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f1)" points="195.75,8,195.75,8.4865,205.125,8.4224,214.5,7.9821,223.875,8.1153,233.25,7.2707,242.625,7.8451,252,7.7284,261.375,8.2653,270.75,8,270.4198,8,270.46,17.6,270.8879,27.2,270.4304,36.8,270.0674,46.4,270.75,56,270.75,55.5089,261.375,55.6154,252,55.3586,242.625,56.3641,233.25,55.4609,223.875,55.9265,214.5,56.3634,205.125,56.4309,195.75,56,195.7629,56,195.7645,46.4,195.9777,36.8,195.5897,27.2,196.2684,17.6,195.75,8" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="221.507,26.3143,220.1556,28.2782,219.2698,30.6271,217.1138,32.6689,214.5715,34.8362,212.0957,35.5621,209.9723,35.257,207.3156,34.9373,204.279,33.205,202.297,30.5244,200.0592,27.9391,199.7342,25.7887,199.8414,22.9616,199.6813,20.7636,201.019,18.6488,203.0395,15.2554,205.5912,14.6772,208.7549,13.6537,211.4457,13.2502,213.679,13.8929,216.5214,14.4864,218.8212,17.3561,220.2821,19.0682,221.7169,20.8187,222.0399,23.2402,221.393,25.5968" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M213.7188,29.6406 Q213.1406,29.9375 212.5,30.0859 Q211.8594,30.2344 211.1563,30.2344 Q208.6563,30.2344 207.3359,28.5859 Q206.0156,26.9375 206.0156,23.8125 Q206.0156,20.6875 207.3359,19.0313 Q208.6563,17.375 211.1563,17.375 Q211.8594,17.375 212.5078,17.5313 Q213.1563,17.6875 213.7188,17.9844 L213.7188,20.7031 Q213.0938,20.125 212.5,19.8516 Q211.9063,19.5781 211.2813,19.5781 Q209.9375,19.5781 209.25,20.6484 Q208.5625,21.7188 208.5625,23.8125 Q208.5625,25.9063 209.25,26.9766 Q209.9375,28.0469 211.2813,28.0469 Q211.9063,28.0469 212.5,27.7734 Q213.0938,27.5 213.7188,26.9219 L213.7188,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="43" x="224.75" y="28.1543">History</text><path d="M196.75,40 L196.75,39.1934 L207.1786,40.5922 L217.6071,39.329 L228.0357,40.2944 L238.4643,39.2079 L248.8929,39.7592 L259.3214,40.0563 L269.75,40 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M196.75,48 L196.75,47.9763 L207.1786,48.7685 L217.6071,48.2094 L228.0357,47.3636 L238.4643,48.854 L248.8929,48.7542 L259.3214,48.9064 L269.75,48 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="31.75,116,31.75,115.7254,41.6,116.0489,51.45,115.7014,61.3,115.2948,71.15,116.7405,81,116.3838,90.85,115.6978,100.7,116.7029,110.55,115.3869,120.4,116.4084,130.25,116.4717,140.1,116.5194,149.95,115.6496,159.8,115.4888,169.65,115.4232,179.5,116.512,189.35,115.787,199.2,115.5733,209.05,115.9624,218.9,115.638,228.75,116,228.4046,116,228.7097,126.5156,229.2996,137.0313,228.5843,147.5469,228.2579,158.0625,228.9887,168.5781,228.8413,179.0938,228.75,189.6094,228.75,189.6079,218.9,190.2041,209.05,188.9306,199.2,189.2848,189.35,188.884,179.5,189.8281,169.65,190.0357,159.8,188.9685,149.95,189.2577,140.1,189.769,130.25,189.4441,120.4,189.1317,110.55,190.0513,100.7,189.9721,90.85,189.1939,81,189.2929,71.15,189.7004,61.3,190.2808,51.45,189.2318,41.6,190.242,31.75,189.6094,32.3293,189.6094,32.3095,179.0938,32.4527,168.5781,31.5243,158.0625,31.3576,147.5469,31.0858,137.0313,32.3162,126.5156,31.75,116" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="57.2906,135.236,56.4622,137.8712,54.6571,140.003,51.8543,141.7671,49.0453,143.196,45.9084,142.6612,42.447,141.5629,40.4938,140.8715,38.8607,139.5397,37.2096,137.0045,35.3874,134.3745,36.3201,131.1871,35.917,128.4396,37.4785,125.913,39.5428,123.8156,41.2874,122.585,43.6839,121.5972,47.2455,120.8968,50.2388,121.7387,52.0505,122.569,53.7076,123.8505,55.7623,125.1935,57.075,127.1602,57.994,130.3811,57.2866,133.5322" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M49.7188,137.6406 Q49.1406,137.9375 48.5,138.0859 Q47.8594,138.2344 47.1563,138.2344 Q44.6563,138.2344 43.3359,136.5859 Q42.0156,134.9375 42.0156,131.8125 Q42.0156,128.6875 43.3359,127.0313 Q44.6563,125.375 47.1563,125.375 Q47.8594,125.375 48.5078,125.5313 Q49.1563,125.6875 49.7188,125.9844 L49.7188,128.7031 Q49.0938,128.125 48.5,127.8516 Q47.9063,127.5781 47.2813,127.5781 Q45.9375,127.5781 45.25,128.6484 Q44.5625,129.7188 44.5625,131.8125 Q44.5625,133.9063 45.25,134.9766 Q45.9375,136.0469 47.2813,136.0469 Q47.9063,136.0469 48.5,135.7734 Q49.0938,135.5 49.7188,134.9219 L49.7188,137.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="165" x="60.75" y="136.1543">HistoryDatasetAssociation</text><path d="M32.75,148 L32.75,147.1893 L42.5,147.3857 L52.25,148.3181 L62,147.5533 L71.75,148.0194 L81.5,147.5988 L91.25,147.567 L101,147.1601 L110.75,148.9027 L120.5,147.5466 L130.25,148.2824 L140,147.0571 L149.75,148.455 L159.5,147.0128 L169.25,148.3039 L179,148.4977 L188.75,148.4149 L198.5,148.1765 L208.25,147.4847 L218,147.9709 L227.75,148 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="183" x="37.75" y="162.2104">history_content_type = 'dataset'</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="17" x="37.75" y="175.0151">hid</text><path d="M32.75,181.6094 L32.75,182.4998 L42.5,181.7904 L52.25,181.2711 L62,181.0246 L71.75,182.6042 L81.5,181.3378 L91.25,181.9365 L101,180.7995 L110.75,181.3627 L120.5,182.5398 L130.25,181.2492 L140,181.6111 L149.75,181.6465 L159.5,180.9274 L169.25,182.3691 L179,182.4833 L188.75,182.1988 L198.5,182.127 L208.25,180.8726 L218,181.6846 L227.75,181.6094 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="235,250,235,249.9688,244.9231,249.7353,254.8462,250.4629,264.7692,250.5117,274.6923,249.5019,284.6154,250.727,294.5385,249.5076,304.4615,250.1173,314.3846,250.693,324.3077,250.5683,334.2308,249.6973,344.1538,249.9644,354.0769,250.3856,364,249.7661,373.9231,250.3043,383.8462,250.565,393.7692,249.5936,403.6923,250.273,413.6154,249.8532,423.5385,249.5762,433.4615,250.111,443.3846,250.6135,453.3077,250.348,463.2308,249.4943,473.1538,250.3716,483.0769,249.9989,493,250,492.4789,250,492.776,260.5156,493.5323,271.0313,493.2699,281.5469,493.618,292.0625,492.8452,302.5781,492.943,313.0938,493,323.6094,493,323.3994,483.0769,324.0583,473.1538,324.2443,463.2308,324.2853,453.3077,323.2571,443.3846,323.3032,433.4615,324.3296,423.5385,323.7441,413.6154,323.3263,403.6923,323.2005,393.7692,323.3085,383.8462,324.039,373.9231,323.8768,364,323.6624,354.0769,323.3952,344.1538,324.3154,334.2308,323.5247,324.3077,322.8901,314.3846,323.2015,304.4615,324.0489,294.5385,324.3572,284.6154,324.1513,274.6923,323.8944,264.7692,323.9745,254.8462,324.0751,244.9231,323.4331,235,323.6094,235.725,323.6094,235.6926,313.0938,234.8373,302.5781,235.6575,292.0625,234.3108,281.5469,235.5689,271.0313,235.1683,260.5156,235,250" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="260.2734,268.0274,259.5202,270.8304,258.3584,273.6823,256.2394,274.6154,254.4975,276.4071,251.933,276.3371,249.8745,277.1306,247.0349,276.2785,243.8277,274.89,241.3272,273.6763,240.1634,270.2587,238.7084,267.8538,239.3935,265.2304,240.0206,262.0237,241.248,260.4111,242.1674,257.3772,245.8778,256.2111,248.1203,255.0358,251.9886,254.5311,254.259,256.1159,256.3758,256.9004,258.7793,258.3205,259.6761,260.1888,260.3554,262.6722,261.1435,266.1788" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M252.9688,271.6406 Q252.3906,271.9375 251.75,272.0859 Q251.1094,272.2344 250.4063,272.2344 Q247.9063,272.2344 246.5859,270.5859 Q245.2656,268.9375 245.2656,265.8125 Q245.2656,262.6875 246.5859,261.0313 Q247.9063,259.375 250.4063,259.375 Q251.1094,259.375 251.7578,259.5313 Q252.4063,259.6875 252.9688,259.9844 L252.9688,262.7031 Q252.3438,262.125 251.75,261.8516 Q251.1563,261.5781 250.5313,261.5781 Q249.1875,261.5781 248.5,262.6484 Q247.8125,263.7188 247.8125,265.8125 Q247.8125,267.9063 248.5,268.9766 Q249.1875,270.0469 250.5313,270.0469 Q251.1563,270.0469 251.75,269.7734 Q252.3438,269.5 252.9688,268.9219 L252.9688,271.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="226" x="264" y="270.1543">HistoryDatasetCollectionAssociation</text><path d="M236,282 L236,281.7986 L245.8462,282.5183 L255.6923,281.0831 L265.5385,281.6905 L275.3846,281.9858 L285.2308,282.505 L295.0769,281.65 L304.9231,281.3117 L314.7692,282.2803 L324.6154,281.2426 L334.4615,282.0251 L344.3077,282.9474 L354.1538,282.435 L364,281.5762 L373.8462,281.1715 L383.6923,282.1753 L393.5385,281.952 L403.3846,281.3137 L413.2308,281.3216 L423.0769,281.2267 L432.9231,281.851 L442.7692,281.9694 L452.6154,282.3766 L462.4615,282.1684 L472.3077,282.4732 L482.1538,281.7824 L492,282 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="242" x="241" y="296.2104">history_content_type = 'dataset_collection'</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="17" x="241" y="309.0151">hid</text><path d="M236,315.6094 L236,316.1244 L245.8462,316.5348 L255.6923,315.053 L265.5385,314.6635 L275.3846,314.7786 L285.2308,315.3009 L295.0769,316.4514 L304.9231,314.6939 L314.7692,316.5393 L324.6154,316.3322 L334.4615,315.6216 L344.3077,314.7635 L354.1538,316.3904 L364,316.5078 L373.8462,315.8558 L383.6923,314.7176 L393.5385,315.9577 L403.3846,315.3694 L413.2308,315.4404 L423.0769,315.7527 L432.9231,315.1686 L442.7692,315.6142 L452.6154,316.2334 L462.4615,314.9883 L472.3077,315.877 L482.1538,316.2161 L492,315.6094 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="31.75,384.5,31.75,384.8449,41.9643,385.0384,52.1786,384.4917,62.3929,385.161,72.6071,383.9267,82.8214,384.016,93.0357,385.1893,103.25,385.1631,113.4643,384.8988,123.6786,384.5659,133.8929,384.409,144.1071,384.1604,154.3214,383.7923,164.5357,384.7429,174.75,384.5,175.2961,384.5,175.4321,394.6341,174.0557,404.7682,174.247,414.9023,174.8551,425.0365,175.2624,435.1706,174.75,445.3047,174.75,445.5235,164.5357,445.2279,154.3214,445.6019,144.1071,445.4774,133.8929,444.8693,123.6786,444.6592,113.4643,444.6231,103.25,445.8887,93.0357,445.1683,82.8214,444.9962,72.6071,444.7661,62.3929,444.8665,52.1786,445.4955,41.9643,445.483,31.75,445.3047,32.2834,445.3047,31.775,435.1706,32.394,425.0365,31.3525,414.9023,31.1977,404.7682,32.4785,394.6341,31.75,384.5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="57.2397,403.4385,55.7373,406.061,55.0569,408.3221,52.8451,409.0354,49.9133,411.2865,47.3073,411.1554,44.1689,411.3108,41.0288,409.3355,38.6285,408.4188,36.3103,405.5816,36.5027,403.071,35.3298,401.2064,35.8096,398.8621,36.8812,395.2305,38.6615,393.0473,41.1783,390.9968,43.2819,390.2501,46.8814,388.9094,48.9926,390.3659,52.7972,390.9013,54.9297,393.652,56.1943,395.7896,57.4862,398.1886,58.1151,400.2012,56.9379,402.9821" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M49.7188,406.1406 Q49.1406,406.4375 48.5,406.5859 Q47.8594,406.7344 47.1563,406.7344 Q44.6563,406.7344 43.3359,405.0859 Q42.0156,403.4375 42.0156,400.3125 Q42.0156,397.1875 43.3359,395.5313 Q44.6563,393.875 47.1563,393.875 Q47.8594,393.875 48.5078,394.0313 Q49.1563,394.1875 49.7188,394.4844 L49.7188,397.2031 Q49.0938,396.625 48.5,396.3516 Q47.9063,396.0781 47.2813,396.0781 Q45.9375,396.0781 45.25,397.1484 Q44.5625,398.2188 44.5625,400.3125 Q44.5625,402.4063 45.25,403.4766 Q45.9375,404.5469 47.2813,404.5469 Q47.9063,404.5469 48.5,404.2734 Q49.0938,404 49.7188,403.4219 L49.7188,406.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="60.75" y="404.6543">DatasetCollection</text><path d="M32.75,416.5 L32.75,417.1957 L42.8214,416.9917 L52.8929,416.1022 L62.9643,416.2845 L73.0357,416.305 L83.1071,415.5652 L93.1786,416.2833 L103.25,416.2508 L113.3214,417.4184 L123.3929,416.4856 L133.4643,416.2552 L143.5357,415.8221 L153.6071,416.3708 L163.6786,416.7772 L173.75,416.5 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="83" x="37.75" y="430.7104">collection_type</text><path d="M32.75,437.3047 L32.75,437.9845 L42.8214,436.6267 L52.8929,437.1788 L62.9643,438.2822 L73.0357,437.2354 L83.1071,437.3351 L93.1786,437.4335 L103.25,437.709 L113.3214,436.9735 L123.3929,437.9038 L133.4643,436.4261 L143.5357,437.023 L153.6071,438.1762 L163.6786,437.8716 L173.75,437.3047 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="6.5,250,6.5,250.1739,16.7105,250.6995,26.9211,250.1759,37.1316,250.3845,47.3421,249.988,57.5526,249.8339,67.7632,250.0443,77.9737,249.9001,88.1842,249.5733,98.3947,249.2815,108.6053,250.2649,118.8158,250.6164,129.0263,250.569,139.2368,250.0928,149.4474,249.956,159.6579,250.1043,169.8684,250.163,180.0789,249.7361,190.2895,249.5297,200.5,250,200.0835,250,201.2211,260.5156,200.4745,271.0313,201.1402,281.5469,200.0054,292.0625,199.9601,302.5781,200.0065,313.0938,200.5,323.6094,200.5,323.0858,190.2895,323.1022,180.0789,322.8912,169.8684,323.2407,159.6579,323.5623,149.4474,323.6987,139.2368,323.5807,129.0263,322.9303,118.8158,323.279,108.6053,323.2871,98.3947,323.2345,88.1842,323.01,77.9737,324.2558,67.7632,323.3992,57.5526,323.5248,47.3421,323.6788,37.1316,323.4177,26.9211,322.956,16.7105,324.2257,6.5,323.6094,6.2171,323.6094,6.9903,313.0938,7.1321,302.5781,7.2121,292.0625,6.9298,281.5469,6.8563,271.0313,7.0283,260.5156,6.5,250" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="32.1476,269.6838,29.7738,272.2127,28.9619,274.9733,25.9254,275.9245,23.575,276.9743,21.021,277.6712,18.9985,276.2721,16.8691,275.6992,14.0023,274.1845,12.7073,272.4173,10.5988,269.6907,9.9076,267.3262,11.0486,263.93,11.8467,261.2407,12.812,258.2386,15.1634,256.529,18.4899,255.671,21.7179,255.1785,23.6326,255.6888,25.5762,255.8668,28.4403,257.6704,30.4307,259.3684,32.002,261.5775,32.9814,263.9989,32.0146,266.2021" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M24.4688,271.6406 Q23.8906,271.9375 23.25,272.0859 Q22.6094,272.2344 21.9063,272.2344 Q19.4063,272.2344 18.0859,270.5859 Q16.7656,268.9375 16.7656,265.8125 Q16.7656,262.6875 18.0859,261.0313 Q19.4063,259.375 21.9063,259.375 Q22.6094,259.375 23.2578,259.5313 Q23.9063,259.6875 24.4688,259.9844 L24.4688,262.7031 Q23.8438,262.125 23.25,261.8516 Q22.6563,261.5781 22.0313,261.5781 Q20.6875,261.5781 20,262.6484 Q19.3125,263.7188 19.3125,265.8125 Q19.3125,267.9063 20,268.9766 Q20.6875,270.0469 22.0313,270.0469 Q22.6563,270.0469 23.25,269.7734 Q23.8438,269.5 24.4688,268.9219 L24.4688,271.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="162" x="35.5" y="270.1543">DatasetCollectionElement</text><path d="M7.5,282 L7.5,281.9986 L17.6053,281.4814 L27.7105,281.8981 L37.8158,281.2602 L47.9211,282.3151 L58.0263,282.1318 L68.1316,281.0822 L78.2368,281.1953 L88.3421,281.8183 L98.4474,282.4217 L108.5526,281.2901 L118.6579,282.9254 L128.7632,282.4091 L138.8684,281.9581 L148.9737,282.8319 L159.0789,282.2959 L169.1842,282.2978 L179.2895,281.1516 L189.3947,281.1454 L199.5,282 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="82" x="12.5" y="296.2104">element_index</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="102" x="12.5" y="309.0151">element_identifier</text><path d="M7.5,315.6094 L7.5,314.8665 L17.6053,315.395 L27.7105,315.6111 L37.8158,316.206 L47.9211,315.9773 L58.0263,315.6835 L68.1316,315.0902 L78.2368,315.4909 L88.3421,316.3206 L98.4474,315.0719 L108.5526,316.6008 L118.6579,314.9146 L128.7632,314.6802 L138.8684,315.59 L148.9737,315.9644 L159.0789,315.9752 L169.1842,315.0302 L179.2895,316.2344 L189.3947,315.3193 L199.5,315.6094 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M212.896,56.227 L212.6412,56.0065 L206.3976,63.609 L200.7264,71.707 L193.2505,78.2428 L187.2881,86.0888 L180.4567,93.1825 L174.731,101.2333 L167.8147,108.2535 L161.407,115.714 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="197.716" y="76.0435">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="157.4889" y="104.81">*</text><path d="M245.089,56.348 L244.609,56.0995 L249.1847,64.9051 L253.6284,73.6424 L259.4082,83.0715 L263.374,91.5613 L267.9172,100.3501 L272.4976,109.1582 L277.8123,118.3465 L280.8227,126.3416 L286.4144,135.6733 L290.2399,144.0905 L295.9415,153.4791 L300.4554,162.2527 L304.7691,170.9227 L309.5787,179.8495 L313.2426,188.1829 L318.0526,197.1099 L323.0711,206.1448 L326.7809,214.5021 L331.9274,223.6033 L336.1743,232.2386 L340.8126,241.0767 L345.266,249.819 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="237.756" y="76.194">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="333.7083" y="238.9311">*</text><path d="M289.208,324.107 L289.2,324.0905 L280.5366,328.9558 L271.188,332.402 L262.2174,336.631 L253.3645,341.104 L244.6717,345.9085 L235.7526,350.2441 L226.5509,353.9945 L217.5973,358.2588 L208.4751,362.1739 L199.8016,367.0185 L190.8067,371.1971 L181.7083,375.1615 L172.9167,379.7613 L164.176,384.4667 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="266.9925" y="343.6053">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="165.4874" y="373.3671">1</text><path d="M114.665,384.2607 L114.4248,384.2393 L114.5947,381.3682 L115.4013,378.5539 L115.3977,375.6673 L115.8253,372.8192 L115.942,369.9434 L115.9129,369.9423 L116.1513,366.8733 L116.1103,363.7944 L116.1588,360.7186 L116.6768,357.6593 L116.4805,354.575 L116.6136,354.5767 L116.4387,351.4622 L116.2753,348.3478 L116.6844,345.2408 L116.3847,342.1247 L116.2802,339.0111 L116.2568,339.0096 L115.836,336.0141 L116.1334,333.0639 L115.7048,330.0679 L115.7264,327.1003 L115.341,324.107 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="106.8078" y="373.3673">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="90.1494" y="343.6053">0..1</text><path d="M91.3443,324.107 L91.4686,324.1144 L91.1609,327.0875 L91.1139,330.076 L90.8095,333.0493 L90.4536,336.0195 L90.4574,339.0111 L90.1783,339.0077 L90.504,342.1249 L90.2919,345.2356 L90.5593,348.3521 L90.092,351.4596 L90.2683,354.575 L90.0893,354.5691 L90.1356,357.6409 L90.5262,360.7242 L90.6636,363.799 L90.4528,366.8623 L90.7768,369.9434 L91.0216,369.964 L90.7845,372.7872 L91.2922,375.6731 L91.3352,378.5198 L91.7409,381.3972 L91.9829,384.2607 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="80.5857" y="343.6053">*</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="80.0853" y="373.3673">1</text><path d="M122.622,190.07 L122.322,190.0086 L120.8488,200.109 L119.243,210.1823 L117.2021,220.1665 L114.094,229.9325 L112.8594,240.0817 L110.369,249.974 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="111.5305" y="209.5621">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="84.3918" y="238.8269">0..1</text></g></svg> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="455px" preserveAspectRatio="none" style="width:504px;height:455px;" version="1.1" viewBox="0 0 504 455" width="504px" zoomAndPan="magnify"><defs><filter height="300%" id="fqeekaxkt8af8" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[7bff1aba3b0d0725284345139f4478e9] +class History--><polygon fill="#FFEFD5" filter="url(#fqeekaxkt8af8)" points="195.5,8,195.5,8.2102,204.875,7.5857,214.25,8.1933,223.625,8.3997,233,7.2866,242.375,7.9223,251.75,7.5735,261.125,7.6165,270.5,8,270.4318,8,269.8086,17.6,271.0536,27.2,269.8697,36.8,270.3022,46.4,270.5,56,270.5,56.4319,261.125,55.9142,251.75,56.0682,242.375,55.9681,233,56.1785,223.625,56.2391,214.25,56.5857,204.875,56.6711,195.5,56,196.1793,56,195.7546,46.4,195.9636,36.8,196.2022,27.2,194.7788,17.6,195.5,8" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="221.5608,26.6756,219.9484,28.8788,218.0412,32.1057,215.3136,34.2804,212.4474,35.4696,210.162,35.5728,207.2247,34.0855,204.4532,33.1139,202.3495,31.1412,201.2461,28.8828,200.5917,27.0845,199.9506,24.7357,198.91,22.7145,199.7096,20.741,200.4102,18.5792,203.0393,16.8695,204.889,14.6511,207.1784,13.9144,209.9001,13.2801,213.3904,13.657,215.3021,14.5585,217.5247,14.9672,220.2272,17.736,221.1693,20.659,221.5786,22.6534,221.115,25.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M213.4688,29.6406 Q212.8906,29.9375 212.25,30.0781 Q211.6094,30.2344 210.9063,30.2344 Q208.4063,30.2344 207.0781,28.5938 Q205.7656,26.9375 205.7656,23.8125 Q205.7656,20.6875 207.0781,19.0313 Q208.4063,17.375 210.9063,17.375 Q211.6094,17.375 212.25,17.5313 Q212.9063,17.6875 213.4688,17.9844 L213.4688,20.7031 Q212.8438,20.125 212.25,19.8594 Q211.6563,19.5781 211.0313,19.5781 Q209.6875,19.5781 209,20.6563 Q208.3125,21.7188 208.3125,23.8125 Q208.3125,25.9063 209,26.9844 Q209.6875,28.0469 211.0313,28.0469 Q211.6563,28.0469 212.25,27.7813 Q212.8438,27.5 213.4688,26.9219 L213.4688,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="43" x="224.5" y="28.1543">History</text><path d="M196.5,40 L196.5,40.2802 L206.9286,39.4476 L217.3571,40.2577 L227.7857,40.5329 L238.2143,39.0488 L248.6429,39.8964 L259.0714,39.4313 L269.5,40 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M196.5,48 L196.5,48.2802 L206.9286,47.4476 L217.3571,48.2577 L227.7857,48.5329 L238.2143,47.0488 L248.6429,47.8964 L259.0714,47.4313 L269.5,48 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[7b84bcf171019e7f7c35d4c599fad13e] +class HistoryDatasetAssociation--><polygon fill="#FFEFD5" filter="url(#fqeekaxkt8af8)" points="58.5,116,58.5,116.2102,68.35,115.5857,78.2,116.1933,88.05,116.3997,97.9,115.2866,107.75,115.9223,117.6,115.5735,127.45,115.6165,137.3,115.9318,147.15,115.3086,157,116.5536,166.85,115.3697,176.7,115.8022,186.55,116.4319,196.4,115.9142,206.25,116.0682,216.1,115.9681,225.95,116.1785,235.8,116.2391,245.65,116.5857,255.5,116,256.1711,116,256.1793,126.5156,255.7546,137.0313,255.9636,147.5469,256.2022,158.0625,254.7788,168.5781,256.1785,179.0938,255.5,189.6094,255.5,189.3129,245.65,190.1432,235.8,189.1144,225.95,189.5409,216.1,190.351,206.25,189.5606,196.4,189.7147,186.55,189.948,176.7,190.0256,166.85,189.6055,157,189.8966,147.15,189.037,137.3,189.8938,127.45,190.1576,117.6,190.0539,107.75,190.2224,97.9,189.1263,88.05,188.9572,78.2,188.988,68.35,189.5505,58.5,189.6094,58.3035,189.6094,59.1814,179.0938,58.3253,168.5781,58.1569,158.0625,58.7283,147.5469,57.8332,137.0313,57.9809,126.5156,58.5,116" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="84.5608,134.6756,82.9484,136.8788,81.0412,140.1057,78.3136,142.2804,75.4474,143.4696,73.162,143.5728,70.2247,142.0855,67.4532,141.1139,65.3495,139.1412,64.2461,136.8828,63.5917,135.0845,62.9506,132.7357,61.91,130.7145,62.7096,128.741,63.4102,126.5792,66.0393,124.8695,67.889,122.6511,70.1784,121.9144,72.9001,121.2801,76.3904,121.657,78.3021,122.5585,80.5247,122.9672,83.2272,125.736,84.1693,128.659,84.5786,130.6534,84.115,133.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M76.4688,137.6406 Q75.8906,137.9375 75.25,138.0781 Q74.6094,138.2344 73.9063,138.2344 Q71.4063,138.2344 70.0781,136.5938 Q68.7656,134.9375 68.7656,131.8125 Q68.7656,128.6875 70.0781,127.0313 Q71.4063,125.375 73.9063,125.375 Q74.6094,125.375 75.25,125.5313 Q75.9063,125.6875 76.4688,125.9844 L76.4688,128.7031 Q75.8438,128.125 75.25,127.8594 Q74.6563,127.5781 74.0313,127.5781 Q72.6875,127.5781 72,128.6563 Q71.3125,129.7188 71.3125,131.8125 Q71.3125,133.9063 72,134.9844 Q72.6875,136.0469 74.0313,136.0469 Q74.6563,136.0469 75.25,135.7813 Q75.8438,135.5 76.4688,134.9219 L76.4688,137.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="165" x="87.5" y="136.1543">HistoryDatasetAssociation</text><path d="M59.5,148 L59.5,148.2802 L69.25,147.4476 L79,148.2577 L88.75,148.5329 L98.5,147.0488 L108.25,147.8964 L118,147.4313 L127.75,147.4887 L137.5,147.9091 L147.25,147.0782 L157,148.7382 L166.75,147.1596 L176.5,147.7363 L186.25,148.5759 L196,147.8856 L205.75,148.091 L215.5,147.9574 L225.25,148.238 L235,148.3188 L244.75,148.7809 L254.5,148 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="183" x="64.5" y="162.2104">history_content_type = 'dataset'</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="17" x="64.5" y="175.0151">hid</text><path d="M59.5,181.6094 L59.5,181.8896 L69.25,181.0569 L79,181.8671 L88.75,182.1423 L98.5,180.6582 L108.25,181.5058 L118,181.0407 L127.75,181.098 L137.5,181.5185 L147.25,180.6875 L157,182.3476 L166.75,180.769 L176.5,181.3457 L186.25,182.1853 L196,181.495 L205.75,181.7004 L215.5,181.5668 L225.25,181.8474 L235,181.9282 L244.75,182.3903 L254.5,181.6094 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[37441402867f62f923c85f944d1b1cef] +class HistoryDatasetCollectionAssociation--><polygon fill="#FFEFD5" filter="url(#fqeekaxkt8af8)" points="235,250,235,250.2102,244.9231,249.5857,254.8462,250.1933,264.7692,250.3997,274.6923,249.2866,284.6154,249.9223,294.5385,249.5735,304.4615,249.6165,314.3846,249.9318,324.3077,249.3086,334.2308,250.5536,344.1538,249.3697,354.0769,249.8022,364,250.4319,373.9231,249.9142,383.8462,250.0682,393.7692,249.9681,403.6923,250.1785,413.6154,250.2391,423.5385,250.5857,433.4615,250.6711,443.3846,250.6793,453.3077,250.2546,463.2308,250.4636,473.1538,250.7022,483.0769,249.2788,493,250,493.6785,250,492.7035,260.5156,493.5338,271.0313,492.505,281.5469,492.9315,292.0625,493.7416,302.5781,492.9513,313.0938,493,323.6094,493,323.7147,483.0769,323.948,473.1538,324.0256,463.2308,323.6055,453.3077,323.8966,443.3846,323.037,433.4615,323.8938,423.5385,324.1576,413.6154,324.0539,403.6923,324.2224,393.7692,323.1263,383.8462,322.9572,373.9231,322.988,364,323.5505,354.0769,323.4128,344.1538,324.2908,334.2308,323.4347,324.3077,323.2663,314.3846,323.8376,304.4615,322.9425,294.5385,323.0902,284.6154,324.2583,274.6923,324.045,264.7692,324.3439,254.8462,323.2876,244.9231,323.9286,235,323.6094,235.5904,323.6094,234.5276,313.0938,234.9041,302.5781,235.126,292.0625,235.6518,281.5469,234.9958,271.0313,235.4626,260.5156,235,250" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="261.0608,268.6756,259.4484,270.8788,257.5412,274.1057,254.8136,276.2804,251.9474,277.4696,249.662,277.5728,246.7247,276.0855,243.9532,275.1139,241.8495,273.1412,240.7461,270.8828,240.0917,269.0845,239.4506,266.7357,238.41,264.7145,239.2096,262.741,239.9102,260.5792,242.5393,258.8695,244.389,256.6511,246.6784,255.9144,249.4001,255.2801,252.8904,255.657,254.8021,256.5585,257.0247,256.9672,259.7272,259.736,260.6693,262.659,261.0786,264.6534,260.615,267.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M252.9688,271.6406 Q252.3906,271.9375 251.75,272.0781 Q251.1094,272.2344 250.4063,272.2344 Q247.9063,272.2344 246.5781,270.5938 Q245.2656,268.9375 245.2656,265.8125 Q245.2656,262.6875 246.5781,261.0313 Q247.9063,259.375 250.4063,259.375 Q251.1094,259.375 251.75,259.5313 Q252.4063,259.6875 252.9688,259.9844 L252.9688,262.7031 Q252.3438,262.125 251.75,261.8594 Q251.1563,261.5781 250.5313,261.5781 Q249.1875,261.5781 248.5,262.6563 Q247.8125,263.7188 247.8125,265.8125 Q247.8125,267.9063 248.5,268.9844 Q249.1875,270.0469 250.5313,270.0469 Q251.1563,270.0469 251.75,269.7813 Q252.3438,269.5 252.9688,268.9219 L252.9688,271.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="226" x="264" y="270.1543">HistoryDatasetCollectionAssociation</text><path d="M236,282 L236,282.2802 L245.8462,281.4476 L255.6923,282.2577 L265.5385,282.5329 L275.3846,281.0488 L285.2308,281.8964 L295.0769,281.4313 L304.9231,281.4887 L314.7692,281.9091 L324.6154,281.0782 L334.4615,282.7382 L344.3077,281.1596 L354.1538,281.7363 L364,282.5759 L373.8462,281.8856 L383.6923,282.091 L393.5385,281.9574 L403.3846,282.238 L413.2308,282.3188 L423.0769,282.7809 L432.9231,282.8947 L442.7692,282.9057 L452.6154,282.3395 L462.4615,282.6181 L472.3077,282.9363 L482.1538,281.0384 L492,282 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="242" x="241" y="296.2104">history_content_type = 'dataset_collection'</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="17" x="241" y="309.0151">hid</text><path d="M236,315.6094 L236,315.8896 L245.8462,315.0569 L255.6923,315.8671 L265.5385,316.1423 L275.3846,314.6582 L285.2308,315.5058 L295.0769,315.0407 L304.9231,315.098 L314.7692,315.5185 L324.6154,314.6875 L334.4615,316.3476 L344.3077,314.769 L354.1538,315.3457 L364,316.1853 L373.8462,315.495 L383.6923,315.7004 L393.5385,315.5668 L403.3846,315.8474 L413.2308,315.9282 L423.0769,316.3903 L432.9231,316.5041 L442.7692,316.5151 L452.6154,315.9489 L462.4615,316.2275 L472.3077,316.5457 L482.1538,314.6478 L492,315.6094 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[270016c7dc7a1592644a870f4d066092] +class DatasetCollection--><polygon fill="#FFEFD5" filter="url(#fqeekaxkt8af8)" points="31.5,384,31.5,384.2102,41.7143,383.5857,51.9286,384.1933,62.1429,384.3997,72.3571,383.2866,82.5714,383.9223,92.7857,383.5735,103,383.6165,113.2143,383.9318,123.4286,383.3086,133.6429,384.5536,143.8571,383.3697,154.0714,383.8022,164.2857,384.4319,174.5,384,174.4142,384,174.5682,394.1341,174.4681,404.2682,174.6785,414.4023,174.7391,424.5365,175.0857,434.6706,174.5,444.8047,174.5,445.4757,164.2857,445.4839,154.0714,445.0593,143.8571,445.2683,133.6429,445.5069,123.4286,444.0835,113.2143,445.4832,103,444.5082,92.7857,445.3385,82.5714,444.3097,72.3571,444.7362,62.1429,445.5463,51.9286,444.756,41.7143,444.91,31.5,444.8047,31.8386,444.8047,31.9162,434.6706,31.4961,424.5365,31.7872,414.4023,30.9276,404.2682,31.7844,394.1341,31.5,384" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="57.5608,402.6756,55.9484,404.8788,54.0412,408.1057,51.3136,410.2804,48.4474,411.4696,46.162,411.5728,43.2247,410.0855,40.4532,409.1139,38.3495,407.1412,37.2461,404.8828,36.5917,403.0845,35.9506,400.7357,34.91,398.7145,35.7096,396.741,36.4102,394.5792,39.0393,392.8695,40.889,390.6511,43.1784,389.9144,45.9001,389.2801,49.3904,389.657,51.3021,390.5585,53.5247,390.9672,56.2272,393.736,57.1693,396.659,57.5786,398.6534,57.115,401.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M49.4688,405.6406 Q48.8906,405.9375 48.25,406.0781 Q47.6094,406.2344 46.9063,406.2344 Q44.4063,406.2344 43.0781,404.5938 Q41.7656,402.9375 41.7656,399.8125 Q41.7656,396.6875 43.0781,395.0313 Q44.4063,393.375 46.9063,393.375 Q47.6094,393.375 48.25,393.5313 Q48.9063,393.6875 49.4688,393.9844 L49.4688,396.7031 Q48.8438,396.125 48.25,395.8594 Q47.6563,395.5781 47.0313,395.5781 Q45.6875,395.5781 45,396.6563 Q44.3125,397.7188 44.3125,399.8125 Q44.3125,401.9063 45,402.9844 Q45.6875,404.0469 47.0313,404.0469 Q47.6563,404.0469 48.25,403.7813 Q48.8438,403.5 49.4688,402.9219 L49.4688,405.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="60.5" y="404.1543">DatasetCollection</text><path d="M32.5,416 L32.5,416.2802 L42.5714,415.4476 L52.6429,416.2577 L62.7143,416.5329 L72.7857,415.0488 L82.8571,415.8964 L92.9286,415.4313 L103,415.4887 L113.0714,415.9091 L123.1429,415.0782 L133.2143,416.7382 L143.2857,415.1596 L153.3571,415.7363 L163.4286,416.5759 L173.5,416 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="83" x="37.5" y="430.2104">collection_type</text><path d="M32.5,436.8047 L32.5,437.0849 L42.5714,436.2523 L52.6429,437.0624 L62.7143,437.3376 L72.7857,435.8535 L82.8571,436.7011 L92.9286,436.236 L103,436.2934 L113.0714,436.7138 L123.1429,435.8829 L133.2143,437.5429 L143.2857,435.9643 L153.3571,436.541 L163.4286,437.3806 L173.5,436.8047 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[a9f0803c51d343742747671fc57419cc] +class DatasetCollectionElement--><polygon fill="#FFEFD5" filter="url(#fqeekaxkt8af8)" points="6,250,6,250.2102,16.2105,249.5857,26.4211,250.1933,36.6316,250.3997,46.8421,249.2866,57.0526,249.9223,67.2632,249.5735,77.4737,249.6165,87.6842,249.9318,97.8947,249.3086,108.1053,250.5536,118.3158,249.3697,128.5263,249.8022,138.7368,250.4319,148.9474,249.9142,159.1579,250.0682,169.3684,249.9681,179.5789,250.1785,189.7895,250.2391,200,250,200.5857,250,200.6711,260.5156,200.6793,271.0313,200.2546,281.5469,200.4636,292.0625,200.7022,302.5781,199.2788,313.0938,200,323.6094,200,324.2879,189.7895,323.3129,179.5789,324.1432,169.3684,323.1144,159.1579,323.5409,148.9474,324.351,138.7368,323.5606,128.5263,323.7147,118.3158,323.948,108.1053,324.0256,97.8947,323.6055,87.6842,323.8966,77.4737,323.037,67.2632,323.8938,57.0526,324.1576,46.8421,324.0539,36.6316,324.2224,26.4211,323.1263,16.2105,322.9572,6,323.6094,5.3786,323.6094,5.9411,313.0938,5.8035,302.5781,6.6814,292.0625,5.8253,281.5469,5.6569,271.0313,6.2283,260.5156,6,250" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="32.0608,268.6756,30.4484,270.8788,28.5412,274.1057,25.8136,276.2804,22.9474,277.4696,20.662,277.5728,17.7247,276.0855,14.9532,275.1139,12.8495,273.1412,11.7461,270.8828,11.0917,269.0845,10.4506,266.7357,9.41,264.7145,10.2096,262.741,10.9102,260.5792,13.5393,258.8695,15.389,256.6511,17.6784,255.9144,20.4001,255.2801,23.8904,255.657,25.8021,256.5585,28.0247,256.9672,30.7272,259.736,31.6693,262.659,32.0786,264.6534,31.615,267.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M23.9688,271.6406 Q23.3906,271.9375 22.75,272.0781 Q22.1094,272.2344 21.4063,272.2344 Q18.9063,272.2344 17.5781,270.5938 Q16.2656,268.9375 16.2656,265.8125 Q16.2656,262.6875 17.5781,261.0313 Q18.9063,259.375 21.4063,259.375 Q22.1094,259.375 22.75,259.5313 Q23.4063,259.6875 23.9688,259.9844 L23.9688,262.7031 Q23.3438,262.125 22.75,261.8594 Q22.1563,261.5781 21.5313,261.5781 Q20.1875,261.5781 19.5,262.6563 Q18.8125,263.7188 18.8125,265.8125 Q18.8125,267.9063 19.5,268.9844 Q20.1875,270.0469 21.5313,270.0469 Q22.1563,270.0469 22.75,269.7813 Q23.3438,269.5 23.9688,268.9219 L23.9688,271.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="162" x="35" y="270.1543">DatasetCollectionElement</text><path d="M7,282 L7,282.2802 L17.1053,281.4476 L27.2105,282.2577 L37.3158,282.5329 L47.4211,281.0488 L57.5263,281.8964 L67.6316,281.4313 L77.7368,281.4887 L87.8421,281.9091 L97.9474,281.0782 L108.0526,282.7382 L118.1579,281.1596 L128.2632,281.7363 L138.3684,282.5759 L148.4737,281.8856 L158.5789,282.091 L168.6842,281.9574 L178.7895,282.238 L188.8947,282.3188 L199,282 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="82" x="12" y="296.2104">element_index</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="102" x="12" y="309.0151">element_identifier</text><path d="M7,315.6094 L7,315.8896 L17.1053,315.0569 L27.2105,315.8671 L37.3158,316.1423 L47.4211,314.6582 L57.5263,315.5058 L67.6316,315.0407 L77.7368,315.098 L87.8421,315.5185 L97.9474,314.6875 L108.0526,316.3476 L118.1579,314.769 L128.2632,315.3457 L138.3684,316.1853 L148.4737,315.495 L158.5789,315.7004 L168.6842,315.5668 L178.7895,315.8474 L188.8947,315.9282 L199,315.6094 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[5bb02898de190b324c01a8e194be7498] +link History to HistoryDatasetAssociation--><path d="M217.8029,56.1953 L218.0402,56.3444 L211.9715,64.4409 L207.2939,73.4113 L202.1633,82.0972 L195.5429,89.8473 L190.897,98.8375 L185.1396,107.1297 L180.2575,115.9716 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="205.1236" y="76.0041">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="176.9003" y="104.8768">*</text><!--MD5=[66d920cafa1df0cac56610600b0e53c9] +link History to HistoryDatasetCollectionAssociation--><path d="M245.5608,56.4505 L245.8101,56.5786 L249.5884,64.9945 L254.8279,74.1611 L259.5917,83.0833 L262.7905,91.2016 L268.0634,100.3853 L272.1687,108.9692 L276.7386,117.7918 L281.6316,126.7804 L285.4114,135.1971 L291.4069,144.7521 L294.5217,152.8272 L299.5537,161.8871 L304.8194,171.0672 L308.7244,179.5482 L313.426,188.4385 L317.8261,197.1739 L322.5947,206.0985 L327.1855,214.9319 L332.1155,223.9395 L336.7357,232.7879 L341.2643,241.5893 L344.9777,249.9719 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="239.5405" y="75.9213">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="333.8252" y="238.8772">*</text><!--MD5=[64a092a6960e3b0910586650afa2b48b] +link HistoryDatasetCollectionAssociation to DatasetCollection--><path d="M288.1574,324.0495 L288.2804,324.3013 L279.1768,327.8218 L270.7942,332.8183 L262.1769,337.3342 L252.7873,340.2694 L244.4212,345.2996 L235.479,349.1504 L226.766,353.4705 L218.2124,358.1169 L209.1096,361.6389 L201.1001,367.3991 L191.669,370.2494 L183.184,375.0362 L174.8144,380.0592 L165.8235,383.8104 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="266.9335" y="343.5383">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="169.9558" y="373.0345">1</text><!--MD5=[3aa3f5fa48721bc1d5aa33fbac1bf17d] +link DatasetCollection to DatasetCollectionElement--><path d="M114.7266,383.8909 L114.8197,383.899 L114.7892,381.0308 L115.3044,378.2099 L115.6419,375.3735 L115.3951,372.4867 L115.9571,369.6698 L115.9225,369.6686 L115.8722,366.618 L115.9958,363.5734 L116.2405,360.5329 L116.0682,357.4781 L116.4799,354.4434 L116.7259,354.4463 L116.1628,351.356 L116.318,348.2743 L116.5609,345.1936 L116.2938,342.1068 L116.2949,339.0232 L116.3252,339.0251 L116.1022,336.0619 L116.0171,333.1071 L115.8654,330.1483 L115.8407,327.1971 L115.4023,324.221 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="108.3202" y="373.1316">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="91.4689" y="343.7382">0..1</text><!--MD5=[93aa9aba6bed80368897bb7578567f5b] +link DatasetCollectionElement to DatasetCollection--><path d="M91.2868,324.221 L91.3801,324.2263 L90.9343,327.171 L91.0353,330.1468 L90.9583,333.1124 L90.2958,336.0448 L90.4437,339.0232 L90.4092,339.0229 L90.2192,342.1051 L90.2034,345.1894 L90.3086,348.275 L89.9967,351.3559 L90.2691,354.4434 L90.515,354.4513 L90.0878,357.4796 L90.3787,360.5311 L90.7572,363.5854 L90.6259,366.6233 L90.7628,369.6698 L90.793,369.6722 L90.981,372.5128 L91.3067,375.3647 L91.566,378.2111 L91.9519,381.0679 L91.9249,383.8909 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="81.7671" y="343.7382">*</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="80.8157" y="373.1316">1</text><!--MD5=[e2ac5d81578e22fb6db145c761a0a5cb] +link HistoryDatasetAssociation to DatasetCollectionElement--><path d="M141.958,190.3265 L142.2179,190.4312 L137.4462,200.0445 L134.1981,210.2719 L130.4539,220.2993 L125.078,229.6691 L121.8646,239.9104 L117.9613,249.8737 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="130.9232" y="209.5793">1</text><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="94.4888" y="239.0382">0..1</text><!--MD5=[17aa7d739b188159b4aa760040cee9ea] +@startuml + + +!include plantuml_options.txt + +class History +class HistoryDatasetAssociation { + history_content_type = 'dataset' + hid +} +class HistoryDatasetCollectionAssociation { + history_content_type = 'dataset_collection' + hid +} +class DatasetCollection { + collection_type +} +class DatasetCollectionElement { + element_index + element_identifier +} + +History "1" - - "*" HistoryDatasetAssociation +History "1" - - "*" HistoryDatasetCollectionAssociation +HistoryDatasetCollectionAssociation "1" - - "1" DatasetCollection +DatasetCollection "1" - - "0..1" DatasetCollectionElement +DatasetCollectionElement "*" - - "1" DatasetCollection +HistoryDatasetAssociation "1" - - "0..1" DatasetCollectionElement + +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +class History +class HistoryDatasetAssociation { + history_content_type = 'dataset' + hid +} +class HistoryDatasetCollectionAssociation { + history_content_type = 'dataset_collection' + hid +} +class DatasetCollection { + collection_type +} +class DatasetCollectionElement { + element_index + element_identifier +} + +History "1" - - "*" HistoryDatasetAssociation +History "1" - - "*" HistoryDatasetCollectionAssociation +HistoryDatasetCollectionAssociation "1" - - "1" DatasetCollection +DatasetCollection "1" - - "0..1" DatasetCollectionElement +DatasetCollectionElement "*" - - "1" DatasetCollection +HistoryDatasetAssociation "1" - - "0..1" DatasetCollectionElement + +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/hda_hdca.plantuml.txt b/topics/dev/images/hda_hdca.plantuml.txt new file mode 100644 index 00000000000000..facb8bf401edb8 --- /dev/null +++ b/topics/dev/images/hda_hdca.plantuml.txt @@ -0,0 +1,29 @@ +@startuml + +!include plantuml_options.txt + +class History +class HistoryDatasetAssociation { + history_content_type = 'dataset' + hid +} +class HistoryDatasetCollectionAssociation { + history_content_type = 'dataset_collection' + hid +} +class DatasetCollection { + collection_type +} +class DatasetCollectionElement { + element_index + element_identifier +} + +History "1" -- "*" HistoryDatasetAssociation +History "1" -- "*" HistoryDatasetCollectionAssociation +HistoryDatasetCollectionAssociation "1" -- "1" DatasetCollection +DatasetCollection "1" -- "0..1" DatasetCollectionElement +DatasetCollectionElement "*" -- "1" DatasetCollection +HistoryDatasetAssociation "1" -- "0..1" DatasetCollectionElement + +@enduml \ No newline at end of file diff --git a/topics/dev/images/objectstore.plantuml.svg b/topics/dev/images/objectstore.plantuml.svg index 6a52eea244520b..13ae2723e56507 100644 --- a/topics/dev/images/objectstore.plantuml.svg +++ b/topics/dev/images/objectstore.plantuml.svg @@ -1 +1,114 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="397px" style="width:583px;height:397px;" version="1.1" viewBox="0 0 583 397" width="583px"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f1)" points="189.25,8.5,189.25,8.7636,199.5,8.3495,209.75,9.0042,220,9.1857,230.25,9.2319,240.5,8.0312,250.75,8.5993,261,8.5299,271.25,8.8703,281.5,8.024,291.75,8.8242,302,8.7817,312.25,9.0131,322.5,8.3954,332.75,7.926,343,9.2318,353.25,8.5,353.3064,8.5,353.242,18.7026,353.836,28.9053,352.8241,39.1079,353.5263,49.3105,352.5096,59.5132,353.7234,69.7158,352.6916,79.9185,352.8498,90.1211,353.6361,100.3237,352.7219,110.5264,352.9757,120.729,353.5526,130.9316,352.9504,141.1343,353.9882,151.3369,353.8957,161.5396,353.25,171.7422,353.25,171.8629,343,171.7419,332.75,171.609,322.5,171.6756,312.25,171.3493,302,172.4098,291.75,171.371,281.5,172.3463,271.25,171.9758,261,171.8277,250.75,171.2669,240.5,171.3324,230.25,171.4785,220,171.1822,209.75,171.984,199.5,172.2678,189.25,171.7422,189.7821,171.7422,189.8254,161.5396,189.2843,151.3369,189.432,141.1343,188.9345,130.9316,189.2946,120.729,189.3009,110.5264,189.2242,100.3237,189.6347,90.1211,189.2151,79.9185,189.4691,69.7158,189.3209,59.5132,189.9697,49.3105,188.9486,39.1079,189.7081,28.9053,188.7224,18.7026,189.25,8.5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#A9DCDF" points="241.0955,27.7205,240.201,29.3913,239.7486,31.726,237.3439,32.896,234.4067,34.6186,231.3502,35.6733,227.5294,35.1522,224.4455,33.1255,221.7334,30.6636,220.768,27.5232,220.2979,25.4937,219.6533,23.4376,220.2428,19.9091,222.4624,17.2392,225.2018,14.7014,227.8428,13.7127,230.2099,13.6706,232.3834,13.3139,234.199,14.2048,236.2183,15.6717,238.6417,16.3433,240.2326,19.5933,241.659,22.1618,241.1357,25.3025" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M230.9094,19.8438 L229.7531,24.9219 L232.0813,24.9219 L230.9094,19.8438 Z M229.425,17.6094 L232.4094,17.6094 L235.7688,30 L233.3156,30 L232.55,26.9375 L229.2688,26.9375 L228.5188,30 L226.0813,30 L229.425,17.6094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="250.7" y="28.6543">ObjectStore</text><path d="M190.25,40.5 L190.25,39.7184 L200.375,39.7849 L210.5,41.1403 L220.625,39.544 L230.75,40.0222 L240.875,40.6807 L251,40.4167 L261.125,39.5043 L271.25,39.6899 L281.375,40.8507 L291.5,40.3386 L301.625,39.5912 L311.75,41.3866 L321.875,40.8686 L332,40.3592 L342.125,40.4784 L352.25,40.5 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M190.25,48.5 L190.25,47.8692 L200.375,48.9279 L210.5,47.6657 L220.625,49.143 L230.75,47.7307 L240.875,48.475 L251,49.2382 L261.125,47.7127 L271.25,48.486 L281.375,49.1075 L291.5,48.2981 L301.625,48.0219 L311.75,48.8686 L321.875,48.5348 L332,49.0541 L342.125,49.1724 L352.25,48.5 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="59" x="195.25" y="62.7104">exists(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="80" x="195.25" y="75.5151">file_ready(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="195.25" y="88.3198">create(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="195.25" y="101.1245">size(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="60" x="195.25" y="113.9292">delete(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="195.25" y="126.7339">get_data(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="195.25" y="139.5386">get_filename(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="195.25" y="152.3433">update_from_file(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="152" x="195.25" y="165.1479">get_store_usage_percent()</text><polygon fill="#FFEFD5" filter="url(#f1)" points="20.25,232,20.25,232.4823,30.4038,232.097,40.5577,231.6662,50.7115,232.258,60.8654,231.3315,71.0192,231.4492,81.1731,231.853,91.3269,232.7426,101.4808,232.588,111.6346,232.1904,121.7885,231.2991,131.9423,231.5341,142.0962,232.38,152.25,232,152.4135,232,152.634,241.6,152.4032,251.2,151.7778,260.8,152.0636,270.4,152.25,280,152.25,280.0136,142.0962,279.7713,131.9423,280.4075,121.7885,279.7022,111.6346,279.9943,101.4808,279.461,91.3269,280.0545,81.1731,280.0022,71.0192,280.5047,60.8654,280.348,50.7115,280.2095,40.5577,280.4029,30.4038,280.2094,20.25,280,20.2795,280,20.0843,270.4,19.6513,260.8,19.7345,251.2,20.0873,241.6,20.25,232" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="45.6328,251.7335,43.7611,254.3084,41.6138,256.4176,39.2507,258.3278,36.1645,259.0324,33.5406,258.227,30.646,258.2568,27.1964,256.3422,25.5801,254.5524,25.5268,251.9991,24.9996,249.4454,24.8452,245.9324,25.2045,243.2558,26.2719,240.5684,28.7519,239.3656,31.5662,238.0326,34.4093,236.577,37.4453,236.6017,39.1934,238.4667,42.4032,239.7676,44.8888,241.6303,45.1003,243.8866,46.115,247.1749,46.0309,250.6962" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M38.2188,253.6406 Q37.6406,253.9375 37,254.0859 Q36.3594,254.2344 35.6563,254.2344 Q33.1563,254.2344 31.8359,252.5859 Q30.5156,250.9375 30.5156,247.8125 Q30.5156,244.6875 31.8359,243.0313 Q33.1563,241.375 35.6563,241.375 Q36.3594,241.375 37.0078,241.5313 Q37.6563,241.6875 38.2188,241.9844 L38.2188,244.7031 Q37.5938,244.125 37,243.8516 Q36.4063,243.5781 35.7813,243.5781 Q34.4375,243.5781 33.75,244.6484 Q33.0625,245.7188 33.0625,247.8125 Q33.0625,249.9063 33.75,250.9766 Q34.4375,252.0469 35.7813,252.0469 Q36.4063,252.0469 37,251.7734 Q37.5938,251.5 38.2188,250.9219 L38.2188,253.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="49.25" y="252.1543">DiskObjectStore</text><path d="M21.25,264 L21.25,264.1476 L31.25,264.2937 L41.25,263.7824 L51.25,263.0759 L61.25,264.6421 L71.25,264.2648 L81.25,263.6601 L91.25,263.2939 L101.25,263.3124 L111.25,263.0363 L121.25,264.4679 L131.25,264.6285 L141.25,263.2903 L151.25,264 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M21.25,272 L21.25,272.0291 L31.25,272.3168 L41.25,271.5533 L51.25,272.6656 L61.25,272.7512 L71.25,272.913 L81.25,272.3923 L91.25,271.3564 L101.25,271.0918 L111.25,272.4043 L121.25,272.5938 L131.25,271.9668 L141.25,272.9489 L151.25,272 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="197,232,197,232.5104,206.9333,232.0495,216.8667,231.4436,226.8,231.5138,236.7333,232.2874,246.6667,232.4322,256.6,232.3602,266.5333,232.4943,276.4667,232.7294,286.4,231.8939,296.3333,232.6542,306.2667,232.579,316.2,232.5477,326.1333,232.4852,336.0667,231.3523,346,232,345.6952,232,346.4057,241.6,345.5255,251.2,346.4719,260.8,345.402,270.4,346,280,346,279.776,336.0667,280.5032,326.1333,279.5374,316.2,280.2819,306.2667,279.8862,296.3333,280.2868,286.4,279.9137,276.4667,279.402,266.5333,280.2794,256.6,280.5704,246.6667,279.8361,236.7333,280.4348,226.8,279.5564,216.8667,280.1745,206.9333,279.5329,197,280,197.2674,280,197.478,270.4,197.7259,260.8,197.6737,251.2,197.6157,241.6,197,232" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#A9DCDF" points="222.6956,251.1309,221.9781,253.9858,219.6257,256.851,217.0414,257.2778,214.4575,258.8978,211.7395,259.4268,208.0632,258.7332,206.2617,257.8416,204.7921,256.0252,202.4533,253.9665,202.2292,251.8577,200.6154,250.2541,201.6487,246.827,201.7918,243.4744,203.7367,240.6297,206.827,239.0069,208.6643,237.3294,211.4576,237.6563,213.4601,237.394,215.9202,237.5356,217.7015,238.5244,220.0957,239.7142,221.309,243.4522,222.8622,245.5615,223.4936,248.048" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M212.1094,243.3438 L210.9531,248.4219 L213.2813,248.4219 L212.1094,243.3438 Z M210.625,241.1094 L213.6094,241.1094 L216.9688,253.5 L214.5156,253.5 L213.75,250.4375 L210.4688,250.4375 L209.7188,253.5 L207.2813,253.5 L210.625,241.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="117" x="226" y="252.1543">NestedObjectStore</text><path d="M198,264 L198,264.367 L207.8,263.7899 L217.6,263.8292 L227.4,264.202 L237.2,263.1319 L247,263.7383 L256.8,264.5797 L266.6,264.6203 L276.4,264.0443 L286.2,263.6012 L296,264.572 L305.8,263.4463 L315.6,264.5754 L325.4,263.8738 L335.2,264.9954 L345,264 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M198,272 L198,271.0806 L207.8,271.7446 L217.6,272.0989 L227.4,272.2845 L237.2,271.4525 L247,271.8586 L256.8,271.1912 L266.6,271.6522 L276.4,272.8939 L286.2,271.9298 L296,271.881 L305.8,271.4036 L315.6,272.1124 L325.4,272.0916 L335.2,271.2387 L345,272 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="381.25,232,381.25,231.6792,391.4167,232.309,401.5833,232.4802,411.75,232.6398,421.9167,232.1533,432.0833,231.3548,442.25,232.0588,452.4167,231.8338,462.5833,231.8702,472.75,232.0725,482.9167,231.7919,493.0833,232.6377,503.25,232,502.7225,232,503.518,241.6,503.2955,251.2,503.5402,260.8,503.4849,270.4,503.25,280,503.25,279.68,493.0833,280.0772,482.9167,280.4899,472.75,279.56,462.5833,279.5668,452.4167,279.6039,442.25,279.818,432.0833,279.419,421.9167,279.5261,411.75,279.9323,401.5833,280.6637,391.4167,279.3794,381.25,280,381.5159,280,381.4411,270.4,381.2061,260.8,380.9884,251.2,381.5829,241.6,381.25,232" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="407.1832,250.1741,406.6697,252.0605,405.3861,253.7753,403.0792,256.4882,401.3918,257.447,399.4001,257.8637,395.8392,259.5085,393.3959,258.1045,390.9526,256.9641,389.1898,256.1758,387.6329,254.8367,385.8467,251.7572,385.4319,249.243,385.6309,246.7761,386.866,243.3635,388.1551,241.4716,389.5284,240.1497,392.2312,237.7692,394.4216,236.461,396.6397,237.0059,399.0555,236.8804,401.4413,237.9266,404.4205,239.9289,405.2495,242.5283,406.2886,244.3787,407.2101,246.5395,407.9042,248.5232" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M399.2188,253.6406 Q398.6406,253.9375 398,254.0859 Q397.3594,254.2344 396.6563,254.2344 Q394.1563,254.2344 392.8359,252.5859 Q391.5156,250.9375 391.5156,247.8125 Q391.5156,244.6875 392.8359,243.0313 Q394.1563,241.375 396.6563,241.375 Q397.3594,241.375 398.0078,241.5313 Q398.6563,241.6875 399.2188,241.9844 L399.2188,244.7031 Q398.5938,244.125 398,243.8516 Q397.4063,243.5781 396.7813,243.5781 Q395.4375,243.5781 394.75,244.6484 Q394.0625,245.7188 394.0625,247.8125 Q394.0625,249.9063 394.75,250.9766 Q395.4375,252.0469 396.7813,252.0469 Q397.4063,252.0469 398,251.7734 Q398.5938,251.5 399.2188,250.9219 L399.2188,253.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="410.25" y="252.1543">S3ObjectStore</text><path d="M382.25,264 L382.25,264.8603 L392.25,264.7389 L402.25,264.9395 L412.25,264.6076 L422.25,263.8047 L432.25,264.7435 L442.25,263.4964 L452.25,264.8975 L462.25,264.8755 L472.25,264.5733 L482.25,263.7248 L492.25,263.2777 L502.25,264 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M382.25,272 L382.25,271.4071 L392.25,272.8881 L402.25,272.9869 L412.25,272.9869 L422.25,271.147 L432.25,272.6675 L442.25,272.1995 L452.25,271.2639 L462.25,272.6456 L472.25,272.3647 L482.25,271.7157 L492.25,272.7918 L502.25,272 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="6,340,6,340.1528,16.2143,340.4268,26.4286,339.8188,36.6429,339.7401,46.8571,340.1106,57.0714,340.683,67.2857,340.2642,77.5,340.597,87.7143,340.4964,97.9286,340.7177,108.1429,339.3526,118.3571,339.8032,128.5714,340.2457,138.7857,340.5988,149,340,148.4859,340,149.6867,349.6,149.6265,359.2,148.9353,368.8,149.227,378.4,149,388,149,388.5149,138.7857,387.3584,128.5714,388.5435,118.3571,388.2995,108.1429,388.398,97.9286,387.668,87.7143,388.0171,77.5,387.9739,67.2857,387.6237,57.0714,388.6333,46.8571,387.3572,36.6429,387.4328,26.4286,388.263,16.2143,387.7315,6,388,6.3031,388,5.2511,378.4,5.4112,368.8,6.6551,359.2,6.6813,349.6,6,340" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="31.872,358.2413,31.6348,360.3107,29.0671,362.5374,26.9456,364.7599,25.1508,366.5253,21.5236,366.7208,18.2557,366.4049,14.725,365.539,13.6071,363.4193,10.8122,361.3664,10.2973,358.2777,9.9645,354.6633,10.0507,352.6072,11.9675,350.2701,14.0951,347.9155,16.8661,346.1049,19.7323,345.5276,21.8677,345.3269,25.3038,345.8618,27.675,346.6031,29.5227,348.78,31.4506,352.0164,31.6974,354.0782,32.0992,356.6246" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M23.9688,361.6406 Q23.3906,361.9375 22.75,362.0859 Q22.1094,362.2344 21.4063,362.2344 Q18.9063,362.2344 17.5859,360.5859 Q16.2656,358.9375 16.2656,355.8125 Q16.2656,352.6875 17.5859,351.0313 Q18.9063,349.375 21.4063,349.375 Q22.1094,349.375 22.7578,349.5313 Q23.4063,349.6875 23.9688,349.9844 L23.9688,352.7031 Q23.3438,352.125 22.75,351.8516 Q22.1563,351.5781 21.5313,351.5781 Q20.1875,351.5781 19.5,352.6484 Q18.8125,353.7188 18.8125,355.8125 Q18.8125,357.9063 19.5,358.9766 Q20.1875,360.0469 21.5313,360.0469 Q22.1563,360.0469 22.75,359.7734 Q23.3438,359.5 23.9688,358.9219 L23.9688,361.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="35" y="360.1543">IRODSObjectStore</text><path d="M7,372 L7,372.4136 L17.0714,372.6628 L27.1429,371.9061 L37.2143,372.8627 L47.2857,372.4527 L57.3571,372.3024 L67.4286,371.0389 L77.5,371.1645 L87.5714,372.277 L97.6429,371.7243 L107.7143,371.0004 L117.7857,372.0556 L127.8571,372.6308 L137.9286,372.8721 L148,372 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M7,380 L7,380.0006 L17.0714,380.0429 L27.1429,380.6647 L37.2143,380.3285 L47.2857,380.7117 L57.3571,380.5671 L67.4286,380.1125 L77.5,379.6468 L87.5714,380.6315 L97.6429,379.0708 L107.7143,379.1458 L117.7857,380.4324 L127.8571,380.2088 L137.9286,380.5537 L148,380 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="184,340,184,339.3814,193.7222,340.0088,203.4444,339.9568,213.1667,339.3307,222.8889,339.3364,232.6111,339.6774,242.3333,339.54,252.0556,340.1402,261.7778,339.486,271.5,340.4665,281.2222,340.1087,290.9444,340.4281,300.6667,339.6097,310.3889,339.7012,320.1111,339.6475,329.8333,340.0856,339.5556,339.6058,349.2778,340.1556,359,340,358.6955,340,358.5932,349.6,359.663,359.2,359.71,368.8,358.7775,378.4,359,388,359,388.6625,349.2778,388.494,339.5556,387.2806,329.8333,387.7995,320.1111,387.5891,310.3889,388.0254,300.6667,387.6525,290.9444,387.4729,281.2222,388.3363,271.5,388.1709,261.7778,388.0482,252.0556,388.1663,242.3333,388.7375,232.6111,387.3762,222.8889,387.4277,213.1667,388.4948,203.4444,388.2796,193.7222,388.5148,184,388,184.1236,388,183.949,378.4,183.7029,368.8,183.4276,359.2,183.9811,349.6,184,340" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="208.8621,359.3527,207.9554,362.8603,206.6301,364.3442,205.0142,365.7659,202.3035,366.3848,199.6398,367.6671,197.179,366.9331,195.0498,365.7165,192.093,364.8883,189.966,363.2474,188.9965,360.6291,187.605,357.1054,188.7575,354.2493,188.4866,352.0666,190.6039,349.872,191.804,346.9851,194.2057,345.5146,197.1345,345.8445,200.7484,345.3712,202.9887,345.9396,206.0496,346.6939,207.7621,350.2997,208.7956,352.1512,210.1681,354.4923,209.7702,358.1068" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M201.9688,361.6406 Q201.3906,361.9375 200.75,362.0859 Q200.1094,362.2344 199.4063,362.2344 Q196.9063,362.2344 195.5859,360.5859 Q194.2656,358.9375 194.2656,355.8125 Q194.2656,352.6875 195.5859,351.0313 Q196.9063,349.375 199.4063,349.375 Q200.1094,349.375 200.7578,349.5313 Q201.4063,349.6875 201.9688,349.9844 L201.9688,352.7031 Q201.3438,352.125 200.75,351.8516 Q200.1563,351.5781 199.5313,351.5781 Q198.1875,351.5781 197.5,352.6484 Q196.8125,353.7188 196.8125,355.8125 Q196.8125,357.9063 197.5,358.9766 Q198.1875,360.0469 199.5313,360.0469 Q200.1563,360.0469 200.75,359.7734 Q201.3438,359.5 201.9688,358.9219 L201.9688,361.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="213" y="360.1543">DistributedObjectStore</text><path d="M185,372 L185,371.1497 L195.1765,372.2274 L205.3529,372.1329 L215.5294,372.879 L225.7059,372.6556 L235.8824,372.5475 L246.0588,372.1088 L256.2353,371.5061 L266.4118,372.8472 L276.5882,371.9745 L286.7647,371.5535 L296.9412,372.5158 L307.1176,372.4358 L317.2941,372.9885 L327.4706,371.7396 L337.6471,371.8384 L347.8235,372.0318 L358,372 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M185,380 L185,380.587 L195.1765,380.7204 L205.3529,380.1982 L215.5294,380.3118 L225.7059,379.3762 L235.8824,380.4329 L246.0588,379.7723 L256.2353,380.1052 L266.4118,380.3061 L276.5882,379.049 L286.7647,379.2632 L296.9412,379.7976 L307.1176,379.2161 L317.2941,379.4444 L327.4706,379.9874 L337.6471,380.2574 L347.8235,379.4665 L358,380 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="394.25,340,394.25,340.7039,404.25,339.9337,414.25,340.5538,424.25,340.7305,434.25,339.3784,444.25,339.8701,454.25,340.6759,464.25,339.9654,474.25,340.1036,484.25,340.0434,494.25,340.1601,504.25,339.6922,514.25,339.2506,524.25,339.43,534.25,340.4173,544.25,339.7824,554.25,340.2334,564.25,340.5785,574.25,340,574.8909,340,573.7595,349.6,574.0717,359.2,573.9241,368.8,574.2434,378.4,574.25,388,574.25,387.8331,564.25,388.3596,554.25,387.7585,544.25,388.1013,534.25,387.5043,524.25,387.4052,514.25,388.2013,504.25,388.6922,494.25,388.6587,484.25,387.6439,474.25,387.3919,464.25,387.7634,454.25,388.2142,444.25,388.3389,434.25,388.1887,424.25,388.0636,414.25,388.0107,404.25,387.5735,394.25,388,394.1934,388,393.6369,378.4,394.9371,368.8,394.8592,359.2,394.1429,349.6,394.25,340" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="420.6951,358.0581,419.8848,360.5135,418.5937,362.1971,416.8723,364.7004,415.3011,365.9852,413.0757,366.3718,410.6756,367.539,407.5152,367.0171,404.5507,365.6502,401.9668,363.4661,399.5326,362.2545,399.1297,359.3514,397.6,356.3493,398.6966,353.8631,399.5878,352.0895,400.6307,348.4601,404.0619,346.8702,406.0896,345.4291,408.7005,345.0578,411.1455,344.6409,413.6985,346.0278,416.5848,348.3261,418.8477,349.4141,419.144,352.313,420.4859,354.1143,419.8913,356.5506" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M412.2188,361.6406 Q411.6406,361.9375 411,362.0859 Q410.3594,362.2344 409.6563,362.2344 Q407.1563,362.2344 405.8359,360.5859 Q404.5156,358.9375 404.5156,355.8125 Q404.5156,352.6875 405.8359,351.0313 Q407.1563,349.375 409.6563,349.375 Q410.3594,349.375 411.0078,349.5313 Q411.6563,349.6875 412.2188,349.9844 L412.2188,352.7031 Q411.5938,352.125 411,351.8516 Q410.4063,351.5781 409.7813,351.5781 Q408.4375,351.5781 407.75,352.6484 Q407.0625,353.7188 407.0625,355.8125 Q407.0625,357.9063 407.75,358.9766 Q408.4375,360.0469 409.7813,360.0469 Q410.4063,360.0469 411,359.7734 Q411.5938,359.5 412.2188,358.9219 L412.2188,361.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="423.25" y="360.1543">HierarchicalObjectStore</text><path d="M395.25,372 L395.25,371.3172 L405.1389,372.4778 L415.0278,372.2332 L424.9167,371.5718 L434.8056,371.9549 L444.6944,372.8974 L454.5833,371.0285 L464.4722,371.7614 L474.3611,371.2195 L484.25,371.1106 L494.1389,372.1902 L504.0278,371.4536 L513.9167,372.4163 L523.8056,371.2608 L533.6944,372.0909 L543.5833,372.1649 L553.4722,372.4805 L563.3611,371.0206 L573.25,372 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M395.25,380 L395.25,379.2817 L405.1389,380.0538 L415.0278,379.4118 L424.9167,379.6683 L434.8056,379.2678 L444.6944,380.9353 L454.5833,380.6639 L464.4722,379.0351 L474.3611,379.76 L484.25,380.8403 L494.1389,379.6333 L504.0278,380.0365 L513.9167,379.4912 L523.8056,380.4898 L533.6944,380.6387 L543.5833,379.5434 L553.4722,379.4027 L563.3611,379.3114 L573.25,380 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M173.764,177.42 L174.0749,177.7708 L166.3283,184.4556 L158.5578,191.1136 L151.3481,198.4043 L143.6034,205.0913 L135.997,211.9345 L128.1905,218.5518 L120.4509,225.2446 L112.515,231.716 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="169.419,171.917,169.3755,171.8108,173.4148,170.4915,177.1993,168.5499,181.2246,167.1963,185.1994,165.7195,189.029,163.888,189.0956,163.9251,187.0962,167.6625,185.0573,171.3779,182.9177,175.037,180.8752,178.7504,178.706,182.393,178.6397,182.3342,177.0065,180.4378,174.933,178.151,172.9547,175.9486,171.364,174.0898,169.419,171.917" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M271.25,191.809 L271.3591,191.809 L271.0895,199.7892 L271.0635,207.7694 L271.3286,215.7496 L271.3346,223.7298 L271.25,231.71 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="264.25,191.559,264.3226,191.5844,265.7497,187.5939,267.2341,183.6234,268.2943,179.5045,269.8162,175.5472,271.25,171.559,271.3694,171.6008,272.6928,175.574,274.0034,179.5427,275.4876,183.5722,276.6292,187.4817,278.25,191.559,278.25,191.4187,275.45,191.7664,272.65,191.6926,269.85,191.352,267.05,191.7607,264.25,191.559" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M368.14,183.924 L367.4899,183.2462 L375.6608,191.1688 L382.8516,198.0696 L389.0847,203.9717 L396.6963,211.3112 L403.2671,217.5654 L411.523,225.5767 L418.114,231.852 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="363.084,188.773,362.9573,188.7087,361.1043,184.9627,359.2379,181.2099,357.3534,177.4479,355.5458,173.7249,353.494,169.878,353.562,170.0272,357.3289,171.59,361.2219,173.4293,365.1426,175.3294,368.9685,177.0215,372.774,178.669,372.6493,178.5495,370.7129,180.5718,368.8401,182.6551,366.8854,184.6599,364.8651,186.6018,363.084,188.773" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M82.5971,300.0236 L82.573,300.0216 L81.8249,307.9462 L81.0733,315.8705 L80.5775,323.8165 L79.8406,331.7421 L79.2301,339.6784 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="75.6301,299.3365,75.6365,299.3394,77.5874,295.5695,79.0445,291.5784,80.8242,287.7319,82.6679,283.914,84.2971,280,84.3021,280.0013,85.4921,284.1398,86.6371,288.2668,87.4659,292.3124,88.6439,296.4478,89.5799,300.521,89.5765,300.4815,86.8111,300.533,83.9813,299.8274,81.196,299.6454,78.4137,299.4988,75.6301,299.3365" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M271.25,300.0236 L271.3656,300.0236 L271.2306,307.9546 L271.2834,315.8855 L271.4368,323.8165 L271.1053,331.7474 L271.25,339.6784 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="264.25,300.0005,264.1092,299.9512,265.8099,296.0563,267.177,292.0448,268.3623,287.9695,270.0012,284.053,271.25,280,271.3158,280.023,272.7612,284.039,274.2689,288.0768,275.3406,291.9619,276.7571,295.9678,278.25,300.0004,278.25,300.2315,275.45,299.8369,272.65,300.1002,269.85,299.9448,267.05,300.1664,264.25,300.0005" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M335.496,288.9724 L335.3633,288.7058 L344.4959,293.0031 L354.139,298.3264 L363.1856,302.451 L372.3316,306.7753 L381.886,311.9204 L391.4683,317.1215 L400.915,322.05 L409.8044,325.8587 L419.2585,330.8021 L428.4434,335.2046 L437.755,339.8617 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="332.254,295.178,332.1899,295.1155,329.4147,292.2573,326.4269,289.1918,323.4324,286.1199,320.2619,282.8765,317.468,280,317.4379,279.7609,321.6818,280.6001,325.8829,281.1,330.0562,281.3777,334.3022,282.2341,338.492,282.644,338.4948,282.6454,337.1194,285.0886,335.8905,287.6047,334.6653,290.1227,333.5489,292.6948,332.254,295.178" style="stroke: #FFA500; stroke-width: 1.0;"/></g></svg> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="398px" preserveAspectRatio="none" style="width:585px;height:398px;" version="1.1" viewBox="0 0 585 398" width="585px" zoomAndPan="magnify"><defs><filter height="300%" id="f1nghdybbeyrgw" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[c69b8186ec1c0b0486aac0bd331c901d] +class ObjectStore--><polygon fill="#FFEFD5" filter="url(#f1nghdybbeyrgw)" points="189.5,8,189.5,8.2102,199.75,7.5857,210,8.1933,220.25,8.3997,230.5,7.2866,240.75,7.9223,251,7.5735,261.25,7.6165,271.5,7.9318,281.75,7.3086,292,8.5536,302.25,7.3697,312.5,7.8022,322.75,8.4319,333,7.9142,343.25,8.0682,353.5,8,353.4681,8,353.6785,18.2026,353.7391,28.4053,354.0857,38.6079,354.1711,48.8105,354.1793,59.0132,353.7546,69.2158,353.9636,79.4185,354.2022,89.6211,352.7788,99.8237,354.1785,110.0264,353.2035,120.229,354.0338,130.4316,353.005,140.6343,353.4315,150.8369,354.2416,161.0396,353.5,171.2422,353.5,171.1935,343.25,171.3475,333,171.5808,322.75,171.6584,312.5,171.2383,302.25,171.5294,292,170.6698,281.75,171.5266,271.5,171.7904,261.25,171.6867,251,171.8552,240.75,170.7591,230.5,170.59,220.25,170.6208,210,171.1833,199.75,171.0457,189.5,171.2422,190.1814,171.2422,189.3253,161.0396,189.1569,150.8369,189.7283,140.6343,188.8332,130.4316,188.9809,120.229,190.149,110.0264,189.9357,99.8237,190.2345,89.6211,189.1782,79.4185,189.8192,69.2158,190.0904,59.0132,189.0276,48.8105,189.4041,38.6079,189.626,28.4053,190.1518,18.2026,189.5,8" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#A9DCDF" points="242.1108,26.6756,240.4984,28.8788,238.5912,32.1057,235.8636,34.2804,232.9974,35.4696,230.712,35.5728,227.7747,34.0855,225.0032,33.1139,222.8995,31.1412,221.7961,28.8828,221.1417,27.0845,220.5006,24.7357,219.46,22.7145,220.2596,20.741,220.9602,18.5792,223.5893,16.8695,225.439,14.6511,227.7284,13.9144,230.4501,13.2801,233.9404,13.657,235.8521,14.5585,238.0747,14.9672,240.7772,17.736,241.7193,20.659,242.1286,22.6534,241.665,25.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M231.1594,19.3438 L230.0031,24.4219 L232.3313,24.4219 L231.1594,19.3438 Z M229.675,17.1094 L232.6594,17.1094 L236.0188,29.5 L233.5656,29.5 L232.8,26.4375 L229.5188,26.4375 L228.7688,29.5 L226.3313,29.5 L229.675,17.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="73" x="250.95" y="28.1543">ObjectStore</text><path d="M190.5,40 L190.5,40.2802 L200.625,39.4476 L210.75,40.2577 L220.875,40.5329 L231,39.0488 L241.125,39.8964 L251.25,39.4313 L261.375,39.4887 L271.5,39.9091 L281.625,39.0782 L291.75,40.7382 L301.875,39.1596 L312,39.7363 L322.125,40.5759 L332.25,39.8856 L342.375,40.091 L352.5,40 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M190.5,48 L190.5,48.2802 L200.625,47.4476 L210.75,48.2577 L220.875,48.5329 L231,47.0488 L241.125,47.8964 L251.25,47.4313 L261.375,47.4887 L271.5,47.9091 L281.625,47.0782 L291.75,48.7382 L301.875,47.1596 L312,47.7363 L322.125,48.5759 L332.25,47.8856 L342.375,48.091 L352.5,48 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="59" x="195.5" y="62.2104">exists(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="80" x="195.5" y="75.0151">file_ready(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="195.5" y="87.8198">create(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="195.5" y="100.6245">size(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="60" x="195.5" y="113.4292">delete(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="74" x="195.5" y="126.2339">get_data(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="195.5" y="139.0386">get_filename(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="195.5" y="151.8433">update_from_file(obj)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="152" x="195.5" y="164.6479">get_store_usage_percent()</text><!--MD5=[2b2e9e31505db4a7ccf355fb56499551] +class DiskObjectStore--><polygon fill="#FFEFD5" filter="url(#f1nghdybbeyrgw)" points="20.5,231,20.5,231.2102,30.6538,230.5857,40.8077,231.1933,50.9615,231.3997,61.1154,230.2866,71.2692,230.9223,81.4231,230.5735,91.5769,230.6165,101.7308,230.9318,111.8846,230.3086,122.0385,231.5536,132.1923,230.3697,142.3462,230.8022,152.5,231,152.9319,231,152.4142,240.6,152.5682,250.2,152.4681,259.8,152.6785,269.4,152.5,279,152.5,279.2391,142.3462,279.5857,132.1923,279.6711,122.0385,279.6793,111.8846,279.2546,101.7308,279.4636,91.5769,279.7022,81.4231,278.2788,71.2692,279.6785,61.1154,278.7035,50.9615,279.5338,40.8077,278.505,30.6538,278.9315,20.5,279,21.2416,279,20.4513,269.4,20.6053,259.8,20.8386,250.2,20.9162,240.6,20.5,231" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="46.5608,249.6756,44.9484,251.8788,43.0412,255.1057,40.3136,257.2804,37.4474,258.4696,35.162,258.5728,32.2247,257.0855,29.4532,256.1139,27.3495,254.1412,26.2461,251.8828,25.5917,250.0845,24.9506,247.7357,23.91,245.7145,24.7096,243.741,25.4102,241.5792,28.0393,239.8695,29.889,237.6511,32.1784,236.9144,34.9001,236.2801,38.3904,236.657,40.3021,237.5585,42.5247,237.9672,45.2272,240.736,46.1693,243.659,46.5786,245.6534,46.115,248.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M38.4688,252.6406 Q37.8906,252.9375 37.25,253.0781 Q36.6094,253.2344 35.9063,253.2344 Q33.4063,253.2344 32.0781,251.5938 Q30.7656,249.9375 30.7656,246.8125 Q30.7656,243.6875 32.0781,242.0313 Q33.4063,240.375 35.9063,240.375 Q36.6094,240.375 37.25,240.5313 Q37.9063,240.6875 38.4688,240.9844 L38.4688,243.7031 Q37.8438,243.125 37.25,242.8594 Q36.6563,242.5781 36.0313,242.5781 Q34.6875,242.5781 34,243.6563 Q33.3125,244.7188 33.3125,246.8125 Q33.3125,248.9063 34,249.9844 Q34.6875,251.0469 36.0313,251.0469 Q36.6563,251.0469 37.25,250.7813 Q37.8438,250.5 38.4688,249.9219 L38.4688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="49.5" y="251.1543">DiskObjectStore</text><path d="M21.5,263 L21.5,263.2802 L31.5,262.4476 L41.5,263.2577 L51.5,263.5329 L61.5,262.0488 L71.5,262.8964 L81.5,262.4313 L91.5,262.4887 L101.5,262.9091 L111.5,262.0782 L121.5,263.7382 L131.5,262.1596 L141.5,262.7363 L151.5,263 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M21.5,271 L21.5,271.2802 L31.5,270.4476 L41.5,271.2577 L51.5,271.5329 L61.5,270.0488 L71.5,270.8964 L81.5,270.4313 L91.5,270.4887 L101.5,270.9091 L111.5,270.0782 L121.5,271.7382 L131.5,270.1596 L141.5,270.7363 L151.5,271 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[d96d9491f1a9f1a52397867207df9119] +class NestedObjectStore--><polygon fill="#FFEFD5" filter="url(#f1nghdybbeyrgw)" points="197,231,197,231.2102,206.9333,230.5857,216.8667,231.1933,226.8,231.3997,236.7333,230.2866,246.6667,230.9223,256.6,230.5735,266.5333,230.6165,276.4667,230.9318,286.4,230.3086,296.3333,231.5536,306.2667,230.3697,316.2,230.8022,326.1333,231.4319,336.0667,230.9142,346,231,346.0682,231,345.9681,240.6,346.1785,250.2,346.2391,259.8,346.5857,269.4,346,279,346,279.6711,336.0667,279.6793,326.1333,279.2546,316.2,279.4636,306.2667,279.7022,296.3333,278.2788,286.4,279.6785,276.4667,278.7035,266.5333,279.5338,256.6,278.505,246.6667,278.9315,236.7333,279.7416,226.8,278.9513,216.8667,279.1053,206.9333,279.3386,197,279,197.4162,279,196.9961,269.4,197.2872,259.8,196.4276,250.2,197.2844,240.6,197,231" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#A9DCDF" points="223.0608,249.6756,221.4484,251.8788,219.5412,255.1057,216.8136,257.2804,213.9474,258.4696,211.662,258.5728,208.7247,257.0855,205.9532,256.1139,203.8495,254.1412,202.7461,251.8828,202.0917,250.0845,201.4506,247.7357,200.41,245.7145,201.2096,243.741,201.9102,241.5792,204.5393,239.8695,206.389,237.6511,208.6784,236.9144,211.4001,236.2801,214.8904,236.657,216.8021,237.5585,219.0247,237.9672,221.7272,240.736,222.6693,243.659,223.0786,245.6534,222.615,248.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M212.1094,242.3438 L210.9531,247.4219 L213.2813,247.4219 L212.1094,242.3438 Z M210.625,240.1094 L213.6094,240.1094 L216.9688,252.5 L214.5156,252.5 L213.75,249.4375 L210.4688,249.4375 L209.7188,252.5 L207.2813,252.5 L210.625,240.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="117" x="226" y="251.1543">NestedObjectStore</text><path d="M198,263 L198,263.2802 L207.8,262.4476 L217.6,263.2577 L227.4,263.5329 L237.2,262.0488 L247,262.8964 L256.8,262.4313 L266.6,262.4887 L276.4,262.9091 L286.2,262.0782 L296,263.7382 L305.8,262.1596 L315.6,262.7363 L325.4,263.5759 L335.2,262.8856 L345,263 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M198,271 L198,271.2802 L207.8,270.4476 L217.6,271.2577 L227.4,271.5329 L237.2,270.0488 L247,270.8964 L256.8,270.4313 L266.6,270.4887 L276.4,270.9091 L286.2,270.0782 L296,271.7382 L305.8,270.1596 L315.6,270.7363 L325.4,271.5759 L335.2,270.8856 L345,271 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[64e0726bf9becc1181b69c23e1de44bb] +class S3ObjectStore--><polygon fill="#FFEFD5" filter="url(#f1nghdybbeyrgw)" points="381.5,231,381.5,231.2102,391.6667,230.5857,401.8333,231.1933,412,231.3997,422.1667,230.2866,432.3333,230.9223,442.5,230.5735,452.6667,230.6165,462.8333,230.9318,473,230.3086,483.1667,231.5536,493.3333,230.3697,503.5,231,503.3022,231,503.9319,240.6,503.4142,250.2,503.5682,259.8,503.4681,269.4,503.5,279,503.5,279.1785,493.3333,279.2391,483.1667,279.5857,473,279.6711,462.8333,279.6793,452.6667,279.2546,442.5,279.4636,432.3333,279.7022,422.1667,278.2788,412,279.6785,401.8333,278.7035,391.6667,279.5338,381.5,279,381.005,279,381.4315,269.4,382.2416,259.8,381.4513,250.2,381.6053,240.6,381.5,231" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="407.5608,249.6756,405.9484,251.8788,404.0412,255.1057,401.3136,257.2804,398.4474,258.4696,396.162,258.5728,393.2247,257.0855,390.4532,256.1139,388.3495,254.1412,387.2461,251.8828,386.5917,250.0845,385.9506,247.7357,384.91,245.7145,385.7096,243.741,386.4102,241.5792,389.0393,239.8695,390.889,237.6511,393.1784,236.9144,395.9001,236.2801,399.3904,236.657,401.3021,237.5585,403.5247,237.9672,406.2272,240.736,407.1693,243.659,407.5786,245.6534,407.115,248.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M399.4688,252.6406 Q398.8906,252.9375 398.25,253.0781 Q397.6094,253.2344 396.9063,253.2344 Q394.4063,253.2344 393.0781,251.5938 Q391.7656,249.9375 391.7656,246.8125 Q391.7656,243.6875 393.0781,242.0313 Q394.4063,240.375 396.9063,240.375 Q397.6094,240.375 398.25,240.5313 Q398.9063,240.6875 399.4688,240.9844 L399.4688,243.7031 Q398.8438,243.125 398.25,242.8594 Q397.6563,242.5781 397.0313,242.5781 Q395.6875,242.5781 395,243.6563 Q394.3125,244.7188 394.3125,246.8125 Q394.3125,248.9063 395,249.9844 Q395.6875,251.0469 397.0313,251.0469 Q397.6563,251.0469 398.25,250.7813 Q398.8438,250.5 399.4688,249.9219 L399.4688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="410.5" y="251.1543">S3ObjectStore</text><path d="M382.5,263 L382.5,263.2802 L392.5,262.4476 L402.5,263.2577 L412.5,263.5329 L422.5,262.0488 L432.5,262.8964 L442.5,262.4313 L452.5,262.4887 L462.5,262.9091 L472.5,262.0782 L482.5,263.7382 L492.5,262.1596 L502.5,263 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M382.5,271 L382.5,271.2802 L392.5,270.4476 L402.5,271.2577 L412.5,271.5329 L422.5,270.0488 L432.5,270.8964 L442.5,270.4313 L452.5,270.4887 L462.5,270.9091 L472.5,270.0782 L482.5,271.7382 L492.5,270.1596 L502.5,271 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[a2b6592a6821b1c03dad6e5d265d9dd6] +class IRODSObjectStore--><polygon fill="#FFEFD5" filter="url(#f1nghdybbeyrgw)" points="6,339,6,339.2102,16.2143,338.5857,26.4286,339.1933,36.6429,339.3997,46.8571,338.2866,57.0714,338.9223,67.2857,338.5735,77.5,338.6165,87.7143,338.9318,97.9286,338.3086,108.1429,339.5536,118.3571,338.3697,128.5714,338.8022,138.7857,339.4319,149,339,148.9142,339,149.0682,348.6,148.9681,358.2,149.1785,367.8,149.2391,377.4,149,387,149,387.5857,138.7857,387.6711,128.5714,387.6793,118.3571,387.2546,108.1429,387.4636,97.9286,387.7022,87.7143,386.2788,77.5,387.6785,67.2857,386.7035,57.0714,387.5338,46.8571,386.505,36.6429,386.9315,26.4286,387.7416,16.2143,386.9513,6,387,6.1053,387,6.3386,377.4,6.4162,367.8,5.9961,358.2,6.2872,348.6,6,339" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="32.0608,357.6756,30.4484,359.8788,28.5412,363.1057,25.8136,365.2804,22.9474,366.4696,20.662,366.5728,17.7247,365.0855,14.9532,364.1139,12.8495,362.1412,11.7461,359.8828,11.0917,358.0845,10.4506,355.7357,9.41,353.7145,10.2096,351.741,10.9102,349.5792,13.5393,347.8695,15.389,345.6511,17.6784,344.9144,20.4001,344.2801,23.8904,344.657,25.8021,345.5585,28.0247,345.9672,30.7272,348.736,31.6693,351.659,32.0786,353.6534,31.615,356.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M23.9688,360.6406 Q23.3906,360.9375 22.75,361.0781 Q22.1094,361.2344 21.4063,361.2344 Q18.9063,361.2344 17.5781,359.5938 Q16.2656,357.9375 16.2656,354.8125 Q16.2656,351.6875 17.5781,350.0313 Q18.9063,348.375 21.4063,348.375 Q22.1094,348.375 22.75,348.5313 Q23.4063,348.6875 23.9688,348.9844 L23.9688,351.7031 Q23.3438,351.125 22.75,350.8594 Q22.1563,350.5781 21.5313,350.5781 Q20.1875,350.5781 19.5,351.6563 Q18.8125,352.7188 18.8125,354.8125 Q18.8125,356.9063 19.5,357.9844 Q20.1875,359.0469 21.5313,359.0469 Q22.1563,359.0469 22.75,358.7813 Q23.3438,358.5 23.9688,357.9219 L23.9688,360.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="35" y="359.1543">IRODSObjectStore</text><path d="M7,371 L7,371.2802 L17.0714,370.4476 L27.1429,371.2577 L37.2143,371.5329 L47.2857,370.0488 L57.3571,370.8964 L67.4286,370.4313 L77.5,370.4887 L87.5714,370.9091 L97.6429,370.0782 L107.7143,371.7382 L117.7857,370.1596 L127.8571,370.7363 L137.9286,371.5759 L148,371 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M7,379 L7,379.2802 L17.0714,378.4476 L27.1429,379.2577 L37.2143,379.5329 L47.2857,378.0488 L57.3571,378.8964 L67.4286,378.4313 L77.5,378.4887 L87.5714,378.9091 L97.6429,378.0782 L107.7143,379.7382 L117.7857,378.1596 L127.8571,378.7363 L137.9286,379.5759 L148,379 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[1f91316b02919dcb8d0f78969dcebf84] +class DistributedObjectStore--><polygon fill="#FFEFD5" filter="url(#f1nghdybbeyrgw)" points="184,339,184,339.2102,193.7222,338.5857,203.4444,339.1933,213.1667,339.3997,222.8889,338.2866,232.6111,338.9223,242.3333,338.5735,252.0556,338.6165,261.7778,338.9318,271.5,338.3086,281.2222,339.5536,290.9444,338.3697,300.6667,338.8022,310.3889,339.4319,320.1111,338.9142,329.8333,339.0682,339.5556,338.9681,349.2778,339.1785,359,339,359.2391,339,359.5857,348.6,359.6711,358.2,359.6793,367.8,359.2546,377.4,359,387,359,387.4636,349.2778,387.7022,339.5556,386.2788,329.8333,387.6785,320.1111,386.7035,310.3889,387.5338,300.6667,386.505,290.9444,386.9315,281.2222,387.7416,271.5,386.9513,261.7778,387.1053,252.0556,387.3386,242.3333,387.4162,232.6111,386.9961,222.8889,387.2872,213.1667,386.4276,203.4444,387.2844,193.7222,387.5482,184,387,184.4445,387,184.613,377.4,183.5169,367.8,183.3478,358.2,183.3786,348.6,184,339" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="210.0608,357.6756,208.4484,359.8788,206.5412,363.1057,203.8136,365.2804,200.9474,366.4696,198.662,366.5728,195.7247,365.0855,192.9532,364.1139,190.8495,362.1412,189.7461,359.8828,189.0917,358.0845,188.4506,355.7357,187.41,353.7145,188.2096,351.741,188.9102,349.5792,191.5393,347.8695,193.389,345.6511,195.6784,344.9144,198.4001,344.2801,201.8904,344.657,203.8021,345.5585,206.0247,345.9672,208.7272,348.736,209.6693,351.659,210.0786,353.6534,209.615,356.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M201.9688,360.6406 Q201.3906,360.9375 200.75,361.0781 Q200.1094,361.2344 199.4063,361.2344 Q196.9063,361.2344 195.5781,359.5938 Q194.2656,357.9375 194.2656,354.8125 Q194.2656,351.6875 195.5781,350.0313 Q196.9063,348.375 199.4063,348.375 Q200.1094,348.375 200.75,348.5313 Q201.4063,348.6875 201.9688,348.9844 L201.9688,351.7031 Q201.3438,351.125 200.75,350.8594 Q200.1563,350.5781 199.5313,350.5781 Q198.1875,350.5781 197.5,351.6563 Q196.8125,352.7188 196.8125,354.8125 Q196.8125,356.9063 197.5,357.9844 Q198.1875,359.0469 199.5313,359.0469 Q200.1563,359.0469 200.75,358.7813 Q201.3438,358.5 201.9688,357.9219 L201.9688,360.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="213" y="359.1543">DistributedObjectStore</text><path d="M185,371 L185,371.2802 L195.1765,370.4476 L205.3529,371.2577 L215.5294,371.5329 L225.7059,370.0488 L235.8824,370.8964 L246.0588,370.4313 L256.2353,370.4887 L266.4118,370.9091 L276.5882,370.0782 L286.7647,371.7382 L296.9412,370.1596 L307.1176,370.7363 L317.2941,371.5759 L327.4706,370.8856 L337.6471,371.091 L347.8235,370.9574 L358,371 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M185,379 L185,379.2802 L195.1765,378.4476 L205.3529,379.2577 L215.5294,379.5329 L225.7059,378.0488 L235.8824,378.8964 L246.0588,378.4313 L256.2353,378.4887 L266.4118,378.9091 L276.5882,378.0782 L286.7647,379.7382 L296.9412,378.1596 L307.1176,378.7363 L317.2941,379.5759 L327.4706,378.8856 L337.6471,379.091 L347.8235,378.9574 L358,379 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[0970737d350d0810e840624fa576a768] +class HierarchicalObjectStore--><polygon fill="#FFEFD5" filter="url(#f1nghdybbeyrgw)" points="394.5,339,394.5,339.2102,404.5,338.5857,414.5,339.1933,424.5,339.3997,434.5,338.2866,444.5,338.9223,454.5,338.5735,464.5,338.6165,474.5,338.9318,484.5,338.3086,494.5,339.5536,504.5,338.3697,514.5,338.8022,524.5,339.4319,534.5,338.9142,544.5,339.0682,554.5,338.9681,564.5,339.1785,574.5,339,574.7391,339,575.0857,348.6,575.1711,358.2,575.1793,367.8,574.7546,377.4,574.5,387,574.5,387.4636,564.5,387.7022,554.5,386.2788,544.5,387.6785,534.5,386.7035,524.5,387.5338,514.5,386.505,504.5,386.9315,494.5,387.7416,484.5,386.9513,474.5,387.1053,464.5,387.3386,454.5,387.4162,444.5,386.9961,434.5,387.2872,424.5,386.4276,414.5,387.2844,404.5,387.5482,394.5,387,394.9445,387,395.113,377.4,394.0169,367.8,393.8478,358.2,393.8786,348.6,394.5,339" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="420.5608,357.6756,418.9484,359.8788,417.0412,363.1057,414.3136,365.2804,411.4474,366.4696,409.162,366.5728,406.2247,365.0855,403.4532,364.1139,401.3495,362.1412,400.2461,359.8828,399.5917,358.0845,398.9506,355.7357,397.91,353.7145,398.7096,351.741,399.4102,349.5792,402.0393,347.8695,403.889,345.6511,406.1784,344.9144,408.9001,344.2801,412.3904,344.657,414.3021,345.5585,416.5247,345.9672,419.2272,348.736,420.1693,351.659,420.5786,353.6534,420.115,356.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M412.4688,360.6406 Q411.8906,360.9375 411.25,361.0781 Q410.6094,361.2344 409.9063,361.2344 Q407.4063,361.2344 406.0781,359.5938 Q404.7656,357.9375 404.7656,354.8125 Q404.7656,351.6875 406.0781,350.0313 Q407.4063,348.375 409.9063,348.375 Q410.6094,348.375 411.25,348.5313 Q411.9063,348.6875 412.4688,348.9844 L412.4688,351.7031 Q411.8438,351.125 411.25,350.8594 Q410.6563,350.5781 410.0313,350.5781 Q408.6875,350.5781 408,351.6563 Q407.3125,352.7188 407.3125,354.8125 Q407.3125,356.9063 408,357.9844 Q408.6875,359.0469 410.0313,359.0469 Q410.6563,359.0469 411.25,358.7813 Q411.8438,358.5 412.4688,357.9219 L412.4688,360.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="423.5" y="359.1543">HierarchicalObjectStore</text><path d="M395.5,371 L395.5,371.2802 L405.3889,370.4476 L415.2778,371.2577 L425.1667,371.5329 L435.0556,370.0488 L444.9444,370.8964 L454.8333,370.4313 L464.7222,370.4887 L474.6111,370.9091 L484.5,370.0782 L494.3889,371.7382 L504.2778,370.1596 L514.1667,370.7363 L524.0556,371.5759 L533.9444,370.8856 L543.8333,371.091 L553.7222,370.9574 L563.6111,371.238 L573.5,371 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M395.5,379 L395.5,379.2802 L405.3889,378.4476 L415.2778,379.2577 L425.1667,379.5329 L435.0556,378.0488 L444.9444,378.8964 L454.8333,378.4313 L464.7222,378.4887 L474.6111,378.9091 L484.5,378.0782 L494.3889,379.7382 L504.2778,378.1596 L514.1667,378.7363 L524.0556,379.5759 L533.9444,378.8856 L543.8333,379.091 L553.7222,378.9574 L563.6111,379.238 L573.5,379 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[5b5c53fbaa4b3e2cbd1a6ff05817bb94] +reverse link ObjectStore to DiskObjectStore--><path d="M174.228,176.519 L174.4148,176.7279 L166.2828,182.8856 L159.246,190.2676 L151.8526,197.251 L143.2862,202.9232 L136.2744,210.3331 L128.3874,216.7648 L120.8487,223.5858 L113.6127,230.7452 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="169.7059,171.1722,169.7327,171.2369,173.5676,169.4211,177.5598,167.9846,181.5007,166.4246,185.2732,164.4584,189.2789,163.0545,189.2562,163.042,187.1067,166.6962,185.0715,170.4135,183.1158,174.1746,180.8862,177.7846,179.0402,181.6063,179.1777,181.7293,177.0168,179.3794,175.2573,177.3887,173.5469,175.4418,171.5515,173.24,169.7059,171.1722" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[07b9c842df00450add33f75d0cd2457f] +reverse link ObjectStore to NestedObjectStore--><path d="M271.5,191.5823 L271.5934,191.5823 L271.3159,199.4561 L271.5859,207.33 L271.6776,215.2038 L271.1829,223.0777 L271.5,230.9515 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="264.5001,191.2803,264.5662,191.3034,265.7697,187.2347,267.3609,183.3016,268.8258,179.3243,269.8756,175.2017,271.5,171.2803,271.4756,171.2717,272.7658,175.2333,274.1794,179.2381,275.6786,183.2728,276.8826,187.2042,278.5001,191.2803,278.5001,191.4648,275.7001,191.0702,272.9001,191.2144,270.1001,191.4243,267.3001,191.2517,264.5001,191.2803" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[b0a9842e944bc21441c7b27152dfbadb] +reverse link ObjectStore to S3ObjectStore--><path d="M368.1789,183.0693 L368.3738,183.2707 L374.8574,189.5079 L382.4836,196.9256 L389.7377,203.9589 L395.7683,209.7281 L403.4205,217.1727 L410.1598,223.6741 L417.618,230.9183 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="363.2475,188.0382,363.3101,188.0696,361.2234,184.1884,359.5038,180.4915,357.6647,176.7345,355.4325,172.7803,353.7444,169.0991,353.7335,169.0756,357.5327,170.7458,361.3867,172.5347,365.2786,174.4059,369.0395,175.9931,372.984,177.9782,373.1166,178.1065,370.8857,179.8441,369.042,181.9564,367.2456,184.1143,365.1743,186.0063,363.2475,188.0382" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[17a45b0f510edf299dde3d07ecb0363f] +reverse link DiskObjectStore to IRODSObjectStore--><path d="M82.8091,299.2911 L82.9022,299.2989 L81.9664,307.1863 L81.5763,315.1192 L81.0085,323.0374 L79.8563,330.9068 L79.513,338.8436 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="75.8434,298.5869,75.9074,298.6155,77.4446,294.6607,79.357,290.8733,81.1471,287.0314,82.5357,283.0103,84.4802,279.2373,84.4551,279.2308,85.4055,283.3041,86.4824,287.4102,87.6471,291.539,88.509,295.5893,89.795,299.7496,89.8103,299.9335,86.9872,299.3077,84.2089,299.2188,81.436,299.1955,78.6313,298.7909,75.8434,298.5869" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[4be8e80a1fef1913217680a366ac247d] +reverse link NestedObjectStore to DistributedObjectStore--><path d="M271.5,299.2911 L271.5934,299.2911 L271.3159,307.2016 L271.5859,315.1121 L271.6776,323.0226 L271.1829,330.9331 L271.5,338.8436 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="264.5001,299.2373,264.5662,299.2604,265.7697,295.1917,267.3609,291.2586,268.8258,287.2813,269.8756,283.1587,271.5,279.2373,271.4756,279.2287,272.7658,283.1903,274.1794,287.1951,275.6786,291.2298,276.8826,295.1612,278.5001,299.2373,278.5001,299.4218,275.7001,299.0272,272.9001,299.1714,270.1001,299.3813,267.3001,299.2087,264.5001,299.2373" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[546d9dce482c1d981a0dd2b11dcb3772] +reverse link NestedObjectStore to HierarchicalObjectStore--><path d="M337.2575,288.3418 L337.3842,288.5917 L346.0851,292.4517 L355.5289,297.7769 L364.7308,302.625 L373.137,305.904 L382.5977,311.2626 L391.4648,315.4504 L400.5682,320.1042 L409.8357,325.0818 L418.5374,328.9434 L428.3655,335.0266 L437.1091,338.9708 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="333.7086,294.3909,333.7591,294.4394,330.6745,291.2377,327.8861,288.3203,325.0013,285.3104,321.7991,281.9958,319.0362,279.1029,319.0328,279.0772,323.2181,279.5223,327.4208,280.0967,331.6354,280.7612,335.8087,281.1156,340.0399,281.9043,340.2045,281.9878,338.5863,284.3066,337.4486,286.8691,336.3695,289.4614,334.9494,291.8806,333.7086,294.3909" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[263e388e8bb4bee1cdeacbedf370bba1] +@startuml + + +!include plantuml_options.txt + +abstract class ObjectStore { + exists(obj) + file_ready(obj) + create(obj) + size(obj) + delete(obj) + get_data(obj) + get_filename(obj) + update_from_file(obj) + get_store_usage_percent() +} + +class DiskObjectStore +abstract class NestedObjectStore + +ObjectStore <|- - DiskObjectStore +ObjectStore <|- - NestedObjectStore +ObjectStore <|- - S3ObjectStore +DiskObjectStore <|- - IRODSObjectStore +NestedObjectStore <|- - DistributedObjectStore +NestedObjectStore <|- - HierarchicalObjectStore + + +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +abstract class ObjectStore { + exists(obj) + file_ready(obj) + create(obj) + size(obj) + delete(obj) + get_data(obj) + get_filename(obj) + update_from_file(obj) + get_store_usage_percent() +} + +class DiskObjectStore +abstract class NestedObjectStore + +ObjectStore <|- - DiskObjectStore +ObjectStore <|- - NestedObjectStore +ObjectStore <|- - S3ObjectStore +DiskObjectStore <|- - IRODSObjectStore +NestedObjectStore <|- - DistributedObjectStore +NestedObjectStore <|- - HierarchicalObjectStore + + +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/objectstore.plantuml.txt b/topics/dev/images/objectstore.plantuml.txt new file mode 100644 index 00000000000000..48438424e1f72d --- /dev/null +++ b/topics/dev/images/objectstore.plantuml.txt @@ -0,0 +1,28 @@ +@startuml + +!include plantuml_options.txt + +abstract class ObjectStore { + exists(obj) + file_ready(obj) + create(obj) + size(obj) + delete(obj) + get_data(obj) + get_filename(obj) + update_from_file(obj) + get_store_usage_percent() +} + +class DiskObjectStore +abstract class NestedObjectStore + +ObjectStore <|-- DiskObjectStore +ObjectStore <|-- NestedObjectStore +ObjectStore <|-- S3ObjectStore +DiskObjectStore <|-- IRODSObjectStore +NestedObjectStore <|-- DistributedObjectStore +NestedObjectStore <|-- HierarchicalObjectStore + + +@enduml diff --git a/topics/dev/images/plantuml_options.txt b/topics/dev/images/plantuml_options.txt new file mode 100644 index 00000000000000..de0cce3af1a798 --- /dev/null +++ b/topics/dev/images/plantuml_options.txt @@ -0,0 +1,34 @@ +skinparam handwritten true +' skinparam roundcorner 20 + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} diff --git a/topics/dev/images/plantuml_style.txt b/topics/dev/images/plantuml_style.txt new file mode 100644 index 00000000000000..18911d622b75db --- /dev/null +++ b/topics/dev/images/plantuml_style.txt @@ -0,0 +1,9 @@ +<style> +mindmapDiagram { + node { + BackgroundColor #FFEFD5 + BorderColor DarkOrange + LineColor Orange + } +} +</style> diff --git a/topics/dev/images/server_client.plantuml.svg b/topics/dev/images/server_client.plantuml.svg index 723ce49323b368..cc1aa8fcc52832 100644 --- a/topics/dev/images/server_client.plantuml.svg +++ b/topics/dev/images/server_client.plantuml.svg @@ -1 +1,85 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="430px" style="width:605px;height:430px;" version="1.1" viewBox="0 0 605 430" width="605px"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f1)" points="397.5,108.4297,397.5,108.6589,399.5,108.4684,401.5,108.4065,403.5,108.4311,405.5,108.2012,407.5,108.4297,407.4596,108.4297,407.6761,114.2563,407.2535,120.0828,407.4633,125.9094,407.3174,131.7359,407.5,137.5625,407.5,137.7479,405.5,137.7554,403.5,137.7865,401.5,137.7653,399.5,137.6182,397.5,137.5625,397.6312,137.5625,397.5205,131.7359,397.7379,125.9094,397.4623,120.0828,397.6597,114.2563,397.5,108.4297" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="397.5,220.9609,397.5,221.0309,399.5,220.9029,401.5,221.0816,403.5,221.1174,405.5,221.143,407.5,220.9609,407.8436,220.9609,408.0634,231.3857,407.5159,241.8105,407.4216,252.2354,406.8981,262.6602,407.0455,273.085,408.2409,283.5098,407.8374,293.9346,407.5,304.3594,407.5,304.1548,405.5,304.4945,403.5,304.2654,401.5,304.2637,399.5,304.5593,397.5,304.3594,397.1208,304.3594,397.8558,293.9346,397.3228,283.5098,397.772,273.085,397.4085,262.6602,397.2876,252.2354,397.9206,241.8105,398.0651,231.3857,397.5,220.9609" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M171,38.2969 L171.2281,38.2969 L171.8939,48.3996 L170.5475,58.5022 L171.7425,68.6049 L170.304,78.7076 L171.9089,88.8103 L171.2788,98.9129 L170.5146,109.0156 L171.4763,119.1183 L170.2782,129.221 L171.5887,139.3237 L170.2082,149.4263 L171.6089,159.529 L171.3519,169.6317 L170.7539,179.7344 L171.9492,189.8371 L170.8298,199.9397 L171.3689,210.0424 L171.5456,220.1451 L171.9877,230.2478 L170.5063,240.3504 L171.8033,250.4531 L171.2969,260.5558 L170.1037,270.6585 L171.5972,280.7612 L171.4896,290.8638 L171.1889,300.9665 L170.4478,311.0692 L170.3496,321.1719 L170.4786,331.2746 L170.9721,341.3772 L171.4188,351.4799 L171.0408,361.5826 L170.4848,371.6853 L171.2908,381.7879 L171,391.8906 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M402.5,38.2969 L401.5501,38.2969 L401.6349,48.3996 L401.6214,58.5022 L403.1671,68.6049 L403.1917,78.7076 L402.3318,88.8103 L403.4048,98.9129 L402.5283,109.0156 L403.0197,119.1183 L403.0314,129.221 L401.7226,139.3237 L402.922,149.4263 L402.0904,159.529 L401.717,169.6317 L402.6159,179.7344 L401.7686,189.8371 L403.2822,199.9397 L402.683,210.0424 L403.3173,220.1451 L401.6366,230.2478 L401.5255,240.3504 L402.3899,250.4531 L402.0162,260.5558 L403.1027,270.6585 L402.2214,280.7612 L401.5219,290.8638 L402.289,300.9665 L401.7735,311.0692 L401.684,321.1719 L402.5584,331.2746 L402.0365,341.3772 L402.996,351.4799 L401.815,361.5826 L402.3374,371.6853 L401.6122,381.7879 L402.5,391.8906 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="134,3,134,3.5043,144.1429,2.6473,154.2857,3.5245,164.4286,2.7044,174.5714,3.3161,184.7143,3.1511,194.8571,2.8807,205,3,204.9902,3,205.0234,9.0594,204.8939,15.1188,205.1239,21.1781,205.1904,27.2375,205,33.2969,205,33.5547,194.8571,33.4714,184.7143,33.6505,174.5714,32.6327,164.4286,33.0044,154.2857,33.0951,144.1429,32.8798,134,33.2969,133.7707,33.2969,134.105,27.2375,133.7671,21.1781,134.0452,15.1187,133.8975,9.0594,134,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="141" y="22.9951">Browser</text><polygon fill="#FFEFD5" filter="url(#f1)" points="134,390.8906,134,390.4852,144.1429,390.9132,154.2857,391.3628,164.4286,391.3621,174.5714,391.1065,184.7143,391.1646,194.8571,390.4734,205,390.8906,205.2327,390.8906,205.1204,396.95,205.0118,403.0094,204.7891,409.0688,205.015,415.1281,205,421.1875,205,421.7887,194.8571,421.6501,184.7143,421.7366,174.5714,420.4974,164.4286,421.7506,154.2857,421.7869,144.1429,421.733,134,421.1875,134.1558,421.1875,134.1479,415.1281,133.7995,409.0688,133.9248,403.0094,133.8176,396.95,134,390.8906" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="141" y="410.8857">Browser</text><polygon fill="#FFEFD5" filter="url(#f1)" points="371.5,3,371.5,3.3931,381.1667,3.7095,390.8333,2.8995,400.5,3.5082,410.1667,2.4809,419.8333,2.7527,429.5,3,429.3281,3,429.7151,9.0594,429.2808,15.1188,429.272,21.1781,429.3178,27.2375,429.5,33.2969,429.5,32.8808,419.8333,33.9845,410.1667,33.2211,400.5,33.4302,390.8333,33.7029,381.1667,33.946,371.5,33.2969,371.3674,33.2969,371.325,27.2375,371.5408,21.1781,371.4803,15.1187,371.5105,9.0594,371.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="378.5" y="22.9951">Server</text><polygon fill="#FFEFD5" filter="url(#f1)" points="371.5,390.8906,371.5,390.7417,381.1667,390.7817,390.8333,391.3859,400.5,390.8075,410.1667,390.9385,419.8333,391.1288,429.5,390.8906,429.7161,390.8906,429.7403,396.95,429.2562,403.0094,429.6096,409.0688,429.3482,415.1281,429.5,421.1875,429.5,421.2822,419.8333,421.2931,410.1667,421.2916,400.5,421.9333,390.8333,420.5214,381.1667,420.7229,371.5,421.1875,371.4851,421.1875,371.6764,415.1281,371.6707,409.0688,371.3465,403.0094,371.5096,396.95,371.5,390.8906" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="378.5" y="410.8857">Server</text><polygon fill="#FFEFD5" filter="url(#f1)" points="397.5,108.4297,397.5,108.291,399.5,108.2962,401.5,108.5819,403.5,108.1857,405.5,108.5046,407.5,108.4297,407.2875,108.4297,407.7094,114.2563,407.2918,120.0828,407.4531,125.9094,407.3806,131.7359,407.5,137.5625,407.5,137.3316,405.5,137.4121,403.5,137.6558,401.5,137.3134,399.5,137.6154,397.5,137.5625,397.6933,137.5625,397.6202,131.7359,397.74,125.9094,397.3354,120.0828,397.5751,114.2563,397.5,108.4297" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="397.5,220.9609,397.5,220.7885,399.5,220.7428,401.5,221.2041,403.5,220.8463,405.5,221.1062,407.5,220.9609,408.2418,220.9609,407.9563,231.3857,407.7695,241.8105,407.6808,252.2354,407.4086,262.6602,407.8576,273.085,407.1938,283.5098,408.1993,293.9346,407.5,304.3594,407.5,304.5972,405.5,304.1858,403.5,304.1782,401.5,304.2566,399.5,304.6068,397.5,304.3594,397.6354,304.3594,396.9883,293.9346,398.136,283.5098,396.9232,273.085,397.9083,262.6602,396.9285,252.2354,397.6657,241.8105,397.5934,231.3857,397.5,220.9609" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="139,53.2969,139.1002,53.2969,139.1862,58.2969,138.7905,63.2969,138.7555,68.2969,139.1709,73.2969,139,78.2969,139,77.9357,149.1379,77.789,159.2759,78.5782,169.4138,78.0166,179.5517,78.7375,189.6897,77.8108,199.8276,77.5588,209.9655,78.8641,220.1034,77.6682,230.2414,78.7535,240.3793,78.6891,250.5172,78.1966,260.6552,78.0604,270.7931,78.3871,280.931,78.7149,291.069,78.2915,301.2069,78.455,311.3448,78.2895,321.4828,77.814,331.6207,77.5721,341.7586,79.0428,351.8966,78.5232,362.0345,78.5407,372.1724,78.4347,382.3103,77.8403,392.4483,77.7837,402.5862,78.9364,412.7241,78.9345,422.8621,78.1671,433,78.2969,433.1167,78.2969,432.7736,75.2969,432.7818,72.2969,432.9216,69.2969,433.0759,66.2969,433,63.2969,433.0945,63.3914,431.0478,61.3447,428.9104,59.2073,426.8383,57.1352,425.1118,55.4087,423,53.2969,423,53.9728,412.8571,53.8462,402.7143,53.5055,392.5714,53.8929,382.4286,53.2308,372.2857,52.5883,362.1429,53.7611,352,53.5108,341.8571,53.4479,331.7143,53.6456,321.5714,53.9235,311.4286,53.6751,301.2857,53.6633,291.1429,52.8085,281,53.6036,270.8571,53.5252,260.7143,52.9148,250.5714,53.2534,240.4286,53.3321,230.2857,53.0745,220.1429,53.0981,210,54.0224,199.8571,53.8434,189.7143,53.6557,179.5714,52.6958,169.4286,53.8816,159.2857,53.5397,149.1429,53.0573,139,53.2969" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M423,53.2969 L422.9393,53.2969 L422.7932,55.2969 L422.9547,57.2969 L423.0375,59.2969 L423.2389,61.2969 L423,63.2969 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M433,63.2969 L433,63.3381 L431,63.1495 L429,63.3785 L427,63.538 L425,63.2517 L423,63.2969 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="263.75" y="70.3638">HTTP</text><polygon fill="#FFA500" points="385.5,104.4297,385.4622,104.3351,387.5853,105.4429,389.4468,105.8966,391.4622,106.7352,393.5608,107.7817,395.5,108.4297,395.4533,108.3128,393.5571,109.3725,391.5411,110.1323,389.4932,110.8126,387.4877,111.599,385.5,112.4297,385.5901,112.5198,386.3208,111.6504,387.1141,110.8437,388.0593,110.189,388.6388,109.1684,389.5,108.4297,389.585,108.5147,388.6096,107.5393,387.9992,106.9289,387.0602,105.9899,386.3191,105.2488,385.5,104.4297" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M171.5,108.4297 L171.5,107.9575 L181.5,108.3974 L191.5,107.6981 L201.5,108.5884 L211.5,107.8142 L221.5,107.5992 L231.5,107.6806 L241.5,108.3106 L251.5,108.7733 L261.5,108.7733 L271.5,108.8092 L281.5,107.889 L291.5,108.3739 L301.5,108.9352 L311.5,109.2099 L321.5,109.2008 L331.5,108.2286 L341.5,109.0518 L351.5,107.9835 L361.5,109.3151 L371.5,107.6242 L381.5,107.701 L391.5,108.4297 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="178.5" y="103.4966">Page Request</text><polygon fill="#FFA500" points="182.5,133.5625,182.5338,133.6469,180.5801,134.5628,178.4863,135.1282,176.5625,136.1188,174.4623,136.6683,172.5,137.5625,172.4595,137.4612,174.4474,138.2309,176.4115,138.9412,178.4528,139.8445,180.5711,140.9402,182.5,141.5625,182.5892,141.6517,181.6646,140.7271,180.9972,140.0597,180.0867,139.1492,179.2593,138.3218,178.5,137.5625,178.3348,137.3973,179.16,136.6225,180.1652,136.0277,180.7881,135.0506,181.7929,134.4554,182.5,133.5625" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M176.5,137.5625 L176.5,138.2069 L186.2826,137.2001 L196.0652,137.5646 L205.8478,137.9032 L215.6304,137.7082 L225.413,138.562 L235.1957,138.1257 L244.9783,136.8797 L254.7609,137.6682 L264.5435,138.5399 L274.3261,138.258 L284.1087,137.7473 L293.8913,136.8439 L303.6739,138.4815 L313.4565,137.1384 L323.2391,136.6094 L333.0217,137.9638 L342.8043,136.8675 L352.587,137.3909 L362.3696,137.2532 L372.1522,137.2061 L381.9348,137.1456 L391.7174,137.7231 L401.5,137.5625 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="202" x="188.5" y="132.6294">Static Content (HTML+JS+CSS)</text><polygon fill="#FFEFD5" filter="url(#f1)" points="65,150.6953,64.8751,150.6953,65.2153,158.6953,64.9601,166.6953,64.9694,174.6953,65.0546,182.6953,65,190.6953,65,191.2386,74.7,190.3939,84.4,191.402,94.1,190.4957,103.8,190.834,113.5,190.253,123.2,191.224,132.9,191.0314,142.6,191.3195,152.3,191.2965,162,190.6953,162.2025,190.6953,161.8962,184.6953,161.9566,178.6953,161.8359,172.6953,161.779,166.6953,162,160.6953,161.8321,160.5274,160.0227,158.7181,158.0703,156.7656,155.9524,154.6477,153.8485,152.5438,152,150.6953,152,150.5029,142.3333,150.0979,132.6667,150.2879,123,150.3441,113.3333,151.1395,103.6667,151.1284,94,150.0166,84.3333,151.057,74.6667,151.0791,65,150.6953" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M152,150.6953 L152.1762,150.6953 L151.7044,152.6953 L151.7696,154.6953 L152.2172,156.6953 L152.1837,158.6953 L152,160.6953 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M162,160.6953 L162,160.4337 L160,160.517 L158,160.4578 L156,160.4506 L154,160.791 L152,160.6953 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="71" y="167.7622">MVC with</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="71" y="182.895">backbone.js</text><polygon fill="#FFA500" points="385.5,216.9609,385.5523,217.0918,387.4748,217.698,389.4467,218.4277,391.4157,219.1501,393.585,220.3733,395.5,220.9609,395.5572,221.1039,393.414,221.546,391.5842,222.7715,389.4943,223.3467,387.4476,224.03,385.5,224.9609,385.475,224.9359,386.1347,223.9957,387.0947,223.3557,388.0023,222.6632,388.5548,221.6158,389.5,220.9609,389.3323,220.7933,388.6334,220.0943,387.8414,219.3023,387.0831,218.544,386.3831,217.844,385.5,216.9609" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M171.5,220.9609 L171.5,220.8783 L181.5,221.227 L191.5,220.9184 L201.5,221.6995 L211.5,220.8479 L221.5,220.2938 L231.5,220.9687 L241.5,220.8722 L251.5,221.2758 L261.5,221.035 L271.5,221.8948 L281.5,221.4253 L291.5,221.5777 L301.5,221.9198 L311.5,220.5096 L321.5,220.2354 L331.5,221.6653 L341.5,220.7741 L351.5,220.3243 L361.5,220.3052 L371.5,221.8685 L381.5,220.8904 L391.5,220.9609 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="122" x="178.5" y="216.0278">API Request (JSON)</text><polygon fill="#FFEFD5" filter="url(#f1)" points="412,234.0938,412.221,234.0938,412.0233,242.0938,412.1804,250.0938,411.7807,258.0938,411.7716,266.0938,412,274.0938,412,273.5181,422.2222,273.5436,432.4444,274.5261,442.6667,274.3255,452.8889,274.383,463.1111,274.774,473.3333,274.2315,483.5556,274.7174,493.7778,274.6059,504,274.4552,514.2222,274.7561,524.4444,274.7483,534.6667,273.781,544.8889,274.1102,555.1111,274.2588,565.3333,274.5804,575.5556,274.1838,585.7778,274.6292,596,274.0938,595.7586,274.0938,595.868,268.0938,596.1651,262.0938,596.044,256.0938,596.196,250.0938,596,244.0938,596.1146,244.2084,593.8388,241.9325,591.975,240.0687,590.0987,238.1924,588.0277,236.1214,586,234.0938,586,234.1635,575.7647,234.5202,565.5294,234.3297,555.2941,233.8914,545.0588,234.0505,534.8235,233.9013,524.5882,234.3183,514.3529,233.4017,504.1176,233.9079,493.8824,234.2073,483.6471,234.0649,473.4118,233.7037,463.1765,233.9838,452.9412,234.2494,442.7059,234.8205,432.4706,234.0944,422.2353,234.3628,412,234.0938" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M586,234.0938 L585.6713,234.0938 L586.0568,236.0938 L585.9712,238.0938 L586.1632,240.0938 L586.2068,242.0938 L586,244.0938 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M596,244.0938 L596,243.9305 L594,244.3695 L592,243.9641 L590,244.0271 L588,243.7661 L586,244.0938 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="418" y="251.1606">Build JSON response</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="163" x="418" y="266.2935">in Galaxy "API" controllers</text><polygon fill="#FFA500" points="182.5,300.3594,182.4301,300.1847,180.5228,301.2163,178.4902,301.9349,176.5024,302.7653,174.4104,303.3353,172.5,304.3594,172.4633,304.2677,174.4959,305.1492,176.5728,306.1414,178.4422,306.615,180.4425,307.4157,182.5,308.3594,182.4201,308.2795,181.6121,307.4715,180.8092,306.6686,180.0405,305.8998,179.1444,305.0038,178.5,304.3594,178.6371,304.4965,179.3433,303.6026,180.0905,302.7499,180.877,301.9364,181.7154,301.1748,182.5,300.3594" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M176.5,304.3594 L176.5,303.8825 L186.2826,304.5494 L196.0652,303.8111 L205.8478,304.2158 L215.6304,304.122 L225.413,304.2065 L235.1957,305.1017 L244.9783,303.4981 L254.7609,304.1355 L264.5435,305.0298 L274.3261,304.5719 L284.1087,304.0708 L293.8913,303.8577 L303.6739,304.2883 L313.4565,304.5366 L323.2391,304.1766 L333.0217,304.9888 L342.8043,304.7888 L352.587,303.7563 L362.3696,303.6779 L372.1522,304.1321 L381.9348,304.802 L391.7174,303.4797 L401.5,304.3594 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="132" x="188.5" y="299.4263">API Response (JSON)</text><polygon fill="#FFEFD5" filter="url(#f1)" points="8,317.4922,8.3293,317.4922,7.8182,326.6589,8.2017,335.8255,8.5408,344.9922,8.4678,354.1589,7.527,363.3255,8,372.4922,8,373.06,17.6875,372.9243,27.375,372.7508,37.0625,372.2472,46.75,372.9424,56.4375,372.3229,66.125,373.1769,75.8125,372.8874,85.5,372.2594,95.1875,372.95,104.875,372.1346,114.5625,372.2756,124.25,371.8833,133.9375,372.9696,143.625,373.1465,153.3125,372.0404,163,372.4922,162.4894,372.4922,163.2137,363.4922,163.548,354.4922,163.2841,345.4922,162.3434,336.4922,163,327.4922,162.9589,327.4511,161.1466,325.6388,158.9378,323.43,157.1148,321.607,154.8368,319.329,153,317.4922,153,317.7557,143.3333,317.121,133.6667,316.854,124,317.096,114.3333,316.8661,104.6667,317.7832,95,318.2349,85.3333,317.3719,75.6667,317.2953,66,316.828,56.3333,317.4415,46.6667,318.0502,37,317.7882,27.3333,316.8146,17.6667,317.8103,8,317.4922" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M153,317.4922 L153.287,317.4922 L153.091,319.4922 L152.8191,321.4922 L152.8141,323.4922 L153.267,325.4922 L153,327.4922 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M163,327.4922 L163,327.459 L161,327.4052 L159,327.5667 L157,327.5152 L155,327.7938 L153,327.4922 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="131" x="14" y="334.5591">HTML rendered from</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="14" y="349.6919">client-side templates</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="14" y="364.8247">(in Backbone views).</text></g></svg> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="432px" preserveAspectRatio="none" style="width:608px;height:432px;" version="1.1" viewBox="0 0 608 432" width="608px" zoomAndPan="magnify"><defs><filter height="300%" id="fmn3oq6gvoux9" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" points="397.5,108.5625,397.5,108.6326,399.5,108.4244,401.5,108.6269,403.5,108.6957,405.5,108.3247,407.5,108.5625,407.4741,108.5625,407.3578,114.3891,407.3722,120.2156,407.4773,126.0422,407.2695,131.8688,407.5,137.6953,407.5,137.8799,405.5,137.4852,403.5,137.6294,401.5,137.8393,399.5,137.6667,397.5,137.6953,397.5227,137.6953,397.4894,131.8688,397.5595,126.0422,397.5797,120.2156,397.6952,114.3891,397.5,108.5625" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" points="397.5,221.0938,397.5,221.1638,399.5,220.9556,401.5,221.1582,403.5,221.227,405.5,220.856,407.5,221.0938,407.4223,221.0938,407.0735,231.5186,407.1165,241.9434,407.4318,252.3682,406.8086,262.793,408.0536,273.2178,406.8697,283.6426,407.3022,294.0674,407.5,304.4922,407.5,304.6362,405.5,304.4636,403.5,304.5149,401.5,304.4815,399.5,304.5517,397.5,304.4922,397.7391,304.4922,398.0857,294.0674,398.1711,283.6426,398.1793,273.2178,397.7546,262.793,397.9636,252.3682,398.2022,241.9434,396.7788,231.5186,397.5,221.0938" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M171,38.2969 L171.2802,38.2969 L170.4476,48.3996 L171.2577,58.5022 L171.5329,68.6049 L170.0488,78.7076 L170.8964,88.8103 L170.4313,98.9129 L170.4887,109.0156 L170.9091,119.1183 L170.0782,129.221 L171.7382,139.3237 L170.1596,149.4263 L170.7363,159.529 L171.5759,169.6317 L170.8856,179.7344 L171.091,189.8371 L170.9574,199.9397 L171.238,210.0424 L171.3188,220.1451 L171.7809,230.2478 L171.8947,240.3504 L171.9057,250.4531 L171.3395,260.5558 L171.6181,270.6585 L171.9363,280.7612 L170.0384,290.8638 L171.9047,300.9665 L170.6047,311.0692 L171.7117,321.1719 L170.34,331.2746 L170.9087,341.3772 L171.9888,351.4799 L170.935,361.5826 L171.1404,371.6853 L171.4515,381.7879 L171,391.8906 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M402.5,38.2969 L402.7802,38.2969 L401.9476,48.3996 L402.7577,58.5022 L403.0329,68.6049 L401.5488,78.7076 L402.3964,88.8103 L401.9313,98.9129 L401.9887,109.0156 L402.4091,119.1183 L401.5782,129.221 L403.2382,139.3237 L401.6596,149.4263 L402.2363,159.529 L403.0759,169.6317 L402.3856,179.7344 L402.591,189.8371 L402.4574,199.9397 L402.738,210.0424 L402.8188,220.1451 L403.2809,230.2478 L403.3947,240.3504 L403.4057,250.4531 L402.8395,260.5558 L403.1181,270.6585 L403.4363,280.7612 L401.5384,290.8638 L403.4047,300.9665 L402.1047,311.0692 L403.2117,321.1719 L401.84,331.2746 L402.4087,341.3772 L403.4888,351.4799 L402.435,361.5826 L402.6404,371.6853 L402.9515,381.7879 L402.5,391.8906 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><polygon fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" points="134,3,134,3.2102,144.1429,2.5857,154.2857,3.1933,164.4286,3.3997,174.5714,2.2866,184.7143,2.9223,194.8571,2.5735,205,3,204.8722,3,204.9773,9.0594,204.7695,15.1188,205.1845,21.1781,204.7899,27.2375,205,33.2969,205,33.0991,194.8571,33.7288,184.7143,33.2111,174.5714,33.3651,164.4286,33.2649,154.2857,33.4754,144.1429,33.536,134,33.2969,134.1952,33.2969,134.2237,27.2375,134.2264,21.1781,134.0849,15.1187,134.1545,9.0594,134,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="141" y="22.9951">Browser</text><polygon fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" points="134,390.8906,134,391.1008,144.1429,390.4763,154.2857,391.0839,164.4286,391.2903,174.5714,390.1772,184.7143,390.8129,194.8571,390.4641,205,390.8906,204.8722,390.8906,204.9773,396.95,204.7695,403.0094,205.1845,409.0688,204.7899,415.1281,205,421.1875,205,420.9897,194.8571,421.6194,184.7143,421.1017,174.5714,421.2557,164.4286,421.1556,154.2857,421.366,144.1429,421.4266,134,421.1875,134.1952,421.1875,134.2237,415.1281,134.2264,409.0688,134.0849,403.0094,134.1545,396.95,134,390.8906" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="141" y="410.8857">Browser</text><polygon fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" points="371.5,3,371.5,3.2102,381.1667,2.5857,390.8333,3.1933,400.5,3.3997,410.1667,2.2866,419.8333,2.9223,429.5,3,429.3578,3,429.3722,9.0594,429.4773,15.1188,429.2695,21.1781,429.6845,27.2375,429.5,33.2969,429.5,32.6666,419.8333,33.0991,410.1667,33.7288,400.5,33.2111,390.8333,33.3651,381.1667,33.2649,371.5,33.2969,371.5595,33.2969,371.5797,27.2375,371.6952,21.1781,371.7237,15.1187,371.7264,9.0594,371.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="378.5" y="22.9951">Server</text><polygon fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" points="371.5,390.8906,371.5,391.1008,381.1667,390.4763,390.8333,391.0839,400.5,391.2903,410.1667,390.1772,419.8333,390.8129,429.5,390.8906,429.3578,390.8906,429.3722,396.95,429.4773,403.0094,429.2695,409.0688,429.6845,415.1281,429.5,421.1875,429.5,420.5572,419.8333,420.9897,410.1667,421.6194,400.5,421.1017,390.8333,421.2557,381.1667,421.1556,371.5,421.1875,371.5595,421.1875,371.5797,415.1281,371.6952,409.0688,371.7237,403.0094,371.7264,396.95,371.5,390.8906" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="378.5" y="410.8857">Server</text><polygon fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" points="397.5,108.5625,397.5,108.6326,399.5,108.4244,401.5,108.6269,403.5,108.6957,405.5,108.3247,407.5,108.5625,407.4741,108.5625,407.3578,114.3891,407.3722,120.2156,407.4773,126.0422,407.2695,131.8688,407.5,137.6953,407.5,137.8799,405.5,137.4852,403.5,137.6294,401.5,137.8393,399.5,137.6667,397.5,137.6953,397.5227,137.6953,397.4894,131.8688,397.5595,126.0422,397.5797,120.2156,397.6952,114.3891,397.5,108.5625" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" points="397.5,221.0938,397.5,221.1638,399.5,220.9556,401.5,221.1582,403.5,221.227,405.5,220.856,407.5,221.0938,407.4223,221.0938,407.0735,231.5186,407.1165,241.9434,407.4318,252.3682,406.8086,262.793,408.0536,273.2178,406.8697,283.6426,407.3022,294.0674,407.5,304.4922,407.5,304.6362,405.5,304.4636,403.5,304.5149,401.5,304.4815,399.5,304.5517,397.5,304.4922,397.7391,304.4922,398.0857,294.0674,398.1711,283.6426,398.1793,273.2178,397.7546,262.793,397.9636,252.3682,398.2022,241.9434,396.7788,231.5186,397.5,221.0938" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M139,53.2969 L139.1868,53.2969 L138.6317,58.2969 L139.1718,63.2969 L139.3553,68.2969 L138.3659,73.2969 L139,78.2969 L139,78.0896 L149.1379,77.1596 L159.2759,77.2742 L169.4138,78.1151 L179.5517,76.4532 L189.6897,79.7733 L199.8276,76.6161 L209.9655,77.7695 L220.1034,79.4487 L230.2414,78.0681 L240.3793,78.4788 L250.5172,78.2117 L260.6552,78.7729 L270.7931,78.9346 L280.931,79.8587 L291.069,80.0864 L301.2069,80.1082 L311.3448,78.9759 L321.4828,79.5331 L331.6207,80.1695 L341.7586,76.3737 L351.8966,80.1062 L362.0345,77.5062 L372.1724,79.7204 L382.3103,76.9768 L392.4483,78.1142 L402.5862,80.2745 L412.7241,78.1669 L422.8621,78.5777 L433,78.2969 L433.301,78.2969 L433.37,75.2969 L432.9965,72.2969 L433.2553,69.2969 L432.4912,66.2969 L433,63.2969 L433.1787,63.4756 L431.3446,61.6414 L429.2794,59.5763 L427.3853,57.6822 L424.6964,54.9932 L423,53.2969 L423,51.5577 L412.8571,51.6398 L402.7143,53.1399 L392.5714,52.7728 L382.4286,55.114 L372.2857,52.8311 L362.1429,52.3821 L352,53.9056 L341.8571,51.5186 L331.7143,51.9125 L321.5714,55.0274 L311.4286,54.4587 L301.2857,55.2555 L291.1429,52.4388 L281,54.1481 L270.8571,54.8713 L260.7143,52.0371 L250.5714,53.0412 L240.4286,53.6328 L230.2857,55.0349 L220.1429,53.2857 L210,54.5304 L199.8571,51.8201 L189.7143,51.4909 L179.5714,54.6398 L169.4286,51.385 L159.2857,54.6541 L149.1429,53.8479 L139,53.2969 " fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M423,53.2969 L422.7619,53.2969 L422.6855,55.2969 L423.4078,57.2969 L422.7339,59.2969 L423.5261,61.2969 L423,63.2969 L423,62.8055 L425,63.8457 L427,63.7274 L429,63.5146 L431,63.3388 L433,63.2969 L433.4567,63.7536 L431.3857,61.6825 L429.1064,59.4033 L427.1686,57.4654 L424.9181,55.215 L423,53.2969 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="263.75" y="70.3638">HTTP</text><polygon fill="#FFA500" points="385.5,104.5625,385.526,104.6275,387.4487,105.2343,389.5239,106.2223,391.5495,107.0862,393.4117,107.5417,395.5,108.5625,395.4904,108.5384,393.4472,109.2305,391.4525,110.0438,389.4916,110.9414,387.4144,111.5485,385.5,112.5625,385.6305,112.693,386.1514,111.6139,387.0534,110.9159,388.0018,110.2643,388.6798,109.3423,389.5,108.5625,389.5161,108.5786,388.6925,107.755,387.9421,107.0046,387.1564,106.2189,386.438,105.5005,385.5,104.5625" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M171.5,108.5625 L171.5,108.8427 L181.5,108.0101 L191.5,108.8202 L201.5,109.0954 L211.5,107.6113 L221.5,108.4589 L231.5,107.9938 L241.5,108.0512 L251.5,108.4716 L261.5,107.6407 L271.5,109.3007 L281.5,107.7221 L291.5,108.2988 L301.5,109.1384 L311.5,108.4481 L321.5,108.6535 L331.5,108.5199 L341.5,108.8005 L351.5,108.8813 L361.5,109.3434 L371.5,109.4572 L381.5,109.4682 L391.5,108.5625 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="178.5" y="103.4966">Page Request</text><polygon fill="#FFA500" points="182.5,133.6953,182.526,133.7604,180.4487,134.3671,178.5239,135.3551,176.5495,136.219,174.4117,136.6745,172.5,137.6953,172.4904,137.6713,174.4472,138.3633,176.4525,139.1766,178.4916,140.0742,180.4144,140.6813,182.5,141.6953,182.6305,141.8258,181.5514,140.7468,180.8534,140.0487,180.2018,139.3971,179.2798,138.4751,178.5,137.6953,178.5161,137.7114,179.2925,136.8878,180.1421,136.1374,180.9564,135.3517,181.838,134.6334,182.5,133.6953" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M176.5,137.6953 L176.5,137.9756 L186.2826,137.1429 L196.0652,137.953 L205.8478,138.2282 L215.6304,136.7441 L225.413,137.5917 L235.1957,137.1267 L244.9783,137.184 L254.7609,137.6044 L264.5435,136.7735 L274.3261,138.4335 L284.1087,136.8549 L293.8913,137.4316 L303.6739,138.2712 L313.4565,137.5809 L323.2391,137.7863 L333.0217,137.6527 L342.8043,137.9333 L352.587,138.0142 L362.3696,138.4762 L372.1522,138.5901 L381.9348,138.601 L391.7174,138.0348 L401.5,137.6953 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="202" x="188.5" y="132.6294">Static Content (HTML+JS+CSS)</text><path d="M65,150.6953 L65.1868,150.6953 L64.6317,158.6953 L65.1718,166.6953 L65.3553,174.6953 L64.3659,182.6953 L65,190.6953 L65,190.4881 L74.7,189.558 L84.4,189.6726 L94.1,190.5136 L103.8,188.8517 L113.5,192.1717 L123.2,189.0146 L132.9,190.1679 L142.6,191.8472 L152.3,190.4666 L162,190.6953 L162.0607,190.6953 L161.9716,184.6953 L162.1587,178.6953 L162.2126,172.6953 L162.5206,166.6953 L162,160.6953 L162.4218,161.1171 L160.4269,159.1223 L158.16,156.8554 L156.2914,154.9867 L154.4414,153.1367 L152,150.6953 L152,148.7722 L142.3333,152.5047 L132.6667,149.9046 L123,152.1188 L113.3333,149.3753 L103.6667,150.5126 L94,152.6729 L84.3333,150.5654 L74.6667,150.9761 L65,150.6953 " fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M152,150.6953 L152.301,150.6953 L152.37,152.6953 L151.9965,154.6953 L152.2553,156.6953 L151.4912,158.6953 L152,160.6953 L152,160.9481 L154,161.1826 L156,161.0905 L158,161.2402 L160,160.2659 L162,160.6953 L161.5901,160.2854 L159.6094,158.3047 L157.963,156.6583 L155.8765,154.5718 L154.4283,153.1236 L152,150.6953 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="71" y="167.7622">MVC with</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="71" y="182.895">backbone.js</text><polygon fill="#FFA500" points="385.5,217.0938,385.526,217.1588,387.4487,217.7655,389.5239,218.7536,391.5495,219.6174,393.4117,220.073,395.5,221.0938,395.4904,221.0697,393.4472,221.7618,391.4525,222.5751,389.4916,223.4727,387.4144,224.0798,385.5,225.0938,385.6305,225.2242,386.1514,224.1452,387.0534,223.4471,388.0018,222.7956,388.6798,221.8735,389.5,221.0938,389.5161,221.1098,388.6925,220.2862,387.9421,219.5358,387.1564,218.7501,386.438,218.0318,385.5,217.0938" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M171.5,221.0938 L171.5,221.374 L181.5,220.5413 L191.5,221.3515 L201.5,221.6267 L211.5,220.1426 L221.5,220.9901 L231.5,220.5251 L241.5,220.5824 L251.5,221.0029 L261.5,220.1719 L271.5,221.8319 L281.5,220.2534 L291.5,220.8301 L301.5,221.6697 L311.5,220.9794 L321.5,221.1847 L331.5,221.0512 L341.5,221.3318 L351.5,221.4126 L361.5,221.8747 L371.5,221.9885 L381.5,221.9994 L391.5,221.0938 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="122" x="178.5" y="216.0278">API Request (JSON)</text><path d="M412,234.0938 L412.1868,234.0938 L411.6317,242.0938 L412.1718,250.0938 L412.3553,258.0938 L411.3659,266.0938 L412,274.0938 L412,273.8865 L422.2222,272.9564 L432.4444,273.0711 L442.6667,273.912 L452.8889,272.2501 L463.1111,275.5701 L473.3333,272.413 L483.5556,273.5664 L493.7778,275.2456 L504,273.865 L514.2222,274.2757 L524.4444,274.0086 L534.6667,274.5698 L544.8889,274.7314 L555.1111,275.6556 L565.3333,275.8832 L575.5556,275.9051 L585.7778,274.7728 L596,274.0938 L596.4121,274.0938 L596.6242,268.0938 L595.3589,262.0938 L596.6031,256.0938 L595.7364,250.0938 L596,244.0938 L596.3355,244.4293 L593.6889,241.7826 L591.9569,240.0507 L590.4661,238.5599 L587.9694,236.0631 L586,234.0938 L586,234.3746 L575.7647,234.9968 L565.5294,235.2037 L555.2941,234.0833 L545.0588,234.8597 L534.8235,232.5673 L524.5882,234.8521 L514.3529,235.5556 L504.1176,235.2792 L493.8824,235.7285 L483.6471,232.8055 L473.4118,232.3546 L463.1765,232.4367 L452.9412,233.9367 L442.7059,233.5697 L432.4706,235.9108 L422.2353,233.6279 L412,234.0938 " fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M586,234.0938 L585.6951,234.0938 L586.2029,236.0938 L585.4073,238.0938 L585.5386,240.0938 L586.5768,242.0938 L586,244.0938 L586,244.481 L588,244.7466 L590,243.8077 L592,244.3775 L594,244.6186 L596,244.0938 L595.7031,243.7968 L593.9397,242.0335 L592.0792,240.1729 L590.4097,238.5034 L587.9974,236.0911 L586,234.0938 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="418" y="251.1606">Build JSON response</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="163" x="418" y="266.2935">in Galaxy "API" controllers</text><polygon fill="#FFA500" points="182.5,300.4922,182.526,300.5572,180.4487,301.164,178.5239,302.152,176.5495,303.0159,174.4117,303.4714,172.5,304.4922,172.4904,304.4681,174.4472,305.1602,176.4525,305.9735,178.4916,306.8711,180.4144,307.4782,182.5,308.4922,182.6305,308.6227,181.5514,307.5436,180.8534,306.8456,180.2018,306.194,179.2798,305.272,178.5,304.4922,178.5161,304.5083,179.2925,303.6847,180.1421,302.9343,180.9564,302.1486,181.838,301.4302,182.5,300.4922" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M176.5,304.4922 L176.5,304.7724 L186.2826,303.9398 L196.0652,304.7499 L205.8478,305.0251 L215.6304,303.541 L225.413,304.3886 L235.1957,303.9235 L244.9783,303.9809 L254.7609,304.4013 L264.5435,303.5704 L274.3261,305.2304 L284.1087,303.6518 L293.8913,304.2285 L303.6739,305.0681 L313.4565,304.3778 L323.2391,304.5832 L333.0217,304.4496 L342.8043,304.7302 L352.587,304.811 L362.3696,305.2731 L372.1522,305.3869 L381.9348,305.3979 L391.7174,304.8317 L401.5,304.4922 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="132" x="188.5" y="299.4263">API Response (JSON)</text><path d="M8,317.4922 L8.5605,317.4922 L6.8951,326.6589 L8.5154,335.8255 L9.0658,344.9922 L6.0976,354.1589 L7.7928,363.3255 L8,372.4922 L8,371.3549 L17.6875,371.4695 L27.375,372.3104 L37.0625,370.6485 L46.75,373.9686 L56.4375,370.8114 L66.125,371.9648 L75.8125,373.644 L85.5,372.2634 L95.1875,372.6742 L104.875,372.407 L114.5625,372.9683 L124.25,373.1299 L133.9375,374.054 L143.625,374.2817 L153.3125,374.3035 L163,372.4922 L163.679,372.4922 L164.2362,363.4922 L164.8726,354.4922 L161.0768,345.4922 L164.8094,336.4922 L163,327.4922 L162.8136,327.3058 L161.3355,325.8277 L158.6889,323.181 L156.9569,321.4491 L155.4661,319.9583 L153,317.4922 L153,317.3622 L143.3333,317.773 L133.6667,318.3952 L124,318.6021 L114.3333,317.4818 L104.6667,318.2581 L95,315.9657 L85.3333,318.2506 L75.6667,318.954 L66,318.6776 L56.3333,319.1269 L46.6667,316.204 L37,315.753 L27.3333,315.8351 L17.6667,317.3352 L8,317.4922 " fill="#FFEFD5" filter="url(#fmn3oq6gvoux9)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M153,317.4922 L152.8253,317.4922 L153.6057,319.4922 L152.8447,321.4922 L152.6951,323.4922 L153.2029,325.4922 L153,327.4922 L153,326.8994 L155,327.0307 L157,328.069 L159,327.8794 L161,328.1451 L163,327.4922 L162.7977,327.2899 L161.2006,325.6928 L159.3711,323.8633 L156.7031,321.1953 L154.9397,319.4319 L153,317.4922 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="131" x="14" y="334.5591">HTML rendered from</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="14" y="349.6919">client-side templates</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="14" y="364.8247">(in Backbone views).</text><!--MD5=[bc86ae99de080ccbd1efba896b685208] +@startuml + + +!include plantuml_options.txt + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +Server - ->Browser: Static Content (HTML+JS+CSS) +deactivate Server + +note left of Browser: MVC with \nbackbone.js +Browser -> Server: API Request (JSON) +activate Server +note right of Server: Build JSON response\nin Galaxy "API" controllers +Server - -> Browser: API Response (JSON) +deactivate Server + +note left of Browser: HTML rendered from\nclient-side templates\n(in Backbone views). +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +Server - ->Browser: Static Content (HTML+JS+CSS) +deactivate Server + +note left of Browser: MVC with \nbackbone.js +Browser -> Server: API Request (JSON) +activate Server +note right of Server: Build JSON response\nin Galaxy "API" controllers +Server - -> Browser: API Response (JSON) +deactivate Server + +note left of Browser: HTML rendered from\nclient-side templates\n(in Backbone views). +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/server_client.plantuml.txt b/topics/dev/images/server_client.plantuml.txt new file mode 100644 index 00000000000000..eadc62249c8e1b --- /dev/null +++ b/topics/dev/images/server_client.plantuml.txt @@ -0,0 +1,20 @@ +@startuml + +!include plantuml_options.txt + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +Server -->Browser: Static Content (HTML+JS+CSS) +deactivate Server + +note left of Browser: MVC with \nbackbone.js +Browser -> Server: API Request (JSON) +activate Server +note right of Server: Build JSON response\nin Galaxy "API" controllers +Server --> Browser: API Response (JSON) +deactivate Server + +note left of Browser: HTML rendered from\nclient-side templates\n(in Backbone views). +@enduml diff --git a/topics/dev/images/server_client_old.plantuml.svg b/topics/dev/images/server_client_old.plantuml.svg index c9e8918af7c23c..2258699515fc98 100644 --- a/topics/dev/images/server_client_old.plantuml.svg +++ b/topics/dev/images/server_client_old.plantuml.svg @@ -1 +1,73 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="318px" style="width:647px;height:318px;" version="1.1" viewBox="0 0 647 318" width="647px"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f1)" points="434.5,108.4297,434.5,108.4613,436.5,108.4309,438.5,108.4554,440.5,108.3844,442.5,108.3653,444.5,108.4297,444.1915,108.4297,444.4579,118.2828,444.7841,128.1359,444.2668,137.9891,443.8892,147.8422,443.8762,157.6953,444.5486,167.5484,443.7605,177.4016,444.9285,187.2547,443.892,197.1078,444.5,206.9609,444.5,206.9433,442.5,207.1519,440.5,206.9852,438.5,207.2088,436.5,206.9593,434.5,206.9609,434.2636,206.9609,434.9139,197.1078,435.0396,187.2547,434.2434,177.4016,435.2292,167.5484,434.6965,157.6953,434.7711,147.8422,434.2634,137.9891,435.0646,128.1359,433.853,118.2828,434.5,108.4297" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M208,38.2969 L207.0128,38.2969 L207.3489,48.3411 L207.6957,58.3854 L207.6394,68.4297 L208.8901,78.474 L207.3472,88.5182 L207.3096,98.5625 L207.8475,108.6068 L207.3911,118.651 L207.9599,128.6953 L208.0662,138.7396 L207.9363,148.7839 L208.0552,158.8281 L208.8333,168.8724 L207.5281,178.9167 L208.4563,188.9609 L207.2766,199.0052 L207.5322,209.0495 L207.1205,219.0938 L208.8206,229.138 L208.0605,239.1823 L208.7544,249.2266 L208.0913,259.2708 L207.3548,269.3151 L208,279.3594 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M439.5,38.2969 L440.4817,38.2969 L440.2615,48.3411 L440.0491,58.3854 L439.652,68.4297 L439.3193,78.474 L439.6929,88.5182 L439.7426,98.5625 L440.305,108.6068 L438.5872,118.651 L440.4723,128.6953 L439.4674,138.7396 L440.3488,148.7839 L440.3653,158.8281 L438.9993,168.8724 L439.636,178.9167 L438.9488,188.9609 L440.4622,199.0052 L440.2374,209.0495 L439.6405,219.0938 L440.0078,229.138 L438.9959,239.1823 L439.6697,249.2266 L440.1677,259.2708 L439.4424,269.3151 L439.5,279.3594 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="171,3,171,3.3616,181.1429,3.6639,191.2857,2.3179,201.4286,2.5449,211.5714,3.7143,221.7143,2.4703,231.8571,2.6002,242,3,241.7701,3,242.1243,9.0594,241.7841,15.1188,241.8791,21.1781,241.9785,27.2375,242,33.2969,242,34.0036,231.8571,32.9711,221.7143,32.7165,211.5714,32.7566,201.4286,32.629,191.2857,32.6319,181.1429,32.888,171,33.2969,171.0511,33.2969,170.8268,27.2375,170.8378,21.1781,171.0131,15.1187,170.9466,9.0594,171,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="178" y="22.9951">Browser</text><polygon fill="#FFEFD5" filter="url(#f1)" points="171,278.3594,171,278.5905,181.1429,278.331,191.2857,278.0709,201.4286,278.3053,211.5714,278.4661,221.7143,278.9617,231.8571,277.6208,242,278.3594,241.8698,278.3594,241.756,284.4188,242.0833,290.4781,242.0784,296.5375,241.9791,302.5969,242,308.6563,242,308.7852,231.8571,308.2921,221.7143,308.3382,211.5714,309.1274,201.4286,308.7702,191.2857,308.6249,181.1429,308.9857,171,308.6563,171.1926,308.6563,171.171,302.5969,171.1765,296.5375,170.7683,290.4781,171.1211,284.4188,171,278.3594" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="178" y="298.3545">Browser</text><polygon fill="#FFEFD5" filter="url(#f1)" points="408.5,3,408.5,3.4504,418.1667,2.6765,427.8333,3.2853,437.5,2.2696,447.1667,2.8742,456.8333,3.3281,466.5,3,466.487,3,466.2653,9.0594,466.7299,15.1188,466.3495,21.1781,466.5859,27.2375,466.5,33.2969,466.5,32.5616,456.8333,33.0006,447.1667,33.1725,437.5,33.212,427.8333,34.0305,418.1667,33.7205,408.5,33.2969,408.5018,33.2969,408.7474,27.2375,408.5132,21.1781,408.3178,15.1187,408.4559,9.0594,408.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="415.5" y="22.9951">Server</text><polygon fill="#FFEFD5" filter="url(#f1)" points="408.5,278.3594,408.5,278.03,418.1667,278.9097,427.8333,278.6214,437.5,278.8691,447.1667,278.9755,456.8333,278.35,466.5,278.3594,466.6511,278.3594,466.3432,284.4188,466.5358,290.4781,466.5681,296.5375,466.2854,302.5969,466.5,308.6563,466.5,308.7485,456.8333,308.8453,447.1667,308.5659,437.5,308.4237,427.8333,308.4443,418.1667,308.8695,408.5,308.6563,408.3039,308.6563,408.3398,302.5969,408.4313,296.5375,408.4449,290.4781,408.4433,284.4188,408.5,278.3594" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="415.5" y="298.3545">Server</text><polygon fill="#FFEFD5" filter="url(#f1)" points="434.5,108.4297,434.5,108.3353,436.5,108.574,438.5,108.36,440.5,108.3358,442.5,108.2595,444.5,108.4297,443.8271,108.4297,443.9022,118.2828,443.9536,128.1359,444.4217,137.9891,444.3875,147.8422,444.6541,157.6953,444.9919,167.5484,444.4956,177.4016,443.8888,187.2547,444.7294,197.1078,444.5,206.9609,444.5,206.9606,442.5,206.9081,440.5,206.9038,438.5,206.9425,436.5,206.9578,434.5,206.9609,433.9241,206.9609,434.1833,197.1078,435.2043,187.2547,434.9316,177.4016,434.918,167.5484,434.5315,157.6953,433.8314,147.8422,434.778,137.9891,434.4953,128.1359,434.8344,118.2828,434.5,108.4297" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="176,53.2969,175.9825,53.2969,176.0552,58.2969,176.1831,63.2969,175.9755,68.2969,175.992,73.2969,176,78.2969,176,77.6863,186.1379,78.7925,196.2759,78.7915,206.4138,78.1104,216.5517,78.7457,226.6897,78.5428,236.8276,78.7909,246.9655,78.0709,257.1034,78.5677,267.2414,79.0272,277.3793,77.8804,287.5172,77.8286,297.6552,77.5669,307.7931,77.7478,317.931,78.0316,328.069,78.806,338.2069,77.9405,348.3448,78.7827,358.4828,78.5074,368.6207,77.7329,378.7586,78.0468,388.8966,78.9226,399.0345,78.3876,409.1724,77.9723,419.3103,78.867,429.4483,77.7174,439.5862,77.7621,449.7241,78.1507,459.8621,78.9021,470,78.2969,470.11,78.2969,469.7689,75.2969,470.1191,72.2969,470.2063,69.2969,469.8078,66.2969,470,63.2969,469.9718,63.2687,468.0831,61.38,465.9758,59.2727,463.9175,57.2144,462.0831,55.38,460,53.2969,460,53.9708,449.8571,53.4542,439.7143,53.4031,429.5714,53.7986,419.4286,52.9637,409.2857,52.7026,399.1429,53.2517,389,53.9509,378.8571,53.7209,368.7143,53.2159,358.5714,53.5193,348.4286,53.4135,338.2857,54.0468,328.1429,52.8818,318,52.8754,307.8571,53.289,297.7143,53.9871,287.5714,53.4222,277.4286,52.7218,267.2857,52.6262,257.1429,52.8241,247,53.495,236.8571,53.9632,226.7143,53.3741,216.5714,53.5854,206.4286,52.854,196.2857,53.7054,186.1429,53.0812,176,53.2969" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M460,53.2969 L460.0198,53.2969 L460.1492,55.2969 L460.2352,57.2969 L459.9588,59.2969 L460.0317,61.2969 L460,63.2969 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M470,63.2969 L470,63.3439 L468,63.5632 L466,63.2845 L464,63.0015 L462,63.3679 L460,63.2969 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="300.75" y="70.3638">HTTP</text><polygon fill="#FFA500" points="422.5,104.4297,422.4987,104.4265,424.4578,105.1243,426.5274,106.0981,428.4321,106.6599,430.4607,107.5316,432.5,108.4297,432.5214,108.4831,430.5562,109.3701,428.5415,110.1335,426.4163,110.6204,424.4976,111.6238,422.5,112.4297,422.3329,112.2625,423.4518,111.7815,423.9561,110.6858,424.9518,110.0815,425.8758,109.4055,426.5,108.4297,426.674,108.6037,425.7053,107.635,424.8242,106.7539,424.1898,106.1195,423.18,105.1096,422.5,104.4297" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M208.5,108.4297 L208.5,108.5284 L218.5,108.9523 L228.5,107.8391 L238.5,107.9632 L248.5,108.7389 L258.5,108.9863 L268.5,107.7047 L278.5,108.7892 L288.5,108.1072 L298.5,108.9093 L308.5,108.6912 L318.5,108.8036 L328.5,108.226 L338.5,108.0085 L348.5,107.6898 L358.5,108.9963 L368.5,107.6663 L378.5,108.0974 L388.5,108.5698 L398.5,107.8673 L408.5,107.5826 L418.5,107.5924 L428.5,108.4297 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="215.5" y="103.4966">Page Request</text><polygon fill="#FFEFD5" filter="url(#f1)" points="449,121.5625,449.3727,121.5625,449.0167,130.7292,448.9964,139.8958,449.5095,149.0625,449.3055,158.2292,448.92,167.3958,449,176.5625,449,176.7831,458.9474,176.5543,468.8947,175.9824,478.8421,176.3881,488.7895,176.5465,498.7368,176.9231,508.6842,176.8828,518.6316,176.4507,528.5789,177.0331,538.5263,176.1839,548.4737,176.4758,558.4211,176.2018,568.3684,176.1287,578.3158,175.8697,588.2632,176.4542,598.2105,176.0398,608.1579,176.8498,618.1053,176.4039,628.0526,175.9454,638,176.5625,638.3695,176.5625,637.795,167.5625,638.2204,158.5625,637.9432,149.5625,638.6906,140.5625,638,131.5625,637.9719,131.5344,635.8879,129.4504,633.9874,127.5499,631.9471,125.5096,630.0948,123.6573,628,121.5625,628,122.2646,618.0556,120.9207,608.1111,122.1789,598.1667,122.1314,588.2222,122.0352,578.2778,121.4697,568.3333,121.2575,558.3889,122.288,548.4444,121.5903,538.5,121.8344,528.5556,122.2571,518.6111,121.4165,508.6667,122.0864,498.7222,121.6324,488.7778,121.87,478.8333,121.9907,468.8889,121.1626,458.9444,121.2619,449,121.5625" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M628,121.5625 L628.0061,121.5625 L627.7686,123.5625 L628.1632,125.5625 L627.741,127.5625 L628.0355,129.5625 L628,131.5625 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M638,131.5625 L638,131.2498 L636,131.7717 L634,131.7609 L632,131.6068 L630,131.5955 L628,131.5625 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="140" x="455" y="138.6294">Build HTML fragments</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="163" x="455" y="153.7622">using Mako Python library</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="455" y="168.895">in Galaxy "web" controllers</text><polygon fill="#FFA500" points="219.5,202.9609,219.5546,203.0974,217.4257,203.5751,215.5211,204.6137,213.4427,205.2177,211.452,206.0409,209.5,206.9609,209.5465,207.0772,211.5353,207.8492,213.576,208.751,215.4883,209.3317,217.4661,210.0763,219.5,210.9609,219.4274,210.8884,218.7267,210.1876,217.8401,209.3011,217.0354,208.4964,216.2698,207.7308,215.5,206.9609,215.3931,206.854,216.3727,206.2336,217.0219,205.2828,217.7486,204.4096,218.5308,203.5918,219.5,202.9609" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M213.5,206.9609 L213.5,207.8377 L223.2826,206.7036 L233.0652,207.5266 L242.8478,207.0497 L252.6304,206.5478 L262.413,207.6354 L272.1957,207.8441 L281.9783,207.1384 L291.7609,206.371 L301.5435,207.6455 L311.3261,206.5017 L321.1087,207.8178 L330.8913,206.9547 L340.6739,206.8004 L350.4565,206.1245 L360.2391,207.003 L370.0217,207.8516 L379.8043,207.9437 L389.587,206.2922 L399.3696,206.319 L409.1522,206.0086 L418.9348,206.8747 L428.7174,207.2658 L438.5,206.9609 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="202" x="225.5" y="202.0278">Static Content (HTML+JS+CSS)</text><polygon fill="#FFEFD5" filter="url(#f1)" points="8,220.0938,8.0068,220.0938,7.7807,228.0938,7.7896,236.0938,7.8559,244.0938,7.8504,252.0938,8,260.0938,8,259.9684,18.1053,259.8591,28.2105,259.9729,38.3158,259.4303,48.4211,260.2422,58.5263,260.3079,68.6316,259.4506,78.7368,259.4502,88.8421,260.2181,98.9474,259.3793,109.0526,260.2979,119.1579,259.9329,129.2632,260.5688,139.3684,259.8655,149.4737,260.7238,159.5789,259.9663,169.6842,260.3732,179.7895,259.3998,189.8947,259.8923,200,260.0938,199.9208,260.0938,199.9463,254.0938,199.8145,248.0938,199.8656,242.0938,199.8544,236.0938,200,230.0938,199.9591,230.0529,198.0429,228.1366,195.8861,225.9798,193.8431,223.9369,192.0477,222.1414,190,220.0938,190,219.47,179.8889,220.1775,169.7778,220.713,159.6667,219.5954,149.5556,219.6458,139.4444,220.6982,129.3333,220.0248,119.2222,219.8252,109.1111,219.8511,99,220.6339,88.8889,220.2288,78.7778,219.7829,68.6667,219.8946,58.5556,220.6633,48.4444,220.6441,38.3333,220.1469,28.2222,220.6025,18.1111,220.4337,8,220.0938" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M190,220.0938 L189.939,220.0938 L190.0359,222.0938 L189.78,224.0938 L190.2505,226.0938 L189.7906,228.0938 L190,230.0938 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M200,230.0938 L200,230.178 L198,230.2961 L196,230.0803 L194,230.2157 L192,230.3556 L190,230.0938 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="167" x="14" y="237.1606">Render HTML fragraments</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="92" x="14" y="252.2935">with JavaScript</text></g></svg> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="319px" preserveAspectRatio="none" style="width:650px;height:319px;" version="1.1" viewBox="0 0 650 319" width="650px" zoomAndPan="magnify"><defs><filter height="300%" id="f7u9vedzfby0e" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" points="434.5,108.5625,434.5,108.6326,436.5,108.4244,438.5,108.6269,440.5,108.6957,442.5,108.3247,444.5,108.5625,444.4223,108.5625,444.0735,118.4156,444.1165,128.2688,444.4318,138.1219,443.8086,147.975,445.0536,157.8281,443.8697,167.6813,444.3022,177.5344,444.9319,187.3875,444.4142,197.2406,444.5,207.0938,444.5,207.1165,442.5,207.0831,440.5,207.1533,438.5,207.1735,436.5,207.289,434.5,207.0938,435.1711,207.0938,435.1793,197.2406,434.7546,187.3875,434.9636,177.5344,435.2022,167.6813,433.7788,157.8281,435.1785,147.975,434.2035,138.1219,435.0338,128.2688,434.005,118.4156,434.5,108.5625" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M208,38.2969 L208.2802,38.2969 L207.4476,48.3411 L208.2577,58.3854 L208.5329,68.4297 L207.0488,78.474 L207.8964,88.5182 L207.4313,98.5625 L207.4887,108.6068 L207.9091,118.651 L207.0782,128.6953 L208.7382,138.7396 L207.1596,148.7839 L207.7363,158.8281 L208.5759,168.8724 L207.8856,178.9167 L208.091,188.9609 L207.9574,199.0052 L208.238,209.0495 L208.3188,219.0938 L208.7809,229.138 L208.8947,239.1823 L208.9057,249.2266 L208.3395,259.2708 L208.6181,269.3151 L208,279.3594 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M439.5,38.2969 L439.7802,38.2969 L438.9476,48.3411 L439.7577,58.3854 L440.0329,68.4297 L438.5488,78.474 L439.3964,88.5182 L438.9313,98.5625 L438.9887,108.6068 L439.4091,118.651 L438.5782,128.6953 L440.2382,138.7396 L438.6596,148.7839 L439.2363,158.8281 L440.0759,168.8724 L439.3856,178.9167 L439.591,188.9609 L439.4574,199.0052 L439.738,209.0495 L439.8188,219.0938 L440.2809,229.138 L440.3947,239.1823 L440.4057,249.2266 L439.8395,259.2708 L440.1181,269.3151 L439.5,279.3594 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><polygon fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" points="171,3,171,3.2102,181.1429,2.5857,191.2857,3.1933,201.4286,3.3997,211.5714,2.2866,221.7143,2.9223,231.8571,2.5735,242,3,241.8722,3,241.9773,9.0594,241.7695,15.1188,242.1845,21.1781,241.7899,27.2375,242,33.2969,242,33.0991,231.8571,33.7288,221.7143,33.2111,211.5714,33.3651,201.4286,33.2649,191.2857,33.4754,181.1429,33.536,171,33.2969,171.1952,33.2969,171.2237,27.2375,171.2264,21.1781,171.0849,15.1187,171.1545,9.0594,171,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="178" y="22.9951">Browser</text><polygon fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" points="171,278.3594,171,278.5696,181.1429,277.9451,191.2857,278.5527,201.4286,278.7591,211.5714,277.646,221.7143,278.2817,231.8571,277.9329,242,278.3594,241.8722,278.3594,241.9773,284.4188,241.7695,290.4781,242.1845,296.5375,241.7899,302.5969,242,308.6563,242,308.4585,231.8571,309.0882,221.7143,308.5705,211.5714,308.7245,201.4286,308.6243,191.2857,308.8348,181.1429,308.8954,171,308.6563,171.1952,308.6563,171.2237,302.5969,171.2264,296.5375,171.0849,290.4781,171.1545,284.4188,171,278.3594" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="178" y="298.3545">Browser</text><polygon fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" points="408.5,3,408.5,3.2102,418.1667,2.5857,427.8333,3.1933,437.5,3.3997,447.1667,2.2866,456.8333,2.9223,466.5,3,466.3578,3,466.3722,9.0594,466.4773,15.1188,466.2695,21.1781,466.6845,27.2375,466.5,33.2969,466.5,32.6666,456.8333,33.0991,447.1667,33.7288,437.5,33.2111,427.8333,33.3651,418.1667,33.2649,408.5,33.2969,408.5595,33.2969,408.5797,27.2375,408.6952,21.1781,408.7237,15.1187,408.7264,9.0594,408.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="415.5" y="22.9951">Server</text><polygon fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" points="408.5,278.3594,408.5,278.5696,418.1667,277.9451,427.8333,278.5527,437.5,278.7591,447.1667,277.646,456.8333,278.2817,466.5,278.3594,466.3578,278.3594,466.3722,284.4188,466.4773,290.4781,466.2695,296.5375,466.6845,302.5969,466.5,308.6563,466.5,308.026,456.8333,308.4585,447.1667,309.0882,437.5,308.5705,427.8333,308.7245,418.1667,308.6243,408.5,308.6563,408.5595,308.6563,408.5797,302.5969,408.6952,296.5375,408.7237,290.4781,408.7264,284.4188,408.5,278.3594" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="415.5" y="298.3545">Server</text><polygon fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" points="434.5,108.5625,434.5,108.6326,436.5,108.4244,438.5,108.6269,440.5,108.6957,442.5,108.3247,444.5,108.5625,444.4223,108.5625,444.0735,118.4156,444.1165,128.2688,444.4318,138.1219,443.8086,147.975,445.0536,157.8281,443.8697,167.6813,444.3022,177.5344,444.9319,187.3875,444.4142,197.2406,444.5,207.0938,444.5,207.1165,442.5,207.0831,440.5,207.1533,438.5,207.1735,436.5,207.289,434.5,207.0938,435.1711,207.0938,435.1793,197.2406,434.7546,187.3875,434.9636,177.5344,435.2022,167.6813,433.7788,157.8281,435.1785,147.975,434.2035,138.1219,435.0338,128.2688,434.005,118.4156,434.5,108.5625" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M176,53.2969 L176.1868,53.2969 L175.6317,58.2969 L176.1718,63.2969 L176.3553,68.2969 L175.3659,73.2969 L176,78.2969 L176,78.0896 L186.1379,77.1596 L196.2759,77.2742 L206.4138,78.1151 L216.5517,76.4532 L226.6897,79.7733 L236.8276,76.6161 L246.9655,77.7695 L257.1034,79.4487 L267.2414,78.0681 L277.3793,78.4788 L287.5172,78.2117 L297.6552,78.7729 L307.7931,78.9346 L317.931,79.8587 L328.069,80.0864 L338.2069,80.1082 L348.3448,78.9759 L358.4828,79.5331 L368.6207,80.1695 L378.7586,76.3737 L388.8966,80.1062 L399.0345,77.5062 L409.1724,79.7204 L419.3103,76.9768 L429.4483,78.1142 L439.5862,80.2745 L449.7241,78.1669 L459.8621,78.5777 L470,78.2969 L470.301,78.2969 L470.37,75.2969 L469.9965,72.2969 L470.2553,69.2969 L469.4912,66.2969 L470,63.2969 L470.1787,63.4756 L468.3446,61.6414 L466.2794,59.5763 L464.3853,57.6822 L461.6964,54.9932 L460,53.2969 L460,51.5577 L449.8571,51.6398 L439.7143,53.1399 L429.5714,52.7728 L419.4286,55.114 L409.2857,52.8311 L399.1429,52.3821 L389,53.9056 L378.8571,51.5186 L368.7143,51.9125 L358.5714,55.0274 L348.4286,54.4587 L338.2857,55.2555 L328.1429,52.4388 L318,54.1481 L307.8571,54.8713 L297.7143,52.0371 L287.5714,53.0412 L277.4286,53.6328 L267.2857,55.0349 L257.1429,53.2857 L247,54.5304 L236.8571,51.8201 L226.7143,51.4909 L216.5714,54.6398 L206.4286,51.385 L196.2857,54.6541 L186.1429,53.8479 L176,53.2969 " fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M460,53.2969 L459.7619,53.2969 L459.6855,55.2969 L460.4078,57.2969 L459.7339,59.2969 L460.5261,61.2969 L460,63.2969 L460,62.8055 L462,63.8457 L464,63.7274 L466,63.5146 L468,63.3388 L470,63.2969 L470.4567,63.7536 L468.3857,61.6825 L466.1064,59.4033 L464.1686,57.4654 L461.9181,55.215 L460,53.2969 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="300.75" y="70.3638">HTTP</text><polygon fill="#FFA500" points="422.5,104.5625,422.526,104.6275,424.4487,105.2343,426.5239,106.2223,428.5495,107.0862,430.4117,107.5417,432.5,108.5625,432.4904,108.5384,430.4472,109.2305,428.4525,110.0438,426.4916,110.9414,424.4144,111.5485,422.5,112.5625,422.6305,112.693,423.1514,111.6139,424.0534,110.9159,425.0018,110.2643,425.6798,109.3423,426.5,108.5625,426.5161,108.5786,425.6925,107.755,424.9421,107.0046,424.1564,106.2189,423.438,105.5005,422.5,104.5625" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M208.5,108.5625 L208.5,108.8427 L218.5,108.0101 L228.5,108.8202 L238.5,109.0954 L248.5,107.6113 L258.5,108.4589 L268.5,107.9938 L278.5,108.0512 L288.5,108.4716 L298.5,107.6407 L308.5,109.3007 L318.5,107.7221 L328.5,108.2988 L338.5,109.1384 L348.5,108.4481 L358.5,108.6535 L368.5,108.5199 L378.5,108.8005 L388.5,108.8813 L398.5,109.3434 L408.5,109.4572 L418.5,109.4682 L428.5,108.5625 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="215.5" y="103.4966">Page Request</text><path d="M449,121.5625 L449.5605,121.5625 L447.8951,130.7292 L449.5154,139.8958 L450.0658,149.0625 L447.0976,158.2292 L448.7928,167.3958 L449,176.5625 L449,175.4252 L458.9474,175.5398 L468.8947,176.3807 L478.8421,174.7188 L488.7895,178.0389 L498.7368,174.8818 L508.6842,176.0351 L518.6316,177.7144 L528.5789,176.3338 L538.5263,176.7445 L548.4737,176.4773 L558.4211,177.0386 L568.3684,177.2002 L578.3158,178.1243 L588.2632,178.352 L598.2105,178.3739 L608.1579,177.2415 L618.1053,177.7987 L628.0526,178.4351 L638,176.5625 L636.0768,176.5625 L639.8094,167.5625 L637.2093,158.5625 L639.4235,149.5625 L636.6799,140.5625 L638,131.5625 L637.9569,131.5194 L636.4661,130.0286 L633.9694,127.5319 L632.0662,125.6287 L630.2128,123.7753 L628,121.5625 L628,122.6725 L618.0556,121.5521 L608.1111,122.3284 L598.1667,120.0361 L588.2222,122.3209 L578.2778,123.0244 L568.3333,122.7479 L558.3889,123.1972 L548.4444,120.2743 L538.5,119.8233 L528.5556,119.9054 L518.6111,121.4055 L508.6667,121.0384 L498.7222,123.3796 L488.7778,121.0967 L478.8333,120.6477 L468.8889,122.1712 L458.9444,119.7843 L449,121.5625 " fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M628,121.5625 L627.5386,121.5625 L628.5768,123.5625 L628.3873,125.5625 L628.6529,127.5625 L627.714,129.5625 L628,131.5625 L628,131.8462 L630,132.0873 L632,131.1426 L634,131.4773 L636,131.6745 L638,131.5625 L638.4097,131.9722 L635.9974,129.5599 L634.2907,127.8532 L631.6519,125.2144 L629.5743,123.1368 L628,121.5625 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="140" x="455" y="138.6294">Build HTML fragments</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="163" x="455" y="153.7622">using Mako Python library</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="455" y="168.895">in Galaxy "web" controllers</text><polygon fill="#FFA500" points="219.5,203.0938,219.526,203.1588,217.4487,203.7655,215.5239,204.7536,213.5495,205.6174,211.4117,206.073,209.5,207.0938,209.4904,207.0697,211.4472,207.7618,213.4525,208.5751,215.4916,209.4727,217.4144,210.0798,219.5,211.0938,219.6305,211.2242,218.5514,210.1452,217.8534,209.4471,217.2018,208.7956,216.2798,207.8735,215.5,207.0938,215.5161,207.1098,216.2925,206.2862,217.1421,205.5358,217.9564,204.7501,218.838,204.0318,219.5,203.0938" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M213.5,207.0938 L213.5,207.374 L223.2826,206.5413 L233.0652,207.3515 L242.8478,207.6267 L252.6304,206.1426 L262.413,206.9901 L272.1957,206.5251 L281.9783,206.5824 L291.7609,207.0029 L301.5435,206.1719 L311.3261,207.8319 L321.1087,206.2534 L330.8913,206.8301 L340.6739,207.6697 L350.4565,206.9794 L360.2391,207.1847 L370.0217,207.0512 L379.8043,207.3318 L389.587,207.4126 L399.3696,207.8747 L409.1522,207.9885 L418.9348,207.9994 L428.7174,207.4333 L438.5,207.0938 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="202" x="225.5" y="202.0278">Static Content (HTML+JS+CSS)</text><path d="M8,220.0938 L8.1868,220.0938 L7.6317,228.0938 L8.1718,236.0938 L8.3553,244.0938 L7.3659,252.0938 L8,260.0938 L8,259.8865 L18.1053,258.9564 L28.2105,259.0711 L38.3158,259.912 L48.4211,258.2501 L58.5263,261.5701 L68.6316,258.413 L78.7368,259.5664 L88.8421,261.2456 L98.9474,259.865 L109.0526,260.2757 L119.1579,260.0086 L129.2632,260.5698 L139.3684,260.7314 L149.4737,261.6556 L159.5789,261.8832 L169.6842,261.9051 L179.7895,260.7728 L189.8947,261.33 L200,260.0938 L200.6242,260.0938 L199.3589,254.0938 L200.6031,248.0938 L199.7364,242.0938 L200.4745,236.0938 L200,230.0938 L199.6889,229.7826 L197.9569,228.0507 L196.4661,226.5599 L193.9694,224.0631 L192.0662,222.1599 L190,220.0938 L190,220.9968 L179.8889,221.2037 L169.7778,220.0833 L159.6667,220.8597 L149.5556,218.5673 L139.4444,220.8521 L129.3333,221.5556 L119.2222,221.2792 L109.1111,221.7285 L99,218.8055 L88.8889,218.3546 L78.7778,218.4367 L68.6667,219.9367 L58.5556,219.5697 L48.4444,221.9108 L38.3333,219.6279 L28.2222,219.1789 L18.1111,220.7025 L8,220.0938 " fill="#FFEFD5" filter="url(#f7u9vedzfby0e)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M190,220.0938 L189.4073,220.0938 L189.5386,222.0938 L190.5768,224.0938 L190.3873,226.0938 L190.6529,228.0938 L190,230.0938 L190,229.8077 L192,230.3775 L194,230.6186 L196,229.6738 L198,230.0085 L200,230.0938 L200.0792,230.1729 L198.4097,228.5034 L195.9974,226.0911 L194.2907,224.3845 L191.6519,221.7457 L190,220.0938 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="167" x="14" y="237.1606">Render HTML fragraments</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="92" x="14" y="252.2935">with JavaScript</text><!--MD5=[b86a1f083e82a139199a57cb550d977d] +@startuml + + +!include plantuml_options.txt + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +note right of Server: Build HTML fragments\nusing Mako Python library\nin Galaxy "web" controllers +Server - -> Browser: Static Content (HTML+JS+CSS) +deactivate Server +note left of Browser: Render HTML fragraments \nwith JavaScript + +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +note right of Server: Build HTML fragments\nusing Mako Python library\nin Galaxy "web" controllers +Server - -> Browser: Static Content (HTML+JS+CSS) +deactivate Server +note left of Browser: Render HTML fragraments \nwith JavaScript + +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/server_client_old.plantuml.txt b/topics/dev/images/server_client_old.plantuml.txt new file mode 100644 index 00000000000000..2cc5c1ee5d043a --- /dev/null +++ b/topics/dev/images/server_client_old.plantuml.txt @@ -0,0 +1,14 @@ +@startuml + +!include plantuml_options.txt + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +note right of Server: Build HTML fragments\nusing Mako Python library\nin Galaxy "web" controllers +Server --> Browser: Static Content (HTML+JS+CSS) +deactivate Server +note left of Browser: Render HTML fragraments \nwith JavaScript + +@enduml diff --git a/topics/dev/images/server_client_vuejs.plantuml.svg b/topics/dev/images/server_client_vuejs.plantuml.svg new file mode 100644 index 00000000000000..ee96bd155b670f --- /dev/null +++ b/topics/dev/images/server_client_vuejs.plantuml.svg @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="462px" preserveAspectRatio="none" style="width:689px;height:462px;" version="1.1" viewBox="0 0 689 462" width="689px" zoomAndPan="magnify"><defs><filter height="300%" id="fux3cxuhgg4qh" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" points="478.5,108.5625,478.5,108.6326,480.5,108.4244,482.5,108.6269,484.5,108.6957,486.5,108.3247,488.5,108.5625,488.4741,108.5625,488.3578,114.3891,488.3722,120.2156,488.4773,126.0422,488.2695,131.8688,488.5,137.6953,488.5,137.8799,486.5,137.4852,484.5,137.6294,482.5,137.8393,480.5,137.6667,478.5,137.6953,478.5227,137.6953,478.4894,131.8688,478.5595,126.0422,478.5797,120.2156,478.6952,114.3891,478.5,108.5625" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" points="478.5,221.0938,478.5,221.1638,480.5,220.9556,482.5,221.1582,484.5,221.227,486.5,220.856,488.5,221.0938,488.4223,221.0938,488.0735,231.5186,488.1165,241.9434,488.4318,252.3682,487.8086,262.793,489.0536,273.2178,487.8697,283.6426,488.3022,294.0674,488.5,304.4922,488.5,304.6362,486.5,304.4636,484.5,304.5149,482.5,304.4815,480.5,304.5517,478.5,304.4922,478.7391,304.4922,479.0857,294.0674,479.1711,283.6426,479.1793,273.2178,478.7546,262.793,478.9636,252.3682,479.2022,241.9434,477.7788,231.5186,478.5,221.0938" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M252,38.2969 L252.2802,38.2969 L251.4476,48.3984 L252.2577,58.5 L252.5329,68.6016 L251.0488,78.7031 L251.8964,88.8047 L251.4313,98.9063 L251.4887,109.0078 L251.9091,119.1094 L251.0782,129.2109 L252.7382,139.3125 L251.1596,149.4141 L251.7363,159.5156 L252.5759,169.6172 L251.8856,179.7188 L252.091,189.8203 L251.9574,199.9219 L252.238,210.0234 L252.3188,220.125 L252.7809,230.2266 L252.8947,240.3281 L252.9057,250.4297 L252.3395,260.5313 L252.6181,270.6328 L252.9363,280.7344 L251.0384,290.8359 L252.9047,300.9375 L251.6047,311.0391 L252.7117,321.1406 L251.34,331.2422 L251.9087,341.3438 L252.9888,351.4453 L251.935,361.5469 L252.1404,371.6484 L252.4515,381.75 L252.555,391.8516 L251.9948,401.9531 L252.383,412.0547 L252,422.1563 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M483.5,38.2969 L483.7802,38.2969 L482.9476,48.3984 L483.7577,58.5 L484.0329,68.6016 L482.5488,78.7031 L483.3964,88.8047 L482.9313,98.9063 L482.9887,109.0078 L483.4091,119.1094 L482.5782,129.2109 L484.2382,139.3125 L482.6596,149.4141 L483.2363,159.5156 L484.0759,169.6172 L483.3856,179.7188 L483.591,189.8203 L483.4574,199.9219 L483.738,210.0234 L483.8188,220.125 L484.2809,230.2266 L484.3947,240.3281 L484.4057,250.4297 L483.8395,260.5313 L484.1181,270.6328 L484.4363,280.7344 L482.5384,290.8359 L484.4047,300.9375 L483.1047,311.0391 L484.2117,321.1406 L482.84,331.2422 L483.4087,341.3438 L484.4888,351.4453 L483.435,361.5469 L483.6404,371.6484 L483.9515,381.75 L484.055,391.8516 L483.4948,401.9531 L483.883,412.0547 L483.5,422.1563 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><polygon fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" points="215,3,215,3.2102,225.1429,2.5857,235.2857,3.1933,245.4286,3.3997,255.5714,2.2866,265.7143,2.9223,275.8571,2.5735,286,3,285.8722,3,285.9773,9.0594,285.7695,15.1188,286.1845,21.1781,285.7899,27.2375,286,33.2969,286,33.0991,275.8571,33.7288,265.7143,33.2111,255.5714,33.3651,245.4286,33.2649,235.2857,33.4754,225.1429,33.536,215,33.2969,215.1952,33.2969,215.2237,27.2375,215.2264,21.1781,215.0849,15.1187,215.1545,9.0594,215,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="222" y="22.9951">Browser</text><polygon fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" points="215,421.1563,215,421.3664,225.1429,420.7419,235.2857,421.3495,245.4286,421.5559,255.5714,420.4429,265.7143,421.0785,275.8571,420.7298,286,421.1563,285.8722,421.1563,285.9773,427.2156,285.7695,433.275,286.1845,439.3344,285.7899,445.3938,286,451.4531,286,451.2554,275.8571,451.8851,265.7143,451.3673,255.5714,451.5214,245.4286,451.4212,235.2857,451.6317,225.1429,451.6923,215,451.4531,215.1952,451.4531,215.2237,445.3938,215.2264,439.3344,215.0849,433.275,215.1545,427.2156,215,421.1563" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="222" y="441.1514">Browser</text><polygon fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" points="452.5,3,452.5,3.2102,462.1667,2.5857,471.8333,3.1933,481.5,3.3997,491.1667,2.2866,500.8333,2.9223,510.5,3,510.3578,3,510.3722,9.0594,510.4773,15.1188,510.2695,21.1781,510.6845,27.2375,510.5,33.2969,510.5,32.6666,500.8333,33.0991,491.1667,33.7288,481.5,33.2111,471.8333,33.3651,462.1667,33.2649,452.5,33.2969,452.5595,33.2969,452.5797,27.2375,452.6952,21.1781,452.7237,15.1187,452.7264,9.0594,452.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="459.5" y="22.9951">Server</text><polygon fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" points="452.5,421.1563,452.5,421.3664,462.1667,420.7419,471.8333,421.3495,481.5,421.5559,491.1667,420.4429,500.8333,421.0785,510.5,421.1563,510.3578,421.1563,510.3722,427.2156,510.4773,433.275,510.2695,439.3344,510.6845,445.3938,510.5,451.4531,510.5,450.8228,500.8333,451.2554,491.1667,451.8851,481.5,451.3673,471.8333,451.5214,462.1667,451.4212,452.5,451.4531,452.5595,451.4531,452.5797,445.3938,452.6952,439.3344,452.7237,433.275,452.7264,427.2156,452.5,421.1563" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="44" x="459.5" y="441.1514">Server</text><polygon fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" points="478.5,108.5625,478.5,108.6326,480.5,108.4244,482.5,108.6269,484.5,108.6957,486.5,108.3247,488.5,108.5625,488.4741,108.5625,488.3578,114.3891,488.3722,120.2156,488.4773,126.0422,488.2695,131.8688,488.5,137.6953,488.5,137.8799,486.5,137.4852,484.5,137.6294,482.5,137.8393,480.5,137.6667,478.5,137.6953,478.5227,137.6953,478.4894,131.8688,478.5595,126.0422,478.5797,120.2156,478.6952,114.3891,478.5,108.5625" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" points="478.5,221.0938,478.5,221.1638,480.5,220.9556,482.5,221.1582,484.5,221.227,486.5,220.856,488.5,221.0938,488.4223,221.0938,488.0735,231.5186,488.1165,241.9434,488.4318,252.3682,487.8086,262.793,489.0536,273.2178,487.8697,283.6426,488.3022,294.0674,488.5,304.4922,488.5,304.6362,486.5,304.4636,484.5,304.5149,482.5,304.4815,480.5,304.5517,478.5,304.4922,478.7391,304.4922,479.0857,294.0674,479.1711,283.6426,479.1793,273.2178,478.7546,262.793,478.9636,252.3682,479.2022,241.9434,477.7788,231.5186,478.5,221.0938" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M220,53.2969 L220.1868,53.2969 L219.6317,58.2969 L220.1718,63.2969 L220.3553,68.2969 L219.3659,73.2969 L220,78.2969 L220,78.0896 L230.1379,77.1596 L240.2759,77.2742 L250.4138,78.1151 L260.5517,76.4532 L270.6897,79.7733 L280.8276,76.6161 L290.9655,77.7695 L301.1034,79.4487 L311.2414,78.0681 L321.3793,78.4788 L331.5172,78.2117 L341.6552,78.7729 L351.7931,78.9346 L361.931,79.8587 L372.069,80.0864 L382.2069,80.1082 L392.3448,78.9759 L402.4828,79.5331 L412.6207,80.1695 L422.7586,76.3737 L432.8966,80.1062 L443.0345,77.5062 L453.1724,79.7204 L463.3103,76.9768 L473.4483,78.1142 L483.5862,80.2745 L493.7241,78.1669 L503.8621,78.5777 L514,78.2969 L514.301,78.2969 L514.37,75.2969 L513.9965,72.2969 L514.2553,69.2969 L513.4912,66.2969 L514,63.2969 L514.1787,63.4756 L512.3446,61.6414 L510.2794,59.5763 L508.3853,57.6822 L505.6964,54.9932 L504,53.2969 L504,51.5577 L493.8571,51.6398 L483.7143,53.1399 L473.5714,52.7728 L463.4286,55.114 L453.2857,52.8311 L443.1429,52.3821 L433,53.9056 L422.8571,51.5186 L412.7143,51.9125 L402.5714,55.0274 L392.4286,54.4587 L382.2857,55.2555 L372.1429,52.4388 L362,54.1481 L351.8571,54.8713 L341.7143,52.0371 L331.5714,53.0412 L321.4286,53.6328 L311.2857,55.0349 L301.1429,53.2857 L291,54.5304 L280.8571,51.8201 L270.7143,51.4909 L260.5714,54.6398 L250.4286,51.385 L240.2857,54.6541 L230.1429,53.8479 L220,53.2969 " fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M504,53.2969 L503.7619,53.2969 L503.6855,55.2969 L504.4078,57.2969 L503.7339,59.2969 L504.5261,61.2969 L504,63.2969 L504,62.8055 L506,63.8457 L508,63.7274 L510,63.5146 L512,63.3388 L514,63.2969 L514.4567,63.7536 L512.3857,61.6825 L510.1064,59.4033 L508.1686,57.4654 L505.9181,55.215 L504,53.2969 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="344.75" y="70.3638">HTTP</text><polygon fill="#FFA500" points="466.5,104.5625,466.526,104.6275,468.4487,105.2343,470.5239,106.2223,472.5495,107.0862,474.4117,107.5417,476.5,108.5625,476.4904,108.5384,474.4472,109.2305,472.4525,110.0438,470.4916,110.9414,468.4144,111.5485,466.5,112.5625,466.6305,112.693,467.1514,111.6139,468.0534,110.9159,469.0018,110.2643,469.6798,109.3423,470.5,108.5625,470.5161,108.5786,469.6925,107.755,468.9421,107.0046,468.1564,106.2189,467.438,105.5005,466.5,104.5625" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M252.5,108.5625 L252.5,108.8427 L262.5,108.0101 L272.5,108.8202 L282.5,109.0954 L292.5,107.6113 L302.5,108.4589 L312.5,107.9938 L322.5,108.0512 L332.5,108.4716 L342.5,107.6407 L352.5,109.3007 L362.5,107.7221 L372.5,108.2988 L382.5,109.1384 L392.5,108.4481 L402.5,108.6535 L412.5,108.5199 L422.5,108.8005 L432.5,108.8813 L442.5,109.3434 L452.5,109.4572 L462.5,109.4682 L472.5,108.5625 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="259.5" y="103.4966">Page Request</text><polygon fill="#FFA500" points="263.5,133.6953,263.526,133.7604,261.4487,134.3671,259.5239,135.3551,257.5495,136.219,255.4117,136.6745,253.5,137.6953,253.4904,137.6713,255.4472,138.3633,257.4525,139.1766,259.4916,140.0742,261.4144,140.6813,263.5,141.6953,263.6305,141.8258,262.5514,140.7468,261.8534,140.0487,261.2018,139.3971,260.2798,138.4751,259.5,137.6953,259.5161,137.7114,260.2925,136.8878,261.1421,136.1374,261.9564,135.3517,262.838,134.6334,263.5,133.6953" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M257.5,137.6953 L257.5,137.9756 L267.2826,137.1429 L277.0652,137.953 L286.8478,138.2282 L296.6304,136.7441 L306.413,137.5917 L316.1957,137.1267 L325.9783,137.184 L335.7609,137.6044 L345.5435,136.7735 L355.3261,138.4335 L365.1087,136.8549 L374.8913,137.4316 L384.6739,138.2712 L394.4565,137.5809 L404.2391,137.7863 L414.0217,137.6527 L423.8043,137.9333 L433.587,138.0142 L443.3696,138.4762 L453.1522,138.5901 L462.9348,138.601 L472.7174,138.0348 L482.5,137.6953 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="202" x="269.5" y="132.6294">Static Content (HTML+JS+CSS)</text><path d="M14,150.6953 L14.1868,150.6953 L13.6317,158.6953 L14.1718,166.6953 L14.3553,174.6953 L13.3659,182.6953 L14,190.6953 L14,190.4881 L23.9565,189.558 L33.913,189.6726 L43.8696,190.5136 L53.8261,188.8517 L63.7826,192.1717 L73.7391,189.0146 L83.6957,190.1679 L93.6522,191.8472 L103.6087,190.4666 L113.5652,190.8773 L123.5217,190.6101 L133.4783,191.1714 L143.4348,191.333 L153.3913,192.2572 L163.3478,192.4848 L173.3043,192.5067 L183.2609,191.3743 L193.2174,191.9315 L203.1739,192.5679 L213.1304,188.7722 L223.087,192.5047 L233.0435,189.9046 L243,190.6953 L243.4745,190.6953 L242.56,184.6953 L242.9391,178.6953 L243.6592,172.6953 L242.9567,166.6953 L243,160.6953 L243.0662,160.7615 L241.2128,158.9082 L239.2616,156.9569 L236.9975,154.6929 L235.1805,152.8758 L233,150.6953 L233,149.1689 L223.0455,151.4537 L213.0909,152.1572 L203.1364,151.8807 L193.1818,152.33 L183.2273,149.4071 L173.2727,148.9562 L163.3182,149.0382 L153.3636,150.5383 L143.4091,150.1712 L133.4545,152.5124 L123.5,150.2295 L113.5455,149.7805 L103.5909,151.304 L93.6364,148.9171 L83.6818,149.311 L73.7273,152.4258 L63.7727,151.8571 L53.8182,152.654 L43.8636,149.8372 L33.9091,151.5465 L23.9545,152.2698 L14,150.6953 " fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M233,150.6953 L232.5801,150.6953 L232.9148,152.6953 L233.112,154.6953 L233.5793,156.6953 L232.9963,158.6953 L233,160.6953 L233,161.1065 L235,160.2031 L237,160.0933 L239,161.143 L241,160.058 L243,160.6953 L243.3199,161.0152 L241.1299,158.8252 L238.8316,156.5269 L236.7776,154.473 L235.2883,152.9837 L233,150.6953 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="187" x="20" y="167.7622">Components built with VueJS.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="20" y="182.895">Axios used to build service layer.</text><polygon fill="#FFA500" points="466.5,217.0938,466.526,217.1588,468.4487,217.7655,470.5239,218.7536,472.5495,219.6174,474.4117,220.073,476.5,221.0938,476.4904,221.0697,474.4472,221.7618,472.4525,222.5751,470.4916,223.4727,468.4144,224.0798,466.5,225.0938,466.6305,225.2242,467.1514,224.1452,468.0534,223.4471,469.0018,222.7956,469.6798,221.8735,470.5,221.0938,470.5161,221.1098,469.6925,220.2862,468.9421,219.5358,468.1564,218.7501,467.438,218.0318,466.5,217.0938" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M252.5,221.0938 L252.5,221.374 L262.5,220.5413 L272.5,221.3515 L282.5,221.6267 L292.5,220.1426 L302.5,220.9901 L312.5,220.5251 L322.5,220.5824 L332.5,221.0029 L342.5,220.1719 L352.5,221.8319 L362.5,220.2534 L372.5,220.8301 L382.5,221.6697 L392.5,220.9794 L402.5,221.1847 L412.5,221.0512 L422.5,221.3318 L432.5,221.4126 L442.5,221.8747 L452.5,221.9885 L462.5,221.9994 L472.5,221.0938 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="122" x="259.5" y="216.0278">API Request (JSON)</text><path d="M493,234.0938 L493.1868,234.0938 L492.6317,242.0938 L493.1718,250.0938 L493.3553,258.0938 L492.3659,266.0938 L493,274.0938 L493,273.8865 L503.2222,272.9564 L513.4444,273.0711 L523.6667,273.912 L533.8889,272.2501 L544.1111,275.5701 L554.3333,272.413 L564.5556,273.5664 L574.7778,275.2456 L585,273.865 L595.2222,274.2757 L605.4444,274.0086 L615.6667,274.5698 L625.8889,274.7314 L636.1111,275.6556 L646.3333,275.8832 L656.5556,275.9051 L666.7778,274.7728 L677,274.0938 L677.4121,274.0938 L677.6242,268.0938 L676.3589,262.0938 L677.6031,256.0938 L676.7364,250.0938 L677,244.0938 L677.3355,244.4293 L674.6889,241.7826 L672.9569,240.0507 L671.4661,238.5599 L668.9694,236.0631 L667,234.0938 L667,234.3746 L656.7647,234.9968 L646.5294,235.2037 L636.2941,234.0833 L626.0588,234.8597 L615.8235,232.5673 L605.5882,234.8521 L595.3529,235.5556 L585.1176,235.2792 L574.8824,235.7285 L564.6471,232.8055 L554.4118,232.3546 L544.1765,232.4367 L533.9412,233.9367 L523.7059,233.5697 L513.4706,235.9108 L503.2353,233.6279 L493,234.0938 " fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M667,234.0938 L666.6951,234.0938 L667.2029,236.0938 L666.4073,238.0938 L666.5386,240.0938 L667.5768,242.0938 L667,244.0938 L667,244.481 L669,244.7466 L671,243.8077 L673,244.3775 L675,244.6186 L677,244.0938 L676.7031,243.7968 L674.9397,242.0335 L673.0792,240.1729 L671.4097,238.5034 L668.9974,236.0911 L667,234.0938 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="499" y="251.1606">Build JSON response</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="163" x="499" y="266.2935">in Galaxy "API" controllers</text><polygon fill="#FFA500" points="263.5,300.4922,263.526,300.5572,261.4487,301.164,259.5239,302.152,257.5495,303.0159,255.4117,303.4714,253.5,304.4922,253.4904,304.4681,255.4472,305.1602,257.4525,305.9735,259.4916,306.8711,261.4144,307.4782,263.5,308.4922,263.6305,308.6227,262.5514,307.5436,261.8534,306.8456,261.2018,306.194,260.2798,305.272,259.5,304.4922,259.5161,304.5083,260.2925,303.6847,261.1421,302.9343,261.9564,302.1486,262.838,301.4302,263.5,300.4922" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M257.5,304.4922 L257.5,304.7724 L267.2826,303.9398 L277.0652,304.7499 L286.8478,305.0251 L296.6304,303.541 L306.413,304.3886 L316.1957,303.9235 L325.9783,303.9809 L335.7609,304.4013 L345.5435,303.5704 L355.3261,305.2304 L365.1087,303.6518 L374.8913,304.2285 L384.6739,305.0681 L394.4565,304.3778 L404.2391,304.5832 L414.0217,304.4496 L423.8043,304.7302 L433.587,304.811 L443.3696,305.2731 L453.1522,305.3869 L462.9348,305.3979 L472.7174,304.8317 L482.5,304.4922 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="132" x="269.5" y="299.4263">API Response (JSON)</text><path d="M8,317.4922 L8.5605,317.4922 L6.8951,326.9366 L8.5154,336.3811 L9.0658,345.8255 L6.0976,355.27 L7.7928,364.7144 L6.8627,374.1589 L6.9773,383.6033 L7.8182,393.0477 L8,402.4922 L8,400.6485 L17.8333,403.9686 L27.6667,400.8114 L37.5,401.9648 L47.3333,403.644 L57.1667,402.2634 L67,402.6742 L76.8333,402.407 L86.6667,402.9683 L96.5,403.1299 L106.3333,404.054 L116.1667,404.2817 L126,404.3035 L135.8333,403.1712 L145.6667,403.7284 L155.5,404.3648 L165.3333,400.569 L175.1667,404.3015 L185,401.7015 L194.8333,403.9157 L204.6667,401.1721 L214.5,402.3095 L224.3333,404.4698 L234.1667,402.3622 L244,402.4922 L244.2808,402.4922 L244.903,393.1172 L245.11,383.7422 L243.9896,374.3672 L244.7659,364.9922 L242.4736,355.6172 L244.7584,346.2422 L245.4619,336.8672 L244,327.4922 L244.2794,327.7716 L242.3853,325.8775 L239.6964,323.1886 L237.5901,321.0823 L235.6094,319.1016 L234,317.4922 L234,317.3352 L224.1739,316.9681 L214.3478,319.3093 L204.5217,317.0264 L194.6957,316.5774 L184.8696,318.1009 L175.0435,315.714 L165.2174,316.1079 L155.3913,319.2227 L145.5652,318.654 L135.7391,319.4508 L125.913,316.6341 L116.087,318.3434 L106.2609,319.0666 L96.4348,316.2324 L86.6087,317.2366 L76.7826,317.8281 L66.9565,319.2302 L57.1304,317.481 L47.3043,318.7257 L37.4783,316.0154 L27.6522,315.6862 L17.8261,318.8352 L8,317.4922 " fill="#FFEFD5" filter="url(#fux3cxuhgg4qh)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M234,317.4922 L233.3627,317.4922 L234.4524,319.4922 L234.1837,321.4922 L233.7619,323.4922 L233.6855,325.4922 L234,327.4922 L234,327.9 L236,327.2261 L238,328.0183 L240,327.0009 L242,328.041 L244,327.4922 L244.3044,327.7966 L242.154,325.6462 L240.0297,323.5219 L238.4567,321.9489 L236.3857,319.8778 L234,317.4922 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="215" x="14" y="334.5591">JSON objects stored in Vuex store</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="191" x="14" y="349.6919">or consumed by components.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="172" x="14" y="364.8247">HTML rendered from VueJS</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="146" x="14" y="379.9575">component templates.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="18" y="395.0903"/><!--MD5=[dc7223a1c243081d9ee8c021b73a104d] +@startuml + + +!include plantuml_options.txt + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +Server - ->Browser: Static Content (HTML+JS+CSS) +deactivate Server + +note left of Browser: Components built with VueJS.\nAxios used to build service layer. +Browser -> Server: API Request (JSON) +activate Server +note right of Server: Build JSON response\nin Galaxy "API" controllers +Server - -> Browser: API Response (JSON) +deactivate Server + +note left of Browser: JSON objects stored in Vuex store\nor consumed by components.\nHTML rendered from VueJS\ncomponent templates.\n +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +Server - ->Browser: Static Content (HTML+JS+CSS) +deactivate Server + +note left of Browser: Components built with VueJS.\nAxios used to build service layer. +Browser -> Server: API Request (JSON) +activate Server +note right of Server: Build JSON response\nin Galaxy "API" controllers +Server - -> Browser: API Response (JSON) +deactivate Server + +note left of Browser: JSON objects stored in Vuex store\nor consumed by components.\nHTML rendered from VueJS\ncomponent templates.\n +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/server_client_vuejs.plantuml.txt b/topics/dev/images/server_client_vuejs.plantuml.txt new file mode 100644 index 00000000000000..5f032ac4d00324 --- /dev/null +++ b/topics/dev/images/server_client_vuejs.plantuml.txt @@ -0,0 +1,20 @@ +@startuml + +!include plantuml_options.txt + +note over Browser, Server: HTTP + +Browser -> Server: Page Request +activate Server +Server -->Browser: Static Content (HTML+JS+CSS) +deactivate Server + +note left of Browser: Components built with VueJS.\nAxios used to build service layer. +Browser -> Server: API Request (JSON) +activate Server +note right of Server: Build JSON response\nin Galaxy "API" controllers +Server --> Browser: API Response (JSON) +deactivate Server + +note left of Browser: JSON objects stored in Vuex store\nor consumed by components.\nHTML rendered from VueJS\ncomponent templates.\n +@enduml diff --git a/topics/dev/images/webapp.plantuml.svg b/topics/dev/images/webapp.plantuml.svg index 129ec97d6b5caa..1d20adc9da06fc 100644 --- a/topics/dev/images/webapp.plantuml.svg +++ b/topics/dev/images/webapp.plantuml.svg @@ -1 +1,98 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="195px" style="width:372px;height:195px;" version="1.1" viewBox="0 0 372 195" width="372px"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f1)" points="6,8,6,7.7461,16.1429,8.1772,26.2857,8.0374,36.4286,7.4804,46.5714,7.6614,56.7143,7.314,66.8571,7.7835,77,8.135,87.1429,8.3038,97.2857,8.1753,107.4286,7.5245,117.5714,7.9216,127.7143,7.2619,137.8571,7.3756,148,8.1072,158.1429,8.0525,168.2857,7.3586,178.4286,8.3199,188.5714,7.8965,198.7143,7.4791,208.8571,8.2294,219,8.3958,229.1429,8.3695,239.2857,8.4814,249.4286,7.4692,259.5714,8.0578,269.7143,7.8521,279.8571,8.5577,290,8,290.6559,8,289.4603,18.5215,289.6767,29.043,290.2402,39.5645,289.7061,50.0859,290.4734,60.6074,289.4116,71.1289,290.4337,81.6504,290,92.1719,290,91.9138,279.8571,91.476,269.7143,92.6885,259.5714,91.9713,249.4286,92.1245,239.2857,91.703,229.1429,91.978,219,92.7521,208.8571,91.9886,198.7143,92.8268,188.5714,92.6335,178.4286,92.7716,168.2857,91.6783,158.1429,91.431,148,91.6918,137.8571,91.6165,127.7143,92.5097,117.5714,91.7474,107.4286,91.95,97.2857,91.7551,87.1429,92.4158,77,91.8201,66.8571,92.5709,56.7143,92.5294,46.5714,92.1124,36.4286,92.5664,26.2857,91.8424,16.1429,92.1044,6,92.1719,6.2301,92.1719,6.1677,81.6504,5.8701,71.1289,5.8817,60.6074,5.7353,50.0859,6.4385,39.5645,6.0153,29.043,6.1366,18.5215,6,8" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="123.5" y="21.1387">webapp</text><path d="M7,25.9688 L7,25.0145 L17.0714,25.1992 L27.1429,26.5456 L37.2143,25.3436 L47.2857,26.8701 L57.3571,25.8389 L67.4286,26.7166 L77.5,25.4723 L87.5714,26.1513 L97.6429,25.441 L107.7143,25.5932 L117.7857,25.1926 L127.8571,25.2289 L137.9286,25.7321 L148,26.2338 L158.0714,26.4462 L168.1429,26.5509 L178.2143,25.3085 L188.2857,26.6773 L198.3571,25.312 L208.4286,26.5404 L218.5,26.2843 L228.5714,26.6809 L238.6429,25.7175 L248.7143,26.6254 L258.7857,25.976 L268.8571,26.5185 L278.9286,25.0227 L289,25.9688 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="76" x="12" y="39.251">controllers : dict</text><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="95" x="12" y="50.8916">api_controllers : dict</text><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="118" x="12" y="62.5322">mapper : routes.Mapper</text><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="228" x="12" y="74.1729">handle_request: (environ, start_response) -> ()</text><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="272" x="12" y="85.8135">transaction_factory: (environ) -> GalaxyWebTransaction</text><polygon fill="#FFEFD5" filter="url(#f1)" points="325,33,325,32.8263,332.6,32.917,340.2,33.0363,347.8,33.1892,355.4,33.0872,363,33,363.1842,33,362.7966,39.7938,362.9337,46.5875,362.9283,53.3813,363.1142,60.175,363,66.9688,363,66.8874,355.4,66.8565,347.8,67.2077,340.2,66.7289,332.6,66.8731,325,66.9688,324.8469,66.9688,324.9336,60.175,324.9565,53.3813,325.0627,46.5875,325.0411,39.7938,325,33" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="24" x="332" y="46.1387">app</text><path d="M326,50.9688 L326,51.1253 L333.2,50.9921 L340.4,50.7379 L347.6,50.7395 L354.8,50.6593 L362,50.9688 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#f1)" points="222.75,152,222.75,151.3689,232.15,151.5513,241.55,151.6469,250.95,151.7156,260.35,151.3221,269.75,152,269.6515,152,269.9108,158.7938,269.8414,165.5875,269.5367,172.3813,269.6809,179.175,269.75,185.9688,269.75,185.5491,260.35,185.4412,250.95,186.306,241.55,186.4478,232.15,185.9548,222.75,185.9688,222.7267,185.9688,222.5804,179.175,222.8588,172.3813,222.886,165.5875,222.6303,158.7938,222.75,152" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="229.75" y="165.1387">trans</text><path d="M223.75,169.9688 L223.75,169.7582 L232.75,170.6912 L241.75,170.8351 L250.75,169.77 L259.75,170.6187 L268.75,169.9688 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M290.023,50 L290.023,50.2646 L295.9122,50.2847 L301.8014,49.8908 L307.6906,50.0214 L313.5798,50.2874 L319.469,50 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="324.602,50,324.5343,49.8477,322.7038,48.9791,320.9337,48.2464,319.17,47.528,317.4817,46.9793,315.602,46,315.4456,45.8436,316.2316,46.6296,317.2694,47.6674,317.8774,48.2754,318.8625,49.2605,319.602,50,319.4917,49.8897,318.6576,50.6556,318.0356,51.6336,317.3673,52.5653,316.3545,53.1525,315.602,54,315.5249,53.8264,317.5023,53.4257,319.1364,52.2525,320.9172,51.4093,322.7404,50.6615,324.602,50" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="292.9199" y="44.3307">app</text><path d="M326.936,71.372 L327.2485,71.6337 L321.533,79.2986 L315.2059,86.451 L308.6263,93.3921 L301.8297,100.1513 L296.2051,107.8923 L290.5247,115.5865 L283.5519,122.1981 L277.7393,129.7816 L271.513,137.0185 L265.9281,144.7927 L259.511,151.8698 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="330.374,67.268,330.4506,67.4245,328.5767,68.0766,326.9337,69.2002,325.0925,69.9192,323.3489,70.8376,321.5288,71.5996,321.5449,71.7816,322.6645,71.5986,323.7742,71.304,324.9214,71.4327,326.0197,71.0083,327.1637,71.1012,327.127,71.098,327.3844,72.2389,327.3039,73.35,327.3762,74.4745,327.605,75.6129,327.662,76.7361,327.5262,76.6972,328.0882,74.8092,328.8738,72.9852,329.1179,71.0062,329.7893,69.1495,330.374,67.268" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="297.2198" y="86.9452">app</text><path d="M191.182,102.5537 L190.5375,102.0139 L198.8036,111.3844 L204.6514,118.7295 L211.1522,126.6214 L218.3162,135.0688 L225.1734,143.2594 L232.39,151.7509 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="182.551,92.2498,182.5553,92.2503,182.8982,93.7043,183.0226,95.1343,182.918,96.5392,183.1121,97.9768,183.3374,99.4179,183.2812,99.2266,184.6972,99.7424,186.1167,100.2701,187.5482,100.8387,188.8228,100.8729,190.2565,101.449,190.2965,101.4534,190.0016,100.0047,189.9298,98.5804,189.8266,97.1527,189.7736,95.7306,189.4702,94.2809,189.5384,94.5133,188.0474,93.742,186.7118,93.5003,185.3227,93.0759,183.8912,92.5075,182.551,92.2498" style="stroke: #FFA500; stroke-width: 1.0;"/></g></svg> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="196px" preserveAspectRatio="none" style="width:374px;height:196px;" version="1.1" viewBox="0 0 374 196" width="374px" zoomAndPan="magnify"><defs><filter height="300%" id="fi3dwxru2jott" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#fi3dwxru2jott)" points="6,8,6,8.2102,16.1429,7.5857,26.2857,8.1933,36.4286,8.3997,46.5714,7.2866,56.7143,7.9223,66.8571,7.5735,77,7.6165,87.1429,7.9318,97.2857,7.3086,107.4286,8.5536,117.5714,7.3697,127.7143,7.8022,137.8571,8.4319,148,7.9142,158.1429,8.0682,168.2857,7.9681,178.4286,8.1785,188.5714,8.2391,198.7143,8.5857,208.8571,8.6711,219,8.6793,229.1429,8.2546,239.2857,8.4636,249.4286,8.7022,259.5714,7.2788,269.7143,8.6785,279.8571,7.7035,290,8,290.5338,8,289.505,18.5215,289.9315,29.043,290.7416,39.5645,289.9513,50.0859,290.1053,60.6074,290.3386,71.1289,290.4162,81.6504,290,92.1719,290,92.168,279.8571,92.4591,269.7143,91.5995,259.5714,92.4563,249.4286,92.7201,239.2857,92.6164,229.1429,92.7849,219,91.6888,208.8571,91.5197,198.7143,91.5505,188.5714,92.113,178.4286,91.9753,168.2857,92.8533,158.1429,91.9972,148,91.8288,137.8571,92.4001,127.7143,91.505,117.5714,91.6527,107.4286,92.8208,97.2857,92.6075,87.1429,92.9064,77,91.8501,66.8571,92.4911,56.7143,92.7623,46.5714,91.6995,36.4286,92.076,26.2857,92.2979,16.1429,92.8236,6,92.1719,5.9958,92.1719,6.4626,81.6504,5.4462,71.1289,5.3227,60.6074,6.5036,50.0859,5.2831,39.5645,6.509,29.043,6.2066,18.5215,6,8" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="123.5" y="21.1387">webapp</text><path d="M7,25.9688 L7,26.249 L17.0714,25.4163 L27.1429,26.2265 L37.2143,26.5017 L47.2857,25.0176 L57.3571,25.8651 L67.4286,25.4001 L77.5,25.4574 L87.5714,25.8779 L97.6429,25.0469 L107.7143,26.7069 L117.7857,25.1284 L127.8571,25.7051 L137.9286,26.5447 L148,25.8544 L158.0714,26.0597 L168.1429,25.9262 L178.2143,26.2068 L188.2857,26.2876 L198.3571,26.7497 L208.4286,26.8635 L218.5,26.8744 L228.5714,26.3083 L238.6429,26.5869 L248.7143,26.9051 L258.7857,25.0072 L268.8571,26.8734 L278.9286,25.5734 L289,25.9688 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="76" x="12" y="39.251">controllers : dict</text><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="95" x="12" y="50.8916">api_controllers : dict</text><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="118" x="12" y="62.5322">mapper : routes.Mapper</text><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="228" x="12" y="74.1729">handle_request: (environ, start_response) -> ()</text><text fill="#000000" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="272" x="12" y="85.8135">transaction_factory: (environ) -> GalaxyWebTransaction</text><polygon fill="#FFEFD5" filter="url(#fi3dwxru2jott)" points="325,33,325,33.0701,332.6,32.8619,340.2,33.0644,347.8,33.1332,355.4,32.7622,363,33,362.9741,33,362.8578,39.7938,362.8722,46.5875,362.9773,53.3813,362.7695,60.175,363,66.9688,363,67.1533,355.4,66.7587,347.8,66.9028,340.2,67.1127,332.6,66.9402,325,66.9688,325.0227,66.9688,324.9894,60.175,325.0595,53.3813,325.0797,46.5875,325.1952,39.7938,325,33" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="24" x="332" y="46.1387">app</text><path d="M326,50.9688 L326,51.0622 L333.2,50.7846 L340.4,51.0547 L347.6,51.1464 L354.8,50.6517 L362,50.9688 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#FFEFD5" filter="url(#fi3dwxru2jott)" points="222.5,152,222.5,152.2102,231.9,151.5857,241.3,152.1933,250.7,152.3997,260.1,151.2866,269.5,152,269.4741,152,269.3578,158.7938,269.3722,165.5875,269.4773,172.3813,269.2695,179.175,269.5,185.9688,269.5,186.5224,260.1,185.3385,250.7,185.771,241.3,186.4007,231.9,185.883,222.5,185.9688,222.5227,185.9688,222.4894,179.175,222.5595,172.3813,222.5797,165.5875,222.6952,158.7938,222.5,152" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="229.5" y="165.1387">trans</text><path d="M223.5,169.9688 L223.5,170.249 L232.5,169.4163 L241.5,170.2265 L250.5,170.5017 L259.5,169.0176 L268.5,169.9688 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[c3f5974640aa9493f79c30b0486453d4] +link webapp to app--><path d="M290.0234,50 L290.0234,50.0934 L295.9126,49.8159 L301.8018,50.0859 L307.691,50.1776 L313.5802,49.6829 L319.4694,50 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="324.6022,50,324.6307,50.064,322.7461,49.0738,321.0284,48.4589,319.2563,47.7217,317.3056,46.5827,315.6022,46,315.5839,45.9817,316.3017,46.6995,317.1118,47.5096,317.9861,48.3839,318.6392,49.037,319.6022,50,319.7327,50.1305,318.6536,50.6514,317.9556,51.5534,317.304,52.5018,316.382,53.1798,315.6022,54,315.6114,54.0208,317.3979,53.1903,319.2264,52.4544,321.0346,51.6728,322.8815,50.9784,324.6022,50" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="292.949" y="45.2588">app</text><!--MD5=[5d5f49f8ccd7bc3d84eee9b982abadd2] +reverse link app to trans--><path d="M326.545,71.1954 L326.7613,71.3736 L319.4656,78.9229 L313.4379,87.5165 L306.9974,95.7701 L299.1987,102.9053 L293.2,111.5227 L286.188,119.3057 L279.5793,127.4208 L273.2509,135.7667 L265.9564,143.3171 L260.015,151.9818 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="329.959,67.0498,329.9903,67.1125,328.1354,67.8072,326.4642,68.8693,324.7331,69.8117,322.8054,70.3608,321.1499,71.4544,321.1474,71.4286,322.2623,71.2039,323.3898,71.1092,324.5261,71.1048,325.6322,70.7891,326.7805,70.9095,326.9642,70.9272,326.6803,72.0153,326.9328,73.1553,327.2507,74.3017,327.1879,75.4111,327.3254,76.54,327.3473,76.5461,327.8418,74.6391,328.4362,72.7598,328.9824,70.8672,329.6204,69,329.959,67.0498" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="297.6584" y="86.9681">app</text><!--MD5=[a8c314b3cfb9ceb8224efe233a938614] +reverse link webapp to trans--><path d="M191.3267,102.6109 L191.543,102.7891 L197.675,110.4862 L205.0752,119.2278 L212.0624,127.6292 L217.6915,134.9123 L225.1205,143.6776 L231.9753,151.97 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="182.8271,92.29,182.8968,92.2971,182.835,93.711,183.1818,95.1663,183.3956,96.6081,183.1717,98.0056,183.5536,99.4644,183.5461,99.4396,184.8929,99.7461,186.2774,100.1775,187.6882,100.6959,189.0085,100.9148,190.4556,101.5531,190.6392,101.5717,190.1013,100.0971,190.0994,98.6767,190.1629,97.263,189.8459,95.8107,189.7291,94.3787,189.7357,94.4005,188.3456,93.9508,186.9855,93.6002,185.611,93.2018,184.264,92.8946,182.8271,92.29" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[55f4c9b0297cfcbdab21afb95954e4d1] +@startuml + + +!include plantuml_options.txt + +object webapp { + controllers : dict + api_controllers : dict + mapper : routes.Mapper + handle_request: (environ, start_response) -> () + transaction_factory: (environ) -> GalaxyWebTransaction +} + +object app { + +} + +object trans { + +} + +webapp -> "app" app +app "app" <- - trans +webapp *- - trans + +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +object webapp { + controllers : dict + api_controllers : dict + mapper : routes.Mapper + handle_request: (environ, start_response) -> () + transaction_factory: (environ) -> GalaxyWebTransaction +} + +object app { + +} + +object trans { + +} + +webapp -> "app" app +app "app" <- - trans +webapp *- - trans + +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/webapp.plantuml.txt b/topics/dev/images/webapp.plantuml.txt new file mode 100644 index 00000000000000..1822c93c41e700 --- /dev/null +++ b/topics/dev/images/webapp.plantuml.txt @@ -0,0 +1,25 @@ +@startuml + +!include plantuml_options.txt + +object webapp { + controllers : dict + api_controllers : dict + mapper : routes.Mapper + handle_request: (environ, start_response) -> () + transaction_factory: (environ) -> GalaxyWebTransaction +} + +object app { + +} + +object trans { + +} + +webapp -> "app" app +app "app" <-- trans +webapp *-- trans + +@enduml diff --git a/topics/dev/images/webapp_classes.plantuml.svg b/topics/dev/images/webapp_classes.plantuml.svg new file mode 100644 index 00000000000000..16cbc304c834d8 --- /dev/null +++ b/topics/dev/images/webapp_classes.plantuml.svg @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="340px" preserveAspectRatio="none" style="width:419px;height:340px;" version="1.1" viewBox="0 0 419 340" width="419px" zoomAndPan="magnify"><defs><filter height="300%" id="f1mltqy2afw3cn" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[6cca346fe44ebc75d3edeb0e2712deba] +cluster galaxy.framework.base--><polygon fill="#FFFFFF" filter="url(#f1mltqy2afw3cn)" points="40,16,40,16.2102,50,15.5857,60,16.1933,70,16.3997,80,15.2866,90,15.9223,100,15.5735,110,15.6165,120,15.9318,130,15.3086,140,16.5536,150,15.3697,160,15.8022,170,16.4319,180,15.9142,190,16.0682,200,15.9681,210,16.1785,220,16.2391,230,16,230.1863,16.0585,231.6134,20.5264,233.016,24.9866,234.281,29.4035,235.7474,33.8838,237,38.2969,237,38.9991,247,37.5757,257,38.9754,267,38.0004,277,38.8307,287,37.8019,297,38.2284,307,39.0385,317,38.2481,327,38.4022,337,38.6355,347,38.7131,357,38.293,367,38.5841,377,37.7245,387,38.5813,397,38.2969,397.5482,38.2969,397.4445,48.8259,397.613,59.3549,396.5169,69.8839,396.3478,80.4129,396.3786,90.942,396.9411,101.471,397,112,397,111.8035,387.0833,112.6814,377.1667,111.8253,367.25,111.6569,357.3333,112.2283,347.4167,111.3332,337.5,111.4809,327.5833,112.649,317.6667,112.4357,307.75,112.7345,297.8333,111.6782,287.9167,112.3192,278,112.5904,268.0833,111.5276,258.1667,111.9041,248.25,112.126,238.3333,112.6518,228.4167,111.9958,218.5,112.4626,208.5833,111.4462,198.6667,111.3227,188.75,112.5036,178.8333,111.2831,168.9167,112.509,159,112.2066,149.0833,111.7321,139.1667,111.6462,129.25,112.4588,119.3333,111.7007,109.4167,112.5919,99.5,111.4473,89.5833,112.6174,79.6667,112.4843,69.75,112.245,59.8333,112.0472,49.9167,112.7266,40,112,40.6136,112,40.1693,102.4,40.2682,92.8,39.8697,83.2,40.7165,73.6,40.1549,64,40.1726,54.4,39.3916,44.8,39.5948,35.2,40.5307,25.6,40,16" style="stroke: #000000; stroke-width: 1.5;"/><path d="M40,38.2969 L40,38.5771 L49.85,37.7444 L59.7,38.5546 L69.55,38.8298 L79.4,37.3457 L89.25,38.1933 L99.1,37.7282 L108.95,37.7855 L118.8,38.206 L128.65,37.375 L138.5,39.0351 L148.35,37.4565 L158.2,38.0332 L168.05,38.8728 L177.9,38.1825 L187.75,38.3879 L197.6,38.2543 L207.45,38.5349 L217.3,38.6157 L227.15,39.0778 L237,38.2969 " fill="#FFFFFF" style="stroke: #000000; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="184" x="44" y="30.9951">galaxy.framework.base</text><!--MD5=[d9aa8b7c60bb4d8e3148a5600f83adaf] +cluster galaxy.web.framework.webapp--><polygon fill="#FFFFFF" filter="url(#f1mltqy2afw3cn)" points="41,137,41,137.2102,51.16,136.5857,61.32,137.1933,71.48,137.3997,81.64,136.2866,91.8,136.9223,101.96,136.5735,112.12,136.6165,122.28,136.9318,132.44,136.3086,142.6,137.5536,152.76,136.3697,162.92,136.8022,173.08,137.4319,183.24,136.9142,193.4,137.0682,203.56,136.9681,213.72,137.1785,223.88,137.2391,234.04,137.5857,244.2,137.6711,254.36,137.6793,264.52,137.2546,274.68,137.4636,284.84,137.7022,295,137,294.7706,136.928,296.6158,141.5271,297.7057,145.8891,299.3698,150.4314,300.4426,154.7881,302,159.2969,302,159.2284,312.2222,160.0385,322.4444,159.2481,332.6667,159.4022,342.8889,159.6355,353.1111,159.7131,363.3333,159.293,373.5556,159.5841,383.7778,158.7245,394,159.2969,394.2844,159.2969,394.5482,169.4141,394.4445,179.5313,394.613,189.6484,393.5169,199.7656,393.3478,209.8828,394,220,394,219.3786,383.9143,219.9411,373.8286,219.8035,363.7429,220.6814,353.6571,219.8253,343.5714,219.6569,333.4857,220.2283,323.4,219.3332,313.3143,219.4809,303.2286,220.649,293.1429,220.4357,283.0571,220.7345,272.9714,219.6782,262.8857,220.3192,252.8,220.5904,242.7143,219.5276,232.6286,219.9041,222.5429,220.126,212.4571,220.6518,202.3714,219.9958,192.2857,220.4626,182.2,219.4462,172.1143,219.3227,162.0286,220.5036,151.9429,219.2831,141.8571,220.509,131.7714,220.2066,121.6857,219.7321,111.6,219.6462,101.5143,220.4588,91.4286,219.7007,81.3429,220.5919,71.2571,219.4473,61.1714,220.6174,51.0857,220.4843,41,220,41.245,220,41.0472,209.625,41.7266,199.25,41.6136,188.875,41.1693,178.5,41.2682,168.125,40.8697,157.75,41.7165,147.375,41,137" style="stroke: #000000; stroke-width: 1.5;"/><path d="M41,159.2969 L41,159.5771 L51.0385,158.7444 L61.0769,159.5546 L71.1154,159.8298 L81.1538,158.3457 L91.1923,159.1933 L101.2308,158.7282 L111.2692,158.7855 L121.3077,159.206 L131.3462,158.375 L141.3846,160.0351 L151.4231,158.4565 L161.4615,159.0332 L171.5,159.8728 L181.5385,159.1825 L191.5769,159.3879 L201.6154,159.2543 L211.6538,159.5349 L221.6923,159.6157 L231.7308,160.0778 L241.7692,160.1916 L251.8077,160.2026 L261.8462,159.6364 L271.8846,159.915 L281.9231,160.2332 L291.9615,158.3353 L302,159.2969 " fill="#FFFFFF" style="stroke: #000000; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="248" x="45" y="151.9951">galaxy.web.framework.webapp</text><!--MD5=[184050d3f19ee995f60d922af3ffee26] +cluster galaxy.webapps.galaxy--><polygon fill="#FFFFFF" filter="url(#f1mltqy2afw3cn)" points="14,245,14,245.2102,23.8947,244.5857,33.7895,245.1933,43.6842,245.3997,53.5789,244.2866,63.4737,244.9223,73.3684,244.5735,83.2632,244.6165,93.1579,244.9318,103.0526,244.3086,112.9474,245.5536,122.8421,244.3697,132.7368,244.8022,142.6316,245.4319,152.5263,244.9142,162.4211,245.0682,172.3158,244.9681,182.2105,245.1785,192.1053,245.2391,202,245,202.1863,245.0585,203.6134,249.5264,205.016,253.9866,206.281,258.4035,207.7474,262.8838,209,267.2969,209,267.531,209.6,267.0565,210.2,267.523,210.8,267.198,211.4,267.4748,212,267.2969,211.505,267.2969,211.9315,277.4141,212.7416,287.5313,211.9513,297.6484,212.1053,307.7656,212.3386,317.8828,212,328,212,328.4162,202.1,327.9961,192.2,328.2872,182.3,327.4276,172.4,328.2844,162.5,328.5482,152.6,328.4445,142.7,328.613,132.8,327.5169,122.9,327.3478,113,327.3786,103.1,327.9411,93.2,327.8035,83.3,328.6814,73.4,327.8253,63.5,327.6569,53.6,328.2283,43.7,327.3332,33.8,327.4809,23.9,328.649,14,328,14.4357,328,14.7345,317.625,13.6782,307.25,14.3192,296.875,14.5904,286.5,13.5276,276.125,13.9041,265.75,14.126,255.375,14,245" style="stroke: #000000; stroke-width: 1.5;"/><path d="M14,267.2969 L14,267.5771 L23.75,266.7444 L33.5,267.5546 L43.25,267.8298 L53,266.3457 L62.75,267.1933 L72.5,266.7282 L82.25,266.7855 L92,267.206 L101.75,266.375 L111.5,268.0351 L121.25,266.4565 L131,267.0332 L140.75,267.8728 L150.5,267.1825 L160.25,267.3879 L170,267.2543 L179.75,267.5349 L189.5,267.6157 L199.25,268.0778 L209,267.2969 " fill="#FFFFFF" style="stroke: #000000; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="182" x="18" y="259.9951">galaxy.webapps.galaxy</text><!--MD5=[3715631d86b6cd3357772c8ae3755569] +class galaxy.framework.base.WebApplication--><polygon fill="#FFEFD5" filter="url(#f1mltqy2afw3cn)" points="48,43,48,43.2102,57.8462,42.5857,67.6923,43.1933,77.5385,43.3997,87.3846,42.2866,97.2308,42.9223,107.0769,42.5735,116.9231,42.6165,126.7692,42.9318,136.6154,42.3086,146.4615,43.5536,156.3077,42.3697,166.1538,42.8022,176,43,176.4319,43,175.9142,53.1341,176.0682,63.2682,175.9681,73.4023,176.1785,83.5365,176.2391,93.6706,176,103.8047,176,104.3904,166.1538,104.4757,156.3077,104.4839,146.4615,104.0593,136.6154,104.2683,126.7692,104.5069,116.9231,103.0835,107.0769,104.4832,97.2308,103.5082,87.3846,104.3385,77.5385,103.3097,67.6923,103.7362,57.8462,104.5463,48,103.8047,47.9513,103.8047,48.1053,93.6706,48.3386,83.5365,48.4162,73.4023,47.9961,63.2682,48.2872,53.1341,48,43" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="74.0608,61.6756,72.4484,63.8788,70.5412,67.1057,67.8136,69.2804,64.9474,70.4696,62.662,70.5728,59.7247,69.0855,56.9532,68.1139,54.8495,66.1412,53.7461,63.8828,53.0917,62.0845,52.4506,59.7357,51.41,57.7145,52.2096,55.741,52.9102,53.5792,55.5393,51.8695,57.389,49.6511,59.6784,48.9144,62.4001,48.2801,65.8904,48.657,67.8021,49.5585,70.0247,49.9672,72.7272,52.736,73.6693,55.659,74.0786,57.6534,73.615,60.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M65.9688,64.6406 Q65.3906,64.9375 64.75,65.0781 Q64.1094,65.2344 63.4063,65.2344 Q60.9063,65.2344 59.5781,63.5938 Q58.2656,61.9375 58.2656,58.8125 Q58.2656,55.6875 59.5781,54.0313 Q60.9063,52.375 63.4063,52.375 Q64.1094,52.375 64.75,52.5313 Q65.4063,52.6875 65.9688,52.9844 L65.9688,55.7031 Q65.3438,55.125 64.75,54.8594 Q64.1563,54.5781 63.5313,54.5781 Q62.1875,54.5781 61.5,55.6563 Q60.8125,56.7188 60.8125,58.8125 Q60.8125,60.9063 61.5,61.9844 Q62.1875,63.0469 63.5313,63.0469 Q64.1563,63.0469 64.75,62.7813 Q65.3438,62.5 65.9688,61.9219 L65.9688,64.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="96" x="77" y="63.1543">WebApplication</text><path d="M49,75 L49,75.2802 L58.6923,74.4476 L68.3846,75.2577 L78.0769,75.5329 L87.7692,74.0488 L97.4615,74.8964 L107.1538,74.4313 L116.8462,74.4887 L126.5385,74.9091 L136.2308,74.0782 L145.9231,75.7382 L155.6154,74.1596 L165.3077,74.7363 L175,75 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M49,83 L49,83.2802 L58.6923,82.4476 L68.3846,83.2577 L78.0769,83.5329 L87.7692,82.0488 L97.4615,82.8964 L107.1538,82.4313 L116.8462,82.4887 L126.5385,82.9091 L136.2308,82.0782 L145.9231,83.7382 L155.6154,82.1596 L165.3077,82.7363 L175,83 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="96" x="54" y="97.2104">handle_request()</text><!--MD5=[a02eab4e68e29ebdd36c0df7b48986d4] +class galaxy.framework.base.DefaultWebTransaction--><polygon fill="#FFEFD5" filter="url(#f1mltqy2afw3cn)" points="211,49.5,211,49.7102,220.8889,49.0857,230.7778,49.6933,240.6667,49.8997,250.5556,48.7866,260.4444,49.4223,270.3333,49.0735,280.2222,49.1165,290.1111,49.4318,300,48.8086,309.8889,50.0536,319.7778,48.8697,329.6667,49.3022,339.5556,49.9319,349.4444,49.4142,359.3333,49.5682,369.2222,49.4681,379.1111,49.6785,389,49.5,389.2391,49.5,389.5857,59.1,389.6711,68.7,389.6793,78.3,389.2546,87.9,389,97.5,389,97.9636,379.1111,98.2022,369.2222,96.7788,359.3333,98.1785,349.4444,97.2035,339.5556,98.0338,329.6667,97.005,319.7778,97.4315,309.8889,98.2416,300,97.4513,290.1111,97.6053,280.2222,97.8386,270.3333,97.9162,260.4444,97.4961,250.5556,97.7872,240.6667,96.9276,230.7778,97.7844,220.8889,98.0482,211,97.5,211.4445,97.5,211.613,87.9,210.5169,78.3,210.3478,68.7,210.3786,59.1,211,49.5" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="237.0608,68.1756,235.4484,70.3788,233.5412,73.6057,230.8136,75.7804,227.9474,76.9696,225.662,77.0728,222.7247,75.5855,219.9532,74.6139,217.8495,72.6412,216.7461,70.3828,216.0917,68.5845,215.4506,66.2357,214.41,64.2145,215.2096,62.241,215.9102,60.0792,218.5393,58.3695,220.389,56.1511,222.6784,55.4144,225.4001,54.7801,228.8904,55.157,230.8021,56.0585,233.0247,56.4672,235.7272,59.236,236.6693,62.159,237.0786,64.1534,236.615,67.4399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M228.9688,71.1406 Q228.3906,71.4375 227.75,71.5781 Q227.1094,71.7344 226.4063,71.7344 Q223.9063,71.7344 222.5781,70.0938 Q221.2656,68.4375 221.2656,65.3125 Q221.2656,62.1875 222.5781,60.5313 Q223.9063,58.875 226.4063,58.875 Q227.1094,58.875 227.75,59.0313 Q228.4063,59.1875 228.9688,59.4844 L228.9688,62.2031 Q228.3438,61.625 227.75,61.3594 Q227.1563,61.0781 226.5313,61.0781 Q225.1875,61.0781 224.5,62.1563 Q223.8125,63.2188 223.8125,65.3125 Q223.8125,67.4063 224.5,68.4844 Q225.1875,69.5469 226.5313,69.5469 Q227.1563,69.5469 227.75,69.2813 Q228.3438,69 228.9688,68.4219 L228.9688,71.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="146" x="240" y="69.6543">DefaultWebTransaction</text><path d="M212,81.5 L212,81.7802 L221.7778,80.9476 L231.5556,81.7577 L241.3333,82.0329 L251.1111,80.5488 L260.8889,81.3964 L270.6667,80.9313 L280.4444,80.9887 L290.2222,81.4091 L300,80.5782 L309.7778,82.2382 L319.5556,80.6596 L329.3333,81.2363 L339.1111,82.0759 L348.8889,81.3856 L358.6667,81.591 L368.4444,81.4574 L378.2222,81.738 L388,81.5 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M212,89.5 L212,89.7802 L221.7778,88.9476 L231.5556,89.7577 L241.3333,90.0329 L251.1111,88.5488 L260.8889,89.3964 L270.6667,88.9313 L280.4444,88.9887 L290.2222,89.4091 L300,88.5782 L309.7778,90.2382 L319.5556,88.6596 L329.3333,89.2363 L339.1111,90.0759 L348.8889,89.3856 L358.6667,89.591 L368.4444,89.4574 L378.2222,89.738 L388,89.5 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[4a1d3aac0fa9af8fc065658a83618325] +class galaxy.web.framework.webapp.WebApplication--><polygon fill="#FFEFD5" filter="url(#f1mltqy2afw3cn)" points="49,164,49,164.2102,58.8462,163.5857,68.6923,164.1933,78.5385,164.3997,88.3846,163.2866,98.2308,163.9223,108.0769,163.5735,117.9231,163.6165,127.7692,163.9318,137.6154,163.3086,147.4615,164.5536,157.3077,163.3697,167.1538,163.8022,177,164,177.4319,164,176.9142,173.6,177.0682,183.2,176.9681,192.8,177.1785,202.4,177,212,177,212.2391,167.1538,212.5857,157.3077,212.6711,147.4615,212.6793,137.6154,212.2546,127.7692,212.4636,117.9231,212.7022,108.0769,211.2788,98.2308,212.6785,88.3846,211.7035,78.5385,212.5338,68.6923,211.505,58.8462,211.9315,49,212,49.7416,212,48.9513,202.4,49.1053,192.8,49.3386,183.2,49.4162,173.6,49,164" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="75.0608,182.6756,73.4484,184.8788,71.5412,188.1057,68.8136,190.2804,65.9474,191.4696,63.662,191.5728,60.7247,190.0855,57.9532,189.1139,55.8495,187.1412,54.7461,184.8828,54.0917,183.0845,53.4506,180.7357,52.41,178.7145,53.2096,176.741,53.9102,174.5792,56.5393,172.8695,58.389,170.6511,60.6784,169.9144,63.4001,169.2801,66.8904,169.657,68.8021,170.5585,71.0247,170.9672,73.7272,173.736,74.6693,176.659,75.0786,178.6534,74.615,181.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M66.9688,185.6406 Q66.3906,185.9375 65.75,186.0781 Q65.1094,186.2344 64.4063,186.2344 Q61.9063,186.2344 60.5781,184.5938 Q59.2656,182.9375 59.2656,179.8125 Q59.2656,176.6875 60.5781,175.0313 Q61.9063,173.375 64.4063,173.375 Q65.1094,173.375 65.75,173.5313 Q66.4063,173.6875 66.9688,173.9844 L66.9688,176.7031 Q66.3438,176.125 65.75,175.8594 Q65.1563,175.5781 64.5313,175.5781 Q63.1875,175.5781 62.5,176.6563 Q61.8125,177.7188 61.8125,179.8125 Q61.8125,181.9063 62.5,182.9844 Q63.1875,184.0469 64.5313,184.0469 Q65.1563,184.0469 65.75,183.7813 Q66.3438,183.5 66.9688,182.9219 L66.9688,185.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="96" x="78" y="184.1543">WebApplication</text><path d="M50,196 L50,196.2802 L59.6923,195.4476 L69.3846,196.2577 L79.0769,196.5329 L88.7692,195.0488 L98.4615,195.8964 L108.1538,195.4313 L117.8462,195.4887 L127.5385,195.9091 L137.2308,195.0782 L146.9231,196.7382 L156.6154,195.1596 L166.3077,195.7363 L176,196 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M50,204 L50,204.2802 L59.6923,203.4476 L69.3846,204.2577 L79.0769,204.5329 L88.7692,203.0488 L98.4615,203.8964 L108.1538,203.4313 L117.8462,203.4887 L127.5385,203.9091 L137.2308,203.0782 L146.9231,204.7382 L156.6154,203.1596 L166.3077,203.7363 L176,204 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[06ad2b3fe6548298fb6cbc97c4467581] +class galaxy.web.framework.webapp.GalaxyWebTransaction--><polygon fill="#FFEFD5" filter="url(#f1mltqy2afw3cn)" points="212.5,164,212.5,164.2102,222.6765,163.5857,232.8529,164.1933,243.0294,164.3997,253.2059,163.2866,263.3824,163.9223,273.5588,163.5735,283.7353,163.6165,293.9118,163.9318,304.0882,163.3086,314.2647,164.5536,324.4412,163.3697,334.6176,163.8022,344.7941,164.4319,354.9706,163.9142,365.1471,164.0682,375.3235,163.9681,385.5,164,385.6785,164,385.7391,173.6,386.0857,183.2,386.1711,192.8,386.1793,202.4,385.5,212,385.5,212.2546,375.3235,212.4636,365.1471,212.7022,354.9706,211.2788,344.7941,212.6785,334.6176,211.7035,324.4412,212.5338,314.2647,211.505,304.0882,211.9315,293.9118,212.7416,283.7353,211.9513,273.5588,212.1053,263.3824,212.3386,253.2059,212.4162,243.0294,211.9961,232.8529,212.2872,222.6765,211.4276,212.5,212,212.7844,212,213.0482,202.4,212.9445,192.8,213.113,183.2,212.0169,173.6,212.5,164" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="238.5608,182.6756,236.9484,184.8788,235.0412,188.1057,232.3136,190.2804,229.4474,191.4696,227.162,191.5728,224.2247,190.0855,221.4532,189.1139,219.3495,187.1412,218.2461,184.8828,217.5917,183.0845,216.9506,180.7357,215.91,178.7145,216.7096,176.741,217.4102,174.5792,220.0393,172.8695,221.889,170.6511,224.1784,169.9144,226.9001,169.2801,230.3904,169.657,232.3021,170.5585,234.5247,170.9672,237.2272,173.736,238.1693,176.659,238.5786,178.6534,238.115,181.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M230.4688,185.6406 Q229.8906,185.9375 229.25,186.0781 Q228.6094,186.2344 227.9063,186.2344 Q225.4063,186.2344 224.0781,184.5938 Q222.7656,182.9375 222.7656,179.8125 Q222.7656,176.6875 224.0781,175.0313 Q225.4063,173.375 227.9063,173.375 Q228.6094,173.375 229.25,173.5313 Q229.9063,173.6875 230.4688,173.9844 L230.4688,176.7031 Q229.8438,176.125 229.25,175.8594 Q228.6563,175.5781 228.0313,175.5781 Q226.6875,175.5781 226,176.6563 Q225.3125,177.7188 225.3125,179.8125 Q225.3125,181.9063 226,182.9844 Q226.6875,184.0469 228.0313,184.0469 Q228.6563,184.0469 229.25,183.7813 Q229.8438,183.5 230.4688,182.9219 L230.4688,185.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="141" x="241.5" y="184.1543">GalaxyWebTransaction</text><path d="M213.5,196 L213.5,196.2802 L223.5588,195.4476 L233.6176,196.2577 L243.6765,196.5329 L253.7353,195.0488 L263.7941,195.8964 L273.8529,195.4313 L283.9118,195.4887 L293.9706,195.9091 L304.0294,195.0782 L314.0882,196.7382 L324.1471,195.1596 L334.2059,195.7363 L344.2647,196.5759 L354.3235,195.8856 L364.3824,196.091 L374.4412,195.9574 L384.5,196 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M213.5,204 L213.5,204.2802 L223.5588,203.4476 L233.6176,204.2577 L243.6765,204.5329 L253.7353,203.0488 L263.7941,203.8964 L273.8529,203.4313 L283.9118,203.4887 L293.9706,203.9091 L304.0294,203.0782 L314.0882,204.7382 L324.1471,203.1596 L334.2059,203.7363 L344.2647,204.5759 L354.3235,203.8856 L364.3824,204.091 L374.4412,203.9574 L384.5,204 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[4ee2ee460e4603677fe6b0404d922581] +class galaxy.webapps.galaxy.GalaxyWebApplication--><polygon fill="#FFEFD5" filter="url(#f1mltqy2afw3cn)" points="29,272,29,272.2102,38.8824,271.5857,48.7647,272.1933,58.6471,272.3997,68.5294,271.2866,78.4118,271.9223,88.2941,271.5735,98.1765,271.6165,108.0588,271.9318,117.9412,271.3086,127.8235,272.5536,137.7059,271.3697,147.5882,271.8022,157.4706,272.4319,167.3529,271.9142,177.2353,272.0682,187.1176,271.9681,197,272,197.1785,272,197.2391,281.6,197.5857,291.2,197.6711,300.8,197.6793,310.4,197,320,197,320.2546,187.1176,320.4636,177.2353,320.7022,167.3529,319.2788,157.4706,320.6785,147.5882,319.7035,137.7059,320.5338,127.8235,319.505,117.9412,319.9315,108.0588,320.7416,98.1765,319.9513,88.2941,320.1053,78.4118,320.3386,68.5294,320.4162,58.6471,319.9961,48.7647,320.2872,38.8824,319.4276,29,320,29.2844,320,29.5482,310.4,29.4445,300.8,29.613,291.2,28.5169,281.6,29,272" style="stroke: #FF8C00; stroke-width: 1.5;"/><polygon fill="#ADD1B2" points="55.0608,290.6756,53.4484,292.8788,51.5412,296.1057,48.8136,298.2804,45.9474,299.4696,43.662,299.5728,40.7247,298.0855,37.9532,297.1139,35.8495,295.1412,34.7461,292.8828,34.0917,291.0845,33.4506,288.7357,32.41,286.7145,33.2096,284.741,33.9102,282.5792,36.5393,280.8695,38.389,278.6511,40.6784,277.9144,43.4001,277.2801,46.8904,277.657,48.8021,278.5585,51.0247,278.9672,53.7272,281.736,54.6693,284.659,55.0786,286.6534,54.615,289.9399" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M46.9688,293.6406 Q46.3906,293.9375 45.75,294.0781 Q45.1094,294.2344 44.4063,294.2344 Q41.9063,294.2344 40.5781,292.5938 Q39.2656,290.9375 39.2656,287.8125 Q39.2656,284.6875 40.5781,283.0313 Q41.9063,281.375 44.4063,281.375 Q45.1094,281.375 45.75,281.5313 Q46.4063,281.6875 46.9688,281.9844 L46.9688,284.7031 Q46.3438,284.125 45.75,283.8594 Q45.1563,283.5781 44.5313,283.5781 Q43.1875,283.5781 42.5,284.6563 Q41.8125,285.7188 41.8125,287.8125 Q41.8125,289.9063 42.5,290.9844 Q43.1875,292.0469 44.5313,292.0469 Q45.1563,292.0469 45.75,291.7813 Q46.3438,291.5 46.9688,290.9219 L46.9688,293.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="58" y="292.1543">GalaxyWebApplication</text><path d="M30,304 L30,304.2802 L39.7647,303.4476 L49.5294,304.2577 L59.2941,304.5329 L69.0588,303.0488 L78.8235,303.8964 L88.5882,303.4313 L98.3529,303.4887 L108.1176,303.9091 L117.8824,303.0782 L127.6471,304.7382 L137.4118,303.1596 L147.1765,303.7363 L156.9412,304.5759 L166.7059,303.8856 L176.4706,304.091 L186.2353,303.9574 L196,304 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><path d="M30,312 L30,312.2802 L39.7647,311.4476 L49.5294,312.2577 L59.2941,312.5329 L69.0588,311.0488 L78.8235,311.8964 L88.5882,311.4313 L98.3529,311.4887 L108.1176,311.9091 L117.8824,311.0782 L127.6471,312.7382 L137.4118,311.1596 L147.1765,311.7363 L156.9412,312.5759 L166.7059,311.8856 L176.4706,312.091 L186.2353,311.9574 L196,312 " fill="#FFEFD5" style="stroke: #FF8C00; stroke-width: 1.5;"/><!--MD5=[65bcb73fcc5ad7a6632bd17f69d72ef2] +reverse link galaxy.framework.base.WebApplication to galaxy.web.framework.webapp.WebApplication--><path d="M112.4431,124.2346 L112.5365,124.2354 L112.328,132.1388 L112.6671,140.0469 L112.8278,147.9534 L112.4022,155.8549 L112.7883,163.7634 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="105.443,124.2443,105.5093,124.2669,106.6773,120.1877,108.234,116.2409,109.6641,112.251,110.6779,108.1194,112.268,104.1839,112.2436,104.1751,113.5691,108.1234,115.0175,112.1159,116.5513,116.1391,117.7908,120.0564,119.4425,124.122,119.4441,124.3065,116.6408,123.9364,113.8421,124.105,111.0441,124.3394,108.2427,124.1912,105.443,124.2443" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[78cdc9c7bfd5440d5a99b91caefe000a] +reverse link galaxy.web.framework.webapp.WebApplication to galaxy.webapps.galaxy.GalaxyWebApplication--><path d="M113,232.2911 L113.0934,232.2911 L112.8159,240.2016 L113.0859,248.1121 L113.1776,256.0226 L112.6829,263.9331 L113,271.8436 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="106.0001,232.2373,106.0662,232.2604,107.2697,228.1917,108.8609,224.2586,110.3258,220.2813,111.3756,216.1587,113,212.2373,112.9756,212.2287,114.2658,216.1903,115.6794,220.1951,117.1786,224.2298,118.3826,228.1612,120.0001,232.2373,120.0001,232.4218,117.2001,232.0272,114.4001,232.1714,111.6001,232.3813,108.8001,232.2087,106.0001,232.2373" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[20f79b200e87da90eead2c8e20f1bfb8] +reverse link galaxy.framework.base.WebApplication to galaxy.framework.base.DefaultWebTransaction--><path d="M189.3956,73.5 L189.3956,73.5934 L193.6319,73.3159 L197.8681,73.5859 L202.1044,73.6776 L206.3406,73.1829 L210.5769,73.5 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="#FFA500" points="176.2578,73.5,176.2967,73.5583,177.3812,74.1851,178.6935,75.1536,179.9317,76.0109,180.9259,76.5021,182.2578,77.5,182.2434,77.4784,183.3789,76.5817,184.5869,75.7936,185.8452,75.0811,186.93,74.1082,188.2578,73.5,188.3602,73.6536,186.9413,72.5252,185.8212,71.8451,184.7377,71.2198,183.4419,70.2762,182.2578,69.5,182.2704,69.5189,181.0519,70.2911,179.8908,71.1495,178.702,71.9663,177.5661,72.8624,176.2578,73.5" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[709aabb6e68fa182b09fb9bcd95c496b] +reverse link galaxy.framework.base.DefaultWebTransaction to galaxy.web.framework.webapp.GalaxyWebTransaction--><path d="M299.6156,117.5131 L299.8958,117.5155 L298.9826,126.7325 L299.7122,135.9638 L299.9068,145.1905 L298.3422,154.4018 L299.2128,163.6343 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><polygon fill="none" points="292.6159,117.441,292.6818,117.4647,293.9209,113.4066,295.5463,109.4876,297.046,105.5233,298.1317,101.4101,299.7904,97.503,299.7659,97.4947,301.0208,101.4693,302.3993,105.486,303.8638,109.5319,305.0321,113.4771,306.6153,117.5634,306.6169,117.7479,303.8136,117.3288,301.015,117.4485,298.2169,117.6339,295.4155,117.4369,292.6159,117.441" style="stroke: #FFA500; stroke-width: 1.0;"/><!--MD5=[f98eb7c2fdf7732e2ff7fd618f39250b] +@startuml + + +!include plantuml_options.txt + +class galaxy.framework.base.WebApplication { + handle_request() +} + +class galaxy.web.framework.webapp.WebApplication { + +} + +class galaxy.webapps.galaxy.GalaxyWebApplication { +} + +class galaxy.framework.base.DefaultWebTransaction { + +} + +class galaxy.web.framework.webapp.GalaxyWebTransaction { +} + +galaxy.framework.base.WebApplication <|- - galaxy.web.framework.webapp.WebApplication +galaxy.web.framework.webapp.WebApplication <|- - galaxy.webapps.galaxy.GalaxyWebApplication +galaxy.framework.base.WebApplication *- galaxy.framework.base.DefaultWebTransaction +galaxy.framework.base.DefaultWebTransaction <|- - galaxy.web.framework.webapp.GalaxyWebTransaction + +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} + +class galaxy.framework.base.WebApplication { + handle_request() +} + +class galaxy.web.framework.webapp.WebApplication { + +} + +class galaxy.webapps.galaxy.GalaxyWebApplication { +} + +class galaxy.framework.base.DefaultWebTransaction { + +} + +class galaxy.web.framework.webapp.GalaxyWebTransaction { +} + +galaxy.framework.base.WebApplication <|- - galaxy.web.framework.webapp.WebApplication +galaxy.web.framework.webapp.WebApplication <|- - galaxy.webapps.galaxy.GalaxyWebApplication +galaxy.framework.base.WebApplication *- galaxy.framework.base.DefaultWebTransaction +galaxy.framework.base.DefaultWebTransaction <|- - galaxy.web.framework.webapp.GalaxyWebTransaction + +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/webapp_classes.plantuml.txt b/topics/dev/images/webapp_classes.plantuml.txt new file mode 100644 index 00000000000000..6359cc899a3c77 --- /dev/null +++ b/topics/dev/images/webapp_classes.plantuml.txt @@ -0,0 +1,28 @@ +@startuml + +!include plantuml_options.txt + +class galaxy.framework.base.WebApplication { + handle_request() +} + +class galaxy.web.framework.webapp.WebApplication { + +} + +class galaxy.webapps.galaxy.GalaxyWebApplication { +} + +class galaxy.framework.base.DefaultWebTransaction { + +} + +class galaxy.web.framework.webapp.GalaxyWebTransaction { +} + +galaxy.framework.base.WebApplication <|-- galaxy.web.framework.webapp.WebApplication +galaxy.web.framework.webapp.WebApplication <|-- galaxy.webapps.galaxy.GalaxyWebApplication +galaxy.framework.base.WebApplication *- galaxy.framework.base.DefaultWebTransaction +galaxy.framework.base.DefaultWebTransaction <|-- galaxy.web.framework.webapp.GalaxyWebTransaction + +@enduml diff --git a/topics/dev/images/wsgi_app.plantuml.svg b/topics/dev/images/wsgi_app.plantuml.svg new file mode 100644 index 00000000000000..f53834fcf80a5b --- /dev/null +++ b/topics/dev/images/wsgi_app.plantuml.svg @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="589px" preserveAspectRatio="none" style="width:981px;height:589px;" version="1.1" viewBox="0 0 981 589" width="981px" zoomAndPan="magnify"><defs><filter height="300%" id="f14dzteb5b1yb4" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="246.5,108.5625,246.5,108.6326,248.5,108.4244,250.5,108.6269,252.5,108.6957,254.5,108.3247,256.5,108.5625,256.4223,108.5625,256.0735,118.3147,256.1165,128.067,256.4318,137.8192,255.8086,147.5714,257.0536,157.3237,255.8697,167.0759,256.5,176.8281,256.5,176.7622,254.5,176.9721,252.5,176.7995,250.5,176.8509,248.5,176.8175,246.5,176.8281,246.6785,176.8281,246.7391,167.0759,247.0857,157.3237,247.1711,147.5714,247.1793,137.8192,246.7546,128.067,246.9636,118.3147,246.5,108.5625" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="246.5,205.9609,246.5,206.031,248.5,205.8228,250.5,206.0254,252.5,206.0942,254.5,205.7231,256.5,205.9609,256.4223,205.9609,256.0735,215.8194,256.1165,225.6778,256.4318,235.5362,255.8086,245.3946,257.0536,255.2531,255.8697,265.1115,256.3022,274.9699,256.9319,284.8284,256.4142,294.6868,256.5682,304.5452,256.4681,314.4036,256.6785,324.2621,256.7391,334.1205,257.0857,343.9789,257.1711,353.8374,257.1793,363.6958,256.7546,373.5542,256.9636,383.4126,257.2022,393.2711,255.7788,403.1295,257.1785,412.9879,256.2035,422.8464,257.0338,432.7048,256.005,442.5632,256.4315,452.4216,257.2416,462.2801,256.4513,472.1385,256.6053,481.9969,256.8386,491.8554,256.9162,501.7138,256.4961,511.5722,256.7872,521.4306,256.5,531.2891,256.5,531.0983,254.5,531.3839,252.5,531.4718,250.5,531.4372,248.5,531.4934,246.5,531.2891,246.0169,531.2891,245.8478,521.4306,245.8786,511.5722,246.4411,501.7138,246.3035,491.8554,247.1814,481.9969,246.3253,472.1385,246.1569,462.2801,246.7283,452.4216,245.8332,442.5632,245.9809,432.7048,247.149,422.8464,246.9357,412.9879,247.2345,403.1295,246.1782,393.2711,246.8192,383.4126,247.0904,373.5542,246.0276,363.6958,246.4041,353.8374,246.626,343.9789,247.1518,334.1205,246.4958,324.2621,246.9626,314.4036,245.9462,304.5452,245.8227,294.6868,247.0036,284.8284,245.7831,274.9699,247.009,265.1115,246.7066,255.2531,246.2321,245.3946,246.1462,235.5362,246.9588,225.6778,246.2007,215.8194,246.5,205.9609" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="383.5,235.0938,383.5,235.1638,385.5,234.9556,387.5,235.1582,389.5,235.227,391.5,234.856,393.5,235.0938,393.4223,235.0938,393.0735,245.1722,393.1165,255.2506,393.4318,265.329,392.8086,275.4074,394.0536,285.4858,392.8697,295.5642,393.3022,305.6426,393.9319,315.721,393.4142,325.7994,393.5682,335.8778,393.4681,345.9562,393.6785,356.0346,393.7391,366.113,394.0857,376.1914,394.1711,386.2698,394.1793,396.3482,393.7546,406.4266,393.9636,416.505,394.2022,426.5834,392.7788,436.6618,394.1785,446.7402,393.2035,456.8186,394.0338,466.897,393.005,476.9754,393.4315,487.0539,394.2416,497.1323,393.4513,507.2107,393.5,517.2891,393.5,517.3242,391.5,517.4019,389.5,517.4278,387.5,517.2878,385.5,517.3848,383.5,517.2891,382.9276,517.2891,383.7844,507.2107,384.0482,497.1323,383.9445,487.0539,384.113,476.9754,383.0169,466.897,382.8478,456.8186,382.8786,446.7402,383.4411,436.6618,383.3035,426.5834,384.1814,416.505,383.3253,406.4266,383.1569,396.3482,383.7283,386.2698,382.8332,376.1914,382.9809,366.113,384.149,356.0346,383.9357,345.9562,384.2345,335.8778,383.1782,325.7994,383.8192,315.721,384.0904,305.6426,383.0276,295.5642,383.4041,285.4858,383.626,275.4074,384.1518,265.329,383.4958,255.2506,383.9626,245.1722,383.5,235.0938" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="503.5,264.2266,503.5,264.2966,505.5,264.0885,507.5,264.291,509.5,264.3598,511.5,263.9888,513.5,264.2266,513.4223,264.2266,513.0735,274.4052,513.1165,284.5838,513.4318,294.7624,512.8086,304.9411,514.0536,315.1197,512.8697,325.2983,513.3022,335.4769,513.9319,345.6555,513.4142,355.8342,513.5682,366.0128,513.4681,376.1914,513.6785,386.37,513.7391,396.5487,514.0857,406.7273,514.1711,416.9059,514.1793,427.0845,513.7546,437.2631,513.9636,447.4418,514.2022,457.6204,512.7788,467.799,514.1785,477.9776,513.5,488.1563,513.5,488.0574,511.5,488.3342,509.5,487.9912,507.5,488.1334,505.5,488.4035,503.5,488.1563,503.4513,488.1563,503.6053,477.9776,503.8386,467.799,503.9162,457.6204,503.4961,447.4418,503.7872,437.2631,502.9276,427.0845,503.7844,416.9059,504.0482,406.7273,503.9445,396.5487,504.113,386.37,503.0169,376.1914,502.8478,366.0128,502.8786,355.8342,503.4411,345.6555,503.3035,335.4769,504.1814,325.2983,503.3253,315.1197,503.1569,304.9411,503.7283,294.7624,502.8332,284.5838,502.9809,274.4052,503.5,264.2266" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="623.5,293.3594,623.5,293.4294,625.5,293.2213,627.5,293.4238,629.5,293.4926,631.5,293.1216,633.5,293.3594,633.4223,293.3594,633.0735,303.4036,633.1165,313.4479,633.4318,323.4922,632.8086,333.5365,634.0536,343.5807,632.8697,353.625,633.3022,363.6693,633.9319,373.7135,633.4142,383.7578,633.5682,393.8021,633.4681,403.8464,633.6785,413.8906,633.7391,423.9349,634.0857,433.9792,634.1711,444.0234,634.1793,454.0677,633.7546,464.112,633.5,474.1563,633.5,474.3108,631.5,474.3903,629.5,473.9159,627.5,474.3824,625.5,474.0574,623.5,474.1563,624.0338,474.1563,623.005,464.112,623.4315,454.0677,624.2416,444.0234,623.4513,433.9792,623.6053,423.9349,623.8386,413.8906,623.9162,403.8464,623.4961,393.8021,623.7872,383.7578,622.9276,373.7135,623.7844,363.6693,624.0482,353.625,623.9445,343.5807,624.113,333.5365,623.0169,323.4922,622.8478,313.4479,622.8786,303.4036,623.5,293.3594" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="751.5,307.3594,751.5,307.4294,753.5,307.2213,755.5,307.4238,757.5,307.4926,759.5,307.1216,761.5,307.3594,761.4223,307.3594,761.0735,317.1925,761.1165,327.0257,761.4318,336.8588,760.8086,346.692,762.0536,356.5251,760.8697,366.3583,761.3022,376.1914,761.9319,386.0246,761.4142,395.8577,761.5682,405.6908,761.4681,415.524,761.6785,425.3571,761.7391,435.1903,761.5,445.0234,761.5,445.2187,759.5,445.2471,757.5,445.2499,755.5,445.1083,753.5,445.178,751.5,445.0234,752.2022,445.0234,750.7788,435.1903,752.1785,425.3571,751.2035,415.524,752.0338,405.6908,751.005,395.8577,751.4315,386.0246,752.2416,376.1914,751.4513,366.3583,751.6053,356.5251,751.8386,346.692,751.9162,336.8588,751.4961,327.0257,751.7872,317.1925,751.5,307.3594" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M132,38.2969 L132.2802,38.2969 L131.4476,48.3163 L132.2577,58.3358 L132.5329,68.3552 L131.0488,78.3747 L131.8964,88.3941 L131.4313,98.4136 L131.4887,108.4331 L131.9091,118.4525 L131.0782,128.472 L132.7382,138.4914 L131.1596,148.5109 L131.7363,158.5303 L132.5759,168.5498 L131.8856,178.5692 L132.091,188.5887 L131.9574,198.6081 L132.238,208.6276 L132.3188,218.6471 L132.7809,228.6665 L132.8947,238.686 L132.9057,248.7054 L132.3395,258.7249 L132.6181,268.7443 L132.9363,278.7638 L131.0384,288.7832 L132.9047,298.8027 L131.6047,308.8222 L132.7117,318.8416 L131.34,328.8611 L131.9087,338.8805 L132.9888,348.9 L131.935,358.9194 L132.1404,368.9389 L132.4515,378.9583 L132.555,388.9778 L131.9948,398.9972 L132.383,409.0167 L131.2368,419.0362 L132.3792,429.0556 L132.7309,439.0751 L132.5927,449.0945 L132.8174,459.114 L131.3559,469.1334 L131.1304,479.1529 L131.1715,489.1723 L131.9215,499.1918 L131.738,509.2112 L132.9085,519.2307 L131.7671,529.2502 L131.5426,539.2696 L132,549.2891 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M251.5,38.2969 L251.7802,38.2969 L250.9476,48.3163 L251.7577,58.3358 L252.0329,68.3552 L250.5488,78.3747 L251.3964,88.3941 L250.9313,98.4136 L250.9887,108.4331 L251.4091,118.4525 L250.5782,128.472 L252.2382,138.4914 L250.6596,148.5109 L251.2363,158.5303 L252.0759,168.5498 L251.3856,178.5692 L251.591,188.5887 L251.4574,198.6081 L251.738,208.6276 L251.8188,218.6471 L252.2809,228.6665 L252.3947,238.686 L252.4057,248.7054 L251.8395,258.7249 L252.1181,268.7443 L252.4363,278.7638 L250.5384,288.7832 L252.4047,298.8027 L251.1047,308.8222 L252.2117,318.8416 L250.84,328.8611 L251.4087,338.8805 L252.4888,348.9 L251.435,358.9194 L251.6404,368.9389 L251.9515,378.9583 L252.055,388.9778 L251.4948,398.9972 L251.883,409.0167 L250.7368,419.0362 L251.8792,429.0556 L252.2309,439.0751 L252.0927,449.0945 L252.3174,459.114 L250.8559,469.1334 L250.6304,479.1529 L250.6715,489.1723 L251.4215,499.1918 L251.238,509.2112 L252.4085,519.2307 L251.2671,529.2502 L251.0426,539.2696 L251.5,549.2891 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M388.5,38.2969 L388.7802,38.2969 L387.9476,48.3163 L388.7577,58.3358 L389.0329,68.3552 L387.5488,78.3747 L388.3964,88.3941 L387.9313,98.4136 L387.9887,108.4331 L388.4091,118.4525 L387.5782,128.472 L389.2382,138.4914 L387.6596,148.5109 L388.2363,158.5303 L389.0759,168.5498 L388.3856,178.5692 L388.591,188.5887 L388.4574,198.6081 L388.738,208.6276 L388.8188,218.6471 L389.2809,228.6665 L389.3947,238.686 L389.4057,248.7054 L388.8395,258.7249 L389.1181,268.7443 L389.4363,278.7638 L387.5384,288.7832 L389.4047,298.8027 L388.1047,308.8222 L389.2117,318.8416 L387.84,328.8611 L388.4087,338.8805 L389.4888,348.9 L388.435,358.9194 L388.6404,368.9389 L388.9515,378.9583 L389.055,388.9778 L388.4948,398.9972 L388.883,409.0167 L387.7368,419.0362 L388.8792,429.0556 L389.2309,439.0751 L389.0927,449.0945 L389.3174,459.114 L387.8559,469.1334 L387.6304,479.1529 L387.6715,489.1723 L388.4215,499.1918 L388.238,509.2112 L389.4085,519.2307 L388.2671,529.2502 L388.0426,539.2696 L388.5,549.2891 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M508.5,38.2969 L508.7802,38.2969 L507.9476,48.3163 L508.7577,58.3358 L509.0329,68.3552 L507.5488,78.3747 L508.3964,88.3941 L507.9313,98.4136 L507.9887,108.4331 L508.4091,118.4525 L507.5782,128.472 L509.2382,138.4914 L507.6596,148.5109 L508.2363,158.5303 L509.0759,168.5498 L508.3856,178.5692 L508.591,188.5887 L508.4574,198.6081 L508.738,208.6276 L508.8188,218.6471 L509.2809,228.6665 L509.3947,238.686 L509.4057,248.7054 L508.8395,258.7249 L509.1181,268.7443 L509.4363,278.7638 L507.5384,288.7832 L509.4047,298.8027 L508.1047,308.8222 L509.2117,318.8416 L507.84,328.8611 L508.4087,338.8805 L509.4888,348.9 L508.435,358.9194 L508.6404,368.9389 L508.9515,378.9583 L509.055,388.9778 L508.4948,398.9972 L508.883,409.0167 L507.7368,419.0362 L508.8792,429.0556 L509.2309,439.0751 L509.0927,449.0945 L509.3174,459.114 L507.8559,469.1334 L507.6304,479.1529 L507.6715,489.1723 L508.4215,499.1918 L508.238,509.2112 L509.4085,519.2307 L508.2671,529.2502 L508.0426,539.2696 L508.5,549.2891 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M628,38.2969 L628.2802,38.2969 L627.4476,48.3163 L628.2577,58.3358 L628.5329,68.3552 L627.0488,78.3747 L627.8964,88.3941 L627.4313,98.4136 L627.4887,108.4331 L627.9091,118.4525 L627.0782,128.472 L628.7382,138.4914 L627.1596,148.5109 L627.7363,158.5303 L628.5759,168.5498 L627.8856,178.5692 L628.091,188.5887 L627.9574,198.6081 L628.238,208.6276 L628.3188,218.6471 L628.7809,228.6665 L628.8947,238.686 L628.9057,248.7054 L628.3395,258.7249 L628.6181,268.7443 L628.9363,278.7638 L627.0384,288.7832 L628.9047,298.8027 L627.6047,308.8222 L628.7117,318.8416 L627.34,328.8611 L627.9087,338.8805 L628.9888,348.9 L627.935,358.9194 L628.1404,368.9389 L628.4515,378.9583 L628.555,388.9778 L627.9948,398.9972 L628.383,409.0167 L627.2368,419.0362 L628.3792,429.0556 L628.7309,439.0751 L628.5927,449.0945 L628.8174,459.114 L627.3559,469.1334 L627.1304,479.1529 L627.1715,489.1723 L627.9215,499.1918 L627.738,509.2112 L628.9085,519.2307 L627.7671,529.2502 L627.5426,539.2696 L628,549.2891 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><path d="M756.5,38.2969 L756.7802,38.2969 L755.9476,48.3163 L756.7577,58.3358 L757.0329,68.3552 L755.5488,78.3747 L756.3964,88.3941 L755.9313,98.4136 L755.9887,108.4331 L756.4091,118.4525 L755.5782,128.472 L757.2382,138.4914 L755.6596,148.5109 L756.2363,158.5303 L757.0759,168.5498 L756.3856,178.5692 L756.591,188.5887 L756.4574,198.6081 L756.738,208.6276 L756.8188,218.6471 L757.2809,228.6665 L757.3947,238.686 L757.4057,248.7054 L756.8395,258.7249 L757.1181,268.7443 L757.4363,278.7638 L755.5384,288.7832 L757.4047,298.8027 L756.1047,308.8222 L757.2117,318.8416 L755.84,328.8611 L756.4087,338.8805 L757.4888,348.9 L756.435,358.9194 L756.6404,368.9389 L756.9515,378.9583 L757.055,388.9778 L756.4948,398.9972 L756.883,409.0167 L755.7368,419.0362 L756.8792,429.0556 L757.2309,439.0751 L757.0927,449.0945 L757.3174,459.114 L755.8559,469.1334 L755.6304,479.1529 L755.6715,489.1723 L756.4215,499.1918 L756.238,509.2112 L757.4085,519.2307 L756.2671,529.2502 L756.0426,539.2696 L756.5,549.2891 " fill="none" style="stroke: #FF8C00; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="95,3,95,3.2102,105.1429,2.5857,115.2857,3.1933,125.4286,3.3997,135.5714,2.2866,145.7143,2.9223,155.8571,2.5735,166,3,165.8722,3,165.9773,9.0594,165.7695,15.1188,166.1845,21.1781,165.7899,27.2375,166,33.2969,166,33.0991,155.8571,33.7288,145.7143,33.2111,135.5714,33.3651,125.4286,33.2649,115.2857,33.4754,105.1429,33.536,95,33.2969,95.1952,33.2969,95.2237,27.2375,95.2264,21.1781,95.0849,15.1187,95.1545,9.0594,95,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="102" y="22.9951">Browser</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="95,548.2891,95,548.4992,105.1429,547.8747,115.2857,548.4823,125.4286,548.6887,135.5714,547.5757,145.7143,548.2113,155.8571,547.8626,166,548.2891,165.8722,548.2891,165.9773,554.3484,165.7695,560.4078,166.1845,566.4672,165.7899,572.5266,166,578.5859,166,578.3882,155.8571,579.0179,145.7143,578.5002,135.5714,578.6542,125.4286,578.554,115.2857,578.7645,105.1429,578.8251,95,578.5859,95.1952,578.5859,95.2237,572.5266,95.2264,566.4672,95.0849,560.4078,95.1545,554.3484,95,548.2891" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="102" y="568.2842">Browser</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="200.5,3,200.5,3.2102,210.3,2.5857,220.1,3.1933,229.9,3.3997,239.7,2.2866,249.5,2.9223,259.3,2.5735,269.1,2.6165,278.9,2.9318,288.7,2.3086,298.5,3,298.6845,3,298.2899,9.0594,298.4341,15.1188,298.644,21.1781,298.4714,27.2375,298.5,33.2969,298.5,33.3651,288.7,33.2649,278.9,33.4754,269.1,33.536,259.3,33.8826,249.5,33.9679,239.7,33.9761,229.9,33.5515,220.1,33.7605,210.3,33.9991,200.5,33.2969,200.2596,33.2969,200.7262,27.2375,200.4012,21.1781,200.6779,15.1187,200.335,9.0594,200.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="84" x="207.5" y="22.9951">WSGI Server</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="200.5,548.2891,200.5,548.4992,210.3,547.8747,220.1,548.4823,229.9,548.6887,239.7,547.5757,249.5,548.2113,259.3,547.8626,269.1,547.9056,278.9,548.2209,288.7,547.5977,298.5,548.2891,298.6845,548.2891,298.2899,554.3484,298.4341,560.4078,298.644,566.4672,298.4714,572.5266,298.5,578.5859,298.5,578.6542,288.7,578.554,278.9,578.7645,269.1,578.8251,259.3,579.1716,249.5,579.257,239.7,579.2652,229.9,578.8406,220.1,579.0495,210.3,579.2882,200.5,578.5859,200.2596,578.5859,200.7262,572.5266,200.4012,566.4672,200.6779,560.4078,200.335,554.3484,200.5,548.2891" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="84" x="207.5" y="568.2842">WSGI Server</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="340.5,3,340.5,3.2102,350.7222,2.5857,360.9444,3.1933,371.1667,3.3997,381.3889,2.2866,391.6111,2.9223,401.8333,2.5735,412.0556,2.6165,422.2778,2.9318,432.5,3,432.2695,3,432.6845,9.0594,432.2899,15.1188,432.4341,21.1781,432.644,27.2375,432.5,33.2969,432.5,33.2111,422.2778,33.3651,412.0556,33.2649,401.8333,33.4754,391.6111,33.536,381.3889,33.8826,371.1667,33.9679,360.9444,33.9761,350.7222,33.5515,340.5,33.2969,340.6545,33.2969,340.7341,27.2375,340.2596,21.1781,340.7262,15.1187,340.4012,9.0594,340.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="78" x="347.5" y="22.9951">Middleware</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="340.5,548.2891,340.5,548.4992,350.7222,547.8747,360.9444,548.4823,371.1667,548.6887,381.3889,547.5757,391.6111,548.2113,401.8333,547.8626,412.0556,547.9056,422.2778,548.2209,432.5,548.2891,432.2695,548.2891,432.6845,554.3484,432.2899,560.4078,432.4341,566.4672,432.644,572.5266,432.5,578.5859,432.5,578.5002,422.2778,578.6542,412.0556,578.554,401.8333,578.7645,391.6111,578.8251,381.3889,579.1716,371.1667,579.257,360.9444,579.2652,350.7222,578.8406,340.5,578.5859,340.6545,578.5859,340.7341,572.5266,340.2596,566.4672,340.7262,560.4078,340.4012,554.3484,340.5,548.2891" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="78" x="347.5" y="568.2842">Middleware</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="446.5,3,446.5,3.2102,456.5,2.5857,466.5,3.1933,476.5,3.3997,486.5,2.2866,496.5,2.9223,506.5,2.5735,516.5,2.6165,526.5,2.9318,536.5,2.3086,546.5,3.5536,556.5,2.3697,566.5,3,566.4341,3,566.644,9.0594,566.4714,15.1188,566.5227,21.1781,566.4894,27.2375,566.5,33.2969,566.5,33.4754,556.5,33.536,546.5,33.8826,536.5,33.9679,526.5,33.9761,516.5,33.5515,506.5,33.7605,496.5,33.9991,486.5,32.5757,476.5,33.9754,466.5,33.0004,456.5,33.8307,446.5,33.2969,446.335,33.2969,446.4772,27.2375,446.7472,21.1781,446.4838,15.1187,446.5351,9.0594,446.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="453.5" y="22.9951">WebApplication</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="446.5,548.2891,446.5,548.4992,456.5,547.8747,466.5,548.4823,476.5,548.6887,486.5,547.5757,496.5,548.2113,506.5,547.8626,516.5,547.9056,526.5,548.2209,536.5,547.5977,546.5,548.8427,556.5,547.6588,566.5,548.2891,566.4341,548.2891,566.644,554.3484,566.4714,560.4078,566.5227,566.4672,566.4894,572.5266,566.5,578.5859,566.5,578.7645,556.5,578.8251,546.5,579.1716,536.5,579.257,526.5,579.2652,516.5,578.8406,506.5,579.0495,496.5,579.2882,486.5,577.8648,476.5,579.2644,466.5,578.2894,456.5,579.1197,446.5,578.5859,446.335,578.5859,446.4772,572.5266,446.7472,566.4672,446.4838,560.4078,446.5351,554.3484,446.5,548.2891" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="453.5" y="568.2842">WebApplication</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="586,3,586,3.2102,596.125,2.5857,606.25,3.1933,616.375,3.3997,626.5,2.2866,636.625,2.9223,646.75,2.5735,656.875,2.6165,667,3,666.9773,3,666.7695,9.0594,667.1845,15.1188,666.7899,21.1781,666.9341,27.2375,667,33.2969,667,33.7288,656.875,33.2111,646.75,33.3651,636.625,33.2649,626.5,33.4754,616.375,33.536,606.25,33.8826,596.125,33.9679,586,33.2969,586.2264,33.2969,586.0849,27.2375,586.1545,21.1781,586.2341,15.1187,585.7596,9.0594,586,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="67" x="593" y="22.9951">Controller</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="586,548.2891,586,548.4992,596.125,547.8747,606.25,548.4823,616.375,548.6887,626.5,547.5757,636.625,548.2113,646.75,547.8626,656.875,547.9056,667,548.2891,666.9773,548.2891,666.7695,554.3484,667.1845,560.4078,666.7899,566.4672,666.9341,572.5266,667,578.5859,667,579.0179,656.875,578.5002,646.75,578.6542,636.625,578.554,626.5,578.7645,616.375,578.8251,606.25,579.1716,596.125,579.257,586,578.5859,586.2264,578.5859,586.0849,572.5266,586.1545,566.4672,586.2341,560.4078,585.7596,554.3484,586,548.2891" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="67" x="593" y="568.2842">Controller</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="717.5,3,717.5,3.2102,728.0714,2.5857,738.6429,3.1933,749.2143,3.3997,759.7857,2.2866,770.3571,2.9223,780.9286,2.5735,791.5,3,791.3722,3,791.4773,9.0594,791.2695,15.1188,791.6845,21.1781,791.2899,27.2375,791.5,33.2969,791.5,33.0991,780.9286,33.7288,770.3571,33.2111,759.7857,33.3651,749.2143,33.2649,738.6429,33.4754,728.0714,33.536,717.5,33.2969,717.6952,33.2969,717.7237,27.2375,717.7264,21.1781,717.5849,15.1187,717.6545,9.0594,717.5,3" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="60" x="724.5" y="22.9951">Manager</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="717.5,548.2891,717.5,548.4992,728.0714,547.8747,738.6429,548.4823,749.2143,548.6887,759.7857,547.5757,770.3571,548.2113,780.9286,547.8626,791.5,548.2891,791.3722,548.2891,791.4773,554.3484,791.2695,560.4078,791.6845,566.4672,791.2899,572.5266,791.5,578.5859,791.5,578.3882,780.9286,579.0179,770.3571,578.5002,759.7857,578.6542,749.2143,578.554,738.6429,578.7645,728.0714,578.8251,717.5,578.5859,717.6952,578.5859,717.7237,572.5266,717.7264,566.4672,717.5849,560.4078,717.6545,554.3484,717.5,548.2891" style="stroke: #FF8C00; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="60" x="724.5" y="568.2842">Manager</text><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="246.5,108.5625,246.5,108.6326,248.5,108.4244,250.5,108.6269,252.5,108.6957,254.5,108.3247,256.5,108.5625,256.4223,108.5625,256.0735,118.3147,256.1165,128.067,256.4318,137.8192,255.8086,147.5714,257.0536,157.3237,255.8697,167.0759,256.5,176.8281,256.5,176.7622,254.5,176.9721,252.5,176.7995,250.5,176.8509,248.5,176.8175,246.5,176.8281,246.6785,176.8281,246.7391,167.0759,247.0857,157.3237,247.1711,147.5714,247.1793,137.8192,246.7546,128.067,246.9636,118.3147,246.5,108.5625" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="246.5,205.9609,246.5,206.031,248.5,205.8228,250.5,206.0254,252.5,206.0942,254.5,205.7231,256.5,205.9609,256.4223,205.9609,256.0735,215.8194,256.1165,225.6778,256.4318,235.5362,255.8086,245.3946,257.0536,255.2531,255.8697,265.1115,256.3022,274.9699,256.9319,284.8284,256.4142,294.6868,256.5682,304.5452,256.4681,314.4036,256.6785,324.2621,256.7391,334.1205,257.0857,343.9789,257.1711,353.8374,257.1793,363.6958,256.7546,373.5542,256.9636,383.4126,257.2022,393.2711,255.7788,403.1295,257.1785,412.9879,256.2035,422.8464,257.0338,432.7048,256.005,442.5632,256.4315,452.4216,257.2416,462.2801,256.4513,472.1385,256.6053,481.9969,256.8386,491.8554,256.9162,501.7138,256.4961,511.5722,256.7872,521.4306,256.5,531.2891,256.5,531.0983,254.5,531.3839,252.5,531.4718,250.5,531.4372,248.5,531.4934,246.5,531.2891,246.0169,531.2891,245.8478,521.4306,245.8786,511.5722,246.4411,501.7138,246.3035,491.8554,247.1814,481.9969,246.3253,472.1385,246.1569,462.2801,246.7283,452.4216,245.8332,442.5632,245.9809,432.7048,247.149,422.8464,246.9357,412.9879,247.2345,403.1295,246.1782,393.2711,246.8192,383.4126,247.0904,373.5542,246.0276,363.6958,246.4041,353.8374,246.626,343.9789,247.1518,334.1205,246.4958,324.2621,246.9626,314.4036,245.9462,304.5452,245.8227,294.6868,247.0036,284.8284,245.7831,274.9699,247.009,265.1115,246.7066,255.2531,246.2321,245.3946,246.1462,235.5362,246.9588,225.6778,246.2007,215.8194,246.5,205.9609" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="383.5,235.0938,383.5,235.1638,385.5,234.9556,387.5,235.1582,389.5,235.227,391.5,234.856,393.5,235.0938,393.4223,235.0938,393.0735,245.1722,393.1165,255.2506,393.4318,265.329,392.8086,275.4074,394.0536,285.4858,392.8697,295.5642,393.3022,305.6426,393.9319,315.721,393.4142,325.7994,393.5682,335.8778,393.4681,345.9562,393.6785,356.0346,393.7391,366.113,394.0857,376.1914,394.1711,386.2698,394.1793,396.3482,393.7546,406.4266,393.9636,416.505,394.2022,426.5834,392.7788,436.6618,394.1785,446.7402,393.2035,456.8186,394.0338,466.897,393.005,476.9754,393.4315,487.0539,394.2416,497.1323,393.4513,507.2107,393.5,517.2891,393.5,517.3242,391.5,517.4019,389.5,517.4278,387.5,517.2878,385.5,517.3848,383.5,517.2891,382.9276,517.2891,383.7844,507.2107,384.0482,497.1323,383.9445,487.0539,384.113,476.9754,383.0169,466.897,382.8478,456.8186,382.8786,446.7402,383.4411,436.6618,383.3035,426.5834,384.1814,416.505,383.3253,406.4266,383.1569,396.3482,383.7283,386.2698,382.8332,376.1914,382.9809,366.113,384.149,356.0346,383.9357,345.9562,384.2345,335.8778,383.1782,325.7994,383.8192,315.721,384.0904,305.6426,383.0276,295.5642,383.4041,285.4858,383.626,275.4074,384.1518,265.329,383.4958,255.2506,383.9626,245.1722,383.5,235.0938" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="503.5,264.2266,503.5,264.2966,505.5,264.0885,507.5,264.291,509.5,264.3598,511.5,263.9888,513.5,264.2266,513.4223,264.2266,513.0735,274.4052,513.1165,284.5838,513.4318,294.7624,512.8086,304.9411,514.0536,315.1197,512.8697,325.2983,513.3022,335.4769,513.9319,345.6555,513.4142,355.8342,513.5682,366.0128,513.4681,376.1914,513.6785,386.37,513.7391,396.5487,514.0857,406.7273,514.1711,416.9059,514.1793,427.0845,513.7546,437.2631,513.9636,447.4418,514.2022,457.6204,512.7788,467.799,514.1785,477.9776,513.5,488.1563,513.5,488.0574,511.5,488.3342,509.5,487.9912,507.5,488.1334,505.5,488.4035,503.5,488.1563,503.4513,488.1563,503.6053,477.9776,503.8386,467.799,503.9162,457.6204,503.4961,447.4418,503.7872,437.2631,502.9276,427.0845,503.7844,416.9059,504.0482,406.7273,503.9445,396.5487,504.113,386.37,503.0169,376.1914,502.8478,366.0128,502.8786,355.8342,503.4411,345.6555,503.3035,335.4769,504.1814,325.2983,503.3253,315.1197,503.1569,304.9411,503.7283,294.7624,502.8332,284.5838,502.9809,274.4052,503.5,264.2266" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="623.5,293.3594,623.5,293.4294,625.5,293.2213,627.5,293.4238,629.5,293.4926,631.5,293.1216,633.5,293.3594,633.4223,293.3594,633.0735,303.4036,633.1165,313.4479,633.4318,323.4922,632.8086,333.5365,634.0536,343.5807,632.8697,353.625,633.3022,363.6693,633.9319,373.7135,633.4142,383.7578,633.5682,393.8021,633.4681,403.8464,633.6785,413.8906,633.7391,423.9349,634.0857,433.9792,634.1711,444.0234,634.1793,454.0677,633.7546,464.112,633.5,474.1563,633.5,474.3108,631.5,474.3903,629.5,473.9159,627.5,474.3824,625.5,474.0574,623.5,474.1563,624.0338,474.1563,623.005,464.112,623.4315,454.0677,624.2416,444.0234,623.4513,433.9792,623.6053,423.9349,623.8386,413.8906,623.9162,403.8464,623.4961,393.8021,623.7872,383.7578,622.9276,373.7135,623.7844,363.6693,624.0482,353.625,623.9445,343.5807,624.113,333.5365,623.0169,323.4922,622.8478,313.4479,622.8786,303.4036,623.5,293.3594" style="stroke: #FF8C00; stroke-width: 1.0;"/><polygon fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" points="751.5,307.3594,751.5,307.4294,753.5,307.2213,755.5,307.4238,757.5,307.4926,759.5,307.1216,761.5,307.3594,761.4223,307.3594,761.0735,317.1925,761.1165,327.0257,761.4318,336.8588,760.8086,346.692,762.0536,356.5251,760.8697,366.3583,761.3022,376.1914,761.9319,386.0246,761.4142,395.8577,761.5682,405.6908,761.4681,415.524,761.6785,425.3571,761.7391,435.1903,761.5,445.0234,761.5,445.2187,759.5,445.2471,757.5,445.2499,755.5,445.1083,753.5,445.178,751.5,445.0234,752.2022,445.0234,750.7788,435.1903,752.1785,425.3571,751.2035,415.524,752.0338,405.6908,751.005,395.8577,751.4315,386.0246,752.2416,376.1914,751.4513,366.3583,751.6053,356.5251,751.8386,346.692,751.9162,336.8588,751.4961,327.0257,751.7872,317.1925,751.5,307.3594" style="stroke: #FF8C00; stroke-width: 1.0;"/><path d="M460,53.2969 L460.1868,53.2969 L459.6317,58.2969 L460.1718,63.2969 L460.3553,68.2969 L459.3659,73.2969 L460,78.2969 L460,78.0896 L470.1176,77.1596 L480.2353,77.2742 L490.3529,78.1151 L500.4706,76.4532 L510.5882,79.7733 L520.7059,76.6161 L530.8235,77.7695 L540.9412,79.4487 L551.0588,78.0681 L561.1765,78.4788 L571.2941,78.2117 L581.4118,78.7729 L591.5294,78.9346 L601.6471,79.8587 L611.7647,80.0864 L621.8824,80.1082 L632,78.9759 L642.1176,79.5331 L652.2353,80.1695 L662.3529,76.3737 L672.4706,80.1062 L682.5882,77.5062 L692.7059,79.7204 L702.8235,76.9768 L712.9412,78.1142 L723.0588,80.2745 L733.1765,78.1669 L743.2941,78.5777 L753.4118,79.1999 L763.5294,79.4068 L773.6471,78.2865 L783.7647,79.0628 L793.8824,76.7704 L804,78.2969 L804.2528,78.2969 L804.4873,75.2969 L804.3951,72.2969 L804.5449,69.2969 L803.5706,66.2969 L804,63.2969 L803.5901,62.887 L801.6094,60.9063 L799.963,59.2599 L797.8765,57.1733 L796.4283,55.7252 L794,53.2969 L794,52.8311 L783.8788,52.3821 L773.7576,53.9056 L763.6364,51.5186 L753.5152,51.9125 L743.3939,55.0274 L733.2727,54.4587 L723.1515,55.2555 L713.0303,52.4388 L702.9091,54.1481 L692.7879,54.8713 L682.6667,52.0371 L672.5455,53.0412 L662.4242,53.6328 L652.303,55.0349 L642.1818,53.2857 L632.0606,54.5304 L621.9394,51.8201 L611.8182,51.4909 L601.697,54.6398 L591.5758,51.385 L581.4545,54.6541 L571.3333,53.8479 L561.2121,52.5824 L551.0909,52.3535 L540.9697,54.5202 L530.8485,52.4987 L520.7273,54.8752 L510.6061,51.8229 L500.4848,54.9433 L490.3636,54.5884 L480.2424,53.9501 L470.1212,53.4228 L460,53.2969 " fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M794,53.2969 L794.6459,53.2969 L794.5454,55.2969 L794.1504,57.2969 L794.2384,59.2969 L793.8842,61.2969 L794,63.2969 L794,63.9337 L796,63.4345 L798,63.4503 L800,62.7561 L802,62.9367 L804,63.2969 L804.3336,63.6305 L802.2701,61.567 L799.973,59.2699 L797.7975,57.0944 L795.8624,55.1593 L794,53.2969 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="102" x="574.5" y="70.3638">Galaxy Backend</text><polygon fill="#FFA500" points="234.5,104.5625,234.526,104.6275,236.4487,105.2343,238.5239,106.2223,240.5495,107.0862,242.4117,107.5417,244.5,108.5625,244.4904,108.5384,242.4472,109.2305,240.4525,110.0438,238.4916,110.9414,236.4144,111.5485,234.5,112.5625,234.6305,112.693,235.1514,111.6139,236.0534,110.9159,237.0018,110.2643,237.6798,109.3423,238.5,108.5625,238.5161,108.5786,237.6925,107.755,236.9421,107.0046,236.1564,106.2189,235.438,105.5005,234.5,104.5625" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M132.5,108.5625 L132.5,108.8427 L142.3182,108.0101 L152.1364,108.8202 L161.9545,109.0954 L171.7727,107.6113 L181.5909,108.4589 L191.4091,107.9938 L201.2273,108.0512 L211.0455,108.4716 L220.8636,107.6407 L230.6818,109.3007 L240.5,108.5625 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="95" x="139.5" y="103.4966">TCP/IP Request</text><path d="M8,121.5625 L8.1868,121.5625 L7.6317,129.5625 L8.1718,137.5625 L8.3553,145.5625 L7.3659,153.5625 L8,161.5625 L8,161.3553 L17.6667,160.4252 L27.3333,160.5398 L37,161.3807 L46.6667,159.7188 L56.3333,163.0389 L66,159.8818 L75.6667,161.0351 L85.3333,162.7144 L95,161.3338 L104.6667,161.7445 L114.3333,161.4773 L124,161.5625 L124.1587,161.5625 L124.2126,155.5625 L124.5206,149.5625 L124.5965,143.5625 L124.6038,137.5625 L124,131.5625 L124.16,131.7225 L122.2914,129.8539 L120.4414,128.0039 L117.5467,125.1092 L116.4265,123.989 L114,121.5625 L114,120.7718 L104.3636,122.986 L94.7273,120.2424 L85.0909,121.3798 L75.4545,123.5401 L65.8182,121.4325 L56.1818,121.8433 L46.5455,122.4655 L36.9091,122.6725 L27.2727,121.5521 L17.6364,122.3284 L8,121.5625 " fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M114,121.5625 L113.4912,121.5625 L114.2528,123.5625 L114.4873,125.5625 L114.3951,127.5625 L114.5449,129.5625 L114,131.5625 L114,131.1331 L116,130.9828 L118,131.0101 L120,131.5102 L122,131.3878 L124,131.5625 L124.4283,131.9908 L121.8902,129.4527 L119.7844,127.3469 L118.1435,125.706 L115.5809,123.1434 L114,121.5625 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="90" x="14" y="138.6294">Static content</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="95" x="14" y="153.7622">CSS, JS, Image</text><polygon fill="#FFA500" points="143.5,172.8281,143.526,172.8932,141.4487,173.4999,139.5239,174.4879,137.5495,175.3518,135.4117,175.8073,133.5,176.8281,133.4904,176.8041,135.4472,177.4961,137.4525,178.3094,139.4916,179.207,141.4144,179.8142,143.5,180.8281,143.6305,180.9586,142.5514,179.8796,141.8534,179.1815,141.2018,178.5299,140.2798,177.6079,139.5,176.8281,139.5161,176.8442,140.2925,176.0206,141.1421,175.2702,141.9564,174.4845,142.838,173.7662,143.5,172.8281" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M137.5,176.8281 L137.5,177.1084 L147.7727,176.2757 L158.0455,177.0858 L168.3182,177.361 L178.5909,175.8769 L188.8636,176.7245 L199.1364,176.2595 L209.4091,176.3168 L219.6818,176.7372 L229.9545,175.9063 L240.2273,177.5663 L250.5,176.8281 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><polygon fill="#FFA500" points="234.5,201.9609,234.526,202.026,236.4487,202.6327,238.5239,203.6208,240.5495,204.4846,242.4117,204.9401,244.5,205.9609,244.4904,205.9369,242.4472,206.6289,240.4525,207.4422,238.4916,208.3398,236.4144,208.947,234.5,209.9609,234.6305,210.0914,235.1514,209.0124,236.0534,208.3143,237.0018,207.6627,237.6798,206.7407,238.5,205.9609,238.5161,205.977,237.6925,205.1534,236.9421,204.403,236.1564,203.6173,235.438,202.899,234.5,201.9609" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M132.5,205.9609 L132.5,206.2412 L142.3182,205.4085 L152.1364,206.2187 L161.9545,206.4938 L171.7727,205.0097 L181.5909,205.8573 L191.4091,205.3923 L201.2273,205.4496 L211.0455,205.8701 L220.8636,205.0391 L230.6818,206.6991 L240.5,205.9609 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="95" x="139.5" y="200.895">TCP/IP Request</text><polygon fill="#FFA500" points="371.5,231.0938,371.526,231.1588,373.4487,231.7655,375.5239,232.7536,377.5495,233.6174,379.4117,234.073,381.5,235.0938,381.4904,235.0697,379.4472,235.7618,377.4525,236.5751,375.4916,237.4727,373.4144,238.0798,371.5,239.0938,371.6305,239.2242,372.1514,238.1452,373.0534,237.4471,374.0018,236.7956,374.6798,235.8735,375.5,235.0938,375.5161,235.1098,374.6925,234.2862,373.9421,233.5358,373.1564,232.7501,372.438,232.0318,371.5,231.0938" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M256.5,235.0938 L256.5,235.374 L266.5833,234.5413 L276.6667,235.3515 L286.75,235.6267 L296.8333,234.1426 L306.9167,234.9901 L317,234.5251 L327.0833,234.5824 L337.1667,235.0029 L347.25,234.1719 L357.3333,235.8319 L367.4167,234.2534 L377.5,235.0938 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="78" x="263.5" y="230.0278">wsgi environ</text><polygon fill="#FFA500" points="491.5,260.2266,491.526,260.2916,493.4487,260.8983,495.5239,261.8864,497.5495,262.7503,499.4117,263.2058,501.5,264.2266,501.4904,264.2025,499.4472,264.8946,497.4525,265.7079,495.4916,266.6055,493.4144,267.2126,491.5,268.2266,491.6305,268.3571,492.1514,267.278,493.0534,266.5799,494.0018,265.9284,494.6798,265.0063,495.5,264.2266,495.5161,264.2426,494.6925,263.419,493.9421,262.6686,493.1564,261.8829,492.438,261.1646,491.5,260.2266" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M393.5,264.2266 L393.5,264.5068 L403.9,263.6741 L414.3,264.4843 L424.7,264.7595 L435.1,263.2754 L445.5,264.1229 L455.9,263.6579 L466.3,263.7152 L476.7,264.1357 L487.1,263.3047 L497.5,264.2266 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="78" x="400.5" y="259.1606">wsgi environ</text><polygon fill="#FFA500" points="611.5,289.3594,611.526,289.4244,613.4487,290.0311,615.5239,291.0192,617.5495,291.8831,619.4117,292.3386,621.5,293.3594,621.4904,293.3353,619.4472,294.0274,617.4525,294.8407,615.4916,295.7383,613.4144,296.3454,611.5,297.3594,611.6305,297.4899,612.1514,296.4108,613.0534,295.7128,614.0018,295.0612,614.6798,294.1392,615.5,293.3594,615.5161,293.3755,614.6925,292.5518,613.9421,291.8015,613.1564,291.0157,612.438,290.2974,611.5,289.3594" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M513.5,293.3594 L513.5,293.6396 L523.9,292.8069 L534.3,293.6171 L544.7,293.8923 L555.1,292.4082 L565.5,293.2558 L575.9,292.7907 L586.3,292.848 L596.7,293.2685 L607.1,292.4375 L617.5,293.3594 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="91" x="520.5" y="288.2935">trans, payload</text><polygon fill="#FFA500" points="739.5,303.3594,739.526,303.4244,741.4487,304.0311,743.5239,305.0192,745.5495,305.8831,747.4117,306.3386,749.5,307.3594,749.4904,307.3353,747.4472,308.0274,745.4525,308.8407,743.4916,309.7383,741.4144,310.3454,739.5,311.3594,739.6305,311.4899,740.1514,310.4108,741.0534,309.7128,742.0018,309.0612,742.6798,308.1392,743.5,307.3594,743.5161,307.3755,742.6925,306.5518,741.9421,305.8015,741.1564,305.0157,740.438,304.2974,739.5,303.3594" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M633.5,307.3594 L633.5,307.6396 L643.6818,306.8069 L653.8636,307.6171 L664.0455,307.8923 L674.2273,306.4082 L684.4091,307.2558 L694.5909,306.7907 L704.7727,306.848 L714.9545,307.2685 L725.1364,306.4375 L735.3182,308.0976 L745.5,307.3594 " fill="none" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M26,320.3594 L26.1868,320.3594 L25.6317,325.3594 L26.1718,330.3594 L26.3553,335.3594 L25.3659,340.3594 L26,345.3594 L26,345.1521 L35.7,344.2221 L45.4,344.3367 L55.1,345.1776 L64.8,343.5157 L74.5,346.8358 L84.2,343.6786 L93.9,344.832 L103.6,346.5112 L113.3,345.1306 L123,345.3594 L123.0607,345.3594 L122.9716,342.3594 L123.1587,339.3594 L123.2126,336.3594 L123.5206,333.3594 L123,330.3594 L123.4218,330.7812 L121.4269,328.7863 L119.16,326.5194 L117.2914,324.6508 L115.4414,322.8008 L113,320.3594 L113,318.4362 L103.3333,322.1687 L93.6667,319.5687 L84,321.7829 L74.3333,319.0393 L64.6667,320.1767 L55,322.337 L45.3333,320.2294 L35.6667,320.6402 L26,320.3594 " fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M113,320.3594 L113.301,320.3594 L113.37,322.3594 L112.9965,324.3594 L113.2553,326.3594 L112.4912,328.3594 L113,330.3594 L113,330.6122 L115,330.8467 L117,330.7545 L119,330.9043 L121,329.93 L123,330.3594 L122.5901,329.9495 L120.6094,327.9688 L118.963,326.3224 L116.8765,324.2358 L115.4283,322.7877 L113,320.3594 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="32" y="337.4263">API Request</text><path d="M766,359.4922 L766.5605,359.4922 L764.8951,368.6589 L766.5154,377.8255 L767.0658,386.9922 L764.0976,396.1589 L765.7928,405.3255 L766,414.4922 L766,413.3549 L776.15,413.4695 L786.3,414.3104 L796.45,412.6485 L806.6,415.9686 L816.75,412.8114 L826.9,413.9648 L837.05,415.644 L847.2,414.2634 L857.35,414.6742 L867.5,414.407 L877.65,414.9683 L887.8,415.1299 L897.95,416.054 L908.1,416.2817 L918.25,416.3035 L928.4,415.1712 L938.55,415.7284 L948.7,416.3648 L958.85,412.569 L969,414.4922 L970.8094,414.4922 L968.2093,405.4922 L970.4235,396.4922 L967.6799,387.4922 L968.8173,378.4922 L969,369.4922 L969.4661,369.9583 L966.9694,367.4616 L965.0662,365.5584 L963.2128,363.705 L961.2616,361.7538 L959,359.4922 L959,359.4818 L948.8421,360.2581 L938.6842,357.9657 L928.5263,360.2506 L918.3684,360.954 L908.2105,360.6776 L898.0526,361.1269 L887.8947,358.204 L877.7368,357.753 L867.5789,357.8351 L857.4211,359.3352 L847.2632,358.9681 L837.1053,361.3093 L826.9474,359.0264 L816.7895,358.5774 L806.6316,360.1009 L796.4737,357.714 L786.3158,358.1079 L776.1579,361.2227 L766,359.4922 " fill="#FFEFD5" filter="url(#f14dzteb5b1yb4)" style="stroke: #BF5700; stroke-width: 1.0;"/><path d="M959,359.4922 L959.3873,359.4922 L959.6529,361.4922 L958.714,363.4922 L959.2837,365.4922 L959.5248,367.4922 L959,369.4922 L959,369.0723 L961,369.407 L963,369.6042 L965,370.0715 L967,369.4885 L969,369.4922 L969.2907,369.7829 L966.6519,367.1441 L964.5743,365.0665 L963.3165,363.8087 L960.5494,361.0416 L959,359.4922 " fill="#FFEFD5" style="stroke: #BF5700; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="181" x="772" y="376.5591">Vanilla Python function calls.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="182" x="772" y="391.6919">Use application components</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="171" x="772" y="406.8247">to perform "business logic"</text><polygon fill="#FFA500" points="644.5,441.0234,644.526,441.0885,642.4487,441.6952,640.5239,442.6833,638.5495,443.5471,636.4117,444.0026,634.5,445.0234,634.4904,444.9994,636.4472,445.6914,638.4525,446.5047,640.4916,447.4023,642.4144,448.0095,644.5,449.0234,644.6305,449.1539,643.5514,448.0749,642.8534,447.3768,642.2018,446.7252,641.2798,445.8032,640.5,445.0234,640.5161,445.0395,641.2925,444.2159,642.1421,443.4655,642.9564,442.6798,643.838,441.9615,644.5,441.0234" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M638.5,445.0234 L638.5,445.3037 L648.25,444.471 L658,445.2812 L667.75,445.5563 L677.5,444.0722 L687.25,444.9198 L697,444.4548 L706.75,444.5121 L716.5,444.9326 L726.25,444.1016 L736,445.7616 L745.75,444.1831 L755.5,445.0234 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="650.5" y="439.9575">Python objects</text><polygon fill="#FFA500" points="524.5,470.1563,524.526,470.2213,522.4487,470.828,520.5239,471.8161,518.5495,472.6799,516.4117,473.1355,514.5,474.1563,514.4904,474.1322,516.4472,474.8243,518.4525,475.6376,520.4916,476.5352,522.4144,477.1423,524.5,478.1563,524.6305,478.2867,523.5514,477.2077,522.8534,476.5096,522.2018,475.8581,521.2798,474.936,520.5,474.1563,520.5161,474.1723,521.2925,473.3487,522.1421,472.5983,522.9564,471.8126,523.838,471.0943,524.5,470.1563" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M518.5,474.1563 L518.5,474.4365 L528.4091,473.6038 L538.3182,474.414 L548.2273,474.6892 L558.1364,473.2051 L568.0455,474.0526 L577.9545,473.5876 L587.8636,473.6449 L597.7727,474.0654 L607.6818,473.2344 L617.5909,474.8944 L627.5,474.1563 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="530.5" y="469.0903">JSON</text><polygon fill="#FFA500" points="404.5,484.1563,404.526,484.2213,402.4487,484.828,400.5239,485.8161,398.5495,486.6799,396.4117,487.1355,394.5,488.1563,394.4904,488.1322,396.4472,488.8243,398.4525,489.6376,400.4916,490.5352,402.4144,491.1423,404.5,492.1563,404.6305,492.2867,403.5514,491.2077,402.8534,490.5096,402.2018,489.8581,401.2798,488.936,400.5,488.1563,400.5161,488.1723,401.2925,487.3487,402.1421,486.5983,402.9564,485.8126,403.838,485.0943,404.5,484.1563" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M398.5,488.1563 L398.5,488.4365 L408.4091,487.6038 L418.3182,488.414 L428.2273,488.6892 L438.1364,487.2051 L448.0455,488.0526 L457.9545,487.5876 L467.8636,487.6449 L477.7727,488.0654 L487.6818,487.2344 L497.5909,488.8944 L507.5,488.1563 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><polygon fill="#FFA500" points="267.5,513.2891,267.526,513.3541,265.4487,513.9608,263.5239,514.9489,261.5495,515.8128,259.4117,516.2683,257.5,517.2891,257.4904,517.265,259.4472,517.9571,261.4525,518.7704,263.4916,519.668,265.4144,520.2751,267.5,521.2891,267.6305,521.4196,266.5514,520.3405,265.8534,519.6424,265.2018,518.9909,264.2798,518.0688,263.5,517.2891,263.5161,517.3051,264.2925,516.4815,265.1421,515.7311,265.9564,514.9454,266.838,514.2271,267.5,513.2891" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M261.5,517.2891 L261.5,517.5693 L271.1923,516.7366 L280.8846,517.5468 L290.5769,517.822 L300.2692,516.3379 L309.9615,517.1854 L319.6538,516.7204 L329.3462,516.7777 L339.0385,517.1982 L348.7308,516.3672 L358.4231,518.0273 L368.1154,516.4487 L377.8077,517.0254 L387.5,517.2891 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><text fill="#FF8C00" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="103" x="273.5" y="512.2231">Stream of bytes</text><polygon fill="#FFA500" points="143.5,527.2891,143.526,527.3541,141.4487,527.9608,139.5239,528.9489,137.5495,529.8128,135.4117,530.2683,133.5,531.2891,133.4904,531.265,135.4472,531.9571,137.4525,532.7704,139.4916,533.668,141.4144,534.2751,143.5,535.2891,143.6305,535.4196,142.5514,534.3405,141.8534,533.6424,141.2018,532.9909,140.2798,532.0688,139.5,531.2891,139.5161,531.3051,140.2925,530.4815,141.1421,529.7311,141.9564,528.9454,142.838,528.2271,143.5,527.2891" style="stroke: #FFA500; stroke-width: 1.0;"/><path d="M137.5,531.2891 L137.5,531.5693 L147.7727,530.7366 L158.0455,531.5468 L168.3182,531.822 L178.5909,530.3379 L188.8636,531.1854 L199.1364,530.7204 L209.4091,530.7777 L219.6818,531.1982 L229.9545,530.3672 L240.2273,532.0273 L250.5,531.2891 " fill="none" style="stroke: #FFA500; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;"/><!--MD5=[7e1422d560624c32c9a4402ada7deb96] +@startuml + + +!include plantuml_options.txt +participant Browser +participant "WSGI Server" +participant Middleware +participant WebApplication +participant Controller +participant Manager + +note over WebApplication, Manager: Galaxy Backend + +Browser -> "WSGI Server": TCP/IP Request +activate "WSGI Server" +note left of Browser: Static content\nCSS, JS, Image +"WSGI Server" - -> Browser +deactivate "WSGI Server" + +Browser -> "WSGI Server": TCP/IP Request +activate "WSGI Server" +"WSGI Server" -> Middleware: wsgi environ +activate Middleware +Middleware -> WebApplication: wsgi environ +activate WebApplication +WebApplication -> Controller: trans, payload +activate Controller +Controller -> Manager: +activate Manager + +note left of Browser: API Request +note right of Manager: Vanilla Python function calls.\nUse application components\nto perform "business logic" + +Manager - -> Controller: Python objects +deactivate Manager + +Controller - -> WebApplication: JSON +deactivate Controller + +WebApplication - -> Middleware: +deactivate WebApplication + +Middleware - -> "WSGI Server": Stream of bytes +deactivate Middleware + +"WSGI Server" - -> Browser +deactivate "WSGI Server" + +@enduml + +@startuml + + +skinparam handwritten true + +skinparam class { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam object { + ArrowFontColor DarkOrange + BackgroundColor #FFEFD5 + ArrowColor Orange + BorderColor DarkOrange +} + +skinparam note { + BackgroundColor #FFEFD5 + BorderColor #BF5700 +} + +skinparam sequence { + ArrowColor Orange + ArrowFontColor DarkOrange + ActorBorderColor DarkOrange + ActorBackgroundColor #FFEFD5 + + ParticipantBorderColor DarkOrange + ParticipantBackgroundColor #FFEFD5 + + LifeLineBorderColor DarkOrange + LifeLineBackgroundColor #FFEFD5 +} +participant Browser +participant "WSGI Server" +participant Middleware +participant WebApplication +participant Controller +participant Manager + +note over WebApplication, Manager: Galaxy Backend + +Browser -> "WSGI Server": TCP/IP Request +activate "WSGI Server" +note left of Browser: Static content\nCSS, JS, Image +"WSGI Server" - -> Browser +deactivate "WSGI Server" + +Browser -> "WSGI Server": TCP/IP Request +activate "WSGI Server" +"WSGI Server" -> Middleware: wsgi environ +activate Middleware +Middleware -> WebApplication: wsgi environ +activate WebApplication +WebApplication -> Controller: trans, payload +activate Controller +Controller -> Manager: +activate Manager + +note left of Browser: API Request +note right of Manager: Vanilla Python function calls.\nUse application components\nto perform "business logic" + +Manager - -> Controller: Python objects +deactivate Manager + +Controller - -> WebApplication: JSON +deactivate Controller + +WebApplication - -> Middleware: +deactivate WebApplication + +Middleware - -> "WSGI Server": Stream of bytes +deactivate Middleware + +"WSGI Server" - -> Browser +deactivate "WSGI Server" + +@enduml + +PlantUML version 1.2020.11(Sat May 30 12:13:43 CEST 2020) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg> \ No newline at end of file diff --git a/topics/dev/images/wsgi_app.plantuml.txt b/topics/dev/images/wsgi_app.plantuml.txt new file mode 100644 index 00000000000000..96814abee5c996 --- /dev/null +++ b/topics/dev/images/wsgi_app.plantuml.txt @@ -0,0 +1,48 @@ +@startuml + +!include plantuml_options.txt +participant Browser +participant "WSGI Server" +participant Middleware +participant WebApplication +participant Controller +participant Manager + +note over WebApplication, Manager: Galaxy Backend + +Browser -> "WSGI Server": TCP/IP Request +activate "WSGI Server" +note left of Browser: Static content\nCSS, JS, Image +"WSGI Server" --> Browser +deactivate "WSGI Server" + +Browser -> "WSGI Server": TCP/IP Request +activate "WSGI Server" +"WSGI Server" -> Middleware: wsgi environ +activate Middleware +Middleware -> WebApplication: wsgi environ +activate WebApplication +WebApplication -> Controller: trans, payload +activate Controller +Controller -> Manager: +activate Manager + +note left of Browser: API Request +note right of Manager: Vanilla Python function calls.\nUse application components\nto perform "business logic" + +Manager --> Controller: Python objects +deactivate Manager + +Controller --> WebApplication: JSON +deactivate Controller + +WebApplication --> Middleware: +deactivate WebApplication + +Middleware --> "WSGI Server": Stream of bytes +deactivate Middleware + +"WSGI Server" --> Browser +deactivate "WSGI Server" + +@enduml diff --git a/topics/dev/tutorials/architecture/slides.html b/topics/dev/tutorials/architecture/slides.html index f6dfc8fcb025e5..444556f27ef521 100644 --- a/topics/dev/tutorials/architecture/slides.html +++ b/topics/dev/tutorials/architecture/slides.html @@ -15,8 +15,8 @@ requirements: key_points: - "Galaxy runs out of the box and fetches all needed dependencies." - - "Running Galaxy in production requires work configuration." - - "The architecture is designed to be pluggable and extendable." + - "Running Galaxy in production requires configuration." + - "The architecture is designed to be pluggable and extensible." - "Learn more about different Galaxy aspects in our [development section](/topics/dev/)." contributors: - jmchilton @@ -46,20 +46,30 @@ --- -## Getting involved in Galaxy - ---- +class: enlarge200 **Gitter:** [galaxyproject/Lobby ](https://gitter.im/galaxyproject/Lobby) -**IRC:** [irc.freenode.net#galaxyproject ](https://webchat.freenode.net/?channels=galaxyproject) - **GitHub:** [github.com/galaxyproject ](https://github.com/galaxyproject) **Twitter:** #usegalaxy, @galaxyproject --- +## The **/galaxyproject** projects + +*The social architecture of the ecosystem.* + +??? + +Too many to cover all but we'll cover some of the big ones in a few big +categories. User-facing applications, projects for Galaxy plugin developers, +and projects for Galaxy administrators. + +--- + +class: enlarge150 + ### Contributing All Galaxy development happens on GitHub @@ -68,28 +78,91 @@ --- -## The **/galaxyproject** projects +class: enlarge200 + +**User-Facing Applications** --- +class: enlarge150 + [galaxyproject/**galaxy** ](https://github.com/galaxyproject/galaxy) The main Galaxy application. Web interface, database model, job running, etc... -Also includes other web applications including the **ToolShed** and **Reports** +Also includes other web applications including the **ToolShed**. --- +class: enlarge150 + +[galaxyproject/**cloudlaunch** ](https://github.com/galaxyproject/cloudlaunch) + +CloudLaunch web application to make it easy to launch images on a cloud, drives *https://launch.usegalaxy.org* + +--- + +class: enlarge150 + +[galaxyproject/**training-material** ](https://github.com/galaxyproject/training-material) + +![logo](https://github.com/galaxyproject/training-material/raw/master/shared/images/GTNLogo1000.png) + +Galaxy training material for scientists, developers, and admins. Powers *https://training.galaxyproject.org/*. + +--- + +class: enlarge150 + +[galaxyproject/**bioblend** ](https://github.com/galaxyproject/bioblend) + +Official Python client for the Galaxy, ToolShed, and CloudMan APIs. + +Best documented path to scripting the Galaxy API. + +--- + +class: enlarge150 + +- [galaxyproject/**blend4php**](https://github.com/galaxyproject/blend4php) +- [**jmchilton/blend4j**](https://github.com/jmchilton/blend4j) +- [**chapmanb/clj-blend**](https://github.com/chapmanb/clj-blend) + +Galaxy API bindings for other languages, less actively maintained. + +--- + +class: enlarge150 + [galaxyproject/**cloudman**](https://github.com/galaxyproject/cloudman) -Galaxy CloudMan - a web application which manages a Galaxy cluster in +Galaxy CloudMan - a web application which manages a Galaxy Kubernetes cluster in the cloud. -[galaxyproject/**cloudlaunch** ](https://github.com/galaxyproject/cloudlaunch) +--- + +class: enlarge150 + +[**bgruening/docker-galaxy-stable** ](https://github.com/bgruening/docker-galaxy-stable) + +High quality Docker containers for stable Galaxy environments. + +Releases corresponding to each new version of Galaxy. + +Many flavors available. + +--- -CloudLaunch web application to make it easy to launch images on a cloud, drives *https://launch.usegalaxy.org * +class: white +![Docker](../../images/docker-chart.png) + +--- + +class: enlarge200 + +**For Plugin Developers** --- @@ -106,7 +179,6 @@ Many older tools appearing on usegalaxy.org. - --- ### Tools Aside - More Repositories @@ -126,16 +198,9 @@ * [AAFC-MBB Canada repo](https://github.com/AAFC-MBB/Galaxy/tree/master/wrappers) * [Mark Einon's repo](https://gitlab.com/einonm/galaxy-tools) - --- -[galaxyproject/**starforge** ](https://github.com/galaxyproject/starforge) - -Build Galaxy Tool dependencies for the ToolShed in Docker containers - -Build Galaxy framework dependencies as Python wheels - ---- +class: enlarge150 [galaxyproject/**planemo** ](https://github.com/galaxyproject/planemo) @@ -151,7 +216,26 @@ --- -galaxyproject/**{ansible-\*, \*-playbook}** +class: enlarge150 + +[galaxyproject/**starforge** ](https://github.com/galaxyproject/starforge) + +![StarForge logo](https://raw.githubusercontent.com/galaxyproject/starforge/master/docs/starforge_logo.png) + +Build Galaxy framework dependencies as Python wheels when needed. + +--- + +class: enlarge200 + +**For Deployers and Admins** + +--- + +class: enlarge150 + +galaxyproject/**{ansible-\*, \*-playbook}**<br> +usegalaxy-eu/**{ansible-\*, \*-playbook}** [Ansible](https://www.ansible.com/) components to automate almost every aspect of Galaxy installation and maintenance. @@ -161,7 +245,11 @@ --- -[galaxyproject/**pulsar**](https://github.com/galaxyproject/pulsar) +class: enlarge150 + +[galaxyproject/**pulsar** ](https://github.com/galaxyproject/pulsar) + +![Pulsar Logo](https://galaxyproject.org/images/galaxy-logos/pulsar_transparent.png) Distributed job execution engine for Galaxy. @@ -173,39 +261,116 @@ --- -[galaxyproject/**bioblend** ](https://github.com/galaxyproject/bioblend) +class: enlarge150 -Official Python client for the Galaxy, ToolShed, and CloudMan APIs. +[galaxyproject/**ephemeris** ](https://github.com/galaxyproject/ephemeris) -Best documented path to scripting the Galaxy API. +Library and CLI for managing Galaxy plugins - tools, index data, and workflows. + +Layer on top of BioBlend building useful utilities for working with the Galaxy API from an administrator perspective. --- -- [galaxyproject/**blend4php**](https://github.com/galaxyproject/blend4php) -- [**jmchilton/blend4j**](https://github.com/jmchilton/blend4j) -- [**chapmanb/clj-blend**](https://github.com/chapmanb/clj-blend) +class: enlarge150 -Galaxy API bindings for other languages. +[**usegalaxy-eu/gxadmin **](https://github.com/usegalaxy-eu/gxadmin) + +Handy command-line utility for Galaxy administrators. --- -[**bgruening/docker-galaxy-stable** ](https://github.com/bgruening/docker-galaxy-stable) +class: enlarge150 -High quality Docker containers for stable Galaxy environments. +### ephemeris vs gxadmin -Releases corresponding to each new version of Galaxy. +Ephemeris generally talks to the Galaxy API and is a pure Python project, gxadmin talks directly to the Galaxy database and relevant files. -Many flavors available. +--- + +## Putting it all together + +![](../../images/galaxy_main_scheme.png) + +??? + +TODO: cover gxformat2, helmchart, cloudlaunch --- -class: white -![Docker](../../images/docker-chart.png) +class: enlarge200 + +[galaxyproject/**galaxy** ](https://github.com/galaxyproject/galaxy) + +The rest of the slides will focus on the core repository. + +--- + +## Project Management + +*The social architecture of the project.* + +--- + +class: enlarge200 + +### Contributing Quick Start + +Contribution guidelines: https://bit.ly/gx-CONTRIBUTING-md + +--- + +class: enlarge200 + +### Pull Requests + +Nearly all changes should come in through GitHub Pull Requests. + +The exceptions include security patches, packaging and release process artifacts, and backporting fixes to older releases. + +--- + +class: enlarge150 + +### Security (SECURITY_POLICY.md) + +In brief, to responsibly report security issues e-mail + +[`galaxy-committers@lists.galaxyproject.org`](mailto:galaxy-committers@lists.galaxyproject.org) + +--- + +### Branches + +![Branches](../../images/core_branches.plantuml.svg) + +--- + +class: enlarge150 + +### Committers & Open Goverance + +All repository goverance is done in the open on GitHub via Pull Requests and voting. Galaxy goes beyond open source to open goverance. + +> "The committers group is the group of trusted developers and advocates who manage the core Galaxy code base." + +> "Galaxy Project committers are the only individuals who may commit to the core Galaxy code base." + +> "Committers may participate in all formal votes, including votes to modify team membership, merge pull requests, and modify [policies]." + +--- + +class: enlarge200 + +### Code of Conduct (CODE_OF_CONDUCT.md) + +Describes expectations, encourages diversity, and describes how to report issues such as unacceptable behavior. --- ## Principles +*The guiding principles of the core code architecture.* + --- ### Aspirational Principles of Galaxy Architecture @@ -232,9 +397,9 @@ - Consistent colors, fonts, themes, etc... - Reusable components for presenting common widgets - from the generic (forms and grids) to the specific (tools and histories). - Tied to specific technologies: - - JavaScript driven - - Backbone for MVC - - webpack & RequireJS for modules + - Implemented in JavaScript (ES6) + - Built with [webpack](https://webpack.js.org/) + - [Vue.js](https://vuejs.org/) for component definitions --- @@ -243,11 +408,11 @@ Galaxy's backend is in many ways driven by *pluggable interfaces* and can be adapted to many different technologies. -- SQLAlchemy allows using sqlite, postgres, or MySQL for a database. +- SQLAlchemy allows using SQLite, PostgreSQL, or MySQL (sort of) for your database. - Many different cluster backends or job managers are supported. - Different frontend proxies (e.g. nginx) are supported as well as web application containers (e.g. uWSGI). -- Different storage strategies and technologies are supported (e.g. S3). +- Different storage strategies and technologies are supported (e.g. S3, iRODS). - Tool definitions, job metrics, stat middleware, tool dependency resolution, workflow modules, datatype definitions are all plugin driven. @@ -273,57 +438,91 @@ --- -## Web Frameworks +### In other words... + +The Galaxy frontend is architected with the bench scientist in mind first and foremost, +the Galaxy backend is architected with Galaxy administrators in mind first and foremost. + +??? + +TODO: slide connecting architecture to people here --- -![Client-Server Communications](../../images/server_client.plantuml.svg) +## Files and Directories -??? +*The physical architecture of the Galaxy code.* -Workflow, Data Libraries, Visualization, History, Tool Menu, -Many Grids, User and preference management. +--- + +### Project Docs + +![Project Files](../../images/core_files_project_docs.plantuml.svg) --- -class: white +### Code -![Backbone MVC](../../images/backbone-model-view.svg) +![Code](../../images/core_files_code.plantuml.svg) -### Backbone MVC +--- + +### Scripts + +![Scripts](../../images/core_files_scripts.plantuml.svg) --- -![Client-Server Communications (old)](../../images/server_client_old.plantuml.svg) +### Test Sources -??? +![Test Source Files](../../images/core_files_test.plantuml.svg) -Admin things, Reports and Tool Shed Web app +--- + +### Continuous Integration + +![Continuous Integration Files](../../images/core_files_ci.plantuml.svg) --- -![WSGI Application](../../images/wsgi_app.svg) +## Web Frameworks -### Galaxy WSGI +*The architecture of an interaction.* + +--- + +class: reduce70 + +![Client-Server Communications](../../images/server_client_vuejs.plantuml.svg) + +Bits and pieces of older client technologies appear throughout - ranging from Python +mako templates to generate HTML, lower-level jQuery, and lots of Backbone legacy MVC. + +--- + +![Processing requests on the server](../../images/wsgi_app.plantuml.svg) + +Expanding the right side of that diagram. We will move through the component left to right. --- ### WSGI - Python interface for web servers defined by PEP 333 - https://www.python.org/dev/peps/pep-0333/. -- Galaxy moving from Paster to uWSGI to host the application. - - https://bitbucket.org/ianb/paste - - https://uwsgi-docs.readthedocs.io/ +- Galaxy tends to favor uWSGI, but other options such as Gunicorn and Paste can be used to host the application. + - https://uwsgi-docs.readthedocs.io/ (a million bells and whistles, highly performant, a bit brittle) + - https://gunicorn.org/ (simpler, more standard Python 3 WSGI server) + - https://bitbucket.org/ianb/paste (more of legacy interest, but still heavily used in testing for instance) --- -![WSGI Request](../../images/wsgi_request.svg) +![Processing requests on the server](../../images/wsgi_app.plantuml.svg) --- template: left-aligned -### Galaxy WSGI Middleware +### WSGI Middleware A WSGI function: @@ -352,6 +551,18 @@ --- +![Processing requests on the server](../../images/wsgi_app.plantuml.svg) + +--- + +### Classes + +![GalaxyWebApplication class diagram](../../images/webapp_classes.plantuml.svg) + +--- + +### Instances + ![webapp](../../images/webapp.plantuml.svg) --- @@ -412,6 +623,18 @@ --- +class: enlarge150 + +### Why not just Django? + +We do build on many of the same standards, concepts, and libraries - the entire stack isn't custom code but there is a non-trivial web framework defined in "Galaxy". + +The Galaxy community likes Django and uses it to build newer webapps, Galaxy simply predates it and has evolved its own framework. + +--- + +class: enlarge150 + ### API Controllers - `lib/galaxy/webapps/galaxy/controllers/api/` @@ -422,6 +645,8 @@ --- +class: enlarge150 + ### Legacy Controllers - `lib/galaxy/webapps/galaxy/controllers/` @@ -435,6 +660,17 @@ --- +### Managers + +High-level business logic that ties all of these components together. + +Controllers should ideally be thin wrappers around actions defined in managers. + +Whenever model require more than just the database, the operation should be defined +in a manager instead of in the model. + +--- + ### Galaxy Models - Database interactions powered by SQLAlchemy - https://www.sqlalchemy.org/. @@ -525,7 +761,7 @@ ### Object Store -.strike[``` +.strike[```python >>> fh = open( dataset.file_path, 'w' ) >>> fh.write( ‘foo’ ) >>> fh.close() @@ -533,7 +769,7 @@ >>> fh.read() ```] -``` +```python >>> update_from_file( dataset, file_name=‘foo.txt’ ) >>> get_data( dataset ) >>> get_data( dataset, start=42, count=4096 ) @@ -631,18 +867,6 @@ - `phinch` - `bam_iobio` - ---- - -### Managers - -High-level business logic that tie all of these components together. - -Controllers should ideally be thin wrappers around actions defined in managers. - -Whenever model require more than just the database, the operation should be defined -in a manager instead of in the model. - --- ## Client Architecture @@ -653,11 +877,12 @@ ### Client Directories -- Source stylesheets and JavaScript in `client/galaxy/{style|scripts}` -- "Packed" scripts served by Galaxy stored in `static/{style|scripts}` +- Source stylesheets and JavaScript (ES6) in `client/galaxy/{style|scripts}` +- "Packed" bundles served by Galaxy stored in `static/dist` + - `run.sh` uses `git diff` to try to determine if client needs to be built before starting Galaxy - webpack builds these "compiled" artifacts -Upshot - modify files in `client` and rebuild with `make client` before +Upshot - to develop against the client, modify files in `client/` and rebuild with `make client` before deployment. --- @@ -666,104 +891,59 @@ ### Building the Client - Makefile Targets -``` -client: grunt style ## Rebuild all client-side artifacts +```Makefile +client: node-deps ## Rebuild all client-side artifacts (for local dev) + cd client && yarn run build -grunt: npm-deps ## Calls out to Grunt to build client - cd client && node_modules/grunt-cli/bin/grunt +client-production: node-deps ## Build optimized artifacts with sourcemaps. + cd client && yarn run build-production-maps -style: npm-deps ## Calls the style task of Grunt - cd client && node_modules/grunt-cli/bin/grunt style +client-watch: node-deps ## Rebuild client on each change. + cd client && yarn run watch -npm-deps: ## Install NodeJS dependencies. - cd client && npm install -``` - ---- - -template: left-aligned +client-format: node-deps ## Reformat client code + cd client && yarn run prettier -### grunt +client-eslint: node-deps # Run client linting + cd client && yarn run eslint -Build tool for node/JavaScript, tasks in `client/Gruntfile.js`. Default task is +client-test: node-deps ## Run JS unit tests via Karma + cd client && yarn run test -.center[`grunt.registerTask( 'default', [ 'check-modules', 'uglify', 'webpack' ] );`] - -- `check-modules` Verifies node dependencies are correct and exact. -- [`uglify`](https://github.com/mishoo/UglifyJS) Compresses JavaScript modules in `client` and move to `static` and creates source maps. - - JavaScript loads much faster but difficult to debug by default - - Source maps re-enable proper stack traces. -- `webpack` Bundles modules together into a single JavaScript file - quickly loadable. +node-deps: ## Install NodeJS and dependencies. +``` --- -template: left-aligned - -### JavaScript Modules - The Problem - -From https://requirejs.org/docs/why.html: - -- Web sites are turning into Web apps -- Code complexity grows as the site gets bigger -- Assembly gets harder -- Developer wants discrete JS files/modules -- Deployment wants optimized code in just one or a few HTTP calls +class: white +![What is Webpack](../../images/what-is-webpack.svg) --- -template: left-aligned - -### JavaScript Modules - The Solution +class: enlarge150 -From https://requirejs.org/docs/why.html: - - - Some sort of #include/import/require - - Ability to load nested dependencies - - Ease of use for developer but then backed by an optimization tool that helps deployment - -RequireJS an implementation of AMD. - - ---- - -### JavaScript Modules - Galaxy AMD Example +### webpack in Galaxy -```javascript -/** - This is the workflow tool form. -*/ -define(['utils/utils', 'mvc/tool/tool-form-base'], - function(Utils, ToolFormBase) { +Packs and "transpiles" Galaxy ES6 code (.js), Galaxy Vue modules (.vue), libraries from npm, scss stylesheets (.scss) into browser native bundles. - // create form view - var View = ToolFormBase.extend({ - ... - }); +Hundreds of high-level well organized files into optimized single files that can be quickly downloaded. - return { - View: View - }; -}); -``` +Lots of active development and complexity around Viz plugins and dependencies for instance, but the webpack configuration file in `config/webpack.config.js` is fairly straightforward. --- class: white -![What is Webpack](../../images/what-is-webpack.svg) +![Webpack in Action](../../images/jsload.png) --- -### webpack in Galaxy - -- Turns Galaxy modules into an "app". -- Builds two bundles currently - a common set of libraries and an analysis "app". -- https://github.com/galaxyproject/galaxy/issues/1041 -- https://github.com/galaxyproject/galaxy/pull/1144 - ---- +### Stylesheets -class: white -![Webpack in Action](../../images/jsload.png) +- Galaxy stylesheets are generally defined using the SCSS syntax +- SCSS is a high-level superset of CSS - https://sass-lang.com/documentation/syntax +- `sass` is leveraged by webpack to convert these styles to native CSS at client build time +- Rebuild style with `make style` +- Galaxy's SCSS files can be found in `client/galaxy/style/scss/` --- @@ -808,15 +988,6 @@ --- -### Stylesheets - -- Galaxy uses the less CSS preprocessor - https://lesscss.org/ -- Rebuild style with `make style` -- Less files in `client/galaxy/style/less` -- Build happens with grunt recipe in `client/grunt-tasks/style.js` - ---- - ## Dependencies --- @@ -840,11 +1011,8 @@ ### Dependencies - JavaScript -These come bundled with Galaxy, so do not need to be fetched at runtime. - -- Dependencies are defined `galaxy/client/bower.json`. -- Bower (https://bower.io/) is used to re-fetch these. -- `cd client; grunt install-libs` +- Dependencies are defined in `client/package.json`. +- These are fetched from npm and compiled into bundles as part of `make client` and related `Makefile` targets. --- @@ -854,7 +1022,7 @@ ### Cloning Galaxy -``` +```bash $ git clone https://github.com/galaxyproject/galaxy.git galaxy Cloning into 'galaxy'... remote: Counting objects: 173809, done. @@ -875,7 +1043,7 @@ ### Copying Configs -``` +```bash $ sh run.sh Initializing config/migrated_tools_conf.xml from migrated_tools_conf.xml.sample Initializing config/shed_tool_conf.xml from shed_tool_conf.xml.sample @@ -1425,3 +1593,44 @@ ## Q & A --- + +--- + +### Legacy Client Architecture + +??? + +Still some backbone and templates here and there, might be better to drop though? + +--- + +![Client-Server Communications](../../images/server_client.plantuml.svg) + +??? + +Workflow, Data Libraries, Visualization, History, Tool Menu, +Many Grids, User and preference management. + +--- + +class: white + +![Backbone MVC](../../images/backbone-model-view.svg) + +### Backbone MVC + +--- + +![Client-Server Communications (old)](../../images/server_client_old.plantuml.svg) + +??? + +Admin things, Reports and Tool Shed Web app + +--- + +![WSGI Application](../../images/wsgi_app.svg) + +### Galaxy WSGI + +--- diff --git a/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput.png b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput.png index 109e28a42f018f..c44e2029d91b83 100644 Binary files a/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput.png and b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput.png differ diff --git a/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_100M_zo.png b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_100M_zo.png new file mode 100644 index 00000000000000..e6a96ac0e7010d Binary files /dev/null and b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_100M_zo.png differ diff --git a/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_200M_zo.png b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_200M_zo.png new file mode 100644 index 00000000000000..aacb34277b82ae Binary files /dev/null and b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_200M_zo.png differ diff --git a/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_20M.png b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_20M.png index a626bd8aa3aff7..63c16baec4350c 100644 Binary files a/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_20M.png and b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_20M.png differ diff --git a/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_20M_zo.png b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_20M_zo.png index bbcd0484ff4d58..a3e2c4959ce582 100644 Binary files a/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_20M_zo.png and b/topics/epigenetics/images/atac-seq/pyGenomeTracksOutput_20M_zo.png differ diff --git a/topics/epigenetics/tutorials/atac-seq/data-library.yaml b/topics/epigenetics/tutorials/atac-seq/data-library.yaml new file mode 100644 index 00000000000000..ec672ad013789f --- /dev/null +++ b/topics/epigenetics/tutorials/atac-seq/data-library.yaml @@ -0,0 +1,29 @@ +--- +destination: + type: library + name: GTN - Material + description: Galaxy Training Network Material + synopsis: Galaxy Training Network Material. See https://training.galaxyproject.org +items: +- name: Epigenetics + description: DNA methylation is an epigenetic mechanism used by higher eukaryotes + and involved in e.g. gene expression, X-Chromosome inactivating, imprinting, and + gene silencing of germline specific gene and repetitive elements. + items: + - name: ATAC-Seq data analysis + items: + - name: 'DOI: 10.5281/zenodo.3862793' + description: latest + items: + - url: https://zenodo.org/api/files/b205aa3d-919b-4fbb-a8dd-3ae01d5daa91/ENCFF933NTR.bed.gz + src: url + ext: bed + info: https://zenodo.org/record/3862793 + - url: https://zenodo.org/api/files/b205aa3d-919b-4fbb-a8dd-3ae01d5daa91/SRR891268_chr22_enriched_R1.fastq.gz + src: url + ext: fastqsanger.gz + info: https://zenodo.org/record/3862793 + - url: https://zenodo.org/api/files/b205aa3d-919b-4fbb-a8dd-3ae01d5daa91/SRR891268_chr22_enriched_R2.fastq.gz + src: url + ext: fastqsanger.gz + info: https://zenodo.org/record/3862793 diff --git a/topics/epigenetics/tutorials/atac-seq/tutorial.md b/topics/epigenetics/tutorials/atac-seq/tutorial.md index f81c32097f80e9..9c9040712436c4 100644 --- a/topics/epigenetics/tutorials/atac-seq/tutorial.md +++ b/topics/epigenetics/tutorials/atac-seq/tutorial.md @@ -2,7 +2,7 @@ layout: tutorial_hands_on title: ATAC-Seq data analysis -zenodo_link: "https://zenodo.org/record/3270536" +zenodo_link: https://zenodo.org/record/3862793 questions: - Which DNA regions are accessible in the human lymphoblastoid cell line GM12878? - How to analyse and visualise ATAC-Seq data? @@ -35,7 +35,7 @@ In this tutorial we will use data from the study of {% cite Buenrostro2013 %}, t ### When working with real data {:.no_toc} -When you use your own data we suggest you to use [this workflow](https://usegalaxy.eu/u/heylf/w/atac-seq-gtm-with-control) which includes the same steps but is compatible with replicates. If you do not have any control data you can import and edit this workflow, removing all steps with the controls. Controls for the ATAC-Seq procedure are not commonly performed, as discussed [here](https://informatics.fas.harvard.edu/atac-seq-guidelines.html), but could be ATAC-Seq of purified DNA. +When you use your own data we suggest you to use [this workflow](https://usegalaxy.eu/u/ldelisle/w/atac-seq-gtm-with-control-and-macs2) which includes the same steps but is compatible with replicates. If you do not have any control data you can import and edit this workflow, removing all steps with the controls. Controls for the ATAC-Seq procedure are not commonly performed, as discussed [here](https://informatics.fas.harvard.edu/atac-seq-guidelines.html), but could be ATAC-Seq of purified DNA. > ### Agenda > @@ -62,12 +62,12 @@ We first need to download the sequenced reads (FASTQs) as well as other annotati > > {% include snippets/create_new_history.md %} > -> 2. Import the files from [Zenodo](https://zenodo.org/record/3270536) and [ENCODE](https://www.encodeproject.org/) or from the shared data library +> 2. Import the files from [Zenodo](https://doi.org/10.5281/zenodo.3862792) or from the shared data library > > ``` -> https://zenodo.org/record/3270536/files/SRR891268_R1.fastq.gz -> https://zenodo.org/record/3270536/files/SRR891268_R2.fastq.gz -> https://www.encodeproject.org/files/ENCFF933NTR/@@download/ENCFF933NTR.bed.gz +> https://zenodo.org/record/3862793/files/ENCFF933NTR.bed.gz +> https://zenodo.org/record/3862793/files/SRR891268_chr22_enriched_R1.fastq.gz +> https://zenodo.org/record/3862793/files/SRR891268_chr22_enriched_R2.fastq.gz > ``` > > {% include snippets/import_via_link.md %} @@ -77,7 +77,7 @@ We first need to download the sequenced reads (FASTQs) as well as other annotati > > {% include snippets/add_tag.md %} > -> 4. Check that the datatype of the 2 FASTQ files is `fastqsanger.gz` and the BED file is `bed`. If they are not then change the datatype as described below. +> 4. Check that the datatype of the 2 FASTQ files is `fastqsanger.gz` and the peak file (ENCFF933NTR.bed.gz) is `encodepeak`. If they are not then change the datatype as described below. > > {% include snippets/change_datatype.md datatype="datatypes" %} > @@ -87,8 +87,8 @@ We first need to download the sequenced reads (FASTQs) as well as other annotati > If you are not familiar with FASTQ format, see the [Quality Control tutorial]({% link topics/sequence-analysis/tutorials/quality-control/tutorial.md %}) {: .comment} > -> ### {% icon comment %} BED format -> If you are not familiar with BED format, see the [BED Format](https://genome.ucsc.edu/FAQ/FAQformat.html) +> ### {% icon comment %} BED / encode narrowPeak format +> If you are not familiar with BED format or encode narrowPeak format, see the [BED Format](https://genome.ucsc.edu/FAQ/FAQformat.html) {: .comment} We will visualise regions later in the analysis and obtain the gene information now. We will get information for chromosome 22 genes (names of transcripts and genomic positions) using the UCSC tool. @@ -109,17 +109,51 @@ We will visualise regions later in the analysis and obtain the gene information > 3. Click **Send query to Galaxy** > > This table contains all the information but is not in a BED format. To transform it into BED format we will cut out the required columns and rearrange: +> > 4. **Cut** columns from a table {% icon tool %} with the following parameters: > - {% icon param-text %} *"Cut columns"*: `c3,c5,c6,c13,c12,c4` > - {% icon param-text %} *"Delimited by"*: `Tab` > - {% icon param-file %} *"From"*: `UCSC Main on Human: wgEncodeGencodeBasicV31 (chr22:1-50,818,468)` -> 5. Rename the dataset as `chr22 genes` +> +> 5. Check the contents of your file, is this as you expect it to be? +> +> > ### {% icon question %} Question: Expected output +> > +> > Our goal here was to convert the data to BED format. +> > +> > 1. Which columns do you expect in your file? (Tip: read about [BED format](https://genome.ucsc.edu/FAQ/FAQformat.html#format1)) +> > 2. Does your file look like a valid BED format? +> > +> > > ### {% icon solution %} Solution +> > > +> > > 1. We expect at least 3 columns, `chromosome - start - end`, and possibly more optional columns +> > > 2. Your file should look something like this: +> > > ``` +> > > Chrom Start End Name Score Strand ThickStart ThickEnd ItemRGB BlockCount BlockSizes BlockStarts +> > > chr22 10736170 10736283 RF00004 0 - +> > > chr22 11066417 11068174 CU104787.1 0 + +> > > chr22 11249808 11249959 RF00002 0 - +> > > [..] +> > > ``` +> > > +> > > - **Troubleshooting:** Is your second column the `Strand` column? +> > > - Make sure you used the correct **Cut** {% icon tool %} (the one that matches the tool name mentioned in the previous step *exactly*) +> > > - There is another tool with `(cut)` behind the title, we do NOT want to use this tool in this step. +> > > +> > > - **Tip:** Always check your output files to make sure they match your expectations! +> > > +> > {: .solution} +> > +> {: .question} +> +> +> 6. **Rename** {% icon galaxy-pencil %} the dataset as `chr22 genes` > > {% include snippets/rename_dataset.md %} > -> 6. Change its datatype to BED +> 7. **Change** {% icon galaxy-pencil %} its datatype to BED > -> {% include snippets/change_datatype.md datatype="datatypes" %} +> {% include snippets/change_datatype.md datatype="bed" %} > {: .hands_on} @@ -160,7 +194,10 @@ The first step is to check the quality of the reads and the presence of the Next > > > > > > 3. **Overrepresented sequences** > > > -> > > Nextera adapter sequences are observable in the **Adapter Content** section. +> > > One sequence is over represented: +> > > you have 306 reads which are exactly the sequence of the Nextera adapter. +> > > They correspond to adapters amplified head-to-head. +> > > 306 is really low (only 0.1% of reads). > > > > > {: .solution} > > @@ -240,7 +277,7 @@ The forward and reverse adapters are slightly different. We will also trim low q {: .hands_on} > ### {% icon comment %} FastQC Results -> If we run FastQC again we should see under **Adapter Content** that the Nextera adapters are no longer present. +> If we run FastQC again we should see under **Overrepresented sequences** that there is no more overrepresented sequences and under **Adapter Content** that the Nextera adapters are no longer present. > ![FastQC screenshot on the adapter content section after cutadapt](../../images/atac-seq/Screenshot_fastqcAftercutadapt.png "FastQC screenshot on the adapter content section after cutadapt") {: .comment} @@ -360,7 +397,7 @@ High numbers of mitochondrial reads can be a problem in ATAC-Seq. Some ATAC-Seq > > ![Samtools idxstats result](../../images/atac-seq/Screenshot_samtoolsIdxStatsChrM.png "Samtools idxstats result") > -> There are 221 000 reads which map to chrM and 170 000 which map to chr22. +> There are 220 000 reads which map to chrM and 165 000 which map to chr22. {: .tip} ## Filter Duplicate Reads @@ -566,7 +603,7 @@ We call peaks with MACS2. Usually people expand 200bp around cut sites (+/-100bp ## Prepare the Datasets Thanks to **Genrich** we now have a coverage file which represents the coverage of the read start sites extended 50 bp to each side. -The output of **Genrich** is a BedGraph-ish pileup (6 columns text format with a comment line and a header). We will first need to convert it to a bedgraph format (4 columns text format with no header) to be able to visualise it. +The output of **Genrich** is a BedGraph-ish pileup (6 columns text format with a comment line and a header). We will first need to convert it to a bedgraph format (4 columns text format with no header) to be able to visualise it. ### Convert BedGraph-ish pileup of **Genrich** to bedgraph @@ -611,16 +648,6 @@ In order to visualise a specific region (e.g. the gene *RAC2*), we can either us > {: .hands_on} -### Convert the Genrich peaks to BED -At the moment, **pyGenomeTracks** does not deal with the datatype encodepeak which is a special bed. - -> ### {% icon hands_on %} Hands-on: Change the datatype -> 1. Change the datatype of the output of **Genrich** from encodepeak to bed. -> -> {% include snippets/change_datatype.md datatype="bed" %} -> -{: .hands_on } - ## Create heatmap of coverage at TSS with deepTools You might also be interested in specific regions. For this, you can compute a heatmap. We will use the **deepTools plotHeatmap**. As an example, we will here make a heatmap centered on the transcription start sites (TSS). @@ -677,9 +704,9 @@ We will now generate a heatmap. Each line will be a transcript. The coverage wil > > > > > > MACS2 coverage is very simple, each 5' is extended 100bp (+/-50bp). > > > Genrich coverage is evaluated in a more subtle way: if the fragment length is above 100 (the expension size), the coverage will be each 5' extended 100bp (+/-50bp), but if it is less, the coverage will be between each 5' extended 50bp (-50bp - fragment size - + 50bp): -> > > ![macs2 vs genrich](../../images/atac-seq/Screenshot_macs2vsGenrich.png "macs2 vs genrich coverage") +> > > ![MACS2 vs Genrich](../../images/atac-seq/Screenshot_macs2vsGenrich.png "MACS2 vs Genrich coverage") > > > In this example, we see on the left a pair with a long fragment size: both algorithm behave the same. -> > > On the left a pair with a short fragment size: Genrich reports only one interval joining both extremities wheareas macs2 will still report 2 intervals even if they overlap. +> > > On the left a pair with a short fragment size: Genrich reports only one interval joining both extremities wheareas MACS2 will still report 2 intervals even if they overlap. > > {: .tip} > {: .solution} > @@ -697,49 +724,48 @@ We will now generate a heatmap. Each line will be a transcript. The coverage wil > - *"Plot title"*: `Coverage from Genrich (extended +/-50bp)` > - {% icon param-file %} *"Track file bigwig format"*: Select the output of **Wig/BedGraph-to-bigWig** {% icon tool %} called `Genrich bigwig`. > - *"Color of track"*: Select the color of your choice +> - *"Minimum value"*: 0 > - *"height"*: `5` > - *"Show visualization of data range"*: `Yes` -> - *"Include spacer at the end of the track"*: `0.5` > - {% icon param-repeat %} *"Insert Include tracks in your plot"* -> - *"Choose style of the track"*: `Gene track / Bed track` +> - *"Choose style of the track"*: `NarrowPeak track` > - *"Plot title"*: `Peaks from Genrich (extended +/-50bp)` -> - {% icon param-file %} *"Track file bed format"*: Select the output of **Genrich** {% icon tool %} (the one you converted from encodepeak to bed). +> - {% icon param-file %} *"Track file bed format"*: Select the output of **Genrich** {% icon tool %}. > - *"Color of track"*: Select the color of your choice -> - *"height"*: `3` -> - *"Plot labels"*: `No` -> - *"Include spacer at the end of the track"*: `0.5` +> - *"display to use"*: `box: Draw a box` +> - *"Plot labels (name, p-val, q-val)"*: `No` > - {% icon param-repeat %} *"Insert Include tracks in your plot"* > - *"Choose style of the track"*: `Bigwig track ` -> - *"Plot title"*: `Coverage from macs2 (extended +/-50bp)` +> - *"Plot title"*: `Coverage from MACS2 (extended +/-50bp)` > - {% icon param-file %} *"Track file bigwig format"*: Select the output of **Wig/BedGraph-to-bigWig** {% icon tool %} called `MACS2 bigwig`. > - *"Color of track"*: Select the color of your choice +> - *"Minimum value"*: 0 > - *"height"*: `5` > - *"Show visualization of data range"*: `Yes` -> - *"Include spacer at the end of the track"*: `0.5` > - {% icon param-repeat %} *"Insert Include tracks in your plot"* -> - *"Choose style of the track"*: `Gene track / Bed track` -> - *"Plot title"*: `Peaks from macs2 (extended +/-50bp)` +> - *"Choose style of the track"*: `NarrowPeak track` +> - *"Plot title"*: `Peaks from MACS2 (extended +/-50bp)` > - {% icon param-file %} *"Track file bed format"*: Select the output of **MACS2** {% icon tool %} (narrow Peaks). > - *"Color of track"*: Select the color of your choice -> - *"height"*: `3` -> - *"Plot labels"*: `No` -> - *"Include spacer at the end of the track"*: `0.5` +> - *"display to use"*: `box: Draw a box` +> - *"Plot labels (name, p-val, q-val)"*: `No` > - {% icon param-repeat %} *"Insert Include tracks in your plot"* > - *"Choose style of the track"*: `Gene track / Bed track` > - *"Plot title"*: `Genes` > - {% icon param-file %} *"Track file bed format"*: `chr22 genes` > - *"Color of track"*: Select the color of your choice > - *"height"*: `5` -> - *"Include spacer at the end of the track"*: `0.5` +> - *"Put all labels inside the plotted region"*: `Yes` +> - *"Allow to put labels in the right margin"*: `Yes` > - {% icon param-repeat %} *"Insert Include tracks in your plot"* -> - *"Choose style of the track"*: `Gene track / Bed track` +> - *"Choose style of the track"*: `NarrowPeak track` > - *"Plot title"*: `CTCF peaks` > - {% icon param-file %} *"Track file bed format"*: Select the dataset `bedtools SortBED of ENCFF933NTR.bed.gz` > - *"Color of track"*: Select the color of your choice -> - *"Plot labels"*: `No` -> - *"Include spacer at the end of the track"*: `0.5` -> - *"Configure x-axis"*: `Yes` -> - *"Where to place the x-axis"*: `Bottom` +> - *"display to use"*: `box: Draw a box` +> - *"Plot labels (name, p-val, q-val)"*: `No` +> - {% icon param-repeat %} *"Insert Include tracks in your plot"* +> - *"Choose style of the track"*: `X-axis` > > 2. Click on the {% icon galaxy-eye %} (eye) icon of the output. > @@ -756,7 +782,7 @@ Unfortunately, Genrich does not work very well with our small training dataset ( > ### {% icon question %} Questions -> In the ATAC-Seq sample in this selected region we see four peaks detected by Genrich. +> In the ATAC-Seq sample in this selected region we see four peaks detected by Genrich and MACS2. > > 1. How many TSS are accessible in the sample in the displayed region? > 2. How many CTCF binding loci are accessible? @@ -774,9 +800,14 @@ Unfortunately, Genrich does not work very well with our small training dataset ( > {: .question} -We can see that in this region both peak calling perform the same. However, when zooming out, we see that macs2 is more sensitive: +We can see that in this region both peak calling perform the same. However, when zooming out, we see that MACS2 is more sensitive: ![pyGenomeTracks output for 20 million of pairs on the whole genome zoom out](../../images/atac-seq/pyGenomeTracksOutput_20M_zo.png "pyGenomeTracks output for 20 million of pairs on the whole genome zoom out"). +When the number of reads increases, the number of peaks with MACS2 increases but the number of peaks with Genrich decreases: +![pyGenomeTracks output for 100 million of pairs on the whole genome zoom out](../../images/atac-seq/pyGenomeTracksOutput_100M_zo.png "pyGenomeTracks output for 100 million of pairs on the whole genome zoom out"). +![pyGenomeTracks output for 200 million of pairs on the whole genome zoom out](../../images/atac-seq/pyGenomeTracksOutput_200M_zo.png "pyGenomeTracks output for 200 million of pairs on the whole genome zoom out"). + + As CTCF binds so ubiquitously and by itself can displace the nucleosome creating accessible regions, a region containing a peak with no corresponding CTCF peak or TSS could be a putative enhancer. In the pyGenomeTracks plot we see a region like this located in the intron of a gene and another one between genes. However, it is impossible to guess from the position which would be the gene controlled by this region. And of course, more analyses are needed to assess if it is a real enhancer, for example, histone ChIP-seq, 3D structure, transgenic assay, etc. diff --git a/topics/epigenetics/tutorials/atac-seq/workflows/main_workflow.ga b/topics/epigenetics/tutorials/atac-seq/workflows/main_workflow.ga index 86307fdb4ea339..665cf7efce487b 100644 --- a/topics/epigenetics/tutorials/atac-seq/workflows/main_workflow.ga +++ b/topics/epigenetics/tutorials/atac-seq/workflows/main_workflow.ga @@ -1,1218 +1,1462 @@ { - "a_galaxy_workflow": "true", - "annotation": "ATAC-Seq data analysis", - "format-version": "0.1", - "name": "ATAC Seq GTM", - "steps": { - "0": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 0, - "input_connections": {}, - "inputs": [], - "label": "R1 read in fastqsanger(.gz) format", - "name": "Input dataset", - "outputs": [], - "position": { - "left": 200, - "top": 200 - }, - "tool_id": null, - "tool_state": "{}", - "tool_version": null, - "type": "data_input", - "uuid": "f53186d1-9b90-4c78-b89b-7203db2aae69", - "workflow_outputs": [ - { - "label": null, - "output_name": "output", - "uuid": "87a85c2b-56ae-4c70-9131-8dbb11e8a80d" - } - ] - }, - "1": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 1, - "input_connections": {}, - "inputs": [], - "label": "R2 read in fastqsanger(.gz) format", - "name": "Input dataset", - "outputs": [], - "position": { - "left": 200, - "top": 310 - }, - "tool_id": null, - "tool_state": "{}", - "tool_version": null, - "type": "data_input", - "uuid": "816716b8-7db3-4d05-8ef2-dfa0f8c8c264", - "workflow_outputs": [ - { - "label": null, - "output_name": "output", - "uuid": "c9f818da-3739-40de-bc6e-2ca06a27f544" - } - ] - }, - "10": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_MarkDuplicates/2.18.2.2", - "errors": null, - "id": 10, - "input_connections": { - "inputFile": { - "id": 9, - "output_name": "out_file1" - } - }, - "inputs": [], - "label": null, - "name": "MarkDuplicates", - "outputs": [ - { - "name": "metrics_file", - "type": "txt" - }, - { - "name": "outFile", - "type": "bam" - } - ], - "position": { - "left": 1444, - "top": 200 - }, - "post_job_actions": { - "RenameDatasetActionoutFile": { - "action_arguments": { - "newname": "#{inputFile} without duplicates" - }, - "action_type": "RenameDatasetAction", - "output_name": "outFile" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_MarkDuplicates/2.18.2.2", - "tool_shed_repository": { - "changeset_revision": "7d34178f2812", - "name": "picard", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"duplicate_scoring_strategy\": \"\\\"SUM_OF_BASE_QUALITIES\\\"\", \"remove_duplicates\": \"\\\"true\\\"\", \"read_name_regex\": \"\\\"\\\"\", \"barcode_tag\": \"\\\"\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"optical_duplicate_pixel_distance\": \"\\\"100\\\"\", \"comments\": \"[]\", \"assume_sorted\": \"\\\"true\\\"\", \"validation_stringency\": \"\\\"LENIENT\\\"\", \"inputFile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", - "tool_version": "2.18.2.2", - "type": "tool", - "uuid": "83e539cb-b708-4c85-8298-3f5bdb4ef0ff", - "workflow_outputs": [ - { - "label": null, - "output_name": "outFile", - "uuid": "504761e2-71eb-4054-a0bb-ce4fe2776687" - }, - { - "label": null, - "output_name": "metrics_file", - "uuid": "f1f4bba5-9792-496a-9c40-8a3515c552b8" - } - ] - }, - "11": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_bamtobed/2.29.0", - "errors": null, - "id": 11, - "input_connections": { - "input": { - "id": 10, - "output_name": "outFile" - } - }, - "inputs": [], - "label": null, - "name": "bedtools BAM to BED", - "outputs": [ - { - "name": "output", - "type": "bed" - } - ], - "position": { - "left": 1772, - "top": 200 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_bamtobed/2.29.0", - "tool_shed_repository": { - "changeset_revision": "b28e0cfa7ba1", - "name": "bedtools", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"option\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"tag\": \"\\\"\\\"\", \"split\": \"\\\"false\\\"\", \"ed_score\": \"\\\"false\\\"\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", - "tool_version": "2.29.0", - "type": "tool", - "uuid": "ad8b182f-608d-4223-91d0-06fc872a28ba", - "workflow_outputs": [ - { - "label": null, - "output_name": "output", - "uuid": "e0e48546-7343-4bf7-b7ce-a954a866bc8a" - } - ] - }, - "12": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_CollectInsertSizeMetrics/2.18.2.1", - "errors": null, - "id": 12, - "input_connections": { - "inputFile": { - "id": 10, - "output_name": "outFile" - } - }, - "inputs": [], - "label": null, - "name": "CollectInsertSizeMetrics", - "outputs": [ - { - "name": "outFile", - "type": "tabular" - }, - { - "name": "histFile", - "type": "pdf" - } - ], - "position": { - "left": 1772, - "top": 342 - }, - "post_job_actions": { - "HideDatasetActionoutFile": { - "action_arguments": {}, - "action_type": "HideDatasetAction", - "output_name": "outFile" - }, - "RenameDatasetActionhistFile": { - "action_arguments": { - "newname": "fragment size plot of #{inputFile}" - }, - "action_type": "RenameDatasetAction", - "output_name": "histFile" - }, - "RenameDatasetActionoutFile": { - "action_arguments": { - "newname": "fragment size data of #{inputFile}" - }, - "action_type": "RenameDatasetAction", - "output_name": "outFile" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_CollectInsertSizeMetrics/2.18.2.1", - "tool_shed_repository": { - "changeset_revision": "f6ced08779c4", - "name": "picard", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"deviations\": \"\\\"10.0\\\"\", \"__rerun_remap_job_id__\": null, \"hist_width\": \"\\\"\\\"\", \"assume_sorted\": \"\\\"true\\\"\", \"metric_accumulation_level\": \"[\\\"ALL_READS\\\"]\", \"validation_stringency\": \"\\\"LENIENT\\\"\", \"reference_source\": \"{\\\"__current_case__\\\": 0, \\\"ref_file\\\": \\\"hg38\\\", \\\"reference_source_selector\\\": \\\"cached\\\"}\", \"min_pct\": \"\\\"0.05\\\"\", \"inputFile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", - "tool_version": "2.18.2.1", - "type": "tool", - "uuid": "29f106aa-9c3c-4148-ac6f-5c29537ebefc", - "workflow_outputs": [ - { - "label": null, - "output_name": "histFile", - "uuid": "35615e33-2c89-4a2d-8841-ad2b6e71bdb6" - } - ] - }, - "13": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/samtools_sort/samtools_sort/2.0.2", - "errors": null, - "id": 13, - "input_connections": { - "input1": { - "id": 10, - "output_name": "outFile" - } - }, - "inputs": [], - "label": null, - "name": "Samtools sort", - "outputs": [ - { - "name": "output1", - "type": "bam" - } - ], - "position": { - "left": 1772, - "top": 514 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/samtools_sort/samtools_sort/2.0.2", - "tool_shed_repository": { - "changeset_revision": "f56bdb93ae58", - "name": "samtools_sort", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"prim_key_cond\": \"{\\\"__current_case__\\\": 1, \\\"prim_key_select\\\": \\\"-n\\\"}\"}", - "tool_version": "2.0.2", - "type": "tool", - "uuid": "2ad41cb6-0775-4136-b7c7-04c046b64f92", - "workflow_outputs": [ - { - "label": null, - "output_name": "output1", - "uuid": "d3d95f19-b68a-4fa3-945d-097554ab79b7" - } - ] - }, - "14": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/macs2/macs2_callpeak/2.1.1.20160309.6", - "errors": null, - "id": 14, - "input_connections": { - "treatment|input_treatment_file": { - "id": 11, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "MACS2 callpeak", - "outputs": [ - { - "name": "output_tabular", - "type": "tabular" - }, - { - "name": "output_narrowpeaks", - "type": "bed" - }, - { - "name": "output_summits", - "type": "bed" - }, - { - "name": "output_treat_pileup", - "type": "bedgraph" - }, - { - "name": "output_control_lambda", - "type": "bedgraph" - } - ], - "position": { - "left": 2100, - "top": 200 - }, - "post_job_actions": { - "HideDatasetActionoutput_control_lambda": { - "action_arguments": {}, - "action_type": "HideDatasetAction", - "output_name": "output_control_lambda" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/macs2/macs2_callpeak/2.1.1.20160309.6", - "tool_shed_repository": { - "changeset_revision": "424aefbd7777", - "name": "macs2", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"control\": \"{\\\"__current_case__\\\": 1, \\\"c_select\\\": \\\"No\\\"}\", \"__page__\": null, \"effective_genome_size_options\": \"{\\\"__current_case__\\\": 0, \\\"effective_genome_size_options_selector\\\": \\\"2700000000\\\"}\", \"format\": \"\\\"BED\\\"\", \"outputs\": \"[\\\"peaks_tabular\\\", \\\"summits\\\", \\\"bdg\\\"]\", \"__rerun_remap_job_id__\": null, \"cutoff_options\": \"{\\\"__current_case__\\\": 1, \\\"cutoff_options_selector\\\": \\\"qvalue\\\", \\\"qvalue\\\": \\\"0.05\\\"}\", \"advanced_options\": \"{\\\"broad_options\\\": {\\\"__current_case__\\\": 1, \\\"broad_options_selector\\\": \\\"nobroad\\\", \\\"call_summits\\\": \\\"false\\\"}, \\\"keep_dup_options\\\": {\\\"__current_case__\\\": 1, \\\"keep_dup_options_selector\\\": \\\"1\\\"}, \\\"llocal\\\": \\\"\\\", \\\"nolambda\\\": \\\"false\\\", \\\"ratio\\\": \\\"\\\", \\\"slocal\\\": \\\"\\\", \\\"spmr\\\": \\\"false\\\", \\\"to_large\\\": \\\"false\\\"}\", \"treatment\": \"{\\\"__current_case__\\\": 0, \\\"input_treatment_file\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"t_multi_select\\\": \\\"No\\\"}\", \"nomodel_type\": \"{\\\"__current_case__\\\": 1, \\\"extsize\\\": \\\"100\\\", \\\"nomodel_type_selector\\\": \\\"nomodel\\\", \\\"shift\\\": \\\"-50\\\"}\"}", - "tool_version": "2.1.1.20160309.6", - "type": "tool", - "uuid": "c99eaf11-db02-43ad-954f-df1014ad16d7", - "workflow_outputs": [ - { - "label": null, - "output_name": "output_treat_pileup", - "uuid": "a0338e16-0cae-4426-9fb9-4f77832e2a6f" - }, - { - "label": null, - "output_name": "output_tabular", - "uuid": "d20a6ac0-de44-4474-b6f4-f53c615afb68" - }, - { - "label": null, - "output_name": "output_summits", - "uuid": "643150d6-1bfc-4e60-ae09-df831ada70e6" - }, - { - "label": null, - "output_name": "output_narrowpeaks", - "uuid": "cdd6e843-22c0-40ff-be16-ce8490317625" - } - ] - }, - "15": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/genrich/genrich/0.5+galaxy1", - "errors": null, - "id": 15, - "input_connections": { - "treatment|input_treatment_file": { - "id": 13, - "output_name": "output1" - } - }, - "inputs": [], - "label": null, - "name": "Genrich", - "outputs": [ - { - "name": "outfile", - "type": "encodepeak" - }, - { - "name": "out_bedgraph2", - "type": "bedgraph" - }, - { - "name": "out_dups", - "type": "txt" - } - ], - "position": { - "left": 2100, - "top": 526 - }, - "post_job_actions": { - "ChangeDatatypeActionoutfile": { - "action_arguments": { - "newtype": "bed" - }, - "action_type": "ChangeDatatypeAction", - "output_name": "outfile" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/genrich/genrich/0.5+galaxy1", - "tool_shed_repository": { - "changeset_revision": "db50f51a2952", - "name": "genrich", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"control\": \"{\\\"__current_case__\\\": 1, \\\"c_select\\\": \\\"No\\\"}\", \"__page__\": null, \"output_options\": \"{\\\"bed\\\": \\\"false\\\", \\\"bedgraph1\\\": \\\"false\\\", \\\"bedgraph2\\\": \\\"true\\\"}\", \"__rerun_remap_job_id__\": null, \"other_options\": \"{\\\"skip_peak_calling\\\": \\\"false\\\"}\", \"filter_options\": \"{\\\"alignment_lengths\\\": \\\"\\\", \\\"alignment_lengths2\\\": \\\"false\\\", \\\"alignment_score\\\": \\\"0.0\\\", \\\"duplicates\\\": \\\"true\\\", \\\"exclude_chr\\\": \\\"\\\", \\\"min_mapq\\\": \\\"0\\\", \\\"unpaired\\\": \\\"false\\\"}\", \"peakcalling_options\": \"{\\\"max_dist\\\": \\\"100\\\", \\\"max_p\\\": \\\"\\\", \\\"max_q\\\": \\\"0.05\\\", \\\"min_auc\\\": \\\"20.0\\\", \\\"min_peak_length\\\": \\\"0\\\"}\", \"atac_options\": \"{\\\"atac\\\": \\\"true\\\", \\\"expand_sites\\\": \\\"100\\\"}\", \"treatment\": \"{\\\"__current_case__\\\": 0, \\\"input_treatment_file\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"t_multi_select\\\": \\\"No\\\"}\", \"cond_exclude\": \"{\\\"__current_case__\\\": 0, \\\"exclude_select\\\": \\\"No\\\"}\"}", - "tool_version": "0.5+galaxy1", - "type": "tool", - "uuid": "589a0371-38f1-4c8e-bb0b-90a43d8a272b", - "workflow_outputs": [ - { - "label": null, - "output_name": "outfile", - "uuid": "2c6d1c46-fe27-4969-9204-81197de54de8" - }, - { - "label": null, - "output_name": "out_bedgraph2", - "uuid": "a482ef07-2e93-46c2-adee-bba3d461d85c" - }, - { - "label": null, - "output_name": "out_dups", - "uuid": "09e2d5d2-707a-4ec4-80b8-8b63cb336f6f" - } - ] - }, - "16": { - "annotation": "", - "content_id": "wig_to_bigWig", - "errors": null, - "id": 16, - "input_connections": { - "input1": { - "id": 14, - "output_name": "output_treat_pileup" - } - }, - "inputs": [], - "label": null, - "name": "Wig/BedGraph-to-bigWig", - "outputs": [ - { - "name": "out_file1", - "type": "bigwig" - } - ], - "position": { - "left": 2428, - "top": 200 - }, - "post_job_actions": { - "RenameDatasetActionout_file1": { - "action_arguments": { - "newname": "macs2 bigwig" - }, - "action_type": "RenameDatasetAction", - "output_name": "out_file1" - } - }, - "tool_id": "wig_to_bigWig", - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"settings\": \"{\\\"__current_case__\\\": 0, \\\"settingsType\\\": \\\"preset\\\"}\"}", - "tool_version": "1.1.1", - "type": "tool", - "uuid": "abc9c8f4-e0ef-49a2-b538-3b1bb832ad82", - "workflow_outputs": [ - { - "label": null, - "output_name": "out_file1", - "uuid": "81376180-e079-44c3-bd65-12f9b699133c" - } - ] - }, - "17": { - "annotation": "", - "content_id": "Remove beginning1", - "errors": null, - "id": 17, - "input_connections": { - "input": { - "id": 15, - "output_name": "out_bedgraph2" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Remove beginning", - "name": "input" - } - ], - "label": null, - "name": "Remove beginning", - "outputs": [ - { - "name": "out_file1", - "type": "input" - } - ], - "position": { - "left": 2441, - "top": 639 - }, - "post_job_actions": {}, - "tool_id": "Remove beginning1", - "tool_state": "{\"input\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"__rerun_remap_job_id__\": null, \"num_lines\": \"\\\"2\\\"\", \"__page__\": null}", - "tool_version": "1.0.0", - "type": "tool", - "uuid": "6f028851-99a2-4296-8cd1-ccae2872db3c", - "workflow_outputs": [ - { - "label": null, - "output_name": "out_file1", - "uuid": "a1d7e8c9-5809-438e-b3f5-fe9951f89243" - } - ] - }, - "18": { - "annotation": "", - "content_id": "Cut1", - "errors": null, - "id": 18, - "input_connections": { - "input": { - "id": 17, - "output_name": "out_file1" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool Cut", - "name": "input" - } - ], - "label": null, - "name": "Cut", - "outputs": [ - { - "name": "out_file1", - "type": "tabular" - } - ], - "position": { - "left": 2741, - "top": 624 - }, - "post_job_actions": { - "ChangeDatatypeActionout_file1": { - "action_arguments": { - "newtype": "bedgraph" - }, - "action_type": "ChangeDatatypeAction", - "output_name": "out_file1" - } - }, - "tool_id": "Cut1", - "tool_state": "{\"columnList\": \"\\\"c1,c2,c3,c4\\\"\", \"input\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"delimiter\": \"\\\"T\\\"\", \"__rerun_remap_job_id__\": null, \"__page__\": null}", - "tool_version": "1.0.2", - "type": "tool", - "uuid": "d52cda14-0fe3-46cb-9ba4-1bffbb8133b3", - "workflow_outputs": [ - { - "label": null, - "output_name": "out_file1", - "uuid": "a8f30404-03da-450a-b471-28817e68f1e9" - } - ] - }, - "19": { - "annotation": "", - "content_id": "wig_to_bigWig", - "errors": null, - "id": 19, - "input_connections": { - "input1": { - "id": 18, - "output_name": "out_file1" - } - }, - "inputs": [], - "label": null, - "name": "Wig/BedGraph-to-bigWig", - "outputs": [ - { - "name": "out_file1", - "type": "bigwig" - } - ], - "position": { - "left": 2995, - "top": 612 - }, - "post_job_actions": { - "RenameDatasetActionout_file1": { - "action_arguments": { - "newname": "Genrich bigwig" - }, - "action_type": "RenameDatasetAction", - "output_name": "out_file1" - } - }, - "tool_id": "wig_to_bigWig", - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"settings\": \"{\\\"__current_case__\\\": 0, \\\"settingsType\\\": \\\"preset\\\"}\"}", - "tool_version": "1.1.1", - "type": "tool", - "uuid": "4b5a7ea3-7eaf-4f0c-9fba-0ba8475c09bd", - "workflow_outputs": [ - { - "label": null, - "output_name": "out_file1", - "uuid": "c3f9f58b-2051-4d03-a726-ce9a9bb77385" - } - ] - }, - "2": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 2, - "input_connections": {}, - "inputs": [], - "label": "bed file with genes", - "name": "Input dataset", - "outputs": [], - "position": { - "left": 200, - "top": 420 - }, - "tool_id": null, - "tool_state": "{}", - "tool_version": null, - "type": "data_input", - "uuid": "e98dd9bc-ab4d-49a1-a176-11b5c78f59f7", - "workflow_outputs": [ - { - "label": null, - "output_name": "output", - "uuid": "5e8336c8-1d02-4884-acb2-957fd52118b8" - } - ] - }, - "20": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_compute_matrix/deeptools_compute_matrix/3.0.2.0", - "errors": null, - "id": 20, - "input_connections": { - "multibigwig_conditional|bigwigfiles": [ - { - "id": 19, - "output_name": "out_file1" - }, - { - "id": 16, - "output_name": "out_file1" - } - ], - "regionsFiles_0|regionsFile": { - "id": 2, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool computeMatrix", - "name": "advancedOpt" - } - ], - "label": null, - "name": "computeMatrix", - "outputs": [ - { - "name": "outFileName", - "type": "deeptools_compute_matrix_archive" - } - ], - "position": { - "left": 3338, - "top": 200 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_compute_matrix/deeptools_compute_matrix/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "fb9cf9c97ec4", - "name": "deeptools_compute_matrix", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"multibigwig_conditional\": \"{\\\"__current_case__\\\": 0, \\\"bigwigfiles\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"orderMatters\\\": \\\"No\\\"}\", \"mode\": \"{\\\"__current_case__\\\": 1, \\\"afterRegionStartLength\\\": \\\"1000\\\", \\\"beforeRegionStartLength\\\": \\\"1000\\\", \\\"mode_select\\\": \\\"reference-point\\\", \\\"nanAfterEnd\\\": \\\"false\\\", \\\"referencePoint\\\": \\\"TSS\\\"}\", \"output\": \"{\\\"__current_case__\\\": 0, \\\"showOutputSettings\\\": \\\"no\\\"}\", \"advancedOpt\": \"{\\\"__current_case__\\\": 1, \\\"averageTypeBins\\\": \\\"mean\\\", \\\"binSize\\\": \\\"50\\\", \\\"blackListFileName\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"exonID\\\": \\\"exon\\\", \\\"maxThreshold\\\": \\\"\\\", \\\"metagene\\\": \\\"false\\\", \\\"minThreshold\\\": \\\"\\\", \\\"missingDataAsZero\\\": \\\"true\\\", \\\"samplesLabel\\\": \\\"\\\", \\\"scale\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"skipZeros\\\": \\\"false\\\", \\\"sortRegions\\\": \\\"keep\\\", \\\"sortUsing\\\": \\\"mean\\\", \\\"transcriptID\\\": \\\"transcript\\\", \\\"transcript_id_designator\\\": \\\"transcript_id\\\"}\", \"regionsFiles\": \"[{\\\"__index__\\\": 0, \\\"regionsFile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}}]\"}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "eef43402-ee63-4496-afb3-33cf9ec08cc0", - "workflow_outputs": [ - { - "label": null, - "output_name": "outFileName", - "uuid": "6cfa392a-bb20-453b-9606-6f35c38998b7" - } - ] - }, - "21": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pygenometracks/pygenomeTracks/3.1.2", - "errors": null, - "id": 21, - "input_connections": { - "tracks_0|track_file_style_conditional|track_input_bigwig": { - "id": 19, - "output_name": "out_file1" - }, - "tracks_1|track_file_style_conditional|track_input_bed": { - "id": 15, - "output_name": "outfile" - }, - "tracks_2|track_file_style_conditional|track_input_bigwig": { - "id": 16, - "output_name": "out_file1" - }, - "tracks_3|track_file_style_conditional|track_input_bed": { - "id": 14, - "output_name": "output_narrowpeaks" - }, - "tracks_4|track_file_style_conditional|track_input_bed": { - "id": 6, - "output_name": "output" - }, - "tracks_5|track_file_style_conditional|track_input_bed": { - "id": 7, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "pyGenomeTracks", - "outputs": [ - { - "name": "outFileName", - "type": "png" - } - ], - "position": { - "left": 3338, - "top": 464 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pygenometracks/pygenomeTracks/3.1.2", - "tool_shed_repository": { - "changeset_revision": "feab9265552d", - "name": "pygenometracks", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"region\": \"\\\"chr22:21,620,000-21,660,000\\\"\", \"image_file_format\": \"\\\"png\\\"\", \"tracks\": \"[{\\\"__index__\\\": 0, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 5, \\\"alpha\\\": \\\"1.0\\\", \\\"color\\\": \\\"#c0504d\\\", \\\"color_negative\\\": {\\\"__current_case__\\\": 0, \\\"color_negative_select\\\": \\\"no\\\"}, \\\"data_range\\\": \\\"true\\\", \\\"height_bigwig\\\": \\\"5.0\\\", \\\"invert_orientation\\\": \\\"false\\\", \\\"max_value\\\": \\\"\\\", \\\"min_value\\\": \\\"\\\", \\\"overlay_select\\\": \\\"no\\\", \\\"reading_bw_conditional\\\": {\\\"nans_to_zeros\\\": \\\"false\\\", \\\"number_of_bins\\\": \\\"\\\", \\\"summary\\\": \\\"mean\\\"}, \\\"spacer_height\\\": \\\"0.5\\\", \\\"title\\\": \\\"Coverage from Genrich (extended +/-50bp)\\\", \\\"track_file_style_selector\\\": \\\"bigwig_track_option\\\", \\\"track_input_bigwig\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"type_conditional\\\": {\\\"__current_case__\\\": 2, \\\"type_selector\\\": \\\"fill_option\\\"}}}, {\\\"__index__\\\": 1, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 3, \\\"border_color\\\": \\\"#000000\\\", \\\"color_bed\\\": {\\\"__current_case__\\\": 0, \\\"color\\\": \\\"#c0504d\\\", \\\"color_bed_select\\\": \\\"manually\\\"}, \\\"display\\\": \\\"stacked\\\", \\\"flybase\\\": \\\"true\\\", \\\"fontsize\\\": \\\"\\\", \\\"gene_rows\\\": \\\"\\\", \\\"global_max_row\\\": \\\"false\\\", \\\"height_bed\\\": \\\"3.0\\\", \\\"labels\\\": \\\"false\\\", \\\"spacer_height\\\": \\\"0.5\\\", \\\"title\\\": \\\"Peaks from Genrich (extended +/-50bp)\\\", \\\"track_file_style_selector\\\": \\\"gene_track_option\\\", \\\"track_input_bed\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}}}, {\\\"__index__\\\": 2, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 5, \\\"alpha\\\": \\\"1.0\\\", \\\"color\\\": \\\"#00b050\\\", \\\"color_negative\\\": {\\\"__current_case__\\\": 0, \\\"color_negative_select\\\": \\\"no\\\"}, \\\"data_range\\\": \\\"true\\\", \\\"height_bigwig\\\": \\\"5.0\\\", \\\"invert_orientation\\\": \\\"false\\\", \\\"max_value\\\": \\\"\\\", \\\"min_value\\\": \\\"\\\", \\\"overlay_select\\\": \\\"no\\\", \\\"reading_bw_conditional\\\": {\\\"nans_to_zeros\\\": \\\"false\\\", \\\"number_of_bins\\\": \\\"\\\", \\\"summary\\\": \\\"mean\\\"}, \\\"spacer_height\\\": \\\"0.5\\\", \\\"title\\\": \\\"Coverage from macs2 (extended +/-50bp)\\\", \\\"track_file_style_selector\\\": \\\"bigwig_track_option\\\", \\\"track_input_bigwig\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"type_conditional\\\": {\\\"__current_case__\\\": 2, \\\"type_selector\\\": \\\"fill_option\\\"}}}, {\\\"__index__\\\": 3, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 3, \\\"border_color\\\": \\\"#000000\\\", \\\"color_bed\\\": {\\\"__current_case__\\\": 0, \\\"color\\\": \\\"#00b050\\\", \\\"color_bed_select\\\": \\\"manually\\\"}, \\\"display\\\": \\\"stacked\\\", \\\"flybase\\\": \\\"true\\\", \\\"fontsize\\\": \\\"\\\", \\\"gene_rows\\\": \\\"\\\", \\\"global_max_row\\\": \\\"false\\\", \\\"height_bed\\\": \\\"1.5\\\", \\\"labels\\\": \\\"false\\\", \\\"spacer_height\\\": \\\"0.5\\\", \\\"title\\\": \\\" \\\\tPeaks from macs2 (extended +/-50bp) \\\", \\\"track_file_style_selector\\\": \\\"gene_track_option\\\", \\\"track_input_bed\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}}}, {\\\"__index__\\\": 4, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 3, \\\"border_color\\\": \\\"#000000\\\", \\\"color_bed\\\": {\\\"__current_case__\\\": 0, \\\"color\\\": \\\"#000000\\\", \\\"color_bed_select\\\": \\\"manually\\\"}, \\\"display\\\": \\\"stacked\\\", \\\"flybase\\\": \\\"true\\\", \\\"fontsize\\\": \\\"\\\", \\\"gene_rows\\\": \\\"\\\", \\\"global_max_row\\\": \\\"false\\\", \\\"height_bed\\\": \\\"5.0\\\", \\\"labels\\\": \\\"true\\\", \\\"spacer_height\\\": \\\"0.5\\\", \\\"title\\\": \\\"Genes\\\", \\\"track_file_style_selector\\\": \\\"gene_track_option\\\", \\\"track_input_bed\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}}}, {\\\"__index__\\\": 5, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 3, \\\"border_color\\\": \\\"#000000\\\", \\\"color_bed\\\": {\\\"__current_case__\\\": 0, \\\"color\\\": \\\"#00b0f0\\\", \\\"color_bed_select\\\": \\\"manually\\\"}, \\\"display\\\": \\\"stacked\\\", \\\"flybase\\\": \\\"true\\\", \\\"fontsize\\\": \\\"\\\", \\\"gene_rows\\\": \\\"\\\", \\\"global_max_row\\\": \\\"false\\\", \\\"height_bed\\\": \\\"1.5\\\", \\\"labels\\\": \\\"false\\\", \\\"spacer_height\\\": \\\"0.5\\\", \\\"title\\\": \\\"CTCF peaks\\\", \\\"track_file_style_selector\\\": \\\"gene_track_option\\\", \\\"track_input_bed\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}}}]\", \"__rerun_remap_job_id__\": null, \"x_axis\": \"{\\\"__current_case__\\\": 0, \\\"fontsize\\\": \\\"\\\", \\\"where\\\": \\\"bottom\\\", \\\"x_axis_select\\\": \\\"yes\\\"}\"}", - "tool_version": "3.1.2", - "type": "tool", - "uuid": "ae418b94-d3c4-4bde-88ba-0684cfa6c2c3", - "workflow_outputs": [ - { - "label": null, - "output_name": "outFileName", - "uuid": "bb9a1996-23ce-4b37-af06-efe2954c8689" - } - ] - }, - "22": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_plot_heatmap/deeptools_plot_heatmap/3.0.2.0", - "errors": null, - "id": 22, - "input_connections": { - "matrixFile": { - "id": 20, - "output_name": "outFileName" - } - }, - "inputs": [], - "label": null, - "name": "plotHeatmap", - "outputs": [ - { - "name": "outFileName", - "type": "png" - } - ], - "position": { - "left": 3666, - "top": 200 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_plot_heatmap/deeptools_plot_heatmap/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "010e58e9d822", - "name": "deeptools_plot_heatmap", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"output\": \"{\\\"__current_case__\\\": 0, \\\"showOutputSettings\\\": \\\"no\\\"}\", \"advancedOpt\": \"{\\\"__current_case__\\\": 0, \\\"showAdvancedOpt\\\": \\\"no\\\"}\", \"__rerun_remap_job_id__\": null, \"matrixFile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "656bebc6-0a5f-4735-9424-eda6f89dea22", - "workflow_outputs": [ - { - "label": null, - "output_name": "outFileName", - "uuid": "64ed7ed5-1b16-4be6-b941-0b723e327733" - } - ] - }, - "3": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 3, - "input_connections": {}, - "inputs": [], - "label": "ctcf peaks", - "name": "Input dataset", - "outputs": [], - "position": { - "left": 200, - "top": 530 - }, - "tool_id": null, - "tool_state": "{}", - "tool_version": null, - "type": "data_input", - "uuid": "afd163ef-195d-44d6-8a80-f4be837d5d43", - "workflow_outputs": [ - { - "label": null, - "output_name": "output", - "uuid": "80dc3fea-2221-44c9-86b1-f900465caf27" - } - ] - }, - "4": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", - "errors": null, - "id": 4, - "input_connections": { - "input_file": { - "id": 0, - "output_name": "output" - } - }, - "inputs": [ - { - "description": "runtime parameter for tool FastQC", - "name": "limits" - }, - { - "description": "runtime parameter for tool FastQC", - "name": "contaminants" - }, - { - "description": "runtime parameter for tool FastQC", - "name": "adapters" - } - ], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 460, - "top": 494 - }, - "post_job_actions": { - "RenameDatasetActionhtml_file": { - "action_arguments": { - "newname": "FastQC of #{input_file}" - }, - "action_type": "RenameDatasetAction", - "output_name": "html_file" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", - "tool_shed_repository": { - "changeset_revision": "e7b2202befea", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"min_length\": \"\\\"\\\"\", \"kmers\": \"\\\"7\\\"\", \"limits\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"adapters\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"nogroup\": \"\\\"false\\\"\"}", - "tool_version": "0.72+galaxy1", - "type": "tool", - "uuid": "189a22b5-434f-460c-bf5c-321f6daf8d3e", - "workflow_outputs": [ - { - "label": null, - "output_name": "html_file", - "uuid": "84546090-b1a0-43b3-82e4-d4a27aacc0d0" - }, - { - "label": null, - "output_name": "text_file", - "uuid": "cf433722-1d9d-4e31-8ecf-43d38bf787ce" - } - ] - }, - "5": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/lparsons/cutadapt/cutadapt/1.16.5", - "errors": null, - "id": 5, - "input_connections": { - "library|input_1": { - "id": 0, - "output_name": "output" - }, - "library|input_2": { - "id": 1, - "output_name": "output" - } - }, - "inputs": [], - "label": "remove nextera adapters with cutadapt", - "name": "Cutadapt", - "outputs": [ - { - "name": "out1", - "type": "fastqsanger" - }, - { - "name": "out2", - "type": "fastqsanger" - }, - { - "name": "report", - "type": "txt" - } - ], - "position": { - "left": 460, - "top": 200 - }, - "post_job_actions": { - "RenameDatasetActionout1": { - "action_arguments": { - "newname": "cutadapt of #{input_1}" - }, - "action_type": "RenameDatasetAction", - "output_name": "out1" - }, - "RenameDatasetActionout2": { - "action_arguments": { - "newname": "cutadapt of #{input_2}" - }, - "action_type": "RenameDatasetAction", - "output_name": "out2" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/lparsons/cutadapt/cutadapt/1.16.5", - "tool_shed_repository": { - "changeset_revision": "49370cb85f0f", - "name": "cutadapt", - "owner": "lparsons", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"output_options\": \"{\\\"info_file\\\": \\\"false\\\", \\\"multiple_output\\\": \\\"false\\\", \\\"report\\\": \\\"true\\\", \\\"rest_file\\\": \\\"false\\\", \\\"too_long_file\\\": \\\"false\\\", \\\"too_short_file\\\": \\\"false\\\", \\\"untrimmed_file\\\": \\\"false\\\", \\\"wildcard_file\\\": \\\"false\\\"}\", \"read_mod_options\": \"{\\\"length\\\": \\\"0\\\", \\\"length_tag\\\": \\\"\\\", \\\"nextseq_trim\\\": \\\"0\\\", \\\"prefix\\\": \\\"\\\", \\\"quality_cutoff\\\": \\\"20\\\", \\\"strip_suffix\\\": \\\"\\\", \\\"suffix\\\": \\\"\\\", \\\"trim_n\\\": \\\"false\\\"}\", \"adapter_options\": \"{\\\"count\\\": \\\"1\\\", \\\"error_rate\\\": \\\"0.1\\\", \\\"mask_adapter\\\": \\\"false\\\", \\\"match_read_wildcards\\\": \\\" \\\", \\\"no_indels\\\": \\\"false\\\", \\\"no_trim\\\": \\\"false\\\", \\\"overlap\\\": \\\"3\\\"}\", \"library\": \"{\\\"__current_case__\\\": 1, \\\"input_1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"input_2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"r1\\\": {\\\"adapters\\\": [{\\\"__index__\\\": 0, \\\"adapter_source\\\": {\\\"__current_case__\\\": 0, \\\"adapter\\\": \\\"CTGTCTCTTATACACATCTCCGAGCCCACGAGAC\\\", \\\"adapter_name\\\": \\\"Nextera R1\\\", \\\"adapter_source_list\\\": \\\"user\\\"}}], \\\"anywhere_adapters\\\": [], \\\"cut\\\": \\\"0\\\", \\\"front_adapters\\\": []}, \\\"r2\\\": {\\\"adapters2\\\": [{\\\"__index__\\\": 0, \\\"adapter_source2\\\": {\\\"__current_case__\\\": 0, \\\"adapter2\\\": \\\"CTGTCTCTTATACACATCTGACGCTGCCGACGA\\\", \\\"adapter_name2\\\": \\\"Nextera R2\\\", \\\"adapter_source_list2\\\": \\\"user\\\"}}], \\\"anywhere_adapters2\\\": [], \\\"cut2\\\": \\\"0\\\", \\\"front_adapters2\\\": []}, \\\"type\\\": \\\"paired\\\"}\", \"filter_options\": \"{\\\"discard\\\": \\\"false\\\", \\\"discard_untrimmed\\\": \\\"false\\\", \\\"max\\\": \\\"0\\\", \\\"max_n\\\": \\\"\\\", \\\"min\\\": \\\"20\\\", \\\"pair_filter\\\": \\\"any\\\"}\", \"__rerun_remap_job_id__\": null}", - "tool_version": "1.16.5", - "type": "tool", - "uuid": "cf97879c-01f2-4d57-be28-ca10998e10b6", - "workflow_outputs": [ - { - "label": null, - "output_name": "report", - "uuid": "1cab95b3-54c0-412c-ab28-1278ef04a26f" - }, - { - "label": null, - "output_name": "out1", - "uuid": "dd4a2ba8-faa2-446c-b9ac-91289ebd73b5" - }, - { - "label": null, - "output_name": "out2", - "uuid": "c94315ab-825b-4cae-a9ae-839faf90c09f" - } - ] - }, - "6": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_sortbed/2.27.1", - "errors": null, - "id": 6, - "input_connections": { - "input": { - "id": 2, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "bedtools SortBED", - "outputs": [ - { - "name": "output", - "type": "input" - } - ], - "position": { - "left": 460, - "top": 798 - }, - "post_job_actions": { - "HideDatasetActionoutput": { - "action_arguments": {}, - "action_type": "HideDatasetAction", - "output_name": "output" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_sortbed/2.27.1", - "tool_shed_repository": { - "changeset_revision": "87ee588b3d45", - "name": "bedtools", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"option\": \"\\\"\\\"\", \"__page__\": null}", - "tool_version": "2.27.1", - "type": "tool", - "uuid": "0188766d-6fb1-49cc-a627-8dba718663d3", - "workflow_outputs": [] - }, - "7": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_sortbed/2.27.1", - "errors": null, - "id": 7, - "input_connections": { - "input": { - "id": 3, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "bedtools SortBED", - "outputs": [ - { - "name": "output", - "type": "input" - } - ], - "position": { - "left": 460, - "top": 940 - }, - "post_job_actions": { - "HideDatasetActionoutput": { - "action_arguments": {}, - "action_type": "HideDatasetAction", - "output_name": "output" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_sortbed/2.27.1", - "tool_shed_repository": { - "changeset_revision": "87ee588b3d45", - "name": "bedtools", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"option\": \"\\\"\\\"\", \"__page__\": null}", - "tool_version": "2.27.1", - "type": "tool", - "uuid": "190fe21a-4738-4be7-aa01-a467355be7c3", - "workflow_outputs": [] - }, - "8": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.3.4.3", - "errors": null, - "id": 8, - "input_connections": { - "library|input_1": { - "id": 5, - "output_name": "out1" - }, - "library|input_2": { - "id": 5, - "output_name": "out2" - } - }, - "inputs": [], - "label": null, - "name": "Bowtie2", - "outputs": [ - { - "name": "output", - "type": "bam" - }, - { - "name": "mapping_stats", - "type": "txt" - } - ], - "position": { - "left": 788, - "top": 200 - }, - "post_job_actions": { - "RenameDatasetActionmapping_stats": { - "action_arguments": { - "newname": "mapping stats of #{input_1}" - }, - "action_type": "RenameDatasetAction", - "output_name": "mapping_stats" - }, - "RenameDatasetActionoutput": { - "action_arguments": { - "newname": "mapping of #{input_1}" - }, - "action_type": "RenameDatasetAction", - "output_name": "output" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.3.4.3", - "tool_shed_repository": { - "changeset_revision": "017aba02828d", - "name": "bowtie2", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"sam_options\": \"{\\\"__current_case__\\\": 1, \\\"sam_options_selector\\\": \\\"no\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"library\": \"{\\\"__current_case__\\\": 1, \\\"aligned_file\\\": \\\"false\\\", \\\"input_1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"input_2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"paired_options\\\": {\\\"I\\\": \\\"0\\\", \\\"X\\\": \\\"1000\\\", \\\"__current_case__\\\": 0, \\\"dovetail\\\": \\\"true\\\", \\\"fr_rf_ff\\\": \\\"--fr\\\", \\\"no_contain\\\": \\\"false\\\", \\\"no_discordant\\\": \\\"false\\\", \\\"no_mixed\\\": \\\"false\\\", \\\"no_overlap\\\": \\\"false\\\", \\\"paired_options_selector\\\": \\\"yes\\\"}, \\\"type\\\": \\\"paired\\\", \\\"unaligned_file\\\": \\\"false\\\"}\", \"reference_genome\": \"{\\\"__current_case__\\\": 0, \\\"index\\\": \\\"hg38canon\\\", \\\"source\\\": \\\"indexed\\\"}\", \"rg\": \"{\\\"__current_case__\\\": 3, \\\"rg_selector\\\": \\\"do_not_set\\\"}\", \"save_mapping_stats\": \"\\\"true\\\"\", \"analysis_type\": \"{\\\"__current_case__\\\": 0, \\\"analysis_type_selector\\\": \\\"simple\\\", \\\"presets\\\": \\\"--very-sensitive\\\"}\"}", - "tool_version": "2.3.4.3", - "type": "tool", - "uuid": "d12fa188-7671-4ff7-b13f-9ea2322c9a6a", - "workflow_outputs": [ - { - "label": null, - "output_name": "output", - "uuid": "1af4d81d-377e-4880-bbac-604b5accce80" - }, - { - "label": null, - "output_name": "mapping_stats", - "uuid": "3311e54f-3721-44b7-be56-adb2610c8c04" - } - ] - }, - "9": { - "annotation": "We keep properly paired reads, not on chrM, with MAPQ>=30.", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bamtools_filter/bamFilter/2.4.1", - "errors": null, - "id": 9, - "input_connections": { - "input_bam": { - "id": 8, - "output_name": "output" - } - }, - "inputs": [], - "label": "Filter BAM", - "name": "Filter", - "outputs": [ - { - "name": "out_file2", - "type": "txt" - }, - { - "name": "out_file1", - "type": "bam" - } - ], - "position": { - "left": 1116, - "top": 200 - }, - "post_job_actions": { - "RenameDatasetActionout_file1": { - "action_arguments": { - "newname": "#{input_bam} filtered" - }, - "action_type": "RenameDatasetAction", - "output_name": "out_file1" - } - }, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bamtools_filter/bamFilter/2.4.1", - "tool_shed_repository": { - "changeset_revision": "4fe8a75334c8", - "name": "bamtools_filter", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"input_bam\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"rule_configuration\": \"{\\\"__current_case__\\\": 0, \\\"rules_selector\\\": \\\"false\\\"}\", \"conditions\": \"[{\\\"__index__\\\": 0, \\\"filters\\\": [{\\\"__index__\\\": 0, \\\"bam_property\\\": {\\\"__current_case__\\\": 14, \\\"bam_property_selector\\\": \\\"mapQuality\\\", \\\"bam_property_value\\\": \\\">=30\\\"}}, {\\\"__index__\\\": 1, \\\"bam_property\\\": {\\\"__current_case__\\\": 11, \\\"bam_property_selector\\\": \\\"isProperPair\\\", \\\"bam_property_value\\\": \\\"true\\\"}}, {\\\"__index__\\\": 2, \\\"bam_property\\\": {\\\"__current_case__\\\": 20, \\\"bam_property_selector\\\": \\\"reference\\\", \\\"bam_property_value\\\": \\\"!chrM\\\"}}]}]\", \"__page__\": null}", - "tool_version": "2.4.1", - "type": "tool", - "uuid": "9dbe136b-92c2-44b7-ba6d-41b0d4e65f53", - "workflow_outputs": [ - { - "label": null, - "output_name": "out_file2", - "uuid": "24bcb016-ddbc-4397-b65b-e55f6a6dcf2e" - }, - { - "label": null, - "output_name": "out_file1", - "uuid": "a7fd4b61-3850-4742-9979-d4022c4c3bf3" - } - ] - } - }, - "tags": [ - "epigenetics" - ], - "uuid": "49c9f3a0-f84e-4e2f-ae9d-2cf0eac9f247", - "version": 4 + "a_galaxy_workflow": "true", + "annotation": "atac-seq\n", + "format-version": "0.1", + "name": "ATAC-seq GTM", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [], + "label": "ATAC R1 read in fastq(.gz) format", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 139.921875, + "top": 326.671875 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "28c9e734-a2c3-4fd8-bb0e-0f7cb07b28c0", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "88014313-4f9b-478e-ab57-1cab1bade209" + } + ] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [], + "label": "ATAC R2 read in fastq(.gz) format", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 145.328125, + "top": 540.890625 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "5c751222-c315-4334-806d-450ab3aabf76", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "11cc13d6-c4f7-4735-a2fd-527fec11738b" + } + ] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [], + "label": "bed file with genes", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 2308.5, + "top": 917.96875 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "6ee9a913-0bfb-4c69-b90a-279feb412a71", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "eb1c4a04-7932-4935-ba46-c8c5b04c6c7e" + } + ] + }, + "3": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 3, + "input_connections": {}, + "inputs": [], + "label": "ctcf peaks", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 2316.59375, + "top": 1077.296875 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "b356e32f-d1ea-4e32-b607-6d178f184990", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "b62972fb-70ff-4f11-ae3e-cc74788ab08e" + } + ] + }, + "4": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 4, + "input_connections": { + "input_file": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 485.09375, + "top": 192.5625 + }, + "post_job_actions": { + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + }, + "RenameDatasetActionhtml_file": { + "action_arguments": { + "newname": "FastQC of #{input_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "html_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\\\"\\\"\", \"kmers\": \"\\\"7\\\"\", \"limits\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"adapters\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"nogroup\": \"\\\"false\\\"\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "20823f0a-f9c8-4c0f-87c3-437a6a563788", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "fc754ece-cd2e-4928-b13b-b4817f37fedb" + } + ] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/lparsons/cutadapt/cutadapt/1.16.5", + "errors": null, + "id": 5, + "input_connections": { + "library|input_1": { + "id": 0, + "output_name": "output" + }, + "library|input_2": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": "ATAC remove nextera adapters with cutadapt", + "name": "Cutadapt", + "outputs": [ + { + "name": "out1", + "type": "fastqsanger" + }, + { + "name": "out2", + "type": "fastqsanger" + }, + { + "name": "report", + "type": "txt" + } + ], + "position": { + "left": 453.578125, + "top": 463.484375 + }, + "post_job_actions": { + "RenameDatasetActionout1": { + "action_arguments": { + "newname": "cutadapt of #{input_1}" + }, + "action_type": "RenameDatasetAction", + "output_name": "out1" + }, + "RenameDatasetActionout2": { + "action_arguments": { + "newname": "cutadapt of #{input_2}" + }, + "action_type": "RenameDatasetAction", + "output_name": "out2" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/lparsons/cutadapt/cutadapt/1.16.5", + "tool_shed_repository": { + "changeset_revision": "49370cb85f0f", + "name": "cutadapt", + "owner": "lparsons", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"output_options\": \"{\\\"info_file\\\": \\\"false\\\", \\\"multiple_output\\\": \\\"false\\\", \\\"report\\\": \\\"true\\\", \\\"rest_file\\\": \\\"false\\\", \\\"too_long_file\\\": \\\"false\\\", \\\"too_short_file\\\": \\\"false\\\", \\\"untrimmed_file\\\": \\\"false\\\", \\\"wildcard_file\\\": \\\"false\\\"}\", \"read_mod_options\": \"{\\\"length\\\": \\\"0\\\", \\\"length_tag\\\": \\\"\\\", \\\"nextseq_trim\\\": \\\"0\\\", \\\"prefix\\\": \\\"\\\", \\\"quality_cutoff\\\": \\\"20\\\", \\\"strip_suffix\\\": \\\"\\\", \\\"suffix\\\": \\\"\\\", \\\"trim_n\\\": \\\"false\\\"}\", \"adapter_options\": \"{\\\"count\\\": \\\"1\\\", \\\"error_rate\\\": \\\"0.1\\\", \\\"mask_adapter\\\": \\\"false\\\", \\\"match_read_wildcards\\\": \\\" \\\", \\\"no_indels\\\": \\\"false\\\", \\\"no_trim\\\": \\\"false\\\", \\\"overlap\\\": \\\"3\\\"}\", \"library\": \"{\\\"__current_case__\\\": 1, \\\"input_1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"input_2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"r1\\\": {\\\"adapters\\\": [{\\\"__index__\\\": 0, \\\"adapter_source\\\": {\\\"__current_case__\\\": 0, \\\"adapter\\\": \\\"CTGTCTCTTATACACATCTCCGAGCCCACGAGAC\\\", \\\"adapter_name\\\": \\\"Nextera R1\\\", \\\"adapter_source_list\\\": \\\"user\\\"}}], \\\"anywhere_adapters\\\": [], \\\"cut\\\": \\\"0\\\", \\\"front_adapters\\\": []}, \\\"r2\\\": {\\\"adapters2\\\": [{\\\"__index__\\\": 0, \\\"adapter_source2\\\": {\\\"__current_case__\\\": 0, \\\"adapter2\\\": \\\"CTGTCTCTTATACACATCTGACGCTGCCGACGA\\\", \\\"adapter_name2\\\": \\\"Nextera R2\\\", \\\"adapter_source_list2\\\": \\\"user\\\"}}], \\\"anywhere_adapters2\\\": [], \\\"cut2\\\": \\\"0\\\", \\\"front_adapters2\\\": []}, \\\"type\\\": \\\"paired\\\"}\", \"filter_options\": \"{\\\"discard\\\": \\\"false\\\", \\\"discard_untrimmed\\\": \\\"false\\\", \\\"max\\\": \\\"0\\\", \\\"max_n\\\": \\\"\\\", \\\"min\\\": \\\"20\\\", \\\"pair_filter\\\": \\\"any\\\"}\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.16.5", + "type": "tool", + "uuid": "96c9a087-9f0d-4659-9dfe-610d8e8fb91c", + "workflow_outputs": [ + { + "label": null, + "output_name": "report", + "uuid": "cb7ea4a9-5603-4dbf-ab24-bac9f866a109" + }, + { + "label": null, + "output_name": "out1", + "uuid": "bb1fcc39-11a2-4725-8e91-9088df231a18" + }, + { + "label": null, + "output_name": "out2", + "uuid": "a8812fd8-19fd-4c84-9fad-16003513d534" + } + ] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 6, + "input_connections": { + "input_file": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 474.296875, + "top": 763.640625 + }, + "post_job_actions": { + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + }, + "RenameDatasetActionhtml_file": { + "action_arguments": { + "newname": "FastQC of #{input_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "html_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\\\"\\\"\", \"kmers\": \"\\\"7\\\"\", \"limits\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"adapters\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"nogroup\": \"\\\"false\\\"\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "25e770ec-9dc3-49d0-a488-d1b630057530", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "e765b995-6fdd-4780-808a-5bcf8844072b" + } + ] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_sortbed/2.29.0", + "errors": null, + "id": 7, + "input_connections": { + "input": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "bedtools SortBED", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 2668.5, + "top": 922.046875 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + }, + "RenameDatasetActionoutput": { + "action_arguments": { + "newname": "#{input} sorted" + }, + "action_type": "RenameDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_sortbed/2.29.0", + "tool_shed_repository": { + "changeset_revision": "b28e0cfa7ba1", + "name": "bedtools", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"option\": \"\\\"\\\"\", \"__page__\": null}", + "tool_version": "2.29.0", + "type": "tool", + "uuid": "423d7015-b262-4da6-a797-25aa74af0745", + "workflow_outputs": [] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_sortbed/2.29.0", + "errors": null, + "id": 8, + "input_connections": { + "input": { + "id": 3, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "bedtools SortBED", + "outputs": [ + { + "name": "output", + "type": "input" + } + ], + "position": { + "left": 2679.296875, + "top": 1083.140625 + }, + "post_job_actions": { + "HideDatasetActionoutput": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output" + }, + "RenameDatasetActionoutput": { + "action_arguments": { + "newname": "#{input} sorted" + }, + "action_type": "RenameDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_sortbed/2.29.0", + "tool_shed_repository": { + "changeset_revision": "b28e0cfa7ba1", + "name": "bedtools", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"option\": \"\\\"\\\"\", \"__page__\": null}", + "tool_version": "2.29.0", + "type": "tool", + "uuid": "fd827417-988d-44a6-a6bf-fca6538309df", + "workflow_outputs": [] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 9, + "input_connections": { + "input_file": { + "id": 5, + "output_name": "out1" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 775.796875, + "top": 184.921875 + }, + "post_job_actions": { + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + }, + "RenameDatasetActionhtml_file": { + "action_arguments": { + "newname": "FastQC of #{input_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "html_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\\\"\\\"\", \"kmers\": \"\\\"7\\\"\", \"limits\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"adapters\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"nogroup\": \"\\\"false\\\"\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "351245fd-2f98-4540-bcf5-1ffc8d859594", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "02a67ec9-6b3a-4413-b1e1-fd56cead1ca7" + } + ] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.3.4.3", + "errors": null, + "id": 10, + "input_connections": { + "library|input_1": { + "id": 5, + "output_name": "out1" + }, + "library|input_2": { + "id": 5, + "output_name": "out2" + } + }, + "inputs": [], + "label": null, + "name": "Bowtie2", + "outputs": [ + { + "name": "output", + "type": "bam" + }, + { + "name": "mapping_stats", + "type": "txt" + } + ], + "position": { + "left": 776.671875, + "top": 473.390625 + }, + "post_job_actions": { + "RenameDatasetActionmapping_stats": { + "action_arguments": { + "newname": "mapping stats of #{input_1}" + }, + "action_type": "RenameDatasetAction", + "output_name": "mapping_stats" + }, + "RenameDatasetActionoutput": { + "action_arguments": { + "newname": "mapping of #{input_1}" + }, + "action_type": "RenameDatasetAction", + "output_name": "output" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bowtie2/bowtie2/2.3.4.3", + "tool_shed_repository": { + "changeset_revision": "017aba02828d", + "name": "bowtie2", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"sam_options\": \"{\\\"__current_case__\\\": 1, \\\"sam_options_selector\\\": \\\"no\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"library\": \"{\\\"__current_case__\\\": 1, \\\"aligned_file\\\": \\\"false\\\", \\\"input_1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"input_2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"paired_options\\\": {\\\"I\\\": \\\"0\\\", \\\"X\\\": \\\"1000\\\", \\\"__current_case__\\\": 0, \\\"dovetail\\\": \\\"true\\\", \\\"fr_rf_ff\\\": \\\"--fr\\\", \\\"no_contain\\\": \\\"false\\\", \\\"no_discordant\\\": \\\"false\\\", \\\"no_mixed\\\": \\\"false\\\", \\\"no_overlap\\\": \\\"false\\\", \\\"paired_options_selector\\\": \\\"yes\\\"}, \\\"type\\\": \\\"paired\\\", \\\"unaligned_file\\\": \\\"false\\\"}\", \"reference_genome\": \"{\\\"__current_case__\\\": 0, \\\"index\\\": \\\"hg38canon\\\", \\\"source\\\": \\\"indexed\\\"}\", \"rg\": \"{\\\"__current_case__\\\": 3, \\\"rg_selector\\\": \\\"do_not_set\\\"}\", \"save_mapping_stats\": \"\\\"true\\\"\", \"analysis_type\": \"{\\\"__current_case__\\\": 0, \\\"analysis_type_selector\\\": \\\"simple\\\", \\\"presets\\\": \\\"--very-sensitive\\\"}\"}", + "tool_version": "2.3.4.3", + "type": "tool", + "uuid": "e0677324-b7fc-44f7-9bb3-6fa8a7671f64", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "ee885fdb-df50-4d94-99fa-36ef6619797b" + }, + { + "label": null, + "output_name": "mapping_stats", + "uuid": "c4f2bf70-6e4d-443f-9d3f-51d1ff501b91" + } + ] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 11, + "input_connections": { + "input_file": { + "id": 5, + "output_name": "out2" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 774.890625, + "top": 776.234375 + }, + "post_job_actions": { + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + }, + "RenameDatasetActionhtml_file": { + "action_arguments": { + "newname": "FastQC of #{input_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "html_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\\\"\\\"\", \"kmers\": \"\\\"7\\\"\", \"limits\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"adapters\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"nogroup\": \"\\\"false\\\"\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "265bed3e-c169-40ba-96ae-44d9b12b9635", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "67d416ce-5570-4de1-a6cd-8a97f96567de" + } + ] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bamtools_filter/bamFilter/2.4.1", + "errors": null, + "id": 12, + "input_connections": { + "input_bam": { + "id": 10, + "output_name": "output" + } + }, + "inputs": [], + "label": "Filter BAM ATAC", + "name": "Filter", + "outputs": [ + { + "name": "out_file2", + "type": "txt" + }, + { + "name": "out_file1", + "type": "bam" + } + ], + "position": { + "left": 1079.09375, + "top": 469.796875 + }, + "post_job_actions": { + "RenameDatasetActionout_file1": { + "action_arguments": { + "newname": "#{input_bam} filtered" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_file1" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bamtools_filter/bamFilter/2.4.1", + "tool_shed_repository": { + "changeset_revision": "cb20f99fd45b", + "name": "bamtools_filter", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_bam\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"rule_configuration\": \"{\\\"__current_case__\\\": 0, \\\"rules_selector\\\": \\\"false\\\"}\", \"conditions\": \"[{\\\"__index__\\\": 0, \\\"filters\\\": [{\\\"__index__\\\": 0, \\\"bam_property\\\": {\\\"__current_case__\\\": 14, \\\"bam_property_selector\\\": \\\"mapQuality\\\", \\\"bam_property_value\\\": \\\">=30\\\"}}, {\\\"__index__\\\": 1, \\\"bam_property\\\": {\\\"__current_case__\\\": 11, \\\"bam_property_selector\\\": \\\"isProperPair\\\", \\\"bam_property_value\\\": \\\"true\\\"}}, {\\\"__index__\\\": 2, \\\"bam_property\\\": {\\\"__current_case__\\\": 20, \\\"bam_property_selector\\\": \\\"reference\\\", \\\"bam_property_value\\\": \\\"!chrM\\\"}}]}]\", \"__page__\": null}", + "tool_version": "2.4.1", + "type": "tool", + "uuid": "f23d0019-e51f-4a2a-ae4c-35cb39fe8462", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file2", + "uuid": "93cb7ab3-245c-4e7f-b42a-af31caa8b296" + }, + { + "label": null, + "output_name": "out_file1", + "uuid": "6cd3df3a-5ccd-4df6-858f-eef97e9285d2" + } + ] + }, + "13": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_MarkDuplicates/2.18.2.2", + "errors": null, + "id": 13, + "input_connections": { + "inputFile": { + "id": 12, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "MarkDuplicates", + "outputs": [ + { + "name": "metrics_file", + "type": "txt" + }, + { + "name": "outFile", + "type": "bam" + } + ], + "position": { + "left": 1349.09375, + "top": 468.890625 + }, + "post_job_actions": { + "RenameDatasetActionoutFile": { + "action_arguments": { + "newname": "#{inputFile} without duplicates" + }, + "action_type": "RenameDatasetAction", + "output_name": "outFile" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_MarkDuplicates/2.18.2.2", + "tool_shed_repository": { + "changeset_revision": "a1f0b3f4b781", + "name": "picard", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"duplicate_scoring_strategy\": \"\\\"SUM_OF_BASE_QUALITIES\\\"\", \"remove_duplicates\": \"\\\"true\\\"\", \"read_name_regex\": \"\\\"\\\"\", \"barcode_tag\": \"\\\"\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"optical_duplicate_pixel_distance\": \"\\\"100\\\"\", \"comments\": \"[]\", \"assume_sorted\": \"\\\"true\\\"\", \"validation_stringency\": \"\\\"LENIENT\\\"\", \"inputFile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "2.18.2.2", + "type": "tool", + "uuid": "7ce1de9d-b93d-459b-bad5-00c38831d69a", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFile", + "uuid": "c47a191d-88b4-4c7d-a776-828848a4116b" + }, + { + "label": null, + "output_name": "metrics_file", + "uuid": "5738732e-55f0-4053-a327-ee4fb9473c9e" + } + ] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_CollectInsertSizeMetrics/2.18.2.1", + "errors": null, + "id": 14, + "input_connections": { + "inputFile": { + "id": 13, + "output_name": "outFile" + } + }, + "inputs": [], + "label": null, + "name": "CollectInsertSizeMetrics", + "outputs": [ + { + "name": "outFile", + "type": "tabular" + }, + { + "name": "histFile", + "type": "pdf" + } + ], + "position": { + "left": 1673.546875, + "top": 281.671875 + }, + "post_job_actions": { + "HideDatasetActionoutFile": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outFile" + }, + "RenameDatasetActionhistFile": { + "action_arguments": { + "newname": "fragment size plot of #{inputFile}" + }, + "action_type": "RenameDatasetAction", + "output_name": "histFile" + }, + "RenameDatasetActionoutFile": { + "action_arguments": { + "newname": "fragment size data of #{inputFile}" + }, + "action_type": "RenameDatasetAction", + "output_name": "outFile" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_CollectInsertSizeMetrics/2.18.2.1", + "tool_shed_repository": { + "changeset_revision": "a1f0b3f4b781", + "name": "picard", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"deviations\": \"\\\"10.0\\\"\", \"__rerun_remap_job_id__\": null, \"hist_width\": \"\\\"\\\"\", \"assume_sorted\": \"\\\"true\\\"\", \"metric_accumulation_level\": \"[\\\"ALL_READS\\\"]\", \"validation_stringency\": \"\\\"LENIENT\\\"\", \"reference_source\": \"{\\\"__current_case__\\\": 0, \\\"ref_file\\\": \\\"hg38\\\", \\\"reference_source_selector\\\": \\\"cached\\\"}\", \"min_pct\": \"\\\"0.05\\\"\", \"inputFile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "2.18.2.1", + "type": "tool", + "uuid": "1780755c-4f3b-4f11-ba52-57c4457348ba", + "workflow_outputs": [ + { + "label": null, + "output_name": "histFile", + "uuid": "d783d55d-bcae-4908-8fd2-f5dbc8e41fd5" + } + ] + }, + "15": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/samtools_sort/samtools_sort/2.0.3", + "errors": null, + "id": 15, + "input_connections": { + "input1": { + "id": 13, + "output_name": "outFile" + } + }, + "inputs": [], + "label": null, + "name": "Samtools sort", + "outputs": [ + { + "name": "output1", + "type": "bam" + } + ], + "position": { + "left": 1676.5, + "top": 553 + }, + "post_job_actions": { + "RenameDatasetActionoutput1": { + "action_arguments": { + "newname": "qname sorted of #{input1}" + }, + "action_type": "RenameDatasetAction", + "output_name": "output1" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/samtools_sort/samtools_sort/2.0.3", + "tool_shed_repository": { + "changeset_revision": "e613c1ad4c4c", + "name": "samtools_sort", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"prim_key_cond\": \"{\\\"__current_case__\\\": 1, \\\"prim_key_select\\\": \\\"-n\\\"}\"}", + "tool_version": "2.0.3", + "type": "tool", + "uuid": "01337dc5-3fbe-4258-954f-257cbea8da28", + "workflow_outputs": [ + { + "label": null, + "output_name": "output1", + "uuid": "91aafa0a-95aa-4e24-8a59-4ea1bf33f450" + } + ] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_bamtobed/2.29.0", + "errors": null, + "id": 16, + "input_connections": { + "input": { + "id": 13, + "output_name": "outFile" + } + }, + "inputs": [], + "label": null, + "name": "bedtools BAM to BED", + "outputs": [ + { + "name": "output", + "type": "bed" + } + ], + "position": { + "left": 2009.25, + "top": 1105.1875 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/bedtools/bedtools_bamtobed/2.29.0", + "tool_shed_repository": { + "changeset_revision": "b28e0cfa7ba1", + "name": "bedtools", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"option\": \"\\\"\\\"\", \"__rerun_remap_job_id__\": null, \"tag\": \"\\\"\\\"\", \"split\": \"\\\"false\\\"\", \"ed_score\": \"\\\"false\\\"\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "2.29.0", + "type": "tool", + "uuid": "97a4e7f6-14e3-4ce4-b8bf-2f01f407a00e", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "0c47d2f1-01e9-47fa-a20f-371399894a2f" + } + ] + }, + "17": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/genrich/genrich/0.5+galaxy2", + "errors": null, + "id": 17, + "input_connections": { + "treatment|input_treatment_file": { + "id": 15, + "output_name": "output1" + } + }, + "inputs": [], + "label": null, + "name": "Genrich", + "outputs": [ + { + "name": "outfile", + "type": "encodepeak" + }, + { + "name": "out_bedgraph2", + "type": "bedgraph" + }, + { + "name": "out_dups", + "type": "txt" + } + ], + "position": { + "left": 1969.1875, + "top": 598.046875 + }, + "post_job_actions": { + "RenameDatasetActionout_bedgraph2": { + "action_arguments": { + "newname": "Genrich pile-up of #{input_treatment_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_bedgraph2" + }, + "RenameDatasetActionout_dups": { + "action_arguments": { + "newname": "Genrich PCR duplicates of #{input_treatment_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_dups" + }, + "RenameDatasetActionoutfile": { + "action_arguments": { + "newname": "Genrich peaks of #{input_treatment_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "outfile" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/genrich/genrich/0.5+galaxy2", + "tool_shed_repository": { + "changeset_revision": "8353f3cc03db", + "name": "genrich", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"control\": \"{\\\"__current_case__\\\": 1, \\\"c_select\\\": \\\"No\\\"}\", \"__page__\": null, \"output_options\": \"{\\\"bed\\\": \\\"false\\\", \\\"bedgraph1\\\": \\\"false\\\", \\\"bedgraph2\\\": \\\"true\\\"}\", \"__rerun_remap_job_id__\": null, \"other_options\": \"{\\\"skip_peak_calling\\\": \\\"false\\\"}\", \"filter_options\": \"{\\\"alignment_lengths\\\": \\\"\\\", \\\"alignment_lengths2\\\": \\\"false\\\", \\\"alignment_score\\\": \\\"0.0\\\", \\\"duplicates\\\": \\\"true\\\", \\\"exclude_chr\\\": \\\"\\\", \\\"min_mapq\\\": \\\"0\\\", \\\"unpaired\\\": \\\"false\\\"}\", \"peakcalling_options\": \"{\\\"max_dist\\\": \\\"100\\\", \\\"max_p\\\": \\\"\\\", \\\"max_q\\\": \\\"0.05\\\", \\\"min_auc\\\": \\\"20.0\\\", \\\"min_peak_length\\\": \\\"0\\\"}\", \"atac_options\": \"{\\\"atac\\\": \\\"true\\\", \\\"expand_sites\\\": \\\"100\\\"}\", \"treatment\": \"{\\\"__current_case__\\\": 0, \\\"input_treatment_file\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"t_multi_select\\\": \\\"No\\\"}\", \"cond_exclude\": \"{\\\"__current_case__\\\": 0, \\\"exclude_select\\\": \\\"No\\\"}\"}", + "tool_version": "0.5+galaxy2", + "type": "tool", + "uuid": "5964c14b-708d-43c1-8ae4-b471286d19e8", + "workflow_outputs": [ + { + "label": null, + "output_name": "outfile", + "uuid": "1d5d7c2b-1315-46a4-924c-a57cc65d7104" + }, + { + "label": null, + "output_name": "out_bedgraph2", + "uuid": "78e29a63-7978-42d2-9a80-d5be6eed09ca" + }, + { + "label": null, + "output_name": "out_dups", + "uuid": "aa03693e-51b5-4cd2-bdb8-fec47a64f769" + } + ] + }, + "18": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/macs2/macs2_callpeak/2.1.1.20160309.6", + "errors": null, + "id": 18, + "input_connections": { + "treatment|input_treatment_file": { + "id": 16, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "MACS2 callpeak", + "outputs": [ + { + "name": "output_tabular", + "type": "tabular" + }, + { + "name": "output_narrowpeaks", + "type": "bed" + }, + { + "name": "output_summits", + "type": "bed" + }, + { + "name": "output_treat_pileup", + "type": "bedgraph" + }, + { + "name": "output_control_lambda", + "type": "bedgraph" + } + ], + "position": { + "left": 2541.890625, + "top": 1186.484375 + }, + "post_job_actions": { + "HideDatasetActionoutput_control_lambda": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_control_lambda" + }, + "HideDatasetActionoutput_tabular": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_tabular" + }, + "RenameDatasetActionoutput_narrowpeaks": { + "action_arguments": { + "newname": "macs2 peaks (narrowPeak) from #{input_treatment_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "output_narrowpeaks" + }, + "RenameDatasetActionoutput_summits": { + "action_arguments": { + "newname": "macs2 summits from #{input_treatment_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "output_summits" + }, + "RenameDatasetActionoutput_tabular": { + "action_arguments": { + "newname": "macs2 peaks (tabular) from #{input_treatment_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "output_tabular" + }, + "RenameDatasetActionoutput_treat_pileup": { + "action_arguments": { + "newname": "macs2 coverage from #{input_treatment_file}" + }, + "action_type": "RenameDatasetAction", + "output_name": "output_treat_pileup" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/macs2/macs2_callpeak/2.1.1.20160309.6", + "tool_shed_repository": { + "changeset_revision": "424aefbd7777", + "name": "macs2", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"control\": \"{\\\"__current_case__\\\": 1, \\\"c_select\\\": \\\"No\\\"}\", \"__page__\": null, \"effective_genome_size_options\": \"{\\\"__current_case__\\\": 0, \\\"effective_genome_size_options_selector\\\": \\\"2700000000\\\"}\", \"format\": \"\\\"BED\\\"\", \"outputs\": \"[\\\"peaks_tabular\\\", \\\"summits\\\", \\\"bdg\\\"]\", \"__rerun_remap_job_id__\": null, \"cutoff_options\": \"{\\\"__current_case__\\\": 1, \\\"cutoff_options_selector\\\": \\\"qvalue\\\", \\\"qvalue\\\": \\\"0.05\\\"}\", \"advanced_options\": \"{\\\"broad_options\\\": {\\\"__current_case__\\\": 1, \\\"broad_options_selector\\\": \\\"nobroad\\\", \\\"call_summits\\\": \\\"false\\\"}, \\\"keep_dup_options\\\": {\\\"__current_case__\\\": 2, \\\"keep_dup_options_selector\\\": \\\"all\\\"}, \\\"llocal\\\": \\\"\\\", \\\"nolambda\\\": \\\"false\\\", \\\"ratio\\\": \\\"\\\", \\\"slocal\\\": \\\"\\\", \\\"spmr\\\": \\\"false\\\", \\\"to_large\\\": \\\"false\\\"}\", \"treatment\": \"{\\\"__current_case__\\\": 0, \\\"input_treatment_file\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"t_multi_select\\\": \\\"No\\\"}\", \"nomodel_type\": \"{\\\"__current_case__\\\": 1, \\\"extsize\\\": \\\"100\\\", \\\"nomodel_type_selector\\\": \\\"nomodel\\\", \\\"shift\\\": \\\"-50\\\"}\"}", + "tool_version": "2.1.1.20160309.6", + "type": "tool", + "uuid": "1c8458d8-4f7e-452a-9458-7edad0c39e9d", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_treat_pileup", + "uuid": "288d4a5f-bac6-41c9-b48a-b12db1ac1fc3" + }, + { + "label": null, + "output_name": "output_summits", + "uuid": "e952ca62-97a1-4c78-8f6f-a827685d4444" + }, + { + "label": null, + "output_name": "output_narrowpeaks", + "uuid": "5b31c4c7-5789-4d5c-9d82-cc3fd40473d7" + } + ] + }, + "19": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/1.1.1", + "errors": null, + "id": 19, + "input_connections": { + "infile": { + "id": 17, + "output_name": "out_bedgraph2" + } + }, + "inputs": [], + "label": null, + "name": "Text reformatting", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 2308.046875, + "top": 437.8125 + }, + "post_job_actions": { + "RenameDatasetActionoutfile": { + "action_arguments": { + "newname": "#{infile} as bedgraph" + }, + "action_type": "RenameDatasetAction", + "output_name": "outfile" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_awk_tool/1.1.1", + "tool_shed_repository": { + "changeset_revision": "9ff72e942410", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"code\": \"\\\"NR>=3 {print $1,$2,$3,$4}\\\"\", \"infile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "1.1.1", + "type": "tool", + "uuid": "8de7173f-fcbf-4662-a783-77310beefa99", + "workflow_outputs": [ + { + "label": null, + "output_name": "outfile", + "uuid": "4db0ced8-d082-4f4d-8ee6-1e98229a7b39" + } + ] + }, + "20": { + "annotation": "", + "content_id": "wig_to_bigWig", + "errors": null, + "id": 20, + "input_connections": { + "input1": { + "id": 18, + "output_name": "output_treat_pileup" + } + }, + "inputs": [], + "label": null, + "name": "Wig/BedGraph-to-bigWig", + "outputs": [ + { + "name": "out_file1", + "type": "bigwig" + } + ], + "position": { + "left": 2964.59375, + "top": 1194.296875 + }, + "post_job_actions": { + "RenameDatasetActionout_file1": { + "action_arguments": { + "newname": "bigwig of #{input1}" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_file1" + } + }, + "tool_id": "wig_to_bigWig", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"settings\": \"{\\\"__current_case__\\\": 0, \\\"settingsType\\\": \\\"preset\\\"}\"}", + "tool_version": "1.1.1", + "type": "tool", + "uuid": "5cce7368-6275-4a9f-9046-3da58745f579", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "1d51e34a-25dd-4a91-9db5-0a391602b3a0" + } + ] + }, + "21": { + "annotation": "", + "content_id": "wig_to_bigWig", + "errors": null, + "id": 21, + "input_connections": { + "input1": { + "id": 19, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Wig/BedGraph-to-bigWig", + "outputs": [ + { + "name": "out_file1", + "type": "bigwig" + } + ], + "position": { + "left": 2545.1875, + "top": 428.359375 + }, + "post_job_actions": { + "RenameDatasetActionout_file1": { + "action_arguments": { + "newname": "bigwig of #{input1}" + }, + "action_type": "RenameDatasetAction", + "output_name": "out_file1" + } + }, + "tool_id": "wig_to_bigWig", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"settings\": \"{\\\"__current_case__\\\": 0, \\\"settingsType\\\": \\\"preset\\\"}\"}", + "tool_version": "1.1.1", + "type": "tool", + "uuid": "a64af60d-194d-4bd5-baa4-67927d289ec0", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "9da301cd-68cd-4a56-835a-1abef1b416ce" + } + ] + }, + "22": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_compute_matrix/deeptools_compute_matrix/3.0.2.0", + "errors": null, + "id": 22, + "input_connections": { + "multibigwig_conditional|bigwigfiles": [ + { + "id": 21, + "output_name": "out_file1" + }, + { + "id": 20, + "output_name": "out_file1" + } + ], + "regionsFiles_0|regionsFile": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool computeMatrix", + "name": "advancedOpt" + } + ], + "label": null, + "name": "computeMatrix", + "outputs": [ + { + "name": "outFileName", + "type": "deeptools_compute_matrix_archive" + } + ], + "position": { + "left": 2933.09375, + "top": 377.0625 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_compute_matrix/deeptools_compute_matrix/3.0.2.0", + "tool_shed_repository": { + "changeset_revision": "fb9cf9c97ec4", + "name": "deeptools_compute_matrix", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"multibigwig_conditional\": \"{\\\"__current_case__\\\": 0, \\\"bigwigfiles\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"orderMatters\\\": \\\"No\\\"}\", \"mode\": \"{\\\"__current_case__\\\": 1, \\\"afterRegionStartLength\\\": \\\"1000\\\", \\\"beforeRegionStartLength\\\": \\\"1000\\\", \\\"mode_select\\\": \\\"reference-point\\\", \\\"nanAfterEnd\\\": \\\"false\\\", \\\"referencePoint\\\": \\\"TSS\\\"}\", \"output\": \"{\\\"__current_case__\\\": 0, \\\"showOutputSettings\\\": \\\"no\\\"}\", \"advancedOpt\": \"{\\\"__current_case__\\\": 1, \\\"averageTypeBins\\\": \\\"mean\\\", \\\"binSize\\\": \\\"50\\\", \\\"blackListFileName\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"exonID\\\": \\\"exon\\\", \\\"maxThreshold\\\": \\\"\\\", \\\"metagene\\\": \\\"false\\\", \\\"minThreshold\\\": \\\"\\\", \\\"missingDataAsZero\\\": \\\"true\\\", \\\"samplesLabel\\\": \\\"\\\", \\\"scale\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"skipZeros\\\": \\\"false\\\", \\\"sortRegions\\\": \\\"keep\\\", \\\"sortUsing\\\": \\\"mean\\\", \\\"transcriptID\\\": \\\"transcript\\\", \\\"transcript_id_designator\\\": \\\"transcript_id\\\"}\", \"regionsFiles\": \"[{\\\"__index__\\\": 0, \\\"regionsFile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}}]\"}", + "tool_version": "3.0.2.0", + "type": "tool", + "uuid": "5a222119-7228-42a5-a3af-70137e8787f1", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "cb3f559c-c83b-4eb8-a77c-d875b5bcdf16" + } + ] + }, + "23": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/pygenometracks/pygenomeTracks/3.3", + "errors": null, + "id": 23, + "input_connections": { + "tracks_0|track_file_style_conditional|track_input_bigwig": { + "id": 21, + "output_name": "out_file1" + }, + "tracks_1|track_file_style_conditional|track_input_narrow_peak": { + "id": 17, + "output_name": "outfile" + }, + "tracks_2|track_file_style_conditional|track_input_bigwig": { + "id": 20, + "output_name": "out_file1" + }, + "tracks_3|track_file_style_conditional|track_input_narrow_peak": { + "id": 18, + "output_name": "output_narrowpeaks" + }, + "tracks_4|track_file_style_conditional|track_input_bed": { + "id": 7, + "output_name": "output" + }, + "tracks_5|track_file_style_conditional|track_input_narrow_peak": { + "id": 8, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "pyGenomeTracks", + "outputs": [ + { + "name": "outFileName", + "type": "png" + } + ], + "position": { + "left": 3181.046875, + "top": 744.296875 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/pygenometracks/pygenomeTracks/3.3", + "tool_shed_repository": { + "changeset_revision": "326a3db8d9d1", + "name": "pygenometracks", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"global_args\": \"{\\\"dpi\\\": \\\"72\\\", \\\"fontsize\\\": \\\"12\\\", \\\"title\\\": \\\"\\\", \\\"trackLabelFraction\\\": \\\"0.05\\\", \\\"trackLabelHAlign\\\": \\\"left\\\"}\", \"image_file_format\": \"\\\"png\\\"\", \"tracks\": \"[{\\\"__index__\\\": 0, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 6, \\\"alpha\\\": \\\"1.0\\\", \\\"color\\\": \\\"#c0504d\\\", \\\"color_negative\\\": {\\\"__current_case__\\\": 0, \\\"color_negative_select\\\": \\\"false\\\"}, \\\"height_bigwig\\\": \\\"5.0\\\", \\\"invert_orientation\\\": \\\"false\\\", \\\"max_value\\\": \\\"\\\", \\\"min_value\\\": \\\"0.0\\\", \\\"overlay_select\\\": \\\"no\\\", \\\"reading_bw_conditional\\\": {\\\"nans_to_zeros\\\": \\\"false\\\", \\\"number_of_bins\\\": \\\"\\\", \\\"summary\\\": \\\"mean\\\"}, \\\"show_data\\\": \\\"true\\\", \\\"spacer_height\\\": \\\"\\\", \\\"title\\\": \\\"Coverage from Genrich (extended +/-50bp)\\\", \\\"track_file_style_selector\\\": \\\"bigwig_track_option\\\", \\\"track_input_bigwig\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"type_conditional\\\": {\\\"__current_case__\\\": 2, \\\"type_selector\\\": \\\"fill_option\\\"}}}, {\\\"__index__\\\": 1, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 4, \\\"color\\\": \\\"#c0504d\\\", \\\"display\\\": {\\\"__current_case__\\\": 1, \\\"display_selector\\\": \\\"box\\\", \\\"use_summit\\\": \\\"true\\\"}, \\\"fontsize\\\": \\\"\\\", \\\"height_narrow_peak\\\": \\\"1.5\\\", \\\"invert_orientation\\\": \\\"false\\\", \\\"line_width\\\": \\\"1.0\\\", \\\"overlay_select\\\": \\\"no\\\", \\\"show_labels\\\": \\\"false\\\", \\\"spacer_height\\\": \\\"\\\", \\\"title\\\": \\\"Peaks from Genrich (extended +/-50bp)\\\", \\\"track_file_style_selector\\\": \\\"narrow_peak_track_option\\\", \\\"track_input_narrow_peak\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}}, {\\\"__index__\\\": 2, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 6, \\\"alpha\\\": \\\"1.0\\\", \\\"color\\\": \\\"#00b050\\\", \\\"color_negative\\\": {\\\"__current_case__\\\": 0, \\\"color_negative_select\\\": \\\"false\\\"}, \\\"height_bigwig\\\": \\\"5.0\\\", \\\"invert_orientation\\\": \\\"false\\\", \\\"max_value\\\": \\\"\\\", \\\"min_value\\\": \\\"0.0\\\", \\\"overlay_select\\\": \\\"no\\\", \\\"reading_bw_conditional\\\": {\\\"nans_to_zeros\\\": \\\"false\\\", \\\"number_of_bins\\\": \\\"\\\", \\\"summary\\\": \\\"mean\\\"}, \\\"show_data\\\": \\\"true\\\", \\\"spacer_height\\\": \\\"\\\", \\\"title\\\": \\\"Coverage from MACS2 (extended +/-50bp)\\\", \\\"track_file_style_selector\\\": \\\"bigwig_track_option\\\", \\\"track_input_bigwig\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"type_conditional\\\": {\\\"__current_case__\\\": 2, \\\"type_selector\\\": \\\"fill_option\\\"}}}, {\\\"__index__\\\": 3, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 4, \\\"color\\\": \\\"#00b050\\\", \\\"display\\\": {\\\"__current_case__\\\": 1, \\\"display_selector\\\": \\\"box\\\", \\\"use_summit\\\": \\\"true\\\"}, \\\"fontsize\\\": \\\"\\\", \\\"height_narrow_peak\\\": \\\"1.5\\\", \\\"invert_orientation\\\": \\\"false\\\", \\\"line_width\\\": \\\"1.0\\\", \\\"overlay_select\\\": \\\"no\\\", \\\"show_labels\\\": \\\"false\\\", \\\"spacer_height\\\": \\\"\\\", \\\"title\\\": \\\"Peaks from MACS2 (extended +/-50bp)\\\", \\\"track_file_style_selector\\\": \\\"narrow_peak_track_option\\\", \\\"track_input_narrow_peak\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}}, {\\\"__index__\\\": 4, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 2, \\\"bed_style\\\": {\\\"__current_case__\\\": 0, \\\"arrowhead_included\\\": \\\"false\\\", \\\"bed_advanced\\\": {\\\"color_utr\\\": {\\\"__current_case__\\\": 0, \\\"color\\\": \\\"#808080\\\", \\\"color_utr_select\\\": \\\"manually\\\"}, \\\"gene_rows\\\": \\\"\\\", \\\"global_max_row\\\": \\\"false\\\", \\\"gtf\\\": {\\\"merge_transcripts\\\": \\\"false\\\", \\\"prefered_name\\\": \\\"transcript_name\\\"}, \\\"height_utr\\\": \\\"1.0\\\", \\\"line_width\\\": \\\"0.5\\\", \\\"max_labels\\\": \\\"60\\\"}, \\\"bed_style_select\\\": \\\"flybase\\\"}, \\\"border_color_bed\\\": {\\\"__current_case__\\\": 0, \\\"border_color_bed_select\\\": \\\"manually\\\", \\\"color\\\": \\\"#000000\\\"}, \\\"color_bed\\\": {\\\"__current_case__\\\": 0, \\\"color\\\": \\\"#000000\\\", \\\"color_bed_select\\\": \\\"manually\\\"}, \\\"display\\\": \\\"stacked\\\", \\\"fontsize\\\": \\\"\\\", \\\"height_bed\\\": \\\"5.0\\\", \\\"invert_orientation\\\": \\\"false\\\", \\\"labels\\\": {\\\"__current_case__\\\": 0, \\\"all_labels_inside\\\": \\\"true\\\", \\\"labels_in_margin\\\": \\\"true\\\", \\\"plot_labels\\\": \\\"true\\\"}, \\\"overlay_select\\\": \\\"no\\\", \\\"spacer_height\\\": \\\"\\\", \\\"title\\\": \\\"Genes\\\", \\\"track_file_style_selector\\\": \\\"gene_track_option\\\", \\\"track_input_bed\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}}, {\\\"__index__\\\": 5, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 4, \\\"color\\\": \\\"#00b0f0\\\", \\\"display\\\": {\\\"__current_case__\\\": 1, \\\"display_selector\\\": \\\"box\\\", \\\"use_summit\\\": \\\"true\\\"}, \\\"fontsize\\\": \\\"\\\", \\\"height_narrow_peak\\\": \\\"1.5\\\", \\\"invert_orientation\\\": \\\"false\\\", \\\"line_width\\\": \\\"1.0\\\", \\\"overlay_select\\\": \\\"no\\\", \\\"show_labels\\\": \\\"false\\\", \\\"spacer_height\\\": \\\"\\\", \\\"title\\\": \\\"CTCF peaks\\\", \\\"track_file_style_selector\\\": \\\"narrow_peak_track_option\\\", \\\"track_input_narrow_peak\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}}, {\\\"__index__\\\": 6, \\\"track_file_style_conditional\\\": {\\\"__current_case__\\\": 11, \\\"fontsize\\\": \\\"\\\", \\\"spacer_height\\\": \\\"\\\", \\\"title\\\": \\\"\\\", \\\"track_file_style_selector\\\": \\\"xaxis_option\\\", \\\"xaxis_where\\\": \\\"bottom\\\"}}]\", \"region\": \"\\\"chr22:37,193,000-37,252,000\\\"\"}", + "tool_version": "3.3", + "type": "tool", + "uuid": "92c04758-fac3-4719-90ef-78b98f19ffae", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "2d37bc32-b0db-46f4-a7f7-3bd2a63edaca" + } + ] + }, + "24": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_plot_heatmap/deeptools_plot_heatmap/3.0.2.0", + "errors": null, + "id": 24, + "input_connections": { + "matrixFile": { + "id": 22, + "output_name": "outFileName" + } + }, + "inputs": [], + "label": null, + "name": "plotHeatmap", + "outputs": [ + { + "name": "outFileName", + "type": "png" + } + ], + "position": { + "left": 3276, + "top": 402.265625 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_plot_heatmap/deeptools_plot_heatmap/3.0.2.0", + "tool_shed_repository": { + "changeset_revision": "010e58e9d822", + "name": "deeptools_plot_heatmap", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"output\": \"{\\\"__current_case__\\\": 0, \\\"showOutputSettings\\\": \\\"no\\\"}\", \"advancedOpt\": \"{\\\"__current_case__\\\": 0, \\\"showAdvancedOpt\\\": \\\"no\\\"}\", \"__rerun_remap_job_id__\": null, \"matrixFile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "3.0.2.0", + "type": "tool", + "uuid": "073b0ded-41a7-4648-9b79-db19d2b951a2", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "f43f7a7c-b71d-4d76-a656-4992c1f4e219" + } + ] + } + }, + "tags": [ + "epigenetics" + ], + "uuid": "8ecad8c4-8f22-4c18-b914-5833c9664218", + "version": 12 } \ No newline at end of file diff --git a/topics/instructors/README.md b/topics/instructors/README.md index cff579ca36291e..bebf24c7008fd2 100644 --- a/topics/instructors/README.md +++ b/topics/instructors/README.md @@ -2,10 +2,10 @@ Teaching and Hosting Galaxy trainings ===================================== Galaxy is a great solution to train the bioinformatics concepts: -numerous bioinformatics tools are available (almost 5,000 in the ToolShed), it +numerous bioinformatics tools are available (more than 7,000 in the ToolShed), it can be used by people without any computer science skills, it trains to use technology, outlining available resources and efforts that have made them accessible to researchers, it is scalable. The Galaxy community via the Galaxy Training Network supports instructors and -workshop organizers using with a series of recommandations and regular meetings. \ No newline at end of file +workshop organizers using with a series of recommandations and regular meetings. diff --git a/topics/introduction/slides/introduction.html b/topics/introduction/slides/introduction.html index 2f3d8ec0d99026..b2c7740898a3bc 100644 --- a/topics/introduction/slides/introduction.html +++ b/topics/introduction/slides/introduction.html @@ -69,7 +69,7 @@ ## Galaxy growth - More than 7,000 ready to use tools for users -- More than 7,500 [citations](https://www.zotero.org/groups/1732893/galaxy) +- More than 9,500 [citations](https://www.zotero.org/groups/1732893/galaxy) - More than 350 [public Galaxy resources](https://galaxyproject.org/use/) - - 120+ public servers, many more non-public - - Both general-purpose and domain-specific diff --git a/topics/introduction/tutorials/galaxy-intro-101-everyone/tutorial.md b/topics/introduction/tutorials/galaxy-intro-101-everyone/tutorial.md index d0c4289317a94e..57eb5434944af5 100644 --- a/topics/introduction/tutorials/galaxy-intro-101-everyone/tutorial.md +++ b/topics/introduction/tutorials/galaxy-intro-101-everyone/tutorial.md @@ -454,6 +454,8 @@ check whether we can spot any immediate patterns. > - *"Plotting multiple groups"*: `Plot multiple groups of data on one plot` > - *"column differentiating the different groups"*: `5` > - *"Color schemes to differentiate your groups"*: `Set 2 - predefined color pallete` +> - In *"Output Options"*: +> - *Additional output format*: `PDF` > > 2. **View** {% icon galaxy-eye%} the resulting plot: > @@ -738,4 +740,3 @@ To share a history, click on the {% icon galaxy-gear %} icon in the history pane {:.no_toc} {% icon trophy %} Well done! You have just performed your first analysis in Galaxy. Additionally you can share your results and methods with others. - diff --git a/topics/introduction/tutorials/galaxy-intro-101-everyone/workflows/main_workflow.ga b/topics/introduction/tutorials/galaxy-intro-101-everyone/workflows/main_workflow.ga index 152ae7d2300bce..8b969e017681de 100644 --- a/topics/introduction/tutorials/galaxy-intro-101-everyone/workflows/main_workflow.ga +++ b/topics/introduction/tutorials/galaxy-intro-101-everyone/workflows/main_workflow.ga @@ -1,351 +1,435 @@ { - "uuid": "a9657758-d95c-4000-a257-c5fbafcb8cec", - "tags": [ - "introduction" - ], - "format-version": "0.1", - "name": "GTN Training: Galaxy 101 For Everyone", - "version": 1, - "steps": { - "0": { - "tool_id": null, - "tool_version": null, - "outputs": [], - "workflow_outputs": [], - "input_connections": {}, - "tool_state": "{\"name\": \"iris\"}", - "id": 0, - "uuid": "6a8d8ca9-8bb9-414b-af8f-50d07721b363", - "errors": null, - "name": "Input dataset", - "label": "iris", - "inputs": [ - { - "name": "iris", - "description": "" + "a_galaxy_workflow": "true", + "annotation": "introduction", + "format-version": "0.1", + "name": "GTN Training: Galaxy 101 For Everyone", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "iris" + } + ], + "label": "iris", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 405 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "6a8d8ca9-8bb9-414b-af8f-50d07721b363", + "workflow_outputs": [] + }, + "1": { + "annotation": "", + "content_id": "csv_to_tabular", + "errors": null, + "id": 1, + "input_connections": { + "csv": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Convert CSV to tabular", + "outputs": [ + { + "name": "tabular", + "type": "tabular" + } + ], + "position": { + "left": 439, + "top": 376 + }, + "post_job_actions": { + "HideDatasetActiontabular": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "tabular" + } + }, + "tool_id": "csv_to_tabular", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"csv\": {\"__class__\": \"ConnectedValue\"}, \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\"}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "f4c788f6-afb6-4350-9531-b6830601dbae", + "workflow_outputs": [] + }, + "2": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/datamash_ops/datamash_ops/1.1.0", + "errors": null, + "id": 2, + "input_connections": { + "in_file": { + "id": 1, + "output_name": "tabular" + } + }, + "inputs": [], + "label": null, + "name": "Datamash", + "outputs": [ + { + "name": "out_file", + "type": "tabular" + } + ], + "position": { + "left": 547, + "top": 200 + }, + "post_job_actions": { + "HideDatasetActionout_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "out_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/datamash_ops/datamash_ops/1.1.0", + "tool_shed_repository": { + "changeset_revision": "562f3c677828", + "name": "datamash_ops", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"operations\": [{\"__index__\": 0, \"op_name\": \"mean\", \"op_column\": \"1\"}, {\"__index__\": 1, \"op_name\": \"sstdev\", \"op_column\": \"1\"}, {\"__index__\": 2, \"op_name\": \"mean\", \"op_column\": \"2\"}, {\"__index__\": 3, \"op_name\": \"sstdev\", \"op_column\": \"2\"}, {\"__index__\": 4, \"op_name\": \"mean\", \"op_column\": \"3\"}, {\"__index__\": 5, \"op_name\": \"sstdev\", \"op_column\": \"3\"}, {\"__index__\": 6, \"op_name\": \"mean\", \"op_column\": \"4\"}, {\"__index__\": 7, \"op_name\": \"sstdev\", \"op_column\": \"4\"}], \"__page__\": null, \"ignore_case\": \"true\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"__rerun_remap_job_id__\": null, \"header_in\": \"true\", \"in_file\": {\"__class__\": \"ConnectedValue\"}, \"need_sort\": \"true\", \"print_full_line\": \"false\", \"header_out\": \"false\", \"grouping\": \"5\"}", + "tool_version": "1.1.0", + "type": "tool", + "uuid": "e1a58a79-5102-450e-bfe0-200f0e64139d", + "workflow_outputs": [] + }, + "3": { + "annotation": "", + "content_id": "Remove beginning1", + "errors": null, + "id": 3, + "input_connections": { + "input": { + "id": 1, + "output_name": "tabular" + } + }, + "inputs": [], + "label": null, + "name": "Remove beginning", + "outputs": [ + { + "name": "out_file1", + "type": "input" + } + ], + "position": { + "left": 740, + "top": 388 + }, + "post_job_actions": { + "HideDatasetActionout_file1": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "out_file1" + } + }, + "tool_id": "Remove beginning1", + "tool_state": "{\"input\": {\"__class__\": \"ConnectedValue\"}, \"__rerun_remap_job_id__\": null, \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"num_lines\": \"1\", \"__page__\": null}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "5a721290-088b-48c0-adf0-7645c84b6dfb", + "workflow_outputs": [] + }, + "4": { + "annotation": "", + "content_id": "Cut1", + "errors": null, + "id": 4, + "input_connections": { + "input": { + "id": 3, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Cut", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 967, + "top": 544 + }, + "post_job_actions": { + "HideDatasetActionout_file1": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "out_file1" + } + }, + "tool_id": "Cut1", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"delimiter\": \"T\", \"columnList\": \"c5\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\"}", + "tool_version": "1.0.2", + "type": "tool", + "uuid": "1a42cbbc-aa27-464c-be01-4a8cf10e7726", + "workflow_outputs": [] + }, + "5": { + "annotation": "", + "content_id": "Grouping1", + "errors": null, + "id": 5, + "input_connections": { + "input1": { + "id": 3, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Group", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 967, + "top": 664 + }, + "post_job_actions": { + "HideDatasetActionout_file1": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "out_file1" + } + }, + "tool_id": "Grouping1", + "tool_state": "{\"operations\": [], \"__page__\": null, \"input1\": {\"__class__\": \"ConnectedValue\"}, \"ignorelines\": null, \"groupcol\": \"5\", \"__rerun_remap_job_id__\": null, \"ignorecase\": \"false\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\"}", + "tool_version": "2.1.4", + "type": "tool", + "uuid": "dcd3ddc6-d871-45dd-94ed-3eae56dd56db", + "workflow_outputs": [] + }, + "6": { + "annotation": "", + "content_id": "Grouping1", + "errors": null, + "id": 6, + "input_connections": { + "input1": { + "id": 3, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Group", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 967, + "top": 784 + }, + "post_job_actions": { + "HideDatasetActionout_file1": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "out_file1" + } + }, + "tool_id": "Grouping1", + "tool_state": "{\"operations\": [{\"opcol\": \"1\", \"__index__\": 0, \"optype\": \"length\", \"opround\": \"no\", \"opdefault\": \"\"}], \"__page__\": null, \"input1\": {\"__class__\": \"ConnectedValue\"}, \"ignorelines\": null, \"groupcol\": \"5\", \"__rerun_remap_job_id__\": null, \"ignorecase\": \"false\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\"}", + "tool_version": "2.1.4", + "type": "tool", + "uuid": "285a3852-71cb-4137-be1d-b0ec0a59d9e9", + "workflow_outputs": [] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy1", + "errors": null, + "id": 7, + "input_connections": { + "input1": { + "id": 3, + "output_name": "out_file1" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Scatterplot w ggplot2", + "name": "input1" + } + ], + "label": null, + "name": "Scatterplot w ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + }, + { + "name": "output2", + "type": "pdf" + } + ], + "position": { + "left": 967, + "top": 904 + }, + "post_job_actions": { + "HideDatasetActionoutput1": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output1" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy1", + "tool_shed_repository": { + "changeset_revision": "9cec81e1b90e", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"axis_title_customization\": {\"__current_case__\": 0, \"axis_customization\": \"default\"}, \"plot_title_customization\": {\"__current_case__\": 0, \"axis_customization\": \"default\"}, \"transform\": \"none\", \"scaling\": {\"plot_scaling\": \"Automatic\", \"__current_case__\": 0}, \"theme\": \"bw\", \"points\": {\"pointcolor\": \"black\", \"alpha\": \"1.0\", \"pointoptions\": \"defined\", \"__current_case__\": 1, \"size\": \"2.0\"}, \"factor\": {\"factorcol\": \"5\", \"colororder\": \"1\", \"colors\": \"Set2\", \"__current_case__\": 1, \"factoring\": \"Single\"}, \"axis_text_customization\": {\"__current_case__\": 0, \"axis_customization\": \"default\"}, \"type\": \"points\", \"legend\": \"yes\", \"gridlinecust\": \"default\"}, \"xlab\": \"Sepal length\", \"input1\": {\"__class__\": \"RuntimeValue\"}, \"title\": \"Sepal length as a function of sepal width\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"1\", \"yplot\": \"2\", \"ylab\": \"Sepal width\", \"out\": {\"additional_output_format\": \"pdf\", \"width_output_dim\": \"7.0\", \"dpi_output_dim\": \"300.0\", \"height_output_dim\": \"7.0\", \"unit_output_dim\": \"in\"}}", + "tool_version": "2.2.1+galaxy1", + "type": "tool", + "uuid": "fa412209-5e3a-448e-8b0b-fa88870e19c1", + "workflow_outputs": [ + { + "label": null, + "output_name": "output2", + "uuid": "adcb2e3f-ee9a-41c5-9b5a-ceb2afcb5e7f" + } + ] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy1", + "errors": null, + "id": 8, + "input_connections": { + "input1": { + "id": 3, + "output_name": "out_file1" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Scatterplot w ggplot2", + "name": "input1" + } + ], + "label": null, + "name": "Scatterplot w ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + }, + { + "name": "output2", + "type": "pdf" + } + ], + "position": { + "left": 967, + "top": 1024 + }, + "post_job_actions": { + "HideDatasetActionoutput1": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output1" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy1", + "tool_shed_repository": { + "changeset_revision": "9cec81e1b90e", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"axis_title_customization\": {\"__current_case__\": 0, \"axis_customization\": \"default\"}, \"plot_title_customization\": {\"__current_case__\": 0, \"axis_customization\": \"default\"}, \"transform\": \"none\", \"scaling\": {\"plot_scaling\": \"Automatic\", \"__current_case__\": 0}, \"theme\": \"bw\", \"points\": {\"pointcolor\": \"black\", \"alpha\": \"1.0\", \"pointoptions\": \"defined\", \"__current_case__\": 1, \"size\": \"2.0\"}, \"factor\": {\"factorcol\": \"5\", \"colororder\": \"1\", \"colors\": \"Set2\", \"__current_case__\": 1, \"factoring\": \"Single\"}, \"axis_text_customization\": {\"__current_case__\": 0, \"axis_customization\": \"default\"}, \"type\": \"points\", \"legend\": \"yes\", \"gridlinecust\": \"default\"}, \"xlab\": \"Petal length\", \"input1\": {\"__class__\": \"RuntimeValue\"}, \"title\": \"Petal length as a function of petal width\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"3\", \"yplot\": \"4\", \"ylab\": \"Petal width\", \"out\": {\"additional_output_format\": \"pdf\", \"width_output_dim\": \"7.0\", \"dpi_output_dim\": \"300.0\", \"height_output_dim\": \"7.0\", \"unit_output_dim\": \"in\"}}", + "tool_version": "2.2.1+galaxy1", + "type": "tool", + "uuid": "8e7b3f8d-2b8b-46cb-93d4-0d74bf54441e", + "workflow_outputs": [ + { + "label": null, + "output_name": "output2", + "uuid": "a39df0d2-253a-4db2-b86d-9cbf0e5c1822" + } + ] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_sorted_uniq/1.1.0", + "errors": null, + "id": 9, + "input_connections": { + "infile": { + "id": 4, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Unique", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1187, + "top": 424 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_sorted_uniq/1.1.0", + "tool_shed_repository": { + "changeset_revision": "0a8c6b61f0f4", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"ignore_case\": \"false\", \"adv_opts\": {\"adv_opts_selector\": \"basic\", \"__current_case__\": 0}, \"__rerun_remap_job_id__\": null, \"is_numeric\": \"false\", \"chromInfo\": \"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\", \"infile\": {\"__class__\": \"ConnectedValue\"}}", + "tool_version": "1.1.0", + "type": "tool", + "uuid": "3e2d84e9-2fff-4321-9db6-41af99367162", + "workflow_outputs": [ + { + "label": null, + "output_name": "outfile", + "uuid": "ec39c0ad-eb26-47d6-b9a7-c2e5ffa043c6" + } + ] } - ], - "position": { - "top": 405, - "left": 200 - }, - "annotation": "", - "content_id": null, - "type": "data_input" }, - "1": { - "tool_id": "csv_to_tabular", - "tool_version": "1.0.0", - "outputs": [ - { - "type": "tabular", - "name": "tabular" - } - ], - "workflow_outputs": [], - "input_connections": { - "csv": { - "output_name": "output", - "id": 0 - } - }, - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"csv\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", - "id": 1, - "uuid": "f4c788f6-afb6-4350-9531-b6830601dbae", - "errors": null, - "name": "Convert CSV to tabular", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 376, - "left": 439 - }, - "annotation": "", - "content_id": "csv_to_tabular", - "type": "tool" - }, - "2": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/datamash_ops/datamash_ops/1.1.0", - "tool_version": "1.1.0", - "outputs": [ - { - "type": "tabular", - "name": "out_file" - } - ], - "workflow_outputs": [], - "input_connections": { - "in_file": { - "output_name": "tabular", - "id": 1 - } - }, - "tool_state": "{\"operations\": \"[{\\\"__index__\\\": 0, \\\"op_column\\\": \\\"1\\\", \\\"op_name\\\": \\\"mean\\\"}, {\\\"__index__\\\": 1, \\\"op_column\\\": \\\"1\\\", \\\"op_name\\\": \\\"sstdev\\\"}, {\\\"__index__\\\": 2, \\\"op_column\\\": \\\"2\\\", \\\"op_name\\\": \\\"mean\\\"}, {\\\"__index__\\\": 3, \\\"op_column\\\": \\\"2\\\", \\\"op_name\\\": \\\"sstdev\\\"}, {\\\"__index__\\\": 4, \\\"op_column\\\": \\\"3\\\", \\\"op_name\\\": \\\"mean\\\"}, {\\\"__index__\\\": 5, \\\"op_column\\\": \\\"3\\\", \\\"op_name\\\": \\\"sstdev\\\"}, {\\\"__index__\\\": 6, \\\"op_column\\\": \\\"4\\\", \\\"op_name\\\": \\\"mean\\\"}, {\\\"__index__\\\": 7, \\\"op_column\\\": \\\"4\\\", \\\"op_name\\\": \\\"sstdev\\\"}]\", \"__page__\": null, \"ignore_case\": \"\\\"true\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null, \"header_in\": \"\\\"true\\\"\", \"in_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"need_sort\": \"\\\"true\\\"\", \"print_full_line\": \"\\\"false\\\"\", \"header_out\": \"\\\"false\\\"\", \"grouping\": \"\\\"5\\\"\"}", - "id": 2, - "tool_shed_repository": { - "owner": "iuc", - "changeset_revision": "562f3c677828", - "name": "datamash_ops", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "e1a58a79-5102-450e-bfe0-200f0e64139d", - "errors": null, - "name": "Datamash", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 200, - "left": 547 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/datamash_ops/datamash_ops/1.1.0", - "type": "tool" - }, - "3": { - "tool_id": "Remove beginning1", - "tool_version": "1.0.0", - "outputs": [ - { - "type": "input", - "name": "out_file1" - } - ], - "workflow_outputs": [], - "input_connections": { - "input": { - "output_name": "tabular", - "id": 1 - } - }, - "tool_state": "{\"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"num_lines\": \"\\\"1\\\"\", \"__page__\": null}", - "id": 3, - "uuid": "5a721290-088b-48c0-adf0-7645c84b6dfb", - "errors": null, - "name": "Remove beginning", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 388, - "left": 740 - }, - "annotation": "", - "content_id": "Remove beginning1", - "type": "tool" - }, - "4": { - "tool_id": "Cut1", - "tool_version": "1.0.2", - "outputs": [ - { - "type": "tabular", - "name": "out_file1" - } - ], - "workflow_outputs": [], - "input_connections": { - "input": { - "output_name": "out_file1", - "id": 3 - } - }, - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"delimiter\": \"\\\"T\\\"\", \"columnList\": \"\\\"c5\\\"\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", - "id": 4, - "uuid": "1a42cbbc-aa27-464c-be01-4a8cf10e7726", - "errors": null, - "name": "Cut", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 544, - "left": 967 - }, - "annotation": "", - "content_id": "Cut1", - "type": "tool" - }, - "5": { - "tool_id": "Grouping1", - "tool_version": "2.1.3", - "outputs": [ - { - "type": "tabular", - "name": "out_file1" - } - ], - "workflow_outputs": [], - "input_connections": { - "input1": { - "output_name": "out_file1", - "id": 3 - } - }, - "tool_state": "{\"operations\": \"[]\", \"__page__\": null, \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"ignorelines\": \"null\", \"groupcol\": \"\\\"5\\\"\", \"__rerun_remap_job_id__\": null, \"ignorecase\": \"\\\"false\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", - "id": 5, - "uuid": "dcd3ddc6-d871-45dd-94ed-3eae56dd56db", - "errors": null, - "name": "Group", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 664, - "left": 967 - }, - "annotation": "", - "content_id": "Grouping1", - "type": "tool" - }, - "6": { - "tool_id": "Grouping1", - "tool_version": "2.1.3", - "outputs": [ - { - "type": "tabular", - "name": "out_file1" - } - ], - "workflow_outputs": [], - "input_connections": { - "input1": { - "output_name": "out_file1", - "id": 3 - } - }, - "tool_state": "{\"operations\": \"[{\\\"__index__\\\": 0, \\\"opcol\\\": \\\"1\\\", \\\"opdefault\\\": \\\"\\\", \\\"opround\\\": \\\"no\\\", \\\"optype\\\": \\\"length\\\"}]\", \"__page__\": null, \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"ignorelines\": \"null\", \"groupcol\": \"\\\"5\\\"\", \"__rerun_remap_job_id__\": null, \"ignorecase\": \"\\\"false\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", - "id": 6, - "uuid": "285a3852-71cb-4137-be1d-b0ec0a59d9e9", - "errors": null, - "name": "Group", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 784, - "left": 967 - }, - "annotation": "", - "content_id": "Grouping1", - "type": "tool" - }, - "7": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy1", - "tool_version": "2.2.1+galaxy1", - "outputs": [ - { - "type": "png", - "name": "output1" - } - ], - "workflow_outputs": [], - "input_connections": { - "input1": { - "output_name": "out_file1", - "id": 3 - } - }, - "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"5\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"Sepal length\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"Sepal length as a function of sepal width\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Sepal width\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", - "id": 7, - "tool_shed_repository": { - "owner": "iuc", - "changeset_revision": "9cec81e1b90e", - "name": "ggplot2_point", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "fa412209-5e3a-448e-8b0b-fa88870e19c1", - "errors": null, - "name": "Scatterplot w ggplot2", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 904, - "left": 967 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy1", - "type": "tool" - }, - "8": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy1", - "tool_version": "2.2.1+galaxy1", - "outputs": [ - { - "type": "png", - "name": "output1" - } - ], - "workflow_outputs": [], - "input_connections": { - "input1": { - "output_name": "out_file1", - "id": 3 - } - }, - "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"5\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"Petal length\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"Petal length as a function of petal width\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"3\\\"\", \"yplot\": \"\\\"4\\\"\", \"ylab\": \"\\\"Petal width\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", - "id": 8, - "tool_shed_repository": { - "owner": "iuc", - "changeset_revision": "9cec81e1b90e", - "name": "ggplot2_point", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "8e7b3f8d-2b8b-46cb-93d4-0d74bf54441e", - "errors": null, - "name": "Scatterplot w ggplot2", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 1024, - "left": 967 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy1", - "type": "tool" - }, - "9": { - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_sorted_uniq/1.1.0", - "tool_version": "1.1.0", - "outputs": [ - { - "type": "input", - "name": "outfile" - } - ], - "workflow_outputs": [], - "input_connections": { - "infile": { - "output_name": "out_file1", - "id": 4 - } - }, - "tool_state": "{\"__page__\": null, \"ignore_case\": \"\\\"false\\\"\", \"adv_opts\": \"{\\\"__current_case__\\\": 0, \\\"adv_opts_selector\\\": \\\"basic\\\"}\", \"__rerun_remap_job_id__\": null, \"is_numeric\": \"\\\"false\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"infile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", - "id": 9, - "tool_shed_repository": { - "owner": "bgruening", - "changeset_revision": "0a8c6b61f0f4", - "name": "text_processing", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "uuid": "3e2d84e9-2fff-4321-9db6-41af99367162", - "errors": null, - "name": "Unique", - "post_job_actions": {}, - "label": null, - "inputs": [], - "position": { - "top": 424, - "left": 1187 - }, - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_sorted_uniq/1.1.0", - "type": "tool" - } - }, - "annotation": "Galaxy 101 for everyone", - "a_galaxy_workflow": "true" -} \ No newline at end of file + "tags": [ + "introduction" + ], + "uuid": "4f508ea6-854b-4813-8043-848a259e32c2", + "version": 1 +} diff --git a/topics/introduction/tutorials/galaxy-intro-101/tutorial.md b/topics/introduction/tutorials/galaxy-intro-101/tutorial.md index 162f43e4706c6c..01ee35a3e6c849 100644 --- a/topics/introduction/tutorials/galaxy-intro-101/tutorial.md +++ b/topics/introduction/tutorials/galaxy-intro-101/tutorial.md @@ -231,7 +231,7 @@ Let's take a look at this dataset. The first six columns correspond to the exons > For the first 3 exons in your file, what is the number of SNPs that fall into that exon? > > > ### {% icon solution %} Solution -> > At the time of writing, for hg38/GENCODE v29, joined with "Common SNPs(151)", using <kbd>ctrl-f</kbd> to look for how many times each is used: +> > At the time of writing, for hg38/GENCODE v29, joined with "Common SNPs(151)", using <kbd>ctrl-f</kbd> (<kbd>cmd-f</kbd> on Mac OS) to look for how many times each is used: > > > > Gene | Occurences > > ---- | ---------- @@ -356,7 +356,11 @@ A good way to learn about these exons is to look at their genomic surrounding. T > > {% include snippets/change_dbkey.md dbkey="hg38" %} > -> 2. To **visualize the data in UCSC genome browser**, click on `display at UCSC main` option visible when you expand the history item. +> 2. Second, check that the **format** of your latest history dataset is `bed`. If not, click on the {% icon galaxy-pencil %} pencil icon and modify the **Datatype** field to `bed`. +> +> {% include snippets/change_datatype.md datatype="bed" %} +> +> 3. To **visualize the data in UCSC genome browser**, click on `display at UCSC main` option visible when you expand the history item. > > ![`display at UCSC main` link](../../images/101_displayucsc.png) > diff --git a/topics/introduction/tutorials/galaxy-intro-ngs-data-managment/tutorial.md b/topics/introduction/tutorials/galaxy-intro-ngs-data-managment/tutorial.md index cee91818fd0d83..ea467f1ba0a5d5 100644 --- a/topics/introduction/tutorials/galaxy-intro-ngs-data-managment/tutorial.md +++ b/topics/introduction/tutorials/galaxy-intro-ngs-data-managment/tutorial.md @@ -105,8 +105,7 @@ It is common to prepare pair-end and mate-pair sequencing libraries. This is hig | | |----| | ![Paired-end and mate-pair reads](../../images/pe_mp.png) | -|<small>**Paired-end and mate-pair reads**. In paired end sequencing (left) the actual ends of rather short DNA molecules (less than 1kb) are determined, while for mate pair sequencing (right) the ends of long molecules are joined and prepared in special sequencing libraries. In these mate pair protocols, the ends of long, size-selected molecules are connected with an internal adapter sequence (i.e. linker, yellow) in a circularization reaction. The circular molecule is then processed using restriction enzymes or fragmentation. Fragments are enriched for the linker and outer library adapters are added around the two combined molecule ends. The internal adapter can then be used as a second priming site for an additional sequencing reaction in the same orientation or sequencing can be performed from the second adapter, from the reverse strand. (From "Understanding and improving high-throughput -sequencing data production and analysis", Ph.D. dissertation by [Martin Kircher](https://www.qucosa.de/fileadmin/data/qucosa/documents/7110/pflichtexemplar_final.pdf))</small>| +|<small>**Paired-end and mate-pair reads**. In paired end sequencing (left) the actual ends of rather short DNA molecules (less than 1kb) are determined, while for mate pair sequencing (right) the ends of long molecules are joined and prepared in special sequencing libraries. In these mate pair protocols, the ends of long, size-selected molecules are connected with an internal adapter sequence (i.e. linker, yellow) in a circularization reaction. The circular molecule is then processed using restriction enzymes or fragmentation. Fragments are enriched for the linker and outer library adapters are added around the two combined molecule ends. The internal adapter can then be used as a second priming site for an additional sequencing reaction in the same orientation or sequencing can be performed from the second adapter, from the reverse strand. (From "Understanding and improving high-throughput sequencing data production and analysis", Ph.D. dissertation by [Martin Kircher](https://www.qucosa.de/fileadmin/data/qucosa/documents/7110/pflichtexemplar_final.pdf))</small>| Thus in both cases (paired-end and mate-pair) a single physical piece of DNA (or RNA in the case of RNA-seq) is sequenced from two ends and so generates two reads. These can be represented as separate files (two FASTQ files with first and second reads) or a single file were reads for each end are interleaved. Here are examples: diff --git a/topics/introduction/tutorials/galaxy-intro-short/tutorial.md b/topics/introduction/tutorials/galaxy-intro-short/tutorial.md index aa827d477eb415..70c49f4668c2b7 100644 --- a/topics/introduction/tutorials/galaxy-intro-short/tutorial.md +++ b/topics/introduction/tutorials/galaxy-intro-short/tutorial.md @@ -56,7 +56,7 @@ contributors: > > - The main Galaxy server is [usegalaxy.org](https://usegalaxy.org/) > > - The European Galaxy server is [usegalaxy.eu](https://usegalaxy.eu/) > > -> > You can also find more possible Galaxy servers at the top of this tutorial in **Galaxy instances** +> > You can also find more possible Galaxy servers at the top of this tutorial in **Available on these Galaxies** > {: .comment} {: .hands_on} @@ -192,10 +192,10 @@ Let's run a tool to filter out lower-quality reads from our FASTQ file. > ### {% icon hands_on %} Hands-on: Run another tool -> 1. Type **Filter by quality** +> 1. Type **Filter by quality** in the tools panel search box (top) > 2. Click on the tool **Filter by quality** {% icon tool %} > 3. Set the following parameters: -> - {% icon param-file %} *"Library to filter"*: the input FASTQ file +> - {% icon param-file %} *"Input FASTQ file"*: the input FASTQ file > - *"Quality cut-off value"*: 35 > - *"Percent of bases in sequence that must have quality equal to / higher than cut-off value"*: 80 > 4. Click **Execute** diff --git a/topics/metabolomics/images/BC_theo.png b/topics/metabolomics/images/lcms_BC_theo.png similarity index 100% rename from topics/metabolomics/images/BC_theo.png rename to topics/metabolomics/images/lcms_BC_theo.png diff --git a/topics/metabolomics/images/BC_theo2.png b/topics/metabolomics/images/lcms_BC_theo2.png similarity index 100% rename from topics/metabolomics/images/BC_theo2.png rename to topics/metabolomics/images/lcms_BC_theo2.png diff --git a/topics/metabolomics/images/BPC_9samp.png b/topics/metabolomics/images/lcms_BPC_9samp.png similarity index 100% rename from topics/metabolomics/images/BPC_9samp.png rename to topics/metabolomics/images/lcms_BPC_9samp.png diff --git a/topics/metabolomics/images/QM_9samp_raw.png b/topics/metabolomics/images/lcms_QM_9samp_raw.png similarity index 100% rename from topics/metabolomics/images/QM_9samp_raw.png rename to topics/metabolomics/images/lcms_QM_9samp_raw.png diff --git a/topics/metabolomics/images/group_9samp.png b/topics/metabolomics/images/lcms_group_9samp.png similarity index 100% rename from topics/metabolomics/images/group_9samp.png rename to topics/metabolomics/images/lcms_group_9samp.png diff --git a/topics/metabolomics/tutorials/lcms/tutorial.md b/topics/metabolomics/tutorials/lcms/tutorial.md index bafde43bc3c786..1594b4bc5f8a4b 100644 --- a/topics/metabolomics/tutorials/lcms/tutorial.md +++ b/topics/metabolomics/tutorials/lcms/tutorial.md @@ -43,7 +43,7 @@ for metabolomic analysis, and shows how to conduct metabolomic data analysis fro To illustrate this approach, we will use data from {% cite Thvenot2015 %}. The objectives of this paper was to analyze the influence of age, body mass index, and gender on the urine metabolome. To do so, the authors collected samples from 183 employees from the French Alternative Energies and Atomic Energy Commission (CEA) and performed LC-HRMS LTQ-Orbitrap -(negative ionization mode). +(negative ionization mode) analyses. Since the original dataset takes a few hours to be processed, we chose to take a limited subset of individuals for this tutorial. This will allow you to perform an example of metabolomic workflow, from pre-processing to annotation, in a limited time, even though @@ -177,16 +177,16 @@ What we referenced here as a *sampleMetadata* file corresponds to a table contai A sample metadata file contains various information for each of your raw files: - **Classes** which will be used during the preprocessing steps -- **Number of batches** which will be useful for a batch correction step, along with sample types (pool/sample) and injection order -- Different **experimental conditions** which can be used for the statistics +- **Analytical batches** which will be useful for a batch correction step, along with **sample types** (pool/sample) and **injection order** +- Different **experimental conditions** which can be used for statistics - Any information about samples that you want to keep, in a *column* format The content of your sample metadata file has to be filled by you, since it is not contained in your raw data. Note that you can either: - Upload an existing metadata file - Use a template to create one (because it can be painful to get the sample list without misspelling or omission) - 1. Generate a template with the tool **xcms get a sampleMetadata file** {% icon tool %} - 2. Fill it using your favorite table editor (Excel, LibreOffice) + 1. Generate a template with the **xcms get a sampleMetadata file** {% icon tool %} tool + 2. Fill it using your favorite table editor (Excel, LibreOffice etc.) 3. Upload it within Galaxy > ### {% icon tip %} Optional: Generate the right template with **xcms get a sampleMetadata file** {% icon tool %} @@ -219,7 +219,7 @@ use a spreadsheet software such as Microsoft Excel or LibreOffice. > ### {% icon comment %} Important: Save your table in the correct format > -> The file has to be a `.tsv` (tab-separated values). Neither `.xlsx` nor `.odt` are supported. +> The file has to be a `.txt`or a `.tsv` (tab-separated values). Neither `.xlsx` nor `.odt` are supported. > If you use a spreadsheet software, be sure to change the default format to **Text (Tab delimited)** or equivalent. {: .warning} @@ -227,7 +227,7 @@ Once your sampleMetadata table is ready, you can proceed to the upload. In this > ### {% icon tip %} Optional: Filling the *sampleMetadata* using the template obtained from Galaxy > -> For this tutorial, we already provide the *sampleMetadata* file, so you only have upload it to Galaxy. Below we +> For this tutorial, we already provide the *sampleMetadata* file, so you only have to upload it to Galaxy. Below we explain how we filled this file from the template we generated in Galaxy. > > First, we used **xcms get a sampleMetadata file** {% icon tool %} as mentioned in the previous tip box. @@ -288,7 +288,7 @@ be uploaded into Galaxy. > ### {% icon hands_on %} Hands-on: Upload the sampleMetada > -> 1. Import the `sampleMetadata_completed.tsv` file from Zenodo or from a shared data library +> 1. Import the `sampleMetadata_completed.tsv` file from Zenodo or from a shared data library (ask your instructor) > ``` > https://zenodo.org/record/3244991/files/sampleMetadata_completed.tsv > ``` @@ -304,42 +304,47 @@ be uploaded into Galaxy. > > ### {% icon comment %} Comment > > > > Here we provided the sampleMetadata file so we know that the upload led to a 'tabular' file. But from experience we also know that -it can happen that, when uploading a sampleMetadata table, user obtained other inappropriate types of data. This is generally due to the file +it can happen that, when uploading a sampleMetadata table, a user obtains other inappropriate types of data. This is generally due to the file not following all the requirements about the format (*e.g.* wrong separator, or lines with different numbers of columns). > > Thus, we highly recommend that you always take a second to check the data type after the upload. This way you can handle the problem -right away if you appear to get one of these obvious issues. +right away if you happen to get one of these obvious issues. > {: .comment} > +> 3. Rename your sampleMetadata file with a shorter name 'sampleMetadata_completed.tsv' > -> > ### {% icon question %} Question -> > -> > 1. How many columns should I have in my sampleMetadata file? -> > 2. What kind of class can I have? +> {% include snippets/rename_dataset.md %} +> +{: .hands_on} + +> ### {% icon question %} Question +> +> 1. How many columns should I have in my sampleMetadata file? +> 2. What kind of class can I have? +> +> > ### {% icon solution %} Solution > > -> > > ### {% icon solution %} Solution -> > > -> > > 1. At least 2, with the identifiers and the class column. But as many as you need to describe the potential variability of your samples -> (*e.g.* the person in charge of the sample preparation, the temperature...). The statistical analysis will expose the relevant parameters. -> > > 2. Sample, QC, blank... The class (the 2nd column) is useful for the preprocessing step with XCMS to detect the metabolite across the samples. -> So it can be important to separate very different types of samples, as biological ones and blank ones for example. If you don't have any specific class -> that you want to consider in XCMS preprocessing, just fill everywhere with `sample` or a dot `.` for example. -> > > -> > {: .solution} +> > 1. At least 2, with the identifiers and the class column. But as many as you need to describe the potential variability of your samples +(*e.g.* the person in charge of the sample preparation, the temperature...). The statistical analysis will expose the relevant parameters. +> > 2. Sample, QC, blank... The class (the 2nd column) is useful for the preprocessing step with XCMS to detect the metabolite across the samples. +So it can be important to separate very different types of samples, as biological ones and blank ones for example. If you don't have any specific class +that you want to consider in XCMS preprocessing, just fill everywhere with `sample` or a dot `.` for example. > > -> {: .question} -{: .hands_on} +> {: .solution} +> +{: .question} + ## Getting an overview of your samples' chromatograms You may be interested in getting an overview of what your samples' chromatograms look like, for example to see if some of -your samples have distinct overall characteristics, for example unexpected chromatographic peaks, or huge overall intensity. +your samples have distinct overall characteristics, *e.g.* unexpected chromatographic peaks or huge overall intensity. You can use the *sampleMedata* file we previously uploaded to add some group colours to your samples when visualising your chromatograms. The tool automatically takes the second column as colour groups when a file is provided. Note that you can also check the chromatograms at any moment during the workflow, in particular at the following steps: - - After **MSnbase readMSData** {% icon tool %}: to help you to define retention time ranges that you may want to discard from the very beginning (*"Specta Filters"* in **findChromPeaks** {% icon tool %}) - - After **adjustRtime** {% icon tool %}: to check the result of the correction (rerun *adjustRtime* with other settings) + - After **MSnbase readMSData** {% icon tool %} to help you to define retention time ranges that you may want to discard from the very beginning (*"Specta Filters"* in **findChromPeaks** {% icon tool %}) + - After **adjustRtime** {% icon tool %} to check the result of the correction (and potentially rerun *adjustRtime* with other settings) > ### {% icon hands_on %} Hands-on: xcms plot chromatogram > @@ -351,15 +356,16 @@ Note that you can also check the chromatograms at any moment during the workflow > > > ### {% icon comment %} Comment > > -> > If you use this tool at a later step of XCMS workflow and provided in the Merger step a sampleMetadata with a second column containing groups -(see further in this tutorial), you will get colouring according to these groups even without providing a sampleMetadata file as a 'plot chromatogram' parameter. +> > If you use this tool at a later step of XCMS workflow while having provided, in the Merger step (see further in this tutorial), a sampleMetadata with a second column containing groups, +you will get colouring according to these groups even without providing a sampleMetadata file as a 'plot chromatogram' parameter. > {: .comment} > {: .hands_on} -This tool generates Base Peak Intensity Chromatograms (BPIs) and Total Ion Chromatograms (TICs). If you provided groups like we do here, you obtain two plots: one with colours based on provided groups, one with one colour per sample. +This tool generates Base Peak Intensity Chromatograms (BPIs) and Total Ion Chromatograms (TICs). If you provide groups as we do here, you obtain two plots: +one with colours based on provided groups, one with one colour per sample. -![Base Peak Intensity Chromatograms](../../images/BPC_9samp.png) +![Base Peak Intensity Chromatograms](../../images/lcms_BPC_9samp.png) ## First XCMS step: *peak picking* @@ -370,7 +376,7 @@ independently. The idea here is, for each peak, to proceed to chromatographic pe The XCMS solution provides two different algorithms to perform chromatographic peak detection: *matchedFilter* and *centWave*. The matchedFilter strategy is the first one provided by the XCMS R package. It is compatible with any LC-MS device, but was developed at a time when high resolution mass spectrometry was not common standard yet. On the -other side, the **centWave** algorithm {% cite Tautenhahn2008 %} was specifically developed for high resolution mass spectrometry, dedicated to +other side, the **centWave** algorithm ({% cite Tautenhahn2008 %}) was specifically developed for high resolution mass spectrometry, dedicated to data in centroid mode. In this tutorial, you will practice using the centWave algorithm. @@ -413,17 +419,17 @@ ranges, or *Noise filter* (as in this hands-on) not to use low intensity measure > {: .hands_on} -At this step, you obtained a dataset collection containing one `RData` file per sample, with independent lists of ions. Although this -is already a nice result, what you may want now is to get all this files together to identify which are the shared ions between samples. +At this step, you obtain a dataset collection containing one `RData` file per sample, with independent lists of ions. Although this +is already a nice result, what you may want now is to get all this files together to identify which ions are shared between samples. To do so, XCMS provides a function that is called *groupChromPeaks* (or group). But before proceeding to this grouping step, first you need to group your individual RData files into a single one. -## Merge the different samples in one dataset +## Gathering the different samples in one Rdata file A dedicated tool exists to merge the different `RData` files into a single one: **xcms findChromPeaks Merger** {% icon tool %}. Although you can simply take as input your dataset collection alone, the tool also provides de possibility to take into account a sampleMetadata file. Indeed, -depending of your analytical sequence, you may want to treat part of your samples a different way when proceeding to the grouping step **xcms groupChromPeaks (group)** {% icon tool %}. +depending of your analytical sequence, you may want to treat part of your samples a different way when proceeding to the grouping step using **xcms groupChromPeaks (group)** {% icon tool %}. This can be the case for example if you have in your analytical sequence some blank samples (your injection solvent) that you want to extract along with your biological samples to be able to use them as a reference for noise estimation and noise filtering. The fact that @@ -454,7 +460,7 @@ To obtain such a table, we need to determine, among the individual ion lists, wh 'grouping'. The group function aligns ions extracted with close retention time and close m/z values in the different samples. In order to define this -similarity, we have to define on one hand a m/z windows and on the other hand a retention time window. A binning is then performed in the +similarity, we have to define on one hand a m/z window and on the other hand a retention time window. A binning is then performed in the mass domain. The size of the bins is called width of overlapping m/z slices. You have to set it according to your mass spectrometer resolution. Then, a kernel density estimator algorithm is used to detect region of retention time with high density of ions. This algorithm uses a Gaussian @@ -475,16 +481,16 @@ than a given number of samples. Either a percentage of the total number of sampl {: .hands_on} -This grouping step is very important because it defines the final data matrix which will be used especially for the statistical analyses. +This grouping step is very important because it defines the data matrix which will be used especially for the statistical analyses. User has to check the effect of parameter values on the result. In order to check the result of the grouping function, a pdf file is created. It provides one plot per m/z slice found in the data. Each picture represents the peak density across samples, plotting the corresponding Gaussian model which width is defined by the bandwidth parameter. Each red -dot corresponds to a sample. The plot allows to assess the quality of alignment. The vertical grey line width is associated with the bandwidth parameter. +dot corresponds to a sample. The plot allows to assess the quality of alignment. The grey areas' width is associated with the bandwidth parameter. -Hear is an example of two m/z slides obtained from the hands-on: +Here is an example of two m/z slides obtained from the hands-on: -![plotChromPeakDensity.pdf](../../images/group_9samp.png) +![plotChromPeakDensity.pdf](../../images/lcms_group_9samp.png) > ### {% icon question %} Questions @@ -496,7 +502,7 @@ Hear is an example of two m/z slides obtained from the hands-on: > > > > 1. There are 3 peak groups in this m/z slice. The two peaks that are not assigned to peak groups are alone in their retention time area. Thus, the number of samples under the corresponding density peaks does not reach the minimum fraction of samples set by the user (0.5) to consider a peak group. -> > 2. If the bandwidth value had been set to a smaller value, the density peak width would have been smaller. With a small enough bandwidth value, +> > 2. If the bandwidth value had been set to a smaller value, the density peak width would have been smaller. With a small-enough bandwidth value, there could have been two density peaks instead of one under the current first density peak. Thus, the sample in line 5 would have been out of the previous peak group, thus not assigned to any peak group due to the 0.5 minimum fraction limit. > > @@ -504,6 +510,10 @@ previous peak group, thus not assigned to any peak group due to the 0.5 minimum > {: .question} +When looking at the plots from plotChromPeakDensity.pdf, we can notice that in some cases there seems to be a small drift of retention time for some samples. +This phenomenon is well known with LC-MS techniques. To be able to attribute correct groups for peaks, it may be needed to perform some retention time +correction accross samples. Thus, the idea is (when needed) to apply a retention time strategy on the output of your grouping step, then to perform +a second grouping step on the corrected data. ## Optional XCMS step: *retention time correction* @@ -536,13 +546,14 @@ The algorithm uses statistical smoothing methods. You can choose between linear > > > > If you have a very large number of samples (*e.g.* a thousand), it might be impossible to find peaks that are present in 100% of your samples. If that is the case and you still set a very high value for the minimum required fraction of samples, the tool can not complete successfully the retention -time correction. +time correction. A special attention should also be given to this parameter when you expect a large number of peaks not to be present in part of your samples +(*e.g.* when dealing with some blank samples). > {: .comment} > {: .hands_on} -This tool generates a plot output that you can use to visualise how retention time was apply across the samples and along the chromatogram. +This tool generates a plot output that you can use to visualise how retention time was applied across the samples and along the chromatogram. It also allows you to check whether the well behaved peaks were distributed homogeneously along the chromatogram. > ### {% icon tip %} Tip: Check the impact of RT correction using 'xcms plot chromatogram' @@ -567,7 +578,8 @@ correction by comparing the chromatogram you obtained previously to a new one ge The retention time correction step is not mandatory. However, when it is used retention time are modified. -Consequently, applying this step on your data requires to complete it with an additional 'grouping' step: **xcms groupChromPeaks (group)** +Consequently, applying this step on your data requires to complete it with an additional 'grouping' step using the +**xcms groupChromPeaks (group)** {% icon tool %} tool again. Parameters for this second group step are expected to be similar to the first group step. Nonetheless, since retention times are supposed to be less variable inside a same peak group now, in some cases it can be relevant to @@ -606,7 +618,7 @@ sample. What do you notice when looking at the intensity of the first ion regard > > ### {% icon solution %} Solution > > > > 1. The final grouping step led to 5815 ions. -> > 2. The first ion (M58T69) has an 'NA' value for the first sample (QC1_014). This is also the case for several other ions +> > 2. The first ion (M58T69) has a 'NA' value for the first sample (QC1_014). This is also the case for several other ions and samples. > > > {: .solution} @@ -627,7 +639,8 @@ of NAs in your data. Indeed, this will allow you to check whether your results a may want to go back to some of your parameter choices in previous XCMS steps. > To perform your NA diagnosis, you can use the variableMetadata file and dataMatrix file that you obtained with the last grouping step with the 'Get the Peak List' option to `Yes`. The variableMetadata file contains information about your ions: you will find information -about the number of peaks detected for each ion. The dataMatrix files contains the intensities for each ion and each sample. +about the number of peaks detected for each ion. The dataMatrix files contains the intensities for each ion and each sample; you can get +an overview of it using the **Intensity Check** {% icon tool %} module. {: .comment} @@ -660,8 +673,8 @@ your data: - A *dataMatrix* file (with the intensities) - A *variableMetadata* file (with information about ions such as retention times, m/z) -Nonetheless, before proceeding with the next step in the workflow (processing and filtering of your data), you can add an optional step -with **CAMERA.annotate** {% icon tool %}. This tool uses the CAMERA R package to perform a first annotation of your data based on XCMS outputs. +Nonetheless, before proceeding with the next step in the workflow (processing and filtering of your data), you can add an optional step with the +**CAMERA.annotate** {% icon tool %} module. This tool uses the CAMERA R package to perform a first annotation of your data based on XCMS outputs. ## Annotation with CAMERA [Optional] @@ -669,11 +682,11 @@ with **CAMERA.annotate** {% icon tool %}. This tool uses the CAMERA R package to This last step provides annotation of isotopes, adducts and neutral losses. It gives also some basic univariate statistics in case you considered several groups for your XCMS extraction. -There is a huge number of parameters that will not be detailed in this short tutorial. However most of the default values are suitable -to run this function for a first attempt. Nevertheless, a few parameters have to be set at each run: +There is a huge number of parameters that will not be detailed in this short tutorial. However most of the default values can be kept here +for a first attempt to run this function. Nevertheless, a few parameters have to be set at each run: - The polarity has to be set since it affects annotation. - For statistical analysis, you have to define if you have two or more conditions to compare. These conditions had to be defined in the - sample metadata uploaded with your sample files. + sample metadata uploaded previously and taken into account in the XCMS workflow. - You can define how many significant ions will be used for extracted ions chromatogram (EIC) plot. These plots will be included in a pdf file. Apart from the PDF file, the main three outcomes from **CAMERA.annotate** {% icon tool %} are three columns added in the variableMetadata file: @@ -708,10 +721,10 @@ corresponding information in your variableMetadata file for later use. # Stopover: debriefing and preparation for next steps -At the end of the Preprocessing, you should have three tabulation-separated tables: - - A **sampleMetadata**: given and completed by the user - - A **dataMatrix**: from XCMS.fillChromPeaks - - A **variableMetadata** from either XCMS.fillChromPeaks or CAMERA.annotate +At the end of the Preprocessing step, you should have three tabulation-separated tables: + - A **sampleMetadata** file given and completed by the user + - A **dataMatrix** file from XCMS.fillChromPeaks + - A **variableMetadata** file from either XCMS.fillChromPeaks or CAMERA.annotate Concerning the **sampleMetadata** file, for the next steps of the workflow, there are four columns that are mandatory to go through all the analysis: - `injectionOrder`: a numerical column of injection order @@ -752,7 +765,7 @@ long and thus may reduce the names' readability. Hence, we highly recommend you # Data processing: quality checks, normalisation, data filtering -In the previous step of LC-MS workflow, you saw how to extract features from your acquisition files. This data is +In the previous step of the LC-MS workflow, you saw how to extract features from your acquisition files. This data is shaped in a format allowing the use of various standard statistical methods. However, being able to perform a statistical analysis does not mean necessarily being able to highlight relevant information. Indeed, data are often affected by various sources of unwanted variability. It can limit the effectiveness of statistical methods, leading sometimes to @@ -771,7 +784,7 @@ In this tutorial, we chose to limit the data processing to 3 steps: ## Step 1: global variability in the data -Commonly, LC-MS analysis generates a significant number of variables (hundreds to thousands). Getting a complete view of +Commonly, LC-MS analyses generate a significant number of variables (hundreds to thousands). Getting a complete view of such dataset may not be an easy task, but getting a glimpse of it is possible using some common unsupervised multivariate analysis. One of the most commonly used method is the **Principal Components Analysis** (PCA). You can get a basic PCA along with over useful information using the **Quality Metrics** {% icon tool %} tool. @@ -787,14 +800,14 @@ over useful information using the **Quality Metrics** {% icon tool %} tool. For a first overview of your data, you can focus on the graphical output of this tool: **Quality_Metrics_figure.pdf**. It provides a variety of useful information: - - Summary of the intensities in the dataMatrix file - - View of these intensities with a color scale - - 2-components PCA score plot to check for clusters or outliers - - Sum of intensities per sample according to injection order to check the presence of signal drift or batch effect - - Z-scores for intensity distribution and proportion of missing values - - Ions' standard deviation (sd) and mean values + - Summary of the intensities in the dataMatrix file (information.txt file and plot top center paragraph) + - View of these intensities with a color scale (plot bottom right panel) + - 2-components PCA score plot to check for clusters or outliers (plot top left panel) + - Sum of intensities per sample according to injection order to check the presence of signal drift or batch effect (plot top center panel) + - Z-scores for intensity distribution and proportion of missing values (plot bottom left panel) + - Ions' standard deviation (sd) and mean values (plot top right panel) -![Quality_Metrics_figure.pdf](../../images/QM_9samp_raw.png) +![Quality_Metrics_figure.pdf](../../images/lcms_QM_9samp_raw.png) > ### {% icon question %} Question time: cross-referencing information > @@ -814,7 +827,7 @@ there are no biological differences. Thus, comparing samples becomes difficult a Consequently, with only a quarter of the ions being stable regarding pool intensities, performing statistical analyses on this full dataset would probably lead to unreliable results. > > 2. We can see in the figure that the global intensity of samples seems to decrease with the injection order. In particular, -the fact that the pooled samples' intensities decreases leads us to suspect a signal drift due to the clogging effect of successive +the fact that the pooled samples' intensities decrease leads us to suspect a signal drift due to the clogging effect of successive injection of samples. > > This signal drift could be the reason why so many ions in the dataset led to high CV values for pools, since it prevents at least part of the ions to be stable regarding pools' intensities. @@ -828,16 +841,16 @@ the dataset may be due to the signal drift. > {: .question} -## Step 2: handling the signal drift observed although the analytical sequence +## Step 2: handling the signal drift observed all through the analytical sequence It is known that when injecting successively a large number of samples, the system tends to get dirty, and this may cause a measure drift. To prevent inability to catch signal anymore, in case of large injection series, the sequence is generally divided into several batches and the source is cleaned between batches. Unfortunately, these signal drift and batch design can add significant variability in data, making sample comparison complicated. In case data is impacted by these effects, it is highly recommended to normalise the data to get -rid of these unwanted effects. +rid of these unwanted variabilities. -In our case study, we saw that the data seemed to be affected by signal drift. Thus, we will use **Batch_correction** {% icon tool %} to -get rid of it. +In our case study, we saw that the data seemed to be affected by signal drift. Thus, we will use the **Batch_correction** {% icon tool %} tool +to get rid of it. > ### {% icon hands_on %} Hands-on: Data normalisation > @@ -849,7 +862,7 @@ get rid of it. > - *"Factor of interest "*: `gender` > > > ### {% icon comment %} Comment -> > The choice of the type of regression model to use depends on several parameters. +> > The choice of type of regression model to use depends on several parameters. > > In this case-study, since we only have 3 pools, there are only two possible choices: *linear* or *all loess sample* > > When possible, we recommend to use pools to correct the signal drift, that is why we chose to run the tool with *linear*. > {: .comment} @@ -860,12 +873,12 @@ get rid of it. For each ion independently, the normalisation process works as described in the following picture: -![How this works](../../images/BC_theo.png) +![How this works](../../images/lcms_BC_theo.png) The methodology is meant to correct for signal drift. In the tool, it is combined with a correction for batch effect. Thus, if your -sequence is divided into several batches, the idea is to obtain something like the following: +sequence is divided into several batches, the idea is to obtain something similar to the following picture: -![Before/after picture](../../images/BC_theo2.png) +![Before/after picture](../../images/lcms_BC_theo2.png) In the case of *linear* regression model, the tool performs some tests before applying the normalisation for quality purposes. For some ions, if the normalisation process would have led to inconsistent results, the concerned ions are not corrected for signal drift. @@ -902,7 +915,7 @@ by biological variability. Thus, we can filter the ions that do not respect this {: .hands_on} The tool provides a variableMetadata tabular output, containing all the computed CV values. You can then use these values to filter -your data using **Generic_Filter** {% icon tool %}. +your data using the **Generic_Filter** {% icon tool %} tool. > ### {% icon hands_on %} Hands-on: Data filtering @@ -939,15 +952,21 @@ statistical analysis, and you do not need the pools anymore since they do not pa > ### {% icon question %} Questions > -> 1. What does the *1.0* threshold mean in the hands-on exercise you just executed? -> 2. How many variables are left in your dataset? How many samples? +> 1. What does the *0.3* threshold mean in the hands-on exercise you just executed? +> 2. What does the *1.0* threshold mean in the hands-on exercise you just executed? +> 3. How many variables are left in your dataset? How many samples? > > > ### {% icon solution %} Solution > > -> > 1. The *1.0* value corresponds to the maximum value kept in the dataset ('Interval of values to remove: *upper*') regarding the +> > 1. The *0.3* value corresponds to the maximum value kept in the dataset ('Interval of values to remove: *upper*') regarding the +*poolCV* column in your *Variable metadata* file. As mentioned previously in 'Step 1: global variability in the data' section, +pool CV values are commonly considered as reflecting unstable ions when superior to 0.3. +Although the signal drift correction decreased the proportion of ions with pool CV > 30% from 74% to 53%, we still need to get +rid of these remaining unstable ions for which sample comparisons would be difficult and at high risk of being unreliable. +> > 2. The *1.0* value corresponds to the maximum value kept in the dataset ('Interval of values to remove: *upper*') regarding the *poolCV_over_sampleCV* column in your *Variable metadata* file. This means that any ion with a pool CV / sample CV ratio above 1 (*i.e.* a pool CV greater than the sample CV) is discarded from the dataset. -> > 2. Filtering led to 2706 ions and 6 samples. +> > 3. Filtering led to 2706 ions and 6 samples. > > > {: .solution} > @@ -955,7 +974,6 @@ statistical analysis, and you do not need the pools anymore since they do not pa - # Statistical analysis to find variables of interest The question of data filtering and correction must be addressed in all projects, even thought in some cases it may lead to @@ -969,15 +987,15 @@ that the choice of your statistical analysis strategy depends on both your data dataset size) and your study design. You should think carefully about what is appropriate for your own project. In this tutorial, we will take the example of univariate analysis, using the `bmi` column of the **sampleMetadata file** as -our variable of interest (body mass index). Since this variable is quantitative, we will chose in this example to measure -the link between the BMI and the measured ions using **statistical correlation calculation**. For more examples of +the study's biological factor investigated (body mass index). Since this variable is quantitative, we will chose in this example to measure +the link between the BMI and the measured ions using a **statistical correlation calculation**. For more examples of statistical analysis performed on LC-MS data, you can take a few minutes to watch the [usemetabo.org](https://usemetabo.org) open course video [here](https://usemetabo.org/courses/w4mlc-ms-statistical-analysis). ## Computation of statistical indices -First step is to compute the correlation coefficients used to estimate the link between the variable of interest `bmi` -and the ions that we have in our dataset. For this calculation we can use **Univariate** {% icon tool %}. +The first step is to compute the correlation coefficients used to estimate the link between the biological variable `bmi` +and the ions that we have in our dataset. For this calculation we can use the **Univariate** {% icon tool %} tool. > ### {% icon hands_on %} Hands-on: Statistical analysis > @@ -995,8 +1013,8 @@ and the ions that we have in our dataset. For this calculation we can use **Univ based on a relevant statistical strategy (which would more likely be to *use* multiple testing correction). It is based on the fact that with only 6 biological samples in a dataset of 2706 ions it is almost impossible to settle for correlation coefficients significantly different from zero. Consequently, to illustrate better the filtering step that will follow, -we chose not to apply the multiple testing correction, allowing us to obtain 'significant' results regarding statistical -indices. +we chose not to apply the multiple testing correction, allowing us to obtain something that looks like 'significant' results +regarding statistical indices. > {: .comment} > {: .hands_on} @@ -1026,7 +1044,7 @@ generally associated with thresholds allowing us to determine which ions should In our example of correlation analysis, two indices can be used to filter the data. - **P-values:** it indicates whether it is likely for a given correlation coefficient not to be actually different from zero; considering a threshold of 0.05 generally corresponds to a misleading risk of 5%. - - **Correlation coefficient:** it indicates if the correlation between a given ion and the variable of interest is strong or not; + - **Correlation coefficient:** it indicates if the correlation between a given ion and the biological factor is strong or not; it goes from -1 to 1, with 0 meaning no correlation; in our example we consider as a sufficiently strong link a coefficient with absolute value above 0.9. @@ -1063,7 +1081,7 @@ In this tutorial, the statistical filtering led to 25 remaining ions, linked to # Annotation -Now that you have a short list of interesting ions, you may be interested in knowing from which molecules these ions come from. +Now that you have a short list of interesting ions, you may be interested in knowing which molecules these ions come from. Identification is generally a difficult and time-consuming step. To help you in that process or to get a potential first glance of the nature of your selected subset, annotation can be a first valuable step. @@ -1072,8 +1090,9 @@ it can help you save a lot of time giving you hints about what to search for. Th reference mass bank face to face. This will give you potential origins of your ions. To be able to perform annotation, you will 'only' need to gather the mass list of your subset of ions, a reference bank, and a tool -to proceed to the matching. The use of 'only' is tricky here, since the subset of ions may be the only thing that is turnkey at this -step of the workflow (if you consider the previous steps are all cleared now). +to proceed to the matching. The use of 'only' is tricky here, since even the subset of ions to use may not be turnkey at this step +of the workflow (even if you consider the previous steps as cleared now, selected ions may not be the ones most appropriate to +get a foothold in annotation). For example, what may be the reference bank that you need for the annotation step? This is a crucial question. It exists a variety of online resources with well-known reference banks, but which one to choose? Some banks may have overlapping content, but also @@ -1083,7 +1102,8 @@ an adequate reference bank online. However, it is also possible that none of the case, you may need to construct your own database, to be able to search for relevant matches for your ions of interest. In this tutorial, we chose the 'easy' case of human urinary samples. Thus, one possibility we have is to use the online reference -bank HMDB (The Human Metabolome Database). Let's try requesting directly into this widely used bank using **HMDB MS search** {% icon tool %} +bank HMDB (The Human Metabolome Database). Let's try requesting directly into this widely used bank using the **HMDB MS search** +{% icon tool %} tool. > ### {% icon hands_on %} Hands-on: Annotating the data using the HMDB @@ -1100,7 +1120,7 @@ bank HMDB (The Human Metabolome Database). Let's try requesting directly into th {: .hands_on} Here, we tried to provide a Mass-to-charge ratio (*i.e.* a mass delta) based on what we globally know about the technique used to -analyze the samples. Even if this parameter may seems simple, it is important to settle with a relevant value. If you provide a +analyze the samples. Even if this parameter may seems simple, it is important to settle it with a relevant value. If you provide a value that is too low, you may not be able to have matches for your ions even though the original molecule is present in the database. On the opposite, if the value provided is too high, you may end with a huge number of matches, which could be time-consuming to review to identify relevant proposed annotation. diff --git a/topics/metagenomics/images/Krona.png b/topics/metagenomics/images/Krona.png deleted file mode 100644 index 4777ff35acaa73..00000000000000 Binary files a/topics/metagenomics/images/Krona.png and /dev/null differ diff --git a/topics/proteomics/images/maxquant_lfq_contaminants.png b/topics/proteomics/images/maxquant_lfq_contaminants.png new file mode 100644 index 00000000000000..1873a884ad5040 Binary files /dev/null and b/topics/proteomics/images/maxquant_lfq_contaminants.png differ diff --git a/topics/proteomics/images/maxquant_lfq_lcmsms.png b/topics/proteomics/images/maxquant_lfq_lcmsms.png new file mode 100644 index 00000000000000..f1f9ca41d3eda4 Binary files /dev/null and b/topics/proteomics/images/maxquant_lfq_lcmsms.png differ diff --git a/topics/proteomics/images/maxquant_lfq_missedcleavages.png b/topics/proteomics/images/maxquant_lfq_missedcleavages.png new file mode 100644 index 00000000000000..99b3b952fa2876 Binary files /dev/null and b/topics/proteomics/images/maxquant_lfq_missedcleavages.png differ diff --git a/topics/proteomics/images/maxquant_lfq_proteinid.png b/topics/proteomics/images/maxquant_lfq_proteinid.png new file mode 100644 index 00000000000000..d5a55607801182 Binary files /dev/null and b/topics/proteomics/images/maxquant_lfq_proteinid.png differ diff --git a/topics/proteomics/images/maxquant_lfq_quant_methods.png b/topics/proteomics/images/maxquant_lfq_quant_methods.png new file mode 100644 index 00000000000000..317630424fe7f0 Binary files /dev/null and b/topics/proteomics/images/maxquant_lfq_quant_methods.png differ diff --git a/topics/proteomics/images/maxquant_lfq_serum_composition.png b/topics/proteomics/images/maxquant_lfq_serum_composition.png new file mode 100644 index 00000000000000..4e30d554476caf Binary files /dev/null and b/topics/proteomics/images/maxquant_lfq_serum_composition.png differ diff --git a/topics/proteomics/images/maxquant_param_missedcl.png b/topics/proteomics/images/maxquant_param_missedcl.png new file mode 100644 index 00000000000000..8bd85e3c39abf9 Binary files /dev/null and b/topics/proteomics/images/maxquant_param_missedcl.png differ diff --git a/topics/proteomics/images/maxquant_ptxqc_overview.png b/topics/proteomics/images/maxquant_ptxqc_overview.png new file mode 100644 index 00000000000000..4e55bed9ea5d61 Binary files /dev/null and b/topics/proteomics/images/maxquant_ptxqc_overview.png differ diff --git a/topics/proteomics/tutorials/labelfree-vs-labelled/tutorial.md b/topics/proteomics/tutorials/labelfree-vs-labelled/tutorial.md index dc5eec53ed4ff2..8af183495c6090 100644 --- a/topics/proteomics/tutorials/labelfree-vs-labelled/tutorial.md +++ b/topics/proteomics/tutorials/labelfree-vs-labelled/tutorial.md @@ -3,6 +3,7 @@ layout: tutorial_hands_on title: "Label-free versus Labelled - How to Choose Your Quantitation Method" zenodo_link: "" +level: Introductory questions: - "What are benefits and drawbacks of different quantitation methods?" - "How to choose which quantitation method bests suits my need?" diff --git a/topics/proteomics/tutorials/maxquant-label-free/data-library.yaml b/topics/proteomics/tutorials/maxquant-label-free/data-library.yaml new file mode 100644 index 00000000000000..03ff8d47aa16d9 --- /dev/null +++ b/topics/proteomics/tutorials/maxquant-label-free/data-library.yaml @@ -0,0 +1,43 @@ +--- +destination: + type: library + name: GTN - Material + description: Galaxy Training Network Material + synopsis: Galaxy Training Network Material. See https://training.galaxyproject.org +items: +- name: Proteomics + description: Training material for proteomics workflows in Galaxy + items: + - name: Label-free data analysis using MaxQuant + items: + - name: '10.5281/zenodo.3774452' + description: latest + items: + - url: https://zenodo.org/record/3774452/files/Sample1.raw + src: url + ext: thermo.raw + info: https://zenodo.org/record/3774452 + - url: https://zenodo.org/record/3774452/files/Sample2.raw + src: url + ext: thermo.raw + info: https://zenodo.org/record/3774452 + - url: https://zenodo.org/record/3774452/files/Protein_database.fasta + src: url + ext: fasta + info: https://zenodo.org/record/3774452 + - url: https://zenodo.org/record/3774452/files/PTXQC_report.pdf + src: url + ext: pdf + info: https://zenodo.org/record/3774452 + - url: https://zenodo.org/record/3774452/files/MaxQuant_Protein_Groups.tabular + src: url + ext: tabular + info: https://zenodo.org/record/3774452 + - url: https://zenodo.org/record/3774452/files/MaxQuant_Peptides.tabular + src: url + ext: tabular + info: https://zenodo.org/record/3774452 + - url: https://zenodo.org/record/3774452/files/MaxQuant_mqpar.xml + src: url + ext: xml + info: https://zenodo.org/record/3774452 diff --git a/topics/proteomics/tutorials/maxquant-label-free/tutorial.bib b/topics/proteomics/tutorials/maxquant-label-free/tutorial.bib new file mode 100644 index 00000000000000..250783f5fa4590 --- /dev/null +++ b/topics/proteomics/tutorials/maxquant-label-free/tutorial.bib @@ -0,0 +1,41 @@ +@article{Cox2008, + doi = {10.1038/nbt.1511}, + url = {https://doi.org/10.1038/nbt.1511}, + year = {2008}, + month = nov, + publisher = {Springer Science and Business Media {LLC}}, + volume = {26}, + number = {12}, + pages = {1367--1372}, + author = {J\"{u}rgen Cox and Matthias Mann}, + title = {{MaxQuant} enables high peptide identification rates, individualized p.p.b.-range mass accuracies and proteome-wide protein quantification}, + journal = {Nature Biotechnology} +} + +@article{Geyer2017, + doi = {10.15252/msb.20156297}, + url = {https://doi.org/10.15252/msb.20156297}, + year = {2017}, + month = sep, + publisher = {{EMBO}}, + volume = {13}, + number = {9}, + pages = {942}, + author = {Philipp E Geyer and Lesca M Holdt and Daniel Teupser and Matthias Mann}, + title = {Revisiting biomarker discovery by plasma~proteomics}, + journal = {Molecular Systems Biology} +} + +@article{Bielow2015, + doi = {10.1021/acs.jproteome.5b00780}, + url = {https://doi.org/10.1021/acs.jproteome.5b00780}, + year = {2015}, + month = dec, + publisher = {American Chemical Society ({ACS})}, + volume = {15}, + number = {3}, + pages = {777--787}, + author = {Chris Bielow and Guido Mastrobuoni and Stefan Kempa}, + title = {Proteomics Quality Control: Quality Control Software for {MaxQuant} Results}, + journal = {Journal of Proteome Research} +} diff --git a/topics/proteomics/tutorials/maxquant-label-free/tutorial.md b/topics/proteomics/tutorials/maxquant-label-free/tutorial.md new file mode 100644 index 00000000000000..63809472adff83 --- /dev/null +++ b/topics/proteomics/tutorials/maxquant-label-free/tutorial.md @@ -0,0 +1,252 @@ +--- +layout: tutorial_hands_on + +title: Label-free data analysis using MaxQuant +zenodo_link: 'https://zenodo.org/record/3774452' +level: Introductory +questions: +- How to perform label-free analysis in Maxquant? +- Which are the most abundant proteins in serum? +- How successful was the depletion of those in our experiment? +objectives: +- Analysis of human serum proteome samples with label-free quantification in MaxQuant +time_estimation: 1H +key_points: +- MaxQuant offers a single tool solution for protein identification and quantification. +- Label-free quantitation reveals the most abundant proteins in serum samples. +contributors: +- foellmelanie +- matthias313 + +--- + + +# Introduction +{:.no_toc} + +The proteome refers to the entirety of proteins in a biological system (e.g cell, tissue, organism). Proteomics is the large-scale experimental analysis of proteins and proteomes, most often performed by mass spectrometry that enables great sensitivity and throughput. Especially for complex protein mixtures, bottom-up mass spectrometry is the standard approach. In bottom-up proteomics, proteins are digested with a specific protease into peptides and the measured peptides are *in silico* reassembled into the corresponding proteins. Inside the mass spectrometer, not only the peptides are measured (MS1 level), but the peptides are also fragmented into smaller peptides which are measured again (MS2 level). This is referred to as tandem-mass spectrometry (MS/MS). Identification of peptides is performed by peptide spectrum matching of the theoretical spectra generated from the input protein database (fasta file) with the measured spectra. Peptide quantification is most often performed by measuring the area under the curve of the MS1 level peptide peaks, but special techniques such as TMT allow to quantify peptides on MS2 level. Nowadays, bottom-up tandem-mass spectrometry approaches allow for the identification and quantification of several thousand proteins. + +![MQ_lcmsms](../../images/maxquant_lfq_lcmsms.png "Proteomics using liquid chromatography tandem-mass spectrometry (LC-MS/MS). Adapted from <a href="https://en.wikipedia.org/wiki/Tandem_mass_spectrometry#/media/File:MS_MS.png">wikipedia</a>.") + + +A plethora of software solutions were developed for the analysis of proteomics data. MaxQuant is one of the most popular proteomics softwares because it is an easy to use and free software that offers functionalities for nearly all kinds of proteomics data analysis challenges {% cite Cox2008 %}. Mass spectrometry raw data is normally obtained in a vendor specific, proprietary file format. MaxQuant can directly take those raw files as input. For peptide identification MaxQuant uses a search engine called "Andromeda". MaxQuant offers highly accurate functionalities for many different proteomics quantification strategies, e.g. label-free, SILAC, TMT. + +Blood is a commonly used biofluid for diagnostic procedures. The cell-free liquid blood portion is called plasma and after coagulation serum. Plasma and serum proteomics are frequently performed to find new biomarkers e.g. for diagnostic purposes and personalized medicine ({% cite Geyer2017 %}). Serum and Plasma proteomics are particularily challenging due to protein concentration differences in the orders of ten magnitudes. Therefore, most sample preparation protocols include a depletion step in which the most abundant proteins are (partially) depleted from the sample e.g. via columns with immobilized antibodies. + +This stand-alone tutorial introduces the data analysis from raw data files to protein identification and quantification of two label-free human serum samples with the MaxQuant software. One sample is a pure serum sample, while the other sample has been depleted for several abundant blood proteins. One of the questions in this tutorial is to find out which sample was depleted and which not. + +For more advanced proteomics workflows, please consult the OpenMS [identification]({{site.baseurl}}/topics/proteomics/tutorials/protein-id-oms/tutorial.html), [quantification]({{site.baseurl}}/topics/proteomics/tutorials/protein-quant-sil/tutorial.html) as well as [SearchGUI/PeptideShaker]({{site.baseurl}}/topics/proteomics/tutorials/protein-id-sg-ps/tutorial.html) tutorials. + + +> ### Agenda +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + +# Get data + +The serum proteomic samples and the fasta file for this training were deposited at [Zenodo](https://zenodo.org/record/3774452). It is of course possible to use other fasta files that contain human proteome sequences, but to ensure that the results are compatible we recommend to use the provided fasta file. MaxQuant not only adds known contaminants to the fasta file, but also generates the "decoy" hits for false discovery rate estimation itself, therefore the fasta file is not allowed to have decoy entries. To learn more about fasta files, have a look at [Protein FASTA Database Handling]({{site.baseurl}}/topics/proteomics/tutorials/database-handling/tutorial.html). + + +> ### {% icon hands_on %} Hands-on: Data upload +> +> 1. Create a new history for this tutorial and give it a meaningful name +> +> {% include snippets/create_new_history.md %} +> +> 2. Import the fasta and raw files from [Zenodo](https://zenodo.org/record/3774452) +> +> ``` +> https://zenodo.org/record/3774452/files/Protein_database.fasta +> https://zenodo.org/record/3774452/files/Sample1.raw +> https://zenodo.org/record/3774452/files/Sample2.raw +> ``` +> {% include snippets/import_via_link.md %} +> +> 3. Once the files are green, rename the raw datasets into 'sample1' and 'sample2' and the fasta file into 'protein database' +> {% include snippets/rename_dataset.md %} +> 4. Set the data type to thermo.raw for 'sample1' and 'sample2' +> +> {% include snippets/change_datatype.md datatype="thermo.raw" %} +> +{: .hands_on} + +# MaxQuant Analysis + +The MaxQuant Galaxy implementation contains the most important MaxQuant parameters. As an alternative, **MaxQuant (using mqpar.xml)** {% icon tool %} can be used with a preconfigured mqpar.xml file. We will explain the parameters after starting the MaxQuant run which takes some time to finish. + + +> ### {% icon hands_on %} Hands-on: MaxQuant analysis +> +> 1. **MaxQuant** {% icon tool %} with the following parameters: +> - In *"Input Options"*: +> - {% icon param-file %} *"FASTA files"*: `protein database` +> - In *"Search Options"*: +> - *"minimum unique peptides"*: `1` +> - In *"Parameter Group"*: +> - {% icon param-files %} *"Infiles"*: `sample1`, `sample2` +> - *"missed cleavages"*: `1` +> - *"variable modifications"*: ` ` +> - *"Quantitation Methods"*: `label free quantification` +> - *"Generate PTXQC (proteomics quality control pipeline) report?"*: `Yes` +> - In *"Output Options"*: +> - *"Select the desired outputs."*: `Protein Groups` `Peptides` `mqpar.xml` +> +> > ### {% icon comment %} Comment: Protein Groups +> > Proteins that share all their peptides with other proteins cannot be unambiguously identified. Therefore, MaxQuant groups such proteins into one protein group and only one common quantification will be calculated. The different protein properties are separated by semicolon. +> {: .comment} +{: .hands_on} + +## More details on MaxQuant Parameters + +The *"minimum peptide length"* defines the minimum number of amino acids a peptide should have to be included for protein identification and quantification. Below 7 amino acids a peptide cannot be unique and is therefore not informative, thus typical values are in the range 7-9. + +Several, even longer peptides are not unique, meaning that they are shared by several proteins e.g. when they are part of a common protein domain. During protein inference the peptides are statistically assembled into the corresponding proteins and the decision should be mainly based on the unique peptides. Therefore, we set *"min unique peptides"* to `1` - only proteins that have at least one unique peptide are reported in the output table. + +In most bottom-up proteomics experiments Trypsin is used as a protease because it has many advantages such as it's accurate cleavage specificity. Trypsin cleaves peptides c-terminal of Arginine (R) and Lysine (K), except when those are followed by Proline (P). Therefore, in MaxQuant the default *"enzyme"* is set to `Trypsin/P`. This trypsin specific cleavage rule is used by MaxQuant to perform an *in silico* digestion of the protein database that was provided in the fasta file. + +Protease digestion is not always complete, therefore we set the *"number of missed cleavages"* to `1`, meaning that the *in silico* digestion also includes peptides that have an additional Arginine or Lysine in their sequence. + +![MQ_param_missed](../../images/maxquant_param_missedcl.png "Trypsin specificity and missed cleavages. With one missed cleavage all three peptides will be part of the *in silico* peptide database") + +From the *in silico* generated peptide database the masses of the peptides are calculated and matched to the measured masses in order to identify them. A peptide's mass will change due to peptide modifications such as chemical labelling for example applied in different quantitation strategies or biological post translational modifications. Therefore, it is important to also include possible peptide modifications in the *in silico* generated peptide mass list. *"Fixed modifications"* are modifications that occur on every occurence of the specific amino acid. Those are often artificially introduced modifications such as Carbamidomethylation of cysteins (C) to prevent re-formation of the disulfid bridges. This is a common procedure in proteomics sample preparation and therefore also the default option in MaxQuant: `Carbamidomethyl (C)`. *"Variable modifications"* are modifications that do not occur on every amino acid such as Oxidation of Methionine might only occur on some Methionines and not all, but only a few peptide N-termini are acetylated. Variable modifications increase the *in silico* peptide database because each peptide's mass is calculated once with and once without the additional modification. To keep computation times as short as possible we did not use any variable modification this training, despite the MaxQuant defaults Oxidation of Methionine and Acetylation of N-termini would have been completely valid to use. + +MaxQuant supports different *"Quantitation Methods"*. The three main categories are `label-free quantification`, `label-based quantification` and `reporter ion MS2` quantification. In this tutorial we have chosen `label-free` because we did not apply any specific labeling/quantitation strategy to the samples. + +![MQ_quant_methods](../../images/maxquant_lfq_quant_methods.png "Overview of MaxQuant quantification methods") + +The PTXQC software ({% cite Bielow2015 %}) was built to enable direct proteomcs quality control from MaxQuant result files. This quality control can be directly used in the Galaxy MaxQuant wrapper by setting *"Generate PTXQC"* to `yes`. This will generate a pdf file with multiple quality control plots. Be aware that the cutoffs set in PTXQC might not be applicable to your experiment and mass spectrometer type and therefore "under performing" and "fail" do not necessarily mean that the quality is poor. + +![PTXQC_overview](../../images/maxquant_ptxqc_overview.png "Overview of PTXQC quality measures for sample1 and sample2") + + +MaxQuant automatically generates several output files. In the *"Output Options"* all or some of the output files can be selected. The protein information can be obtained by selecting `Protein Groups`, while the peptide information is obtained by choosing `Peptides`. The applied MaxQuant parameters are stored in the `mqpar.xml` This file can be re-used as an input file in the **MaxQuant (using mqpar.xml)** {% icon tool %}. + + +> ### {% icon details %} More MaxQuant parameters +> - The *"parse rules"* in the input section are applied to the fasta sequence headers. The default automatically extracts the Uniprot ID from fasta files that were downloaded from uniprot. Regular expressions can be adjusted to keep other information from the fasta file. +> +> - For pre-fractionated data an *"experimental design template"* has to be used. This has to be a tab-separated text file with a column for the fractions (e.g. 1-10) and a column for the experiment (sample1, sample2, sample3) and a column for post translational modifications (PTM). Examples are given in the help section of the MaxQuant tool. +> +> - *"Match between run"* allows to transfer identifications (peptide sequences) from one run to another. If the MS1 (full length peptide) signal is present in both runs, but was only selected for fragmentation in one of them, MaxQuant can transfer the resulting peptide sequence to the run where the MS1 peptide was not fragmented. The Information if a peptides was identified via fragmentation (MS/MS) or match between run (matching) can be found in the evidence output. +> +> - MaxQuant allows to process different raw files with different parameters. In this tutorial we have loaded both files into the same *"parameter group"* in order to process them with the same parameters. To apply different parameters, new parameter groups can be added by clicking on the {% icon param-repeat %} *"insert parameter group"* button. In each *"parameter group"* one or several raw files can be specified and for them only the parameter specified within this parameter group section are applied. +{: .details} + +> ### {% icon tip %} Tip: Continue with results from Zenodo +> +> In case the MaxQuant run is not yet finished, the results can be downloaded from Zenodo to be able to continue the tutorial +> 1. Import the files from [Zenodo](https://zenodo.org/record/3774452) +> +> ``` +> https://zenodo.org/record/3774452/files/PTXQC_report.pdf +> https://zenodo.org/record/3774452/files/MaxQuant_Protein_Groups.tabular +> https://zenodo.org/record/3774452/files/MaxQuant_Peptides.tabular +> https://zenodo.org/record/3774452/files/MaxQuant_mqpar.xml +> ``` +{: .tip} + +> ### {% icon question %} Questions +> +> 1. How many proteins were found in total? +> 2. How many peptides were found in total? +> 3. How many proteins identified and quantified? (Tipp: There is a tool called "filter data on any column", select the LFQ column for both files and remove rows containing "0") +> +> +> > ### {% icon solution %} Solution +> > +> > 1. 271 protein (groups) were found in total. +> > 2. 2387 peptides were found in total. +> > 3. Sample1: 237, Sample2: 123 (**filter data on any column** {% icon tool %} on the `protein groups` file *"with following condition"* `c32!=0` or `c33!=0` and *"Number of header lines" `1`) +> > +> {: .solution} +> +{: .question} + + +# Quality control results + +To get a first overview of the MaxQuant results, the PTXQC report is helpful. Click on the {% icon galaxy-eye %} eye of the PTXQC pdf file to open it in Galaxy. Screening through the different plots might already give you a hint which of the samples was pure and which was depleted of abundant proteins. Both samples failed in some categories (see Figure 4 above), especially due to low peptide and protein numbers, which is expected in serum samples and therefore not a quality problem. + +> ### {% icon question %} Questions +> +> 1. How good was the tryptic digestion (percentage of zero missed cleavages)? +> 2. Which sample yielded more protein identifications? +> 3. In which sample were more contaminantes quantified? +> 4. Do you already have a guess on which sample was depleted? +> +> +> > ### {% icon solution %} Solution +> > +> > 1. The digestion was not ideal but good enough to work with. The proportion of zero missed cleavages was 75% for sample1 and around 85% for sample2. ![PTXQC_missed](../../images/maxquant_lfq_missedcleavages.png) +> > 2. Sample 1 yielded more protein identifications ![PTXQC_ids](../../images/maxquant_lfq_proteinid.png) +> > 3. Sample 2 has more contaminants, especially serum albumin is high abundant. ![PTXQC_contaminants](../../images/maxquant_lfq_contaminants.png) +> > 4. Sample1, more information can be found in the next section. +> > +> {: .solution} + + +# Serum composition + +To explore the proteomic composition of the two serum samples some postprocessing steps are necessary. The protein groups file has many different columns, therefore the first step is to extract only columns that are of interest for this task. This are the columns with the fasta headers (this includes the protein name as it was written in the fasta file) and the two columns with LFQ intensities for both files. To find the most abundant proteins the LFQ intensities can be sorted. On this sorted dataset we will explore the composition of the serum proteins within both samples using an interactive pie charts diagram. + +> ### {% icon hands_on %} Hands-on: Exploring serum composition +> +> 1. **Cut columns from a table** {% icon tool %} with the following parameters: +> - *"Cut columns"*: `c8,c32,c33` +> - {% icon param-file %} *"From"*: `proteinGroups` (output of **MaxQuant** {% icon tool %}) +> +> 2. **Sort data in ascending or descending order** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Sort Query"*: `cut_file` (output of **Cut** {% icon tool %}) +> - *"Number of header lines"*: `1` +> - In *"Column selections"*: +> - *"on column"*: `c2` +> - *"in"*: `Descending order` +> - *"Flavor"*: `General numeric sort ( scientific notation -g)` +> +> 3. **Sort data in ascending or descending order** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Sort Query"*: `cut_file` (output of **Cut** {% icon tool %}) +> - *"Number of header lines"*: `1` +> - In *"Column selections"*: +> - *"on column"*: `c3` +> - *"in"*: `Descending order` +> - *"Flavor"*: `General numeric sort ( scientific notation -g)` +> 4. Click {% icon galaxy-barchart %} “Visualize this data” on the last **Sort** {% icon tool %} result. +> - Select `Pie chart (NVD3)` +> - *"Provide a title"*: `Serum compositions` +> - Click `Select data` {% icon galaxy-chart-select-data %} +> - *"Provide a label"*: `sample1` +> - *"Labels"*: `Column: 1` +> - *"Values"*: `Column: 2` +> - Click `Insert data series` +> - *"Provide a label"*: `sample2` +> - *"Labels"*: `Column: 1` +> - *"Values"*: `Column: 3` +> - Save {% icon galaxy-save %} (file is saved under "User" --> "Visualizations") +{: .hands_on} + + +![serum_composition](../../images/maxquant_lfq_serum_composition.png "Quantitative serum composition. In Galaxy one can hover over the graph to see the protein names") + + +> ### {% icon question %} Questions +> +> 1. What are the top 5 most abundant proteins in both files? Do they reflect typical serum proteins? +> 2. Which sample was depleted for the top serum proteins? +> 3. How much did the serum albumin abundance percentage decrease? Was the depletion overall succesful? +> +> > ### {% icon solution %} Solution +> > +> > 1. Sample1: Complement C4-A, Ceruloplasmin, Hemopexin, Serum albumin, Complement factor B. Sample2: Serum albumin, Immunoglobulin heavy constant gamma 1, Serotransferrin, Immunoglobulin kappa constant, Haptoglobin. All of those proteins are typical (high abundant) serum proteins [plasma proteins found by MS](https://www.proteinatlas.org/humanproteome/blood/proteins+detected+in+ms). +> > 2. Sample1 was depleted, sample2 was pure serum. +> > 3. In the depleted sample1, there is a depletion in some of the most abundant proteins, especially Albumin, which proportion of the total sample intensities decreased by 58 percentage. Compared to the pure serum the depleted sample showed a duplication of identified and quantified proteins rendering it quite successful. However, there is still room for improvement as some of the most abundant proteins which should have been depleted did not change their abundance compared to the overall protein abundance. +> > +> {: .solution} +> +{: .question} + + diff --git a/topics/proteomics/tutorials/maxquant-label-free/workflows/index.md b/topics/proteomics/tutorials/maxquant-label-free/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/proteomics/tutorials/maxquant-label-free/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/proteomics/tutorials/maxquant-label-free/workflows/maxquant_label_free.ga b/topics/proteomics/tutorials/maxquant-label-free/workflows/maxquant_label_free.ga new file mode 100644 index 00000000000000..3e3dcac8af3f4c --- /dev/null +++ b/topics/proteomics/tutorials/maxquant-label-free/workflows/maxquant_label_free.ga @@ -0,0 +1,265 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "Label-free quantification in MaxQuant", + "format-version": "0.1", + "name": "Maxquant_lfq_serum", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "sample1" + } + ], + "label": "sample1", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 189 + }, + "tool_id": null, + "tool_state": "{\"name\": \"sample1\"}", + "tool_version": null, + "type": "data_input", + "uuid": "b9140d52-823c-44a1-a317-e9efed37d9e5", + "workflow_outputs": [] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "sample2" + } + ], + "label": "sample2", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 201, + "top": 327 + }, + "tool_id": null, + "tool_state": "{\"name\": \"sample2\"}", + "tool_version": null, + "type": "data_input", + "uuid": "aa7fe2a8-8def-440f-bab3-2d30503286a9", + "workflow_outputs": [] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [], + "label": "Fasta file", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 206.61666870117188, + "top": 450.11669921875 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "7aa7bc43-1201-463b-b9c6-b782550dadf7", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "c2b015dc-bbf5-4460-8af5-3f45b5262b6c" + } + ] + }, + "3": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/galaxyp/maxquant/maxquant/1.6.10.43", + "errors": null, + "id": 3, + "input_connections": { + "input_opts|fasta_files": { + "id": 2, + "output_name": "output" + }, + "paramGroups_0|files": [ + { + "id": 1, + "output_name": "output" + }, + { + "id": 0, + "output_name": "output" + } + ] + }, + "inputs": [ + { + "description": "runtime parameter for tool MaxQuant", + "name": "search_opts" + } + ], + "label": null, + "name": "MaxQuant", + "outputs": [ + { + "name": "proteinGroups", + "type": "tabular" + }, + { + "name": "mqpar", + "type": "xml" + }, + { + "name": "peptides", + "type": "tabular" + }, + { + "name": "ptxqc_report", + "type": "pdf" + } + ], + "position": { + "left": 490, + "top": 195 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/galaxyp/maxquant/maxquant/1.6.10.43", + "tool_shed_repository": { + "changeset_revision": "7f432d87c82c", + "name": "maxquant", + "owner": "galaxyp", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"output_opts\": \"{\\\"dry_run\\\": \\\"false\\\", \\\"output\\\": [\\\"proteinGroups\\\", \\\"mqpar\\\", \\\"peptides\\\"]}\", \"__rerun_remap_job_id__\": null, \"paramGroups\": \"[{\\\"__index__\\\": 0, \\\"enzymes\\\": [\\\"Trypsin/P\\\"], \\\"files\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"fixedModifications\\\": [\\\"Carbamidomethyl (C)\\\"], \\\"maxMissedCleavages\\\": \\\"1\\\", \\\"quant_method\\\": {\\\"__current_case__\\\": 2, \\\"lfqAvEdgesPerNode\\\": \\\"6\\\", \\\"lfqMinEdgesPerNode\\\": \\\"3\\\", \\\"lfqMinRatioCount\\\": \\\"2\\\", \\\"lfqSkipNorm\\\": \\\"true\\\", \\\"select_quant_method\\\": \\\"lfq\\\"}, \\\"variableModifications\\\": null}]\", \"qc\": \"{\\\"__current_case__\\\": 0, \\\"do_it\\\": \\\"true\\\", \\\"evidence\\\": \\\"true\\\", \\\"msms\\\": \\\"true\\\", \\\"msmsscans\\\": \\\"true\\\", \\\"parameters\\\": \\\"true\\\", \\\"proteingroups\\\": \\\"true\\\", \\\"summary\\\": \\\"true\\\"}\", \"input_opts\": \"{\\\"description_parse_rule\\\": \\\"^>.*\\\\\\\\|.*\\\\\\\\|[^ ]+ (.*) OS.*$\\\", \\\"fasta_files\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"ftype\\\": \\\".thermo.raw\\\", \\\"identifier_parse_rule\\\": \\\"^>.*\\\\\\\\|(.*)\\\\\\\\|.*$\\\"}\", \"lfq_opts\": \"{\\\"advancedSiteIntensities\\\": \\\"true\\\", \\\"do_ibaq\\\": {\\\"__current_case__\\\": 1, \\\"ibaq\\\": \\\"False\\\"}, \\\"lfqRequireMsms\\\": \\\"true\\\", \\\"lfqStabilizeLargeRatios\\\": \\\"true\\\", \\\"separateLfq\\\": \\\"false\\\"}\", \"search_opts\": \"{\\\"calc_peak_properties\\\": \\\"false\\\", \\\"match_between_runs\\\": \\\"false\\\", \\\"max_peptide_mass\\\": \\\"4600\\\", \\\"min_peptide_len\\\": \\\"7\\\", \\\"min_unique_pep\\\": \\\"1\\\", \\\"template\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}\"}", + "tool_version": null, + "type": "tool", + "uuid": "5fb07b2a-da7c-4ac8-85ec-fd8ed99e8707", + "workflow_outputs": [] + }, + "4": { + "annotation": "", + "content_id": "Cut1", + "errors": null, + "id": 4, + "input_connections": { + "input": { + "id": 3, + "output_name": "proteinGroups" + } + }, + "inputs": [], + "label": null, + "name": "Cut", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 799, + "top": 184 + }, + "post_job_actions": {}, + "tool_id": "Cut1", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"delimiter\": \"\\\"T\\\"\", \"columnList\": \"\\\"c8,c32,c33\\\"\", \"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "tool_version": null, + "type": "tool", + "uuid": "851fb2bf-434f-4ade-b0d3-69ff35567daa", + "workflow_outputs": [] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_sort_header_tool/1.1.1", + "errors": null, + "id": 5, + "input_connections": { + "infile": { + "id": 4, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Sort", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1054, + "top": 194 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_sort_header_tool/1.1.1", + "tool_shed_repository": { + "changeset_revision": "74a8bef53a00", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"sortkeys\": \"[{\\\"__index__\\\": 0, \\\"column\\\": \\\"2\\\", \\\"order\\\": \\\"r\\\", \\\"style\\\": \\\"g\\\"}]\", \"__page__\": null, \"ignore_case\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null, \"header\": \"\\\"1\\\"\", \"unique\": \"\\\"false\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"infile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": null, + "type": "tool", + "uuid": "3dd97e27-9437-4390-a9e3-c8083dcdac56", + "workflow_outputs": [] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_sort_header_tool/1.1.1", + "errors": null, + "id": 6, + "input_connections": { + "infile": { + "id": 4, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Sort", + "outputs": [ + { + "name": "outfile", + "type": "input" + } + ], + "position": { + "left": 1053, + "top": 335 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_sort_header_tool/1.1.1", + "tool_shed_repository": { + "changeset_revision": "74a8bef53a00", + "name": "text_processing", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"sortkeys\": \"[{\\\"__index__\\\": 0, \\\"column\\\": \\\"3\\\", \\\"order\\\": \\\"r\\\", \\\"style\\\": \\\"g\\\"}]\", \"__page__\": null, \"ignore_case\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null, \"header\": \"\\\"1\\\"\", \"unique\": \"\\\"false\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"infile\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": null, + "type": "tool", + "uuid": "aa036605-c97c-47cd-be4b-39cc18b9887e", + "workflow_outputs": [] + } + }, + "tags": [ + "proteomics" + ], + "uuid": "99b62afb-14b2-48ad-a756-3bb342d12169", + "version": 3 +} diff --git a/topics/proteomics/tutorials/ntails/tutorial.md b/topics/proteomics/tutorials/ntails/tutorial.md index 88f5989e481862..71670bd3ac80bc 100644 --- a/topics/proteomics/tutorials/ntails/tutorial.md +++ b/topics/proteomics/tutorials/ntails/tutorial.md @@ -4,6 +4,7 @@ layout: tutorial_hands_on title: "Detection and quantitation of N-termini (degradomics) via N-TAILS" edam_ontology: "topic_0121" zenodo_link: "" +level: Intermediate questions: - "How can protein N-termini be enriched for LC-MS/MS?" - "How to analyze the LC-MS/MS data?" diff --git a/topics/proteomics/tutorials/protein-id-oms/tutorial.md b/topics/proteomics/tutorials/protein-id-oms/tutorial.md index a5674b1acd1275..eaacfdede95108 100644 --- a/topics/proteomics/tutorials/protein-id-oms/tutorial.md +++ b/topics/proteomics/tutorials/protein-id-oms/tutorial.md @@ -3,6 +3,7 @@ layout: tutorial_hands_on title: "Peptide and Protein ID using OpenMS tools" zenodo_link: "https://zenodo.org/record/546301" +level: Intermediate questions: - "How to convert LC-MS/MS raw files?" - "How to identify peptides?" diff --git a/topics/proteomics/tutorials/protein-id-sg-ps/tutorial.md b/topics/proteomics/tutorials/protein-id-sg-ps/tutorial.md index dfb6145b9e8ef6..cebff44b1b4a71 100644 --- a/topics/proteomics/tutorials/protein-id-sg-ps/tutorial.md +++ b/topics/proteomics/tutorials/protein-id-sg-ps/tutorial.md @@ -3,6 +3,7 @@ layout: tutorial_hands_on title: "Peptide and Protein ID using SearchGUI and PeptideShaker" zenodo_link: "https://zenodo.org/record/546301" +level: Introductory questions: - "How to convert LC-MS/MS raw files?" - "How to identify peptides?" diff --git a/topics/proteomics/tutorials/proteogenomics-dbsearch/tutorial.md b/topics/proteomics/tutorials/proteogenomics-dbsearch/tutorial.md index c68f6472373ac0..a7633695d45e20 100644 --- a/topics/proteomics/tutorials/proteogenomics-dbsearch/tutorial.md +++ b/topics/proteomics/tutorials/proteogenomics-dbsearch/tutorial.md @@ -293,7 +293,7 @@ Now that we have the list of known peptides, the query tabular tool is used to m > > 1. **Query Tabular** {% icon tool %} with the following parameters: > -> - {% icon param-repeat %} **Insert Database Table** (a): +> - {% icon param-repeat %} **Insert Database Table** (a): `output from group` > - Section **Table Options**: > - *"Tabular Dataset for Table"*: Uniprot > - *"Use first line as column names"* : `No` @@ -301,7 +301,8 @@ Now that we have the list of known peptides, the query tabular tool is used to m > - {% icon param-repeat %} **Insert Table Index**: > - *"Table Index"*: `No` > - *"Index on Columns"*: `Prot` -> - {% icon param-repeat %} **Insert Database Table** (b): +> +> - {% icon param-repeat %} **Insert Database Table** (b): `PSM report` > - Section **Filter Dataset Input**: > - {% icon param-repeat %} **Insert Filter Tabular Input Lines** > - *"Filter by"*: `skip leading lines` @@ -316,7 +317,7 @@ Now that we have the list of known peptides, the query tabular tool is used to m > - *"Table Index"*: `No` > - *"Index on Columns"*: `id` > -> - {% icon param-repeat %} **Insert Database Table** (c): +> - {% icon param-repeat %} **Insert Database Table** (c):`PSM report` > > - Section **Filter Dataset Input** > - {% icon param-repeat %} **Insert Filter Tabular Input Lines** diff --git a/topics/proteomics/tutorials/secretome-prediction/tutorial.md b/topics/proteomics/tutorials/secretome-prediction/tutorial.md index 153653e8b37eb7..12e5154cf30b8c 100644 --- a/topics/proteomics/tutorials/secretome-prediction/tutorial.md +++ b/topics/proteomics/tutorials/secretome-prediction/tutorial.md @@ -3,6 +3,7 @@ layout: tutorial_hands_on title: "Secretome Prediction" zenodo_link: "https://zenodo.org/record/519260" +level: Intermediate questions: - "How to predict cellular protein localization based upon GO-terms?" - "How to combine multiple localization predictions?" diff --git a/topics/sequence-analysis/tutorials/mapping/bam_explanation.md b/topics/sequence-analysis/tutorials/mapping/bam_explanation.md index baabf8c93d9415..0298c15a016cd8 100644 --- a/topics/sequence-analysis/tutorials/mapping/bam_explanation.md +++ b/topics/sequence-analysis/tutorials/mapping/bam_explanation.md @@ -1,4 +1,4 @@ -A BAM ([Binary Alignment Map](https://en.wikipedia.org/wiki/SAM_(file_format))) file is a compressed, binary file storing the sequences mapped to a reference sequence. +A BAM ([Binary Alignment Map](https://en.wikipedia.org/wiki/SAM_(file_format))) file is a compressed binary file storing the read sequences, whether they have been aligned to a reference sequence (e.g. a chromosome), and if so, the position on the reference sequence at which they have been aligned. > ### {% icon hands_on %} Hands-on: Inspect a BAM/SAM file > diff --git a/topics/sequence-analysis/tutorials/quality-control/tutorial.md b/topics/sequence-analysis/tutorials/quality-control/tutorial.md index e81d5913679edf..e6ba088bb2ad99 100644 --- a/topics/sequence-analysis/tutorials/quality-control/tutorial.md +++ b/topics/sequence-analysis/tutorials/quality-control/tutorial.md @@ -608,7 +608,7 @@ Paired-end sequencing generates 2 FASTQ files: - One file with the sequences corresponding to **forward** orientation of all the fragments - One file with the sequences corresponding to **reverse** orientation of all the fragments -Usually we recognize these two files which belong to one sample by the name which has the same identifier for the reads but a different extension, e.g. `sampleA_R1.fastq` for the forward reads and `sampleA_R2.fastq` for the reverse reads. It can also be `_r` or `_1` for the forward reads and `_f` or `_2` for the reverse reads. +Usually we recognize these two files which belong to one sample by the name which has the same identifier for the reads but a different extension, e.g. `sampleA_R1.fastq` for the forward reads and `sampleA_R2.fastq` for the reverse reads. It can also be `_f` or `_1` for the forward reads and `_r` or `_2` for the reverse reads. The data we analyzed in the previous step was not single-end data but the forward reads of paired-end data. We will now do the quality control on the reverse reads. @@ -686,7 +686,7 @@ After trimming, reverse reads will be shorter because of their quality and then > > > > > ### {% icon solution %} Solution > > > 1. 44,164 bp (`Quality-trimmed:`) for the forward reads and 138,638 bp for the reverse reads. -> > > 2. 1,376 sequences have been removed because at least one read was shorter than the length cutoff (334 when only the forward reads were analyzed). +> > > 2. 1,376 sequences have been removed because at least one read was shorter than the length cutoff (322 when only the forward reads were analyzed). > > {: .solution } > {: .question} > diff --git a/topics/statistics/images/confusion_matrix_dl.png b/topics/statistics/images/confusion_matrix_dl.png new file mode 100644 index 00000000000000..63e4645e063307 Binary files /dev/null and b/topics/statistics/images/confusion_matrix_dl.png differ diff --git a/topics/statistics/images/dl_bioinformatics.png b/topics/statistics/images/dl_bioinformatics.png new file mode 100644 index 00000000000000..da672a8a34b6e6 Binary files /dev/null and b/topics/statistics/images/dl_bioinformatics.png differ diff --git a/topics/statistics/images/eq1.png b/topics/statistics/images/eq1.png new file mode 100644 index 00000000000000..776a4db5c59d37 Binary files /dev/null and b/topics/statistics/images/eq1.png differ diff --git a/topics/statistics/images/eq2.png b/topics/statistics/images/eq2.png new file mode 100644 index 00000000000000..1caf72c103c1c7 Binary files /dev/null and b/topics/statistics/images/eq2.png differ diff --git a/topics/statistics/images/eq3.png b/topics/statistics/images/eq3.png new file mode 100644 index 00000000000000..d99acb79ae9990 Binary files /dev/null and b/topics/statistics/images/eq3.png differ diff --git a/topics/statistics/images/eq4.png b/topics/statistics/images/eq4.png new file mode 100644 index 00000000000000..6a9ca58e731d7e Binary files /dev/null and b/topics/statistics/images/eq4.png differ diff --git a/topics/statistics/images/eq5.png b/topics/statistics/images/eq5.png new file mode 100644 index 00000000000000..6c5a19bcf1908c Binary files /dev/null and b/topics/statistics/images/eq5.png differ diff --git a/topics/statistics/images/mse.png b/topics/statistics/images/mse.png new file mode 100644 index 00000000000000..a83ae4b00355bb Binary files /dev/null and b/topics/statistics/images/mse.png differ diff --git a/topics/statistics/images/neural_network.svg b/topics/statistics/images/neural_network.svg new file mode 100644 index 00000000000000..59819ff0dc61d7 --- /dev/null +++ b/topics/statistics/images/neural_network.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="541px" height="216px" viewBox="-0.5 -0.5 541 216" content="<mxfile host="app.diagrams.net" modified="2020-03-17T11:38:08.585Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" etag="ETx_IrMjDg9wMhkkbdDx" version="12.8.5" type="device"><diagram id="W_AOr77pK4ml164mJdII" name="Page-1">7ZxNd5s4FIZ/jZftQRJfXsZOOuminZ5JZ9pZKiDbOsHII+Ta7q8fYYTBEomJC4bUZJGgK3RBeh99XdkZoely+wfHq8UnFpJoBK1wO0K3IwgBchz5J7XsMosHlWHOaahuKgwP9CdRRktZ1zQkydGNgrFI0NWxMWBxTAJxZMOcs83xbTMWHT91hefEMDwEODKt32goFpnVd6zCfk/ofJE/GVgqZ4nzm5UhWeCQbUomdDdCU86YyK6W2ymJ0sbL2yUr9+GZ3MOLcRKLOgU+eb4IH6Z3/3z9OwnIcvL54/3TO+XlB47WqsJbZUrELm8D6Uc2t0xMNgsqyMMKB2nORioubQuxjGQKyEucrDINZnRL5GMnMxpFUxYxvneEXAuPgSftieDsiZRy4K3nypaTJVgsSvbZ/kfZP+AljVKOvtKlZAJan8lG/v6LLXGsblEAQVumVdUIF2T7bJuBgxISYcKWRPCdvEUVQEo7BS+0VXpToJCTsChRkNuwgm9+cFzoIy+URK+QC5pywUGu5+RCsGO5kCHXArTYvWYz4gZBlV6hN3486HV5XYDfs35kVwjTYkd6M8J03mMcUxh4jT3mIERfeoxbIcw19hhdmM57jGcIs2tPFstyLDKrksWywO1k2rsVge1p/cjvWC7fkMtUKw5v0p2LTAURThIaHItEtlR8L13/K6+t945K3aY1t/LELk/E8uW/lxOlUmmyKLZP5eWylyOhsUnSBJAVYGsekBdqnu/eMJ8TcWrRZApaUzBOIizoj+PXrVJRPeELo7IiBS/WMS821EDIqqlKlXdbuiNHGyc8zVHWDoajPVSHap/P2bhXnPWPMrtLyoA+u+tw1KUMjE84apmyPErTE8wuOZzBKwPNee87nu/ayHOh64/t49ENVWdfCkMzjNUhhqB/EHY6p+oQIn1xde5oZzhqGzMz/HYtox2qCZrTJ9De7rRqBg4vAloHwLhdAmPE988FBnYNjBnQvJaRyX4ToNkaH/6ZoCHrhKO2QTMDtA2BhuAJ1GTiC+FU1oDwvqy/6sLX6bRoHIudu/4yRjlfe5e24TOD0OfD9946AJcB6DUGoIT5BIL7lO6sQS6dmlx6XXL528TagBmDv8js2yAw7gDMJYExTwE+xqt1+oYR3skBQadHkK3QTmoiOo9TmKTU6QgySY9JaICjG5WxpGGYFp9wktCf+HHvKqVmldZqX09nMnJuU19rwZLs3AVUHMPUOLlR1fmVkxpt7wZcNYaV0Drs78psIet5jH7ppAaYIfR72aYkzlVKrlImUEOnqjGgNZ1yKEo6/bkWV96b7Drdyb6oTDVitMkCr9LLYM2j3YTj4CmdjE4dWnO2jsP0tPrQ3q88Zw4pJ4GgLBVaTiFp+7Ry9myZGlT1FH1Wa04CeG0SGB88y1cQ5W4wvmg3qBHa+7000EIfYGz2gssORFWxMjcSqkWOpHD/W7M84102qN/IG4C/2haZ8mq+1wfkfuR7Za6yjGucgIC2ToCwnux2a7JXRa4akR0Osheya1s0VPG5xcvKXhUzakR2NMheyK6HGEHXsleFZBqR3c79PPJC8QEEVcCIEHfNQdXnLRvhwBk4eClM4PRs+kdmlKAhENwBhJdA0I/Yux4RUFUcohEQvAGEl0Bwe7ZEQFXRkEZA8AcQXjE1dL5FQFUhmWYCAmAg4aXvUuWhoFd+ya09EtoLDVkDCa8gAaHWSJDJ4n8uZAe6xX+uQHf/Aw==</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g><ellipse cx="35" cy="100" rx="25" ry="25" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 100px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">x1</div></div></div></foreignObject><text x="35" y="107" fill="#ffffff" font-family="Times New Roman" font-size="24px" text-anchor="middle">x1</text></switch></g><ellipse cx="35" cy="180" rx="25" ry="25" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 180px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">x2</div></div></div></foreignObject><text x="35" y="187" fill="#ffffff" font-family="Times New Roman" font-size="24px" text-anchor="middle">x2</text></switch></g><ellipse cx="185" cy="100" rx="25" ry="25" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 100px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">h11</div></div></div></foreignObject><text x="185" y="107" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">h11</text></switch></g><ellipse cx="185" cy="180" rx="25" ry="25" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 180px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">h12</div></div></div></foreignObject><text x="185" y="187" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">h12</text></switch></g><ellipse cx="325" cy="100" rx="25" ry="25" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 100px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">h21</div></div></div></foreignObject><text x="325" y="107" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">h21</text></switch></g><ellipse cx="325" cy="180" rx="25" ry="25" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 180px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">h22</div></div></div></foreignObject><text x="325" y="187" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">h22</text></switch></g><ellipse cx="475" cy="140" rx="25" ry="25" fill="#0050ef" stroke="#001dbc" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 140px; margin-left: 451px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">y</div></div></div></foreignObject><text x="475" y="147" fill="#ffffff" font-family="Times New Roman" font-size="24px" text-anchor="middle">y</text></switch></g><path d="M 60 100 L 153.63 100" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 158.88 100 L 151.88 103.5 L 153.63 100 L 151.88 96.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 60 100 L 161.82 159.12" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 166.36 161.76 L 158.54 161.27 L 161.82 159.12 L 162.06 155.22 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 60 180 L 153.63 180" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 158.88 180 L 151.88 183.5 L 153.63 180 L 151.88 176.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 60 180 L 161.82 120.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 166.36 118.24 L 162.06 124.78 L 161.82 120.88 L 158.54 118.73 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 210 100 L 293.63 100" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 298.88 100 L 291.88 103.5 L 293.63 100 L 291.88 96.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 210 100 L 299.25 162.09" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 303.56 165.08 L 295.81 163.96 L 299.25 162.09 L 299.81 158.21 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 210 180 L 293.63 180" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 298.88 180 L 291.88 183.5 L 293.63 180 L 291.88 176.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 210 171.25 L 301.74 120.75" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 306.34 118.22 L 301.9 124.66 L 301.74 120.75 L 298.52 118.53 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 351.25 111.25 L 443.74 128.81" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 448.9 129.79 L 441.37 131.92 L 443.74 128.81 L 442.68 125.05 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 350 180 L 445.12 149.56" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 450.12 147.96 L 444.52 153.43 L 445.12 149.56 L 442.39 146.76 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="0" width="120" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 15px; margin-left: 60px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Input layer</div></div></div></foreignObject><text x="60" y="22" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">Input layer</text></switch></g><rect x="190" y="0" width="150" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 15px; margin-left: 265px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Hidden layers</div></div></div></foreignObject><text x="265" y="22" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">Hidden layers</text></switch></g><rect x="400" y="0" width="140" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 15px; margin-left: 470px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Output layer</div></div></div></foreignObject><text x="470" y="22" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">Output layer</text></switch></g><path d="M 485 25 L 480 25 Q 475 25 475 35 L 475 42.5 Q 475 50 470 50 L 467.5 50 Q 465 50 470 50 L 472.5 50 Q 475 50 475 60 L 475 67.5 Q 475 75 480 75 L 485 75" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,475,50)" pointer-events="all"/><path d="M 270 -45 L 262.5 -45 Q 255 -45 255 -35 L 255 40 Q 255 50 247.5 50 L 243.75 50 Q 240 50 247.5 50 L 251.25 50 Q 255 50 255 60 L 255 135 Q 255 145 262.5 145 L 270 145" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,255,50)" pointer-events="all"/><path d="M 55 25 L 47.5 25 Q 40 25 40 35 L 40 40 Q 40 45 32.5 45 L 28.75 45 Q 25 45 32.5 45 L 36.25 45 Q 40 45 40 55 L 40 60 Q 40 65 47.5 65 L 55 65" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,40,45)" pointer-events="all"/><rect x="90" y="60" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 80px; margin-left: 110px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w1</font></div></div></div></foreignObject><text x="110" y="87" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w1</text></switch></g><rect x="80" y="175" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 195px; margin-left: 100px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w2</font></div></div></div></foreignObject><text x="100" y="202" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w2</text></switch></g><rect x="110" y="145" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 165px; margin-left: 130px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w3</font></div></div></div></foreignObject><text x="130" y="172" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w3</text></switch></g><rect x="70" y="115" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 135px; margin-left: 90px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w4<br /></font></div></div></div></foreignObject><text x="90" y="142" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w4 </text></switch></g><rect x="230" y="60" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 80px; margin-left: 250px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w5<br /></font></div></div></div></foreignObject><text x="250" y="87" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w5 </text></switch></g><rect x="210" y="115" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 135px; margin-left: 230px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w6<br /></font></div></div></div></foreignObject><text x="230" y="142" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w6 </text></switch></g><rect x="240" y="145" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 165px; margin-left: 260px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w7<br /></font></div></div></div></foreignObject><text x="260" y="172" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w7 </text></switch></g><rect x="230" y="175" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 195px; margin-left: 250px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w8<br /></font></div></div></div></foreignObject><text x="250" y="202" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w8 </text></switch></g><rect x="375" y="75" width="50" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 95px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w11<br /></font></div></div></div></foreignObject><text x="400" y="102" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w11 </text></switch></g><rect x="375" y="165" width="50" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 185px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; "><font style="font-size: 18px">w10<br /></font></div></div></div></foreignObject><text x="400" y="192" fill="#000000" font-family="Times New Roman" font-size="24px" text-anchor="middle">w10 </text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file diff --git a/topics/statistics/images/neuron.svg b/topics/statistics/images/neuron.svg new file mode 100644 index 00000000000000..4808f7e71740d7 --- /dev/null +++ b/topics/statistics/images/neuron.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="401px" height="131px" viewBox="-0.5 -0.5 401 131" content="<mxfile host="app.diagrams.net" modified="2020-03-17T11:06:53.601Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" etag="htcrtkvA4cNAfUrcCMl2" version="12.8.5" type="device"><diagram id="2SUc8nDs9qSNDm78hpmj" name="Page-1">7VhdT9swFP01fQQ53+1j08ImTUNoncR4Ql7ittacOrgOSfn1u46dNF8wKCtU0/rQ5B7b1/Y9xzc3GTmzpPgkcLr+ymPCRjaKi5EzH9m25XgeXBSy00gQuBpYCRqbTntgQR+JAZFBMxqTbauj5JxJmrbBiG82JJItDAvB83a3JWftWVO8Ij1gEWHWR29oLNcaHXtoj38mdLWuZraQaUlw1dkA2zWOed6AnIuRMxOcS32XFDPCVPCquOhxl0+01gsTZCNfMoA8hrv41s3ozfQuQvzLfbrIzoyXB8wys+GR7TPwFy45uIVVy50JhX+f8arhbFsSNYUOtpsW+0YVYhy1B3ynCTBooyuSw/83nuBNc4C/Utcrkgm+qSaHXej5daMJYL0UG3YGAgAjzNdUkkWq58xBg4CtZcLAsuAWb1OtiiUtSKxWTxmbccZF6chZYn8MjDnhVgr+izRaZoHjlS1qIc0R5a9e1AMRkhRPUmLVRMMJITwhUuygixlgT4w2zOFwKtXne6lZjsHWTZlVIDbyXtW+9wqAGyOCVwjCHhBEN/ibeKpOFlgRw9stjdox74TYR3hiBUMhtueB3wh+db4gYCEpqPyh/J0j2zP2Ldjo3PcDY89VFFFl7BrGNRGgOUmEwfQWSNw76h2iYJs8ExF5Jj6+yUFYrIj808HqE98g1hvgtcIEYVjSh/Zyh7g2M1xzWp7WSohBR1duRy56m2ZUM2d0HLle25FrdxzpOPQcldKrt324Gp3TUONf1E9wSrpwrQN10Utck/fVhfd2XdQZppVdvGdzS0dLCHmILIe0hJA1D2fH1tKH5hgXdbQUHJpjxh0tBd67asnvaamwemqCZ7zsVBaMrjZKXECbetCEqhKgUDhOTUNC41gNDwWBagn/LF0pFaVqJ+XevHDkzZWvTHJdUemUBRXHJU4oUxEZqp50F1Ms2+5BWe6IZY1ldxi1+2WNO6DMoxU1QZ/ifsL4T/EbKK6zwUdRPOlRvPt4hlv0vYDxVz9ejsiw233E+32Gh15NjsZwVas0KM5PIFG/leMxHn7/BPaDo79/Wh2OB94/3/UUW/3vEfkJZOp/iWP3eByDuf+cpcuz/UdB5+I3</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g><ellipse cx="235" cy="65" rx="65" ry="65" fill="#fa6800" stroke="#c73500" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 65px; margin-left: 171px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 24px" face="Times New Roman">Neuron</font></div></div></div></foreignObject><text x="235" y="69" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">Neuron</text></switch></g><path d="M 41 30.01 L 162.87 52.3" fill="none" stroke="#2d7600" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 168.78 53.38 L 160.19 55.87 L 162.87 52.3 L 161.63 48 Z" fill="#2d7600" stroke="#2d7600" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 40 101.67 L 161.88 81.35" fill="none" stroke="#2d7600" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 167.79 80.37 L 160.56 85.63 L 161.88 81.35 L 159.25 77.74 Z" fill="#2d7600" stroke="#2d7600" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 300 65 L 351.76 65" fill="none" stroke="#001dbc" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 357.76 65 L 349.76 69 L 351.76 65 L 349.76 61 Z" fill="#001dbc" stroke="#001dbc" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="10" width="40" height="30" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 20px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: nowrap; ">x1</div></div></div></foreignObject><text x="20" y="32" fill="#ffffff" font-family="Times New Roman" font-size="24px" text-anchor="middle">x1</text></switch></g><rect x="0" y="90" width="40" height="30" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 105px; margin-left: 20px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: nowrap; ">x2</div></div></div></foreignObject><text x="20" y="112" fill="#ffffff" font-family="Times New Roman" font-size="24px" text-anchor="middle">x2</text></switch></g><rect x="370" y="50" width="30" height="30" fill="#0050ef" stroke="#001dbc" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 65px; margin-left: 385px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: nowrap; ">y</div></div></div></foreignObject><text x="385" y="72" fill="#ffffff" font-family="Times New Roman" font-size="24px" text-anchor="middle">y</text></switch></g><rect x="90" y="0" width="40" height="30" fill="#008a00" stroke="#005700" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 15px; margin-left: 110px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: nowrap; ">w1</div></div></div></foreignObject><text x="110" y="22" fill="#ffffff" font-family="Times New Roman" font-size="24px" text-anchor="middle">w1</text></switch></g><rect x="90" y="100" width="40" height="30" fill="#008a00" stroke="#005700" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 115px; margin-left: 110px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 24px; font-family: Times New Roman; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: nowrap; ">w2</div></div></div></foreignObject><text x="110" y="122" fill="#ffffff" font-family="Times New Roman" font-size="24px" text-anchor="middle">w2</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file diff --git a/topics/statistics/images/partial_derivative.png b/topics/statistics/images/partial_derivative.png new file mode 100644 index 00000000000000..c62174de1e70c7 Binary files /dev/null and b/topics/statistics/images/partial_derivative.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/data-library.yaml b/topics/statistics/tutorials/classification_machinelearning/data-library.yaml new file mode 100644 index 00000000000000..b707a389d8b320 --- /dev/null +++ b/topics/statistics/tutorials/classification_machinelearning/data-library.yaml @@ -0,0 +1,28 @@ +--- +destination: + type: library + name: GTN - Material + description: Galaxy Training Network Material + synopsis: Galaxy Training Network Material. See https://training.galaxyproject.org +items: +- name: Statistics and machine learning + description: Classification algorithms in machine learning using Galaxy + tools + items: + - name: Classification in Machine Learning + items: + - name: 'DOI:10.5281/zenodo.3738729' + description: latest + items: + - url: https://zenodo.org/record/3738729/files/train_rows.csv + src: url + ext: csv + info: https://doi.org/10.5281/zenodo.3738729 + - url: https://zenodo.org/record/3738729/files/test_rows_labels.csv + src: url + ext: csv + info: https://doi.org/10.5281/zenodo.3738729 + - url: https://zenodo.org/record/3738729/files/test_rows.csv + src: url + ext: csv + info: https://doi.org/10.5281/zenodo.3738729 diff --git a/topics/statistics/tutorials/classification_machinelearning/images/classification.png b/topics/statistics/tutorials/classification_machinelearning/images/classification.png new file mode 100644 index 00000000000000..da099cc50d8848 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/classification.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_NN.png b/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_NN.png new file mode 100644 index 00000000000000..116e7c3f257a40 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_NN.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_bagging.png b/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_bagging.png new file mode 100644 index 00000000000000..301c578a63f327 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_bagging.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_linear.png b/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_linear.png new file mode 100644 index 00000000000000..5c500cf35d1fa3 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/confusion_matrix_linear.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_NN.png b/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_NN.png new file mode 100644 index 00000000000000..31c9a80786f491 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_NN.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_bagging.png b/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_bagging.png new file mode 100644 index 00000000000000..496dc9b79aa8c9 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_bagging.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_linear.png b/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_linear.png new file mode 100644 index 00000000000000..c0f810b7553788 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/precision_recall_linear.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/roc_NN.png b/topics/statistics/tutorials/classification_machinelearning/images/roc_NN.png new file mode 100644 index 00000000000000..4ac2011eb48f3e Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/roc_NN.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/roc_bagging.png b/topics/statistics/tutorials/classification_machinelearning/images/roc_bagging.png new file mode 100644 index 00000000000000..f6f5014b478870 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/roc_bagging.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/roc_linear.png b/topics/statistics/tutorials/classification_machinelearning/images/roc_linear.png new file mode 100644 index 00000000000000..94b969ee4d174d Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/roc_linear.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/roc_rf.png b/topics/statistics/tutorials/classification_machinelearning/images/roc_rf.png new file mode 100644 index 00000000000000..d6dd26f89a47fe Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/roc_rf.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/images/roc_svm.png b/topics/statistics/tutorials/classification_machinelearning/images/roc_svm.png new file mode 100644 index 00000000000000..9f4a3248e68246 Binary files /dev/null and b/topics/statistics/tutorials/classification_machinelearning/images/roc_svm.png differ diff --git a/topics/statistics/tutorials/classification_machinelearning/tutorial.md b/topics/statistics/tutorials/classification_machinelearning/tutorial.md new file mode 100755 index 00000000000000..054595f79a3e75 --- /dev/null +++ b/topics/statistics/tutorials/classification_machinelearning/tutorial.md @@ -0,0 +1,541 @@ +--- +layout: tutorial_hands_on + +title: 'Classification in Machine Learning' +zenodo_link: https://zenodo.org/record/3738729#.XoZyHXUzaV4 +questions: +- What is classification and how we can use classification techniques? +objectives: +- Learn classification background +- Learn what a quantitative structure-analysis relationship (QSAR) model is and how it can be constructed in Galaxy +- Learn to apply logistic regression, k-nearest neighbors, support verctor machines, random forests and bagging algorithms +- Learn how visualizations can be used to analyze the classification results +key_points: +- Classification is a supervised approach in machine learning. +- For classification tasks, data is divided into training and test sets. +- Using classification, the samples are learned using the training set and predicted using the test set. +- For each classification algorithm, it parameters should be optimised based on the dataset. +- Machine learning algorithms can be applied to chemical datasets to predict important properties. +time_estimation: 2H +contributors: +- khanteymoori +- anuprulez +- simonbray +--- + +# Introduction +{:.no_toc} + +In this tutorial you will learn how to apply Galaxy tools to solve [classification](https://en.wikipedia.org/wiki/Statistical_classification) problems. First, we will introduce classification briefly, and then examine logistic regression, which is an example of a linear classifier. Next, we will discuss the nearest neighbor classifier, which is a simple but nonlinear classifier. Then advanced classifiers, such as support vector machines, random forest and ensemble classifiers will be introduced and applied. Furthermore, we will show how to visualize the results in each step. + +Finally, we will discuss how to train the classifiers by finding the values of their parameters that minimize a cost function. We will work through a real problem in the field of cheminformatics to learn how the classifiers and learning algorithms work. + +Classification is a [supervised learning](https://en.wikipedia.org/wiki/Supervised_learning) method in machine learning and the algorithm which is used for this learning task is called a classifier. In this tutorial we will build a classifier which can predict whether a chemical substance is biodegradable or not. Substances which degrade quickly are preferable to those which degrade slowly, as they do not accumulate and pose a risk to the environment. Therefore, it is useful to be able to predict easily in advance whether a substance is biodegradable prior to production and usage in consumer products. + +> ### Agenda +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + + +# Classification + +Classification is the process of assigning every object from a collection to exactly one class from a known set of classes by learning a "decision boundary" in a dataset. This dataset is called a training dataset and contains multiple samples, together with a desired class for each sample. The training dataset contains "features" as columns and a mapping between these features and the class label is learned for each sample. + +The performance of mapping is evaluated using a test dataset, which is separate from the training dataset. The test dataset contains only the feature columns, but not the class column. The class column is predicted using the mapping learned on the training dataset. An example of a classification task is assigning a patient (the object) to a group of healthy or ill (the classes) people on the basis of his or her medical record. In this tutorial, we will use a classifier to train a model using a training dataset, predict the targets for test dataset and visualize the results using plots. + +![classification](images/classification.png "Classification of samples belonging to different classes.") + +In figure [1](#figure-1), the line is a boundary which separates a class from another class (for example from tumor to no tumor). The task of a classifier is to learn this boundary, which can be used to classify or categorize an unseen/new sample. The line is the decision boundary; there are different ways to learn it, which correspond to different classification algorithms. If the dataset is linearly separable, linear classifiers can produce good classification results. However, when the dataset is complex and requires non-linear decision boundaries, more powerful classifiers like `support vector machine` or `ensemble` based classifiers may prove to be beneficial. + +The data classification process includes two steps: +1. Building the classifier or model: This step is the learning step, in which the classification algorithms build the classifier. The classifier is built from the training set made up of database samples and their associated class labels. Each sample that constitutes the training set is referred to as a class. + +2. Applying the classifier to a classification task: In this step, the classifier is used for classification. Here the test data is used to estimate the accuracy of classification rules. The classification rules can be applied to the new data samples if the accuracy is considered acceptable. + + +# Quantitative Structure - Activity Relationship biodegradation + +The classification problem we will study in this tutorial is related to biodegradation. Chemical substances which decay slowly will accumulate over time, which poses a threat to the environment. Therefore, it is useful to be able to predict in advance whether a substance will break down quickly or not. + +Quantitative structure-activity relationship (QSAR) and quantitative structure-property relationship (QSPR) models attempt to predict the activity or property of chemicals based on their chemical structure. To achieve this, a database of compounds is collected for which the property of interest is known. For each compound, molecular descriptors are collected which describe the structure (for example: molecular weight, number of nitrogen atoms, number of carbon-carbon double bonds). Using these descriptors, a model is constructed which is capable of predicting the property of interest for a new, unknown molecule. In this tutorial we will use a database assembled from experimental data of the Japanese Ministry of International Trade and Industry to create a classification model for biodegradation. We then will be able to use this model to classify new molecules into one of two classes: biodegradable or non-biodegradable. + +As a benchmark, we will use the [dataset](https://pubs.acs.org/doi/10.1021/ci4000213) assembled by Mansouri et al. using data from the National Institute of Technology and Evaluation of Japan. This database contains 1055 molecules, together with precalculated molecular descriptors. + +In this tutorial, we will apply a couple of [scikit-learn](https://scikit-learn.org/stable/) machine learning tools to the dataset provided by Mansouri et al. to predict whether a molecule is biodegradable or not. +In the following part, we will perform classification on the biodegradability dataset using a linear classifier and then will create some plots to analyze the results. + +## Get train and test datasets + +We have two datasets available; the training dataset contains 837 molecules, while the test dataset contains 218 molecules. + +Let's begin by uploading the necessary datasets. + +> ### {% icon hands_on %} Hands-on: Data upload +> +> 1. Create a new history for this tutorial +> 2. Import the files from [Zenodo](https://zenodo.org/record/3738729#.Xs1EeHUzY5k) +> +> ``` +> https://zenodo.org/record/3738729/files/train_rows.csv +> https://zenodo.org/record/3738729/files/test_rows_labels.csv +> https://zenodo.org/record/3738729/files/test_rows.csv +> ``` +> +> {% include snippets/import_via_link.md %} +> +> 3. Rename the datasets as `train_rows`, `test_rows_labels` and `test_rows` respectively. +> +> {% include snippets/rename_dataset.md %} +> +{: .hands_on} + +The `train_rows` contains a column `Class` which is the class label or target. We will evaluate our model on `test_rows` and compare the predicted class with the true class value in `test_rows_labels` +{: .comment} + +> ### {% icon details %} Preparing the data for classification +> +> Preparing the data involves these following major tasks: +> 1. Data Cleaning: involves removing noise and treatment of missing values. The noise is removed by applying noise filtering techniques and the problem of missing values is solved by replacing a missing value with different techniques, for example substitution, mean imputation and regression imputation. +> 2. Relevance Analysis: the database may also have attributes which are irrelevant for classification. Correlation analysis is used to know whether any two given attributes are related - e.g. one of the features and the target variable. +> 3. Normalization: the data is transformed using normalization. Normalization involves scaling all values for q given attribute in order to make them fall within a small specified range. Normalization is used when in the learning step, neural networks or the methods involving measurements are used. +> +{: .details} + +# Learn the logistic regression classifier + +As the first step, to learn the mapping between several features and the classes, we will apply the linear classifier. It learns features from the training dataset and maps all the rows to their respective class. The process of mapping gives a trained model. [Logistic regression](https://en.wikipedia.org/wiki/Logistic_regression) is named for the function used at the core of the method, the logistic function, and it is an instance of supervised classification in which we know the correct label of the class for each sample and the algorithm estimate of the true class. We want to learn parameters (weight and bias for the line) that make the estimated class for each training observation as close as possible to the true class label. This requires two components; the first is a metric for how close the current class label is to the true label. Rather than measure similarity, we usually talk about the opposite of this, the distance between the classifier output and the desired output, and we call this distance, the loss function or the cost function. + +The second thing we need is an optimization algorithm for iteratively updating the weights so as to minimize this loss function. The standard algorithm for this is gradient descent. So, the dataset is divided into two parts - training and test sets. The training set is used to train a classifier and the test set is used to evaluate the performance of the trained model. + +> ### {% icon hands_on %} Hands-on: Train logistic regression classifier +> +> 1. **Generalized linear models** {% icon tool %} with the following parameters to train the regressor: +> - *"Select a Classification Task"*: `Train a model` +> - *"Select a linear method"*: `Logistic Regression model` +> - *"Select input type"*: `tabular data` +> - {% icon param-file %} *"Training samples dataset"*: `train_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `All columns EXCLUDING some by column header name(s)` +> - {% icon param-text %} *"Type header name(s)"*: `Class` +> - {% icon param-file %} *"Dataset containing class labels"*: `train_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `Select columns by column header name(s)` +> - {% icon param-text %} *"Select target column(s)"*: `Class` +> 2. Rename the generated file to `LogisticRegression_model` +{: .hands_on} + +> ### {% icon question %} Question +> +> What is learned by the logistic regression model? +> +> > ### {% icon solution %} Solution +> > +> > In the logistic regressoion model, the coefficients of the logistic regression algorithm have be estimated from our training data. This is done using [maximum-likelihood estimation](https://en.wikipedia.org/wiki/Maximum_likelihood_estimation). +> > +> {: .solution} +> +{: .question} + +## Predict class using test dataset + +After learning on the training dataset, we should evaluate the performance on the test dataset to know whether the learning algorithm learned a good classifier from the training dataset or not. This classifier is used to predict a new sample and a similar accuracy is expected. + +Now, we will predict class in the test dataset using this classifier in order to see if it has learned important features which can generalize on a new dataset. The test dataset (`test_rows`) contains the same number of features but does not contain the `Class` column. This is predicted using the trained classifier. + + +> ### {% icon hands_on %} Hands-on: Predict class using the logistic regression classifier +> +> 1. **Generalized linear models** {% icon tool %} with the following parameters to predict targets of test dataset using the trained model: +> - *"Select a Classification Task"*: `Load a model and predict` +> - {% icon param-file %} *"Models"*: `LogisticRegression_model` +> - {% icon param-file %} *"Data (tabular)"*: `test_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Select the type of prediction"*: `Predict class labels` +> 2. Rename the generated file to `LogisticRegression_result` +{: .hands_on} + +## Visualize the logistic regression classification results + +We will evaluate the classification by comparing the predicted with the expected classes. In the previous step, we classified the test dataset (`LogisticRegression_result`). We have one more dataset (`test_rows_labels`) which contains the true class label of the test set. Using the true and predicted class labels in the test set, we will verify the performance by analyzing the plots. As you can see, `LogisticRegression_result` has no header, so first we should remove the header from `test_rows_labels` to compare. + +> ### {% icon hands_on %} Hands-on: Remove the header +> +> 1. **Remove beginning** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Remove first"*: `1` +> - {% icon param-file %} *"from"*: `test_rows_labels.csv` +> 2. Rename the generated file to `test_rows_labels_noheader.csv` +{: .hands_on} + + +Now we visualize and analyze the classification using the "Plot confusion matrix, precision, recall and ROC and AUC curves" tool. + +> ### {% icon hands_on %} Hands-on: Check and visualize the classification +> 1. **Plot confusion matrix, precision, recall and ROC and AUC curves** {% icon tool %} with the following parameters to visualize the classification: +> - {% icon param-file %} *"Select input data file"*: `test_rows_labels_noheader.csv` +> - {% icon param-file %} *"Select predicted data file"*: `LogisticRegression_result` +> - {% icon param-file %} *"Select trained model"*: `LogisticRegression_model` +{: .hands_on} + +The visualization tool creates the following plots: + +1. [Confusion matrix](https://en.wikipedia.org/wiki/Confusion_matrix): The confusion matrix summarizes the classification performance of a classifier with respect to the test data. It is a two-dimensional matrix; the horizontal axis (x-axis) shows the predicted labels and the vertical axis (y-axis) shows the true labels. Each rectangular box shows a count of samples falling into the four output combinations (true class, predicted class) - (1, 0), (1, 1), (0, 1) and (0, 0). In Figure 2, confusion matrix of the predictions is a heatmap. For a good prediction, the diagonal running from top-left to bottom-right should contain a smaller number of samples, because it shows the counts of incorrectly predicted samples. Hovering over each box in Galaxy shows the true and predicted class labels and the count of samples. + + ![confusion_matrix](images/confusion_matrix_linear.png "Confusion matrix for the logistic regression classifier. ") + +2. [Precision, recall and F1 score](https://en.wikipedia.org/wiki/Precision_and_recall): Precision, recall and F1 score. These scores determine the robustness of classification. It is important to analyze the plot for any classification task to verify the accuracy across different classes which provides more information about the balanced or imbalanced accuracy across multiple classes present in the dataset. + + ![prf1_scores](images/precision_recall_linear.png "Precision, recall and F1 score for the logistic regression classifier.") + +3. [Receiver operator characteristics (ROC) and area under ROC (AUC)](https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5): Receiver operator characteristics (ROC) and area under ROC (AUC). The ROC curve is shown in blue. For a good prediction, it should be more towards the top-left of this plot, which results in a high AUC value. For a bad prediction, it is close to the orange line (y = x), resulting in a low AUC value (closer to 0.5). An AUC value of exactly 0.5 means the prediction is doing no better than a random number generator at predicting the classes. + + ![roc_scores](images/roc_linear.png "Receiver operator characteristics (ROC) and area under ROC (AUC) for the logistic regression classifier.") + +These plots are important to visualize the quality of the classifier and the true and predicted classes. + + +> ### {% icon question %} Question +> +> Inspect the plots. What can you say about the classification? +> +> > ### {% icon solution %} Solution +> > +> > Figures 2,3 and 4 show that the classification is acceptable, but as you will see in the next steps, the results can be improved. +> > +> {: .solution} +{: .question} + +# K-Nearest Neighbor (KNN) + +At the second step, we will use k-nearest neighbor classifier. In the [k-nearest neighbor](https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm) classifier, a sample is classified by a majority vote of its neighbors. The sample is assigned to the class which is most common among its k nearest neighbors. k is a positive integer and typically it is small. For example, if k = 1, then the sample is simply assigned to the class of that single nearest neighbor. Surprisingly, when the number of data points is large, this classifier is not that bad. Choosing the best value of k is very important. If k is too small, the classifier will be sensitive to noise points and If k is too large, the neighborhood may include points from other classes and cause errors. To select the k that is right for your data, we recommend running the KNN algorithm several times with different values of k and choosing the k that reduces the number of errors the most. + +> ### {% icon question %} Question +> +> What are advantages and disadvantages about this model? +> +> > ### {% icon solution %} Solution +> > Advantages: +> > - It is very simple algorithm to understand and interpret. +> > +> > - It is very useful for nonlinear data because there is no assumption of linearity in this algorithm. +> > +> > - It is a versatile algorithm, as we can use it for classification as well as regression. +> > +> > - It has relatively high accuracy, but there are much better supervised learning models than KNN. +> > +> > - It works very well in low dimensions for complex decision surfaces. +> > +> > Disadvantages: +> > +> > - Classification is slow, because it stores all the training data. +> > +> > - High memory storage required as compared to other supervised learning algorithms. +> > +> > - Prediction is slow in case of big training samples. +> > +> > - It is very sensitive to the scale of data as well as irrelevant features. +> > +> > - It suffers a lot from the curse of dimensionality. +> > +> {: .solution} +{: .question} + +> ### {% icon hands_on %} Hands-on: Train k-nearest neighbor classifier +> +> 1. **Nearest Neighbors Classification** {% icon tool %} with the following parameters to train the regressor: +> - *"Select a Classification Task"*: `Train a model` +> - *"Classifier type"*: `Nearest Neighbors` +> - *"Select input type"*: `tabular data` +> - {% icon param-file %} *"Training samples dataset"*: `train_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `All columns EXCLUDING some by column header name(s)` +> - {% icon param-text %} *"Type header name(s)"*: `Class` +> - {% icon param-file %} *"Dataset containing class labels"*: `train_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `Select columns by column header name(s)` +> - {% icon param-text %} *"Select target column(s)"*: `Class` +> - {% icon param-select %} *"Neighbor selection method"*: `k-nearest neighbors` +> 2. Rename the generated file to `NearestNeighbors_model` +{: .hands_on} + +> ### {% icon question %} Question +> +> What is the value of k (number of neighbors) for the model? +> +> > ### {% icon solution %} Solution +> > As you can see in the Advanced Options, the default value for the number of neighbors is 5, and we used the default value. You can set this parameter based on your problem and data. +> > +> {: .solution} +{: .question} + +Now, we should evaluate the performance on the test dataset to find out whether the KNN classifier is a good model from the training dataset or not. + +> ### {% icon hands_on %} Hands-on: Predict class using the k-nearest neighbor classifier +> +> 1. **Nearest Neighbors Classification** {% icon tool %} with the following parameters to predict targets of test dataset using the trained model: +> - *"Select a Classification Task"*: `Load a model and predict` +> - {% icon param-file %} *"Models"*: `NearestNeighbors_model` +> - {% icon param-file %} *"Data (tabular)"*: `test_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Select the type of prediction"*: `Predict class labels` +> 2. Rename the generated file to `NearestNeighbors_result` +{: .hands_on} + + +Now we visualize and analyze the classification. As you can see, `NearestNeighbors_result` has a header, so use `test_rows_labels` to compare. + +> ### {% icon hands_on %} Hands-on: Check and visualize the classification +> 1. **Plot confusion matrix, precision, recall and ROC and AUC curves** {% icon tool %} with the following parameters to visualize the classification: +> - {% icon param-file %} *"Select input data file"*: `test_rows_labels.csv` +> - {% icon param-file %} *"Select predicted data file"*: `NearestNeighbors_result` +> - {% icon param-file %} *"Select trained model"*: `NearestNeighbors_model` +{: .hands_on} + +The visualization tool creates diagrams for the Confusion matrix, Precision, recall and F1 score, Receiver operator characteristics (ROC) and area under ROC (AUC) as follows: + +![confusion_matrix](images/confusion_matrix_NN.png "Confusion matrix for the k-nearest neighbor classifier.") + +![prf1_scores](images/precision_recall_NN.png "Precision, recall and F1 score for the k-nearest neighbor classifier.") + +![roc_scores](images/roc_NN.png "Receiver operator characteristics (ROC) and area under ROC (AUC) for the k-nearest neighbor classifier.") + + +# Support Vector Machines (SVM) + +[Support Vector Machines](https://en.wikipedia.org/wiki/Support-vector_machine) (SVMs) have been extensively researched in the machine learning community for the last decade and actively applied to applications in various domains such as bioinformatics. SVM is a generalization of a classifier called maximal margin classifier and is introduced as a binary classifier intended to separate two classes when obtaining the optimal hyperplane and decision boundary. SVMs are based on the assumption that the input data can be linearly separable in a geometric space. The maximal margin classifier is simple, but it cannot be applied to the majority of datasets, since the classes must be separated by a linear boundary and this is often not the case when working with real world data. That is why the support vector classifier was introduced as an extension of the maximal margin classifier, which can be applied in a broader range of cases. + +To solve this problem SVM uses kernel functions to map the input to a high dimension feature space, i.e hyperplane, where a linear decision boundary is constructed in such a manner that the boundary maximises the margin between two classes. The kernel approach is simply an efficient computational approach for accommodating a non-linear boundary between classes. + +Without going into technical details, a kernel is a function that quantifies the similarity of two observations. Two special properties of SVMs are that SVMs achieve (1) high generalization by maximizing the margin and (2) support an efficient learning of nonlinear functions by +kernel trick. In the next step, we will build a SVM classifier with our data. + +> ### {% icon hands_on %} Hands-on: Train a SVM classifier +> +> 1. **Support vector machines (SVMs)** {% icon tool %} with the following parameters to train the regressor: +> - *"Select a Classification Task"*: `Train a model` +> - *"Select a linear method"*: `Linear Support Vector Classification` +> - *"Select input type"*: `tabular data` +> - {% icon param-file %} *"Training samples dataset"*: `train_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `All columns EXCLUDING some by column header name(s)` +> - {% icon param-text %} *"Type header name(s)"*: `Class` +> - {% icon param-file %} *"Dataset containing class labels"*: `train_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `Select columns by column header name(s)` +> - {% icon param-text %} *"Select target column(s)"*: `Class` +> 2. Rename the generated file to `SVM_model` +{: .hands_on} + +> ### {% icon question %} Question +> +> What is learned by the support vector machines? +> +> > ### {% icon solution %} Solution +> > +> > The coefficients of the line with the maximal margin in the kernel space is learned in the training phase. +> > +> {: .solution} +> +{: .question} + + +Now we will evaluate the performance of the SVM classifier: + +> ### {% icon hands_on %} Hands-on: Predict class SVM classifier +> +> 1. **Support vector machines (SVMs)** {% icon tool %} with the following parameters to predict targets of test dataset using the trained model: +> - *"Select a Classification Task"*: `Load a model and predict` +> - {% icon param-file %} *"Models"*: `SVM_model` +> - {% icon param-file %} *"Data (tabular)"*: `test_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Select the type of prediction"*: `Predict class labels` +> 2. Rename the generated file to `SVM_result` +{: .hands_on} + + +Now let's visualize the results: + +> ### {% icon hands_on %} Hands-on: Check and visualize the classification +> 1. **Plot confusion matrix, precision, recall and ROC and AUC curves** {% icon tool %} with the following parameters to visualize the classification: +> - {% icon param-file %} *"Select input data file"*: `test_rows_labels.csv` +> - {% icon param-file %} *"Select predicted data file"*: `SVM_result` +> - {% icon param-file %} *"Select trained model"*: `SVM_model` +{: .hands_on} + +The visualization tool creates the following ROC plot: + +![roc_scores](images/roc_svm.png "Receiver operator characteristics (ROC) and area under ROC (AUC) for the SVM classifier.") + + +# Random Forest + +[Random forest](https://en.wikipedia.org/wiki/Random_forest) is an ensemble of decision trees, and usually trained with the “bagging” method. The [Ensemble](https://scikit-learn.org/stable/modules/ensemble.html#ensemble) method uses multiple learning models internally for better predictions and the general idea of the bagging method is that a combination of learning models increases the overall result. It uses multiple decision tree regressors internally and predicts by taking the collective performances of the predictions by multiple decision trees. It has a good predictive power and is robust to outliers. It creates an ensemble of weak learners (decision trees) and iteratively minimizes error. + +One big advantage of random forest is that it can be used for both classification and regression problems. The main idea behind the random forest is adding additional randomness to the model, while growing the trees and instead of searching for the most important feature while splitting a node, it searches for the best feature among a random subset of features. This results in a better model because of wide diversity. Generally, the more trees in the forest, the more robust the model. Therefore, when using the random forest classifier, a larger number of trees in the forest gives higher accuracy results. Similarly there are two stages in the random forest algorithm; one is random forest creation, the other is to make a prediction from the random forest classifier created in the first stage. + +> ### {% icon hands_on %} Hands-on: Train random forest +> +> 1. **Ensemble methods** {% icon tool %} with the following parameters to train the regressor: +> - *"Select a Classification Task"*: `Train a model` +> - *"Select an ensemble method"*: `Random forest classifier` +> - *"Select input type"*: `tabular data` +> - {% icon param-file %} *"Training samples dataset"*: `train_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `All columns EXCLUDING some by column header name(s)` +> - {% icon param-text %} *"Type header name(s)"*: `Class` +> - {% icon param-file %} *"Dataset containing class labels"*: `train_rows.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `Select columns by column header name(s)` +> - {% icon param-text %} *"Select target column(s)"*: `Class` +> 2. Rename the generated file to `RandomForest_model` +{: .hands_on} + +> ### {% icon question %} Question +> +> What are the advantages of random forest classifier compared with KNN and SVM? +> +> > ### {% icon solution %} Solution +> > 1. The overfitting problem will never arise when we use the random forest algorithm in any classification problem. +> > 2. The same random forest algorithm can be used for both classification and regression task. +> > 3. The random forest algorithm can be used for feature engineering, which means identifying the most important features out of the available features from the training dataset. +> {: .solution} +> +{: .question} + + +After learning on the training dataset, we should evaluate the performance on the test dataset. + +> ### {% icon hands_on %} Hands-on: Predict targets using the random forest +> +> 1. **Ensemble methods** {% icon tool %} with the following parameters to predict targets of test dataset using the trained model: +> - *"Select a Classification Task"*: `Load a model and predict` +> - {% icon param-file %} *"Models"*: `RandomForest_model` +> - {% icon param-file %} *"Data (tabular)"*: `train_rows_test.csv` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Select the type of prediction"*: `Predict class labels` +> 2. Rename the generated file to `RandomForest_result` +{: .hands_on} + +The visualization tool creates the following ROC plot: + +![roc_scores](images/roc_rf.png "Receiver operator characteristics (ROC) and area under ROC (AUC) for the random forest classifier.") + + +> ### {% icon question %} Question +> +> Inspect the plots. What can you say about the classification? +> +> > ### {% icon solution %} Solution +> > +> > Figures show that we achieved an AUC score of `1.0` for the test set using random forest. It means the prediction is very good, in fact it has no error at all. Unfortunately, this is not usually the case when dealing with chemical data. +> {: .solution} +{: .question} + + +# Create data processing pipeline + +At the last step, we will create a bagging classifier by using the **Pipeline builder** tool. Bagging or Bootstrap Aggregating is a widely used ensemble learning algorithm in machine learning. The bagging algorithm creates multiple models from randomly taken subsets of the training dataset and then aggregates learners to build overall stronger classifiers that combine the predictions to produce a final prediction. The **Pipeline builder** tool builds the classifier and returns a zipped file. + +> ### {% icon hands_on %} Hands-on: Create pipeline +> +> 1. **Pipeline builder** {% icon tool %} with the following parameters: +> - In *"Final Estimator"*: +> - *"Choose the module that contains target estimator"*: `sklearn.ensemble` +> - *"Choose estimator class"*: `BaggingClassifier` +> - In *"Output parameters for searchCV?"*: `Yes` +> +> We choose `Final Estimator` as we have only the estimator and no preprocessor and need the parameters of only the estimator. +> +{: .hands_on} + + +## Extract hyperparameters + +We use the **Estimator attributes** tool to get a list of different hyperparameters of the estimator. This tool creates a tabular file with a list of all the different hyperparameters of the preprocessors and estimators. This tabular file will be used in the **Hyperparameter search** tool to populate the list of hyperparameters with their respective (default) values. + +> ### {% icon hands_on %} Hands-on: Estimator attributes +> +> 1. **Estimator attributes** {% icon tool %} with the following parameters: +> - {% icon param-files %} *"Choose the dataset containing estimator/pipeline object"*: `final estimator builder` file (output of **Pipeline builder** {% icon tool %}) +> - *"Select an attribute retrieval type"*: `Estimator - get_params()` +> +{: .hands_on} + +## Search for the best values of hyperparameters + +After extracting the parameter names from the **Pipeline builder** file, we will use the **Hyperparameter search** tool to find the best values for each hyperparameter. These values will lead us to create the best model based on the search space chosen for each hyperparameter. We use only one parameter `n_estimators` of `BaggingClassifier` for this task. This parameter specifies the number of bagging stages the learning process has to go through. The default value of `n_estimators` for this regressor is `10`. However, we are not sure if this gives the best accuracy. Therefore, it is important to set this parameter to different values to find the optimal one. We choose some values which are less than `10` and a few which are more than `10`. The hyperparameter search will look for the optimal number of estimators and gives the best-trained model as one of the outputs. This model is used in the next step to classify the test dataset. + +> ### {% icon hands_on %} Hands-on: Hyperparameter search +> +> 1. **Hyperparameter search** {% icon tool %} with the following parameters: +> - *"Select a model selection search scheme"*: `GridSearchCV - Exhaustive search over specified parameter values for an estimator ` +> - {% icon param-files %} *"Choose the dataset containing pipeline/estimator object"*: `zipped` file (output of **Pipeline builder** {% icon tool %}) +> - {% icon param-files %} *"Is the estimator a deep learning model?"*: `NO` {% icon tool %}) +> - In *"Search parameters Builder"*: +> - {% icon param-files %} *"Choose the dataset containing parameter names"*: `tabular` file (output of **Estimator attributes** {% icon tool %}) +> - In *"Parameter settings for search"*: +> - {% icon param-repeat %} *"1: Parameter settings for search"* +> - *"Choose a parameter name (with current value)"*: `n_estimators: 10` +> - *"Search list"*: `[5,10,20,50]` +> - *"Select input type"*: `tabular data` +> - {% icon param-files %} *"Training samples dataset"*: `train_rows` tabular file +> - *"Does the dataset contain header"*: `Yes` +> - *"Choose how to select data by column"*: `All columns BUT by column header name(s)` +> - *"Type header name(s)"*: `Class` +> - {% icon param-files %} *"Dataset containing class labels or target values"*: `train_rows` tabular file +> - *"Does the dataset contain header"*: `Yes` +> - *"Choose how to select data by column"*: `Select columns by column header name(s)` +> - *"Type header name(s)"*: `Class` +> - *"Whether to hold a portion of samples for test exclusively?"*: `Nope` +> - *"Save best estimator?"*: `Fitted best estimator or Detailed cv_results_from nested CV` +> +{: .hands_on} + +> ### {% icon question %} Question +> +> What is the optimal number of estimators for the given dataset? +> +> Hint: Please look at the `mean_test_score` column in the tabular result from the **Hyperparameter search** tool. +> +> > ### {% icon solution %} Solution +> > +> > 20 - even though the default value of the number of estimators for Bagging Classifier is `10`, `20` gives the best accuracy. That's why it is important to perform hyperparameter search to tune these parameters for any dataset. +> > +> {: .solution} +> +{: .question} + +Using the **Hyperparameter search** tool, we found the best model, based on the training data. Now, we will predict age in the test dataset using this model. + +> ### {% icon hands_on %} Hands-on: Predict age +> +> 1. **Ensemble methods for classification and regression** {% icon tool %} with the following parameters: +> - *"Select a Classification Task"*: `Load a model and predict` +> - {% icon param-files %} *"Models"*: `zipped` file (output of **Hyperparameter search** {% icon tool %}) +> - {% icon param-files %} *"Data (tabular)"*: `test_rows` tabular file +> - *"Does the dataset contain header"*: `Yes` +> +{: .hands_on} + + +Now we will verify the performance by creating and inspecting the plots: + + +![confusion_matrix](images/confusion_matrix_bagging.png "Confusion matrix for the bagging classifier.") + +![prf1_scores](images/precision_recall_bagging.png "Precision, recall and F1 score for the bagging classifier.") + +![roc_scores](images/roc_bagging.png "Residual plot between residual (predicted - true) and predicted targets. The plot shows a random pattern of points.") + + +Figure 13 shows that we again achieved an AUC value of `1.00`, which shows that our model is highly effective at predicting whether or not a molecule is biodegradable. + + +# Conclusion +By following these steps, we learned how to build classifiers and visualize the classification results using Galaxy's machine learning and plotting tools. The features of the training dataset are mapped to the classes. This mapping is used to make predictions on an unseen (test) dataset. The quality of classifiers is visualized using a plotting tool. + +There are multiple other classification algorithms, a few are simpler to use (with fewer parameters) and some are more powerful, which can be tried out on this dataset and on other datasets as well. Different datasets can also be analyzed using these classifiers. The classifiers have many parameters which can be altered while performing the analyses to see if they affect the classification accuracy. It may be beneficial to perform a hyperparameter search to tune these parameters for different datasets. In addition, we learned the relevance of machine algorithms for QSAR analyses and constructed a model which successfully predicted an important chemical property - the biodegradability of a substance. diff --git a/topics/statistics/tutorials/classification_machinelearning/workflows/index.md b/topics/statistics/tutorials/classification_machinelearning/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/statistics/tutorials/classification_machinelearning/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/statistics/tutorials/classification_machinelearning/workflows/ml_classification.ga b/topics/statistics/tutorials/classification_machinelearning/workflows/ml_classification.ga new file mode 100644 index 00000000000000..2c72e3346557a8 --- /dev/null +++ b/topics/statistics/tutorials/classification_machinelearning/workflows/ml_classification.ga @@ -0,0 +1,903 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "Classification in Machine Learning", + "tags":[ + "statistics", + "classification", + "ml", + "cheminformatics" + ], + "format-version": "0.1", + "name": "ml_classification", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "train_rows.csv" + } + ], + "label": "train_rows.csv", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 200 + }, + "tool_id": null, + "tool_state": "{\"name\": \"train_rows.csv\"}", + "tool_version": null, + "type": "data_input", + "uuid": "2b808085-c925-4327-8310-e45702344b59", + "workflow_outputs": [] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "test_rows_labels.csv" + } + ], + "label": "test_rows_labels.csv", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 320 + }, + "tool_id": null, + "tool_state": "{\"name\": \"test_rows_labels.csv\"}", + "tool_version": null, + "type": "data_input", + "uuid": "b04a2c8d-d019-49cd-8ef3-f2565cc9a2d5", + "workflow_outputs": [] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_generalized_linear/sklearn_generalized_linear/1.0.8.2", + "errors": null, + "id": 10, + "input_connections": { + "selected_tasks|infile_data": { + "id": 2, + "output_name": "output" + }, + "selected_tasks|infile_model": { + "id": 4, + "output_name": "outfile_fit" + } + }, + "inputs": [], + "label": null, + "name": "Generalized linear models", + "outputs": [ + { + "name": "outfile_predict", + "type": "tabular" + } + ], + "position": { + "left": 640, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_generalized_linear/sklearn_generalized_linear/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "3e4a7684d402", + "name": "sklearn_generalized_linear", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 0, \\\"header\\\": \\\"true\\\", \\\"infile_data\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile_model\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"prediction_options\\\": {\\\"__current_case__\\\": 0, \\\"prediction_option\\\": \\\"predict\\\"}, \\\"selected_task\\\": \\\"load\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "4835c73b-4115-4b33-b9c0-423c59d7c84a", + "workflow_outputs": [] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_nn_classifier/sklearn_nn_classifier/1.0.8.2", + "errors": null, + "id": 11, + "input_connections": { + "selected_tasks|infile_data": { + "id": 2, + "output_name": "output" + }, + "selected_tasks|infile_model": { + "id": 5, + "output_name": "outfile_fit" + } + }, + "inputs": [], + "label": null, + "name": "Nearest Neighbors Classification", + "outputs": [ + { + "name": "outfile_predict", + "type": "tabular" + } + ], + "position": { + "left": 640, + "top": 320 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_nn_classifier/sklearn_nn_classifier/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "39ae3c043096", + "name": "sklearn_nn_classifier", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 0, \\\"header\\\": \\\"true\\\", \\\"infile_data\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile_model\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"prediction_options\\\": {\\\"__current_case__\\\": 0, \\\"prediction_option\\\": \\\"predict\\\"}, \\\"selected_task\\\": \\\"load\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "1ed20e3a-e850-4e29-abf9-767ee22077df", + "workflow_outputs": [] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_svm_classifier/sklearn_svm_classifier/1.0.8.2", + "errors": null, + "id": 12, + "input_connections": { + "selected_tasks|infile_data": { + "id": 2, + "output_name": "output" + }, + "selected_tasks|infile_model": { + "id": 6, + "output_name": "outfile_fit" + } + }, + "inputs": [], + "label": null, + "name": "Support vector machines (SVMs)", + "outputs": [ + { + "name": "outfile_predict", + "type": "tabular" + } + ], + "position": { + "left": 640, + "top": 440 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_svm_classifier/sklearn_svm_classifier/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "d2afc87db26b", + "name": "sklearn_svm_classifier", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 0, \\\"header\\\": \\\"true\\\", \\\"infile_data\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile_model\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"prediction_options\\\": {\\\"__current_case__\\\": 0, \\\"prediction_option\\\": \\\"predict\\\"}, \\\"selected_task\\\": \\\"load\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "ca471e7c-00f3-4571-84a8-966163604716", + "workflow_outputs": [] + }, + "13": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_ensemble/sklearn_ensemble/1.0.8.2", + "errors": null, + "id": 13, + "input_connections": { + "selected_tasks|infile_data": { + "id": 2, + "output_name": "output" + }, + "selected_tasks|infile_model": { + "id": 7, + "output_name": "outfile_fit" + } + }, + "inputs": [], + "label": null, + "name": "Ensemble methods", + "outputs": [ + { + "name": "outfile_predict", + "type": "tabular" + } + ], + "position": { + "left": 640, + "top": 560 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_ensemble/sklearn_ensemble/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "3ab7af14f1b5", + "name": "sklearn_ensemble", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 0, \\\"header\\\": \\\"true\\\", \\\"infile_data\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile_model\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"prediction_options\\\": {\\\"__current_case__\\\": 0, \\\"prediction_option\\\": \\\"predict\\\"}, \\\"selected_task\\\": \\\"load\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "c74df17c-0e1d-4c49-9114-01ba21dd59d9", + "workflow_outputs": [] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_searchcv/sklearn_searchcv/1.0.8.2", + "errors": null, + "id": 14, + "input_connections": { + "input_options|infile1": { + "id": 0, + "output_name": "output" + }, + "input_options|infile2": { + "id": 0, + "output_name": "output" + }, + "search_schemes|infile_estimator": { + "id": 3, + "output_name": "outfile" + }, + "search_schemes|search_params_builder|infile_params": { + "id": 9, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Hyperparameter Search", + "outputs": [ + { + "name": "outfile_result", + "type": "tabular" + }, + { + "name": "outfile_object", + "type": "zip" + } + ], + "position": { + "left": 640, + "top": 680 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_searchcv/sklearn_searchcv/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "1ae5dfd5ac17", + "name": "sklearn_searchcv", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"search_schemes\": \"{\\\"__current_case__\\\": 0, \\\"infile_estimator\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"is_deep_learning\\\": \\\"false\\\", \\\"options\\\": {\\\"cv_selector\\\": {\\\"__current_case__\\\": 0, \\\"n_splits\\\": \\\"3\\\", \\\"selected_cv\\\": \\\"default\\\"}, \\\"error_score\\\": \\\"true\\\", \\\"iid\\\": \\\"true\\\", \\\"return_train_score\\\": \\\"false\\\", \\\"scoring\\\": {\\\"__current_case__\\\": 0, \\\"primary_scoring\\\": \\\"default\\\"}, \\\"verbose\\\": \\\"0\\\"}, \\\"search_params_builder\\\": {\\\"infile_params\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"param_set\\\": [{\\\"__index__\\\": 0, \\\"sp_list\\\": \\\"[5,10,20,50]\\\", \\\"sp_name\\\": \\\"n_estimators\\\"}]}, \\\"selected_search_scheme\\\": \\\"GridSearchCV\\\"}\", \"__rerun_remap_job_id__\": null, \"save\": \"\\\"save_estimator\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"input_options\": \"{\\\"__current_case__\\\": 0, \\\"column_selector_options_1\\\": {\\\"__current_case__\\\": 3, \\\"col1\\\": \\\"Class\\\", \\\"selected_column_selector_option\\\": \\\"all_but_by_header_name\\\"}, \\\"column_selector_options_2\\\": {\\\"__current_case__\\\": 2, \\\"col2\\\": \\\"Class\\\", \\\"selected_column_selector_option2\\\": \\\"by_header_name\\\"}, \\\"header1\\\": \\\"true\\\", \\\"header2\\\": \\\"true\\\", \\\"infile1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input\\\": \\\"tabular\\\"}\", \"outer_split\": \"{\\\"__current_case__\\\": 0, \\\"split_mode\\\": \\\"no\\\"}\"}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "ea214a5b-d3f0-42ba-bc38-409c188126a7", + "workflow_outputs": [] + }, + "15": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "errors": null, + "id": 15, + "input_connections": { + "infile_input": { + "id": 8, + "output_name": "out_file1" + }, + "infile_output": { + "id": 10, + "output_name": "outfile_predict" + }, + "infile_trained_model": { + "id": 4, + "output_name": "outfile_fit" + } + }, + "inputs": [], + "label": null, + "name": "Plot confusion matrix, precision, recall and ROC and AUC curves", + "outputs": [ + { + "name": "output_confusion", + "type": "html" + }, + { + "name": "output_prf", + "type": "html" + }, + { + "name": "output_roc", + "type": "html" + } + ], + "position": { + "left": 860, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "tool_shed_repository": { + "changeset_revision": "62e3a4e8c54c", + "name": "plotly_ml_performance_plots", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"infile_trained_model\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"infile_output\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"infile_input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "tool_version": "0.2", + "type": "tool", + "uuid": "8ae35e8c-cbdb-4549-974b-ef506157119c", + "workflow_outputs": [] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "errors": null, + "id": 16, + "input_connections": { + "infile_input": { + "id": 1, + "output_name": "output" + }, + "infile_output": { + "id": 11, + "output_name": "outfile_predict" + }, + "infile_trained_model": { + "id": 5, + "output_name": "outfile_fit" + } + }, + "inputs": [], + "label": null, + "name": "Plot confusion matrix, precision, recall and ROC and AUC curves", + "outputs": [ + { + "name": "output_confusion", + "type": "html" + }, + { + "name": "output_prf", + "type": "html" + }, + { + "name": "output_roc", + "type": "html" + } + ], + "position": { + "left": 860, + "top": 320 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "tool_shed_repository": { + "changeset_revision": "62e3a4e8c54c", + "name": "plotly_ml_performance_plots", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"infile_trained_model\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"infile_output\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"infile_input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "tool_version": "0.2", + "type": "tool", + "uuid": "ffcdace4-4bbe-4612-a8fd-30dea3b2d242", + "workflow_outputs": [] + }, + "17": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "errors": null, + "id": 17, + "input_connections": { + "infile_input": { + "id": 1, + "output_name": "output" + }, + "infile_output": { + "id": 12, + "output_name": "outfile_predict" + }, + "infile_trained_model": { + "id": 6, + "output_name": "outfile_fit" + } + }, + "inputs": [], + "label": null, + "name": "Plot confusion matrix, precision, recall and ROC and AUC curves", + "outputs": [ + { + "name": "output_confusion", + "type": "html" + }, + { + "name": "output_prf", + "type": "html" + }, + { + "name": "output_roc", + "type": "html" + } + ], + "position": { + "left": 860, + "top": 440 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "tool_shed_repository": { + "changeset_revision": "62e3a4e8c54c", + "name": "plotly_ml_performance_plots", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"infile_trained_model\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"infile_output\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"infile_input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "tool_version": "0.2", + "type": "tool", + "uuid": "13a307c9-c589-49c6-98c0-5d4c4d6c18d2", + "workflow_outputs": [] + }, + "18": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "errors": null, + "id": 18, + "input_connections": { + "infile_input": { + "id": 1, + "output_name": "output" + }, + "infile_output": { + "id": 13, + "output_name": "outfile_predict" + }, + "infile_trained_model": { + "id": 7, + "output_name": "outfile_fit" + } + }, + "inputs": [], + "label": null, + "name": "Plot confusion matrix, precision, recall and ROC and AUC curves", + "outputs": [ + { + "name": "output_confusion", + "type": "html" + }, + { + "name": "output_prf", + "type": "html" + }, + { + "name": "output_roc", + "type": "html" + } + ], + "position": { + "left": 860, + "top": 560 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "tool_shed_repository": { + "changeset_revision": "62e3a4e8c54c", + "name": "plotly_ml_performance_plots", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"infile_trained_model\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"infile_output\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"infile_input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "tool_version": "0.2", + "type": "tool", + "uuid": "d6df48d4-3a4c-41a4-b53b-c04533b16742", + "workflow_outputs": [] + }, + "19": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_ensemble/sklearn_ensemble/1.0.8.2", + "errors": null, + "id": 19, + "input_connections": { + "selected_tasks|infile_data": { + "id": 2, + "output_name": "output" + }, + "selected_tasks|infile_model": { + "id": 14, + "output_name": "outfile_object" + } + }, + "inputs": [], + "label": null, + "name": "Ensemble methods", + "outputs": [ + { + "name": "outfile_predict", + "type": "tabular" + } + ], + "position": { + "left": 860, + "top": 680 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_ensemble/sklearn_ensemble/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "3ab7af14f1b5", + "name": "sklearn_ensemble", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 0, \\\"header\\\": \\\"true\\\", \\\"infile_data\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile_model\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"prediction_options\\\": {\\\"__current_case__\\\": 0, \\\"prediction_option\\\": \\\"predict\\\"}, \\\"selected_task\\\": \\\"load\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "aa1bed69-0ee6-4ade-b9b2-6d2ce89bb36e", + "workflow_outputs": [] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "test_rows.csv" + } + ], + "label": "test_rows.csv", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 440 + }, + "tool_id": null, + "tool_state": "{\"name\": \"test_rows.csv\"}", + "tool_version": null, + "type": "data_input", + "uuid": "0c0a1583-9e8c-4382-af2b-feae2d1fc845", + "workflow_outputs": [] + }, + "20": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "errors": null, + "id": 20, + "input_connections": { + "infile_input": { + "id": 1, + "output_name": "output" + }, + "infile_output": { + "id": 19, + "output_name": "outfile_predict" + }, + "infile_trained_model": { + "id": 14, + "output_name": "outfile_object" + } + }, + "inputs": [], + "label": null, + "name": "Plot confusion matrix, precision, recall and ROC and AUC curves", + "outputs": [ + { + "name": "output_confusion", + "type": "html" + }, + { + "name": "output_prf", + "type": "html" + }, + { + "name": "output_roc", + "type": "html" + } + ], + "position": { + "left": 1080, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/plotly_ml_performance_plots/plotly_ml_performance_plots/0.2", + "tool_shed_repository": { + "changeset_revision": "62e3a4e8c54c", + "name": "plotly_ml_performance_plots", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"infile_trained_model\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"infile_output\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"infile_input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "tool_version": "0.2", + "type": "tool", + "uuid": "635ba9ca-1f96-44ff-970e-d2877b12292c", + "workflow_outputs": [] + }, + "3": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_build_pipeline/sklearn_build_pipeline/1.0.8.2", + "errors": null, + "id": 3, + "input_connections": {}, + "inputs": [], + "label": null, + "name": "Pipeline Builder", + "outputs": [ + { + "name": "outfile", + "type": "zip" + }, + { + "name": "outfile_params", + "type": "tabular" + } + ], + "position": { + "left": 200, + "top": 560 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_build_pipeline/sklearn_build_pipeline/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "97dce66fe158", + "name": "sklearn_build_pipeline", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"pipeline_component\": \"[{\\\"__index__\\\": 0, \\\"component_selector\\\": {\\\"__current_case__\\\": 0, \\\"component_type\\\": \\\"None\\\"}}]\", \"__rerun_remap_job_id__\": null, \"get_params\": \"\\\"true\\\"\", \"final_estimator\": \"{\\\"estimator_selector\\\": {\\\"__current_case__\\\": 2, \\\"selected_estimator\\\": \\\"BaggingClassifier\\\", \\\"selected_module\\\": \\\"ensemble\\\", \\\"text_params\\\": \\\"\\\"}}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "c83ed09b-1377-4f27-a39e-21bc55c45054", + "workflow_outputs": [] + }, + "4": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_generalized_linear/sklearn_generalized_linear/1.0.8.2", + "errors": null, + "id": 4, + "input_connections": { + "selected_tasks|selected_algorithms|input_options|infile1": { + "id": 0, + "output_name": "output" + }, + "selected_tasks|selected_algorithms|input_options|infile2": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Generalized linear models", + "outputs": [ + { + "name": "outfile_fit", + "type": "zip" + } + ], + "position": { + "left": 420, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_generalized_linear/sklearn_generalized_linear/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "3e4a7684d402", + "name": "sklearn_generalized_linear", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 1, \\\"selected_algorithms\\\": {\\\"__current_case__\\\": 5, \\\"input_options\\\": {\\\"__current_case__\\\": 0, \\\"column_selector_options_1\\\": {\\\"__current_case__\\\": 3, \\\"col1\\\": \\\"Class\\\", \\\"selected_column_selector_option\\\": \\\"all_but_by_header_name\\\"}, \\\"column_selector_options_2\\\": {\\\"__current_case__\\\": 2, \\\"col2\\\": \\\"Class\\\", \\\"selected_column_selector_option2\\\": \\\"by_header_name\\\"}, \\\"header1\\\": \\\"true\\\", \\\"header2\\\": \\\"true\\\", \\\"infile1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input\\\": \\\"tabular\\\"}, \\\"options\\\": {\\\"C\\\": \\\"1.0\\\", \\\"dual\\\": \\\"false\\\", \\\"fit_intercept\\\": \\\"true\\\", \\\"intercept_scaling\\\": \\\"1.0\\\", \\\"max_iter\\\": \\\"100\\\", \\\"multi_class\\\": \\\"ovr\\\", \\\"penalty\\\": \\\"l2\\\", \\\"random_state\\\": \\\"\\\", \\\"solver\\\": \\\"liblinear\\\", \\\"tol\\\": \\\"0.0001\\\", \\\"warm_start\\\": \\\"false\\\"}, \\\"selected_algorithm\\\": \\\"LogisticRegression\\\"}, \\\"selected_task\\\": \\\"train\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "e8b9c2b7-9512-42e2-b0dc-2e04ed0d4d4f", + "workflow_outputs": [] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_nn_classifier/sklearn_nn_classifier/1.0.8.2", + "errors": null, + "id": 5, + "input_connections": { + "selected_tasks|selected_algorithms|input_options|infile1": { + "id": 0, + "output_name": "output" + }, + "selected_tasks|selected_algorithms|input_options|infile2": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Nearest Neighbors Classification", + "outputs": [ + { + "name": "outfile_fit", + "type": "zip" + } + ], + "position": { + "left": 420, + "top": 440 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_nn_classifier/sklearn_nn_classifier/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "39ae3c043096", + "name": "sklearn_nn_classifier", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 1, \\\"selected_algorithms\\\": {\\\"__current_case__\\\": 0, \\\"input_options\\\": {\\\"__current_case__\\\": 0, \\\"column_selector_options_1\\\": {\\\"__current_case__\\\": 3, \\\"col1\\\": \\\"Class\\\", \\\"selected_column_selector_option\\\": \\\"all_but_by_header_name\\\"}, \\\"column_selector_options_2\\\": {\\\"__current_case__\\\": 2, \\\"col2\\\": \\\"Class\\\", \\\"selected_column_selector_option2\\\": \\\"by_header_name\\\"}, \\\"header1\\\": \\\"true\\\", \\\"header2\\\": \\\"true\\\", \\\"infile1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input\\\": \\\"tabular\\\"}, \\\"sampling_methods\\\": {\\\"__current_case__\\\": 0, \\\"options\\\": {\\\"algorithm\\\": \\\"auto\\\", \\\"leaf_size\\\": \\\"30\\\", \\\"n_neighbors\\\": \\\"5\\\", \\\"weights\\\": \\\"uniform\\\"}, \\\"sampling_method\\\": \\\"KNeighborsClassifier\\\"}, \\\"selected_algorithm\\\": \\\"nneighbors\\\"}, \\\"selected_task\\\": \\\"train\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "1c441ec4-0f66-436b-a762-e92c646f3185", + "workflow_outputs": [] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_svm_classifier/sklearn_svm_classifier/1.0.8.2", + "errors": null, + "id": 6, + "input_connections": { + "selected_tasks|selected_algorithms|input_options|infile1": { + "id": 0, + "output_name": "output" + }, + "selected_tasks|selected_algorithms|input_options|infile2": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Support vector machines (SVMs)", + "outputs": [ + { + "name": "outfile_fit", + "type": "zip" + } + ], + "position": { + "left": 420, + "top": 560 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_svm_classifier/sklearn_svm_classifier/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "d2afc87db26b", + "name": "sklearn_svm_classifier", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 1, \\\"selected_algorithms\\\": {\\\"__current_case__\\\": 2, \\\"input_options\\\": {\\\"__current_case__\\\": 0, \\\"column_selector_options_1\\\": {\\\"__current_case__\\\": 3, \\\"col1\\\": \\\"Class\\\", \\\"selected_column_selector_option\\\": \\\"all_but_by_header_name\\\"}, \\\"column_selector_options_2\\\": {\\\"__current_case__\\\": 2, \\\"col2\\\": \\\"Class\\\", \\\"selected_column_selector_option2\\\": \\\"by_header_name\\\"}, \\\"header1\\\": \\\"true\\\", \\\"header2\\\": \\\"true\\\", \\\"infile1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input\\\": \\\"tabular\\\"}, \\\"options\\\": {\\\"C\\\": \\\"1.0\\\", \\\"dual\\\": \\\"true\\\", \\\"fit_intercept\\\": \\\"true\\\", \\\"intercept_scaling\\\": \\\"1.0\\\", \\\"loss\\\": \\\"squared_hinge\\\", \\\"max_iter\\\": \\\"1000\\\", \\\"multi_class\\\": \\\"ovr\\\", \\\"penalty\\\": \\\"l2\\\", \\\"random_state\\\": \\\"\\\", \\\"tol\\\": \\\"0.001\\\"}, \\\"selected_algorithm\\\": \\\"LinearSVC\\\"}, \\\"selected_task\\\": \\\"train\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "c09be878-c47d-4af8-90a2-8f9f171f89c4", + "workflow_outputs": [] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_ensemble/sklearn_ensemble/1.0.8.2", + "errors": null, + "id": 7, + "input_connections": { + "selected_tasks|selected_algorithms|input_options|infile1": { + "id": 0, + "output_name": "output" + }, + "selected_tasks|selected_algorithms|input_options|infile2": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Ensemble methods", + "outputs": [ + { + "name": "outfile_fit", + "type": "zip" + } + ], + "position": { + "left": 420, + "top": 680 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_ensemble/sklearn_ensemble/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "3ab7af14f1b5", + "name": "sklearn_ensemble", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"selected_tasks\": \"{\\\"__current_case__\\\": 1, \\\"selected_algorithms\\\": {\\\"__current_case__\\\": 0, \\\"input_options\\\": {\\\"__current_case__\\\": 0, \\\"column_selector_options_1\\\": {\\\"__current_case__\\\": 3, \\\"col1\\\": \\\"Class\\\", \\\"selected_column_selector_option\\\": \\\"all_but_by_header_name\\\"}, \\\"column_selector_options_2\\\": {\\\"__current_case__\\\": 2, \\\"col2\\\": \\\"Class\\\", \\\"selected_column_selector_option2\\\": \\\"by_header_name\\\"}, \\\"header1\\\": \\\"true\\\", \\\"header2\\\": \\\"true\\\", \\\"infile1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"infile2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input\\\": \\\"tabular\\\"}, \\\"options\\\": {\\\"bootstrap\\\": \\\"true\\\", \\\"criterion\\\": \\\"gini\\\", \\\"max_depth\\\": \\\"\\\", \\\"max_leaf_nodes\\\": \\\"\\\", \\\"min_samples_leaf\\\": \\\"1\\\", \\\"min_samples_split\\\": \\\"2\\\", \\\"min_weight_fraction_leaf\\\": \\\"0.0\\\", \\\"n_estimators\\\": \\\"100\\\", \\\"oob_score\\\": \\\"false\\\", \\\"random_state\\\": \\\"\\\", \\\"select_max_features\\\": {\\\"__current_case__\\\": 0, \\\"max_features\\\": \\\"auto\\\"}, \\\"warm_start\\\": \\\"false\\\"}, \\\"selected_algorithm\\\": \\\"RandomForestClassifier\\\"}, \\\"selected_task\\\": \\\"train\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "9aad05c6-ee98-48fa-b6f7-9afb41bb59b2", + "workflow_outputs": [] + }, + "8": { + "annotation": "", + "content_id": "Remove beginning1", + "errors": null, + "id": 8, + "input_connections": { + "input": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Remove beginning", + "outputs": [ + { + "name": "out_file1", + "type": "input" + } + ], + "position": { + "left": 420, + "top": 320 + }, + "post_job_actions": {}, + "tool_id": "Remove beginning1", + "tool_state": "{\"input\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"num_lines\": \"\\\"1\\\"\", \"__page__\": null}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "a4e05203-d91f-416b-92fb-c93c63c10c7d", + "workflow_outputs": [] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_estimator_attributes/sklearn_estimator_attributes/1.0.8.2", + "errors": null, + "id": 9, + "input_connections": { + "infile_object": { + "id": 3, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Estimator attributes", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 420, + "top": 800 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_estimator_attributes/sklearn_estimator_attributes/1.0.8.2", + "tool_shed_repository": { + "changeset_revision": "bd27a211182a", + "name": "sklearn_estimator_attributes", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"attribute_type\": \"\\\"get_params\\\"\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"infile_object\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__page__\": null}", + "tool_version": "1.0.8.2", + "type": "tool", + "uuid": "dfb666ff-c252-4eb1-a6d0-2fbbed72b3e0", + "workflow_outputs": [] + } + }, + "uuid": "8bd5d426-c45e-401a-8274-613f3708a1d3", + "version": 1 +} diff --git a/topics/statistics/tutorials/classification_regression/workflows/classification_LSVC-test.yml b/topics/statistics/tutorials/classification_regression/workflows/classification_LSVC-test.yml new file mode 100644 index 00000000000000..8fabf7846f4ebc --- /dev/null +++ b/topics/statistics/tutorials/classification_regression/workflows/classification_LSVC-test.yml @@ -0,0 +1,28 @@ +--- +- doc: Test Linear SVC classifier workflow + job: + breast-w_train: + class: File + location: https://zenodo.org/record/3248907/files/breast-w_train.tsv + filetype: tabular + breast-w_test: + class: File + location: https://zenodo.org/record/3248907/files/breast-w_test.tsv + filetype: tabular + breast-w_targets: + class: File + location: https://zenodo.org/record/3248907/files/breast-w_targets.tsv + filetype: tabular + outputs: + output_roc: + asserts: + has_text: + text: '<html>' + output_confusion: + asserts: + has_text: + text: '<html>' + output_prf: + asserts: + has_text: + text: '<html>' diff --git a/topics/statistics/tutorials/classification_regression/workflows/classification_LSVC.ga b/topics/statistics/tutorials/classification_regression/workflows/classification_LSVC.ga index 3e91c0fdcf7e52..c5ac4fd2a172f5 100644 --- a/topics/statistics/tutorials/classification_regression/workflows/classification_LSVC.ga +++ b/topics/statistics/tutorials/classification_regression/workflows/classification_LSVC.ga @@ -215,17 +215,17 @@ { "output_name": "output_roc", "uuid": "0fac82f3-c1b2-482f-a31f-30b623a0f223", - "label": null + "label": "output_roc" }, { "output_name": "output_confusion", "uuid": "431f3596-7b80-44f0-83ee-dda8c58e1e8c", - "label": null + "label": "output_confusion" }, { "output_name": "output_prf", "uuid": "ab62de11-fa69-4d59-9ebe-d5d0562f3c18", - "label": null + "label": "output_prf" } ], "input_connections": { diff --git a/topics/statistics/tutorials/classification_regression/workflows/regression_GradientBoosting-test.yml b/topics/statistics/tutorials/classification_regression/workflows/regression_GradientBoosting-test.yml new file mode 100644 index 00000000000000..da2374725774a8 --- /dev/null +++ b/topics/statistics/tutorials/classification_regression/workflows/regression_GradientBoosting-test.yml @@ -0,0 +1,28 @@ +--- +- doc: Test Gradient Boosting regressor workflow + job: + body_fat_train: + class: File + location: https://zenodo.org/record/3248907/files/body_fat_train.tsv + filetype: tabular + body_fat_test: + class: File + location: https://zenodo.org/record/3248907/files/body_fat_test.tsv + filetype: tabular + body_fat_test_labels: + class: File + location: https://zenodo.org/record/3248907/files/body_fat_test_labels.tsv + filetype: tabular + outputs: + output_scatter_plot: + asserts: + has_text: + text: '<html>' + output_actual_vs_pred: + asserts: + has_text: + text: '<html>' + output_residual_plot: + asserts: + has_text: + text: '<html>' diff --git a/topics/statistics/tutorials/classification_regression/workflows/regression_GradientBoosting.ga b/topics/statistics/tutorials/classification_regression/workflows/regression_GradientBoosting.ga index 3d6d20412e7659..342eeb6b079250 100644 --- a/topics/statistics/tutorials/classification_regression/workflows/regression_GradientBoosting.ga +++ b/topics/statistics/tutorials/classification_regression/workflows/regression_GradientBoosting.ga @@ -215,17 +215,17 @@ { "output_name": "output_scatter_plot", "uuid": "cf1a5f94-f79d-4d13-b142-c3e20e25b658", - "label": null + "label": "output_scatter_plot" }, { "output_name": "output_actual_vs_pred", "uuid": "e86ba3fd-3f85-4ba9-ad66-4c1e5caa875a", - "label": null + "label": "output_actual_vs_pred" }, { "output_name": "output_residual_plot", "uuid": "2cbc04d3-d2d9-4623-b63d-51f1b024d611", - "label": null + "label": "output_residual_plot" } ], "input_connections": { diff --git a/topics/statistics/tutorials/clustering_machinelearning/data-library.yaml b/topics/statistics/tutorials/clustering_machinelearning/data-library.yaml new file mode 100644 index 00000000000000..81fb7aea9492bb --- /dev/null +++ b/topics/statistics/tutorials/clustering_machinelearning/data-library.yaml @@ -0,0 +1,27 @@ +--- +destination: + type: library + name: GTN - Material + description: Galaxy Training Network Material + synopsis: Galaxy Training Network Material. See https://training.galaxyproject.org +items: +- name: Statistics and machine learning + description: Using clustering algorithms as an unsupervised machine learning methods using Galaxy tools + items: + - name: Clustering in Machine Learning + items: + - name: 'DOI: 10.5281/zenodo.3813447' + description: latest + items: + - url: https://zenodo.org/record/3813447/files/iris.csv + src: url + ext: csv + info: https://zenodo.org/record/3813447#.XrVJJHUzaV4 + - url: https://zenodo.org/record/3813447/files/moon.csv + src: url + ext: csv + info: https://zenodo.org/record/3813447#.XrVJJHUzaV4 + - url: https://zenodo.org/record/3813447/files/circles.csv + src: url + ext: csv + info: https://zenodo.org/record/3813447#.XrVJJHUzaV4 diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_clustering_1.png b/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_clustering_1.png new file mode 100644 index 00000000000000..f47fc6fb2ba5a1 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_clustering_1.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_clustering_2.png b/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_clustering_2.png new file mode 100644 index 00000000000000..9ed9c6d597f1ea Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_clustering_2.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_iris.png b/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_iris.png new file mode 100644 index 00000000000000..c0e628edc6eaf9 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/Hierarchical_iris.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/circles_clustering.png b/topics/statistics/tutorials/clustering_machinelearning/images/circles_clustering.png new file mode 100644 index 00000000000000..ce37687b796346 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/circles_clustering.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/circles_moon_scatter.png b/topics/statistics/tutorials/clustering_machinelearning/images/circles_moon_scatter.png new file mode 100644 index 00000000000000..00881faf220977 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/circles_moon_scatter.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/circles_scatter.png b/topics/statistics/tutorials/clustering_machinelearning/images/circles_scatter.png new file mode 100644 index 00000000000000..fdf4fe9f556d28 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/circles_scatter.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/data_after_clustering.png b/topics/statistics/tutorials/clustering_machinelearning/images/data_after_clustering.png new file mode 100644 index 00000000000000..db3ad843fc60e6 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/data_after_clustering.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/data_before_clustering.png b/topics/statistics/tutorials/clustering_machinelearning/images/data_before_clustering.png new file mode 100644 index 00000000000000..825456ec32c4a7 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/data_before_clustering.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_circles.png b/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_circles.png new file mode 100644 index 00000000000000..87150941450c10 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_circles.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_moon.png b/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_moon.png new file mode 100644 index 00000000000000..73f2aa0a6f42ec Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_moon.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_scatter.png b/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_scatter.png new file mode 100644 index 00000000000000..d1ae7ed3e47da0 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/dbscan_scatter.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_circles.png b/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_circles.png new file mode 100644 index 00000000000000..69e27ec42cd8f0 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_circles.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_moon.png b/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_moon.png new file mode 100644 index 00000000000000..518175a2a55132 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_moon.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_scatter.png b/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_scatter.png new file mode 100644 index 00000000000000..bf285e94170835 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/hierarchical_scatter.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/iris_flowers.png b/topics/statistics/tutorials/clustering_machinelearning/images/iris_flowers.png new file mode 100644 index 00000000000000..db18d025167247 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/iris_flowers.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/k_means_circles.png b/topics/statistics/tutorials/clustering_machinelearning/images/k_means_circles.png new file mode 100644 index 00000000000000..e7a198695c6c8d Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/k_means_circles.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/k_means_moon.png b/topics/statistics/tutorials/clustering_machinelearning/images/k_means_moon.png new file mode 100644 index 00000000000000..bc103ffba76a66 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/k_means_moon.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/k_means_scatter.png b/topics/statistics/tutorials/clustering_machinelearning/images/k_means_scatter.png new file mode 100644 index 00000000000000..3293eeabd7a099 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/k_means_scatter.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/moon_clustering.png b/topics/statistics/tutorials/clustering_machinelearning/images/moon_clustering.png new file mode 100644 index 00000000000000..62bf77ba695a8e Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/moon_clustering.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/moon_scatter.png b/topics/statistics/tutorials/clustering_machinelearning/images/moon_scatter.png new file mode 100644 index 00000000000000..69ea5585597714 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/moon_scatter.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/number_of_clusters.png b/topics/statistics/tutorials/clustering_machinelearning/images/number_of_clusters.png new file mode 100644 index 00000000000000..6c1ac389a11c98 Binary files /dev/null and b/topics/statistics/tutorials/clustering_machinelearning/images/number_of_clusters.png differ diff --git a/topics/statistics/tutorials/clustering_machinelearning/images/raceid_distance.svg b/topics/statistics/tutorials/clustering_machinelearning/images/raceid_distance.svg new file mode 100644 index 00000000000000..b7a91922561aba --- /dev/null +++ b/topics/statistics/tutorials/clustering_machinelearning/images/raceid_distance.svg @@ -0,0 +1 @@ +<svg version="1.1" viewBox="0.0 0.0 571.2335958005249 349.26771653543307" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l571.2336 0l0 349.26773l-571.2336 0l0 -349.26773z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l571.2336 0l0 349.26773l-571.2336 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m24.973753 52.05512l100.53543 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m24.973753 52.05512l100.53543 0" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m57.07349 33.622047l0 82.267715" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m57.07349 33.622047l0 82.267715" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m19.908136 20.036745l110.83465 0l0 101.76378l-110.83465 0z" fill-rule="evenodd"/><path fill="#ff0000" d="m68.18235 42.00362l-1.9375 0l0 4.953125l-2.5624962 0l0 -13.265625l4.453121 0q1.09375 0 1.984375 0.265625q0.90625 0.25 1.53125 0.765625q0.640625 0.5 0.96875 1.25q0.34375 0.734375 0.34375 1.71875q0 0.71875 -0.171875 1.28125q-0.15625 0.5625 -0.46875 1.015625q-0.3125 0.453125 -0.765625 0.796875q-0.4375 0.328125 -0.984375 0.578125l2.859375 5.46875l0 0.125l-2.75 0l-2.5 -4.953125zm-1.9375 -2.078125l1.890625 0q1.09375 0 1.671875 -0.546875q0.59375 -0.5625 0.59375 -1.515625q0 -0.984375 -0.578125 -1.53125q-0.5625 -0.5625 -1.6875 -0.5625l-1.890625 0l0 4.15625z" fill-rule="nonzero"/><path fill="#ff00ff" d="m88.80787 42.09737l0 4.859375l-2.5625 0l0 -13.265625l4.53125 0q1.09375 0 1.96875 0.3125q0.875 0.3125 1.484375 0.875q0.609375 0.5625 0.9375 1.34375q0.34375 0.78125 0.34375 1.75q0 0.890625 -0.34375 1.640625q-0.328125 0.75 -0.9375 1.3125q-0.609375 0.546875 -1.484375 0.859375q-0.875 0.3125 -1.96875 0.3125l-1.96875 0zm0 -2.078125l1.96875 0q0.546875 0 0.9375 -0.15625q0.40625 -0.171875 0.671875 -0.453125q0.28125 -0.28125 0.40625 -0.65625q0.140625 -0.375 0.140625 -0.765625q0 -0.46875 -0.140625 -0.859375q-0.125 -0.40625 -0.40625 -0.703125q-0.265625 -0.3125 -0.671875 -0.484375q-0.390625 -0.171875 -0.9375 -0.171875l-1.96875 0l0 4.25z" fill-rule="nonzero"/><path fill="#9900ff" d="m112.85526 43.25362l2.515625 -9.5625l2.8125 0l-4.015625 13.265625l-2.59375 0l-4.015625 -13.265625l2.828125 0l2.46875 9.5625z" fill-rule="nonzero"/><path fill="#000000" d="m39.080013 67.22237q-0.84375 0.984375 -1.9375 1.453125q-1.078125 0.46875 -2.375 0.46875q-0.8125 -0.015625 -1.5 -0.25q-0.6875 -0.25 -1.234375 -0.671875q-0.5468769 -0.421875 -0.9531269 -1.0q-0.40625 -0.578125 -0.6875 -1.234375q-0.28125 -0.671875 -0.421875 -1.40625q-0.140625 -0.7343712 -0.15625 -1.4843712l0 -1.53125q0.015625 -0.75 0.140625 -1.46875q0.125 -0.734375 0.375 -1.40625q0.25 -0.6875 0.625 -1.265625q0.390625 -0.578125 0.921875 -1.0q0.5312519 -0.421875 1.2031269 -0.671875q0.6875 -0.25 1.515625 -0.25q0.9375 0 1.71875 0.296875q0.78125 0.28125 1.359375 0.8125q0.59375 0.53125 0.9375 1.296875q0.359375 0.75 0.4375 1.671875l-1.65625 0q-0.109375 -0.578125 -0.3125 -1.0625q-0.203125 -0.484375 -0.546875 -0.828125q-0.34375 -0.34375 -0.828125 -0.53125q-0.46875 -0.203125 -1.09375 -0.203125q-0.609375 0 -1.078125 0.203125q-0.453125 0.203125 -0.796875 0.546875q-0.34375 0.34375 -0.578125 0.8125q-0.2187519 0.453125 -0.3750019 0.96875q-0.140625 0.5 -0.203125 1.03125q-0.0625 0.53125 -0.0625 1.015625l0 1.5625q0 0.5 0.078125 1.0312462q0.078125 0.53125 0.234375 1.046875q0.1718769 0.515625 0.4218769 0.96875q0.265625 0.453125 0.625 0.796875q0.359375 0.34375 0.828125 0.5625q0.484375 0.203125 1.078125 0.203125q0.34375 0.015625 0.71875 -0.015625q0.390625 -0.046875 0.734375 -0.15625q0.359375 -0.109375 0.671875 -0.296875q0.3125 -0.1875 0.515625 -0.484375l0.015625 -2.9843712l-2.6875 0l0 -1.421875l4.296875 0l0.03125 4.874996zm8.070572 1.734375l-1.6875 0l0 -11.109371l-3.46875 1.3125l0 -1.53125l5.03125 -1.9375l0.125 0l0 13.265621zm22.39114 0l-1.6875 0l0 -11.109371l-3.46875 1.3125l0 -1.53125l5.03125 -1.9375l0.125 0l0 13.265621zm22.391144 0l-1.6875 0l0 -11.109371l-3.46875 1.3125l0 -1.53125l5.03125 -1.9375l0.125 0l0 13.265621zm25.250519 -5.078121q0 1.2656212 -0.296875 2.2499962q-0.28125 0.984375 -0.828125 1.65625q-0.546875 0.65625 -1.34375 1.015625q-0.78125 0.34375 -1.8125 0.34375q-1.0 0 -1.796875 -0.34375q-0.796875 -0.359375 -1.359375 -1.015625q-0.5625 -0.671875 -0.859375 -1.65625q-0.28125 -0.984375 -0.28125 -2.2499962l0 -3.109375q0 -1.265625 0.28125 -2.234375q0.296875 -0.984375 0.84375 -1.65625q0.546875 -0.671875 1.34375 -1.015625q0.796875 -0.359375 1.8125 -0.359375q1.015625 0 1.8125 0.359375q0.796875 0.34375 1.34375 1.015625q0.5625 0.671875 0.84375 1.65625q0.296875 0.96875 0.296875 2.234375l0 3.109375zm-6.890625 -0.328125l5.171875 -3.96875q-0.15625 -1.3125 -0.78125 -2.0q-0.625 -0.6875 -1.796875 -0.6875q-1.328125 0 -1.96875 0.890625q-0.625 0.890625 -0.625 2.625l0 3.140625zm5.203125 -2.359375l-5.15625 3.9531212q0.15625 1.28125 0.78125 1.953125q0.640625 0.671875 1.78125 0.671875q1.34375 0 1.96875 -0.90625q0.625 -0.90625 0.625 -2.625l0 -3.0468712z" fill-rule="nonzero"/><path fill="#000000" d="m39.080013 89.22237q-0.84375 0.984375 -1.9375 1.453125q-1.078125 0.46875 -2.375 0.46875q-0.8125 -0.015625 -1.5 -0.25q-0.6875 -0.25 -1.234375 -0.671875q-0.5468769 -0.421875 -0.9531269 -1.0q-0.40625 -0.578125 -0.6875 -1.234375q-0.28125 -0.671875 -0.421875 -1.40625q-0.140625 -0.734375 -0.15625 -1.484375l0 -1.53125q0.015625 -0.75 0.140625 -1.46875q0.125 -0.734375 0.375 -1.40625q0.25 -0.6875 0.625 -1.265625q0.390625 -0.578125 0.921875 -1.0q0.5312519 -0.421875 1.2031269 -0.671875q0.6875 -0.25 1.515625 -0.25q0.9375 0 1.71875 0.296875q0.78125 0.28125 1.359375 0.8125q0.59375 0.53125 0.9375 1.296875q0.359375 0.75 0.4375 1.671875l-1.65625 0q-0.109375 -0.578125 -0.3125 -1.0625q-0.203125 -0.484375 -0.546875 -0.828125q-0.34375 -0.34375 -0.828125 -0.53125q-0.46875 -0.203125 -1.09375 -0.203125q-0.609375 0 -1.078125 0.203125q-0.453125 0.203125 -0.796875 0.546875q-0.34375 0.34375 -0.578125 0.8125q-0.2187519 0.453125 -0.3750019 0.96875q-0.140625 0.5 -0.203125 1.03125q-0.0625 0.53125 -0.0625 1.015625l0 1.5625q0 0.5 0.078125 1.03125q0.078125 0.53125 0.234375 1.046875q0.1718769 0.515625 0.4218769 0.96875q0.265625 0.453125 0.625 0.796875q0.359375 0.34375 0.828125 0.5625q0.484375 0.203125 1.078125 0.203125q0.34375 0.015625 0.71875 -0.015625q0.390625 -0.046875 0.734375 -0.15625q0.359375 -0.109375 0.671875 -0.296875q0.3125 -0.1875 0.515625 -0.484375l0.015625 -2.984375l-2.6875 0l0 -1.421875l4.296875 0l0.03125 4.875zm10.742447 1.734375l-8.6875 0l0 -1.21875l4.34375 -4.828125q0.578125 -0.640625 0.96875 -1.140625q0.390625 -0.5 0.625 -0.921875q0.25 -0.421875 0.34375 -0.796875q0.109375 -0.390625 0.109375 -0.78125q0 -0.5 -0.171875 -0.921875q-0.15625 -0.4375 -0.46875 -0.75q-0.296875 -0.328125 -0.734375 -0.515625q-0.421875 -0.1875 -0.96875 -0.1875q-0.671875 0 -1.15625 0.203125q-0.484375 0.1875 -0.8125 0.53125q-0.328125 0.34375 -0.484375 0.859375q-0.15625 0.5 -0.15625 1.109375l-1.6875 0q0 -0.828125 0.28125 -1.5625q0.296875 -0.75 0.84375 -1.3125q0.546875 -0.5625 1.34375 -0.890625q0.796875 -0.328125 1.828125 -0.328125q0.9375 0 1.6875 0.28125q0.75 0.28125 1.265625 0.78125q0.515625 0.484375 0.796875 1.15625q0.28125 0.671875 0.28125 1.46875q0 0.59375 -0.203125 1.171875q-0.203125 0.578125 -0.546875 1.140625q-0.328125 0.5625 -0.78125 1.125q-0.453125 0.546875 -0.953125 1.09375l-3.5625 3.859375l6.65625 0l0 1.375zm19.719265 0l-1.6875 0l0 -11.109375l-3.46875 1.3125l0 -1.53125l5.03125 -1.9375l0.125 0l0 13.265625zm18.891144 -7.4375l1.203125 0q0.640625 0 1.125 -0.171875q0.5 -0.171875 0.828125 -0.46875q0.328125 -0.3125 0.5 -0.734375q0.171875 -0.421875 0.171875 -0.921875q0 -1.15625 -0.59375 -1.734375q-0.59375 -0.59375 -1.71875 -0.59375q-0.546875 0 -0.984375 0.171875q-0.4375 0.15625 -0.765625 0.453125q-0.3125 0.296875 -0.484375 0.71875q-0.171875 0.421875 -0.171875 0.9375l-1.6875 0q0 -0.765625 0.296875 -1.421875q0.296875 -0.671875 0.828125 -1.171875q0.53125 -0.5 1.28125 -0.78125q0.765625 -0.296875 1.6875 -0.296875q0.890625 0 1.625 0.25q0.734375 0.234375 1.265625 0.71875q0.53125 0.46875 0.8125 1.171875q0.296875 0.703125 0.296875 1.625q0 0.375 -0.125 0.796875q-0.109375 0.40625 -0.359375 0.796875q-0.25 0.375 -0.640625 0.71875q-0.375 0.34375 -0.921875 0.5625q0.65625 0.21875 1.078125 0.5625q0.4375 0.328125 0.703125 0.75q0.265625 0.421875 0.359375 0.890625q0.109375 0.453125 0.109375 0.90625q0 0.9375 -0.328125 1.65625q-0.3125 0.71875 -0.875 1.21875q-0.5625 0.484375 -1.34375 0.75q-0.765625 0.265625 -1.65625 0.265625q-0.875 0 -1.640625 -0.25q-0.765625 -0.25 -1.34375 -0.71875q-0.5625 -0.46875 -0.890625 -1.15625q-0.328125 -0.6875 -0.328125 -1.5625l1.6875 0q0 0.515625 0.171875 0.953125q0.171875 0.421875 0.5 0.734375q0.328125 0.296875 0.796875 0.46875q0.46875 0.15625 1.046875 0.15625q0.578125 0 1.03125 -0.15625q0.46875 -0.15625 0.796875 -0.453125q0.328125 -0.3125 0.5 -0.765625q0.1875 -0.46875 0.1875 -1.09375q0 -0.625 -0.203125 -1.078125q-0.203125 -0.453125 -0.578125 -0.75q-0.359375 -0.296875 -0.890625 -0.4375q-0.515625 -0.15625 -1.15625 -0.15625l-1.203125 0l0 -1.359375zm28.563019 7.4375l-8.6875 0l0 -1.21875l4.34375 -4.828125q0.578125 -0.640625 0.96875 -1.140625q0.390625 -0.5 0.625 -0.921875q0.25 -0.421875 0.34375 -0.796875q0.109375 -0.390625 0.109375 -0.78125q0 -0.5 -0.171875 -0.921875q-0.15625 -0.4375 -0.46875 -0.75q-0.296875 -0.328125 -0.734375 -0.515625q-0.421875 -0.1875 -0.96875 -0.1875q-0.671875 0 -1.15625 0.203125q-0.484375 0.1875 -0.8125 0.53125q-0.328125 0.34375 -0.484375 0.859375q-0.15625 0.5 -0.15625 1.109375l-1.6875 0q0 -0.828125 0.28125 -1.5625q0.296875 -0.75 0.84375 -1.3125q0.546875 -0.5625 1.34375 -0.890625q0.796875 -0.328125 1.828125 -0.328125q0.9375 0 1.6875 0.28125q0.75 0.28125 1.265625 0.78125q0.515625 0.484375 0.796875 1.15625q0.28125 0.671875 0.28125 1.46875q0 0.59375 -0.203125 1.171875q-0.203125 0.578125 -0.546875 1.140625q-0.328125 0.5625 -0.78125 1.125q-0.453125 0.546875 -0.953125 1.09375l-3.5625 3.859375l6.65625 0l0 1.375z" fill-rule="nonzero"/><path fill="#000000" d="m39.080013 111.22237q-0.84375 0.984375 -1.9375 1.453125q-1.078125 0.46875 -2.375 0.46875q-0.8125 -0.015625 -1.5 -0.25q-0.6875 -0.25 -1.234375 -0.671875q-0.5468769 -0.421875 -0.9531269 -1.0q-0.40625 -0.578125 -0.6875 -1.234375q-0.28125 -0.671875 -0.421875 -1.40625q-0.140625 -0.734375 -0.15625 -1.484375l0 -1.53125q0.015625 -0.75 0.140625 -1.46875q0.125 -0.734375 0.375 -1.40625q0.25 -0.6875 0.625 -1.265625q0.390625 -0.578125 0.921875 -1.0q0.5312519 -0.421875 1.2031269 -0.671875q0.6875 -0.25 1.515625 -0.25q0.9375 0 1.71875 0.296875q0.78125 0.28125 1.359375 0.8125q0.59375 0.53125 0.9375 1.296875q0.359375 0.75 0.4375 1.671875l-1.65625 0q-0.109375 -0.578125 -0.3125 -1.0625q-0.203125 -0.484375 -0.546875 -0.828125q-0.34375 -0.34375 -0.828125 -0.53125q-0.46875 -0.203125 -1.09375 -0.203125q-0.609375 0 -1.078125 0.203125q-0.453125 0.203125 -0.796875 0.546875q-0.34375 0.34375 -0.578125 0.8125q-0.2187519 0.453125 -0.3750019 0.96875q-0.140625 0.5 -0.203125 1.03125q-0.0625 0.53125 -0.0625 1.015625l0 1.5625q0 0.5 0.078125 1.03125q0.078125 0.53125 0.234375 1.046875q0.1718769 0.515625 0.4218769 0.96875q0.265625 0.453125 0.625 0.796875q0.359375 0.34375 0.828125 0.5625q0.484375 0.203125 1.078125 0.203125q0.34375 0.015625 0.71875 -0.015625q0.390625 -0.046875 0.734375 -0.15625q0.359375 -0.109375 0.671875 -0.296875q0.3125 -0.1875 0.515625 -0.484375l0.015625 -2.984375l-2.6875 0l0 -1.421875l4.296875 0l0.03125 4.875zm4.570572 -5.703125l1.203125 0q0.640625 0 1.125 -0.171875q0.5 -0.171875 0.828125 -0.46875q0.328125 -0.3125 0.5 -0.734375q0.171875 -0.421875 0.171875 -0.921875q0 -1.15625 -0.59375 -1.734375q-0.59375 -0.59375 -1.71875 -0.59375q-0.546875 0 -0.984375 0.171875q-0.4375 0.15625 -0.765625 0.453125q-0.3125 0.296875 -0.484375 0.71875q-0.171875 0.421875 -0.171875 0.9375l-1.6875 0q0 -0.765625 0.296875 -1.421875q0.296875 -0.671875 0.828125 -1.171875q0.53125 -0.5 1.28125 -0.78125q0.765625 -0.296875 1.6875 -0.296875q0.890625 0 1.625 0.25q0.734375 0.234375 1.265625 0.71875q0.53125 0.46875 0.8125 1.171875q0.296875 0.703125 0.296875 1.625q0 0.375 -0.125 0.796875q-0.109375 0.40625 -0.359375 0.796875q-0.25 0.375 -0.640625 0.71875q-0.375 0.34375 -0.921875 0.5625q0.65625 0.21875 1.078125 0.5625q0.4375 0.328125 0.703125 0.75q0.265625 0.421875 0.359375 0.890625q0.109375 0.453125 0.109375 0.90625q0 0.9375 -0.328125 1.65625q-0.3125 0.71875 -0.875 1.21875q-0.5625 0.484375 -1.34375 0.75q-0.765625 0.265625 -1.65625 0.265625q-0.875 0 -1.640625 -0.25q-0.765625 -0.25 -1.34375 -0.71875q-0.5625 -0.46875 -0.890625 -1.15625q-0.328125 -0.6875 -0.328125 -1.5625l1.6875 0q0 0.515625 0.171875 0.953125q0.171875 0.421875 0.5 0.734375q0.328125 0.296875 0.796875 0.46875q0.46875 0.15625 1.046875 0.15625q0.578125 0 1.03125 -0.15625q0.46875 -0.15625 0.796875 -0.453125q0.328125 -0.3125 0.5 -0.765625q0.1875 -0.46875 0.1875 -1.09375q0 -0.625 -0.203125 -1.078125q-0.203125 -0.453125 -0.578125 -0.75q-0.359375 -0.296875 -0.890625 -0.4375q-0.515625 -0.15625 -1.15625 -0.15625l-1.203125 0l0 -1.359375zm28.750515 2.359375q0 1.265625 -0.296875 2.25q-0.28125 0.984375 -0.828125 1.65625q-0.546875 0.65625 -1.34375 1.015625q-0.78125 0.34375 -1.8125 0.34375q-1.0 0 -1.796875 -0.34375q-0.796875 -0.359375 -1.359375 -1.015625q-0.5625 -0.671875 -0.859375 -1.65625q-0.2812462 -0.984375 -0.2812462 -2.25l0 -3.109375q0 -1.265625 0.2812462 -2.234375q0.296875 -0.984375 0.84375 -1.65625q0.546875 -0.671875 1.34375 -1.015625q0.796875 -0.359375 1.8125 -0.359375q1.015625 0 1.8125 0.359375q0.796875 0.34375 1.34375 1.015625q0.5625 0.671875 0.84375 1.65625q0.296875 0.96875 0.296875 2.234375l0 3.109375zm-6.890625 -0.328125l5.171875 -3.96875q-0.15625 -1.3125 -0.78125 -2.0q-0.625 -0.6875 -1.796875 -0.6875q-1.328125 0 -1.96875 0.890625q-0.625 0.890625 -0.625 2.625l0 3.140625zm5.203125 -2.359375l-5.15625 3.953125q0.15625 1.28125 0.78125 1.953125q0.640625 0.671875 1.78125 0.671875q1.34375 0 1.96875 -0.90625q0.625 -0.90625 0.625 -2.625l0 -3.046875zm17.719269 0.328125l1.203125 0q0.640625 0 1.125 -0.171875q0.5 -0.171875 0.828125 -0.46875q0.328125 -0.3125 0.5 -0.734375q0.171875 -0.421875 0.171875 -0.921875q0 -1.15625 -0.59375 -1.734375q-0.59375 -0.59375 -1.71875 -0.59375q-0.546875 0 -0.984375 0.171875q-0.4375 0.15625 -0.765625 0.453125q-0.3125 0.296875 -0.484375 0.71875q-0.171875 0.421875 -0.171875 0.9375l-1.6875 0q0 -0.765625 0.296875 -1.421875q0.296875 -0.671875 0.828125 -1.171875q0.53125 -0.5 1.28125 -0.78125q0.765625 -0.296875 1.6875 -0.296875q0.890625 0 1.625 0.25q0.734375 0.234375 1.265625 0.71875q0.53125 0.46875 0.8125 1.171875q0.296875 0.703125 0.296875 1.625q0 0.375 -0.125 0.796875q-0.109375 0.40625 -0.359375 0.796875q-0.25 0.375 -0.640625 0.71875q-0.375 0.34375 -0.921875 0.5625q0.65625 0.21875 1.078125 0.5625q0.4375 0.328125 0.703125 0.75q0.265625 0.421875 0.359375 0.890625q0.109375 0.453125 0.109375 0.90625q0 0.9375 -0.328125 1.65625q-0.3125 0.71875 -0.875 1.21875q-0.5625 0.484375 -1.34375 0.75q-0.765625 0.265625 -1.65625 0.265625q-0.875 0 -1.640625 -0.25q-0.765625 -0.25 -1.34375 -0.71875q-0.5625 -0.46875 -0.890625 -1.15625q-0.328125 -0.6875 -0.328125 -1.5625l1.6875 0q0 0.515625 0.171875 0.953125q0.171875 0.421875 0.5 0.734375q0.328125 0.296875 0.796875 0.46875q0.46875 0.15625 1.046875 0.15625q0.578125 0 1.03125 -0.15625q0.46875 -0.15625 0.796875 -0.453125q0.328125 -0.3125 0.5 -0.765625q0.1875 -0.46875 0.1875 -1.09375q0 -0.625 -0.203125 -1.078125q-0.203125 -0.453125 -0.578125 -0.75q-0.359375 -0.296875 -0.890625 -0.4375q-0.515625 -0.15625 -1.15625 -0.15625l-1.203125 0l0 -1.359375zm27.266144 2.984375l1.84375 0l0 1.375l-1.84375 0l0 3.078125l-1.6875 0l0 -3.078125l-6.046875 0l0 -1.0l5.9375 -9.1875l1.796875 0l0 8.8125zm-5.875 0l4.1875 0l0 -6.5625l-0.28125 0.5l-3.90625 6.0625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m323.27945 138.31126l194.4252 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m323.27945 138.31126l188.4252 0" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m511.70465 139.963l4.538086 -1.6517334l-4.538086 -1.6517334z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m323.27945 138.31126l0 -106.58267" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m323.27945 138.31126l0 -100.58267" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="1.0" stroke-linecap="butt" d="m324.93118 37.728592l-1.6517334 -4.5380974l-1.6517334 4.5380974z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m322.43048 138.31252l173.35434 -46.582687" fill-rule="evenodd"/><path stroke="#999999" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m322.43048 138.31252l167.55988 -45.025635" fill-rule="evenodd"/><path fill="#999999" stroke="#999999" stroke-width="1.0" stroke-linecap="butt" d="m490.419 94.88203l3.9539795 -2.7728195l-4.811249 -0.41747284z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m495.91986 133.25734l47.559082 0l0 35.46457l-47.559082 0z" fill-rule="evenodd"/><path fill="#000000" d="m513.6386 156.11734q-0.71875 0.84375 -1.65625 1.265625q-0.921875 0.40625 -2.03125 0.390625q-0.703125 0 -1.296875 -0.203125q-0.578125 -0.21875 -1.046875 -0.578125q-0.46875 -0.375 -0.828125 -0.859375q-0.34375 -0.5 -0.59375 -1.0625q-0.234375 -0.578125 -0.359375 -1.203125q-0.109375 -0.640625 -0.125 -1.28125l0 -1.3125q0.015625 -0.640625 0.109375 -1.265625q0.109375 -0.625 0.328125 -1.203125q0.21875 -0.578125 0.546875 -1.078125q0.328125 -0.5 0.78125 -0.859375q0.46875 -0.359375 1.046875 -0.5625q0.578125 -0.21875 1.296875 -0.21875q0.796875 0 1.46875 0.25q0.671875 0.234375 1.171875 0.703125q0.5 0.453125 0.796875 1.09375q0.3125 0.640625 0.375 1.4375l-1.421875 0q-0.09375 -0.484375 -0.28125 -0.90625q-0.171875 -0.421875 -0.46875 -0.71875q-0.28125 -0.296875 -0.6875 -0.453125q-0.40625 -0.171875 -0.953125 -0.171875q-0.515625 0 -0.921875 0.171875q-0.390625 0.171875 -0.6875 0.46875q-0.296875 0.296875 -0.5 0.703125q-0.1875 0.390625 -0.3125 0.828125q-0.125 0.4375 -0.1875 0.890625q-0.046875 0.453125 -0.046875 0.875l0 1.328125q0.015625 0.4375 0.078125 0.890625q0.0625 0.453125 0.203125 0.890625q0.140625 0.4375 0.359375 0.828125q0.21875 0.390625 0.53125 0.6875q0.3125 0.296875 0.71875 0.484375q0.40625 0.171875 0.921875 0.171875q0.296875 0.015625 0.609375 -0.015625q0.328125 -0.03125 0.625 -0.125q0.3125 -0.09375 0.578125 -0.25q0.265625 -0.171875 0.453125 -0.421875l0.015625 -2.5625l-2.3125 0l0 -1.21875l3.6875 0l0.015625 4.171875zm6.9296875 1.5l-1.4375 0l0 -9.53125l-2.984375 1.125l0 -1.3125l4.3125 -1.65625l0.109375 0l0 11.375z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m289.14417 47.69279l0 -47.559055l35.46457 0l0 47.559055z" fill-rule="evenodd"/><path fill="#000000" d="m312.00415 29.97404q0.84375 0.71875 1.265625 1.65625q0.40625 0.9218769 0.390625 2.031252q0 0.703125 -0.203125 1.296875q-0.21875 0.578125 -0.578125 1.046875q-0.375 0.46875 -0.859375 0.828125q-0.5 0.34375 -1.0625 0.59375q-0.578125 0.234375 -1.203125 0.359375q-0.640625 0.109375 -1.28125 0.125l-1.3125 0q-0.640625 -0.015625 -1.265625 -0.109375q-0.625 -0.109375 -1.203125 -0.328125q-0.578125 -0.21875 -1.078125 -0.546875q-0.5 -0.328125 -0.859375 -0.78125q-0.359375 -0.46875 -0.5625 -1.046875q-0.21875 -0.578125 -0.21875 -1.296875q0 -0.796875 0.25 -1.46875q0.234375 -0.6718769 0.703125 -1.1718769q0.453125 -0.5 1.09375 -0.796875q0.640625 -0.3125 1.4375 -0.375l0 1.421875q-0.484375 0.09375 -0.90625 0.28125q-0.421875 0.171875 -0.71875 0.4687519q-0.296875 0.28125 -0.453125 0.6875q-0.171875 0.40625 -0.171875 0.953125q0 0.515625 0.171875 0.921875q0.171875 0.390625 0.46875 0.6875q0.296875 0.296875 0.703125 0.5q0.390625 0.1875 0.828125 0.3125q0.4375 0.125 0.890625 0.1875q0.453125 0.046875 0.875 0.046875l1.328125 0q0.4375 -0.015625 0.890625 -0.078125q0.453125 -0.0625 0.890625 -0.203125q0.4375 -0.140625 0.828125 -0.359375q0.390625 -0.21875 0.6875 -0.53125q0.296875 -0.3125 0.484375 -0.71875q0.171875 -0.40625 0.171875 -0.921875q0.015625 -0.296875 -0.015625 -0.609375q-0.03125 -0.328125 -0.125 -0.625q-0.09375 -0.3125 -0.25 -0.5781269q-0.171875 -0.265625 -0.421875 -0.453125l-2.5625 -0.015625l0 2.312502l-1.21875 0l0 -3.687502l4.171875 -0.015625zm1.5 -9.2265625l0 7.453125l-1.046875 0l-4.140625 -3.71875q-0.546875 -0.5 -0.96875 -0.828125q-0.4375 -0.34375 -0.796875 -0.546875q-0.375 -0.203125 -0.6875 -0.28125q-0.328125 -0.09375 -0.671875 -0.09375q-0.421875 0 -0.796875 0.140625q-0.375 0.125 -0.640625 0.390625q-0.28125 0.265625 -0.4375 0.640625q-0.15625 0.359375 -0.15625 0.828125q0 0.578125 0.171875 1.0q0.15625 0.40625 0.453125 0.6875q0.296875 0.28125 0.734375 0.421875q0.421875 0.125 0.953125 0.125l0 1.453125q-0.71875 0 -1.34375 -0.25q-0.640625 -0.25 -1.109375 -0.71875q-0.484375 -0.46875 -0.765625 -1.15625q-0.28125 -0.6875 -0.28125 -1.5625q0 -0.796875 0.234375 -1.4375q0.234375 -0.65625 0.65625 -1.09375q0.421875 -0.453125 1.0 -0.6875q0.578125 -0.234375 1.265625 -0.234375q0.5 0 1.0 0.171875q0.5 0.171875 0.984375 0.46875q0.484375 0.28125 0.953125 0.671875q0.46875 0.390625 0.9375 0.8125l3.3125 3.0625l0 -5.71875l1.1875 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m457.78168 69.99561l45.543304 -13.732285l10.236237 33.95275l-45.543335 13.732285z" fill-rule="evenodd"/><path fill="#999999" d="m481.3446 86.76744q-0.44458008 1.0153275 -1.220398 1.689888q-0.76538086 0.6550827 -1.8320312 0.96038055q-0.67318726 0.20298767 -1.300293 0.17990875q-0.6166382 -0.042541504 -1.1691589 -0.251297q-0.55703735 -0.22371674 -1.0409241 -0.5837326q-0.4734497 -0.37947845 -0.8751831 -0.84586334q-0.39126587 -0.4858551 -0.6913452 -1.048172q-0.28964233 -0.5817795 -0.48953247 -1.1906204l-0.3788452 -1.2566376q-0.1699524 -0.6178665 -0.2605896 -1.2433243q-0.07571411 -0.62997437 -0.03314209 -1.2466431q0.04257202 -0.6166611 0.21240234 -1.1901016q0.16983032 -0.57344055 0.49990845 -1.0483322q0.34506226 -0.47940063 0.8399353 -0.84077454q0.49038696 -0.37633514 1.1785278 -0.58382416q0.76293945 -0.2300415 1.4783936 -0.1846466q0.710907 0.030441284 1.3249207 0.33489227q0.6094971 0.28949738 1.0786743 0.81715393q0.48410034 0.52313995 0.7739563 1.2680511l-1.3613281 0.41047668q-0.22958374 -0.4366989 -0.5308838 -0.78648376q-0.28631592 -0.35430145 -0.65625 -0.55283356q-0.35498047 -0.2030487 -0.789032 -0.23536682q-0.43856812 -0.047286987 -0.9621582 0.110588074q-0.49365234 0.14885712 -0.8330078 0.43069458q-0.32437134 0.27732086 -0.5229187 0.6472626q-0.19854736 0.3699417 -0.27575684 0.817543q-0.06677246 0.42812347 -0.060150146 0.88308716q0.006591797 0.45496368 0.077545166 0.9068451q0.0859375 0.4473648 0.20770264 0.8512802l0.38336182 1.2715988q0.14123535 0.41436005 0.33187866 0.83016205q0.19064331 0.41579437 0.4515686 0.794075q0.2609253 0.37828064 0.58309937 0.68912506q0.3222046 0.31085205 0.7070923 0.5048752q0.3848877 0.19402313 0.8279724 0.25626373q0.43856812 0.047279358 0.93222046 -0.10157013q0.28875732 -0.070739746 0.57891846 -0.19087982q0.30514526 -0.12464142 0.5623169 -0.30010223q0.27212524 -0.17997742 0.48135376 -0.40625763q0.20471191 -0.24124146 0.31204224 -0.534729l-0.7247009 -2.4579315l-2.2140503 0.66757965l-0.35177612 -1.1668701l3.530487 -1.0645218l1.2191772 3.9897842zm2.350708 -5.8168945l0.9873352 -0.29769897q0.5235901 -0.15787506 0.88690186 -0.41430664q0.35882568 -0.2713852 0.5559387 -0.5919342q0.19259644 -0.33551025 0.22351074 -0.7201843q0.04586792 -0.38919067 -0.075927734 -0.7931061q-0.28863525 -0.9574356 -0.92663574 -1.2873001q-0.6230469 -0.33437347 -1.5505371 -0.05471039q-0.4487915 0.13532257 -0.76724243 0.3782196q-0.32296753 0.22793579 -0.51556396 0.56344604q-0.18215942 0.31604004 -0.22799683 0.7052231q-0.030914307 0.38467407 0.09988403 0.81851196l-1.3912659 0.41949463q-0.1894226 -0.6283188 -0.11242676 -1.2390442q0.08743286 -0.63020325 0.3994751 -1.1649246q0.32250977 -0.5541992 0.8682251 -0.9635391q0.5411682 -0.42429352 1.3041382 -0.65434265q0.7330322 -0.22102356 1.3900452 -0.20697021q0.67196655 0.009536743 1.2230835 0.26768494q0.5510864 0.2581482 0.9663391 0.7694168q0.41073608 0.49630737 0.6407776 1.2592621q0.094696045 0.31415558 0.09371948 0.6898117q0.009460449 0.35617828 -0.10525513 0.73349q-0.09976196 0.3727951 -0.34320068 0.75627136q-0.22845459 0.37895966 -0.6081543 0.6892853q0.57769775 0.021644592 1.0224304 0.19763184q0.44021606 0.16101837 0.75338745 0.44194794q0.3131714 0.28092957 0.52020264 0.64282227q0.20251465 0.34693146 0.3152771 0.720932q0.23001099 0.7629547 0.1411438 1.442543q-0.078430176 0.6601181 -0.42041016 1.203865q-0.34197998 0.5437546 -0.91760254 0.9621124q-0.565155 0.39888763 -1.2981873 0.6199112q-0.7180481 0.21650696 -1.4049988 0.21147919q-0.6914673 -0.019989014 -1.2724609 -0.26911163q-0.58102417 -0.24913025 -1.032135 -0.71694183q-0.44067383 -0.48728943 -0.6571655 -1.2053604l1.3912659 -0.41949463q0.12628174 0.41887665 0.36917114 0.73731995q0.25332642 0.29897308 0.5992737 0.4720993q0.34143066 0.15816498 0.7709961 0.17552185q0.4295349 0.017364502 0.89328 -0.12246704q0.47872925 -0.14434052 0.8166199 -0.3767929q0.35287476 -0.23695374 0.5454712 -0.572464q0.19262695 -0.33551025 0.21450806 -0.7501068q0.032318115 -0.43405914 -0.121032715 -0.94270325q-0.15332031 -0.5086365 -0.43063354 -0.83301544q-0.27731323 -0.32437897 -0.66363525 -0.4690094q-0.375885 -0.16410828 -0.8457947 -0.15297699q-0.45495605 0.0066223145 -0.97854614 0.16449738l-0.9873352 0.29769897l-0.33825684 -1.121994z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m365.73227 138.31117l0 9.354324" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m365.73227 138.31117l0 9.354324" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m405.73227 138.31117l0 9.354324" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m405.73227 138.31117l0 9.354324" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m445.73227 138.31117l0 9.354324" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m445.73227 138.31117l0 9.354324" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m485.73227 138.31117l0 9.354324" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m485.73227 138.31117l0 9.354324" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m323.18512 98.31102l-9.480316 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m323.18512 98.31102l-9.480316 0" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m323.18512 58.311024l-9.480316 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m323.18512 58.311024l-9.480316 0" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m360.6378 128.61548l-5.952759 -6.8031464" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m360.6378 128.61548l-5.952759 -6.8031464" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m394.33334 119.279526l-5.952759 -6.8031464" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m394.33334 119.279526l-5.952759 -6.8031464" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m426.33334 110.276474l-5.952759 -6.8031464" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m426.33334 110.276474l-5.952759 -6.8031464" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m458.33334 102.276474l-5.952759 -6.8031464" fill-rule="evenodd"/><path stroke="#b7b7b7" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m458.33334 102.276474l-5.952759 -6.8031464" fill-rule="evenodd"/><g filter="url(#shadowFilter-p.1)"><use xlink:href="#p.1" transform="matrix(1.0 0.0 0.0 1.0 0.0 2.0)"/></g><defs><filter id="shadowFilter-p.1" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" stdDeviation="2.0" result="blur"/><feComponentTransfer in="blur" color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0" intercept="0.0"/><feFuncG type="linear" slope="0" intercept="0.0"/><feFuncB type="linear" slope="0" intercept="0.0"/><feFuncA type="linear" slope="0.91" intercept="0"/></feComponentTransfer></filter></defs><g id="p.1"><path fill="#000000" fill-opacity="0.0" d="m365.73227 98.50131l0 38.393707" fill-rule="evenodd"/><path stroke="#990000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="1.0,3.0" d="m365.73227 98.50131l0 38.393707" fill-rule="evenodd"/></g><g filter="url(#shadowFilter-p.2)"><use xlink:href="#p.2" transform="matrix(1.0 0.0 0.0 1.0 0.0 2.0)"/></g><defs><filter id="shadowFilter-p.2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" stdDeviation="2.0" result="blur"/><feComponentTransfer in="blur" color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0" intercept="0.0"/><feFuncG type="linear" slope="0" intercept="0.0"/><feFuncB type="linear" slope="0" intercept="0.0"/><feFuncA type="linear" slope="0.91" intercept="0"/></feComponentTransfer></filter></defs><g id="p.2"><path fill="#000000" fill-opacity="0.0" d="m365.93176 98.31233l-40.944885 0" fill-rule="evenodd"/><path stroke="#990000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="1.0,3.0" d="m365.93176 98.31233l-40.944885 0" fill-rule="evenodd"/></g><g filter="url(#shadowFilter-p.3)"><use xlink:href="#p.3" transform="matrix(1.0 0.0 0.0 1.0 0.0 2.0)"/></g><defs><filter id="shadowFilter-p.3" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" stdDeviation="2.0" result="blur"/><feComponentTransfer in="blur" color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0" intercept="0.0"/><feFuncG type="linear" slope="0" intercept="0.0"/><feFuncB type="linear" slope="0" intercept="0.0"/><feFuncA type="linear" slope="0.91" intercept="0"/></feComponentTransfer></filter></defs><g id="p.3"><path fill="#000000" fill-opacity="0.0" d="m322.08707 58.144173l135.43307 -36.314964" fill-rule="evenodd"/><path stroke="#b4a7d6" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="1.0,3.0" d="m322.08707 58.144173l135.43307 -36.314964" fill-rule="evenodd"/></g><g filter="url(#shadowFilter-p.4)"><use xlink:href="#p.4" transform="matrix(1.0 0.0 0.0 1.0 0.0 2.0)"/></g><defs><filter id="shadowFilter-p.4" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" stdDeviation="2.0" result="blur"/><feComponentTransfer in="blur" color-interpolation-filters="sRGB"><feFuncR type="linear" slope="0" intercept="0.0"/><feFuncG type="linear" slope="0" intercept="0.0"/><feFuncB type="linear" slope="0" intercept="0.0"/><feFuncA type="linear" slope="0.91" intercept="0"/></feComponentTransfer></filter></defs><g id="p.4"><path fill="#000000" fill-opacity="0.0" d="m457.85587 22.830557l0 79.08661" fill-rule="evenodd"/><path stroke="#b4a7d6" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" stroke-dasharray="1.0,3.0" d="m457.85587 22.830557l0 79.08661" fill-rule="evenodd"/></g><path fill="#9900ff" d="m455.7283 20.77753l0 0c0 -1.0523853 0.8531494 -1.9055119 1.9055176 -1.9055119l0 0c0.5053711 0 0.99005127 0.20075798 1.3474121 0.5581112c0.35733032 0.3573532 0.55810547 0.84202766 0.55810547 1.3474007l0 0c0 1.0523834 -0.8531189 1.9055119 -1.9055176 1.9055119l0 0c-1.0523682 0 -1.9055176 -0.85312843 -1.9055176 -1.9055119z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m455.7283 20.77753l0 0c0 -1.0523853 0.8531494 -1.9055119 1.9055176 -1.9055119l0 0c0.5053711 0 0.99005127 0.20075798 1.3474121 0.5581112c0.35733032 0.3573532 0.55810547 0.84202766 0.55810547 1.3474007l0 0c0 1.0523834 -0.8531189 1.9055119 -1.9055176 1.9055119l0 0c-1.0523682 0 -1.9055176 -0.85312843 -1.9055176 -1.9055119z" fill-rule="evenodd"/><path fill="#ff0000" d="m360.99213 100.1168l0 0c0 -3.6616058 2.9683228 -6.629921 6.6299133 -6.629921l0 0c1.7583618 0 3.4447327 0.6985092 4.68808 1.9418564c1.2433472 1.2433548 1.941864 2.9297028 1.941864 4.6880646l0 0c0 3.6616058 -2.9683228 6.629921 -6.629944 6.629921l0 0c-3.6615906 0 -6.6299133 -2.9683151 -6.6299133 -6.629921z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m360.99213 100.1168l0 0c0 -3.6616058 2.9683228 -6.629921 6.6299133 -6.629921l0 0c1.7583618 0 3.4447327 0.6985092 4.68808 1.9418564c1.2433472 1.2433548 1.941864 2.9297028 1.941864 4.6880646l0 0c0 3.6616058 -2.9683228 6.629921 -6.629944 6.629921l0 0c-3.6615906 0 -6.6299133 -2.9683151 -6.6299133 -6.629921z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m175.1076 81.6273l88.62991 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m175.1076 81.6273l76.62993 0" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="2.0" stroke-linecap="butt" d="m251.73753 84.93076l9.076187 -3.3034668l-9.076187 -3.3034668z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m341.60892 66.92578l47.55905 0l0 35.46456l-47.55905 0z" fill-rule="evenodd"/><path fill="#000000" d="m355.73392 86.64516l-2.265625 0l0 4.640625l-1.4375 0l0 -11.375l3.328125 0q0.796875 0.015625 1.5 0.234375q0.703125 0.203125 1.234375 0.625q0.53125 0.421875 0.828125 1.0625q0.296875 0.625 0.296875 1.484375q0 0.5625 -0.15625 1.03125q-0.15625 0.453125 -0.4375 0.828125q-0.28125 0.375 -0.671875 0.671875q-0.390625 0.28125 -0.859375 0.484375l2.40625 4.859375l0 0.09375l-1.53125 0l-2.234375 -4.640625zm-2.265625 -1.1875l1.9375 0q0.484375 -0.015625 0.90625 -0.15625q0.4375 -0.140625 0.75 -0.40625q0.328125 -0.28125 0.515625 -0.671875q0.1875 -0.40625 0.1875 -0.921875q0 -0.546875 -0.1875 -0.953125q-0.171875 -0.40625 -0.5 -0.6875q-0.3125 -0.28125 -0.75 -0.421875q-0.4375 -0.140625 -0.96875 -0.140625l-1.890625 0l0 4.359375z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m440.8731 -0.11004462l47.55905 0l0 35.46457l-47.55905 0z" fill-rule="evenodd"/><path fill="#000000" d="m452.26373 15.398081l1.34375 -4.515625l0.765625 0l-1.796875 5.6875l-0.625 0l-1.796875 -5.6875l0.765625 0l1.34375 4.515625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m32.307087 171.23097l435.24408 0l0 46.582672l-435.24408 0z" fill-rule="evenodd"/><path fill="#000000" d="m42.182087 191.2941q0 -0.953125 0.21875 -1.75q0.234375 -0.796875 0.65625 -1.359375q0.4375 -0.578125 1.046875 -0.890625q0.609375 -0.3125 1.40625 -0.3125q0.65625 0 1.15625 0.234375q0.515625 0.234375 0.90625 0.671875l0 -4.296875l2.171875 0l0 12.0l-1.953125 0l-0.109375 -0.890625q-0.40625 0.5 -0.953125 0.78125q-0.53125 0.265625 -1.234375 0.265625q-0.78125 0 -1.390625 -0.328125q-0.609375 -0.328125 -1.046875 -0.890625q-0.421875 -0.578125 -0.65625 -1.359375q-0.21875 -0.78125 -0.21875 -1.703125l0 -0.171875zm2.171875 0.171875q0 0.53125 0.09375 0.984375q0.09375 0.453125 0.296875 0.796875q0.203125 0.34375 0.515625 0.546875q0.328125 0.1875 0.78125 0.1875q0.5625 0 0.9375 -0.234375q0.375 -0.25 0.59375 -0.671875l0 -3.421875q-0.21875 -0.4375 -0.59375 -0.671875q-0.359375 -0.234375 -0.921875 -0.234375q-0.453125 0 -0.78125 0.203125q-0.328125 0.1875 -0.53125 0.546875q-0.203125 0.34375 -0.296875 0.8125q-0.09375 0.453125 -0.09375 0.984375l0 0.171875zm8.2421875 -4.328125l4.59375 0l0 6.6875l2.296875 0l0 1.765625l-6.890625 0l0 -1.765625l2.40625 0l0 -4.921875l-2.40625 0l0 -1.765625zm2.25 -2.171875q0 -0.25 0.078125 -0.453125q0.09375 -0.21875 0.25 -0.375q0.171875 -0.15625 0.40625 -0.234375q0.234375 -0.09375 0.515625 -0.09375q0.578125 0 0.90625 0.328125q0.34375 0.328125 0.34375 0.828125q0 0.515625 -0.34375 0.84375q-0.328125 0.3125 -0.90625 0.3125q-0.28125 0 -0.515625 -0.078125q-0.234375 -0.09375 -0.40625 -0.234375q-0.15625 -0.15625 -0.25 -0.375q-0.078125 -0.21875 -0.078125 -0.46875zm12.226559 8.296875q0 -0.1875 -0.09375 -0.328125q-0.09375 -0.15625 -0.328125 -0.28125q-0.21875 -0.140625 -0.609375 -0.25q-0.375 -0.109375 -0.96875 -0.21875q-0.734375 -0.140625 -1.3593712 -0.359375q-0.609375 -0.234375 -1.046875 -0.546875q-0.4375 -0.3125 -0.6875 -0.71875q-0.234375 -0.421875 -0.234375 -0.96875q0 -0.515625 0.25 -0.984375q0.25 -0.484375 0.71875 -0.84375q0.46875 -0.359375 1.140625 -0.5625q0.6718712 -0.21875 1.5156212 -0.21875q0.875 0 1.578125 0.203125q0.703125 0.203125 1.1875 0.578125q0.5 0.359375 0.75 0.859375q0.265625 0.5 0.265625 1.078125l-2.171875 0q0 -0.484375 -0.40625 -0.8125q-0.390625 -0.34375 -1.203125 -0.34375q-0.765625 0 -1.15625 0.28125q-0.3749962 0.265625 -0.3749962 0.671875q0 0.1875 0.078125 0.34375q0.078125 0.15625 0.2656212 0.296875q0.203125 0.125 0.546875 0.234375q0.34375 0.09375 0.875 0.171875q0.765625 0.125 1.421875 0.328125q0.65625 0.1875 1.125 0.5q0.484375 0.3125 0.75 0.75q0.28125 0.4375 0.28125 1.046875q0 0.5625 -0.28125 1.046875q-0.265625 0.46875 -0.765625 0.8125q-0.484375 0.34375 -1.1875 0.546875q-0.703125 0.1875 -1.578125 0.1875q-0.953125 0 -1.6874962 -0.25q-0.71875 -0.265625 -1.21875 -0.65625q-0.484375 -0.40625 -0.75 -0.921875q-0.25 -0.515625 -0.25 -1.03125l2.078125 0q0.015625 0.34375 0.171875 0.59375q0.171875 0.25 0.4218712 0.40625q0.265625 0.140625 0.59375 0.21875q0.34375 0.0625 0.6875 0.0625q0.8125 0 1.234375 -0.25q0.421875 -0.265625 0.421875 -0.671875zm8.1328125 -8.203125l0 2.078125l3.15625 0l0 1.59375l-3.15625 0l0 3.640625q0 0.453125 0.09375 0.765625q0.109375 0.3125 0.296875 0.5q0.203125 0.171875 0.484375 0.25q0.28125 0.078125 0.625 0.078125q0.25 0 0.5 -0.015625q0.265625 -0.03125 0.5 -0.0625q0.25 -0.03125 0.453125 -0.0625q0.203125 -0.046875 0.359375 -0.09375l0.203125 1.5q-0.21875 0.125 -0.53125 0.234375q-0.296875 0.09375 -0.640625 0.15625q-0.34375 0.0625 -0.71875 0.09375q-0.375 0.046875 -0.734375 0.046875q-0.6875 0 -1.265625 -0.1875q-0.5625 -0.1875 -0.96875 -0.578125q-0.390625 -0.390625 -0.609375 -0.984375q-0.21875 -0.59375 -0.21875 -1.4375l0 -3.84375l-1.9375 0l0 -1.59375l1.9375 0l0 -2.078125l2.171875 0zm10.8984375 10.53125q-0.078125 -0.15625 -0.140625 -0.359375q-0.046875 -0.203125 -0.09375 -0.4375q-0.171875 0.203125 -0.40625 0.375q-0.234375 0.171875 -0.53125 0.3125q-0.28125 0.125 -0.625 0.1875q-0.34375 0.078125 -0.734375 0.078125q-0.65625 0 -1.203125 -0.1875q-0.53125 -0.1875 -0.921875 -0.515625q-0.390625 -0.34375 -0.609375 -0.8125q-0.21875 -0.46875 -0.21875 -1.015625q0 -1.328125 0.984375 -2.0625q1.0 -0.734375 2.984375 -0.734375l1.203125 0l0 -0.5q0 -0.609375 -0.40625 -0.953125q-0.390625 -0.359375 -1.140625 -0.359375q-0.65625 0 -0.96875 0.28125q-0.296875 0.28125 -0.296875 0.765625l-2.171875 0q0 -0.546875 0.234375 -1.03125q0.234375 -0.484375 0.6875 -0.84375q0.46875 -0.375 1.125 -0.578125q0.65625 -0.21875 1.515625 -0.21875q0.765625 0 1.421875 0.1875q0.65625 0.1875 1.140625 0.5625q0.484375 0.359375 0.75 0.921875q0.28125 0.546875 0.28125 1.28125l0 3.625q0 0.6875 0.078125 1.140625q0.09375 0.4375 0.265625 0.75l0 0.140625l-2.203125 0zm-2.078125 -1.53125q0.328125 0 0.609375 -0.078125q0.28125 -0.078125 0.5 -0.203125q0.234375 -0.125 0.390625 -0.28125q0.171875 -0.15625 0.265625 -0.328125l0 -1.453125l-1.109375 0q-0.5 0 -0.859375 0.109375q-0.359375 0.09375 -0.59375 0.265625q-0.21875 0.171875 -0.328125 0.421875q-0.109375 0.25 -0.109375 0.53125q0 0.4375 0.296875 0.734375q0.3125 0.28125 0.9375 0.28125zm8.3671875 -6.921875l0.125 1.171875q0.453125 -0.640625 1.09375 -0.984375q0.65625 -0.34375 1.453125 -0.34375q0.640625 0 1.171875 0.1875q0.53125 0.1875 0.90625 0.59375q0.390625 0.40625 0.609375 1.0625q0.21875 0.640625 0.21875 1.5625l0 5.203125l-2.171875 0l0 -5.171875q0 -0.5 -0.125 -0.828125q-0.109375 -0.328125 -0.328125 -0.515625q-0.203125 -0.1875 -0.5 -0.25q-0.296875 -0.078125 -0.671875 -0.078125q-0.546875 0 -0.9375 0.21875q-0.390625 0.21875 -0.640625 0.609375l0 6.015625l-2.171875 0l0 -8.453125l1.96875 0zm11.3671875 6.875q0.328125 0 0.609375 -0.09375q0.296875 -0.09375 0.515625 -0.265625q0.21875 -0.171875 0.328125 -0.40625q0.125 -0.25 0.109375 -0.546875l2.046875 0q0.015625 0.65625 -0.265625 1.21875q-0.28125 0.5625 -0.78125 0.96875q-0.484375 0.40625 -1.140625 0.640625q-0.65625 0.234375 -1.375 0.234375q-0.984375 0 -1.734375 -0.328125q-0.734375 -0.34375 -1.234375 -0.921875q-0.5 -0.578125 -0.75 -1.359375q-0.25 -0.78125 -0.25 -1.671875l0 -0.234375q0 -0.890625 0.25 -1.65625q0.25 -0.78125 0.75 -1.359375q0.5 -0.578125 1.234375 -0.90625q0.734375 -0.34375 1.71875 -0.34375q0.78125 0 1.4375 0.234375q0.671875 0.234375 1.140625 0.65625q0.484375 0.421875 0.75 1.03125q0.265625 0.609375 0.25 1.359375l-2.046875 0q0.015625 -0.3125 -0.09375 -0.59375q-0.109375 -0.28125 -0.328125 -0.484375q-0.203125 -0.203125 -0.5 -0.328125q-0.296875 -0.125 -0.640625 -0.125q-0.515625 0 -0.859375 0.21875q-0.328125 0.203125 -0.53125 0.5625q-0.203125 0.34375 -0.28125 0.796875q-0.078125 0.453125 -0.078125 0.9375l0 0.234375q0 0.5 0.078125 0.953125q0.078125 0.453125 0.265625 0.8125q0.203125 0.34375 0.546875 0.5625q0.34375 0.203125 0.859375 0.203125zm9.9609375 1.734375q-0.96875 0 -1.765625 -0.3125q-0.796875 -0.328125 -1.375 -0.875q-0.5625 -0.5625 -0.875 -1.296875q-0.3125 -0.75 -0.3125 -1.609375l0 -0.3125q0 -0.96875 0.296875 -1.765625q0.3125 -0.796875 0.859375 -1.375q0.546875 -0.578125 1.296875 -0.890625q0.75 -0.328125 1.640625 -0.328125q0.90625 0 1.625 0.296875q0.71875 0.296875 1.203125 0.84375q0.5 0.546875 0.75 1.328125q0.265625 0.765625 0.265625 1.6875l0 0.921875l-5.734375 0q0.0625 0.4375 0.25 0.796875q0.203125 0.34375 0.5 0.609375q0.296875 0.25 0.671875 0.390625q0.390625 0.140625 0.84375 0.140625q0.3125 0 0.625 -0.0625q0.328125 -0.0625 0.609375 -0.171875q0.296875 -0.125 0.546875 -0.296875q0.25 -0.1875 0.4375 -0.4375l1.078125 1.171875q-0.203125 0.296875 -0.53125 0.578125q-0.3125 0.265625 -0.765625 0.484375q-0.4375 0.21875 -0.984375 0.34375q-0.53125 0.140625 -1.15625 0.140625zm-0.25 -7.015625q-0.375 0 -0.6875 0.140625q-0.296875 0.125 -0.53125 0.375q-0.21875 0.234375 -0.375 0.578125q-0.15625 0.328125 -0.234375 0.734375l3.5625 0l0 -0.171875q-0.015625 -0.34375 -0.140625 -0.640625q-0.109375 -0.3125 -0.328125 -0.53125q-0.21875 -0.21875 -0.546875 -0.34375q-0.3125 -0.140625 -0.71875 -0.140625zm7.3515625 2.234375q0 -1.109375 0.15625 -2.078125q0.171875 -0.96875 0.453125 -1.796875q0.296875 -0.828125 0.6875 -1.5q0.390625 -0.6875 0.8125 -1.203125q0.4375 -0.53125 0.890625 -0.890625q0.453125 -0.359375 0.890625 -0.5625l0.421875 1.1875q-0.4375 0.34375 -0.875 0.90625q-0.4375 0.5625 -0.796875 1.40625q-0.34375 0.84375 -0.5625 1.96875q-0.21875 1.109375 -0.21875 2.546875l0 0.203125q0 1.4375 0.21875 2.5625q0.21875 1.109375 0.5625 1.953125q0.359375 0.84375 0.796875 1.40625q0.4375 0.578125 0.875 0.921875l-0.421875 1.171875q-0.4375 -0.203125 -0.890625 -0.578125q-0.453125 -0.359375 -0.890625 -0.875q-0.421875 -0.515625 -0.8125 -1.203125q-0.390625 -0.671875 -0.6875 -1.5q-0.28125 -0.828125 -0.453125 -1.796875q-0.15625 -0.96875 -0.15625 -2.078125l0 -0.171875zm13.2890625 4.625q-0.078125 -0.15625 -0.140625 -0.359375q-0.046875 -0.203125 -0.09375 -0.4375q-0.171875 0.203125 -0.40625 0.375q-0.234375 0.171875 -0.53125 0.3125q-0.28125 0.125 -0.625 0.1875q-0.34375 0.078125 -0.734375 0.078125q-0.65625 0 -1.203125 -0.1875q-0.53125 -0.1875 -0.921875 -0.515625q-0.390625 -0.34375 -0.609375 -0.8125q-0.21875 -0.46875 -0.21875 -1.015625q0 -1.328125 0.984375 -2.0625q1.0 -0.734375 2.984375 -0.734375l1.203125 0l0 -0.5q0 -0.609375 -0.40625 -0.953125q-0.390625 -0.359375 -1.140625 -0.359375q-0.65625 0 -0.96875 0.28125q-0.296875 0.28125 -0.296875 0.765625l-2.171875 0q0 -0.546875 0.234375 -1.03125q0.234375 -0.484375 0.6875 -0.84375q0.46875 -0.375 1.125 -0.578125q0.65625 -0.21875 1.515625 -0.21875q0.765625 0 1.421875 0.1875q0.65625 0.1875 1.140625 0.5625q0.484375 0.359375 0.75 0.921875q0.28125 0.546875 0.28125 1.28125l0 3.625q0 0.6875 0.078125 1.140625q0.09375 0.4375 0.265625 0.75l0 0.140625l-2.203125 0zm-2.078125 -1.53125q0.328125 0 0.609375 -0.078125q0.28125 -0.078125 0.5 -0.203125q0.234375 -0.125 0.390625 -0.28125q0.171875 -0.15625 0.265625 -0.328125l0 -1.453125l-1.109375 0q-0.5 0 -0.859375 0.109375q-0.359375 0.09375 -0.59375 0.265625q-0.21875 0.171875 -0.328125 0.421875q-0.109375 0.25 -0.109375 0.53125q0 0.4375 0.296875 0.734375q0.3125 0.28125 0.9375 0.28125zm10.8359375 1.359375q0 0.453125 -0.125 0.921875q-0.109375 0.46875 -0.328125 0.90625q-0.203125 0.4375 -0.5 0.828125q-0.296875 0.390625 -0.625 0.6875l-1.15625 -0.59375q0.15625 -0.28125 0.28125 -0.578125q0.125 -0.28125 0.21875 -0.609375q0.09375 -0.3125 0.140625 -0.671875q0.0625 -0.359375 0.0625 -0.796875l0 -1.828125l2.046875 0l-0.015625 1.734375zm12.7734375 -3.96875q0 0.9375 -0.203125 1.734375q-0.203125 0.78125 -0.625 1.359375q-0.40625 0.5625 -1.03125 0.890625q-0.609375 0.3125 -1.4375 0.3125q-0.734375 0 -1.28125 -0.28125q-0.546875 -0.28125 -0.9375 -0.78125l-0.09375 0.90625l-1.953125 0l0 -12.0l2.171875 0l0 4.3125q0.375 -0.4375 0.875 -0.671875q0.515625 -0.25 1.203125 -0.25q0.828125 0 1.453125 0.328125q0.625 0.3125 1.03125 0.890625q0.421875 0.5625 0.625 1.359375q0.203125 0.78125 0.203125 1.71875l0 0.171875zm-2.171875 -0.171875q0 -0.515625 -0.078125 -0.96875q-0.078125 -0.46875 -0.265625 -0.8125q-0.1875 -0.34375 -0.515625 -0.546875q-0.328125 -0.203125 -0.828125 -0.203125q-0.59375 0 -0.96875 0.25q-0.359375 0.25 -0.5625 0.6875l0 3.359375q0.203125 0.4375 0.5625 0.6875q0.375 0.25 0.984375 0.25q0.5 0 0.8125 -0.1875q0.328125 -0.1875 0.515625 -0.53125q0.1875 -0.34375 0.265625 -0.796875q0.078125 -0.46875 0.078125 -1.015625l0 -0.171875zm9.9453125 -0.140625q0 1.0625 -0.171875 2.03125q-0.171875 0.953125 -0.46875 1.78125q-0.296875 0.828125 -0.703125 1.515625q-0.390625 0.6875 -0.84375 1.21875q-0.4375 0.53125 -0.90625 0.90625q-0.46875 0.375 -0.90625 0.578125l-0.421875 -1.171875q0.4375 -0.328125 0.875 -0.90625q0.4375 -0.5625 0.78125 -1.40625q0.359375 -0.84375 0.578125 -1.96875q0.21875 -1.125 0.21875 -2.5625l0 -0.203125q0 -1.4375 -0.234375 -2.5625q-0.21875 -1.125 -0.578125 -1.96875q-0.34375 -0.84375 -0.78125 -1.40625q-0.4375 -0.578125 -0.859375 -0.90625l0.421875 -1.171875q0.4375 0.203125 0.90625 0.578125q0.46875 0.375 0.90625 0.90625q0.453125 0.53125 0.84375 1.21875q0.40625 0.6875 0.703125 1.515625q0.296875 0.828125 0.46875 1.78125q0.171875 0.953125 0.171875 2.03125l0 0.171875zm20.9375 -1.15625l-7.390625 0l0 -1.78125l7.390625 0l0 1.78125zm0 3.375l-7.390625 0l0 -1.78125l7.390625 0l0 1.78125zm13.28125 -2.390625q0 -1.109375 0.15625 -2.078125q0.171875 -0.96875 0.453125 -1.796875q0.296875 -0.828125 0.6875 -1.5q0.390625 -0.6875 0.8125 -1.203125q0.4375 -0.53125 0.890625 -0.890625q0.453125 -0.359375 0.890625 -0.5625l0.421875 1.1875q-0.4375 0.34375 -0.875 0.90625q-0.4375 0.5625 -0.796875 1.40625q-0.34375 0.84375 -0.5625 1.96875q-0.21875 1.109375 -0.21875 2.546875l0 0.203125q0 1.4375 0.21875 2.5625q0.21875 1.109375 0.5625 1.953125q0.359375 0.84375 0.796875 1.40625q0.4375 0.578125 0.875 0.921875l-0.421875 1.171875q-0.4375 -0.203125 -0.890625 -0.578125q-0.453125 -0.359375 -0.890625 -0.875q-0.421875 -0.515625 -0.8125 -1.203125q-0.390625 -0.671875 -0.6875 -1.5q-0.28125 -0.828125 -0.453125 -1.796875q-0.15625 -0.96875 -0.15625 -2.078125l0 -0.171875zm10.9921875 -6.75l2.21875 0l3.6875 11.375l-9.71875 0l3.8125 -11.375zm-0.96875 9.609375l4.046875 0l-2.0 -6.671875l-2.046875 6.671875z" fill-rule="nonzero"/><path fill="#000000" d="m218.38521 201.59097q-0.046875 -0.109375 -0.09375 -0.234375q-0.03125 -0.140625 -0.0625 -0.296875q-0.109375 0.140625 -0.265625 0.25q-0.15625 0.109375 -0.359375 0.203125q-0.1875 0.078125 -0.421875 0.125q-0.21875 0.0625 -0.484375 0.0625q-0.421875 0 -0.796875 -0.125q-0.359375 -0.125 -0.625 -0.34375q-0.25 -0.234375 -0.40625 -0.546875q-0.140625 -0.3125 -0.140625 -0.671875q0 -0.890625 0.65625 -1.375q0.671875 -0.484375 1.984375 -0.484375l0.8125 0l0 -0.328125q0 -0.40625 -0.265625 -0.640625q-0.265625 -0.25 -0.765625 -0.25q-0.4375 0 -0.640625 0.203125q-0.203125 0.1875 -0.203125 0.5l-1.453125 0q0 -0.359375 0.15625 -0.671875q0.171875 -0.328125 0.46875 -0.578125q0.3125 -0.25 0.75 -0.390625q0.4375 -0.140625 1.0 -0.140625q0.515625 0 0.953125 0.125q0.4375 0.125 0.75 0.375q0.328125 0.234375 0.515625 0.609375q0.1875 0.375 0.1875 0.859375l0 2.421875q0 0.453125 0.046875 0.75q0.0625 0.296875 0.171875 0.5l0 0.09375l-1.46875 0zm-1.375 -1.015625q0.21875 0 0.40625 -0.046875q0.1875 -0.0625 0.328125 -0.140625q0.15625 -0.078125 0.265625 -0.1875q0.109375 -0.109375 0.171875 -0.21875l0 -0.96875l-0.734375 0q-0.34375 0 -0.578125 0.0625q-0.234375 0.0625 -0.390625 0.1875q-0.15625 0.109375 -0.234375 0.28125q-0.0625 0.15625 -0.0625 0.359375q0 0.28125 0.203125 0.484375q0.203125 0.1875 0.625 0.1875zm9.332291 -1.734375q0 0.625 -0.140625 1.15625q-0.140625 0.515625 -0.421875 0.90625q-0.265625 0.375 -0.6875 0.59375q-0.40625 0.203125 -0.953125 0.203125q-0.5 0 -0.859375 -0.1875q-0.359375 -0.1875 -0.609375 -0.515625l-0.078125 0.59375l-1.296875 0l0 -8.0l1.453125 0l0 2.875q0.25 -0.28125 0.578125 -0.4375q0.34375 -0.171875 0.796875 -0.171875q0.5625 0 0.96875 0.21875q0.421875 0.203125 0.6875 0.59375q0.28125 0.375 0.421875 0.90625q0.140625 0.53125 0.140625 1.15625l0 0.109375zm-1.453125 -0.109375q0 -0.34375 -0.0625 -0.65625q-0.046875 -0.3125 -0.171875 -0.53125q-0.125 -0.234375 -0.34375 -0.375q-0.21875 -0.140625 -0.546875 -0.140625q-0.390625 0 -0.640625 0.171875q-0.25 0.171875 -0.375 0.453125l0 2.25q0.125 0.28125 0.375 0.453125q0.25 0.171875 0.65625 0.171875q0.328125 0 0.53125 -0.125q0.21875 -0.140625 0.34375 -0.359375q0.125 -0.234375 0.171875 -0.53125q0.0625 -0.3125 0.0625 -0.671875l0 -0.109375z" fill-rule="nonzero"/><path fill="#000000" d="m235.76854 194.26285q-0.203125 0.25 -0.578125 0.515625q-0.359375 0.265625 -0.875 0.484375q-0.5 0.21875 -1.125 0.34375q-0.625 0.140625 -1.34375 0.140625q-0.96875 0 -1.75 -0.34375q-0.78125 -0.34375 -1.34375 -0.984375q-0.546875 -0.65625 -0.84375 -1.59375q-0.296875 -0.953125 -0.296875 -2.140625l0 -1.546875q0 -1.203125 0.3125 -2.140625q0.3125 -0.9375 0.875 -1.59375q0.5625 -0.65625 1.3125 -1.0q0.75 -0.34375 1.640625 -0.34375q0.953125 0 1.671875 0.25q0.71875 0.234375 1.203125 0.6875q0.5 0.453125 0.765625 1.109375q0.28125 0.65625 0.375 1.484375l-2.140625 0q-0.109375 -0.875 -0.53125 -1.3125q-0.421875 -0.453125 -1.296875 -0.453125q-0.421875 0 -0.78125 0.21875q-0.359375 0.21875 -0.625 0.640625q-0.265625 0.40625 -0.421875 1.015625q-0.15625 0.609375 -0.15625 1.421875l0 1.5625q0.015625 1.59375 0.53125 2.4375q0.53125 0.84375 1.609375 0.859375q0.25 0 0.5 -0.03125q0.25 -0.046875 0.46875 -0.109375q0.21875 -0.078125 0.390625 -0.171875q0.171875 -0.09375 0.25 -0.1875l0.015625 -2.0625l-1.890625 0l0 -1.640625l4.078125 0l0 4.484375zm7.1796875 1.328125l-2.1875 0l0 -8.734375l-2.875 1.03125l0 -1.890625l4.953125 -1.78125l0.109375 0l0 11.375zm10.0703125 -4.453125q0 1.0625 -0.171875 2.03125q-0.171875 0.953125 -0.46875 1.78125q-0.296875 0.828125 -0.703125 1.515625q-0.390625 0.6875 -0.84375 1.21875q-0.4375 0.53125 -0.90625 0.90625q-0.46875 0.375 -0.90625 0.578125l-0.421875 -1.171875q0.4375 -0.328125 0.875 -0.90625q0.4375 -0.5625 0.78125 -1.40625q0.359375 -0.84375 0.578125 -1.96875q0.21875 -1.125 0.21875 -2.5625l0 -0.203125q0 -1.4375 -0.234375 -2.5625q-0.21875 -1.125 -0.578125 -1.96875q-0.34375 -0.84375 -0.78125 -1.40625q-0.4375 -0.578125 -0.859375 -0.90625l0.421875 -1.171875q0.4375 0.203125 0.90625 0.578125q0.46875 0.375 0.90625 0.90625q0.453125 0.53125 0.84375 1.21875q0.40625 0.6875 0.703125 1.515625q0.296875 0.828125 0.46875 1.78125q0.171875 0.953125 0.171875 2.03125l0 0.171875z" fill-rule="nonzero"/><path fill="#000000" d="m261.417 189.59097l-5.171875 0l0 -0.984375l2.453125 -2.640625q0.28125 -0.3125 0.484375 -0.5625q0.203125 -0.25 0.3125 -0.453125q0.125 -0.21875 0.171875 -0.40625q0.0625 -0.1875 0.0625 -0.359375q0 -0.25 -0.078125 -0.4375q-0.0625 -0.203125 -0.203125 -0.34375q-0.125 -0.140625 -0.3125 -0.203125q-0.1875 -0.078125 -0.40625 -0.078125q-0.59375 0 -0.890625 0.328125q-0.296875 0.328125 -0.296875 0.9375l-1.453125 0q0 -0.515625 0.1875 -0.953125q0.203125 -0.453125 0.546875 -0.796875q0.359375 -0.34375 0.859375 -0.53125q0.5 -0.203125 1.09375 -0.203125q0.578125 0 1.015625 0.171875q0.453125 0.15625 0.75 0.453125q0.296875 0.28125 0.453125 0.703125q0.15625 0.40625 0.15625 0.890625q0 0.375 -0.125 0.71875q-0.109375 0.34375 -0.328125 0.6875q-0.203125 0.328125 -0.515625 0.671875q-0.296875 0.34375 -0.671875 0.71875l-1.421875 1.515625l3.328125 0l0 1.15625z" fill-rule="nonzero"/><path fill="#000000" d="m277.44458 189.24722l2.859375 0l0 1.984375l-2.859375 0l0 3.21875l-2.078125 0l0 -3.21875l-2.859375 0l0 -1.984375l2.859375 0l0 -3.078125l2.078125 0l0 3.078125zm16.18753 1.71875q0 -1.109375 0.15625 -2.078125q0.171875 -0.96875 0.453125 -1.796875q0.296875 -0.828125 0.6875 -1.5q0.390625 -0.6875 0.8125 -1.203125q0.4375 -0.53125 0.890625 -0.890625q0.453125 -0.359375 0.890625 -0.5625l0.421875 1.1875q-0.4375 0.34375 -0.875 0.90625q-0.4375 0.5625 -0.796875 1.40625q-0.34375 0.84375 -0.5625 1.96875q-0.21875 1.109375 -0.21875 2.546875l0 0.203125q0 1.4375 0.21875 2.5625q0.21875 1.109375 0.5625 1.953125q0.359375 0.84375 0.796875 1.40625q0.4375 0.578125 0.875 0.921875l-0.421875 1.171875q-0.4375 -0.203125 -0.890625 -0.578125q-0.453125 -0.359375 -0.890625 -0.875q-0.421875 -0.515625 -0.8125 -1.203125q-0.390625 -0.671875 -0.6875 -1.5q-0.28125 -0.828125 -0.453125 -1.796875q-0.15625 -0.96875 -0.15625 -2.078125l0 -0.171875zm10.9921875 -6.75l2.21875 0l3.6875 11.375l-9.71875 0l3.8125 -11.375zm-0.96875 9.609375l4.046875 0l-2.0 -6.671875l-2.046875 6.671875z" fill-rule="nonzero"/><path fill="#000000" d="m314.3821 201.59097q-0.046875 -0.109375 -0.09375 -0.234375q-0.03125 -0.140625 -0.0625 -0.296875q-0.109375 0.140625 -0.265625 0.25q-0.15625 0.109375 -0.359375 0.203125q-0.1875 0.078125 -0.421875 0.125q-0.21875 0.0625 -0.484375 0.0625q-0.421875 0 -0.796875 -0.125q-0.359375 -0.125 -0.625 -0.34375q-0.25 -0.234375 -0.40625 -0.546875q-0.140625 -0.3125 -0.140625 -0.671875q0 -0.890625 0.65625 -1.375q0.671875 -0.484375 1.984375 -0.484375l0.8125 0l0 -0.328125q0 -0.40625 -0.265625 -0.640625q-0.265625 -0.25 -0.765625 -0.25q-0.4375 0 -0.640625 0.203125q-0.203125 0.1875 -0.203125 0.5l-1.453125 0q0 -0.359375 0.15625 -0.671875q0.171875 -0.328125 0.46875 -0.578125q0.3125 -0.25 0.75 -0.390625q0.4375 -0.140625 1.0 -0.140625q0.515625 0 0.953125 0.125q0.4375 0.125 0.75 0.375q0.328125 0.234375 0.515625 0.609375q0.1875 0.375 0.1875 0.859375l0 2.421875q0 0.453125 0.046875 0.75q0.0625 0.296875 0.171875 0.5l0 0.09375l-1.46875 0zm-1.375 -1.015625q0.21875 0 0.40625 -0.046875q0.1875 -0.0625 0.328125 -0.140625q0.15625 -0.078125 0.265625 -0.1875q0.109375 -0.109375 0.171875 -0.21875l0 -0.96875l-0.734375 0q-0.34375 0 -0.578125 0.0625q-0.234375 0.0625 -0.390625 0.1875q-0.15625 0.109375 -0.234375 0.28125q-0.0625 0.15625 -0.0625 0.359375q0 0.28125 0.203125 0.484375q0.203125 0.1875 0.625 0.1875zm9.332275 -1.734375q0 0.625 -0.140625 1.15625q-0.140625 0.515625 -0.421875 0.90625q-0.265625 0.375 -0.6875 0.59375q-0.40625 0.203125 -0.953125 0.203125q-0.5 0 -0.859375 -0.1875q-0.359375 -0.1875 -0.609375 -0.515625l-0.078125 0.59375l-1.296875 0l0 -8.0l1.453125 0l0 2.875q0.25 -0.28125 0.578125 -0.4375q0.34375 -0.171875 0.796875 -0.171875q0.5625 0 0.96875 0.21875q0.421875 0.203125 0.6875 0.59375q0.28125 0.375 0.421875 0.90625q0.140625 0.53125 0.140625 1.15625l0 0.109375zm-1.453125 -0.109375q0 -0.34375 -0.0625 -0.65625q-0.046875 -0.3125 -0.171875 -0.53125q-0.125 -0.234375 -0.34375 -0.375q-0.21875 -0.140625 -0.546875 -0.140625q-0.390625 0 -0.640625 0.171875q-0.25 0.171875 -0.375 0.453125l0 2.25q0.125 0.28125 0.375 0.453125q0.25 0.171875 0.65625 0.171875q0.328125 0 0.53125 -0.125q0.21875 -0.140625 0.34375 -0.359375q0.125 -0.234375 0.171875 -0.53125q0.0625 -0.3125 0.0625 -0.671875l0 -0.109375z" fill-rule="nonzero"/><path fill="#000000" d="m331.76544 194.26285q-0.203125 0.25 -0.578125 0.515625q-0.359375 0.265625 -0.875 0.484375q-0.5 0.21875 -1.125 0.34375q-0.625 0.140625 -1.34375 0.140625q-0.96875 0 -1.75 -0.34375q-0.78125 -0.34375 -1.34375 -0.984375q-0.546875 -0.65625 -0.84375 -1.59375q-0.296875 -0.953125 -0.296875 -2.140625l0 -1.546875q0 -1.203125 0.3125 -2.140625q0.3125 -0.9375 0.875 -1.59375q0.5625 -0.65625 1.3125 -1.0q0.75 -0.34375 1.640625 -0.34375q0.953125 0 1.671875 0.25q0.71875 0.234375 1.203125 0.6875q0.5 0.453125 0.765625 1.109375q0.28125 0.65625 0.375 1.484375l-2.140625 0q-0.109375 -0.875 -0.53125 -1.3125q-0.421875 -0.453125 -1.296875 -0.453125q-0.421875 0 -0.78125 0.21875q-0.359375 0.21875 -0.625 0.640625q-0.265625 0.40625 -0.421875 1.015625q-0.15625 0.609375 -0.15625 1.421875l0 1.5625q0.015625 1.59375 0.53125 2.4375q0.53125 0.84375 1.609375 0.859375q0.25 0 0.5 -0.03125q0.25 -0.046875 0.46875 -0.109375q0.21875 -0.078125 0.390625 -0.171875q0.171875 -0.09375 0.25 -0.1875l0.015625 -2.0625l-1.890625 0l0 -1.640625l4.078125 0l0 4.484375zm9.3046875 1.328125l-7.765625 0l0 -1.484375l3.6875 -3.953125q0.421875 -0.46875 0.71875 -0.84375q0.296875 -0.390625 0.484375 -0.703125q0.1875 -0.328125 0.265625 -0.59375q0.078125 -0.28125 0.078125 -0.53125q0 -0.390625 -0.109375 -0.6875q-0.109375 -0.296875 -0.3125 -0.5q-0.1875 -0.203125 -0.46875 -0.3125q-0.28125 -0.109375 -0.609375 -0.109375q-0.90625 0 -1.34375 0.5q-0.4375 0.5 -0.4375 1.390625l-2.1875 0q0 -0.75 0.28125 -1.421875q0.296875 -0.6875 0.828125 -1.1875q0.53125 -0.515625 1.265625 -0.796875q0.75 -0.296875 1.65625 -0.296875q0.875 0 1.53125 0.25q0.671875 0.234375 1.125 0.671875q0.453125 0.4375 0.6875 1.046875q0.234375 0.609375 0.234375 1.359375q0 0.5625 -0.1875 1.078125q-0.171875 0.5 -0.5 1.0q-0.3125 0.5 -0.765625 1.03125q-0.453125 0.515625 -1.015625 1.078125l-2.140625 2.265625l5.0 0l0 1.75zm7.9453125 -4.453125q0 1.0625 -0.171875 2.03125q-0.171875 0.953125 -0.46875 1.78125q-0.296875 0.828125 -0.703125 1.515625q-0.390625 0.6875 -0.84375 1.21875q-0.4375 0.53125 -0.90625 0.90625q-0.46875 0.375 -0.90625 0.578125l-0.421875 -1.171875q0.4375 -0.328125 0.875 -0.90625q0.4375 -0.5625 0.78125 -1.40625q0.359375 -0.84375 0.578125 -1.96875q0.21875 -1.125 0.21875 -2.5625l0 -0.203125q0 -1.4375 -0.234375 -2.5625q-0.21875 -1.125 -0.578125 -1.96875q-0.34375 -0.84375 -0.78125 -1.40625q-0.4375 -0.578125 -0.859375 -0.90625l0.421875 -1.171875q0.4375 0.203125 0.90625 0.578125q0.46875 0.375 0.90625 0.90625q0.453125 0.53125 0.84375 1.21875q0.40625 0.6875 0.703125 1.515625q0.296875 0.828125 0.46875 1.78125q0.171875 0.953125 0.171875 2.03125l0 0.171875z" fill-rule="nonzero"/><path fill="#000000" d="m357.41388 189.59097l-5.171875 0l0 -0.984375l2.453125 -2.640625q0.28125 -0.3125 0.484375 -0.5625q0.203125 -0.25 0.3125 -0.453125q0.125 -0.21875 0.171875 -0.40625q0.0625 -0.1875 0.0625 -0.359375q0 -0.25 -0.078125 -0.4375q-0.0625 -0.203125 -0.203125 -0.34375q-0.125 -0.140625 -0.3125 -0.203125q-0.1875 -0.078125 -0.40625 -0.078125q-0.59375 0 -0.890625 0.328125q-0.296875 0.328125 -0.296875 0.9375l-1.453125 0q0 -0.515625 0.1875 -0.953125q0.203125 -0.453125 0.546875 -0.796875q0.359375 -0.34375 0.859375 -0.53125q0.5 -0.203125 1.09375 -0.203125q0.578125 0 1.015625 0.171875q0.453125 0.15625 0.75 0.453125q0.296875 0.28125 0.453125 0.703125q0.15625 0.40625 0.15625 0.890625q0 0.375 -0.125 0.71875q-0.109375 0.34375 -0.328125 0.6875q-0.203125 0.328125 -0.515625 0.671875q-0.296875 0.34375 -0.671875 0.71875l-1.421875 1.515625l3.328125 0l0 1.15625z" fill-rule="nonzero"/><path fill="#000000" d="m373.4415 189.24722l2.859375 0l0 1.984375l-2.859375 0l0 3.21875l-2.078125 0l0 -3.21875l-2.859375 0l0 -1.984375l2.859375 0l0 -3.078125l2.078125 0l0 3.078125zm16.1875 1.71875q0 -1.109375 0.15625 -2.078125q0.171875 -0.96875 0.453125 -1.796875q0.296875 -0.828125 0.6875 -1.5q0.390625 -0.6875 0.8125 -1.203125q0.4375 -0.53125 0.890625 -0.890625q0.453125 -0.359375 0.890625 -0.5625l0.421875 1.1875q-0.4375 0.34375 -0.875 0.90625q-0.4375 0.5625 -0.796875 1.40625q-0.34375 0.84375 -0.5625 1.96875q-0.21875 1.109375 -0.21875 2.546875l0 0.203125q0 1.4375 0.21875 2.5625q0.21875 1.109375 0.5625 1.953125q0.359375 0.84375 0.796875 1.40625q0.4375 0.578125 0.875 0.921875l-0.421875 1.171875q-0.4375 -0.203125 -0.890625 -0.578125q-0.453125 -0.359375 -0.890625 -0.875q-0.421875 -0.515625 -0.8125 -1.203125q-0.390625 -0.671875 -0.6875 -1.5q-0.28125 -0.828125 -0.453125 -1.796875q-0.15625 -0.96875 -0.15625 -2.078125l0 -0.171875zm10.9921875 -6.75l2.21875 0l3.6875 11.375l-9.71875 0l3.8125 -11.375zm-0.96875 9.609375l4.046875 0l-2.0 -6.671875l-2.046875 6.671875z" fill-rule="nonzero"/><path fill="#000000" d="m410.379 201.59097q-0.046875 -0.109375 -0.09375 -0.234375q-0.03125 -0.140625 -0.0625 -0.296875q-0.109375 0.140625 -0.265625 0.25q-0.15625 0.109375 -0.359375 0.203125q-0.1875 0.078125 -0.421875 0.125q-0.21875 0.0625 -0.484375 0.0625q-0.421875 0 -0.796875 -0.125q-0.359375 -0.125 -0.625 -0.34375q-0.25 -0.234375 -0.40625 -0.546875q-0.140625 -0.3125 -0.140625 -0.671875q0 -0.890625 0.65625 -1.375q0.671875 -0.484375 1.984375 -0.484375l0.8125 0l0 -0.328125q0 -0.40625 -0.265625 -0.640625q-0.265625 -0.25 -0.765625 -0.25q-0.4375 0 -0.640625 0.203125q-0.203125 0.1875 -0.203125 0.5l-1.453125 0q0 -0.359375 0.15625 -0.671875q0.171875 -0.328125 0.46875 -0.578125q0.3125 -0.25 0.75 -0.390625q0.4375 -0.140625 1.0 -0.140625q0.515625 0 0.953125 0.125q0.4375 0.125 0.75 0.375q0.328125 0.234375 0.515625 0.609375q0.1875 0.375 0.1875 0.859375l0 2.421875q0 0.453125 0.046875 0.75q0.0625 0.296875 0.171875 0.5l0 0.09375l-1.46875 0zm-1.375 -1.015625q0.21875 0 0.40625 -0.046875q0.1875 -0.0625 0.328125 -0.140625q0.15625 -0.078125 0.265625 -0.1875q0.109375 -0.109375 0.171875 -0.21875l0 -0.96875l-0.734375 0q-0.34375 0 -0.578125 0.0625q-0.234375 0.0625 -0.390625 0.1875q-0.15625 0.109375 -0.234375 0.28125q-0.0625 0.15625 -0.0625 0.359375q0 0.28125 0.203125 0.484375q0.203125 0.1875 0.625 0.1875zm9.332275 -1.734375q0 0.625 -0.140625 1.15625q-0.140625 0.515625 -0.421875 0.90625q-0.265625 0.375 -0.6875 0.59375q-0.40625 0.203125 -0.953125 0.203125q-0.5 0 -0.859375 -0.1875q-0.359375 -0.1875 -0.609375 -0.515625l-0.078125 0.59375l-1.296875 0l0 -8.0l1.453125 0l0 2.875q0.25 -0.28125 0.578125 -0.4375q0.34375 -0.171875 0.796875 -0.171875q0.5625 0 0.96875 0.21875q0.421875 0.203125 0.6875 0.59375q0.28125 0.375 0.421875 0.90625q0.140625 0.53125 0.140625 1.15625l0 0.109375zm-1.453125 -0.109375q0 -0.34375 -0.0625 -0.65625q-0.046875 -0.3125 -0.171875 -0.53125q-0.125 -0.234375 -0.34375 -0.375q-0.21875 -0.140625 -0.546875 -0.140625q-0.390625 0 -0.640625 0.171875q-0.25 0.171875 -0.375 0.453125l0 2.25q0.125 0.28125 0.375 0.453125q0.25 0.171875 0.65625 0.171875q0.328125 0 0.53125 -0.125q0.21875 -0.140625 0.34375 -0.359375q0.125 -0.234375 0.171875 -0.53125q0.0625 -0.3125 0.0625 -0.671875l0 -0.109375z" fill-rule="nonzero"/><path fill="#000000" d="m427.76233 194.26285q-0.203125 0.25 -0.578125 0.515625q-0.359375 0.265625 -0.875 0.484375q-0.5 0.21875 -1.125 0.34375q-0.625 0.140625 -1.34375 0.140625q-0.96875 0 -1.75 -0.34375q-0.78125 -0.34375 -1.34375 -0.984375q-0.546875 -0.65625 -0.84375 -1.59375q-0.296875 -0.953125 -0.296875 -2.140625l0 -1.546875q0 -1.203125 0.3125 -2.140625q0.3125 -0.9375 0.875 -1.59375q0.5625 -0.65625 1.3125 -1.0q0.75 -0.34375 1.640625 -0.34375q0.953125 0 1.671875 0.25q0.71875 0.234375 1.203125 0.6875q0.5 0.453125 0.765625 1.109375q0.28125 0.65625 0.375 1.484375l-2.140625 0q-0.109375 -0.875 -0.53125 -1.3125q-0.421875 -0.453125 -1.296875 -0.453125q-0.421875 0 -0.78125 0.21875q-0.359375 0.21875 -0.625 0.640625q-0.265625 0.40625 -0.421875 1.015625q-0.15625 0.609375 -0.15625 1.421875l0 1.5625q0.015625 1.59375 0.53125 2.4375q0.53125 0.84375 1.609375 0.859375q0.25 0 0.5 -0.03125q0.25 -0.046875 0.46875 -0.109375q0.21875 -0.078125 0.390625 -0.171875q0.171875 -0.09375 0.25 -0.1875l0.015625 -2.0625l-1.890625 0l0 -1.640625l4.078125 0l0 4.484375zm4.0546875 -5.3125l1.171875 0q0.890625 0 1.3125 -0.453125q0.4375 -0.453125 0.4375 -1.171875q0 -0.34375 -0.09375 -0.609375q-0.09375 -0.28125 -0.296875 -0.484375q-0.1875 -0.203125 -0.5 -0.3125q-0.296875 -0.109375 -0.6875 -0.109375q-0.328125 0 -0.625 0.09375q-0.28125 0.09375 -0.5 0.28125q-0.203125 0.171875 -0.328125 0.421875q-0.125 0.25 -0.125 0.5625l-2.171875 0q0 -0.703125 0.28125 -1.265625q0.28125 -0.578125 0.78125 -0.984375q0.5 -0.40625 1.171875 -0.625q0.6875 -0.234375 1.46875 -0.234375q0.84375 0 1.546875 0.203125q0.703125 0.203125 1.203125 0.625q0.5 0.40625 0.765625 1.015625q0.28125 0.59375 0.28125 1.390625q0 0.375 -0.109375 0.734375q-0.109375 0.34375 -0.328125 0.671875q-0.203125 0.3125 -0.515625 0.59375q-0.3125 0.265625 -0.71875 0.453125q0.484375 0.171875 0.828125 0.4375q0.34375 0.265625 0.5625 0.609375q0.234375 0.34375 0.34375 0.75q0.109375 0.40625 0.109375 0.859375q0 0.796875 -0.3125 1.421875q-0.296875 0.625 -0.828125 1.046875q-0.53125 0.421875 -1.265625 0.65625q-0.71875 0.21875 -1.5625 0.21875q-0.734375 0 -1.421875 -0.203125q-0.6875 -0.203125 -1.234375 -0.59375q-0.53125 -0.40625 -0.859375 -1.015625q-0.328125 -0.609375 -0.328125 -1.4375l2.171875 0q0 0.328125 0.125 0.609375q0.125 0.265625 0.359375 0.46875q0.234375 0.203125 0.546875 0.3125q0.3125 0.109375 0.6875 0.109375q0.828125 0 1.296875 -0.4375q0.46875 -0.4375 0.46875 -1.1875q0 -0.453125 -0.140625 -0.78125q-0.125 -0.328125 -0.390625 -0.53125q-0.25 -0.21875 -0.609375 -0.3125q-0.34375 -0.109375 -0.796875 -0.109375l-1.171875 0l0 -1.6875zm13.1953125 2.1875q0 1.0625 -0.171875 2.03125q-0.171875 0.953125 -0.46875 1.78125q-0.296875 0.828125 -0.703125 1.515625q-0.390625 0.6875 -0.84375 1.21875q-0.4375 0.53125 -0.90625 0.90625q-0.46875 0.375 -0.90625 0.578125l-0.421875 -1.171875q0.4375 -0.328125 0.875 -0.90625q0.4375 -0.5625 0.78125 -1.40625q0.359375 -0.84375 0.578125 -1.96875q0.21875 -1.125 0.21875 -2.5625l0 -0.203125q0 -1.4375 -0.234375 -2.5625q-0.21875 -1.125 -0.578125 -1.96875q-0.34375 -0.84375 -0.78125 -1.40625q-0.4375 -0.578125 -0.859375 -0.90625l0.421875 -1.171875q0.4375 0.203125 0.90625 0.578125q0.46875 0.375 0.90625 0.90625q0.453125 0.53125 0.84375 1.21875q0.40625 0.6875 0.703125 1.515625q0.296875 0.828125 0.46875 1.78125q0.171875 0.953125 0.171875 2.03125l0 0.171875z" fill-rule="nonzero"/><path fill="#000000" d="m453.41077 189.59097l-5.171875 0l0 -0.984375l2.453125 -2.640625q0.28125 -0.3125 0.484375 -0.5625q0.203125 -0.25 0.3125 -0.453125q0.125 -0.21875 0.171875 -0.40625q0.0625 -0.1875 0.0625 -0.359375q0 -0.25 -0.078125 -0.4375q-0.0625 -0.203125 -0.203125 -0.34375q-0.125 -0.140625 -0.3125 -0.203125q-0.1875 -0.078125 -0.40625 -0.078125q-0.59375 0 -0.890625 0.328125q-0.296875 0.328125 -0.296875 0.9375l-1.453125 0q0 -0.515625 0.1875 -0.953125q0.203125 -0.453125 0.546875 -0.796875q0.359375 -0.34375 0.859375 -0.53125q0.5 -0.203125 1.09375 -0.203125q0.578125 0 1.015625 0.171875q0.453125 0.15625 0.75 0.453125q0.296875 0.28125 0.453125 0.703125q0.15625 0.40625 0.15625 0.890625q0 0.375 -0.125 0.71875q-0.109375 0.34375 -0.328125 0.6875q-0.203125 0.328125 -0.515625 0.671875q-0.296875 0.34375 -0.671875 0.71875l-1.421875 1.515625l3.328125 0l0 1.15625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m187.82991 195.77428l5.1810913 7.0341187l2.590561 -25.020996l256.16272 -0.055114746" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m187.82991 195.77428l5.1810913 7.0341187l2.590561 -25.020996l256.16272 -0.055114746" fill-rule="evenodd"/><path fill="#ff00ff" d="m420.2071 59.67827l0 0c0 -2.4439697 1.9812317 -4.4251976 4.4252014 -4.4251976l0 0c1.173645 0 2.2991943 0.46622467 3.1290894 1.2961121c0.829895 0.8298836 1.2961121 1.955452 1.2961121 3.1290855l0 0c0 2.4439697 -1.9812317 4.425194 -4.4252014 4.425194l0 0c-2.4439697 0 -4.4252014 -1.9812241 -4.4252014 -4.425194z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m420.2071 59.67827l0 0c0 -2.4439697 1.9812317 -4.4251976 4.4252014 -4.4251976l0 0c1.173645 0 2.2991943 0.46622467 3.1290894 1.2961121c0.829895 0.8298836 1.2961121 1.955452 1.2961121 3.1290855l0 0c0 2.4439697 -1.9812317 4.425194 -4.4252014 4.425194l0 0c-2.4439697 0 -4.4252014 -1.9812241 -4.4252014 -4.425194z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m408.8731 34.50131l47.55905 0l0 35.464565l-47.55905 0z" fill-rule="evenodd"/><path fill="#000000" d="m419.34186 48.90006l0 2.28125l-0.71875 0l0 -5.6875l1.84375 0q0.375 0 0.71875 0.125q0.34375 0.109375 0.59375 0.328125q0.265625 0.203125 0.40625 0.53125q0.15625 0.3125 0.15625 0.71875q0 0.40625 -0.15625 0.734375q-0.140625 0.3125 -0.40625 0.53125q-0.25 0.203125 -0.59375 0.328125q-0.34375 0.109375 -0.71875 0.109375l-1.125 0zm0 -0.59375l1.125 0q0.25 0 0.453125 -0.078125q0.21875 -0.078125 0.375 -0.21875q0.15625 -0.140625 0.234375 -0.34375q0.09375 -0.203125 0.09375 -0.453125q0 -0.265625 -0.09375 -0.46875q-0.078125 -0.203125 -0.234375 -0.34375q-0.15625 -0.15625 -0.375 -0.234375q-0.203125 -0.078125 -0.453125 -0.078125l-1.125 0l0 2.21875z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m70.8947 275.49582l3.861473 4.237335l1.9307404 -15.072632l167.56339 0.053741455" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m70.8947 275.49582l3.861473 4.237335l1.9307404 -15.072632l167.56339 0.053741455" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m70.8947 303.41492l3.861473 4.2373657l1.9307404 -15.072662l167.56339 0.053771973" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m70.8947 303.41492l3.861473 4.2373657l1.9307404 -15.072662l167.56339 0.053771973" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m70.8947 331.6854l3.861473 4.2373657l1.9307404 -15.072662l167.56339 0.053771973" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m70.8947 331.6854l3.861473 4.2373657l1.9307404 -15.072662l167.56339 0.053771973" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m274.20996 275.49515l3.8635254 4.238861l1.9291382 -15.073486l23.188965 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m274.20996 275.49515l3.8635254 4.238861l1.9291382 -15.073486l23.188965 0" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m274.20996 303.71573l3.8635254 4.238861l1.9291382 -15.073486l23.188965 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m274.20996 303.71573l3.8635254 4.238861l1.9291382 -15.073486l23.188965 0" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m274.20996 331.68475l3.8635254 4.2388306l1.9291382 -15.073486l23.188965 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m274.20996 331.68475l3.8635254 4.2388306l1.9291382 -15.073486l23.188965 0" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m415.44882 279.78632l108.91336 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m415.44882 279.78632l108.91336 0" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m432.2131 260.33487l0 74.58267" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m432.2131 260.33487l0 74.58267" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m407.7848 249.72594l116.566895 0l0 92.220474l-116.566895 0z" fill-rule="evenodd"/><path fill="#ff0000" d="m450.4801 269.83594l-1.671875 0l0 4.25l-2.1875 0l0 -11.375l3.8125 0q0.9375 0 1.703125 0.21875q0.765625 0.21875 1.3125 0.65625q0.546875 0.421875 0.828125 1.0625q0.296875 0.640625 0.296875 1.484375q0 0.609375 -0.140625 1.109375q-0.140625 0.484375 -0.421875 0.875q-0.265625 0.375 -0.640625 0.671875q-0.375 0.28125 -0.84375 0.5l2.4375 4.6875l0 0.109375l-2.34375 0l-2.140625 -4.25zm-1.671875 -1.78125l1.625 0q0.9375 0 1.4375 -0.46875q0.5 -0.484375 0.5 -1.296875q0 -0.859375 -0.5 -1.328125q-0.484375 -0.46875 -1.4375 -0.46875l-1.625 0l0 3.5625z" fill-rule="nonzero"/><path fill="#ff00ff" d="m477.75354 269.91406l0 4.171875l-2.1875 0l0 -11.375l3.890625 0q0.921875 0 1.671875 0.265625q0.75 0.265625 1.28125 0.75q0.53125 0.484375 0.8125 1.15625q0.28125 0.671875 0.28125 1.484375q0 0.765625 -0.28125 1.421875q-0.28125 0.640625 -0.8125 1.125q-0.53125 0.46875 -1.28125 0.734375q-0.75 0.265625 -1.671875 0.265625l-1.703125 0zm0 -1.78125l1.703125 0q0.46875 0 0.8125 -0.140625q0.34375 -0.140625 0.5625 -0.375q0.234375 -0.25 0.34375 -0.5625q0.125 -0.328125 0.125 -0.671875q0 -0.390625 -0.125 -0.734375q-0.109375 -0.34375 -0.34375 -0.59375q-0.21875 -0.265625 -0.5625 -0.40625q-0.34375 -0.15625 -0.8125 -0.15625l-1.703125 0l0 3.640625z" fill-rule="nonzero"/><path fill="#9900ff" d="m507.99573 270.89844l2.140625 -8.1875l2.421875 0l-3.4375 11.375l-2.234375 0l-3.4375 -11.375l2.421875 0l2.125 8.1875z" fill-rule="nonzero"/><path fill="#ff0000" d="m421.6754 288.83594l-1.671875 0l0 4.25l-2.1875 0l0 -11.375l3.8125 0q0.9375 0 1.703125 0.21875q0.765625 0.21875 1.3125 0.65625q0.546875 0.421875 0.828125 1.0625q0.296875 0.640625 0.296875 1.484375q0 0.609375 -0.140625 1.109375q-0.140625 0.484375 -0.421875 0.875q-0.265625 0.375 -0.640625 0.671875q-0.375 0.28125 -0.84375 0.5l2.4375 4.6875l0 0.109375l-2.34375 0l-2.140625 -4.25zm-1.671875 -1.78125l1.625 0q0.9375 0 1.4375 -0.46875q0.5 -0.484375 0.5 -1.296875q0 -0.859375 -0.5 -1.328125q-0.484375 -0.46875 -1.4375 -0.46875l-1.625 0l0 3.5625z" fill-rule="nonzero"/><path fill="#000000" d="m454.43375 290.1953q0 0.71875 -0.171875 1.28125q-0.15625 0.546875 -0.46875 0.9375q-0.3125 0.375 -0.765625 0.578125q-0.453125 0.203125 -1.03125 0.203125q-0.578125 0 -1.03125 -0.203125q-0.453125 -0.203125 -0.78125 -0.578125q-0.3125 -0.390625 -0.484375 -0.9375q-0.171875 -0.5625 -0.171875 -1.28125l0 -1.78125q0 -0.71875 0.171875 -1.28125q0.171875 -0.5625 0.484375 -0.9375q0.3125 -0.390625 0.765625 -0.59375q0.453125 -0.203125 1.03125 -0.203125q0.578125 0 1.03125 0.203125q0.46875 0.203125 0.78125 0.59375q0.3125 0.375 0.46875 0.9375q0.171875 0.5625 0.171875 1.28125l0 1.78125zm-3.9375 -0.203125l2.953125 -2.265625q-0.078125 -0.75 -0.4375 -1.140625q-0.359375 -0.390625 -1.03125 -0.390625q-0.75 0 -1.125 0.515625q-0.359375 0.5 -0.359375 1.484375l0 1.796875zm2.96875 -1.34375l-2.9375 2.25q0.09375 0.734375 0.453125 1.125q0.359375 0.390625 1.015625 0.390625q0.765625 0 1.109375 -0.515625q0.359375 -0.53125 0.359375 -1.5l0 -1.75zm10.883331 2.6875l0.125 0.546875l0.125 -0.546875l2.078125 -5.828125l0.984375 0l-2.828125 7.578125l-0.734375 0l-1.265625 -3.265625l-0.96875 0l0 -0.796875l1.640625 0l0.84375 2.3125zm7.6447754 1.75l-0.96875 0l0 -6.34375l-1.984375 0.75l0 -0.875l2.875 -1.109375l0.078125 0l0 7.578125zm4.394806 -4.25l0.6875 0q0.359375 0 0.640625 -0.09375q0.28125 -0.109375 0.46875 -0.28125q0.1875 -0.171875 0.28125 -0.40625q0.109375 -0.234375 0.109375 -0.53125q0 -0.65625 -0.34375 -0.984375q-0.34375 -0.34375 -0.984375 -0.34375q-0.3125 0 -0.5625 0.09375q-0.25 0.09375 -0.4375 0.265625q-0.171875 0.171875 -0.28125 0.40625q-0.09375 0.234375 -0.09375 0.53125l-0.96875 0q0 -0.421875 0.171875 -0.796875q0.171875 -0.390625 0.46875 -0.671875q0.3125 -0.296875 0.734375 -0.453125q0.4375 -0.171875 0.96875 -0.171875q0.5 0 0.921875 0.140625q0.421875 0.140625 0.71875 0.421875q0.3125 0.265625 0.46875 0.671875q0.171875 0.390625 0.171875 0.921875q0 0.21875 -0.0625 0.453125q-0.0625 0.234375 -0.203125 0.453125q-0.140625 0.21875 -0.375 0.421875q-0.21875 0.1875 -0.515625 0.3125q0.359375 0.125 0.609375 0.328125q0.25 0.1875 0.390625 0.421875q0.15625 0.234375 0.21875 0.5q0.0625 0.265625 0.0625 0.53125q0 0.53125 -0.1875 0.9375q-0.1875 0.40625 -0.515625 0.703125q-0.3125 0.28125 -0.75 0.4375q-0.4375 0.140625 -0.953125 0.140625q-0.5 0 -0.9375 -0.140625q-0.4375 -0.140625 -0.765625 -0.40625q-0.3125 -0.28125 -0.515625 -0.671875q-0.1875 -0.390625 -0.1875 -0.890625l0.96875 0q0 0.296875 0.09375 0.546875q0.109375 0.234375 0.296875 0.40625q0.1875 0.171875 0.453125 0.265625q0.265625 0.09375 0.59375 0.09375q0.328125 0 0.59375 -0.078125q0.265625 -0.09375 0.453125 -0.265625q0.1875 -0.171875 0.28125 -0.4375q0.109375 -0.265625 0.109375 -0.625q0 -0.359375 -0.125 -0.609375q-0.109375 -0.25 -0.328125 -0.421875q-0.203125 -0.171875 -0.5 -0.25q-0.296875 -0.09375 -0.65625 -0.09375l-0.6875 0l0 -0.78125zm19.934357 2.5l0.125 0.546875l0.125 -0.546875l2.078125 -5.828125l0.984375 0l-2.828125 7.578125l-0.734375 0l-1.265625 -3.265625l-0.96875 0l0 -0.796875l1.640625 0l0.84375 2.3125zm7.644806 1.75l-0.96875 0l0 -6.34375l-1.984375 0.75l0 -0.875l2.875 -1.109375l0.078125 0l0 7.578125zm7.9260254 -5.59375q0 0.5625 -0.3125 1.015625q-0.296875 0.4375 -0.796875 0.6875q0.296875 0.125 0.53125 0.3125q0.234375 0.171875 0.40625 0.421875q0.171875 0.234375 0.25 0.515625q0.09378052 0.28125 0.09378052 0.59375q0 0.515625 -0.18753052 0.921875q-0.1875 0.390625 -0.515625 0.671875q-0.328125 0.265625 -0.765625 0.421875q-0.4375 0.140625 -0.9375 0.140625q-0.5 0 -0.9375 -0.140625q-0.4375 -0.140625 -0.765625 -0.40625q-0.328125 -0.28125 -0.515625 -0.6875q-0.1875 -0.40625 -0.1875 -0.921875q0 -0.3125 0.078125 -0.59375q0.09375 -0.28125 0.265625 -0.515625q0.171875 -0.25 0.40625 -0.4375q0.234375 -0.1875 0.515625 -0.3125q-0.25 -0.125 -0.453125 -0.296875q-0.203125 -0.171875 -0.34375 -0.390625q-0.140625 -0.21875 -0.21875 -0.46875q-0.078125 -0.25 -0.078125 -0.53125q0 -0.5 0.171875 -0.890625q0.171875 -0.390625 0.453125 -0.65625q0.296875 -0.265625 0.703125 -0.40625q0.40625 -0.140625 0.890625 -0.140625q0.484375 0 0.890625 0.140625q0.421875 0.140625 0.71875 0.40625q0.296875 0.265625 0.46875 0.65625q0.171875 0.390625 0.171875 0.890625zm-0.78125 3.53125q0 -0.328125 -0.109375 -0.578125q-0.109375 -0.265625 -0.3125 -0.453125q-0.1875 -0.203125 -0.453125 -0.296875q-0.265625 -0.109375 -0.578125 -0.109375q-0.328125 0 -0.59375 0.109375q-0.265625 0.09375 -0.453125 0.296875q-0.1875 0.1875 -0.296875 0.453125q-0.09375 0.25 -0.09375 0.578125q0 0.328125 0.09375 0.59375q0.109375 0.25 0.296875 0.421875q0.1875 0.171875 0.453125 0.265625q0.265625 0.09375 0.59375 0.09375q0.328125 0 0.59375 -0.09375q0.265625 -0.09375 0.453125 -0.265625q0.1875 -0.171875 0.296875 -0.421875q0.109375 -0.265625 0.109375 -0.59375zm-0.1875 -3.515625q0 -0.296875 -0.09375 -0.53125q-0.09375 -0.234375 -0.265625 -0.40625q-0.171875 -0.1875 -0.40625 -0.28125q-0.234375 -0.09375 -0.515625 -0.09375q-0.28125 0 -0.515625 0.09375q-0.21875 0.09375 -0.390625 0.265625q-0.15625 0.171875 -0.25 0.421875q-0.09375 0.234375 -0.09375 0.53125q0 0.296875 0.09375 0.53125q0.09375 0.234375 0.265625 0.40625q0.171875 0.171875 0.390625 0.265625q0.234375 0.078125 0.515625 0.078125q0.28125 0 0.515625 -0.078125q0.234375 -0.09375 0.390625 -0.265625q0.171875 -0.171875 0.265625 -0.40625q0.09375 -0.25 0.09375 -0.53125z" fill-rule="nonzero"/><path fill="#ff00ff" d="m420.14417 307.91406l0 4.171875l-2.1875 0l0 -11.375l3.890625 0q0.921875 0 1.671875 0.265625q0.75 0.265625 1.28125 0.75q0.53125 0.484375 0.8125 1.15625q0.28125 0.671875 0.28125 1.484375q0 0.765625 -0.28125 1.421875q-0.28125 0.640625 -0.8125 1.125q-0.53125 0.46875 -1.28125 0.734375q-0.75 0.265625 -1.671875 0.265625l-1.703125 0zm0 -1.78125l1.703125 0q0.46875 0 0.8125 -0.140625q0.34375 -0.140625 0.5625 -0.375q0.234375 -0.25 0.34375 -0.5625q0.125 -0.328125 0.125 -0.671875q0 -0.390625 -0.125 -0.734375q-0.109375 -0.34375 -0.34375 -0.59375q-0.21875 -0.265625 -0.5625 -0.40625q-0.34375 -0.15625 -0.8125 -0.15625l-1.703125 0l0 3.640625z" fill-rule="nonzero"/><path fill="#000000" d="m438.76917 310.33594l0.125 0.546875l0.125 -0.546875l2.078125 -5.828125l0.984375 0l-2.828125 7.578125l-0.734375 0l-1.265625 -3.265625l-0.96875 0l0 -0.796875l1.640625 0l0.84375 2.3125zm7.6447754 1.75l-0.96875 0l0 -6.34375l-1.984375 0.75l0 -0.875l2.875 -1.109375l0.078125 0l0 7.578125zm4.394806 -4.25l0.6875 0q0.359375 0 0.640625 -0.09375q0.28125 -0.109375 0.46875 -0.28125q0.1875 -0.171875 0.28125 -0.40625q0.109375 -0.234375 0.109375 -0.53125q0 -0.65625 -0.34375 -0.984375q-0.34375 -0.34375 -0.984375 -0.34375q-0.3125 0 -0.5625 0.09375q-0.25 0.09375 -0.4375 0.265625q-0.171875 0.171875 -0.28125 0.40625q-0.09375 0.234375 -0.09375 0.53125l-0.96875 0q0 -0.421875 0.171875 -0.796875q0.171875 -0.390625 0.46875 -0.671875q0.3125 -0.296875 0.734375 -0.453125q0.4375 -0.171875 0.96875 -0.171875q0.5 0 0.921875 0.140625q0.421875 0.140625 0.71875 0.421875q0.3125 0.265625 0.46875 0.671875q0.171875 0.390625 0.171875 0.921875q0 0.21875 -0.0625 0.453125q-0.0625 0.234375 -0.203125 0.453125q-0.140625 0.21875 -0.375 0.421875q-0.21875 0.1875 -0.515625 0.3125q0.359375 0.125 0.609375 0.328125q0.25 0.1875 0.390625 0.421875q0.15625 0.234375 0.21875 0.5q0.0625 0.265625 0.0625 0.53125q0 0.53125 -0.1875 0.9375q-0.1875 0.40625 -0.515625 0.703125q-0.3125 0.28125 -0.75 0.4375q-0.4375 0.140625 -0.953125 0.140625q-0.5 0 -0.9375 -0.140625q-0.4375 -0.140625 -0.765625 -0.40625q-0.3125 -0.28125 -0.515625 -0.671875q-0.1875 -0.390625 -0.1875 -0.890625l0.96875 0q0 0.296875 0.09375 0.546875q0.109375 0.234375 0.296875 0.40625q0.1875 0.171875 0.453125 0.265625q0.265625 0.09375 0.59375 0.09375q0.328125 0 0.59375 -0.078125q0.265625 -0.09375 0.453125 -0.265625q0.1875 -0.171875 0.28125 -0.4375q0.109375 -0.265625 0.109375 -0.625q0 -0.359375 -0.125 -0.609375q-0.109375 -0.25 -0.328125 -0.421875q-0.203125 -0.171875 -0.5 -0.25q-0.296875 -0.09375 -0.65625 -0.09375l-0.6875 0l0 -0.78125zm29.204163 1.359375q0 0.71875 -0.171875 1.28125q-0.15625 0.546875 -0.46875 0.9375q-0.3125 0.375 -0.765625 0.578125q-0.453125 0.203125 -1.03125 0.203125q-0.578125 0 -1.03125 -0.203125q-0.453125 -0.203125 -0.78125 -0.578125q-0.3125 -0.390625 -0.484375 -0.9375q-0.171875 -0.5625 -0.171875 -1.28125l0 -1.78125q0 -0.71875 0.171875 -1.28125q0.171875 -0.5625 0.484375 -0.9375q0.3125 -0.390625 0.765625 -0.59375q0.453125 -0.203125 1.03125 -0.203125q0.578125 0 1.03125 0.203125q0.46875 0.203125 0.78125 0.59375q0.3125 0.375 0.46875 0.9375q0.171875 0.5625 0.171875 1.28125l0 1.78125zm-3.9375 -0.203125l2.953125 -2.265625q-0.078125 -0.75 -0.4375 -1.140625q-0.359375 -0.390625 -1.03125 -0.390625q-0.75 0 -1.125 0.515625q-0.359375 0.5 -0.359375 1.484375l0 1.796875zm2.96875 -1.34375l-2.9375 2.25q0.09375 0.734375 0.453125 1.125q0.359375 0.390625 1.015625 0.390625q0.765625 0 1.109375 -0.515625q0.359375 -0.53125 0.359375 -1.5l0 -1.75zm23.672913 2.6875l0.125 0.546875l0.125 -0.546875l2.078125 -5.828125l0.984375 0l-2.828125 7.578125l-0.734375 0l-1.265625 -3.265625l-0.96875 0l0 -0.796875l1.640625 0l0.84375 2.3125zm5.6447754 -2.5l0.6875 0q0.359375 0 0.640625 -0.09375q0.28125 -0.109375 0.46875 -0.28125q0.1875 -0.171875 0.28125 -0.40625q0.109375 -0.234375 0.109375 -0.53125q0 -0.65625 -0.34375 -0.984375q-0.34375 -0.34375 -0.984375 -0.34375q-0.3125 0 -0.5625 0.09375q-0.25 0.09375 -0.4375 0.265625q-0.171875 0.171875 -0.28125 0.40625q-0.09375 0.234375 -0.09375 0.53125l-0.96875 0q0 -0.421875 0.171875 -0.796875q0.171875 -0.390625 0.46875 -0.671875q0.3125 -0.296875 0.734375 -0.453125q0.4375 -0.171875 0.96875 -0.171875q0.5 0 0.921875 0.140625q0.421875 0.140625 0.71875 0.421875q0.3125 0.265625 0.46875 0.671875q0.171875 0.390625 0.171875 0.921875q0 0.21875 -0.0625 0.453125q-0.0625 0.234375 -0.203125 0.453125q-0.140625 0.21875 -0.375 0.421875q-0.21875 0.1875 -0.515625 0.3125q0.359375 0.125 0.609375 0.328125q0.25 0.1875 0.390625 0.421875q0.15625 0.234375 0.21875 0.5q0.0625 0.265625 0.0625 0.53125q0 0.53125 -0.1875 0.9375q-0.1875 0.40625 -0.515625 0.703125q-0.3125 0.28125 -0.75 0.4375q-0.4375 0.140625 -0.953125 0.140625q-0.5 0 -0.9375 -0.140625q-0.4375 -0.140625 -0.765625 -0.40625q-0.3125 -0.28125 -0.515625 -0.671875q-0.1875 -0.390625 -0.1875 -0.890625l0.96875 0q0 0.296875 0.09375 0.546875q0.109375 0.234375 0.296875 0.40625q0.1875 0.171875 0.453125 0.265625q0.265625 0.09375 0.59375 0.09375q0.328125 0 0.59375 -0.078125q0.265625 -0.09375 0.453125 -0.265625q0.1875 -0.171875 0.28125 -0.4375q0.109375 -0.265625 0.109375 -0.625q0 -0.359375 -0.125 -0.609375q-0.109375 -0.25 -0.328125 -0.421875q-0.203125 -0.171875 -0.5 -0.25q-0.296875 -0.09375 -0.65625 -0.09375l-0.6875 0l0 -0.78125z" fill-rule="nonzero"/><path fill="#9900ff" d="m421.58167 327.89844l2.140625 -8.1875l2.421875 0l-3.4375 11.375l-2.234375 0l-3.4375 -11.375l2.421875 0l2.125 8.1875z" fill-rule="nonzero"/><path fill="#000000" d="m438.76917 329.33594l0.125 0.546875l0.125 -0.546875l2.078125 -5.828125l0.984375 0l-2.828125 7.578125l-0.734375 0l-1.265625 -3.265625l-0.96875 0l0 -0.796875l1.640625 0l0.84375 2.3125zm7.6447754 1.75l-0.96875 0l0 -6.34375l-1.984375 0.75l0 -0.875l2.875 -1.109375l0.078125 0l0 7.578125zm7.926056 -5.59375q0 0.5625 -0.3125 1.015625q-0.296875 0.4375 -0.796875 0.6875q0.296875 0.125 0.53125 0.3125q0.234375 0.171875 0.40625 0.421875q0.171875 0.234375 0.25 0.515625q0.09375 0.28125 0.09375 0.59375q0 0.515625 -0.1875 0.921875q-0.1875 0.390625 -0.515625 0.671875q-0.328125 0.265625 -0.765625 0.421875q-0.4375 0.140625 -0.9375 0.140625q-0.5 0 -0.9375 -0.140625q-0.4375 -0.140625 -0.765625 -0.40625q-0.328125 -0.28125 -0.515625 -0.6875q-0.1875 -0.40625 -0.1875 -0.921875q0 -0.3125 0.078125 -0.59375q0.09375 -0.28125 0.265625 -0.515625q0.171875 -0.25 0.40625 -0.4375q0.234375 -0.1875 0.515625 -0.3125q-0.25 -0.125 -0.453125 -0.296875q-0.203125 -0.171875 -0.34375 -0.390625q-0.140625 -0.21875 -0.21875 -0.46875q-0.078125 -0.25 -0.078125 -0.53125q0 -0.5 0.171875 -0.890625q0.171875 -0.390625 0.453125 -0.65625q0.296875 -0.265625 0.703125 -0.40625q0.40625 -0.140625 0.890625 -0.140625q0.484375 0 0.890625 0.140625q0.421875 0.140625 0.71875 0.40625q0.296875 0.265625 0.46875 0.65625q0.171875 0.390625 0.171875 0.890625zm-0.78125 3.53125q0 -0.328125 -0.109375 -0.578125q-0.109375 -0.265625 -0.3125 -0.453125q-0.1875 -0.203125 -0.453125 -0.296875q-0.265625 -0.109375 -0.578125 -0.109375q-0.328125 0 -0.59375 0.109375q-0.265625 0.09375 -0.453125 0.296875q-0.1875 0.1875 -0.296875 0.453125q-0.09375 0.25 -0.09375 0.578125q0 0.328125 0.09375 0.59375q0.109375 0.25 0.296875 0.421875q0.1875 0.171875 0.453125 0.265625q0.265625 0.09375 0.59375 0.09375q0.328125 0 0.59375 -0.09375q0.265625 -0.09375 0.453125 -0.265625q0.1875 -0.171875 0.296875 -0.421875q0.109375 -0.265625 0.109375 -0.59375zm-0.1875 -3.515625q0 -0.296875 -0.09375 -0.53125q-0.09375 -0.234375 -0.265625 -0.40625q-0.171875 -0.1875 -0.40625 -0.28125q-0.234375 -0.09375 -0.515625 -0.09375q-0.28125 0 -0.515625 0.09375q-0.21875 0.09375 -0.390625 0.265625q-0.15625 0.171875 -0.25 0.421875q-0.09375 0.234375 -0.09375 0.53125q0 0.296875 0.09375 0.53125q0.09375 0.234375 0.265625 0.40625q0.171875 0.171875 0.390625 0.265625q0.234375 0.078125 0.515625 0.078125q0.28125 0 0.515625 -0.078125q0.234375 -0.09375 0.390625 -0.265625q0.171875 -0.171875 0.265625 -0.40625q0.09375 -0.25 0.09375 -0.53125zm17.371857 3.828125l0.125 0.546875l0.125 -0.546875l2.078125 -5.828125l0.984375 0l-2.828125 7.578125l-0.734375 0l-1.265625 -3.265625l-0.96875 0l0 -0.796875l1.640625 0l0.84375 2.3125zm5.644806 -2.5l0.6875 0q0.359375 0 0.640625 -0.09375q0.28125 -0.109375 0.46875 -0.28125q0.1875 -0.171875 0.28125 -0.40625q0.109375 -0.234375 0.109375 -0.53125q0 -0.65625 -0.34375 -0.984375q-0.34375 -0.34375 -0.984375 -0.34375q-0.3125 0 -0.5625 0.09375q-0.25 0.09375 -0.4375 0.265625q-0.171875 0.171875 -0.28125 0.40625q-0.09375 0.234375 -0.09375 0.53125l-0.96875 0q0 -0.421875 0.171875 -0.796875q0.171875 -0.390625 0.46875 -0.671875q0.3125 -0.296875 0.734375 -0.453125q0.4375 -0.171875 0.96875 -0.171875q0.5 0 0.921875 0.140625q0.421875 0.140625 0.71875 0.421875q0.3125 0.265625 0.46875 0.671875q0.171875 0.390625 0.171875 0.921875q0 0.21875 -0.0625 0.453125q-0.0625 0.234375 -0.203125 0.453125q-0.140625 0.21875 -0.375 0.421875q-0.21875 0.1875 -0.515625 0.3125q0.359375 0.125 0.609375 0.328125q0.25 0.1875 0.390625 0.421875q0.15625 0.234375 0.21875 0.5q0.0625 0.265625 0.0625 0.53125q0 0.53125 -0.1875 0.9375q-0.1875 0.40625 -0.515625 0.703125q-0.3125 0.28125 -0.75 0.4375q-0.4375 0.140625 -0.953125 0.140625q-0.5 0 -0.9375 -0.140625q-0.4375 -0.140625 -0.765625 -0.40625q-0.3125 -0.28125 -0.515625 -0.671875q-0.1875 -0.390625 -0.1875 -0.890625l0.96875 0q0 0.296875 0.09375 0.546875q0.109375 0.234375 0.296875 0.40625q0.1875 0.171875 0.453125 0.265625q0.265625 0.09375 0.59375 0.09375q0.328125 0 0.59375 -0.078125q0.265625 -0.09375 0.453125 -0.265625q0.1875 -0.171875 0.28125 -0.4375q0.109375 -0.265625 0.109375 -0.625q0 -0.359375 -0.125 -0.609375q-0.109375 -0.25 -0.328125 -0.421875q-0.203125 -0.171875 -0.5 -0.25q-0.296875 -0.09375 -0.65625 -0.09375l-0.6875 0l0 -0.78125zm35.598938 1.359375q0 0.71875 -0.171875 1.28125q-0.15625 0.546875 -0.46875 0.9375q-0.3125 0.375 -0.765625 0.578125q-0.453125 0.203125 -1.03125 0.203125q-0.578125 0 -1.03125 -0.203125q-0.453125 -0.203125 -0.78125 -0.578125q-0.3125 -0.390625 -0.484375 -0.9375q-0.171875 -0.5625 -0.171875 -1.28125l0 -1.78125q0 -0.71875 0.171875 -1.28125q0.171875 -0.5625 0.484375 -0.9375q0.3125 -0.390625 0.765625 -0.59375q0.453125 -0.203125 1.03125 -0.203125q0.578125 0 1.03125 0.203125q0.46875 0.203125 0.78125 0.59375q0.3125 0.375 0.46875 0.9375q0.171875 0.5625 0.171875 1.28125l0 1.78125zm-3.9375 -0.203125l2.953125 -2.265625q-0.078125 -0.75 -0.4375 -1.140625q-0.359375 -0.390625 -1.03125 -0.390625q-0.75 0 -1.125 0.515625q-0.359375 0.5 -0.359375 1.484375l0 1.796875zm2.96875 -1.34375l-2.9375 2.25q0.09375 0.734375 0.453125 1.125q0.359375 0.390625 1.015625 0.390625q0.765625 0 1.109375 -0.515625q0.359375 -0.53125 0.359375 -1.5l0 -1.75z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m1.3056767 256.0l360.37796 0l0 92.22046l-360.37796 0z" fill-rule="evenodd"/><path fill="#000000" d="m11.118176 273.30124q0 -0.71875 0.171875 -1.3125q0.1875 -0.59375 0.515625 -1.015625q0.328125 -0.4375 0.796875 -0.671875q0.46875 -0.234375 1.0625 -0.234375q0.5625 0 0.984375 0.1875q0.421875 0.1875 0.734375 0.546875l0 -3.28125l1.093751 0l0 9.0l-1.000001 0l-0.046875 -0.671875q-0.3125 0.390625 -0.765625 0.59375q-0.4375 0.203125 -1.015625 0.203125q-0.578125 0 -1.046875 -0.25q-0.46875 -0.25 -0.796875 -0.6875q-0.328125 -0.4375 -0.515625 -1.015625q-0.171875 -0.59375 -0.171875 -1.265625l0 -0.125zm1.09375 0.125q0 0.453125 0.09375 0.875q0.09375 0.40625 0.296875 0.734375q0.21875 0.3125 0.53125 0.5q0.328125 0.1875 0.78125 0.1875q0.28125 0 0.5 -0.0625q0.21875 -0.078125 0.390625 -0.1875q0.1875 -0.125 0.328125 -0.28125q0.140625 -0.171875 0.25 -0.390625l0 -2.9375q-0.203125 -0.390625 -0.5625 -0.625q-0.359375 -0.25 -0.890625 -0.25q-0.453125 0 -0.78125 0.1875q-0.328125 0.1875 -0.546875 0.5q-0.203125 0.3125 -0.296875 0.734375q-0.09375 0.421875 -0.09375 0.890625l0 0.125zm7.388673 -0.375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm8.951172 -0.015625l-1.703125 0l0 3.484375l-1.078125 0l0 -8.53125l2.5 0q0.59375 0.015625 1.125 0.171875q0.53125 0.15625 0.921875 0.46875q0.390625 0.3125 0.609375 0.796875q0.234375 0.484375 0.234375 1.125q0 0.40625 -0.125 0.765625q-0.109375 0.34375 -0.328125 0.625q-0.203125 0.28125 -0.5 0.5q-0.296875 0.203125 -0.640625 0.359375l1.8125 3.640625l-0.015625 0.078125l-1.140625 0l-1.671875 -3.484375zm-1.703125 -0.890625l1.453125 0q0.359375 0 0.671875 -0.109375q0.328125 -0.109375 0.578125 -0.3125q0.25 -0.203125 0.390625 -0.5q0.140625 -0.296875 0.140625 -0.6875q0 -0.40625 -0.140625 -0.71875q-0.140625 -0.3125 -0.375 -0.515625q-0.234375 -0.203125 -0.578125 -0.3125q-0.328125 -0.109375 -0.71875 -0.109375l-1.421875 0l0 3.265625zm8.82617 4.125q0 0.28125 -0.0625 0.578125q-0.0625 0.296875 -0.203125 0.59375q-0.125 0.296875 -0.3125 0.5625q-0.1875 0.28125 -0.4375 0.484375l-0.671875 -0.375q0.28125 -0.40625 0.390625 -0.875q0.125 -0.453125 0.125 -0.953125l0 -1.046875l1.171875 0l0 1.03125zm5.638672 -3.171875l0 3.421875l-1.078125 0l0 -8.53125l2.765625 0q0.5625 0.015625 1.078125 0.1875q0.515625 0.15625 0.90625 0.484375q0.390625 0.328125 0.609375 0.796875q0.21875 0.46875 0.21875 1.09375q0 0.609375 -0.21875 1.09375q-0.21875 0.46875 -0.609375 0.796875q-0.390625 0.3125 -0.90625 0.484375q-0.515625 0.171875 -1.078125 0.171875l-1.6875 0zm0 -0.890625l1.6875 0q0.375 0 0.6875 -0.109375q0.3125 -0.125 0.546875 -0.328125q0.234375 -0.21875 0.359375 -0.515625q0.140625 -0.3125 0.140625 -0.6875q0 -0.390625 -0.140625 -0.703125q-0.125 -0.3125 -0.359375 -0.53125q-0.21875 -0.21875 -0.546875 -0.328125q-0.3125 -0.125 -0.6875 -0.125l-1.6875 0l0 3.328125zm9.966797 0.90625q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625zm15.683598 -1.171875l-5.234379 0l0 -0.9375l5.234379 0l0 0.9375zm0 2.4375l-5.234379 0l0 -0.9375l5.234379 0l0 0.9375zm10.246094 -1.328125q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm9.638672 3.46875l-1.078125 0l0 -7.15625l-2.234375 0.859375l0 -1.0l3.234375 -1.234375l0.078125 0l0 8.53125zm8.435547 -3.28125l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm5.9726562 3.28125l-1.078125 0l0 -7.15625l-2.234375 0.859375l0 -1.0l3.234375 -1.234375l0.078125 0l0 8.53125zm7.638672 -3.40625q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m115.29982 272.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m127.28615 271.94186l2.390625 0l0 1.078125l-2.390625 0l0 2.640625l-1.078125 0l0 -2.640625l-2.375 0l0 -1.078125l2.375 0l0 -2.484375l1.078125 0l0 2.484375zm12.339844 1.109375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm9.638672 3.46875l-1.078125 0l0 -7.15625l-2.234375 0.859375l0 -1.0l3.234375 -1.234375l0.078125 0l0 8.53125zm8.435547 -3.28125l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm3.7226562 -1.5l0.78125 0q0.40625 0 0.71875 -0.109375q0.3125 -0.125 0.53125 -0.3125q0.21875 -0.1875 0.328125 -0.453125q0.109375 -0.28125 0.109375 -0.609375q0 -0.734375 -0.390625 -1.109375q-0.375 -0.390625 -1.109375 -0.390625q-0.34375 0 -0.625 0.109375q-0.28125 0.109375 -0.484375 0.296875q-0.203125 0.1875 -0.3125 0.46875q-0.109375 0.265625 -0.109375 0.59375l-1.09375 0q0 -0.484375 0.1875 -0.90625q0.1875 -0.4375 0.53125 -0.75q0.34375 -0.328125 0.828125 -0.515625q0.484375 -0.1875 1.078125 -0.1875q0.578125 0 1.046875 0.15625q0.484375 0.15625 0.8125 0.46875q0.34375 0.296875 0.53125 0.75q0.1875 0.453125 0.1875 1.046875q0 0.25 -0.078125 0.515625q-0.078125 0.25 -0.234375 0.5q-0.15625 0.25 -0.40625 0.46875q-0.25 0.21875 -0.59375 0.375q0.421875 0.125 0.6875 0.34375q0.28125 0.21875 0.453125 0.5q0.171875 0.265625 0.234375 0.5625q0.0625 0.296875 0.0625 0.59375q0 0.59375 -0.203125 1.0625q-0.203125 0.453125 -0.5625 0.78125q-0.359375 0.3125 -0.859375 0.484375q-0.5 0.171875 -1.0625 0.171875q-0.5625 0 -1.0625 -0.15625q-0.5 -0.171875 -0.859375 -0.46875q-0.359375 -0.3125 -0.578125 -0.75q-0.21875 -0.4375 -0.21875 -1.0l1.09375 0q0 0.328125 0.109375 0.609375q0.109375 0.28125 0.3125 0.46875q0.21875 0.1875 0.515625 0.296875q0.3125 0.109375 0.6875 0.109375q0.359375 0 0.65625 -0.09375q0.296875 -0.109375 0.5 -0.296875q0.21875 -0.203125 0.328125 -0.5q0.125 -0.296875 0.125 -0.703125q0 -0.390625 -0.140625 -0.671875q-0.125 -0.296875 -0.359375 -0.484375q-0.234375 -0.203125 -0.578125 -0.296875q-0.328125 -0.09375 -0.734375 -0.09375l-0.78125 0l0 -0.875zm9.888672 1.375q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m177.71584 272.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m189.70216 271.94186l2.390625 0l0 1.078125l-2.390625 0l0 2.640625l-1.078125 0l0 -2.640625l-2.375 0l0 -1.078125l2.375 0l0 -2.484375l1.078125 0l0 2.484375zm12.339844 1.109375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm11.482422 0.203125q0 0.8125 -0.1875 1.453125q-0.1875 0.625 -0.546875 1.0625q-0.34375 0.421875 -0.859375 0.65625q-0.5 0.21875 -1.15625 0.21875q-0.65625 0 -1.171875 -0.21875q-0.5 -0.234375 -0.859375 -0.65625q-0.359375 -0.4375 -0.5625 -1.0625q-0.1875 -0.640625 -0.1875 -1.453125l0 -2.0q0 -0.8125 0.1875 -1.4375q0.1875 -0.640625 0.546875 -1.0625q0.359375 -0.4375 0.859375 -0.65625q0.515625 -0.234375 1.171875 -0.234375q0.65625 0 1.171875 0.234375q0.515625 0.21875 0.859375 0.65625q0.359375 0.421875 0.546875 1.0625q0.1875 0.625 0.1875 1.4375l0 2.0zm-4.4375 -0.21875l3.328125 -2.546875q-0.09375 -0.84375 -0.5 -1.28125q-0.40625 -0.453125 -1.15625 -0.453125q-0.859375 0 -1.265625 0.578125q-0.40625 0.578125 -0.40625 1.6875l0 2.015625zm3.34375 -1.515625l-3.3125 2.546875q0.09375 0.828125 0.5 1.265625q0.421875 0.421875 1.15625 0.421875q0.859375 0 1.25 -0.578125q0.40625 -0.59375 0.40625 -1.6875l0 -1.96875zm7.685547 1.71875l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm3.7226562 -1.5l0.78125 0q0.40625 0 0.71875 -0.109375q0.3125 -0.125 0.53125 -0.3125q0.21875 -0.1875 0.328125 -0.453125q0.109375 -0.28125 0.109375 -0.609375q0 -0.734375 -0.390625 -1.109375q-0.375 -0.390625 -1.109375 -0.390625q-0.34375 0 -0.625 0.109375q-0.28125 0.109375 -0.484375 0.296875q-0.203125 0.1875 -0.3125 0.46875q-0.109375 0.265625 -0.109375 0.59375l-1.09375 0q0 -0.484375 0.1875 -0.90625q0.1875 -0.4375 0.53125 -0.75q0.34375 -0.328125 0.828125 -0.515625q0.484375 -0.1875 1.078125 -0.1875q0.578125 0 1.046875 0.15625q0.484375 0.15625 0.8125 0.46875q0.34375 0.296875 0.53125 0.75q0.1875 0.453125 0.1875 1.046875q0 0.25 -0.078125 0.515625q-0.078125 0.25 -0.234375 0.5q-0.15625 0.25 -0.40625 0.46875q-0.25 0.21875 -0.59375 0.375q0.421875 0.125 0.6875 0.34375q0.28125 0.21875 0.453125 0.5q0.171875 0.265625 0.234375 0.5625q0.0625 0.296875 0.0625 0.59375q0 0.59375 -0.203125 1.0625q-0.203125 0.453125 -0.5625 0.78125q-0.359375 0.3125 -0.859375 0.484375q-0.5 0.171875 -1.0625 0.171875q-0.5625 0 -1.0625 -0.15625q-0.5 -0.171875 -0.859375 -0.46875q-0.359375 -0.3125 -0.578125 -0.75q-0.21875 -0.4375 -0.21875 -1.0l1.09375 0q0 0.328125 0.109375 0.609375q0.109375 0.28125 0.3125 0.46875q0.21875 0.1875 0.515625 0.296875q0.3125 0.109375 0.6875 0.109375q0.359375 0 0.65625 -0.09375q0.296875 -0.109375 0.5 -0.296875q0.21875 -0.203125 0.328125 -0.5q0.125 -0.296875 0.125 -0.703125q0 -0.390625 -0.140625 -0.671875q-0.125 -0.296875 -0.359375 -0.484375q-0.234375 -0.203125 -0.578125 -0.296875q-0.328125 -0.09375 -0.734375 -0.09375l-0.78125 0l0 -0.875zm9.888672 1.375q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m240.13185 272.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m261.4131 271.94186l-5.234375 0l0 -0.9375l5.234375 0l0 0.9375zm0 2.4375l-5.234375 0l0 -0.9375l5.234375 0l0 0.9375zm27.085938 2.140625l-1.078125 0l0 -7.15625l-2.234375 0.859375l0 -1.0l3.234375 -1.234375l0.078125 0l0 8.53125zm4.951172 -4.78125l0.78125 0q0.40625 0 0.71875 -0.109375q0.3125 -0.125 0.53125 -0.3125q0.21875 -0.1875 0.328125 -0.453125q0.109375 -0.28125 0.109375 -0.609375q0 -0.734375 -0.390625 -1.109375q-0.375 -0.390625 -1.109375 -0.390625q-0.34375 0 -0.625 0.109375q-0.28125 0.109375 -0.484375 0.296875q-0.203125 0.1875 -0.3125 0.46875q-0.109375 0.265625 -0.109375 0.59375l-1.09375 0q0 -0.484375 0.1875 -0.90625q0.1875 -0.4375 0.53125 -0.75q0.34375 -0.328125 0.828125 -0.515625q0.484375 -0.1875 1.078125 -0.1875q0.578125 0 1.046875 0.15625q0.484375 0.15625 0.8125 0.46875q0.34375 0.296875 0.53125 0.75q0.1875 0.453125 0.1875 1.046875q0 0.25 -0.078125 0.515625q-0.078125 0.25 -0.234375 0.5q-0.15625 0.25 -0.40625 0.46875q-0.25 0.21875 -0.59375 0.375q0.421875 0.125 0.6875 0.34375q0.28125 0.21875 0.453125 0.5q0.171875 0.265625 0.234375 0.5625q0.0625 0.296875 0.0625 0.59375q0 0.59375 -0.203125 1.0625q-0.203125 0.453125 -0.5625 0.78125q-0.359375 0.3125 -0.859375 0.484375q-0.5 0.171875 -1.0625 0.171875q-0.5625 0 -1.0625 -0.15625q-0.5 -0.171875 -0.859375 -0.46875q-0.359375 -0.3125 -0.578125 -0.75q-0.21875 -0.4375 -0.21875 -1.0l1.09375 0q0 0.328125 0.109375 0.609375q0.109375 0.28125 0.3125 0.46875q0.21875 0.1875 0.515625 0.296875q0.3125 0.109375 0.6875 0.109375q0.359375 0 0.65625 -0.09375q0.296875 -0.109375 0.5 -0.296875q0.21875 -0.203125 0.328125 -0.5q0.125 -0.296875 0.125 -0.703125q0 -0.390625 -0.140625 -0.671875q-0.125 -0.296875 -0.359375 -0.484375q-0.234375 -0.203125 -0.578125 -0.296875q-0.328125 -0.09375 -0.734375 -0.09375l-0.78125 0l0 -0.875z" fill-rule="nonzero"/><path fill="#000000" d="m11.118176 301.30124q0 -0.71875 0.171875 -1.3125q0.1875 -0.59375 0.515625 -1.015625q0.328125 -0.4375 0.796875 -0.671875q0.46875 -0.234375 1.0625 -0.234375q0.5625 0 0.984375 0.1875q0.421875 0.1875 0.734375 0.546875l0 -3.28125l1.093751 0l0 9.0l-1.000001 0l-0.046875 -0.671875q-0.3125 0.390625 -0.765625 0.59375q-0.4375 0.203125 -1.015625 0.203125q-0.578125 0 -1.046875 -0.25q-0.46875 -0.25 -0.796875 -0.6875q-0.328125 -0.4375 -0.515625 -1.015625q-0.171875 -0.59375 -0.171875 -1.265625l0 -0.125zm1.09375 0.125q0 0.453125 0.09375 0.875q0.09375 0.40625 0.296875 0.734375q0.21875 0.3125 0.53125 0.5q0.328125 0.1875 0.78125 0.1875q0.28125 0 0.5 -0.0625q0.21875 -0.078125 0.390625 -0.1875q0.1875 -0.125 0.328125 -0.28125q0.140625 -0.171875 0.25 -0.390625l0 -2.9375q-0.203125 -0.390625 -0.5625 -0.625q-0.359375 -0.25 -0.890625 -0.25q-0.453125 0 -0.78125 0.1875q-0.328125 0.1875 -0.546875 0.5q-0.203125 0.3125 -0.296875 0.734375q-0.09375 0.421875 -0.09375 0.890625l0 0.125zm7.388673 -0.375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm8.951172 -0.015625l-1.703125 0l0 3.484375l-1.078125 0l0 -8.53125l2.5 0q0.59375 0.015625 1.125 0.171875q0.53125 0.15625 0.921875 0.46875q0.390625 0.3125 0.609375 0.796875q0.234375 0.484375 0.234375 1.125q0 0.40625 -0.125 0.765625q-0.109375 0.34375 -0.328125 0.625q-0.203125 0.28125 -0.5 0.5q-0.296875 0.203125 -0.640625 0.359375l1.8125 3.640625l-0.015625 0.078125l-1.140625 0l-1.671875 -3.484375zm-1.703125 -0.890625l1.453125 0q0.359375 0 0.671875 -0.109375q0.328125 -0.109375 0.578125 -0.3125q0.25 -0.203125 0.390625 -0.5q0.140625 -0.296875 0.140625 -0.6875q0 -0.40625 -0.140625 -0.71875q-0.140625 -0.3125 -0.375 -0.515625q-0.234375 -0.203125 -0.578125 -0.3125q-0.328125 -0.109375 -0.71875 -0.109375l-1.421875 0l0 3.265625zm8.82617 4.125q0 0.28125 -0.0625 0.578125q-0.0625 0.296875 -0.203125 0.59375q-0.125 0.296875 -0.3125 0.5625q-0.1875 0.28125 -0.4375 0.484375l-0.671875 -0.375q0.28125 -0.40625 0.390625 -0.875q0.125 -0.453125 0.125 -0.953125l0 -1.046875l1.171875 0l0 1.03125zm7.013672 -1.5l2.015625 -6.78125l1.15625 0l-2.6875 8.53125l-0.953125 0l-2.6875 -8.53125l1.15625 0l2.0 6.78125zm8.591797 -1.65625q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625zm15.683598 -1.171875l-5.234379 0l0 -0.9375l5.234379 0l0 0.9375zm0 2.4375l-5.234379 0l0 -0.9375l5.234379 0l0 0.9375zm10.246094 -1.328125q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm9.638672 3.46875l-1.078125 0l0 -7.15625l-2.234375 0.859375l0 -1.0l3.234375 -1.234375l0.078125 0l0 8.53125zm8.435547 -3.28125l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm7.8164062 0.015625q0 0.8125 -0.1875 1.453125q-0.1875 0.625 -0.546875 1.0625q-0.34375 0.421875 -0.859375 0.65625q-0.5 0.21875 -1.15625 0.21875q-0.65625 0 -1.171875 -0.21875q-0.5 -0.234375 -0.859375 -0.65625q-0.359375 -0.4375 -0.5625 -1.0625q-0.1875 -0.640625 -0.1875 -1.453125l0 -2.0q0 -0.8125 0.1875 -1.4375q0.1875 -0.640625 0.546875 -1.0625q0.359375 -0.4375 0.859375 -0.65625q0.515625 -0.234375 1.171875 -0.234375q0.65625 0 1.171875 0.234375q0.515625 0.21875 0.859375 0.65625q0.359375 0.421875 0.546875 1.0625q0.1875 0.625 0.1875 1.4375l0 2.0zm-4.4375 -0.21875l3.328125 -2.546875q-0.09375 -0.84375 -0.5 -1.28125q-0.40625 -0.453125 -1.15625 -0.453125q-0.859375 0 -1.265625 0.578125q-0.40625 0.578125 -0.40625 1.6875l0 2.015625zm3.34375 -1.515625l-3.3125 2.546875q0.09375 0.828125 0.5 1.265625q0.421875 0.421875 1.15625 0.421875q0.859375 0 1.25 -0.578125q0.40625 -0.59375 0.40625 -1.6875l0 -1.96875zm6.888672 1.59375q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m115.29982 300.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m127.28615 299.94186l2.390625 0l0 1.078125l-2.390625 0l0 2.640625l-1.078125 0l0 -2.640625l-2.375 0l0 -1.078125l2.375 0l0 -2.484375l1.078125 0l0 2.484375zm12.339844 1.109375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm9.638672 3.46875l-1.078125 0l0 -7.15625l-2.234375 0.859375l0 -1.0l3.234375 -1.234375l0.078125 0l0 8.53125zm8.435547 -3.28125l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm7.6914062 3.28125l-5.59375 0l0 -0.78125l2.796875 -3.109375q0.375 -0.40625 0.625 -0.734375q0.265625 -0.328125 0.40625 -0.59375q0.15625 -0.265625 0.21875 -0.515625q0.0625 -0.25 0.0625 -0.5q0 -0.3125 -0.109375 -0.59375q-0.09375 -0.28125 -0.296875 -0.484375q-0.1875 -0.203125 -0.46875 -0.328125q-0.28125 -0.125 -0.625 -0.125q-0.421875 0 -0.75 0.125q-0.3125 0.125 -0.515625 0.359375q-0.203125 0.21875 -0.3125 0.546875q-0.09375 0.3125 -0.09375 0.71875l-1.09375 0q0 -0.546875 0.1875 -1.015625q0.1875 -0.484375 0.53125 -0.84375q0.359375 -0.359375 0.875 -0.5625q0.515625 -0.21875 1.171875 -0.21875q0.609375 0 1.078125 0.1875q0.484375 0.171875 0.8125 0.5q0.34375 0.3125 0.515625 0.75q0.1875 0.421875 0.1875 0.9375q0 0.375 -0.125 0.75q-0.125 0.375 -0.359375 0.734375q-0.21875 0.359375 -0.515625 0.71875q-0.28125 0.359375 -0.59375 0.703125l-2.296875 2.484375l4.28125 0l0 0.890625zm5.919922 -3.40625q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m177.71584 300.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m189.70216 299.94186l2.390625 0l0 1.078125l-2.390625 0l0 2.640625l-1.078125 0l0 -2.640625l-2.375 0l0 -1.078125l2.375 0l0 -2.484375l1.078125 0l0 2.484375zm12.339844 1.109375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm11.482422 0.203125q0 0.8125 -0.1875 1.453125q-0.1875 0.625 -0.546875 1.0625q-0.34375 0.421875 -0.859375 0.65625q-0.5 0.21875 -1.15625 0.21875q-0.65625 0 -1.171875 -0.21875q-0.5 -0.234375 -0.859375 -0.65625q-0.359375 -0.4375 -0.5625 -1.0625q-0.1875 -0.640625 -0.1875 -1.453125l0 -2.0q0 -0.8125 0.1875 -1.4375q0.1875 -0.640625 0.546875 -1.0625q0.359375 -0.4375 0.859375 -0.65625q0.515625 -0.234375 1.171875 -0.234375q0.65625 0 1.171875 0.234375q0.515625 0.21875 0.859375 0.65625q0.359375 0.421875 0.546875 1.0625q0.1875 0.625 0.1875 1.4375l0 2.0zm-4.4375 -0.21875l3.328125 -2.546875q-0.09375 -0.84375 -0.5 -1.28125q-0.40625 -0.453125 -1.15625 -0.453125q-0.859375 0 -1.265625 0.578125q-0.40625 0.578125 -0.40625 1.6875l0 2.015625zm3.34375 -1.515625l-3.3125 2.546875q0.09375 0.828125 0.5 1.265625q0.421875 0.421875 1.15625 0.421875q0.859375 0 1.25 -0.578125q0.40625 -0.59375 0.40625 -1.6875l0 -1.96875zm7.685547 1.71875l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm6.8632812 0.421875l1.1875 0l0 0.875l-1.1875 0l0 1.984375l-1.09375 0l0 -1.984375l-3.890625 0l0 -0.640625l3.828125 -5.90625l1.15625 0l0 5.671875zm-3.78125 0l2.6875 0l0 -4.234375l-0.171875 0.328125l-2.515625 3.90625zm10.529297 -0.546875q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m240.13185 300.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m261.4131 299.94186l-5.234375 0l0 -0.9375l5.234375 0l0 0.9375zm0 2.4375l-5.234375 0l0 -0.9375l5.234375 0l0 0.9375zm27.085938 2.140625l-1.078125 0l0 -7.15625l-2.234375 0.859375l0 -1.0l3.234375 -1.234375l0.078125 0l0 8.53125zm8.935547 -6.3125q0 0.640625 -0.34375 1.140625q-0.34375 0.5 -0.90625 0.78125q0.328125 0.140625 0.59375 0.359375q0.265625 0.203125 0.453125 0.46875q0.203125 0.265625 0.296875 0.59375q0.109375 0.3125 0.109375 0.671875q0 0.578125 -0.21875 1.03125q-0.21875 0.4375 -0.59375 0.75q-0.359375 0.3125 -0.859375 0.484375q-0.484375 0.15625 -1.046875 0.15625q-0.5625 0 -1.0625 -0.15625q-0.5 -0.171875 -0.875 -0.46875q-0.359375 -0.3125 -0.578125 -0.765625q-0.203125 -0.453125 -0.203125 -1.03125q0 -0.359375 0.09375 -0.671875q0.109375 -0.328125 0.296875 -0.59375q0.1875 -0.265625 0.453125 -0.46875q0.265625 -0.21875 0.59375 -0.359375q-0.28125 -0.140625 -0.515625 -0.328125q-0.21875 -0.203125 -0.390625 -0.453125q-0.15625 -0.25 -0.25 -0.53125q-0.078125 -0.28125 -0.078125 -0.609375q0 -0.546875 0.1875 -0.984375q0.1875 -0.4375 0.515625 -0.734375q0.34375 -0.296875 0.796875 -0.453125q0.453125 -0.171875 1.0 -0.171875q0.546875 0 1.0 0.171875q0.46875 0.15625 0.8125 0.453125q0.34375 0.296875 0.53125 0.734375q0.1875 0.4375 0.1875 0.984375zm-0.890625 3.984375q0 -0.359375 -0.125 -0.65625q-0.109375 -0.296875 -0.328125 -0.5q-0.21875 -0.21875 -0.515625 -0.328125q-0.296875 -0.125 -0.65625 -0.125q-0.375 0 -0.671875 0.125q-0.296875 0.109375 -0.515625 0.328125q-0.203125 0.203125 -0.328125 0.5q-0.109375 0.296875 -0.109375 0.65625q0 0.375 0.109375 0.671875q0.125 0.28125 0.328125 0.484375q0.21875 0.1875 0.515625 0.296875q0.296875 0.109375 0.671875 0.109375q0.359375 0 0.65625 -0.109375q0.3125 -0.109375 0.515625 -0.296875q0.21875 -0.203125 0.328125 -0.484375q0.125 -0.296875 0.125 -0.671875zm-0.1875 -3.953125q0 -0.328125 -0.109375 -0.59375q-0.109375 -0.28125 -0.3125 -0.46875q-0.1875 -0.203125 -0.453125 -0.3125q-0.25 -0.109375 -0.578125 -0.109375q-0.3125 0 -0.578125 0.109375q-0.25 0.109375 -0.4375 0.296875q-0.1875 0.1875 -0.296875 0.46875q-0.09375 0.265625 -0.09375 0.609375q0 0.328125 0.09375 0.59375q0.109375 0.265625 0.296875 0.453125q0.1875 0.1875 0.453125 0.296875q0.265625 0.109375 0.578125 0.109375q0.3125 0 0.578125 -0.109375q0.265625 -0.109375 0.453125 -0.296875q0.1875 -0.1875 0.296875 -0.453125q0.109375 -0.265625 0.109375 -0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m11.118176 329.30124q0 -0.71875 0.171875 -1.3125q0.1875 -0.59375 0.515625 -1.015625q0.328125 -0.4375 0.796875 -0.671875q0.46875 -0.234375 1.0625 -0.234375q0.5625 0 0.984375 0.1875q0.421875 0.1875 0.734375 0.546875l0 -3.28125l1.093751 0l0 9.0l-1.000001 0l-0.046875 -0.671875q-0.3125 0.390625 -0.765625 0.59375q-0.4375 0.203125 -1.015625 0.203125q-0.578125 0 -1.046875 -0.25q-0.46875 -0.25 -0.796875 -0.6875q-0.328125 -0.4375 -0.515625 -1.015625q-0.171875 -0.59375 -0.171875 -1.265625l0 -0.125zm1.09375 0.125q0 0.453125 0.09375 0.875q0.09375 0.40625 0.296875 0.734375q0.21875 0.3125 0.53125 0.5q0.328125 0.1875 0.78125 0.1875q0.28125 0 0.5 -0.0625q0.21875 -0.078125 0.390625 -0.1875q0.1875 -0.125 0.328125 -0.28125q0.140625 -0.171875 0.25 -0.390625l0 -2.9375q-0.203125 -0.390625 -0.5625 -0.625q-0.359375 -0.25 -0.890625 -0.25q-0.453125 0 -0.78125 0.1875q-0.328125 0.1875 -0.546875 0.5q-0.203125 0.3125 -0.296875 0.734375q-0.09375 0.421875 -0.09375 0.890625l0 0.125zm7.388673 -0.375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm7.310547 0.046875l0 3.421875l-1.078125 0l0 -8.53125l2.765625 0q0.5625 0.015625 1.078125 0.1875q0.515625 0.15625 0.90625 0.484375q0.390625 0.328125 0.609375 0.796875q0.21875 0.46875 0.21875 1.09375q0 0.609375 -0.21875 1.09375q-0.21875 0.46875 -0.609375 0.796875q-0.390625 0.3125 -0.90625 0.484375q-0.515625 0.171875 -1.078125 0.171875l-1.6875 0zm0 -0.890625l1.6875 0q0.375 0 0.6875 -0.109375q0.3125 -0.125 0.546875 -0.328125q0.234375 -0.21875 0.359375 -0.515625q0.140625 -0.3125 0.140625 -0.6875q0 -0.390625 -0.140625 -0.703125q-0.125 -0.3125 -0.359375 -0.53125q-0.21875 -0.21875 -0.546875 -0.328125q-0.3125 -0.125 -0.6875 -0.125l-1.6875 0l0 3.328125zm8.76367 4.0625q0 0.28125 -0.0625 0.578125q-0.0625 0.296875 -0.203125 0.59375q-0.125 0.296875 -0.3125 0.5625q-0.1875 0.28125 -0.4375 0.484375l-0.671875 -0.375q0.28125 -0.40625 0.390625 -0.875q0.125 -0.453125 0.125 -0.953125l0 -1.046875l1.171875 0l0 1.03125zm7.013672 -1.5l2.015625 -6.78125l1.15625 0l-2.6875 8.53125l-0.953125 0l-2.6875 -8.53125l1.15625 0l2.0 6.78125zm8.591797 -1.65625q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625zm15.683598 -1.171875l-5.234379 0l0 -0.9375l5.234379 0l0 0.9375zm0 2.4375l-5.234379 0l0 -0.9375l5.234379 0l0 0.9375zm10.246094 -1.328125q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm9.638672 3.46875l-1.078125 0l0 -7.15625l-2.234375 0.859375l0 -1.0l3.234375 -1.234375l0.078125 0l0 8.53125zm8.435547 -3.28125l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm7.8164062 0.015625q0 0.8125 -0.1875 1.453125q-0.1875 0.625 -0.546875 1.0625q-0.34375 0.421875 -0.859375 0.65625q-0.5 0.21875 -1.15625 0.21875q-0.65625 0 -1.171875 -0.21875q-0.5 -0.234375 -0.859375 -0.65625q-0.359375 -0.4375 -0.5625 -1.0625q-0.1875 -0.640625 -0.1875 -1.453125l0 -2.0q0 -0.8125 0.1875 -1.4375q0.1875 -0.640625 0.546875 -1.0625q0.359375 -0.4375 0.859375 -0.65625q0.515625 -0.234375 1.171875 -0.234375q0.65625 0 1.171875 0.234375q0.515625 0.21875 0.859375 0.65625q0.359375 0.421875 0.546875 1.0625q0.1875 0.625 0.1875 1.4375l0 2.0zm-4.4375 -0.21875l3.328125 -2.546875q-0.09375 -0.84375 -0.5 -1.28125q-0.40625 -0.453125 -1.15625 -0.453125q-0.859375 0 -1.265625 0.578125q-0.40625 0.578125 -0.40625 1.6875l0 2.015625zm3.34375 -1.515625l-3.3125 2.546875q0.09375 0.828125 0.5 1.265625q0.421875 0.421875 1.15625 0.421875q0.859375 0 1.25 -0.578125q0.40625 -0.59375 0.40625 -1.6875l0 -1.96875zm6.888672 1.59375q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m115.29982 328.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m127.28615 327.94186l2.390625 0l0 1.078125l-2.390625 0l0 2.640625l-1.078125 0l0 -2.640625l-2.375 0l0 -1.078125l2.375 0l0 -2.484375l1.078125 0l0 2.484375zm12.339844 1.109375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm7.388672 -1.3125l0.78125 0q0.40625 0 0.71875 -0.109375q0.3125 -0.125 0.53125 -0.3125q0.21875 -0.1875 0.328125 -0.453125q0.109375 -0.28125 0.109375 -0.609375q0 -0.734375 -0.390625 -1.109375q-0.375 -0.390625 -1.109375 -0.390625q-0.34375 0 -0.625 0.109375q-0.28125 0.109375 -0.484375 0.296875q-0.203125 0.1875 -0.3125 0.46875q-0.109375 0.265625 -0.109375 0.59375l-1.09375 0q0 -0.484375 0.1875 -0.90625q0.1875 -0.4375 0.53125 -0.75q0.34375 -0.328125 0.828125 -0.515625q0.484375 -0.1875 1.078125 -0.1875q0.578125 0 1.046875 0.15625q0.484375 0.15625 0.8125 0.46875q0.34375 0.296875 0.53125 0.75q0.1875 0.453125 0.1875 1.046875q0 0.25 -0.078125 0.515625q-0.078125 0.25 -0.234375 0.5q-0.15625 0.25 -0.40625 0.46875q-0.25 0.21875 -0.59375 0.375q0.421875 0.125 0.6875 0.34375q0.28125 0.21875 0.453125 0.5q0.171875 0.265625 0.234375 0.5625q0.0625 0.296875 0.0625 0.59375q0 0.59375 -0.203125 1.0625q-0.203125 0.453125 -0.5625 0.78125q-0.359375 0.3125 -0.859375 0.484375q-0.5 0.171875 -1.0625 0.171875q-0.5625 0 -1.0625 -0.15625q-0.5 -0.171875 -0.859375 -0.46875q-0.359375 -0.3125 -0.578125 -0.75q-0.21875 -0.4375 -0.21875 -1.0l1.09375 0q0 0.328125 0.109375 0.609375q0.109375 0.28125 0.3125 0.46875q0.21875 0.1875 0.515625 0.296875q0.3125 0.109375 0.6875 0.109375q0.359375 0 0.65625 -0.09375q0.296875 -0.109375 0.5 -0.296875q0.21875 -0.203125 0.328125 -0.5q0.125 -0.296875 0.125 -0.703125q0 -0.390625 -0.140625 -0.671875q-0.125 -0.296875 -0.359375 -0.484375q-0.234375 -0.203125 -0.578125 -0.296875q-0.328125 -0.09375 -0.734375 -0.09375l-0.78125 0l0 -0.875zm10.685547 1.5l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm7.6914062 3.28125l-5.59375 0l0 -0.78125l2.796875 -3.109375q0.375 -0.40625 0.625 -0.734375q0.265625 -0.328125 0.40625 -0.59375q0.15625 -0.265625 0.21875 -0.515625q0.0625 -0.25 0.0625 -0.5q0 -0.3125 -0.109375 -0.59375q-0.09375 -0.28125 -0.296875 -0.484375q-0.1875 -0.203125 -0.46875 -0.328125q-0.28125 -0.125 -0.625 -0.125q-0.421875 0 -0.75 0.125q-0.3125 0.125 -0.515625 0.359375q-0.203125 0.21875 -0.3125 0.546875q-0.09375 0.3125 -0.09375 0.71875l-1.09375 0q0 -0.546875 0.1875 -1.015625q0.1875 -0.484375 0.53125 -0.84375q0.359375 -0.359375 0.875 -0.5625q0.515625 -0.21875 1.171875 -0.21875q0.609375 0 1.078125 0.1875q0.484375 0.171875 0.8125 0.5q0.34375 0.3125 0.515625 0.75q0.1875 0.421875 0.1875 0.9375q0 0.375 -0.125 0.75q-0.125 0.375 -0.359375 0.734375q-0.21875 0.359375 -0.515625 0.71875q-0.28125 0.359375 -0.59375 0.703125l-2.296875 2.484375l4.28125 0l0 0.890625zm5.919922 -3.40625q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m177.71584 328.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m189.70216 327.94186l2.390625 0l0 1.078125l-2.390625 0l0 2.640625l-1.078125 0l0 -2.640625l-2.375 0l0 -1.078125l2.375 0l0 -2.484375l1.078125 0l0 2.484375zm12.339844 1.109375q0 -0.828125 0.125 -1.5625q0.140625 -0.75 0.359375 -1.375q0.21875 -0.625 0.5 -1.140625q0.296875 -0.53125 0.609375 -0.9375q0.328125 -0.40625 0.65625 -0.6875q0.328125 -0.296875 0.609375 -0.453125l0.234375 0.71875q-0.359375 0.265625 -0.71875 0.75q-0.359375 0.46875 -0.65625 1.15625q-0.28125 0.671875 -0.46875 1.546875q-0.171875 0.875 -0.171875 1.984375l0 0.078125q0 1.09375 0.171875 1.984375q0.1875 0.875 0.46875 1.546875q0.296875 0.6875 0.65625 1.171875q0.359375 0.484375 0.71875 0.78125l-0.234375 0.65625q-0.28125 -0.15625 -0.609375 -0.453125q-0.328125 -0.28125 -0.65625 -0.6875q-0.3125 -0.40625 -0.609375 -0.921875q-0.28125 -0.515625 -0.5 -1.140625q-0.21875 -0.640625 -0.359375 -1.375q-0.125 -0.734375 -0.125 -1.578125l0 -0.0625zm7.388672 -1.3125l0.78125 0q0.40625 0 0.71875 -0.109375q0.3125 -0.125 0.53125 -0.3125q0.21875 -0.1875 0.328125 -0.453125q0.109375 -0.28125 0.109375 -0.609375q0 -0.734375 -0.390625 -1.109375q-0.375 -0.390625 -1.109375 -0.390625q-0.34375 0 -0.625 0.109375q-0.28125 0.109375 -0.484375 0.296875q-0.203125 0.1875 -0.3125 0.46875q-0.109375 0.265625 -0.109375 0.59375l-1.09375 0q0 -0.484375 0.1875 -0.90625q0.1875 -0.4375 0.53125 -0.75q0.34375 -0.328125 0.828125 -0.515625q0.484375 -0.1875 1.078125 -0.1875q0.578125 0 1.046875 0.15625q0.484375 0.15625 0.8125 0.46875q0.34375 0.296875 0.53125 0.75q0.1875 0.453125 0.1875 1.046875q0 0.25 -0.078125 0.515625q-0.078125 0.25 -0.234375 0.5q-0.15625 0.25 -0.40625 0.46875q-0.25 0.21875 -0.59375 0.375q0.421875 0.125 0.6875 0.34375q0.28125 0.21875 0.453125 0.5q0.171875 0.265625 0.234375 0.5625q0.0625 0.296875 0.0625 0.59375q0 0.59375 -0.203125 1.0625q-0.203125 0.453125 -0.5625 0.78125q-0.359375 0.3125 -0.859375 0.484375q-0.5 0.171875 -1.0625 0.171875q-0.5625 0 -1.0625 -0.15625q-0.5 -0.171875 -0.859375 -0.46875q-0.359375 -0.3125 -0.578125 -0.75q-0.21875 -0.4375 -0.21875 -1.0l1.09375 0q0 0.328125 0.109375 0.609375q0.109375 0.28125 0.3125 0.46875q0.21875 0.1875 0.515625 0.296875q0.3125 0.109375 0.6875 0.109375q0.359375 0 0.65625 -0.09375q0.296875 -0.109375 0.5 -0.296875q0.21875 -0.203125 0.328125 -0.5q0.125 -0.296875 0.125 -0.703125q0 -0.390625 -0.140625 -0.671875q-0.125 -0.296875 -0.359375 -0.484375q-0.234375 -0.203125 -0.578125 -0.296875q-0.328125 -0.09375 -0.734375 -0.09375l-0.78125 0l0 -0.875zm10.685547 1.5l-4.484375 0l0 -0.890625l4.484375 0l0 0.890625zm6.8632812 0.421875l1.1875 0l0 0.875l-1.1875 0l0 1.984375l-1.09375 0l0 -1.984375l-3.890625 0l0 -0.640625l3.828125 -5.90625l1.15625 0l0 5.671875zm-3.78125 0l2.6875 0l0 -4.234375l-0.171875 0.328125l-2.515625 3.90625zm10.529297 -0.546875q0 0.84375 -0.125 1.578125q-0.125 0.734375 -0.359375 1.375q-0.21875 0.625 -0.515625 1.140625q-0.28125 0.515625 -0.609375 0.921875q-0.3125 0.40625 -0.640625 0.6875q-0.328125 0.296875 -0.609375 0.453125l-0.234375 -0.65625q0.359375 -0.265625 0.71875 -0.75q0.359375 -0.484375 0.640625 -1.171875q0.296875 -0.6875 0.46875 -1.578125q0.1875 -0.890625 0.1875 -1.984375l0 -0.078125q0 -1.109375 -0.1875 -2.0q-0.1875 -0.890625 -0.484375 -1.578125q-0.296875 -0.6875 -0.65625 -1.171875q-0.359375 -0.484375 -0.6875 -0.75l0.234375 -0.65625q0.28125 0.15625 0.609375 0.453125q0.328125 0.28125 0.640625 0.6875q0.328125 0.40625 0.609375 0.9375q0.296875 0.515625 0.515625 1.140625q0.234375 0.625 0.359375 1.375q0.125 0.734375 0.125 1.5625l0 0.0625z" fill-rule="nonzero"/><path fill="#000000" d="m240.13185 328.02l-3.734375 0l0 -0.515625l1.875 -2.078125q0.25 -0.28125 0.40625 -0.484375q0.171875 -0.21875 0.265625 -0.390625q0.109375 -0.1875 0.15625 -0.34375q0.046875 -0.171875 0.046875 -0.34375q0 -0.21875 -0.078125 -0.390625q-0.0625 -0.1875 -0.203125 -0.328125q-0.125 -0.140625 -0.3125 -0.21875q-0.1875 -0.078125 -0.421875 -0.078125q-0.28125 0 -0.5 0.078125q-0.203125 0.078125 -0.34375 0.234375q-0.125 0.15625 -0.203125 0.375q-0.0625 0.203125 -0.0625 0.46875l-0.734375 0q0 -0.359375 0.125 -0.671875q0.125 -0.328125 0.359375 -0.5625q0.25 -0.234375 0.578125 -0.375q0.34375 -0.140625 0.78125 -0.140625q0.40625 0 0.71875 0.125q0.328125 0.109375 0.546875 0.328125q0.234375 0.203125 0.34375 0.5q0.125 0.28125 0.125 0.625q0 0.25 -0.09375 0.5q-0.078125 0.25 -0.234375 0.5q-0.140625 0.234375 -0.328125 0.46875q-0.1875 0.234375 -0.40625 0.46875l-1.53125 1.65625l2.859375 0l0 0.59375z" fill-rule="nonzero"/><path fill="#000000" d="m261.4131 327.94186l-5.234375 0l0 -0.9375l5.234375 0l0 0.9375zm0 2.4375l-5.234375 0l0 -0.9375l5.234375 0l0 0.9375zm32.03711 -2.640625l0.78125 0q0.40625 0 0.71875 -0.109375q0.3125 -0.125 0.53125 -0.3125q0.21875 -0.1875 0.328125 -0.453125q0.109375 -0.28125 0.109375 -0.609375q0 -0.734375 -0.390625 -1.109375q-0.375 -0.390625 -1.109375 -0.390625q-0.34375 0 -0.625 0.109375q-0.28125 0.109375 -0.484375 0.296875q-0.203125 0.1875 -0.3125 0.46875q-0.109375 0.265625 -0.109375 0.59375l-1.09375 0q0 -0.484375 0.1875 -0.90625q0.1875 -0.4375 0.53125 -0.75q0.34375 -0.328125 0.828125 -0.515625q0.484375 -0.1875 1.078125 -0.1875q0.578125 0 1.046875 0.15625q0.484375 0.15625 0.8125 0.46875q0.34375 0.296875 0.53125 0.75q0.1875 0.453125 0.1875 1.046875q0 0.25 -0.078125 0.515625q-0.078125 0.25 -0.234375 0.5q-0.15625 0.25 -0.40625 0.46875q-0.25 0.21875 -0.59375 0.375q0.421875 0.125 0.6875 0.34375q0.28125 0.21875 0.453125 0.5q0.171875 0.265625 0.234375 0.5625q0.0625 0.296875 0.0625 0.59375q0 0.59375 -0.203125 1.0625q-0.203125 0.453125 -0.5625 0.78125q-0.359375 0.3125 -0.859375 0.484375q-0.5 0.171875 -1.0625 0.171875q-0.5625 0 -1.0625 -0.15625q-0.5 -0.171875 -0.859375 -0.46875q-0.359375 -0.3125 -0.578125 -0.75q-0.21875 -0.4375 -0.21875 -1.0l1.09375 0q0 0.328125 0.109375 0.609375q0.109375 0.28125 0.3125 0.46875q0.21875 0.1875 0.515625 0.296875q0.3125 0.109375 0.6875 0.109375q0.359375 0 0.65625 -0.09375q0.296875 -0.109375 0.5 -0.296875q0.21875 -0.203125 0.328125 -0.5q0.125 -0.296875 0.125 -0.703125q0 -0.390625 -0.140625 -0.671875q-0.125 -0.296875 -0.359375 -0.484375q-0.234375 -0.203125 -0.578125 -0.296875q-0.328125 -0.09375 -0.734375 -0.09375l-0.78125 0l0 -0.875z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m19.255331 6.7443876l116.56693 0l0 30.677166l-116.56693 0z" fill-rule="evenodd"/><path fill="#000000" d="m34.677208 23.296886l1.015625 0.140625q-0.484375 1.328125 -1.40625 2.0q-0.90625 0.671875 -2.046875 0.671875q-1.3906269 0 -2.203127 -0.84375q-0.8125 -0.84375 -0.8125 -2.421875q0 -2.0625 1.234375 -3.421875q1.109375 -1.203125 2.750002 -1.203125q1.203125 0 1.953125 0.65625q0.765625 0.65625 0.875 1.75l-0.953125 0.09375q-0.140625 -0.828125 -0.625 -1.234375q-0.46875 -0.421875 -1.203125 -0.421875q-1.4062519 0 -2.265627 1.25q-0.75 1.078125 -0.75 2.546875q0 1.171875 0.578125 1.796875q0.578125 0.609375 1.5000019 0.609375q0.796875 0 1.4375 -0.515625q0.640625 -0.515625 0.921875 -1.453125zm1.7893524 0.59375q0 -1.625 0.953125 -2.6875q0.796875 -0.875 2.0625 -0.875q1.0 0 1.609375 0.625q0.609375 0.625 0.609375 1.6875q0 0.953125 -0.390625 1.78125q-0.375 0.8125 -1.09375 1.25q-0.703125 0.4375 -1.484375 0.4375q-0.640625 0 -1.171875 -0.265625q-0.53125 -0.28125 -0.8125 -0.78125q-0.28125 -0.515625 -0.28125 -1.171875zm0.953125 -0.09375q0 0.78125 0.375 1.1875q0.375 0.390625 0.9375 0.390625q0.3125 0 0.609375 -0.109375q0.296875 -0.125 0.546875 -0.375q0.25 -0.25 0.421875 -0.5625q0.1875 -0.328125 0.296875 -0.703125q0.171875 -0.515625 0.171875 -0.984375q0 -0.75 -0.390625 -1.15625q-0.375 -0.421875 -0.9375 -0.421875q-0.453125 0 -0.8125 0.21875q-0.359375 0.203125 -0.65625 0.609375q-0.296875 0.40625 -0.4375 0.953125q-0.125 0.53125 -0.125 0.953125zm8.582748 1.1875q-1.0 1.125 -2.03125 1.125q-0.640625 0 -1.03125 -0.359375q-0.390625 -0.375 -0.390625 -0.90625q0 -0.34375 0.171875 -1.203125l0.671875 -3.1875l0.9375 0l-0.734375 3.53125q-0.09375 0.453125 -0.09375 0.6875q0 0.3125 0.1875 0.5q0.1875 0.171875 0.5625 0.171875q0.390625 0 0.765625 -0.1875q0.375 -0.203125 0.640625 -0.53125q0.28125 -0.328125 0.453125 -0.78125q0.109375 -0.28125 0.265625 -1.0l0.5 -2.390625l0.9375 0l-1.15625 5.53125l-0.859375 0l0.203125 -1.0zm2.1608734 1.0l1.15625 -5.53125l0.84375 0l-0.203125 0.96875q0.5625 -0.5625 1.046875 -0.828125q0.484375 -0.265625 0.984375 -0.265625q0.671875 0 1.046875 0.375q0.390625 0.359375 0.390625 0.96875q0 0.3125 -0.140625 0.96875l-0.703125 3.34375l-0.9375 0l0.734375 -3.5q0.109375 -0.515625 0.109375 -0.75q0 -0.28125 -0.1875 -0.453125q-0.1875 -0.171875 -0.546875 -0.171875q-0.734375 0 -1.296875 0.53125q-0.5625 0.515625 -0.828125 1.765625l-0.53125 2.578125l-0.9375 0zm8.129623 -0.765625l-0.15625 0.765625q-0.34375 0.09375 -0.65625 0.09375q-0.5625 0 -0.90625 -0.28125q-0.25 -0.203125 -0.25 -0.5625q0 -0.1875 0.140625 -0.84375l0.671875 -3.203125l-0.75 0l0.15625 -0.734375l0.75 0l0.28125 -1.359375l1.078125 -0.640625l-0.421875 2.0l0.921875 0l-0.15625 0.734375l-0.921875 0l-0.640625 3.046875q-0.109375 0.59375 -0.109375 0.703125q0 0.171875 0.09375 0.265625q0.09375 0.078125 0.3125 0.078125q0.3125 0 0.5625 -0.0625zm3.8275452 0.765625l1.59375 -7.625l1.25 0l0.765625 4.9375q0.15625 0.96875 0.203125 1.875q0.3125 -0.78125 1.0625 -2.09375l2.671875 -4.71875l1.28125 0l-1.59375 7.625l-1.0 0l0.796875 -3.703125q0.265625 -1.296875 0.78125 -2.890625q-0.328125 0.75 -0.8125 1.609375l-2.84375 4.984375l-0.984375 0l-0.765625 -4.890625q-0.09375 -0.671875 -0.140625 -1.5625q-0.125 1.0 -0.25 1.59375l-1.015625 4.859375l-1.0 0zm12.4861145 -0.6875q-0.484375 0.421875 -0.9375 0.625q-0.453125 0.1875 -0.96875 0.1875q-0.765625 0 -1.234375 -0.453125q-0.46875 -0.453125 -0.46875 -1.15625q0 -0.453125 0.203125 -0.8125q0.21875 -0.359375 0.5625 -0.5625q0.359375 -0.21875 0.859375 -0.3125q0.3125 -0.0625 1.203125 -0.09375q0.890625 -0.046875 1.265625 -0.203125q0.109375 -0.375 0.109375 -0.640625q0 -0.328125 -0.234375 -0.515625q-0.328125 -0.25 -0.953125 -0.25q-0.59375 0 -0.96875 0.265625q-0.375 0.25 -0.546875 0.734375l-0.953125 -0.078125q0.28125 -0.828125 0.90625 -1.265625q0.640625 -0.4375 1.609375 -0.4375q1.015625 0 1.625 0.5q0.453125 0.359375 0.453125 0.9375q0 0.453125 -0.125 1.03125l-0.3125 1.375q-0.140625 0.65625 -0.140625 1.0625q0 0.265625 0.109375 0.75l-0.953125 0q-0.078125 -0.265625 -0.109375 -0.6875zm0.34375 -2.109375q-0.1875 0.078125 -0.421875 0.125q-0.21875 0.03125 -0.75 0.078125q-0.828125 0.078125 -1.171875 0.1875q-0.328125 0.109375 -0.5 0.359375q-0.171875 0.234375 -0.171875 0.53125q0 0.40625 0.265625 0.65625q0.28125 0.25 0.78125 0.25q0.46875 0 0.890625 -0.234375q0.4375 -0.25 0.6875 -0.6875q0.25 -0.453125 0.390625 -1.265625zm4.0671234 2.03125l-0.15625 0.765625q-0.34375 0.09375 -0.65625 0.09375q-0.5625 0 -0.90625 -0.28125q-0.25 -0.203125 -0.25 -0.5625q0 -0.1875 0.140625 -0.84375l0.671875 -3.203125l-0.75 0l0.15625 -0.734375l0.75 0l0.28125 -1.359375l1.078125 -0.640625l-0.421875 2.0l0.921875 0l-0.15625 0.734375l-0.921875 0l-0.640625 3.046875q-0.109375 0.59375 -0.109375 0.703125q0 0.171875 0.09375 0.265625q0.09375 0.078125 0.3125 0.078125q0.3125 0 0.5625 -0.0625zm0.7575226 0.765625l1.15625 -5.53125l0.828125 0l-0.234375 1.140625q0.421875 -0.640625 0.828125 -0.953125q0.40625 -0.3125 0.84375 -0.3125q0.28125 0 0.6875 0.203125l-0.390625 0.875q-0.234375 -0.171875 -0.53125 -0.171875q-0.5 0 -1.015625 0.5625q-0.515625 0.546875 -0.8125 1.96875l-0.46875 2.21875l-0.890625 0zm4.8767395 -6.5625l0.234375 -1.0625l0.921875 0l-0.21875 1.0625l-0.9375 0zm-1.375 6.5625l1.15625 -5.53125l0.953125 0l-1.15625 5.53125l-0.953125 0zm2.0393524 0l2.40625 -2.796875l-1.375 -2.734375l1.03125 0l0.46875 0.984375q0.265625 0.5625 0.46875 1.0625l1.59375 -2.046875l1.15625 0l-2.328125 2.796875l1.390625 2.734375l-1.03125 0l-0.5625 -1.125q-0.171875 -0.359375 -0.390625 -0.890625l-1.640625 2.015625l-1.1875 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m413.89822 236.7675l116.566925 0l0 30.67717l-116.566925 0z" fill-rule="evenodd"/><path fill="#000000" d="m423.36697 256.0075l1.59375 -7.6250153l2.296875 0q0.828125 0 1.265625 0.109375q0.625 0.171875 1.0625 0.59375q0.453125 0.40625 0.671875 1.03125q0.234375 0.609375 0.234375 1.375q0 0.921875 -0.28125 1.6875q-0.28125 0.75 -0.734375 1.328125q-0.453125 0.578125 -0.953125 0.90625q-0.484375 0.3125 -1.15625 0.46875q-0.5 0.12501526 -1.25 0.12501526l-2.75 0zm1.203125 -0.85939026l1.203125 0q0.828125 0 1.453125 -0.15625q0.40625 -0.09375 0.6875 -0.28125q0.359375 -0.234375 0.671875 -0.609375q0.390625 -0.515625 0.625 -1.15625q0.234375 -0.65625 0.234375 -1.5q0 -0.921875 -0.328125 -1.421875q-0.3125 -0.5 -0.8125 -0.65625q-0.375 -0.125 -1.15625 -0.125l-1.34375 0l-1.234375 5.90625zm7.711212 -5.703125l0.234375 -1.0625l0.921875 0l-0.21875 1.0625l-0.9375 0zm-1.375 6.5625153l1.15625 -5.5312653l0.953125 0l-1.15625 5.5312653l-0.953125 0zm2.4924927 -1.8906403l0.953125 -0.0625q0 0.40625 0.125 0.703125q0.125 0.28125 0.453125 0.46875q0.34375 0.171875 0.78125 0.171875q0.625 0 0.9375 -0.25q0.3125 -0.25 0.3125 -0.578125q0 -0.25 -0.1875 -0.46875q-0.1875 -0.21875 -0.9375 -0.53125q-0.75 -0.328125 -0.953125 -0.453125q-0.34375 -0.21875 -0.53125 -0.5q-0.171875 -0.296875 -0.171875 -0.671875q0 -0.65625 0.515625 -1.125q0.53125 -0.46875 1.453125 -0.46875q1.046875 0 1.59375 0.484375q0.546875 0.484375 0.5625 1.265625l-0.921875 0.0625q-0.015625 -0.5 -0.359375 -0.78125q-0.328125 -0.296875 -0.9375 -0.296875q-0.484375 0 -0.765625 0.234375q-0.265625 0.21875 -0.265625 0.46875q0 0.265625 0.234375 0.46875q0.15625 0.125 0.8125 0.40625q1.078125 0.46875 1.359375 0.734375q0.453125 0.4375 0.453125 1.0625q0 0.40625 -0.265625 0.8125q-0.25 0.390625 -0.765625 0.625q-0.515625 0.23439026 -1.21875 0.23439026q-0.953125 0 -1.625 -0.46876526q-0.671875 -0.484375 -0.640625 -1.546875zm7.453125 1.125l-0.15625 0.76564026q-0.34375 0.09375 -0.65625 0.09375q-0.5625 0 -0.90625 -0.28126526q-0.25 -0.203125 -0.25 -0.5625q0 -0.1875 0.140625 -0.84375l0.671875 -3.203125l-0.75 0l0.15625 -0.734375l0.75 0l0.28125 -1.359375l1.078125 -0.640625l-0.421875 2.0l0.921875 0l-0.15625 0.734375l-0.921875 0l-0.640625 3.046875q-0.109375 0.59375 -0.109375 0.703125q0 0.171875 0.09375 0.265625q0.09375 0.078125 0.3125 0.078125q0.3125 0 0.5625 -0.0625zm4.4762573 0.078125q-0.484375 0.421875 -0.9375 0.625q-0.453125 0.18751526 -0.96875 0.18751526q-0.765625 0 -1.234375 -0.45314026q-0.46875 -0.453125 -0.46875 -1.15625q0 -0.453125 0.203125 -0.8125q0.21875 -0.359375 0.5625 -0.5625q0.359375 -0.21875 0.859375 -0.3125q0.3125 -0.0625 1.203125 -0.09375q0.890625 -0.046875 1.265625 -0.203125q0.109375 -0.375 0.109375 -0.640625q0 -0.328125 -0.234375 -0.515625q-0.328125 -0.25 -0.953125 -0.25q-0.59375 0 -0.96875 0.265625q-0.375 0.25 -0.546875 0.734375l-0.953125 -0.078125q0.28125 -0.828125 0.90625 -1.265625q0.640625 -0.4375 1.609375 -0.4375q1.015625 0 1.625 0.5q0.453125 0.359375 0.453125 0.9375q0 0.453125 -0.125 1.03125l-0.3125 1.375q-0.140625 0.65625 -0.140625 1.0625q0 0.265625 0.109375 0.75001526l-0.953125 0q-0.078125 -0.26564026 -0.109375 -0.68751526zm0.34375 -2.109375q-0.1875 0.078125 -0.421875 0.125q-0.21875 0.03125 -0.75 0.078125q-0.828125 0.078125 -1.171875 0.1875q-0.328125 0.109375 -0.5 0.359375q-0.171875 0.234375 -0.171875 0.53125q0 0.40625 0.265625 0.65625q0.28125 0.25 0.78125 0.25q0.46875 0 0.890625 -0.234375q0.4375 -0.25 0.6875 -0.6875q0.25 -0.453125 0.390625 -1.265625zm1.8640137 2.7968903l1.15625 -5.5312653l0.84375 0l-0.203125 0.96875q0.5625 -0.5625 1.046875 -0.828125q0.484375 -0.265625 0.984375 -0.265625q0.671875 0 1.046875 0.375q0.390625 0.359375 0.390625 0.96875q0 0.3125 -0.140625 0.96875l-0.703125 3.3437653l-0.9375 0l0.734375 -3.5000153q0.109375 -0.515625 0.109375 -0.75q0 -0.28125 -0.1875 -0.453125q-0.1875 -0.171875 -0.546875 -0.171875q-0.734375 0 -1.296875 0.53125q-0.5625 0.515625 -0.828125 1.765625l-0.53125 2.5781403l-0.9375 0zm9.738983 -2.0156403l0.9375 0.09375q-0.359375 1.046875 -1.015625 1.546875q-0.640625 0.50001526 -1.46875 0.50001526q-0.90625 0 -1.46875 -0.57814026q-0.5625 -0.59375 -0.5625 -1.640625q0 -0.890625 0.359375 -1.765625q0.359375 -0.875 1.03125 -1.328125q0.671875 -0.46875 1.53125 -0.46875q0.890625 0 1.40625 0.515625q0.515625 0.5 0.515625 1.328125l-0.921875 0.0625q0 -0.53125 -0.3125 -0.828125q-0.296875 -0.296875 -0.78125 -0.296875q-0.5625 0 -0.984375 0.359375q-0.40625 0.359375 -0.65625 1.09375q-0.234375 0.734375 -0.234375 1.40625q0 0.703125 0.3125 1.0625q0.3125 0.34375 0.78125 0.34375q0.453125 0 0.859375 -0.34375q0.421875 -0.34375 0.671875 -1.0625zm5.5625 0.140625l0.921875 0.09375q-0.203125 0.671875 -0.921875 1.296875q-0.703125 0.60939026 -1.6875 0.60939026q-0.609375 0 -1.125 -0.28126526q-0.5 -0.28125 -0.78125 -0.828125q-0.265625 -0.546875 -0.265625 -1.234375q0 -0.90625 0.421875 -1.75q0.421875 -0.859375 1.078125 -1.265625q0.671875 -0.421875 1.453125 -0.421875q0.984375 0 1.578125 0.625q0.59375 0.609375 0.59375 1.671875q0 0.40625 -0.078125 0.828125l-4.0625 0q-0.03125 0.15625 -0.03125 0.296875q0 0.765625 0.359375 1.1875q0.359375 0.40625 0.875 0.40625q0.484375 0 0.953125 -0.3125q0.46875 -0.328125 0.71875 -0.921875zm-2.734375 -1.375l3.109375 0q0 -0.140625 0 -0.203125q0 -0.703125 -0.359375 -1.078125q-0.34375 -0.390625 -0.90625 -0.390625q-0.609375 0 -1.109375 0.421875q-0.484375 0.421875 -0.734375 1.25zm7.684021 3.2500153l1.59375 -7.6250153l1.25 0l0.765625 4.9375q0.15625 0.96875 0.203125 1.875q0.3125 -0.78125 1.0625 -2.09375l2.671875 -4.71875l1.28125 0l-1.59375 7.6250153l-1.0 0l0.796875 -3.7031403q0.265625 -1.296875 0.78125 -2.890625q-0.328125 0.75 -0.8125 1.609375l-2.84375 4.9843903l-0.984375 0l-0.765625 -4.8906403q-0.09375 -0.671875 -0.140625 -1.5625q-0.125 1.0 -0.25 1.59375l-1.015625 4.8593903l-1.0 0zm12.4861145 -0.68751526q-0.484375 0.421875 -0.9375 0.625q-0.453125 0.18751526 -0.96875 0.18751526q-0.765625 0 -1.234375 -0.45314026q-0.46875 -0.453125 -0.46875 -1.15625q0 -0.453125 0.203125 -0.8125q0.21875 -0.359375 0.5625 -0.5625q0.359375 -0.21875 0.859375 -0.3125q0.3125 -0.0625 1.203125 -0.09375q0.890625 -0.046875 1.265625 -0.203125q0.109375 -0.375 0.109375 -0.640625q0 -0.328125 -0.234375 -0.515625q-0.328125 -0.25 -0.953125 -0.25q-0.59375 0 -0.96875 0.265625q-0.375 0.25 -0.546875 0.734375l-0.953125 -0.078125q0.28125 -0.828125 0.90625 -1.265625q0.640625 -0.4375 1.609375 -0.4375q1.015625 0 1.625 0.5q0.453125 0.359375 0.453125 0.9375q0 0.453125 -0.125 1.03125l-0.3125 1.375q-0.140625 0.65625 -0.140625 1.0625q0 0.265625 0.109375 0.75001526l-0.953125 0q-0.078125 -0.26564026 -0.109375 -0.68751526zm0.34375 -2.109375q-0.1875 0.078125 -0.421875 0.125q-0.21875 0.03125 -0.75 0.078125q-0.828125 0.078125 -1.171875 0.1875q-0.328125 0.109375 -0.5 0.359375q-0.171875 0.234375 -0.171875 0.53125q0 0.40625 0.265625 0.65625q0.28125 0.25 0.78125 0.25q0.46875 0 0.890625 -0.234375q0.4375 -0.25 0.6875 -0.6875q0.25 -0.453125 0.390625 -1.265625zm4.0671387 2.03125l-0.15625 0.76564026q-0.34375 0.09375 -0.65625 0.09375q-0.5625 0 -0.90625 -0.28126526q-0.25 -0.203125 -0.25 -0.5625q0 -0.1875 0.140625 -0.84375l0.671875 -3.203125l-0.75 0l0.15625 -0.734375l0.75 0l0.28125 -1.359375l1.078125 -0.640625l-0.421875 2.0l0.921875 0l-0.15625 0.734375l-0.921875 0l-0.640625 3.046875q-0.109375 0.59375 -0.109375 0.703125q0 0.171875 0.09375 0.265625q0.09375 0.078125 0.3125 0.078125q0.3125 0 0.5625 -0.0625zm0.7575073 0.76564026l1.15625 -5.5312653l0.828125 0l-0.234375 1.140625q0.421875 -0.640625 0.828125 -0.953125q0.40625 -0.3125 0.84375 -0.3125q0.28125 0 0.6875 0.203125l-0.390625 0.875q-0.234375 -0.171875 -0.53125 -0.171875q-0.5 0 -1.015625 0.5625q-0.515625 0.546875 -0.8125 1.96875l-0.46875 2.2187653l-0.890625 0zm4.8767395 -6.5625153l0.234375 -1.0625l0.921875 0l-0.21875 1.0625l-0.9375 0zm-1.375 6.5625153l1.15625 -5.5312653l0.953125 0l-1.15625 5.5312653l-0.953125 0zm2.0393677 0l2.40625 -2.7968903l-1.375 -2.734375l1.03125 0l0.46875 0.984375q0.265625 0.5625 0.46875 1.0625l1.59375 -2.046875l1.15625 0l-2.328125 2.796875l1.390625 2.7343903l-1.03125 0l-0.5625 -1.1250153q-0.171875 -0.359375 -0.390625 -0.890625l-1.640625 2.0156403l-1.1875 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m329.0735 302.07532l54.960632 0" fill-rule="evenodd"/><path stroke="#000000" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m329.0735 302.07532l42.960632 0" fill-rule="evenodd"/><path fill="#000000" stroke="#000000" stroke-width="2.0" stroke-linecap="butt" d="m372.03412 305.37878l9.076202 -3.3034668l-9.076202 -3.3034668z" fill-rule="evenodd"/></g></svg> \ No newline at end of file diff --git a/topics/statistics/tutorials/clustering_machinelearning/tutorial.md b/topics/statistics/tutorials/clustering_machinelearning/tutorial.md new file mode 100644 index 00000000000000..a36ecae980f5ed --- /dev/null +++ b/topics/statistics/tutorials/clustering_machinelearning/tutorial.md @@ -0,0 +1,484 @@ +--- +layout: tutorial_hands_on + +title: 'Clustering in Machine Learning' +zenodo_link: https://zenodo.org/record/3813447 +questions: +- How to use clustering algorithms to categorized data in different clusters +objectives: +- Learn clustering background +- Learn hierarchical clustering algorithm +- Learn k-means clustering algorithm +- Learn DBSCAN clustering algorithm +- Apply clustering algorithms to different data sets +- Learn how to visualize the results +key_points: +- Using clustering methods, category and cluster of the data are learned using hierarchical, k-means and DBSCAN +- For each clustering algorithm, number of clusters and the algorithm parameters should be optimised based on the dataset +time_estimation: 2H +contributors: +- khanteymoori +- anuprulez +--- + +# Introduction +{:.no_toc} + +The goal of unsupervised learning is to discover hidden structure or patterns in unlabeled training data. In this tutorial we will discuss an unsupervised learning task called clustering. +Clustering is the grouping of specific objects based on their characteristics and their similarities. These groups are called clusters. A cluster consists of data object with high inter similarity and low intra similarity. It means members of the same cluster, are more similar to each other by a given metric than they are to the members of the other clusters. The goal of clustering is to subdivide a set of items in such a way that similar items fall into the same cluster, whereas dissimilar items fall in different clusters. This brings up two questions: first, how do we decide what is similar; and second, how do we use this to cluster the items? +Clustering is central to many bioinformatics research. In particular, clustering helps at analyzing unstructured and high-dimensional data in the form of sequences, expressions, texts and images. For example clustering of gene expressions provides understanding gene functions, cellular processes, subtypes of cells and gene regulations. + +For example, in biology, clustering is often one of the first steps in gene expression analysis and is used to find groups of genes with similar expression patterns. + +We represent an observation as an n-dimensional vector. For example, assume that your training data consists of the samples plotted in the following Figure 1: + +> ![data](images/data_before_clustering.png "Sample data before clustering") + +Clustering reveal the following three groups, indicated by different colors: + +> ![data](images/data_after_clustering.png "Sample data after clustering") + + +Broadly speaking, clustering can be divided into two subgroups : + +- Hard Clustering: Each data point either belongs to a cluster completely or not. + +- Soft Clustering: Instead of putting each data point into a separate cluster, a probability or likelihood of that data point to be in those clusters is assigned. + +The goal of clustering is to determine the internal grouping in a set of unlabeled data. But how to decide what constitutes a good clustering? It can be shown that there is no absolute best criterion which would be independent of the final aim of the clustering. Consequently, the users should apply an appropriate criterion based on the problem. + + + +> ### Agenda +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + + +# Types of clustering algorithms + +Since clustering is a subjective task, there are many algorithms for data clustering. Every method follows a different set of rules for defining similarity. There are many clustering algorithms known. But few of the algorithms are used popularly and we can categorized them as follows: + + - Connectivity models: As the name suggests, these models are based on the notion that the data points closer in data space exhibit more similarity to each other than the data points lying farther away. These models can follow two approaches. In the first approach, they start with classifying all data points into separate clusters and then aggregating them as the distance decreases. In the second approach, all data points are classified as a single cluster and then partitioned as the distance increases. Also, the choice of distance function is subjective. These models are very easy to interpret but lacks scalability for handling big datasets. Examples of these models are hierarchical clustering algorithm and its variants. + + - Centroid models: These are iterative clustering algorithms in which the notion of similarity is derived by the closeness of a data point to the centroid of the clusters. K-means clustering algorithm is a popular algorithm that falls into this category. In these models, the number of clusters required at the end have to be mentioned beforehand, which makes it important to have prior knowledge of the dataset. These models run iteratively to find the local optima. + + - Density Models: These models search the data space for areas of varied density of data points in the data space. It isolates various different density regions and assign the data points within these regions in the same cluster. Popular example of density models is DBSCAN. + + - Distribution models: These clustering algorithms are based on the notion of how probable it is that all data points in the cluster belong to the same distribution, for example normal, Gaussian. These models often suffer from overfitting. A popular example of these models is expectation-maximization algorithm which uses multivariate normal distributions. + + +Now, in this tutorial, we will be taking you through three of the most popular clustering algorithms in detail, hierarchical clustering, k-means and DBSCAN and a comparison between these methods. + + In the following, We will discuss these clustering algorithm and their parameters and how to apply them to categorize iris data and some other data sets. + + +# Clustering Distance Measures + +Since clustering is the grouping of similar objects, some sort of measure that can determine whether two objects are similar or dissimilar is required. There are two main type of measures used to estimate this relation: distance measures and similarity measures. The notions of distance and similarity are related, since the smaller the distance between two objects, the more similar they are to each other. All measures refer to the feature values in some way, but they consider different properties of the feature vector. There is no optimal similarity measure, since the usage depends on the task. + +Many clustering algorithms use distance measures to determine the similarity or dissimilarity between any pair of objects. A valid distance measure should be symmetric and obtains its minimum value (usually zero) in case of identical vectors. +The clustering requires some methods for computing the distance or the (dis)similarity between each pair of observations. The result of this computation is known as a dissimilarity or distance matrix. + +The choice of distance measures is a critical step in clustering. It defines how the similarity of two elements (x, y) is calculated and it will influence the shape of the +clusters. The classical distance measures are Euclidean and Manhattan distances and for most common clustering tools, the default distance measure is Euclidean. If Euclidean distance is chosen, then observations with high values of features will be clustered together. The same holds true for observations with low values of features. In Figure 3, we are trying to group the cells using Euclidean distance and this distance matrix. + +![Distances](images/raceid_distance.svg "Euclidean distance between three points (R, P, V) across three features (G1, G2, G3)") + + + > ### {% icon question %} Questions + > + > 1. Why are there zeroes along the diagonal of the above example distance matrix? + > 1. Is there any symmetry in this matrix? + > + > > ### {% icon solution %} Solution + > > + > > 1. The distance between a point to itself is zero. + > > 1. The distance between point *a* to point *b* is the same as the distance between point *b* to point *a* using the Euclidean distance metric. + > > + > {: .solution } + > + {: .question } + +Other dissimilarity measures exist such as correlation-based distances, which are widely used for gene expression data analyses. Correlation-based distance considers two objects to be similar if their features are highly correlated, even though the observed values may be far apart in terms of Euclidean distance. The distance between two objects is 0 when they are perfectly correlated. Pearson’s correlation is quite sensitive to outliers. This does not matter +when clustering samples, because the correlation is over thousands of genes. During clustering genes, it is important to be aware of the possible impact of outliers. This +can be mitigated by using Spearman’s correlation instead of Pearson’s correlation. + +# Hierarchical Clustering + +Before seeing hierarchical clustering in action, let us first understand the theory behind the hierarchical clustering. Hierarchical clustering, as the name suggests is an algorithm that builds hierarchy of clusters. This algorithm starts with all the data points assigned to a cluster of their own. Then two nearest clusters are merged into the same cluster. In the end, this algorithm terminates when there is only a single cluster left. + +Following are the steps that are performed during hierarchical clustering: + +1. In the beginning, every data point in the dataset is treated as a cluster which means that we have N clusters at the beginning of the algorithm. + +2. The distance between all the points is calculated and two points closest to each other are joined together to a form a cluster. + +3. Next, the point which is closest to the cluster formed in step 2, will be joined to the cluster. + +4. Steps 2 and 3 are repeated until one big cluster is formed. + +5. Finally, the big cluster is divided into K small clusters with the help of dendrograms. + +Let’s now see how dendrograms help in hierarchical clustering. + +> ![data](images/Hierarchical_clustering_1.png "Hierarchical Clustering") + +At the bottom, we start with data points, each assigned to separate clusters. Two closest clusters are then merged till we have just one cluster at the top. The height in the dendrogram at which two clusters are merged represents the distance between two clusters in the data space. + +The decision of the number of clusters that can best depict different groups can be chosen by observing the dendrogram. The best choice of the number of clusters is the number of vertical lines in the dendrogram cut by a horizontal line that can transverse the maximum distance vertically without intersecting a cluster. + +In the above example, the best choice of number of clusters will be 4 as the red horizontal line in the dendrogram below covers maximum vertical distance AB. +> ![data](images/Hierarchical_clustering_2.png "Hierarchical Clustering") + + +This algorithm has been implemented above using bottom up approach. It is also possible to follow top-down approach starting with all data points assigned in the same cluster and recursively performing splits till each data point is assigned a separate cluster. +The decision of merging two clusters is taken on the basis of closeness of these clusters. + + +Now we will apply hierarchical clustering to Iris data set, and learn to measure its performance. At the first step, we should upload the Iris data set. + +> ### {% icon comment %} Background +> The Iris flower data set or Fisher’s Iris data set is a multivariate dataset introduced by the British statistician and biologist Ronald Fisher in his 1936 paper ({% cite Fisher1936 %}). +> Each row of the table represents an iris flower, including its species and dimensions of its botanical parts, sepal and petal, in centimeters. +> For more history of this dataset read here [Wikipedia](https://en.wikipedia.org/wiki/Iris_flower_data_set). +{: .comment} + + +> ### {% icon hands_on %} Hands-on: Data upload +> +> 1. **Import** {% icon galaxy-upload %} the file `iris.csv` from [Zenodo](https://zenodo.org/record/3813447/files/iris.csv) or from the data library +> +> ``` +> https://zenodo.org/record/3813447/files/iris.csv +> ``` +> +> {% include snippets/import_via_link.md %} +> {% include snippets/import_from_data_library.md %} +> +> +> 2. **Rename** {% icon galaxy-pencil %} the dataset to `iris` +> +> {% include snippets/rename_dataset.md %} +> +> 3. Check the **datatype** +> - Click on the history item to expand it to get more information. +> - The datatype of the iris dataset should be `csv`. +> - **Change** {% icon galaxy-pencil %} the datatype *if* it is different than `csv`. +> - Option 1: Datatypes can be **autodetected** +> - Option 2: Datatypes can be **manually set** +> +> {% include snippets/detect_datatype.md datatype="datatypes" %} +> {% include snippets/change_datatype.md datatype="csv" %} +> +{: .hands_on} + +Our objective is to categorize the similar flowers in different groups (Figure 6). We know that we have **3** species of iris flowers (setosa, versicolor, virginica) with +**50** samples for each. These species look very much alike as shown on the figure below. + +![3 species of Iris flowers](images/iris_flowers.png "3 species of Iris flowers") + +In our dataset, we have the following features measured for each sample: Petal length, Petal width, Sepal length, Sepal width + +Figure 7 shows the dendrogram of these data. + +> ![data](images/Hierarchical_iris.png "Iris Data Hierarchical Clustering") + + +For the clustering purpose, the tools we will use require tab-separated files, so in the first step we will convert the file from comma-separated to tab-separated format. Galaxy has built-in format converters we can use for this. + + +> ### {% icon hands_on %} Hands-on: Converting dataset format +> +> 1. **Convert** {% icon galaxy-pencil %} the CSV file (comma-separated values) to tabular format (tsv; tab-separated values) +> +> {% include snippets/convert_datatype.md conversion="Convert CSV to Tabular" %} +> +> 2. **Rename** {% icon galaxy-pencil %} the resulting dataset to `iris tabular` +> +> > +{: .hands_on} + +At the first step we use + +> ### {% icon hands_on %} Hands-on: Hierarchical clustering +> +> 1. **Numeric Clustering** {% icon tool %} with the following clustering parameters: +> - *"Select the format of input data"*: `Tabular Format (tabular,txt)` +> - {% icon param-file %} *"Data file with numeric values"*: `iris tabular` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `All columns EXCLUDING some by column header name(s)` +> - {% icon param-text %} *"Type header name(s)"*: `Species` +> - {% icon param-select %} *"Clustering Algorithm"*: `Hierarchical Agglomerative Clustering` +> - In *"Advanced option"* +> - {% icon param-text %} *"Number of clusters"*: `2` +> - {% icon param-select %} *"Affinity"*: `Euclidean` +> - {% icon param-select %} *"Linkage"*: `ward` +> 2. Rename the generated file to `Hierarchical clustering` +{: .hands_on} + +If you view the result table, you can see the last column is the label for each cluster and as you see, all the setosa samples are grouped in one cluster and two other species (versicolor and virginica) are grouped in the second cluster. From Figure 3 it is obvious that versicolor and virginica are more similar to each other. + +## Visulaze the clustering results + +The resulting candidate clustering can be visualized using the Scatterplot w ggplot2 tool. Each sample is color-coded based on its clustering for that sample. +Let's visualize the clustering results to see how groups have been built. + +> ### {% icon hands_on %} Hands-on: Visualize hierarchical clustering result +> +> 1. **Scatterplot w ggplot2** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input tabular dataset"*: **Hierarchical clustering** +> - *"Column to plot on x-axis"*: `1` +> - *"Column to plot on y-axis"*: `2` +> - *"Plot title"*: `Hierarchical Clustering in Iris data` +> - *"Label for x axis"*: `Sepal length` +> - *"Label for y axis"*: `Sepal width` +> - In *"Advanced Options"*: +> - *"Data point options"*: `User defined point options` +> - *"relative size of points"*: `2.0` +> - *"Plotting multiple groups"*: `Plot multiple groups of data on one plot` +> - *"column differentiating the different groups"*: `6` +> - *"Color schemes to differentiate your groups"*: `Set 2 - predefined color pallete` +> +> 2. **View** {% icon galaxy-eye%} the resulting plot: +> +> 3. Rename to `Hierarchical scatter plot` + + +> ![data](images/hierarchical_scatter.png "Hierarchical Clustering Scatter Plot") + + +# K-means Algorithm + +K-means clustering is the most commonly used unsupervised machine learning algorithm for partitioning a given data set into a set of k clusters, where k represents the number of groups pre-specified by the user. +In k-means clustering, each cluster is represented by its center or centroid which corresponds to the mean of points assigned to the cluster.The basic idea behind k-means clustering consists of defining clusters so that the total intra-cluster variation is minimized. +The K-Means is popular because of its speed and scalability. There are several k-means algorithms available. The standard algorithm defines the total within-cluster variation as the sum of squared Euclidean distances between items and the corresponding centroid. K is a the hyperparameter of the algorithm and k-means algorithm can be summarized as follow: + +1. Specify the number of clusters (K) to be created (by the analyst) + +2. Select randomly k objects from the data set as the initial cluster centers or means + +3. Assign each observation to their closest centroid, based on the Euclidean distance between the object and the centroid + +4. For each of the k clusters update cluster centroid by calculating the new mean values of all the data points in the cluster. + +5. Iteratively minimize the total within sum of square. That is, iterate steps 3 and 4 until the cluster assignments stop changing or the maximum number of +iterations is reached. + +The parameters that minimize the cost function are learned through an iterative process of assigning observations to clusters and then moving the clusters. The basic restriction for k-means algorithm is that your data should be continuous in nature. It won’t work if data is categorical in nature. + +> ### {% icon hands_on %} Hands-on: K-means clustering +> +> 1. **Numeric Clustering** {% icon tool %} with the following clustering parameters: +> - *"Select the format of input data"*: `Tabular Format (tabular,txt)` +> - {% icon param-file %} *"Data file with numeric values"*: `iris tabular` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `All columns EXCLUDING some by column header name(s)` +> - {% icon param-text %} *"Type header name(s)"*: `Species` +> - {% icon param-select %} *"Clustering Algorithm"*: `KMeans` +> - In *"Advanced option"* +> - {% icon param-text %} *"Number of clusters"*: `2` +> 2. Rename the generated file to `k-means clustering` +{: .hands_on} + + +> ### {% icon hands_on %} Hands-on: Visualize k-means clustering result +> +> 1. **Scatterplot w ggplot2** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input tabular dataset"*: **k-means clustering** +> - *"Column to plot on x-axis"*: `1` +> - *"Column to plot on y-axis"*: `2` +> - *"Plot title"*: `K-means Clustering in Iris data` +> - *"Label for x axis"*: `Sepal length` +> - *"Label for y axis"*: `Sepal width` +> - In *"Advanced Options"*: +> - *"Data point options"*: `User defined point options` +> - *"relative size of points"*: `2.0` +> - *"Plotting multiple groups"*: `Plot multiple groups of data on one plot` +> - *"column differentiating the different groups"*: `6` +> - *"Color schemes to differentiate your groups"*: `Set 2 - predefined color pallete` +> +> 2. **View** {% icon galaxy-eye%} the resulting plot: +> +> 3. Rename to `k-means scatter plot` + + +> ![data](images/k_means_scatter.png "K-means Clustering Scatter Plot") + + +> ### {% icon question %} Question +> +> How to choose the right number of expected clusters (k)? +> +> +> > ### {% icon solution %} Solution +> > +> > Major difficulty found with k-mean is the choice of the number of clusters. Different methods is proposed to solve this problem. +> > Here, we provide a simple solution. The idea is to compute k-means clustering using different values of clusters k. Next, the within sum of square is drawn according to the number of clusters. The location of a bend (knee) in the plot is generally considered as an indicator of the appropriate number of clusters. +> > ![data](images/number_of_clusters.png "Optimal number of clusters") +> > The plot above represents the variance within the clusters. It decreases as k increases, but it can be seen a bend (or “elbow”) at k = 4. This bend indicates that +> > additional clusters beyond the fourth have little value. +> {: .solution} +{: .question} + + + +> ### {% icon question %} Question +> +> What are the differences between k-means and Hierarchical clustering +> +> > ### {% icon solution %} Solution +> > +> > Hierarchical clustering can’t handle big data well but k-means clustering can. This is because the time complexity of K Means is linear i.e. O(n) while that of hierarchical clustering is quadratic i.e. O(n2). +> > +> > In k-means clustering, since we start with random choice of clusters, the results produced by running the algorithm multiple times might differ. While results are reproducible in Hierarchical clustering. +> > +> > K-means is found to work well when the shape of the clusters is hyper spherical (like circle in 2D, sphere in 3D). +> > +> > K-means clustering requires prior knowledge of K i.e. no. of clusters you want to divide your data into. But, you can stop at whatever number of clusters you find appropriate in hierarchical clustering by interpreting the dendrogram +> > +> {: .solution} +{: .question} + + +# Clustering with the DBSCAN algorithm + +DBSCAN (Density-Based Spatial Clustering of Applications with Noise) is a popular clustering algorithm and views clusters as areas of high density separated by areas of low density. Due to this rather generic view, clusters found by DBSCAN can be any shape, as opposed to k-means which assumes that clusters are convex shaped. The central component to the DBSCAN is the concept of core samples, which are samples that are in areas of high density. A cluster is therefore a set of core samples, each close to each other (measured by some distance measure) and a set of non-core samples that are close to a core sample (but are not themselves core samples). There are two parameters to the algorithm, maximum neighborhood distance and minimal core point density, which define formally what we mean when we say dense. There are two important parameters in DBSCAN algorithm, min_samples, is the number of samples in a neighborhood for a point to be considered as a core point and eps is the maximum distance between two samples for one to be considered as in the neighborhood of the other. Higher min_samples or lower eps indicate higher density necessary to form a cluster. +DBSCAN does not require one to specify the number of clusters in the data a priori, as opposed to k-means. + + +> ### {% icon hands_on %} Hands-on: DBSCAN clustering +> +> 1. **Numeric Clustering** {% icon tool %} with the following clustering parameters: +> - *"Select the format of input data"*: `Tabular Format (tabular,txt)` +> - {% icon param-file %} *"Data file with numeric values"*: `iris tabular` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `All columns EXCLUDING some by column header name(s)` +> - {% icon param-text %} *"Type header name(s)"*: `Species` +> - {% icon param-select %} *"Clustering Algorithm"*: `DBSCAN` +> 2. Rename the generated file to `DBSCAN clustering` +{: .hands_on} + + +> ### {% icon hands_on %} Hands-on: Visualize DBSCAN clustering result +> +> 1. **Scatterplot w ggplot2** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input tabular dataset"*: **DBSCAN clustering** +> - *"Column to plot on x-axis"*: `1` +> - *"Column to plot on y-axis"*: `2` +> - *"Plot title"*: `DBSCAN Clustering in Iris data` +> - *"Label for x axis"*: `Sepal length` +> - *"Label for y axis"*: `Sepal width` +> - In *"Advanced Options"*: +> - *"Data point options"*: `User defined point options` +> - *"relative size of points"*: `2.0` +> - *"Plotting multiple groups"*: `Plot multiple groups of data on one plot` +> - *"column differentiating the different groups"*: `6` +> - *"Color schemes to differentiate your groups"*: `Set 2 - predefined color pallete` +> +> 2. **View** {% icon galaxy-eye%} the resulting plot: +> +> 3. Rename to `DBSCAN scatter plot` + + +> ![data](images/dbscan_scatter.png "DBSCAN Clustering Scatter Plot") + + +You will also notice that the blue point in the plot is not contained within any cluster. DBSCAN does not necessarily categorize every data point, and is therefore terrific with handling outliers in the dataset. + +> ### {% icon question %} Question +> +> How we can evaluate the clustering results? +> +> +> > ### {% icon solution %} Solution +> > +> > Clustering is an unsupervised learning algorithm; there are no labels or ground truth to compare with the clusters. However, we can still evaluate the performance of +the algorithm using intrinsic measures. +> > There is a performance measure for clustering evaluation which is called the silhouette coefficient. The silhouette coefficient is a measure of the compactness and separation of the clusters. +> > It increases as the quality of the clusters increase; it is large for compact clusters that are far from each other and small for large, overlapping clusters. The silhouette coefficient is calculated per instance; for a set of instances, it is calculated as the mean of the individual samples scores. +> {: .solution} +{: .question} + +# Applying the clustering algorithms on the other datasets + +You can do the same steps on the other data sets, moon and circles. First, import the data files, [moon.csv](https://zenodo.org/record/3813447/files/moon.csv) and [circles.csv](https://zenodo.org/record/3813447/files/circles.csv) from Zenodo or data library and rename them to `moon` and `circles` respectively. + +> ### {% icon hands_on %} Hands-on: Visualize scatter plot of data +> +> 1. **Scatterplot w ggplot2** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input tabular dataset"*: input datasets selected with **Multiple datasets** +> +> {% include snippets/select_multiple_datasets.md %} +> - *"Column to plot on x-axis"*: `1` +> - *"Column to plot on y-axis"*: `2` +> - *"Plot title"*: `Scatter Plot` +> - *"Label for x axis"*: `X` +> - *"Label for y axis"*: `Y` +> 2. **View** {% icon galaxy-eye%} the resulting plots + + +> ![data](images/circles_moon_scatter.png "Scatter Plot of Circles and Moon Data") + +Now you can cluster these data using the introduced algorithms. + +> ### {% icon hands_on %} Hands-on: Hierarchical clustering of circles data +> +> 1. **Numeric Clustering** {% icon tool %} with the following clustering parameters: +> - *"Select the format of input data"*: `Tabular Format (tabular,txt)` +> - {% icon param-file %} *"Data file with numeric values"*: `cirlces tabular` +> - {% icon param-check %} *"Does the dataset contain header"*: `Yes` +> - {% icon param-select %} *"Choose how to select data by column"*: `All` +> - {% icon param-select %} *"Clustering Algorithm"*: `Hierarchical Agglomerative Clustering` +> - In *"Advanced option"* +> - {% icon param-text %} *"Number of clusters"*: `2` +> - {% icon param-select %} *"Affinity"*: `Euclidean` +> - {% icon param-select %} *"Linkage"*: `ward` +> 2. Rename the generated file to `circles hierarchical clustering` +{: .hands_on} + + +Then , you can visualize the clustering result using the following steps: + +> ### {% icon hands_on %} Hands-on: Visualize hierarchical clustering result on circles data +> +> 1. **Scatterplot w ggplot2** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input tabular dataset"*: **circles hierarchical clustering** +> - *"Column to plot on x-axis"*: `1` +> - *"Column to plot on y-axis"*: `2` +> - *"Plot title"*: `Hierarchical Clustering in Circles data` +> - *"Label for x axis"*: `Sepal length` +> - *"Label for y axis"*: `Sepal width` +> - In *"Advanced Options"*: +> - *"Data point options"*: `User defined point options` +> - *"relative size of points"*: `2.0` +> - *"Plotting multiple groups"*: `Plot multiple groups of data on one plot` +> - *"column differentiating the different groups"*: `3` +> - *"Color schemes to differentiate your groups"*: `Set 2 - predefined color pallete` +> +> 2. **View** {% icon galaxy-eye%} the resulting plot: + + +In the next steps, you can apply these three algorithms (hierarchical, k-means and DBSCAN) in similar steps to moon and circles datasets. In k-means algorithm, k=2 and for the DBSCAN algorithm, the parameters are not the default parameters and you should set them as follows: for the circles data set (Maximum neighborhood distance=0.2 and Minimal core point density=5) and for the moon datasets (Maximum neighborhood distance=0.3 and Minimal core point density=4). You can see the scatter plots of the clustering results in Figure 13 and Figure 14. + +> ![data](images/circles_clustering.png "Plot of Clustering Algorithms on Circles Data") + +> ![data](images/moon_clustering.png "Plot of Clustering Algorithms on Moon Data") + + +# Conclusion + +In this tutorial, we discussed the clustering algorithms which is used to discover structure in unlabeled data. You learned about the hierarchical, k-means and DBSCAN algorithms. By following these steps, we learned how to perform clustering and visualize results using clustering and plotting tools respectively in Galaxy. There are many other clustering approaches which can be tried out on these datasets to find how they perform. Different datasets can also be analysed using these algorithms. The clustering algorithms have some parameters which can be altered while performing the analyses to see if they affect the clustering or not. In using clustering algorithms, we need to take care of some important aspects like treating outliers in our data and making sure each cluster has sufficient population. Some data pre-processors can also be used to clean the datasets. + + + + + + + + + diff --git a/topics/statistics/tutorials/clustering_machinelearning/workflows/clustering.ga b/topics/statistics/tutorials/clustering_machinelearning/workflows/clustering.ga new file mode 100644 index 00000000000000..a05745d123c474 --- /dev/null +++ b/topics/statistics/tutorials/clustering_machinelearning/workflows/clustering.ga @@ -0,0 +1,885 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "Clustering in Machine Learning", + "tags":[ + "statistics", + "clustering", + "ml" + ], + "format-version": "0.1", + "name": "Clustering in Machine Learning", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "iris" + } + ], + "label": "iris", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 200 + }, + "tool_id": null, + "tool_state": "{\"name\": \"iris\"}", + "tool_version": null, + "type": "data_input", + "uuid": "8ea6762f-5566-4e0d-85f2-f6ff2db47c1b", + "workflow_outputs": [] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "circles" + } + ], + "label": "circles", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 320 + }, + "tool_id": null, + "tool_state": "{\"name\": \"circles\"}", + "tool_version": null, + "type": "data_input", + "uuid": "3eb71a88-7eab-4f3c-9956-9a1cf50c4dff", + "workflow_outputs": [] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 10, + "input_connections": { + "input_types|infile": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 420, + "top": 1040 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 1, \\\"options\\\": {\\\"algorithm\\\": \\\"auto\\\", \\\"eps\\\": \\\"0.3\\\", \\\"leaf_size\\\": \\\"30\\\", \\\"metric\\\": \\\"euclidean\\\", \\\"min_samples\\\": \\\"4\\\"}, \\\"selected_algorithm\\\": \\\"DBSCAN\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 4, \\\"selected_column_selector_option\\\": \\\"all_columns\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "fbaf39ad-cf3a-40a0-ad65-5eda71381360", + "workflow_outputs": [] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 11, + "input_connections": { + "input_types|infile": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 420, + "top": 1160 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 0, \\\"options\\\": {\\\"algorithm\\\": \\\"auto\\\", \\\"copy_x\\\": \\\"true\\\", \\\"init\\\": \\\"k-means++\\\", \\\"max_iter\\\": \\\"300\\\", \\\"n_clusters\\\": \\\"2\\\", \\\"n_init\\\": \\\"10\\\", \\\"random_state\\\": \\\"\\\", \\\"tol\\\": \\\"0.0001\\\"}, \\\"selected_algorithm\\\": \\\"KMeans\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 4, \\\"selected_column_selector_option\\\": \\\"all_columns\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "20d7b0cf-c234-441d-9b16-1f640e57acab", + "workflow_outputs": [] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 12, + "input_connections": { + "input_types|infile": { + "id": 3, + "output_name": "tabular" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 640, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 7, \\\"options\\\": {\\\"affinity\\\": \\\"euclidean\\\", \\\"linkage\\\": \\\"ward\\\", \\\"n_clusters\\\": \\\"2\\\"}, \\\"selected_algorithm\\\": \\\"AgglomerativeClustering\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 3, \\\"col\\\": \\\"Species\\\", \\\"selected_column_selector_option\\\": \\\"all_but_by_header_name\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "b25334f4-01d0-433a-8a20-7f6f96a407af", + "workflow_outputs": [] + }, + "13": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 13, + "input_connections": { + "input_types|infile": { + "id": 3, + "output_name": "tabular" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 640, + "top": 320 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 0, \\\"options\\\": {\\\"algorithm\\\": \\\"auto\\\", \\\"copy_x\\\": \\\"true\\\", \\\"init\\\": \\\"k-means++\\\", \\\"max_iter\\\": \\\"300\\\", \\\"n_clusters\\\": \\\"2\\\", \\\"n_init\\\": \\\"10\\\", \\\"random_state\\\": \\\"\\\", \\\"tol\\\": \\\"0.0001\\\"}, \\\"selected_algorithm\\\": \\\"KMeans\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 3, \\\"col\\\": \\\"Species\\\", \\\"selected_column_selector_option\\\": \\\"all_but_by_header_name\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "0a23c938-2d2b-4edf-93d2-5ca0fee61ea4", + "workflow_outputs": [] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 14, + "input_connections": { + "input_types|infile": { + "id": 3, + "output_name": "tabular" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 640, + "top": 440 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 1, \\\"options\\\": {\\\"algorithm\\\": \\\"auto\\\", \\\"eps\\\": \\\"0.5\\\", \\\"leaf_size\\\": \\\"30\\\", \\\"metric\\\": \\\"euclidean\\\", \\\"min_samples\\\": \\\"5\\\"}, \\\"selected_algorithm\\\": \\\"DBSCAN\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 3, \\\"col\\\": \\\"Species\\\", \\\"selected_column_selector_option\\\": \\\"all_but_by_header_name\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "9b17d7ba-7d03-44aa-a6b1-8105f55a4b0f", + "workflow_outputs": [] + }, + "15": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 15, + "input_connections": { + "input1": { + "id": 5, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 640, + "top": 680 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"3\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"X\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"Hierarchical Clustering on Circles Data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Y\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "86da9f0e-b190-4def-b4a5-6e62fb2b6fd3", + "workflow_outputs": [] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 16, + "input_connections": { + "input1": { + "id": 6, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 640, + "top": 800 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"3\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"X\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"K-means Clustering on Circles Data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Y\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "0df119aa-bdfb-4fd3-9062-98faae31ed04", + "workflow_outputs": [] + }, + "17": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 17, + "input_connections": { + "input1": { + "id": 7, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 640, + "top": 1040 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"3\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"X\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"DBSCAN Clustering on Circles Data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Y\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "16c3f360-fccf-4638-884a-307f91c7c7bb", + "workflow_outputs": [] + }, + "18": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 18, + "input_connections": { + "input1": { + "id": 9, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 640, + "top": 560 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"3\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"X\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"Hierarchical Clustering on Moon Data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Y\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "70b1ca6c-19ba-41c8-8707-fe25a0f83f5f", + "workflow_outputs": [] + }, + "19": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 19, + "input_connections": { + "input1": { + "id": 10, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 640, + "top": 1160 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"3\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"X\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"DBSCAN Clustering on Moon Data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Y\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "06c68d29-3008-4c83-b8db-5076dc67da11", + "workflow_outputs": [] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "moon" + } + ], + "label": "moon", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 440 + }, + "tool_id": null, + "tool_state": "{\"name\": \"moon\"}", + "tool_version": null, + "type": "data_input", + "uuid": "84e54369-42be-439e-993c-c211e27c1b80", + "workflow_outputs": [] + }, + "20": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 20, + "input_connections": { + "input1": { + "id": 11, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 640, + "top": 920 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"3\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"X\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"K-means Clustering on Moon Data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Y\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "d62fb208-c3ba-472e-af50-d757cde6a837", + "workflow_outputs": [] + }, + "21": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 21, + "input_connections": { + "input1": { + "id": 12, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 860, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"6\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"Sepal length\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"Hierarchical Clustering in Iris data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Sepal width\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "fa31d028-44bc-4ebf-9123-1fdb5bddb477", + "workflow_outputs": [] + }, + "22": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 22, + "input_connections": { + "input1": { + "id": 13, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 860, + "top": 320 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"6\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"Sepal length\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"K-means Clustering in Iris data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Sepal width\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "497d818f-d5a8-43fd-b8ee-163497561918", + "workflow_outputs": [] + }, + "23": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 23, + "input_connections": { + "input1": { + "id": 14, + "output_name": "outfile" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 860, + "top": 440 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 1, \\\"colororder\\\": \\\"1\\\", \\\"colors\\\": \\\"Set2\\\", \\\"factorcol\\\": \\\"6\\\", \\\"factoring\\\": \\\"Single\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 1, \\\"alpha\\\": \\\"1.0\\\", \\\"pointcolor\\\": \\\"black\\\", \\\"pointoptions\\\": \\\"defined\\\", \\\"size\\\": \\\"2.0\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"Sepal length\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"DBSCAN Clustering in Iris data\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Sepal width\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "27049b9b-3f88-4bc0-95e1-42e6866bd593", + "workflow_outputs": [] + }, + "3": { + "annotation": "", + "content_id": "csv_to_tabular", + "errors": null, + "id": 3, + "input_connections": { + "csv": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Convert CSV to tabular", + "outputs": [ + { + "name": "tabular", + "type": "tabular" + } + ], + "position": { + "left": 420, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "csv_to_tabular", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"csv\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\"}", + "tool_version": "1.0.0", + "type": "tool", + "uuid": "9ade0904-a651-424a-b058-2bebf4cf7a6d", + "workflow_outputs": [] + }, + "4": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 4, + "input_connections": { + "input1": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 420, + "top": 320 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 0, \\\"factoring\\\": \\\"Default\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 0, \\\"pointoptions\\\": \\\"default\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"X\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"Scatter Plot\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Y\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "1e1131ee-189a-4913-9844-cecf1e5b8cae", + "workflow_outputs": [] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 5, + "input_connections": { + "input_types|infile": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 420, + "top": 560 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 7, \\\"options\\\": {\\\"affinity\\\": \\\"euclidean\\\", \\\"linkage\\\": \\\"ward\\\", \\\"n_clusters\\\": \\\"2\\\"}, \\\"selected_algorithm\\\": \\\"AgglomerativeClustering\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 4, \\\"selected_column_selector_option\\\": \\\"all_columns\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "24e6e79d-e4e5-4ba7-8e9b-cb7177b096ba", + "workflow_outputs": [] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 6, + "input_connections": { + "input_types|infile": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 420, + "top": 800 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 0, \\\"options\\\": {\\\"algorithm\\\": \\\"auto\\\", \\\"copy_x\\\": \\\"true\\\", \\\"init\\\": \\\"k-means++\\\", \\\"max_iter\\\": \\\"300\\\", \\\"n_clusters\\\": \\\"2\\\", \\\"n_init\\\": \\\"10\\\", \\\"random_state\\\": \\\"\\\", \\\"tol\\\": \\\"0.0001\\\"}, \\\"selected_algorithm\\\": \\\"KMeans\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 4, \\\"selected_column_selector_option\\\": \\\"all_columns\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "c186cbdf-7e09-4e0e-9df1-25c84117af04", + "workflow_outputs": [] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 7, + "input_connections": { + "input_types|infile": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 420, + "top": 920 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 1, \\\"options\\\": {\\\"algorithm\\\": \\\"auto\\\", \\\"eps\\\": \\\"0.2\\\", \\\"leaf_size\\\": \\\"30\\\", \\\"metric\\\": \\\"euclidean\\\", \\\"min_samples\\\": \\\"5\\\"}, \\\"selected_algorithm\\\": \\\"DBSCAN\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 4, \\\"selected_column_selector_option\\\": \\\"all_columns\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "4623fe42-e4ac-4af0-88fc-e811e3fc1799", + "workflow_outputs": [] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "errors": null, + "id": 8, + "input_connections": { + "input1": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Scatterplot with ggplot2", + "outputs": [ + { + "name": "output1", + "type": "png" + } + ], + "position": { + "left": 420, + "top": 440 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/ggplot2_point/ggplot2_point/2.2.1+galaxy2", + "tool_shed_repository": { + "changeset_revision": "87908c76ca8d", + "name": "ggplot2_point", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": \"{\\\"axis_text_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"axis_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"factor\\\": {\\\"__current_case__\\\": 0, \\\"factoring\\\": \\\"Default\\\"}, \\\"gridlinecust\\\": \\\"default\\\", \\\"legend\\\": \\\"yes\\\", \\\"plot_title_customization\\\": {\\\"__current_case__\\\": 0, \\\"axis_customization\\\": \\\"default\\\"}, \\\"points\\\": {\\\"__current_case__\\\": 0, \\\"pointoptions\\\": \\\"default\\\"}, \\\"scaling\\\": {\\\"__current_case__\\\": 0, \\\"plot_scaling\\\": \\\"Automatic\\\"}, \\\"theme\\\": \\\"bw\\\", \\\"transform\\\": \\\"none\\\", \\\"type\\\": \\\"points\\\"}\", \"xlab\": \"\\\"X\\\"\", \"input1\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"title\": \"\\\"Scatter Plot\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"xplot\": \"\\\"1\\\"\", \"yplot\": \"\\\"2\\\"\", \"ylab\": \"\\\"Y\\\"\", \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"out\": \"{\\\"additional_output_format\\\": \\\"none\\\", \\\"dpi_output_dim\\\": \\\"300.0\\\", \\\"height_output_dim\\\": \\\"7.0\\\", \\\"unit_output_dim\\\": \\\"in\\\", \\\"width_output_dim\\\": \\\"7.0\\\"}\"}", + "tool_version": "2.2.1+galaxy2", + "type": "tool", + "uuid": "caba26fb-d235-4ad3-83a5-2a02a6821f57", + "workflow_outputs": [] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "errors": null, + "id": 9, + "input_connections": { + "input_types|infile": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Numeric Clustering", + "outputs": [ + { + "name": "outfile", + "type": "tabular" + } + ], + "position": { + "left": 420, + "top": 680 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/sklearn_numeric_clustering/sklearn_numeric_clustering/1.0.8.1", + "tool_shed_repository": { + "changeset_revision": "1dd433d2c92c", + "name": "sklearn_numeric_clustering", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"input_types\": \"{\\\"__current_case__\\\": 1, \\\"algorithm_options\\\": {\\\"__current_case__\\\": 7, \\\"options\\\": {\\\"affinity\\\": \\\"euclidean\\\", \\\"linkage\\\": \\\"ward\\\", \\\"n_clusters\\\": \\\"2\\\"}, \\\"selected_algorithm\\\": \\\"AgglomerativeClustering\\\"}, \\\"column_selector_options\\\": {\\\"__current_case__\\\": 4, \\\"selected_column_selector_option\\\": \\\"all_columns\\\"}, \\\"header\\\": \\\"true\\\", \\\"infile\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"selected_input_type\\\": \\\"tabular\\\"}\", \"__rerun_remap_job_id__\": null, \"chromInfo\": \"\\\"/opt/galaxy/tool-data/shared/ucsc/chrom/?.len\\\"\", \"__page__\": null}", + "tool_version": "1.0.8.1", + "type": "tool", + "uuid": "1abf8463-f8f6-4313-894b-d371baeeacbf", + "workflow_outputs": [] + } + }, + "uuid": "14f73bbe-9ae6-4c09-a8a4-4b15391044bb", + "version": 1 +} diff --git a/topics/statistics/tutorials/clustering_machinelearning/workflows/index.md b/topics/statistics/tutorials/clustering_machinelearning/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/statistics/tutorials/clustering_machinelearning/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/statistics/tutorials/intro_deep_learning/data-library.yaml b/topics/statistics/tutorials/intro_deep_learning/data-library.yaml new file mode 100644 index 00000000000000..064a820fab8ba0 --- /dev/null +++ b/topics/statistics/tutorials/intro_deep_learning/data-library.yaml @@ -0,0 +1,32 @@ +--- +destination: + type: library + name: GTN - Material + description: Galaxy Training Network Material + synopsis: Galaxy Training Network Material. See https://training.galaxyproject.org +items: +- name: Statistics and machine learning + description: Statistical Analyses for omics data and machine learning using Galaxy + tools + items: + - name: Introduction to deep learning + items: + - name: 'DOI: 10.5281/zenodo.3706539' + description: latest + items: + - url: https://zenodo.org/record/3706539/files/X_test.tsv + src: url + ext: tsv + info: https://zenodo.org/record/3706539#.XmjDYHVKg5k + - url: https://zenodo.org/record/3706539/files/X_train.tsv + src: url + ext: tsv + info: https://zenodo.org/record/3706539#.XmjDYHVKg5k + - url: https://zenodo.org/record/3706539/files/y_test.tsv + src: url + ext: tsv + info: https://zenodo.org/record/3706539#.XmjDYHVKg5k + - url: https://zenodo.org/record/3706539/files/y_train.tsv + src: url + ext: tsv + info: https://zenodo.org/record/3706539#.XmjDYHVKg5k diff --git a/topics/statistics/tutorials/intro_deep_learning/tutorial.md b/topics/statistics/tutorials/intro_deep_learning/tutorial.md new file mode 100755 index 00000000000000..fcbaa4be25e6f5 --- /dev/null +++ b/topics/statistics/tutorials/intro_deep_learning/tutorial.md @@ -0,0 +1,254 @@ +--- +layout: tutorial_hands_on + +title: Introduction to deep learning +zenodo_link: https://zenodo.org/record/3706539#.XmjDYHVKg5k +questions: +- What are deep learning and neural networks? +- Why is it useful? +- How to create a neural network architecture for classification? +objectives: +- Learn basic principles of deep learning +- Learn about how to create an end-to-end neural network architecture +- Learn about Galaxy deep learning tools +- Learn how to interpret predictions +key_points: +- Multiple tools to constitute a neural network architecture +- Interpretation of predictions using visualisation tools +time_estimation: 1H +contributors: +- anuprulez +- khanteymoori +--- + +## Introduction + +### Deep learning and neural networks +[Deep learning](https://en.wikipedia.org/wiki/Deep_learning), a branch of artificial intelligence, provides a collection of learning methods to model data with complex architectures to perform different non-linear transformations of data. Using these transformations, patterns are recognised in large volumes of data and new data can be categorised using these patterns extracted on existing data. These patterns are learned by computational models devised using different architectures of neural networks. In the recent years, the neural network architectures such as convolutional, long short-term memory networks, deep belief networks have become increasingly popular as machine learning tools in the fields of computer vision, image analysis, bioinformatics, speech recognition, natural language processing and so on achieving state-of-the-art performance, sometimes exceeding human performance. The availability of greater computational resources, more data, new algorithms for training deep models and easy to use libraries for implementation and training of neural networks are the drivers of this development. Deep learning works by approximating the mathematical function which maps data to its output and it has been shown that it can [approximate](https://arxiv.org/pdf/1910.03344.pdf) any function making it widely popular across multiple fields to analyse data. A neural network is a web of artificial neurons which are also called processing units. The idea of a neural network is inspired by [biological neural networks](https://en.wikipedia.org/wiki/Neural_circuit) where neuronal circuits are used to process information and learn. An artificial neural network is structured into multiple layers where each layer contains several neurons. The neurons from adjacent layers are interconnected ([feed-forward neural network](https://en.wikipedia.org/wiki/Feedforward_neural_network)) allowing the exchange of information between layers of neurons. + +![data](../../images/neuron.svg "Structure of an artificial neuron. The input x (x1, x2, ..., xn) and its corresponding weight w (w1, w2, ..., wn) are vectors. The input and its weight are transformed to produce an output y") + +An artificial neuron is shown in Figure 1. The neuron, shown in orange, takes input `x` (only `x1` and `x2` are shown for simplicity) and computes output `y`. The entities `w1`, `w2` are the weights of the connections (between inputs and neuron). The weights and inputs are combined following the basic principles of mathematics to produce output `y` (shown in Figures 2, 3 and 4). + +![data](../../images/eq1.png "Transformation of a component (x1) of the input vector (x).") + +![data](../../images/eq2.png "Transformation of a component (x2) of the input vector (x).") + +Weights denote the significance of a particular input to produce the observed output. When it is large, the input is significant and when small, the input is less significant to produce the output. These weights can be initialised randomly and they are modified throughout the learning by a neural network. Using the updated inputs (as shown in the above equations), the output is computed: + +![data](../../images/eq3.png "Computation of output y using input x, weight w and activation function f.") + +where *f* is an activation function. An [activation function](https://keras.io/activations/) is a mathematical function which translates the combination of inputs to an output. The choices of these functions are many - sigmoid, linear, tanh, ReLU and so on. For example, sigmoid is: + +![data](../../images/eq4.png "Sigmoid activation function.") + +The above equation will return a real number between 0 and 1. + +Rectified exponential linear unit (ReLU) is given by: + +![data](../../images/eq5.png "Rectified exponential linear unit (ReLU) activation function.") + +As discussed earlier, neurons make the building blocks of a neural network and are arranged in several layers and a usual neural network looks like as shown in Figure 7. + +#### Input layer +In the neural network (Figure 7), the input layer is shown in green. This layer receives input data and passes it on to the next layer. The number of neurons in this layer depends on the number of dimensions of input data. For example, if input data (matrix) is of size (500, 10), 500 rows (samples) and 10 columns (features), then the number of neurons in the input layer should be 10. Each neuron in input layer is connected to all neurons in the next layer. All these connections have a separate weight (denoted by `w`). + +#### Hidden layer +The next two layers after the input layer are called hidden layers. In the first hidden layer too, all the neurons are connected to all other neurons in the adjacent (hidden) layer. The number of hidden layers determines if the resulting neural network is deep (2 or more hidden layers) or shallow. When the number of hidden layers is 2 or more, the structure or architecture of the neural network is deep and overall learning is called deep learning. More the number of hidden layers, the more complex the architecture is. A complex architecture is beneficial for learning unique patterns from big data. But, complex architecture is prone to [overfitting](https://en.wikipedia.org/wiki/Overfitting) when a neural network starts memorising data without learning unique and general patterns. + +![data](../../images/neural_network.svg "A neural network consisting of 4 layers - 1 input, 2 hidden and 1 output. The neurons in each layer are connected to all neurons in the adjacent layer. Each connection between a pair of neurons contains a weight.") + +The number of hidden layers and the size of each hidden layer is not fixed as it completely depends on the data. If the dataset is small (say only 1,000 samples), then it is sufficient to choose a less complex architecture (fewer hidden layers) to avoid the danger of overfitting. However, if the dataset is large (say > 100,000 samples), more complex architecture can be chosen. In short, the architecture of the hidden layer is completely dependent on the nature and size of data. + +#### Output layer +This layer collects output computed using input data and weights which are optimised during learning. An activation function is chosen to transform the combination of input and weight to an output. Some examples of activation functions have been discussed above. + +#### Optimisation +Compted or predicted output, collected at the output layer, and the actual output are compared to find error (or loss). Neural network learning aims is to minimise this error so that the predicted output gets as close to the actual output as possible. This process of minimising error between predicted and actual output is called optimisation. There are several optimisers such as [gradient descent](https://en.wikipedia.org/wiki/Gradient_descent), root mean square propagation ([RMSProp](https://en.wikipedia.org/wiki/Stochastic_gradient_descent#RMSProp)), [adadelta](https://arxiv.org/pdf/1212.5701.pdf) and so on are available. These optimisers work by primarily adjusting the weights of connections so that the error is minimised. Once, a set of weights are achieved which provides the best accuracy or minimum error, the learning is terminated because the weights cannot be updated anymore which can further minimise the error. + +#### Neural network training +Training is a process where input data is passed to a neural network at input layer and when finished, a trained model is created containing all the learned parameters such as weights of all connections in the neural network. Usually, a portion of data is extracted and saved as test data which is not used for training. It is used only for evaluating the trained model to get an unbiased estimate of learning and prediction strength. The partitioning of data into training and test can be set by deep learning practitioners. An example of partition can be - 70% training and 30% test data. + +#### Batch and Epoch +While training a neural network, input data is passed in small batches. A batch is a subset of training data. An epoch is one iteration when all the training data is used for training in multiple batches. For example, if there is training data of size (500, 10) and batch size is fixed at 50, then there would be 10 batches (50 * 10 = 500) in each epoch. Each batch will have 50 samples and they are passed to the input layer of neural network. The loss computed at the output layer is propagated back and the weights are adjusted. The newly adjusted weights are used for the second batch of samples and so on. When all batches are finished, then one epoch of learning is done. The number of epochs and the size of a batch are parameters to be set by deep learning practitioners. These parameters depend on the size of data and should be tuned according to the data for optimum results. + +![data](../../images/mse.png "Mean squared error loss function.") + +#### Loss function +The error between the computed and actual output is calculated using a loss function which is necessary to evaluate the strength of learning. Learning is good when loss decreases with training epochs otherwise, training should be stopped and the architecture should be carefully adjusted. There are several choices of loss functions too. Functions such as root mean squared error (RMSE) and absolute error (AE) are used for regression problems while cross-entropy error functions such as binary cross-entropy and categorical cross-entropy are used in classification problems. An example of loss function is shown in Figure 8. + +> ### {% icon question %} Questions +> +> 1. What do you understand by an architecture of a neural network? +> 2. How does a neural network learn? +> +> > ### {% icon solution %} Solution +> > +> > 1. Architecture of a neural network consists of multiple layers such as input, hidden, convolutional, output and their number of respective neurons, optimiser, loss and activation functions etc. +> > 2. The learning happens by minimising the loss between the computed and actual output. The weights of all neuronal connections are adjusted (increased or decreased) to achieve the minimum loss. To ascertain the amount of change for weights, a technique known as backpropagation is used. Using this technique, the loss computed at the output layer is "propagated" back in the neural network (from output to input layer) and each neuronal connection is assigned a share of the total loss. In other words, how much each neuron is contributing to the total accumulated loss. For example, w1 is adjusted according to equation: +> > ![data](../../images/partial_derivative.png "Weight w1 is updated by computing a partial derivative of loss L with respect to weight. The derivative is multiplied with learning rate n.") +> > In the above equation, `L` is the total loss, `w1` is the weight of a connection between an input neuron and a hidden neuron. Similarly, all weights are adjusted and in the subsequent iteration, the updated weights are used to compute loss at the output layer. Parameter `n` is the learning rate which determines how small or big changes are needed in weights. It can either be a fixed quantity or a variable one. In case of a variable learning rate, it usually starts with a large number (say 1.0) and subsequently decays to a small number (say 0.001) as the training epochs proceed because initially a large learning rate helps to reach close to the minimum error quickly and then it is decayed to slow down the learning so that it stabilises at the minimum. More on backpropagation can be read [here](http://neuralnetworksanddeeplearning.com/chap2.html). +> > +> {: .solution} +> +{: .question} + +### Relevance of deep learning in Bioinformatics +Deep learning is an established tool in finding patterns in big data for multiple fields of research such as computer vision, image analysis, drug response prediction, protein structure prediction and so on. Different research areas use different architectures of neural network which are suitable to their respective data. For example - in computer vision and image analysis, convolutional neural network (CNN) is popular, graph convolutional neural network is often used for drug response prediction, recurrent neural network is useful for identifying motifs in protein sequences and so on. The table below shows more examples of neural networks which are popular with different fields of bioinformatics. These use-cases of deep learning in bioinformatics prove that it is essential to explore deep learning algorithms to find patterns in big data in biology. More details can be found in [Deep learning in bioinformatics: Introduction, application, and perspective in the big data era](https://www.sciencedirect.com/science/article/pii/S1046202318303256). + +![data](../../images/dl_bioinformatics.png "Different architectures of neural networks for different fields of bioinformatics.") + +## Get training and test datasets +The datasets used for this tutorial contain gene expression profiles of humans suffering from two types of cancer - [acute myeloid leukemia (AML)](https://en.wikipedia.org/wiki/Acute_myeloid_leukemia) and [acute lymphoblastic leukemia (ALL)](https://en.wikipedia.org/wiki/Acute_lymphoblastic_leukemia). The tutorial aims to differentiate between these two cancer types, predicting a cancer type for each patient, by learning unique patterns in gene expression profiles of patients. The data is divided into 2 parts - one for training and another for prediction. Each part contains two datasets - one has the gene expression profiles and another has labels (the types of cancer). The size of the training data (`X_train`) is (38, 7129) where 38 is the number of patients and 7129 is the number of genes. The label dataset (`y_train`) is of size (38, 1) and contains the information of the type of cancer for each patient (label encoding is 0 for ALL and 1 for AML). The test dataset (`X_test`) is of size (34, 7129) and contains the same genes for 34 different patients. The label dataset for test is `y_test` and is of size (34, 1). The neural network, which will be formulated in the remaining part of the tutorial, learns on the training data and its labels to create a trained model. The prediction ability of this model is evaluated on the test data (which is unseen during training to get an unbiased estimate of prediction ability). These datasets are uploaded to Galaxy by following the steps defined below: + +> ### {% icon hands_on %} Hands-on: Data upload +> +> 1. Create a new history for this tutorial +> +> {% include snippets/create_new_history.md %} +> +> 2. Import the files from [Zenodo](https://zenodo.org/record/3706539#.XmjDYHVKg5k) +> +> ``` +> https://zenodo.org/record/3706539/files/X_test.tsv +> https://zenodo.org/record/3706539/files/X_train.tsv +> https://zenodo.org/record/3706539/files/y_test.tsv +> https://zenodo.org/record/3706539/files/y_train.tsv +> ``` +> +> 3. Rename the datasets as `X_test`, `X_train`, `y_test` and `y_train` respectively. +> +> {% include snippets/rename_dataset.md %} +> {% include snippets/import_via_link.md %} +> +> 4. Check that the datatype is `tabular`. +> +> {% include snippets/change_datatype.md datatype="datatypes" %} +> +{: .hands_on} + + +## Neural network architecture +Defining a neural network architecture needs to ascertain the types and number of layers, the number of neurons for each layer, activation functions for all layers, type of optimiser and loss function. Choosing these parameters may require many experiments with data as there is no golden rule to choose the best combination of these parameters. The neural network used in this tutorial has an input layer, 2 hidden layers and one output layer. The input layer has a parameter `input_shape` which is set according to the number of dimensions of data. It is set to (7129,) which is the number of genes present in data. The hidden layers have 16 neurons (units) each and the output layer has only one because a scalar output is expected (0 or 1). This partial architecture (having input shape, types and size of layers, and activation functions) of the neural network is defined as follows: + +### Create architecture: Choose layers + +> ### {% icon hands_on %} Hands-on: Create a deep learning model architecture using Keras +> +> 1. **Create a deep learning model architecture using Keras** {% icon tool %} with the following parameters: +> - *"Select keras model type"*: `Sequential` +> - *"input_shape"*: `(7129, )` +> +> - In *"LAYER"*: +> - {% icon param-repeat %} *"1: LAYER"*: +> - *"Choose the type of layer"*: `Core -- Dense` +> - *"units"*: `16` +> - *"Activation function"*: `elu` +> - {% icon param-repeat %} *"2: LAYER"*: +> - *"Choose the type of layer"*: `Core -- Dense` +> - *"units"*: `16` +> - *"Activation function"*: `elu` +> - {% icon param-repeat %} *"3: LAYER"*: +> - *"Choose the type of layer"*: `Core -- Dense` +> - *"units"*: `1` +> - *"Activation function"*: `sigmoid` +> +> +{: .hands_on} + +The tool returns a JSON output file containing data about the neural network layers and their attributes like their types, number of units they have and their activation functions. This file is used as an input to the next step where the architecture of the neural network is completed by adding optimiser, loss function, and training parameters such as the number of epochs and batch size. The loss function is chosen as `binary_crossentropy` as the learning task is the classification of two labels (0 and 1). + +### Create architecture: Add training parameters + +> ### {% icon hands_on %} Hands-on: Create deep learning model with an optimizer, loss function and fit parameters +> +> 1. **Create deep learning model with an optimizer, loss function and fit parameters** {% icon tool %} with the following parameters: +> - *"Choose a building mode"*: `Build a training model` +> - *"Select the dataset containing model configurations (JSON)"*: `Keras model config` (output of **Create a deep learning model architecture using Keras** {% icon tool %}) +> - *"Do classification or regression?"*: `KerasGClassifier` +> +> `KerasGClassifier` is chosen because the learning task is classfication i.e. assigning each patient a type of cancer. +> - In *"Compile Parameters"*: +> - *"Select a loss function"*: `binary_crossentropy` +> +> The loss function is `binary_crossentropy` because the labels are discrete and binary (0 and 1). +> - *"Select an optimizer"*: `RMSprop - RMSProp optimizer` +> - In *"Fit Parameters"*: +> - *"epochs"*: `10` +> - *"batch_size"*: `4` +> +> The training data is small (only 38 patients). Therefore the number of epochs and batch size are also small. +> +{: .hands_on} + +The tool returns a zipped file containing an object of the neural network architecture (define in the last two steps) which is used as a classifier to train it on data. Once the architecture is finalised, its associated object is used for training combining it with the training data as follows: + +### Deep learning training +A neural network is trained on training data to learn hidden representations and mapping from features (genes) to both the types of cancer. As discussed earlier, the neural network minimises the error, which is given by the loss function, between actual and predicted labels while adjusting the weights of connections among neurons in multiple layers. Once the training is finished, the architecture and learned weights are saved. They are used to predict labels in test data. The deep learning training is set up as follows: + +> ### {% icon hands_on %} Hands-on: Deep learning training and evaluation conduct deep training and evaluation either implicitly or explicitly +> +> 1. **Deep learning training and evaluation conduct deep training and evaluation** {% icon tool %} with the following parameters: +> - *"Select a scheme"*: `Train and validate` +> - *"Choose the dataset containing pipeline/estimator object"*: `Keras model builder` (output of **Create deep learning model** {% icon tool %}) +> - *"Select input type"*: `tabular data` +> - *"Training samples dataset"*: `X_train` +> - *"Does the dataset contain header"*: `Yes` +> - *"Choose how to select data by column"*: `All columns` +> - *"Dataset containing class labels or target values"*: `y_train` +> - *"Does the dataset contain header"*: `Yes` +> - *"Choose how to select data by column"*: `All columns` +> +{: .hands_on} + +The tool gives 3 files as output - a tabular file containing output (accuracy of cross-validation) of training, a zipped file with the trained model (fitted estimator) and an H5 (HDF5) file containing the weights of neural network layers. The files containing the fitted estimator and weights are used to recreate the model and this recreated model is used to predict labels in test data. + +### Prediction on test data +After training, the saved architecture (fitted estimator) and weights are used to predict labels for the test data. For each patient in the test data, a type of cancer is predicted using the trained model learned in the previous step. + +> ### {% icon hands_on %} Hands-on: Model Prediction predicts on new data using a preffited model +> +> 1. **Model Prediction predicts on new data using a preffited model** {% icon tool %} with the following parameters: +> - *"Choose the dataset containing pipeline/estimator object"*: `Fitted estimator or estimator skeleton` (output of **Deep learning training and evaluation** {% icon tool %}) +> - *"Choose the dataset containing weights for the estimator above"*: `Weights trained` (output of **Create deep learning model** {% icon tool %}) +> - *"Select invocation method"*: `predict` +> - *"Select input data type for prediction"*: `tabular data` +> - *"Training samples dataset"*: `X_test` +> - *"Does the dataset contain header"*: `Yes` +> - *"Choose how to select data by column"*: `All columns` +> +> +{: .hands_on} + +The tool returns the predicted labels (0 for ALL and 1 AML) for test data in a tabular format. The size of this data is (34,1) where 34 is the number of cancer patients in test data. + +## Visualisation +Visualising the results is important to ascertain the generalisation ability of the trained model on an unseen dataset. Using a dataset with the actual labels for the test data, the performance of the trained model is estimated by comparing the actual labels against the predicted labels using a confusion matrix plot. + +> ### {% icon hands_on %} Hands-on: Machine Learning Visualization Extension includes several types of plotting for machine learning +> +> 1. **Machine Learning Visualization Extension includes several types of plotting for machine learning** {% icon tool %} with the following parameters: +> - *"Select a plotting type"*: `Confusion matrix for classes` +> - *"Select dataset containing true labels"*: `y_test` +> - *"Does the dataset contain header"*: `Yes` +> - *"Choose how to select data by column"*: `All columns` +> - *"Select dataset containing predicted labels"*: `Model prediction` (output of **Model Prediction predicts on new data using a preffited model** {% icon tool %}) +> - *"Does the dataset contain header"*: `Yes` +> +> +{: .hands_on} + +> ### {% icon comment %} Comment +> Please note that your predictions could be different from the plot shown in Figure 11 because the training data is small and the predictions may vary. Stability in predictions can be achieved if the deep learning model is trained on large data. But, for this tutorial, it is kept small to reduce the training time as the aim is to showcase how to create a pipeline for deep learning training. Generally, deep learning models are trained on large data and may keep running for a few hours to a few days. +{: .comment} + +The image below shows [confusion matrix](https://en.wikipedia.org/wiki/Confusion_matrix) which is a square matrix. It contains actual labels on the y-axis and predicted labels on the x-axis. Each cell in the matrix plot gives the number of cancer patients who got predicted correctly or incorrectly. For example, the number in the top-left cell (0, 0) denotes how many of these patients are predicted correctly for ALL (17/20). The higher the number in this cell, the better is the model for this cell. In the top-right cell, 3 patients who have ALL but they are predicted having AML. Similarly, the bottom-right cell denotes how many patients are predicted correctly for AML (10/14). In the bottom-left cell, 4 patients have AML but are predicted as ALL. + +![data](../../images/confusion_matrix_dl.png "Confusion matrix for true and predicted classes") + + +## Conclusion +The tutorial presents a case-study to predict labels (ALL and AML) of 34 new cancer patients after learning gene expression profiles of 38 cancer patients through multiple steps of a deep learning pipeline. All these steps show how to create a neural network architecture using Galaxy's deep learning tools and analyse results using a confusion matrix visualisation. Similarly, multiple different architectures of neural networks can be created well-suited to datasets and aim of particular experiments. Moreover, it should be noted that one architecture of neural network giving promising results on a dataset may not work at all with another dataset. It is essential to perform multiple experiments with a dataset to formulate an optimal neural network architecture. + +{:.no_toc} + diff --git a/topics/statistics/tutorials/machinelearning/workflows/machine_learning-test.yml b/topics/statistics/tutorials/machinelearning/workflows/machine_learning-test.yml new file mode 100644 index 00000000000000..daedd370a3a379 --- /dev/null +++ b/topics/statistics/tutorials/machinelearning/workflows/machine_learning-test.yml @@ -0,0 +1,16 @@ +--- +- doc: Test Basics of Machine Learning workflow + job: + breast-w_train: + class: File + location: https://zenodo.org/api/files/0d468136-5025-4c0f-bf8b-a8277a513a93/breast-w_train.tsv + filetype: tabular + breast-w_test: + class: File + location: https://zenodo.org/api/files/0d468136-5025-4c0f-bf8b-a8277a513a93/breast-w_test.tsv + filetype: tabular + outputs: + outfile_predict: + asserts: + has_text: + text: 'Mitoses' diff --git a/topics/statistics/tutorials/machinelearning/workflows/machine_learning.ga b/topics/statistics/tutorials/machinelearning/workflows/machine_learning.ga index 2670588b4c2e54..bebcdb65996739 100644 --- a/topics/statistics/tutorials/machinelearning/workflows/machine_learning.ga +++ b/topics/statistics/tutorials/machinelearning/workflows/machine_learning.ga @@ -111,7 +111,13 @@ "name": "outfile_predict" } ], - "workflow_outputs": [], + "workflow_outputs": [ + { + "label": "outfile_predict", + "output_name": "outfile_predict", + "uuid": "03e30beb-fc01-4184-8649-057c13bb626a" + } + ], "input_connections": { "selected_tasks|infile_data": { "output_name": "output", diff --git a/topics/transcriptomics/images/ref-based/rna-seq-reads.png b/topics/transcriptomics/images/ref-based/rna-seq-reads.png new file mode 100644 index 00000000000000..7eaed3e444b38a Binary files /dev/null and b/topics/transcriptomics/images/ref-based/rna-seq-reads.png differ diff --git a/topics/transcriptomics/images/ref-based/rna-seq-reads.svg b/topics/transcriptomics/images/ref-based/rna-seq-reads.svg new file mode 100644 index 00000000000000..39c38c1a2649d9 --- /dev/null +++ b/topics/transcriptomics/images/ref-based/rna-seq-reads.svg @@ -0,0 +1,273 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg8" + inkscape:version="0.92.2 5c3e80d, 2017-08-06" + sodipodi:docname="rna-seq-reads.svg" + inkscape:export-filename="/Users/bebatut/Documents/com/articles/2019_rna-seq/images/rna-seq-reads.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="-87.885673" + inkscape:cy="422.04494" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1126" + inkscape:window-height="1143" + inkscape:window-x="799" + inkscape:window-y="0" + inkscape:window-maximized="0" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="opacity:1;fill:#969696;fill-opacity:1;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793-7-3" + width="23.418528" + height="5.7017517" + x="-46.869728" + y="177.7823" + ry="0" /> + <rect + style="opacity:1;fill:#969696;fill-opacity:1;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793-7-3-1-0" + width="45.899086" + height="5.7017541" + x="-130.685" + y="177.7823" + ry="0" /> + <rect + style="opacity:1;fill:#ff0000;fill-opacity:0.96078431;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793-75-91" + width="21.720102" + height="3.421051" + x="-102.80033" + y="186.6913" + ry="0" /> + <rect + style="opacity:1;fill:#ffbb00;fill-opacity:1;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793" + width="33.847885" + height="5.7017517" + x="-109.11893" + y="177.7823" + ry="0" /> + <flowRoot + xml:space="preserve" + id="flowRoot963-3-2-7" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + transform="matrix(0.26458333,0,0,0.26458333,266.63456,67.749198)"><flowRegion + id="flowRegion965-9-2-9" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial"><rect + id="rect967-0-7-0" + width="369.71582" + height="174.75639" + x="-1047.5282" + y="416.42307" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial" /></flowRegion><flowPara + id="flowPara969-5-3-2">Reference genome</flowPara></flowRoot> <flowRoot + xml:space="preserve" + id="flowRoot963-6-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + transform="matrix(0.26458333,0,0,0.26458333,94.240145,67.751624)"><flowRegion + id="flowRegion965-5-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;text-anchor:end"><rect + id="rect967-7-8" + width="369.71582" + height="174.75639" + x="-1047.5282" + y="416.42307" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;text-anchor:end" /></flowRegion><flowPara + id="flowPara1127-4">exon1</flowPara></flowRoot> <rect + style="opacity:1;fill:#969696;fill-opacity:1;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793-7-3-7" + width="11.658671" + height="5.7017517" + x="-75.271042" + y="177.7823" + ry="0" /> + <rect + style="opacity:1;fill:#ffbb00;fill-opacity:1;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793-9" + width="16.74264" + height="5.7017517" + x="-63.61237" + y="177.7823" + ry="0" /> + <flowRoot + xml:space="preserve" + id="flowRoot963-6-5-3" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + transform="matrix(0.26458333,0,0,0.26458333,130.87093,67.751624)"><flowRegion + id="flowRegion965-5-5-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;text-anchor:end"><rect + id="rect967-7-8-0" + width="369.71582" + height="174.75639" + x="-1047.5282" + y="416.42307" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;text-anchor:end" /></flowRegion><flowPara + id="flowPara1127-4-2">exon2</flowPara></flowRoot> <rect + style="opacity:1;fill:#ffbb00;fill-opacity:1;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793-9-4" + width="29.037037" + height="5.7017517" + x="-23.4512" + y="177.7823" + ry="0" /> + <flowRoot + xml:space="preserve" + id="flowRoot963-6-5-3-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + transform="matrix(0.26458333,0,0,0.26458333,177.16121,67.751624)"><flowRegion + id="flowRegion965-5-5-8-3" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;text-anchor:end"><rect + id="rect967-7-8-0-9" + width="369.71582" + height="174.75639" + x="-1047.5282" + y="416.42307" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial;text-align:end;text-anchor:end" /></flowRegion><flowPara + id="flowPara1127-4-2-0">exon3</flowPara></flowRoot> <rect + style="opacity:1;fill:#969696;fill-opacity:1;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793-7-3-7-5" + width="8.9859753" + height="5.7017517" + x="5.5858364" + y="177.7823" + ry="0" /> + <g + id="g1191" + transform="translate(0,-0.06682167)"> + <rect + ry="0" + y="194.30847" + x="-56.295425" + height="3.421051" + width="9.4256992" + id="rect4793-75-6" + style="opacity:1;fill:#1388b3;fill-opacity:0.96078431;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" /> + <rect + ry="0" + y="194.30847" + x="-23.4512" + height="3.421051" + width="12.294403" + id="rect4793-75-6-2" + style="opacity:1;fill:#1388b3;fill-opacity:0.96078431;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" /> + <path + inkscape:connector-curvature="0" + id="path1136" + d="M -46.869728,196.019 H -23.4512" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52999997, 0.52999997;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g1198" + transform="translate(0,-2.7338663e-6)"> + <rect + ry="0" + y="201.79201" + x="-77.137215" + height="3.421051" + width="1.8661735" + id="rect4793-75-6-27-7" + style="opacity:1;fill:#a838b3;fill-opacity:0.96078431;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" /> + <rect + ry="0" + y="201.79201" + x="-23.4512" + height="3.421051" + width="3.11129" + id="rect4793-75-6-2-3-9" + style="opacity:1;fill:#a838b3;fill-opacity:0.96078431;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" /> + <rect + ry="0" + y="201.79201" + x="-63.61237" + height="3.421051" + width="16.742638" + id="rect4793-75-6-2-3-9-2" + style="opacity:1;fill:#a739b3;fill-opacity:0.96078431;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" /> + <path + inkscape:connector-curvature="0" + id="path1136-3" + d="m -46.869732,203.50254 h 23.418528" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52999997, 0.52999997;stroke-dashoffset:0;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1136-3-9" + d="M -75.271042,203.50254 H -63.61237" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52999997, 0.52999997;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g1186" + transform="translate(0,-0.06682167)"> + <rect + ry="0" + y="194.30847" + x="-63.61237" + height="3.421051" + width="1.8661735" + id="rect4793-75-6-27" + style="opacity:1;fill:#1338b3;fill-opacity:0.96078431;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" /> + <rect + ry="0" + y="194.30847" + x="-95.124969" + height="3.421051" + width="19.853928" + id="rect4793-75-6-2-3" + style="opacity:1;fill:#1339b3;fill-opacity:0.96078431;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1136-9" + d="M -75.271042,196.019 H -63.61237" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52999997, 0.52999997;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <rect + style="opacity:1;fill:#e40042;fill-opacity:0.96078432;stroke:none;stroke-width:0.84666669;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.90588235" + id="rect4793-75-91-7" + width="21.720102" + height="3.421051" + x="-17.00725" + y="186.6913" + ry="0" /> + </g> +</svg> diff --git a/topics/transcriptomics/images/rna-interactome/chira.png b/topics/transcriptomics/images/rna-interactome/chira.png new file mode 100644 index 00000000000000..860e13308562f0 Binary files /dev/null and b/topics/transcriptomics/images/rna-interactome/chira.png differ diff --git a/topics/transcriptomics/images/rna-interactome/chira_fastqc_seq_content.png b/topics/transcriptomics/images/rna-interactome/chira_fastqc_seq_content.png new file mode 100644 index 00000000000000..0dbe3c24b5aa44 Binary files /dev/null and b/topics/transcriptomics/images/rna-interactome/chira_fastqc_seq_content.png differ diff --git a/topics/transcriptomics/images/rna-interactome/chiraviz_choose.png b/topics/transcriptomics/images/rna-interactome/chiraviz_choose.png new file mode 100644 index 00000000000000..815e2e8645205b Binary files /dev/null and b/topics/transcriptomics/images/rna-interactome/chiraviz_choose.png differ diff --git a/topics/transcriptomics/images/rna-interactome/chiraviz_home.png b/topics/transcriptomics/images/rna-interactome/chiraviz_home.png new file mode 100644 index 00000000000000..1d39e944fe1950 Binary files /dev/null and b/topics/transcriptomics/images/rna-interactome/chiraviz_home.png differ diff --git a/topics/transcriptomics/images/rna-interactome/chiraviz_single.png b/topics/transcriptomics/images/rna-interactome/chiraviz_single.png new file mode 100644 index 00000000000000..2e1feb6a43a421 Binary files /dev/null and b/topics/transcriptomics/images/rna-interactome/chiraviz_single.png differ diff --git a/topics/transcriptomics/images/wab96wellplate.svg b/topics/transcriptomics/images/wab96wellplate.svg new file mode 100644 index 00000000000000..c6bcb28e06fdc6 --- /dev/null +++ b/topics/transcriptomics/images/wab96wellplate.svg @@ -0,0 +1,356 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" + "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg" + width="812.000000pt" height="489.000000pt" viewBox="0 0 812.000000 489.000000" + preserveAspectRatio="xMidYMid meet"> +<metadata> +Created by potrace 1.15, written by Peter Selinger 2001-2017 +</metadata> +<g transform="translate(0.000000,489.000000) scale(0.100000,-0.100000)" +fill="#000000" stroke="none"> +<path d="M0 2440 l0 -2440 4060 0 4060 0 0 2440 0 2440 -4060 0 -4060 0 0 +-2440z m8100 -10 l0 -2420 -4035 0 -4035 0 0 2420 0 2420 4035 0 4035 0 0 +-2420z"/> +<path d="M280 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M950 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M1630 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M2300 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M2980 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M3650 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M4311 4797 c-50 -19 -111 -75 -132 -121 -11 -24 -19 -64 -19 -96 0 +-167 170 -277 320 -209 92 42 133 107 134 210 0 57 -4 74 -30 115 -55 90 -180 +136 -273 101z m131 -47 c45 -13 103 -75 119 -129 23 -76 -19 -164 -94 -200 +-115 -56 -244 17 -255 143 -7 82 33 147 108 180 42 18 72 19 122 6z"/> +<path d="M5000 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M5670 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M6350 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M7020 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M7700 4801 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M280 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M950 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M1630 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M2300 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M2980 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M3650 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M4311 4187 c-50 -19 -111 -75 -132 -121 -11 -24 -19 -64 -19 -96 0 +-167 170 -277 320 -209 92 42 133 107 134 210 0 57 -4 74 -30 115 -55 90 -180 +136 -273 101z m131 -47 c45 -13 103 -75 119 -129 23 -76 -19 -164 -94 -200 +-115 -56 -244 17 -255 143 -7 82 33 147 108 180 42 18 72 19 122 6z"/> +<path d="M5000 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M5670 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M6350 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M7020 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M7700 4191 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M280 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M950 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M1630 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M2300 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M2980 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M3650 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M4311 3577 c-50 -19 -111 -75 -132 -121 -11 -24 -19 -64 -19 -96 0 +-167 170 -277 320 -209 92 42 133 107 134 210 0 57 -4 74 -30 115 -55 90 -180 +136 -273 101z m131 -47 c45 -13 103 -75 119 -129 23 -76 -19 -164 -94 -200 +-115 -56 -244 17 -255 143 -7 82 33 147 108 180 42 18 72 19 122 6z"/> +<path d="M5000 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M5670 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M6350 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M7020 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M7700 3581 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M280 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M950 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M1630 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M2300 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M2980 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M3650 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M4311 2967 c-50 -19 -111 -75 -132 -121 -11 -24 -19 -64 -19 -96 0 +-167 170 -277 320 -209 92 42 133 107 134 210 0 57 -4 74 -30 115 -55 90 -180 +136 -273 101z m131 -47 c45 -13 103 -75 119 -129 23 -76 -19 -164 -94 -200 +-115 -56 -244 17 -255 143 -7 82 33 147 108 180 42 18 72 19 122 6z"/> +<path d="M5000 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M5670 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M6350 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M7020 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M7700 2971 c-107 -33 -170 -116 -170 -223 1 -173 186 -281 341 -200 +138 71 168 253 60 361 -58 58 -156 84 -231 62z m135 -60 c83 -37 128 -124 105 +-204 -13 -49 -67 -109 -113 -126 -110 -42 -235 37 -245 153 -11 139 126 235 +253 177z"/> +<path d="M268 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M938 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M1618 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M2288 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M2968 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M3638 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M4310 2357 c-49 -16 -126 -95 -139 -143 -28 -100 -4 -192 67 -256 69 +-62 161 -75 249 -34 163 76 174 320 18 411 -52 31 -140 41 -195 22z m145 -56 +c62 -28 115 -104 115 -166 0 -32 -25 -90 -53 -122 -56 -63 -134 -80 -205 -44 +-145 74 -134 279 19 340 37 15 80 12 124 -8z"/> +<path d="M4988 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M5658 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M6338 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M7008 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M7688 2356 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M268 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M938 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M1618 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M2288 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M2968 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M3638 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M4310 1747 c-49 -16 -126 -95 -139 -143 -28 -100 -4 -192 67 -256 69 +-62 161 -75 249 -34 163 76 174 320 18 411 -52 31 -140 41 -195 22z m145 -56 +c62 -28 115 -104 115 -166 0 -32 -25 -90 -53 -122 -56 -63 -134 -80 -205 -44 +-145 74 -134 279 19 340 37 15 80 12 124 -8z"/> +<path d="M4988 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M5658 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M6338 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M7008 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M7688 1746 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M268 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M938 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M1618 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M2288 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M2968 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M3638 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M4310 1137 c-49 -16 -126 -95 -139 -143 -28 -100 -4 -192 67 -256 69 +-62 161 -75 249 -34 163 76 174 320 18 411 -52 31 -140 41 -195 22z m145 -56 +c62 -28 115 -104 115 -166 0 -32 -25 -90 -53 -122 -56 -63 -134 -80 -205 -44 +-145 74 -134 279 19 340 37 15 80 12 124 -8z"/> +<path d="M4988 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M5658 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M6338 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M7008 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M7688 1136 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M268 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M938 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M1618 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M2288 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M2968 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M3638 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M4310 527 c-49 -16 -126 -95 -139 -143 -28 -100 -4 -192 67 -256 69 +-62 161 -75 249 -34 163 76 174 320 18 411 -52 31 -140 41 -195 22z m145 -56 +c62 -28 115 -104 115 -166 0 -32 -25 -90 -53 -122 -56 -63 -134 -80 -205 -44 +-145 74 -134 279 19 340 37 15 80 12 124 -8z"/> +<path d="M4988 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M5658 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M6338 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M7008 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +<path d="M7688 526 c-103 -37 -158 -117 -158 -229 0 -169 184 -278 339 -201 +182 91 164 362 -28 429 -54 18 -103 19 -153 1z m147 -55 c102 -46 141 -166 85 +-259 -76 -125 -255 -120 -321 11 -44 86 -5 202 83 246 52 26 100 26 153 2z"/> +</g> +</svg> diff --git a/topics/transcriptomics/images/wabbalancedbatches.png b/topics/transcriptomics/images/wabbalancedbatches.png new file mode 100644 index 00000000000000..8480e80d28a5ba Binary files /dev/null and b/topics/transcriptomics/images/wabbalancedbatches.png differ diff --git a/topics/transcriptomics/images/wabbatchproblems.png b/topics/transcriptomics/images/wabbatchproblems.png new file mode 100644 index 00000000000000..4fc585644b4c5c Binary files /dev/null and b/topics/transcriptomics/images/wabbatchproblems.png differ diff --git a/topics/transcriptomics/images/wabexampleplates.png b/topics/transcriptomics/images/wabexampleplates.png new file mode 100644 index 00000000000000..62d743c9b8a30c Binary files /dev/null and b/topics/transcriptomics/images/wabexampleplates.png differ diff --git a/topics/transcriptomics/images/wablanesbad.png b/topics/transcriptomics/images/wablanesbad.png new file mode 100644 index 00000000000000..ac5deba2c73f26 Binary files /dev/null and b/topics/transcriptomics/images/wablanesbad.png differ diff --git a/topics/transcriptomics/images/wablanesgood.png b/topics/transcriptomics/images/wablanesgood.png new file mode 100644 index 00000000000000..38285a3dc10913 Binary files /dev/null and b/topics/transcriptomics/images/wablanesgood.png differ diff --git a/topics/transcriptomics/images/wabplate.png b/topics/transcriptomics/images/wabplate.png new file mode 100644 index 00000000000000..25fa8944b12afd Binary files /dev/null and b/topics/transcriptomics/images/wabplate.png differ diff --git a/topics/transcriptomics/images/wabreplicates.png b/topics/transcriptomics/images/wabreplicates.png new file mode 100644 index 00000000000000..5c97e7f62f37f9 Binary files /dev/null and b/topics/transcriptomics/images/wabreplicates.png differ diff --git a/topics/transcriptomics/images/wabseqlane.png b/topics/transcriptomics/images/wabseqlane.png new file mode 100644 index 00000000000000..083a299a03ed6b Binary files /dev/null and b/topics/transcriptomics/images/wabseqlane.png differ diff --git a/topics/transcriptomics/tutorials/de-novo/tutorial.md b/topics/transcriptomics/tutorials/de-novo/tutorial.md index a414e80202acee..069739bcb305b7 100755 --- a/topics/transcriptomics/tutorials/de-novo/tutorial.md +++ b/topics/transcriptomics/tutorials/de-novo/tutorial.md @@ -101,8 +101,8 @@ For quality control, we use similar tools as described in [NGS-QC tutorial]({{si > 2. **Trimmomatic** {% icon tool %}: Trim off the low quality bases from the ends of the reads to increase mapping efficiency. Run `Trimmomatic` on each pair of forward and reverse reads with the following settings: > > - *"Single-end or paired-end reads?"*: `Paired-end (two separate input files)` -> - {% icon param-file %} *"Input FASTQ file (R1/first of pair)"*: `G1E forward read (R1)` -> - {% icon param-file %} *"Input FASTQ file (R2/second of pair)"*: `G1E reverse read (R1)` +> - {% icon param-file %} *"Input FASTQ file (R1/first of pair)"*: `G1E_rep1 forward read` +> - {% icon param-file %} *"Input FASTQ file (R2/second of pair)"*: `G1E_rep1 reverse read` > - *"Perform initial ILLUMINACLIP step?"*: `No` > > 3. **FastQC** {% icon tool %}: Re-run `FastQC` on trimmed reads and inspect the differences. @@ -118,6 +118,9 @@ For quality control, we use similar tools as described in [NGS-QC tutorial]({{si > > {: .solution } > {: .question} > ![Before and after trimming comparison](../../images/BeforeAndAfterTrimming.png) +> +> 4. **Trimmomatic** {% icon tool %}: Run `Trimmomatic` on the remaining forward/reverse read pairs with the same parameters. +> {: .hands_on} Now that we have trimmed our reads and are fortunate that there is a reference genome assembly for mouse, we will align our trimmed reads to the genome. @@ -162,8 +165,8 @@ Spliced mappers have been developed to efficiently map transcript-derived reads > - *"Source for the reference genome"*: `Use a built-in genome` > - {% icon param-file %} *"Select a reference genome"*: `Mouse (Mus Musculus): mm10` > - *"Single-end or paired-end reads?"*: `Paired-end` -> - {% icon param-file %} *"FASTA/Q file #1"*: trimmed G1E forward read (R1) -> - {% icon param-file %} *"FASTA/Q file #2"*: trimmed G1E reverse read (R1) +> - {% icon param-file %} *"FASTA/Q file #1"*: Trimmomatic on G1E_rep1 forward read (R1 paired) +> - {% icon param-file %} *"FASTA/Q file #2"*: Trimmomatic on G1E_rep1 reverse read (R2 paired) > - *"Specify strand information"*: `Forward(FR)` > - *"Advanced options"* > - *"Spliced alignment options"* @@ -195,13 +198,14 @@ We just generated four transcriptomes with `Stringtie` representing each of the > ### {% icon hands_on %} Hands-on: Transcriptome assembly > > 1. **Stringtie-merge** {% icon tool %}: Run `Stringtie-merge` on the `Stringtie` assembled transcripts along with the RefSeq annotation file we imported earlier. -> - {% icon param-file %} *"input_gtf"*: `all four `Stringtie` assemblies` -> - {% icon param-file %} *"guide_gff"*: `RefSeq GTF mm10` +> - {% icon param-file %} *"Transcripts"*: `all four `Stringtie` assemblies` +> - {% icon param-file %} *"Reference annotation to include in the merging"*: `RefSeq_reference_GTF` > > 2. **GFFCompare** {% icon tool %}: Run `GFFCompare` on the `Stringtie-merge` generated transcriptome along with the RefSeq annotation file. > - {% icon param-file %} *"GTF inputs for comparison"*: `output of Stringtie-merge` > - *"Use Reference Annotation"*: `Yes` -> - {% icon param-file %} *"Reference Annotation"*: `RefSeq GTF mm10` +> - *"Choose the source for the reference annotation"*: `History` +> - {% icon param-file %} *"Reference Annotation"*: `RefSeq_reference_GTF` > - *"Use Sequence Data"*: `Yes` > - *"Choose the source for the reference list"*: `Locally cached` > - *"Using reference genome"*: 'Mouse (Mus Musculus): mm10' diff --git a/topics/transcriptomics/tutorials/de-novo/workflows/transcriptomics-denovo-workflow.ga b/topics/transcriptomics/tutorials/de-novo/workflows/transcriptomics-denovo-workflow.ga index ff283cf28934c2..fc144f11ee0194 100644 --- a/topics/transcriptomics/tutorials/de-novo/workflows/transcriptomics-denovo-workflow.ga +++ b/topics/transcriptomics/tutorials/de-novo/workflows/transcriptomics-denovo-workflow.ga @@ -1,2234 +1,3002 @@ { - "a_galaxy_workflow": "true", - "annotation": "De novo transcriptome reconstruction with RNA-Seq", - "format-version": "0.1", - "name": "Transcriptomics Denovo Workflow", - "steps": { - "0": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 0, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "G1E_rep1_forward_read" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 10 - }, - "tool_id": null, - "tool_state": "{\"name\": \"G1E_rep1_forward_read\"}", - "tool_version": null, - "type": "data_input", - "uuid": "cbc6590c-d6de-4abf-b53f-6c83b4ab4120", - "workflow_outputs": [] - }, - "1": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 1, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "G1E_rep1_reverse_read" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 130 - }, - "tool_id": null, - "tool_state": "{\"name\": \"G1E_rep1_reverse_read\"}", - "tool_version": null, - "type": "data_input", - "uuid": "c2ba4aba-060a-40ba-88d6-e6fef8a1f2eb", - "workflow_outputs": [] - }, - "10": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "errors": null, - "id": 10, - "input_connections": { - "input_file": { - "id": 1, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 130 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "tool_shed_repository": { - "changeset_revision": "c15237684a01", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"contaminants\": \"null\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.72", - "type": "tool", - "uuid": "a4db4907-e8e9-4534-a37c-7c1d6c34de20", - "workflow_outputs": [] - }, - "11": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.36.5", - "errors": null, - "id": 11, - "input_connections": { - "readtype|fastq_r1_in": { - "id": 0, - "output_name": "output" - }, - "readtype|fastq_r2_in": { - "id": 1, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "Trimmomatic", - "outputs": [ - { - "name": "fastq_out_paired", - "type": "input" - }, - { - "name": "fastq_out_unpaired", - "type": "input" - }, - { - "name": "fastq_out_r1_paired", - "type": "input" - }, - { - "name": "fastq_out_r2_paired", - "type": "input" - }, - { - "name": "fastq_out_r1_unpaired", - "type": "input" - }, - { - "name": "fastq_out_r2_unpaired", - "type": "input" - }, - { - "name": "fastq_out", - "type": "input" - } - ], - "position": { - "left": 230, - "top": 250 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.36.5", - "tool_shed_repository": { - "changeset_revision": "dfa082f84068", - "name": "trimmomatic", - "owner": "pjbriggs", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"operations\": \"[{\\\"__index__\\\": 0, \\\"operation\\\": {\\\"window_size\\\": \\\"4\\\", \\\"name\\\": \\\"SLIDINGWINDOW\\\", \\\"__current_case__\\\": 0, \\\"required_quality\\\": \\\"20\\\"}}]\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"readtype\": \"{\\\"single_or_paired\\\": \\\"pair_of_files\\\", \\\"fastq_r1_in\\\": null, \\\"__current_case__\\\": 1, \\\"fastq_r2_in\\\": null}\", \"illuminaclip\": \"{\\\"do_illuminaclip\\\": \\\"false\\\", \\\"__current_case__\\\": 1}\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.36.5", - "type": "tool", - "uuid": "d7a54fe5-9cd2-4209-9a02-b7d2d636b337", - "workflow_outputs": [] - }, - "12": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "errors": null, - "id": 12, - "input_connections": { - "input_file": { - "id": 2, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 370 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "tool_shed_repository": { - "changeset_revision": "c15237684a01", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"contaminants\": \"null\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.72", - "type": "tool", - "uuid": "c96f55e9-c898-4e79-abe2-0795b54d3a05", - "workflow_outputs": [] - }, - "13": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "errors": null, - "id": 13, - "input_connections": { - "input_file": { - "id": 3, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 490 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "tool_shed_repository": { - "changeset_revision": "c15237684a01", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"contaminants\": \"null\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.72", - "type": "tool", - "uuid": "d30af66b-0ab0-4bb9-8009-ce96a6c16993", - "workflow_outputs": [] - }, - "14": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.36.5", - "errors": null, - "id": 14, - "input_connections": { - "readtype|fastq_r1_in": { - "id": 2, - "output_name": "output" - }, - "readtype|fastq_r2_in": { - "id": 3, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "Trimmomatic", - "outputs": [ - { - "name": "fastq_out_paired", - "type": "input" - }, - { - "name": "fastq_out_unpaired", - "type": "input" - }, - { - "name": "fastq_out_r1_paired", - "type": "input" - }, - { - "name": "fastq_out_r2_paired", - "type": "input" - }, - { - "name": "fastq_out_r1_unpaired", - "type": "input" - }, - { - "name": "fastq_out_r2_unpaired", - "type": "input" - }, - { - "name": "fastq_out", - "type": "input" - } - ], - "position": { - "left": 230, - "top": 610 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.36.5", - "tool_shed_repository": { - "changeset_revision": "dfa082f84068", - "name": "trimmomatic", - "owner": "pjbriggs", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"operations\": \"[{\\\"__index__\\\": 0, \\\"operation\\\": {\\\"window_size\\\": \\\"4\\\", \\\"name\\\": \\\"SLIDINGWINDOW\\\", \\\"__current_case__\\\": 0, \\\"required_quality\\\": \\\"20\\\"}}]\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"readtype\": \"{\\\"single_or_paired\\\": \\\"pair_of_files\\\", \\\"fastq_r1_in\\\": null, \\\"__current_case__\\\": 1, \\\"fastq_r2_in\\\": null}\", \"illuminaclip\": \"{\\\"do_illuminaclip\\\": \\\"false\\\", \\\"__current_case__\\\": 1}\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.36.5", - "type": "tool", - "uuid": "3d3cfa70-c027-40aa-b01c-52c36035fe92", - "workflow_outputs": [] - }, - "15": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "errors": null, - "id": 15, - "input_connections": { - "input_file": { - "id": 4, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 730 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "tool_shed_repository": { - "changeset_revision": "c15237684a01", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"contaminants\": \"null\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.72", - "type": "tool", - "uuid": "a6295400-a0ee-4790-9294-44e39e5df96c", - "workflow_outputs": [] - }, - "16": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "errors": null, - "id": 16, - "input_connections": { - "input_file": { - "id": 5, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 850 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "tool_shed_repository": { - "changeset_revision": "c15237684a01", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"contaminants\": \"null\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.72", - "type": "tool", - "uuid": "d7866331-a1c1-4c4b-8f6b-f7feb78fa78c", - "workflow_outputs": [] - }, - "17": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.36.5", - "errors": null, - "id": 17, - "input_connections": { - "readtype|fastq_r1_in": { - "id": 4, - "output_name": "output" - }, - "readtype|fastq_r2_in": { - "id": 5, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "Trimmomatic", - "outputs": [ - { - "name": "fastq_out_paired", - "type": "input" - }, - { - "name": "fastq_out_unpaired", - "type": "input" - }, - { - "name": "fastq_out_r1_paired", - "type": "input" - }, - { - "name": "fastq_out_r2_paired", - "type": "input" - }, - { - "name": "fastq_out_r1_unpaired", - "type": "input" - }, - { - "name": "fastq_out_r2_unpaired", - "type": "input" - }, - { - "name": "fastq_out", - "type": "input" - } - ], - "position": { - "left": 230, - "top": 970 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.36.5", - "tool_shed_repository": { - "changeset_revision": "dfa082f84068", - "name": "trimmomatic", - "owner": "pjbriggs", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"operations\": \"[{\\\"__index__\\\": 0, \\\"operation\\\": {\\\"window_size\\\": \\\"4\\\", \\\"name\\\": \\\"SLIDINGWINDOW\\\", \\\"__current_case__\\\": 0, \\\"required_quality\\\": \\\"20\\\"}}]\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"readtype\": \"{\\\"single_or_paired\\\": \\\"pair_of_files\\\", \\\"fastq_r1_in\\\": null, \\\"__current_case__\\\": 1, \\\"fastq_r2_in\\\": null}\", \"illuminaclip\": \"{\\\"do_illuminaclip\\\": \\\"false\\\", \\\"__current_case__\\\": 1}\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.36.5", - "type": "tool", - "uuid": "c7ff55a4-e3df-4fde-93a3-ab0e175d5d6e", - "workflow_outputs": [] - }, - "18": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "errors": null, - "id": 18, - "input_connections": { - "input_file": { - "id": 6, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 1090 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "tool_shed_repository": { - "changeset_revision": "c15237684a01", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"contaminants\": \"null\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.72", - "type": "tool", - "uuid": "e56ae1f1-b6ee-4f0a-873b-fae2c345c216", - "workflow_outputs": [] - }, - "19": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "errors": null, - "id": 19, - "input_connections": { - "input_file": { - "id": 7, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 1210 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "tool_shed_repository": { - "changeset_revision": "c15237684a01", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"contaminants\": \"null\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.72", - "type": "tool", - "uuid": "d1068d72-f84b-431c-9137-38eb42606147", - "workflow_outputs": [] - }, - "2": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 2, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "G1E_rep2_forward_read" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 250 - }, - "tool_id": null, - "tool_state": "{\"name\": \"G1E_rep2_forward_read\"}", - "tool_version": null, - "type": "data_input", - "uuid": "c24cf053-248c-4922-874e-240f187853ca", - "workflow_outputs": [] - }, - "20": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.36.5", - "errors": null, - "id": 20, - "input_connections": { - "readtype|fastq_r1_in": { - "id": 6, - "output_name": "output" - }, - "readtype|fastq_r2_in": { - "id": 7, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "Trimmomatic", - "outputs": [ - { - "name": "fastq_out_paired", - "type": "input" - }, - { - "name": "fastq_out_unpaired", - "type": "input" - }, - { - "name": "fastq_out_r1_paired", - "type": "input" - }, - { - "name": "fastq_out_r2_paired", - "type": "input" - }, - { - "name": "fastq_out_r1_unpaired", - "type": "input" - }, - { - "name": "fastq_out_r2_unpaired", - "type": "input" - }, - { - "name": "fastq_out", - "type": "input" - } - ], - "position": { - "left": 230, - "top": 1330 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.36.5", - "tool_shed_repository": { - "changeset_revision": "dfa082f84068", - "name": "trimmomatic", - "owner": "pjbriggs", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"operations\": \"[{\\\"__index__\\\": 0, \\\"operation\\\": {\\\"window_size\\\": \\\"4\\\", \\\"name\\\": \\\"SLIDINGWINDOW\\\", \\\"__current_case__\\\": 0, \\\"required_quality\\\": \\\"20\\\"}}]\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"readtype\": \"{\\\"single_or_paired\\\": \\\"pair_of_files\\\", \\\"fastq_r1_in\\\": null, \\\"__current_case__\\\": 1, \\\"fastq_r2_in\\\": null}\", \"illuminaclip\": \"{\\\"do_illuminaclip\\\": \\\"false\\\", \\\"__current_case__\\\": 1}\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.36.5", - "type": "tool", - "uuid": "81433b00-0996-44b0-ae73-db880a8c68c0", - "workflow_outputs": [] - }, - "21": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0", - "errors": null, - "id": 21, - "input_connections": { - "library|input_1": { - "id": 11, - "output_name": "fastq_out_r1_paired" - }, - "library|input_2": { - "id": 11, - "output_name": "fastq_out_r2_paired" - } - }, - "inputs": [], - "label": null, - "name": "HISAT2", - "outputs": [ - { - "name": "output_alignments", - "type": "bam" - }, - { - "name": "output_unaligned_reads_l", - "type": "fastqsanger" - }, - { - "name": "output_aligned_reads_l", - "type": "fastqsanger" - }, - { - "name": "output_unaligned_reads_r", - "type": "fastqsanger" - }, - { - "name": "output_aligned_reads_r", - "type": "fastqsanger" - }, - { - "name": "summary_file", - "type": "txt" - } - ], - "position": { - "left": 450, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0", - "tool_shed_repository": { - "changeset_revision": "6ab42baa56e9", - "name": "hisat2", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": \"{\\\"alignment_options\\\": {\\\"__current_case__\\\": 0, \\\"alignment_options_selector\\\": \\\"defaults\\\"}, \\\"output_options\\\": {\\\"output_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"other_options\\\": {\\\"other_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"scoring_options\\\": {\\\"scoring_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"spliced_options\\\": {\\\"coefficient\\\": \\\"0.0\\\", \\\"canonical_penalty\\\": \\\"0\\\", \\\"no_spliced_alignment_options\\\": {\\\"no_spliced_alignment\\\": \\\"\\\", \\\"__current_case__\\\": 1}, \\\"nc_function_type\\\": \\\"C\\\", \\\"constant_term\\\": \\\"0.0\\\", \\\"nc_coefficient\\\": \\\"1.0\\\", \\\"noncanonical_penalty\\\": \\\"3\\\", \\\"known_splice_gtf\\\": null, \\\"nc_constant_term\\\": \\\"-8.0\\\", \\\"min_intron\\\": \\\"20\\\", \\\"function_type\\\": \\\"C\\\", \\\"__current_case__\\\": 1, \\\"notmplen\\\": \\\"false\\\", \\\"tma\\\": \\\"--dta\\\", \\\"max_intron\\\": \\\"500000\\\", \\\"spliced_options_selector\\\": \\\"advanced\\\"}, \\\"reporting_options\\\": {\\\"reporting_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"input_options\\\": {\\\"input_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}}\", \"__page__\": null, \"sum\": \"{\\\"new_summary\\\": \\\"false\\\", \\\"summary_file\\\": \\\"false\\\"}\", \"library\": \"{\\\"rna_strandness\\\": \\\"FR\\\", \\\"input_2\\\": null, \\\"__current_case__\\\": 1, \\\"input_1\\\": null, \\\"type\\\": \\\"paired\\\", \\\"paired_options\\\": {\\\"paired_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}}\", \"reference_genome\": \"{\\\"source\\\": \\\"indexed\\\", \\\"__current_case__\\\": 0, \\\"index\\\": \\\"mm10\\\"}\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "2.1.0", - "type": "tool", - "uuid": "817cc498-44f1-4813-92f0-3b88fed3451f", - "workflow_outputs": [] - }, - "22": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0", - "errors": null, - "id": 22, - "input_connections": { - "library|input_1": { - "id": 14, - "output_name": "fastq_out_r1_paired" - }, - "library|input_2": { - "id": 14, - "output_name": "fastq_out_r2_paired" - } - }, - "inputs": [], - "label": null, - "name": "HISAT2", - "outputs": [ - { - "name": "output_alignments", - "type": "bam" - }, - { - "name": "output_unaligned_reads_l", - "type": "fastqsanger" - }, - { - "name": "output_aligned_reads_l", - "type": "fastqsanger" - }, - { - "name": "output_unaligned_reads_r", - "type": "fastqsanger" - }, - { - "name": "output_aligned_reads_r", - "type": "fastqsanger" - }, - { - "name": "summary_file", - "type": "txt" - } - ], - "position": { - "left": 450, - "top": 130 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0", - "tool_shed_repository": { - "changeset_revision": "6ab42baa56e9", - "name": "hisat2", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": \"{\\\"alignment_options\\\": {\\\"__current_case__\\\": 0, \\\"alignment_options_selector\\\": \\\"defaults\\\"}, \\\"output_options\\\": {\\\"output_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"other_options\\\": {\\\"other_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"scoring_options\\\": {\\\"scoring_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"spliced_options\\\": {\\\"coefficient\\\": \\\"0.0\\\", \\\"canonical_penalty\\\": \\\"0\\\", \\\"no_spliced_alignment_options\\\": {\\\"no_spliced_alignment\\\": \\\"\\\", \\\"__current_case__\\\": 1}, \\\"nc_function_type\\\": \\\"C\\\", \\\"constant_term\\\": \\\"0.0\\\", \\\"nc_coefficient\\\": \\\"1.0\\\", \\\"noncanonical_penalty\\\": \\\"3\\\", \\\"known_splice_gtf\\\": null, \\\"nc_constant_term\\\": \\\"-8.0\\\", \\\"min_intron\\\": \\\"20\\\", \\\"function_type\\\": \\\"C\\\", \\\"__current_case__\\\": 1, \\\"notmplen\\\": \\\"false\\\", \\\"tma\\\": \\\"--dta\\\", \\\"max_intron\\\": \\\"500000\\\", \\\"spliced_options_selector\\\": \\\"advanced\\\"}, \\\"reporting_options\\\": {\\\"reporting_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"input_options\\\": {\\\"input_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}}\", \"__page__\": null, \"sum\": \"{\\\"new_summary\\\": \\\"false\\\", \\\"summary_file\\\": \\\"false\\\"}\", \"library\": \"{\\\"rna_strandness\\\": \\\"FR\\\", \\\"input_2\\\": null, \\\"__current_case__\\\": 1, \\\"input_1\\\": null, \\\"type\\\": \\\"paired\\\", \\\"paired_options\\\": {\\\"paired_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}}\", \"reference_genome\": \"{\\\"source\\\": \\\"indexed\\\", \\\"__current_case__\\\": 0, \\\"index\\\": \\\"mm10\\\"}\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "2.1.0", - "type": "tool", - "uuid": "1e92db79-135e-4a5e-9d3f-ea0d7f5045da", - "workflow_outputs": [] - }, - "23": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0", - "errors": null, - "id": 23, - "input_connections": { - "library|input_1": { - "id": 17, - "output_name": "fastq_out_r1_paired" - }, - "library|input_2": { - "id": 17, - "output_name": "fastq_out_r2_paired" - } - }, - "inputs": [], - "label": null, - "name": "HISAT2", - "outputs": [ - { - "name": "output_alignments", - "type": "bam" - }, - { - "name": "output_unaligned_reads_l", - "type": "fastqsanger" - }, - { - "name": "output_aligned_reads_l", - "type": "fastqsanger" - }, - { - "name": "output_unaligned_reads_r", - "type": "fastqsanger" - }, - { - "name": "output_aligned_reads_r", - "type": "fastqsanger" - }, - { - "name": "summary_file", - "type": "txt" - } - ], - "position": { - "left": 450, - "top": 250 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0", - "tool_shed_repository": { - "changeset_revision": "6ab42baa56e9", - "name": "hisat2", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": \"{\\\"alignment_options\\\": {\\\"__current_case__\\\": 0, \\\"alignment_options_selector\\\": \\\"defaults\\\"}, \\\"output_options\\\": {\\\"output_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"other_options\\\": {\\\"other_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"scoring_options\\\": {\\\"scoring_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"spliced_options\\\": {\\\"coefficient\\\": \\\"0.0\\\", \\\"canonical_penalty\\\": \\\"0\\\", \\\"no_spliced_alignment_options\\\": {\\\"no_spliced_alignment\\\": \\\"\\\", \\\"__current_case__\\\": 1}, \\\"nc_function_type\\\": \\\"C\\\", \\\"constant_term\\\": \\\"0.0\\\", \\\"nc_coefficient\\\": \\\"1.0\\\", \\\"noncanonical_penalty\\\": \\\"3\\\", \\\"known_splice_gtf\\\": null, \\\"nc_constant_term\\\": \\\"-8.0\\\", \\\"min_intron\\\": \\\"20\\\", \\\"function_type\\\": \\\"C\\\", \\\"__current_case__\\\": 1, \\\"notmplen\\\": \\\"false\\\", \\\"tma\\\": \\\"--dta\\\", \\\"max_intron\\\": \\\"500000\\\", \\\"spliced_options_selector\\\": \\\"advanced\\\"}, \\\"reporting_options\\\": {\\\"reporting_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"input_options\\\": {\\\"input_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}}\", \"__page__\": null, \"sum\": \"{\\\"new_summary\\\": \\\"false\\\", \\\"summary_file\\\": \\\"false\\\"}\", \"library\": \"{\\\"rna_strandness\\\": \\\"FR\\\", \\\"input_2\\\": null, \\\"__current_case__\\\": 1, \\\"input_1\\\": null, \\\"type\\\": \\\"paired\\\", \\\"paired_options\\\": {\\\"paired_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}}\", \"reference_genome\": \"{\\\"source\\\": \\\"indexed\\\", \\\"__current_case__\\\": 0, \\\"index\\\": \\\"mm10\\\"}\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "2.1.0", - "type": "tool", - "uuid": "c488973c-6fe1-4f11-9268-1f108e3e1aae", - "workflow_outputs": [] - }, - "24": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0", - "errors": null, - "id": 24, - "input_connections": { - "library|input_1": { - "id": 20, - "output_name": "fastq_out_r1_paired" - }, - "library|input_2": { - "id": 20, - "output_name": "fastq_out_r2_paired" - } - }, - "inputs": [], - "label": null, - "name": "HISAT2", - "outputs": [ - { - "name": "output_alignments", - "type": "bam" - }, - { - "name": "output_unaligned_reads_l", - "type": "fastqsanger" - }, - { - "name": "output_aligned_reads_l", - "type": "fastqsanger" - }, - { - "name": "output_unaligned_reads_r", - "type": "fastqsanger" - }, - { - "name": "output_aligned_reads_r", - "type": "fastqsanger" - }, - { - "name": "summary_file", - "type": "txt" - } - ], - "position": { - "left": 450, - "top": 370 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0", - "tool_shed_repository": { - "changeset_revision": "6ab42baa56e9", - "name": "hisat2", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": \"{\\\"alignment_options\\\": {\\\"__current_case__\\\": 0, \\\"alignment_options_selector\\\": \\\"defaults\\\"}, \\\"output_options\\\": {\\\"output_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"other_options\\\": {\\\"other_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"scoring_options\\\": {\\\"scoring_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"spliced_options\\\": {\\\"coefficient\\\": \\\"0.0\\\", \\\"canonical_penalty\\\": \\\"0\\\", \\\"no_spliced_alignment_options\\\": {\\\"no_spliced_alignment\\\": \\\"\\\", \\\"__current_case__\\\": 1}, \\\"nc_function_type\\\": \\\"C\\\", \\\"constant_term\\\": \\\"0.0\\\", \\\"nc_coefficient\\\": \\\"1.0\\\", \\\"noncanonical_penalty\\\": \\\"3\\\", \\\"known_splice_gtf\\\": null, \\\"nc_constant_term\\\": \\\"-8.0\\\", \\\"min_intron\\\": \\\"20\\\", \\\"function_type\\\": \\\"C\\\", \\\"__current_case__\\\": 1, \\\"notmplen\\\": \\\"false\\\", \\\"tma\\\": \\\"--dta\\\", \\\"max_intron\\\": \\\"500000\\\", \\\"spliced_options_selector\\\": \\\"advanced\\\"}, \\\"reporting_options\\\": {\\\"reporting_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}, \\\"input_options\\\": {\\\"input_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}}\", \"__page__\": null, \"sum\": \"{\\\"new_summary\\\": \\\"false\\\", \\\"summary_file\\\": \\\"false\\\"}\", \"library\": \"{\\\"rna_strandness\\\": \\\"FR\\\", \\\"input_2\\\": null, \\\"__current_case__\\\": 1, \\\"input_1\\\": null, \\\"type\\\": \\\"paired\\\", \\\"paired_options\\\": {\\\"paired_options_selector\\\": \\\"defaults\\\", \\\"__current_case__\\\": 0}}\", \"reference_genome\": \"{\\\"source\\\": \\\"indexed\\\", \\\"__current_case__\\\": 0, \\\"index\\\": \\\"mm10\\\"}\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "2.1.0", - "type": "tool", - "uuid": "614c1c41-fcd0-447e-8514-c0876641809d", - "workflow_outputs": [] - }, - "25": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.3.2", - "errors": null, - "id": 25, - "input_connections": { - "input_bam": { - "id": 21, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "StringTie", - "outputs": [ - { - "name": "output_gtf", - "type": "gtf" - }, - { - "name": "gene_abundance_estimation", - "type": "gtf" - }, - { - "name": "coverage", - "type": "gtf" - }, - { - "name": "exon_expression", - "type": "tabular" - }, - { - "name": "intron_expression", - "type": "tabular" - }, - { - "name": "transcript_expression", - "type": "tabular" - }, - { - "name": "exon_transcript_mapping", - "type": "tabular" - }, - { - "name": "intron_transcript_mapping", - "type": "tabular" - }, - { - "name": "gene_counts", - "type": "tabular" - }, - { - "name": "transcript_counts", - "type": "tabular" - }, - { - "name": "legend", - "type": "tabular" - } - ], - "position": { - "left": 670, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.3.2", - "tool_shed_repository": { - "changeset_revision": "eafd5dc95228", - "name": "stringtie", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": \"{\\\"min_bundle_cov\\\": \\\"2\\\", \\\"min_tlen\\\": \\\"200\\\", \\\"bdist\\\": \\\"50\\\", \\\"multi_mapping\\\": \\\"false\\\", \\\"abundance_estimation\\\": \\\"false\\\", \\\"fraction\\\": \\\"0.15\\\", \\\"disable_trimming\\\": \\\"false\\\", \\\"omit_sequences\\\": \\\"\\\", \\\"name_prefix\\\": \\\"\\\", \\\"min_anchor_len\\\": \\\"10\\\", \\\"bundle_fraction\\\": \\\"0.95\\\", \\\"min_anchor_cov\\\": \\\"1\\\"}\", \"__page__\": null, \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"rna_strandness\": \"\\\"--fr\\\"\", \"input_bam\": \"null\", \"guide\": \"{\\\"use_guide\\\": \\\"no\\\", \\\"__current_case__\\\": 0}\"}", - "tool_version": "1.3.3.2", - "type": "tool", - "uuid": "5fbbf39b-c5da-435e-a7cf-4d0d3ed9e05e", - "workflow_outputs": [] - }, - "26": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "errors": null, - "id": 26, - "input_connections": { - "bamInput": { - "id": 21, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "bamCoverage", - "outputs": [ - { - "name": "outFileName", - "type": "bigwig" - } - ], - "position": { - "left": 670, - "top": 490 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "3033c3fba046", - "name": "deeptools_bam_coverage", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"outFileFormat\": \"\\\"bigwig\\\"\", \"region\": \"\\\"\\\"\", \"bamInput\": \"null\", \"binSize\": \"\\\"1\\\"\", \"scaling\": \"{\\\"effectiveGenomeSize\\\": {\\\"effectiveGenomeSize_opt\\\": \\\"2304947926\\\", \\\"__current_case__\\\": 6}, \\\"type\\\": \\\"1x\\\", \\\"__current_case__\\\": 4}\", \"advancedOpt\": \"{\\\"ignoreDuplicates\\\": \\\"false\\\", \\\"centerReads\\\": \\\"false\\\", \\\"ignoreForNormalization\\\": \\\"\\\", \\\"minFragmentLength\\\": \\\"0\\\", \\\"minMappingQuality\\\": \\\"1\\\", \\\"MNase\\\": \\\"false\\\", \\\"samFlagInclude\\\": \\\"\\\", \\\"filterRNAstrand\\\": \\\"forward\\\", \\\"Offset\\\": \\\"\\\", \\\"smoothLength\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"__current_case__\\\": 1, \\\"samFlagExclude\\\": \\\"\\\", \\\"doExtendCustom\\\": {\\\"__current_case__\\\": 0, \\\"doExtend\\\": \\\"no\\\"}, \\\"skipNAs\\\": \\\"false\\\", \\\"scaleFactor\\\": \\\"1.0\\\", \\\"blackListFileName\\\": null, \\\"maxFragmentLength\\\": \\\"0\\\"}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "d61115e2-0a95-4b80-93bb-a14183d0e219", - "workflow_outputs": [] - }, - "27": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "errors": null, - "id": 27, - "input_connections": { - "bamInput": { - "id": 21, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "bamCoverage", - "outputs": [ - { - "name": "outFileName", - "type": "bigwig" - } - ], - "position": { - "left": 670, - "top": 970 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "3033c3fba046", - "name": "deeptools_bam_coverage", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"outFileFormat\": \"\\\"bigwig\\\"\", \"region\": \"\\\"\\\"\", \"bamInput\": \"null\", \"binSize\": \"\\\"1\\\"\", \"scaling\": \"{\\\"effectiveGenomeSize\\\": {\\\"effectiveGenomeSize_opt\\\": \\\"2304947926\\\", \\\"__current_case__\\\": 6}, \\\"type\\\": \\\"1x\\\", \\\"__current_case__\\\": 4}\", \"advancedOpt\": \"{\\\"ignoreDuplicates\\\": \\\"false\\\", \\\"centerReads\\\": \\\"false\\\", \\\"ignoreForNormalization\\\": \\\"\\\", \\\"minFragmentLength\\\": \\\"0\\\", \\\"minMappingQuality\\\": \\\"1\\\", \\\"MNase\\\": \\\"false\\\", \\\"samFlagInclude\\\": \\\"\\\", \\\"filterRNAstrand\\\": \\\"reverse\\\", \\\"Offset\\\": \\\"\\\", \\\"smoothLength\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"__current_case__\\\": 1, \\\"samFlagExclude\\\": \\\"\\\", \\\"doExtendCustom\\\": {\\\"__current_case__\\\": 0, \\\"doExtend\\\": \\\"no\\\"}, \\\"skipNAs\\\": \\\"false\\\", \\\"scaleFactor\\\": \\\"1.0\\\", \\\"blackListFileName\\\": null, \\\"maxFragmentLength\\\": \\\"0\\\"}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "72051e92-7fc3-447f-b289-e9d7e7043397", - "workflow_outputs": [] - }, - "28": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.3.2", - "errors": null, - "id": 28, - "input_connections": { - "input_bam": { - "id": 22, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "StringTie", - "outputs": [ - { - "name": "output_gtf", - "type": "gtf" - }, - { - "name": "gene_abundance_estimation", - "type": "gtf" - }, - { - "name": "coverage", - "type": "gtf" - }, - { - "name": "exon_expression", - "type": "tabular" - }, - { - "name": "intron_expression", - "type": "tabular" - }, - { - "name": "transcript_expression", - "type": "tabular" - }, - { - "name": "exon_transcript_mapping", - "type": "tabular" - }, - { - "name": "intron_transcript_mapping", - "type": "tabular" - }, - { - "name": "gene_counts", - "type": "tabular" - }, - { - "name": "transcript_counts", - "type": "tabular" - }, - { - "name": "legend", - "type": "tabular" - } - ], - "position": { - "left": 670, - "top": 130 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.3.2", - "tool_shed_repository": { - "changeset_revision": "eafd5dc95228", - "name": "stringtie", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": \"{\\\"min_bundle_cov\\\": \\\"2\\\", \\\"min_tlen\\\": \\\"200\\\", \\\"bdist\\\": \\\"50\\\", \\\"multi_mapping\\\": \\\"false\\\", \\\"abundance_estimation\\\": \\\"false\\\", \\\"fraction\\\": \\\"0.15\\\", \\\"disable_trimming\\\": \\\"false\\\", \\\"omit_sequences\\\": \\\"\\\", \\\"name_prefix\\\": \\\"\\\", \\\"min_anchor_len\\\": \\\"10\\\", \\\"bundle_fraction\\\": \\\"0.95\\\", \\\"min_anchor_cov\\\": \\\"1\\\"}\", \"__page__\": null, \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"rna_strandness\": \"\\\"--fr\\\"\", \"input_bam\": \"null\", \"guide\": \"{\\\"use_guide\\\": \\\"no\\\", \\\"__current_case__\\\": 0}\"}", - "tool_version": "1.3.3.2", - "type": "tool", - "uuid": "c96d2ba9-5fb2-444f-afa1-8311a54460c0", - "workflow_outputs": [] - }, - "29": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "errors": null, - "id": 29, - "input_connections": { - "bamInput": { - "id": 22, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "bamCoverage", - "outputs": [ - { - "name": "outFileName", - "type": "bigwig" - } - ], - "position": { - "left": 670, - "top": 610 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "3033c3fba046", - "name": "deeptools_bam_coverage", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"outFileFormat\": \"\\\"bigwig\\\"\", \"region\": \"\\\"\\\"\", \"bamInput\": \"null\", \"binSize\": \"\\\"1\\\"\", \"scaling\": \"{\\\"effectiveGenomeSize\\\": {\\\"effectiveGenomeSize_opt\\\": \\\"2304947926\\\", \\\"__current_case__\\\": 6}, \\\"type\\\": \\\"1x\\\", \\\"__current_case__\\\": 4}\", \"advancedOpt\": \"{\\\"ignoreDuplicates\\\": \\\"false\\\", \\\"centerReads\\\": \\\"false\\\", \\\"ignoreForNormalization\\\": \\\"\\\", \\\"minFragmentLength\\\": \\\"0\\\", \\\"minMappingQuality\\\": \\\"1\\\", \\\"MNase\\\": \\\"false\\\", \\\"samFlagInclude\\\": \\\"\\\", \\\"filterRNAstrand\\\": \\\"forward\\\", \\\"Offset\\\": \\\"\\\", \\\"smoothLength\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"__current_case__\\\": 1, \\\"samFlagExclude\\\": \\\"\\\", \\\"doExtendCustom\\\": {\\\"__current_case__\\\": 0, \\\"doExtend\\\": \\\"no\\\"}, \\\"skipNAs\\\": \\\"false\\\", \\\"scaleFactor\\\": \\\"1.0\\\", \\\"blackListFileName\\\": null, \\\"maxFragmentLength\\\": \\\"0\\\"}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "e2b0c494-a05a-4fd7-9d32-97f466fe3bcf", - "workflow_outputs": [] - }, - "3": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 3, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "G1E_rep2_reverse_read" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 370 - }, - "tool_id": null, - "tool_state": "{\"name\": \"G1E_rep2_reverse_read\"}", - "tool_version": null, - "type": "data_input", - "uuid": "4d89fd77-a8ae-41c8-8dfe-e9446fdeaddb", - "workflow_outputs": [] - }, - "30": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "errors": null, - "id": 30, - "input_connections": { - "bamInput": { - "id": 22, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "bamCoverage", - "outputs": [ - { - "name": "outFileName", - "type": "bigwig" - } - ], - "position": { - "left": 670, - "top": 1090 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "3033c3fba046", - "name": "deeptools_bam_coverage", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"outFileFormat\": \"\\\"bigwig\\\"\", \"region\": \"\\\"\\\"\", \"bamInput\": \"null\", \"binSize\": \"\\\"1\\\"\", \"scaling\": \"{\\\"effectiveGenomeSize\\\": {\\\"effectiveGenomeSize_opt\\\": \\\"2304947926\\\", \\\"__current_case__\\\": 6}, \\\"type\\\": \\\"1x\\\", \\\"__current_case__\\\": 4}\", \"advancedOpt\": \"{\\\"ignoreDuplicates\\\": \\\"false\\\", \\\"centerReads\\\": \\\"false\\\", \\\"ignoreForNormalization\\\": \\\"\\\", \\\"minFragmentLength\\\": \\\"0\\\", \\\"minMappingQuality\\\": \\\"1\\\", \\\"MNase\\\": \\\"false\\\", \\\"samFlagInclude\\\": \\\"\\\", \\\"filterRNAstrand\\\": \\\"reverse\\\", \\\"Offset\\\": \\\"\\\", \\\"smoothLength\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"__current_case__\\\": 1, \\\"samFlagExclude\\\": \\\"\\\", \\\"doExtendCustom\\\": {\\\"__current_case__\\\": 0, \\\"doExtend\\\": \\\"no\\\"}, \\\"skipNAs\\\": \\\"false\\\", \\\"scaleFactor\\\": \\\"1.0\\\", \\\"blackListFileName\\\": null, \\\"maxFragmentLength\\\": \\\"0\\\"}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "b4c95c39-273b-4138-bbad-8e46a3adfaae", - "workflow_outputs": [] - }, - "31": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.3.2", - "errors": null, - "id": 31, - "input_connections": { - "input_bam": { - "id": 23, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "StringTie", - "outputs": [ - { - "name": "output_gtf", - "type": "gtf" - }, - { - "name": "gene_abundance_estimation", - "type": "gtf" - }, - { - "name": "coverage", - "type": "gtf" - }, - { - "name": "exon_expression", - "type": "tabular" - }, - { - "name": "intron_expression", - "type": "tabular" - }, - { - "name": "transcript_expression", - "type": "tabular" - }, - { - "name": "exon_transcript_mapping", - "type": "tabular" - }, - { - "name": "intron_transcript_mapping", - "type": "tabular" - }, - { - "name": "gene_counts", - "type": "tabular" - }, - { - "name": "transcript_counts", - "type": "tabular" - }, - { - "name": "legend", - "type": "tabular" - } - ], - "position": { - "left": 670, - "top": 250 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.3.2", - "tool_shed_repository": { - "changeset_revision": "eafd5dc95228", - "name": "stringtie", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": \"{\\\"min_bundle_cov\\\": \\\"2\\\", \\\"min_tlen\\\": \\\"200\\\", \\\"bdist\\\": \\\"50\\\", \\\"multi_mapping\\\": \\\"false\\\", \\\"abundance_estimation\\\": \\\"false\\\", \\\"fraction\\\": \\\"0.15\\\", \\\"disable_trimming\\\": \\\"false\\\", \\\"omit_sequences\\\": \\\"\\\", \\\"name_prefix\\\": \\\"\\\", \\\"min_anchor_len\\\": \\\"10\\\", \\\"bundle_fraction\\\": \\\"0.95\\\", \\\"min_anchor_cov\\\": \\\"1\\\"}\", \"__page__\": null, \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"rna_strandness\": \"\\\"--fr\\\"\", \"input_bam\": \"null\", \"guide\": \"{\\\"use_guide\\\": \\\"no\\\", \\\"__current_case__\\\": 0}\"}", - "tool_version": "1.3.3.2", - "type": "tool", - "uuid": "4c15f586-8fe3-4dca-94fe-2ca0205ec76e", - "workflow_outputs": [] - }, - "32": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "errors": null, - "id": 32, - "input_connections": { - "bamInput": { - "id": 23, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "bamCoverage", - "outputs": [ - { - "name": "outFileName", - "type": "bigwig" - } - ], - "position": { - "left": 670, - "top": 730 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "3033c3fba046", - "name": "deeptools_bam_coverage", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"outFileFormat\": \"\\\"bigwig\\\"\", \"region\": \"\\\"\\\"\", \"bamInput\": \"null\", \"binSize\": \"\\\"1\\\"\", \"scaling\": \"{\\\"effectiveGenomeSize\\\": {\\\"effectiveGenomeSize_opt\\\": \\\"2304947926\\\", \\\"__current_case__\\\": 6}, \\\"type\\\": \\\"1x\\\", \\\"__current_case__\\\": 4}\", \"advancedOpt\": \"{\\\"ignoreDuplicates\\\": \\\"false\\\", \\\"centerReads\\\": \\\"false\\\", \\\"ignoreForNormalization\\\": \\\"\\\", \\\"minFragmentLength\\\": \\\"0\\\", \\\"minMappingQuality\\\": \\\"1\\\", \\\"MNase\\\": \\\"false\\\", \\\"samFlagInclude\\\": \\\"\\\", \\\"filterRNAstrand\\\": \\\"forward\\\", \\\"Offset\\\": \\\"\\\", \\\"smoothLength\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"__current_case__\\\": 1, \\\"samFlagExclude\\\": \\\"\\\", \\\"doExtendCustom\\\": {\\\"__current_case__\\\": 0, \\\"doExtend\\\": \\\"no\\\"}, \\\"skipNAs\\\": \\\"false\\\", \\\"scaleFactor\\\": \\\"1.0\\\", \\\"blackListFileName\\\": null, \\\"maxFragmentLength\\\": \\\"0\\\"}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "9a7a8ac0-a980-4b19-91d8-a775af979957", - "workflow_outputs": [] - }, - "33": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "errors": null, - "id": 33, - "input_connections": { - "bamInput": { - "id": 23, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "bamCoverage", - "outputs": [ - { - "name": "outFileName", - "type": "bigwig" - } - ], - "position": { - "left": 670, - "top": 1210 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "3033c3fba046", - "name": "deeptools_bam_coverage", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"outFileFormat\": \"\\\"bigwig\\\"\", \"region\": \"\\\"\\\"\", \"bamInput\": \"null\", \"binSize\": \"\\\"1\\\"\", \"scaling\": \"{\\\"effectiveGenomeSize\\\": {\\\"effectiveGenomeSize_opt\\\": \\\"2304947926\\\", \\\"__current_case__\\\": 6}, \\\"type\\\": \\\"1x\\\", \\\"__current_case__\\\": 4}\", \"advancedOpt\": \"{\\\"ignoreDuplicates\\\": \\\"false\\\", \\\"centerReads\\\": \\\"false\\\", \\\"ignoreForNormalization\\\": \\\"\\\", \\\"minFragmentLength\\\": \\\"0\\\", \\\"minMappingQuality\\\": \\\"1\\\", \\\"MNase\\\": \\\"false\\\", \\\"samFlagInclude\\\": \\\"\\\", \\\"filterRNAstrand\\\": \\\"reverse\\\", \\\"Offset\\\": \\\"\\\", \\\"smoothLength\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"__current_case__\\\": 1, \\\"samFlagExclude\\\": \\\"\\\", \\\"doExtendCustom\\\": {\\\"__current_case__\\\": 0, \\\"doExtend\\\": \\\"no\\\"}, \\\"skipNAs\\\": \\\"false\\\", \\\"scaleFactor\\\": \\\"1.0\\\", \\\"blackListFileName\\\": null, \\\"maxFragmentLength\\\": \\\"0\\\"}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "cac5762b-01b2-492e-ab4a-ed6ca63b65de", - "workflow_outputs": [] - }, - "34": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.3.2", - "errors": null, - "id": 34, - "input_connections": { - "input_bam": { - "id": 24, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "StringTie", - "outputs": [ - { - "name": "output_gtf", - "type": "gtf" - }, - { - "name": "gene_abundance_estimation", - "type": "gtf" - }, - { - "name": "coverage", - "type": "gtf" - }, - { - "name": "exon_expression", - "type": "tabular" - }, - { - "name": "intron_expression", - "type": "tabular" - }, - { - "name": "transcript_expression", - "type": "tabular" - }, - { - "name": "exon_transcript_mapping", - "type": "tabular" - }, - { - "name": "intron_transcript_mapping", - "type": "tabular" - }, - { - "name": "gene_counts", - "type": "tabular" - }, - { - "name": "transcript_counts", - "type": "tabular" - }, - { - "name": "legend", - "type": "tabular" - } - ], - "position": { - "left": 670, - "top": 370 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.3.2", - "tool_shed_repository": { - "changeset_revision": "eafd5dc95228", - "name": "stringtie", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"adv\": \"{\\\"min_bundle_cov\\\": \\\"2\\\", \\\"min_tlen\\\": \\\"200\\\", \\\"bdist\\\": \\\"50\\\", \\\"multi_mapping\\\": \\\"false\\\", \\\"abundance_estimation\\\": \\\"false\\\", \\\"fraction\\\": \\\"0.15\\\", \\\"disable_trimming\\\": \\\"false\\\", \\\"omit_sequences\\\": \\\"\\\", \\\"name_prefix\\\": \\\"\\\", \\\"min_anchor_len\\\": \\\"10\\\", \\\"bundle_fraction\\\": \\\"0.95\\\", \\\"min_anchor_cov\\\": \\\"1\\\"}\", \"__page__\": null, \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"rna_strandness\": \"\\\"--fr\\\"\", \"input_bam\": \"null\", \"guide\": \"{\\\"use_guide\\\": \\\"no\\\", \\\"__current_case__\\\": 0}\"}", - "tool_version": "1.3.3.2", - "type": "tool", - "uuid": "1538c29a-305e-454e-801c-e4501fb326b1", - "workflow_outputs": [] - }, - "35": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "errors": null, - "id": 35, - "input_connections": { - "bamInput": { - "id": 24, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "bamCoverage", - "outputs": [ - { - "name": "outFileName", - "type": "bigwig" - } - ], - "position": { - "left": 670, - "top": 850 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "3033c3fba046", - "name": "deeptools_bam_coverage", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"outFileFormat\": \"\\\"bigwig\\\"\", \"region\": \"\\\"\\\"\", \"bamInput\": \"null\", \"binSize\": \"\\\"1\\\"\", \"scaling\": \"{\\\"effectiveGenomeSize\\\": {\\\"effectiveGenomeSize_opt\\\": \\\"2304947926\\\", \\\"__current_case__\\\": 6}, \\\"type\\\": \\\"1x\\\", \\\"__current_case__\\\": 4}\", \"advancedOpt\": \"{\\\"ignoreDuplicates\\\": \\\"false\\\", \\\"centerReads\\\": \\\"false\\\", \\\"ignoreForNormalization\\\": \\\"\\\", \\\"minFragmentLength\\\": \\\"0\\\", \\\"minMappingQuality\\\": \\\"1\\\", \\\"MNase\\\": \\\"false\\\", \\\"samFlagInclude\\\": \\\"\\\", \\\"filterRNAstrand\\\": \\\"forward\\\", \\\"Offset\\\": \\\"\\\", \\\"smoothLength\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"__current_case__\\\": 1, \\\"samFlagExclude\\\": \\\"\\\", \\\"doExtendCustom\\\": {\\\"__current_case__\\\": 0, \\\"doExtend\\\": \\\"no\\\"}, \\\"skipNAs\\\": \\\"false\\\", \\\"scaleFactor\\\": \\\"1.0\\\", \\\"blackListFileName\\\": null, \\\"maxFragmentLength\\\": \\\"0\\\"}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "63c35755-3978-4c47-9063-bd06737ccafc", - "workflow_outputs": [] - }, - "36": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "errors": null, - "id": 36, - "input_connections": { - "bamInput": { - "id": 24, - "output_name": "output_alignments" - } - }, - "inputs": [], - "label": null, - "name": "bamCoverage", - "outputs": [ - { - "name": "outFileName", - "type": "bigwig" - } - ], - "position": { - "left": 670, - "top": 1330 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.0.2.0", - "tool_shed_repository": { - "changeset_revision": "3033c3fba046", - "name": "deeptools_bam_coverage", - "owner": "bgruening", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"outFileFormat\": \"\\\"bigwig\\\"\", \"region\": \"\\\"\\\"\", \"bamInput\": \"null\", \"binSize\": \"\\\"1\\\"\", \"scaling\": \"{\\\"effectiveGenomeSize\\\": {\\\"effectiveGenomeSize_opt\\\": \\\"2304947926\\\", \\\"__current_case__\\\": 6}, \\\"type\\\": \\\"1x\\\", \\\"__current_case__\\\": 4}\", \"advancedOpt\": \"{\\\"ignoreDuplicates\\\": \\\"false\\\", \\\"centerReads\\\": \\\"false\\\", \\\"ignoreForNormalization\\\": \\\"\\\", \\\"minFragmentLength\\\": \\\"0\\\", \\\"minMappingQuality\\\": \\\"1\\\", \\\"MNase\\\": \\\"false\\\", \\\"samFlagInclude\\\": \\\"\\\", \\\"filterRNAstrand\\\": \\\"reverse\\\", \\\"Offset\\\": \\\"\\\", \\\"smoothLength\\\": \\\"\\\", \\\"showAdvancedOpt\\\": \\\"yes\\\", \\\"__current_case__\\\": 1, \\\"samFlagExclude\\\": \\\"\\\", \\\"doExtendCustom\\\": {\\\"__current_case__\\\": 0, \\\"doExtend\\\": \\\"no\\\"}, \\\"skipNAs\\\": \\\"false\\\", \\\"scaleFactor\\\": \\\"1.0\\\", \\\"blackListFileName\\\": null, \\\"maxFragmentLength\\\": \\\"0\\\"}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"__rerun_remap_job_id__\": null}", - "tool_version": "3.0.2.0", - "type": "tool", - "uuid": "dbe2b8a3-bc6a-461c-8ca3-06b3966edbdd", - "workflow_outputs": [] - }, - "37": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie_merge/1.3.3", - "errors": null, - "id": 37, - "input_connections": { - "guide_gff": { - "id": 8, - "output_name": "output" - }, - "input_gtf": [ - { - "id": 31, - "output_name": "output_gtf" - }, - { - "id": 34, - "output_name": "output_gtf" - }, - { + "a_galaxy_workflow": "true", + "annotation": "De novo transcriptome reconstruction with RNA-Seq", + "format-version": "0.1", + "name": "De novo transcriptome reconstruction with RNA-Seq", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "G1E_rep1_forward_read" + } + ], + "label": "G1E_rep1_forward_read", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 290 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "1c887335-aab6-4cba-b42c-245709f52480", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "58b0d678-aab8-4e89-9f22-2638b2b587e9" + } + ] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "G1E_rep1_reverse_read" + } + ], + "label": "G1E_rep1_reverse_read", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 419 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "3722470f-b8c8-4def-9cb1-8a151b4013e7", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "8cfef7f7-d925-4f92-bb80-d5ec340f0524" + } + ] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "G1E_rep2_forward_read" + } + ], + "label": "G1E_rep2_forward_read", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 548 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "4e1331e5-07c7-4156-8b13-5f2622bbc01e", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "c843315e-60a3-46a7-ae29-ed9d97270cff" + } + ] + }, + "3": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 3, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "G1E_rep2_reverse_read" + } + ], + "label": "G1E_rep2_reverse_read", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 677 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "06814797-9497-436e-bddc-82b22dd2873c", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "5fd7967a-4a00-4d7b-9a62-7a8b0cf0a478" + } + ] + }, + "4": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 4, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "Megakaryocyte_rep1_forward_read" + } + ], + "label": "Megakaryocyte_rep1_forward_read", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 806 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "92aa4ae0-48ec-4bf3-a67d-f6ec80df2684", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "2a6f1fbe-2895-4083-85f8-93237ecce594" + } + ] + }, + "5": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 5, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "Megakaryocyte_rep1_reverse_read" + } + ], + "label": "Megakaryocyte_rep1_reverse_read", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 935 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "997ad557-f4ad-4438-bf9b-5febe42df714", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "2c37da60-ac5e-4149-8905-53be33257156" + } + ] + }, + "6": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 6, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "Megakaryocyte_rep2_forward_read" + } + ], + "label": "Megakaryocyte_rep2_forward_read", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 1064 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "724e4a6c-1f6c-493e-b994-7a2a2978c675", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "9edf754e-c3d8-499b-9269-4686133c640f" + } + ] + }, + "7": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 7, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "Megakaryocyte_rep2_reverse_read" + } + ], + "label": "Megakaryocyte_rep2_reverse_read", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 1193 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "5a3c7b9a-ed6b-434e-b8b4-a001229ea40c", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "1fc42c4e-b960-44cd-b1e5-600341e1988f" + } + ] + }, + "8": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 8, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "RefSeq_reference_GTF" + } + ], + "label": "RefSeq_reference_GTF", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 1322 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "e828db47-2ad6-471d-b20e-a12b417adf5f", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "8bdd01c7-48df-41f1-aaf1-87f318e4e380" + } + ] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 9, + "input_connections": { + "input_file": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 450, + "top": 290 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "6d2ea23f-a8a9-499b-929c-47fce09e47a8", + "workflow_outputs": [] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 10, + "input_connections": { + "input_file": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 450, + "top": 590 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "f281aa57-2179-4e83-964c-d55dc7604459", + "workflow_outputs": [] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.38.0", + "errors": null, + "id": 11, + "input_connections": { + "readtype|fastq_r1_in": { + "id": 0, + "output_name": "output" + }, + "readtype|fastq_r2_in": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Trimmomatic", + "outputs": [ + { + "name": "fastq_out_r1_paired", + "type": "input" + }, + { + "name": "fastq_out_r2_paired", + "type": "input" + }, + { + "name": "fastq_out_r1_unpaired", + "type": "input" + }, + { + "name": "fastq_out_r2_unpaired", + "type": "input" + } + ], + "position": { + "left": 450, + "top": 890 + }, + "post_job_actions": { + "HideDatasetActionfastq_out_r1_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r1_paired" + }, + "HideDatasetActionfastq_out_r1_unpaired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r1_unpaired" + }, + "HideDatasetActionfastq_out_r2_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r2_paired" + }, + "HideDatasetActionfastq_out_r2_unpaired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r2_unpaired" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.38.0", + "tool_shed_repository": { + "changeset_revision": "898b67846b47", + "name": "trimmomatic", + "owner": "pjbriggs", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"operations\": [{\"__index__\": 0, \"operation\": {\"window_size\": \"4\", \"name\": \"SLIDINGWINDOW\", \"__current_case__\": 0, \"required_quality\": \"20\"}}], \"__page__\": null, \"output_logs\": \"false\", \"output_err\": \"false\", \"__rerun_remap_job_id__\": null, \"readtype\": {\"single_or_paired\": \"pair_of_files\", \"fastq_r1_in\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"fastq_r2_in\": {\"__class__\": \"ConnectedValue\"}}, \"illuminaclip\": {\"do_illuminaclip\": \"false\", \"__current_case__\": 1}}", + "tool_version": "0.38.0", + "type": "tool", + "uuid": "16c06f57-e6d0-4c25-97be-d65076624070", + "workflow_outputs": [] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 12, + "input_connections": { + "input_file": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 450, + "top": 1150 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "05a92089-56b4-4a06-8220-36007afe9d57", + "workflow_outputs": [] + }, + "13": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 13, + "input_connections": { + "input_file": { + "id": 3, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 450, + "top": 1450 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "7211e7e0-fefb-474d-8e26-f282d9e886cd", + "workflow_outputs": [] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.38.0", + "errors": null, + "id": 14, + "input_connections": { + "readtype|fastq_r1_in": { + "id": 2, + "output_name": "output" + }, + "readtype|fastq_r2_in": { + "id": 3, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Trimmomatic", + "outputs": [ + { + "name": "fastq_out_r1_paired", + "type": "input" + }, + { + "name": "fastq_out_r2_paired", + "type": "input" + }, + { + "name": "fastq_out_r1_unpaired", + "type": "input" + }, + { + "name": "fastq_out_r2_unpaired", + "type": "input" + } + ], + "position": { + "left": 450, + "top": 1750 + }, + "post_job_actions": { + "HideDatasetActionfastq_out_r1_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r1_paired" + }, + "HideDatasetActionfastq_out_r1_unpaired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r1_unpaired" + }, + "HideDatasetActionfastq_out_r2_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r2_paired" + }, + "HideDatasetActionfastq_out_r2_unpaired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r2_unpaired" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.38.0", + "tool_shed_repository": { + "changeset_revision": "898b67846b47", + "name": "trimmomatic", + "owner": "pjbriggs", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"operations\": [{\"__index__\": 0, \"operation\": {\"window_size\": \"4\", \"name\": \"SLIDINGWINDOW\", \"__current_case__\": 0, \"required_quality\": \"20\"}}], \"__page__\": null, \"output_logs\": \"false\", \"output_err\": \"false\", \"__rerun_remap_job_id__\": null, \"readtype\": {\"single_or_paired\": \"pair_of_files\", \"fastq_r1_in\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"fastq_r2_in\": {\"__class__\": \"ConnectedValue\"}}, \"illuminaclip\": {\"do_illuminaclip\": \"false\", \"__current_case__\": 1}}", + "tool_version": "0.38.0", + "type": "tool", + "uuid": "3b018b22-9e7c-408f-b2ac-ca314c51f62b", + "workflow_outputs": [] + }, + "15": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 15, + "input_connections": { + "input_file": { + "id": 4, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 450, + "top": 2010 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "d2d8062f-98ac-469c-b204-d5601d3c9a5c", + "workflow_outputs": [] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 16, + "input_connections": { + "input_file": { + "id": 5, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 450, + "top": 2310 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "01813945-e169-49a0-a2c4-11de9cbee79e", + "workflow_outputs": [] + }, + "17": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.38.0", + "errors": null, + "id": 17, + "input_connections": { + "readtype|fastq_r1_in": { + "id": 4, + "output_name": "output" + }, + "readtype|fastq_r2_in": { + "id": 5, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Trimmomatic", + "outputs": [ + { + "name": "fastq_out_r1_paired", + "type": "input" + }, + { + "name": "fastq_out_r2_paired", + "type": "input" + }, + { + "name": "fastq_out_r1_unpaired", + "type": "input" + }, + { + "name": "fastq_out_r2_unpaired", + "type": "input" + } + ], + "position": { + "left": 450, + "top": 2610 + }, + "post_job_actions": { + "HideDatasetActionfastq_out_r1_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r1_paired" + }, + "HideDatasetActionfastq_out_r1_unpaired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r1_unpaired" + }, + "HideDatasetActionfastq_out_r2_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r2_paired" + }, + "HideDatasetActionfastq_out_r2_unpaired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r2_unpaired" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.38.0", + "tool_shed_repository": { + "changeset_revision": "898b67846b47", + "name": "trimmomatic", + "owner": "pjbriggs", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"operations\": [{\"__index__\": 0, \"operation\": {\"window_size\": \"4\", \"name\": \"SLIDINGWINDOW\", \"__current_case__\": 0, \"required_quality\": \"20\"}}], \"__page__\": null, \"output_logs\": \"false\", \"output_err\": \"false\", \"__rerun_remap_job_id__\": null, \"readtype\": {\"single_or_paired\": \"pair_of_files\", \"fastq_r1_in\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"fastq_r2_in\": {\"__class__\": \"ConnectedValue\"}}, \"illuminaclip\": {\"do_illuminaclip\": \"false\", \"__current_case__\": 1}}", + "tool_version": "0.38.0", + "type": "tool", + "uuid": "7c82667c-816f-4018-8cda-5664cd17194f", + "workflow_outputs": [] + }, + "18": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 18, + "input_connections": { + "input_file": { + "id": 6, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 450, + "top": 2870 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "80a6fe76-67da-454b-b8bd-8797236c7946", + "workflow_outputs": [] + }, + "19": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 19, + "input_connections": { + "input_file": { + "id": 7, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 450, + "top": 3170 + }, + "post_job_actions": { + "HideDatasetActionhtml_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "html_file" + }, + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "331cbef9-727e-4a74-93f2-d3ca9b6197a3", + "workflow_outputs": [] + }, + "20": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.38.0", + "errors": null, + "id": 20, + "input_connections": { + "readtype|fastq_r1_in": { + "id": 6, + "output_name": "output" + }, + "readtype|fastq_r2_in": { + "id": 7, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Trimmomatic", + "outputs": [ + { + "name": "fastq_out_r1_paired", + "type": "input" + }, + { + "name": "fastq_out_r2_paired", + "type": "input" + }, + { + "name": "fastq_out_r1_unpaired", + "type": "input" + }, + { + "name": "fastq_out_r2_unpaired", + "type": "input" + } + ], + "position": { + "left": 450, + "top": 3470 + }, + "post_job_actions": { + "HideDatasetActionfastq_out_r1_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r1_paired" + }, + "HideDatasetActionfastq_out_r1_unpaired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r1_unpaired" + }, + "HideDatasetActionfastq_out_r2_paired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r2_paired" + }, + "HideDatasetActionfastq_out_r2_unpaired": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "fastq_out_r2_unpaired" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/pjbriggs/trimmomatic/trimmomatic/0.38.0", + "tool_shed_repository": { + "changeset_revision": "898b67846b47", + "name": "trimmomatic", + "owner": "pjbriggs", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"operations\": [{\"__index__\": 0, \"operation\": {\"window_size\": \"4\", \"name\": \"SLIDINGWINDOW\", \"__current_case__\": 0, \"required_quality\": \"20\"}}], \"__page__\": null, \"output_logs\": \"false\", \"output_err\": \"false\", \"__rerun_remap_job_id__\": null, \"readtype\": {\"single_or_paired\": \"pair_of_files\", \"fastq_r1_in\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"fastq_r2_in\": {\"__class__\": \"ConnectedValue\"}}, \"illuminaclip\": {\"do_illuminaclip\": \"false\", \"__current_case__\": 1}}", + "tool_version": "0.38.0", + "type": "tool", + "uuid": "c6cb852e-2ef3-4351-b4d5-10054347dc30", + "workflow_outputs": [] + }, + "21": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0+galaxy5", + "errors": null, + "id": 21, + "input_connections": { + "library|input_1": { + "id": 11, + "output_name": "fastq_out_r1_paired" + }, + "library|input_2": { + "id": 11, + "output_name": "fastq_out_r2_paired" + } + }, + "inputs": [], + "label": null, + "name": "HISAT2", + "outputs": [ + { + "name": "output_alignments", + "type": "bam" + } + ], + "position": { + "left": 778, + "top": 290 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0+galaxy5", + "tool_shed_repository": { + "changeset_revision": "0c16cad5e03b", + "name": "hisat2", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"alignment_options\": {\"__current_case__\": 0, \"alignment_options_selector\": \"defaults\"}, \"output_options\": {\"output_options_selector\": \"defaults\", \"__current_case__\": 0}, \"other_options\": {\"other_options_selector\": \"defaults\", \"__current_case__\": 0}, \"scoring_options\": {\"scoring_options_selector\": \"defaults\", \"__current_case__\": 0}, \"spliced_options\": {\"coefficient\": \"0.0\", \"canonical_penalty\": \"0\", \"no_spliced_alignment_options\": {\"no_spliced_alignment\": \"\", \"__current_case__\": 1}, \"nc_function_type\": \"C\", \"constant_term\": \"0.0\", \"nc_coefficient\": \"1.0\", \"noncanonical_penalty\": \"3\", \"known_splice_gtf\": {\"__class__\": \"RuntimeValue\"}, \"nc_constant_term\": \"-8.0\", \"min_intron\": \"20\", \"function_type\": \"C\", \"__current_case__\": 1, \"notmplen\": \"false\", \"tma\": \"--dta\", \"max_intron\": \"500000\", \"spliced_options_selector\": \"advanced\", \"novel_splicesite_outfile\": \"false\"}, \"reporting_options\": {\"reporting_options_selector\": \"defaults\", \"__current_case__\": 0}, \"input_options\": {\"input_options_selector\": \"defaults\", \"__current_case__\": 0}}, \"__page__\": null, \"sum\": {\"new_summary\": \"false\", \"summary_file\": \"false\"}, \"library\": {\"rna_strandness\": \"FR\", \"input_2\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"input_1\": {\"__class__\": \"ConnectedValue\"}, \"type\": \"paired\", \"paired_options\": {\"paired_options_selector\": \"defaults\", \"__current_case__\": 0}}, \"reference_genome\": {\"source\": \"indexed\", \"__current_case__\": 0, \"index\": \"mm10\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "2.1.0+galaxy5", + "type": "tool", + "uuid": "47e82c2c-8015-4f9b-b52e-744dfa71663b", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_alignments", + "uuid": "5bb58c35-9471-4d5d-8641-8ed9ff17f2bc" + } + ] + }, + "22": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 22, + "input_connections": { + "input_file": { + "id": 11, + "output_name": "fastq_out_r1_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 778, + "top": 1090 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "cf6c24f8-d0da-4ee3-b2b6-35fe2b713cdc", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "41b1e0fe-cc76-4c56-a314-e605644ec7c8" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "b45e4668-08bb-4357-b365-3d3fc0192cd2" + } + ] + }, + "23": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 23, + "input_connections": { + "input_file": { + "id": 11, + "output_name": "fastq_out_r2_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 778, + "top": 1390 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "c768bbe0-3965-4da4-b049-1ddd225d2f7e", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "93faa429-8ff4-412a-9092-754e44a122a5" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "d70e0a34-5f4d-48e2-bced-272445267269" + } + ] + }, + "24": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0+galaxy5", + "errors": null, + "id": 24, + "input_connections": { + "library|input_1": { + "id": 14, + "output_name": "fastq_out_r1_paired" + }, + "library|input_2": { + "id": 14, + "output_name": "fastq_out_r2_paired" + } + }, + "inputs": [], + "label": null, + "name": "HISAT2", + "outputs": [ + { + "name": "output_alignments", + "type": "bam" + } + ], + "position": { + "left": 778, + "top": 490 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0+galaxy5", + "tool_shed_repository": { + "changeset_revision": "0c16cad5e03b", + "name": "hisat2", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"alignment_options\": {\"__current_case__\": 0, \"alignment_options_selector\": \"defaults\"}, \"output_options\": {\"output_options_selector\": \"defaults\", \"__current_case__\": 0}, \"other_options\": {\"other_options_selector\": \"defaults\", \"__current_case__\": 0}, \"scoring_options\": {\"scoring_options_selector\": \"defaults\", \"__current_case__\": 0}, \"spliced_options\": {\"coefficient\": \"0.0\", \"canonical_penalty\": \"0\", \"no_spliced_alignment_options\": {\"no_spliced_alignment\": \"\", \"__current_case__\": 1}, \"nc_function_type\": \"C\", \"constant_term\": \"0.0\", \"nc_coefficient\": \"1.0\", \"noncanonical_penalty\": \"3\", \"known_splice_gtf\": {\"__class__\": \"RuntimeValue\"}, \"nc_constant_term\": \"-8.0\", \"min_intron\": \"20\", \"function_type\": \"C\", \"__current_case__\": 1, \"notmplen\": \"false\", \"tma\": \"--dta\", \"max_intron\": \"500000\", \"spliced_options_selector\": \"advanced\", \"novel_splicesite_outfile\": \"false\"}, \"reporting_options\": {\"reporting_options_selector\": \"defaults\", \"__current_case__\": 0}, \"input_options\": {\"input_options_selector\": \"defaults\", \"__current_case__\": 0}}, \"__page__\": null, \"sum\": {\"new_summary\": \"false\", \"summary_file\": \"false\"}, \"library\": {\"rna_strandness\": \"FR\", \"input_2\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"input_1\": {\"__class__\": \"ConnectedValue\"}, \"type\": \"paired\", \"paired_options\": {\"paired_options_selector\": \"defaults\", \"__current_case__\": 0}}, \"reference_genome\": {\"source\": \"indexed\", \"__current_case__\": 0, \"index\": \"mm10\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "2.1.0+galaxy5", + "type": "tool", + "uuid": "7ced6c99-3501-4f2e-9109-30b1db74d056", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_alignments", + "uuid": "fb406cfe-34be-4c6a-be06-c5efd6f785ba" + } + ] + }, + "25": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, "id": 25, - "output_name": "output_gtf" - }, - { + "input_connections": { + "input_file": { + "id": 14, + "output_name": "fastq_out_r1_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 778, + "top": 1690 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "f5a2c061-1560-4c48-b34e-6f23d62e6a80", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "dc04a264-a7ff-444a-bb74-9448d9fd9311" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "811c9a2c-ebc4-4399-9fa8-186d15fadf04" + } + ] + }, + "26": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 26, + "input_connections": { + "input_file": { + "id": 14, + "output_name": "fastq_out_r2_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 778, + "top": 1990 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "adb607ce-5be3-4dcf-a981-d38144fa1679", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "4da3a94f-7d68-4c93-989d-a95b2286a343" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "854c4e5f-b2af-4c12-aefe-78f90e96f4d5" + } + ] + }, + "27": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0+galaxy5", + "errors": null, + "id": 27, + "input_connections": { + "library|input_1": { + "id": 17, + "output_name": "fastq_out_r1_paired" + }, + "library|input_2": { + "id": 17, + "output_name": "fastq_out_r2_paired" + } + }, + "inputs": [], + "label": null, + "name": "HISAT2", + "outputs": [ + { + "name": "output_alignments", + "type": "bam" + } + ], + "position": { + "left": 778, + "top": 690 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0+galaxy5", + "tool_shed_repository": { + "changeset_revision": "0c16cad5e03b", + "name": "hisat2", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"alignment_options\": {\"__current_case__\": 0, \"alignment_options_selector\": \"defaults\"}, \"output_options\": {\"output_options_selector\": \"defaults\", \"__current_case__\": 0}, \"other_options\": {\"other_options_selector\": \"defaults\", \"__current_case__\": 0}, \"scoring_options\": {\"scoring_options_selector\": \"defaults\", \"__current_case__\": 0}, \"spliced_options\": {\"coefficient\": \"0.0\", \"canonical_penalty\": \"0\", \"no_spliced_alignment_options\": {\"no_spliced_alignment\": \"\", \"__current_case__\": 1}, \"nc_function_type\": \"C\", \"constant_term\": \"0.0\", \"nc_coefficient\": \"1.0\", \"noncanonical_penalty\": \"3\", \"known_splice_gtf\": {\"__class__\": \"RuntimeValue\"}, \"nc_constant_term\": \"-8.0\", \"min_intron\": \"20\", \"function_type\": \"C\", \"__current_case__\": 1, \"notmplen\": \"false\", \"tma\": \"--dta\", \"max_intron\": \"500000\", \"spliced_options_selector\": \"advanced\", \"novel_splicesite_outfile\": \"false\"}, \"reporting_options\": {\"reporting_options_selector\": \"defaults\", \"__current_case__\": 0}, \"input_options\": {\"input_options_selector\": \"defaults\", \"__current_case__\": 0}}, \"__page__\": null, \"sum\": {\"new_summary\": \"false\", \"summary_file\": \"false\"}, \"library\": {\"rna_strandness\": \"FR\", \"input_2\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"input_1\": {\"__class__\": \"ConnectedValue\"}, \"type\": \"paired\", \"paired_options\": {\"paired_options_selector\": \"defaults\", \"__current_case__\": 0}}, \"reference_genome\": {\"source\": \"indexed\", \"__current_case__\": 0, \"index\": \"mm10\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "2.1.0+galaxy5", + "type": "tool", + "uuid": "49664070-ec4d-4077-82ae-856976b09f16", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_alignments", + "uuid": "0ef710de-cb6c-4502-83c5-f3c1fa3f4f77" + } + ] + }, + "28": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, "id": 28, - "output_name": "output_gtf" - } - ] - }, - "inputs": [], - "label": null, - "name": "StringTie merge", - "outputs": [ - { - "name": "out_gtf", - "type": "gtf" - } - ], - "position": { - "left": 890, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie_merge/1.3.3", - "tool_shed_repository": { - "changeset_revision": "eafd5dc95228", - "name": "stringtie", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"keep_introns\": \"\\\"false\\\"\", \"min_fpkm\": \"\\\"1.0\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"min_len\": \"\\\"50\\\"\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"guide_gff\": \"null\", \"min_cov\": \"\\\"0\\\"\", \"min_iso\": \"\\\"0.01\\\"\", \"min_tpm\": \"\\\"1.0\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"input_gtf\": \"null\", \"gap_len\": \"\\\"250\\\"\"}", - "tool_version": "1.3.3", - "type": "tool", - "uuid": "47307af1-9fd1-4936-a01e-ca9d660173e7", - "workflow_outputs": [] - }, - "38": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/gffcompare/gffcompare/0.9.8", - "errors": null, - "id": 38, - "input_connections": { - "annotation|reference_annotation": { - "id": 8, - "output_name": "output" - }, - "inputs": { - "id": 37, - "output_name": "out_gtf" - } - }, - "inputs": [], - "label": null, - "name": "GffCompare", - "outputs": [ - { - "name": "transcripts_stats", - "type": "txt" - }, - { - "name": "transcripts_loci", - "type": "tabular" - }, - { - "name": "transcripts_tracking", - "type": "tabular" - }, - { - "name": "transcripts_combined", - "type": "gtf" - }, - { - "name": "transcripts_annotated", - "type": "gtf" - } - ], - "position": { - "left": 1110, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/gffcompare/gffcompare/0.9.8", - "tool_shed_repository": { - "changeset_revision": "3c97c841a443", - "name": "gffcompare", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"seq_data\": \"{\\\"use_seq_data\\\": \\\"Yes\\\", \\\"seq_source\\\": {\\\"index_source\\\": \\\"cached\\\", \\\"index\\\": \\\"mm10\\\", \\\"__current_case__\\\": 0}, \\\"__current_case__\\\": 1}\", \"inputs\": \"null\", \"max_dist_group\": \"\\\"100\\\"\", \"__page__\": null, \"max_dist_exon\": \"\\\"100\\\"\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"discard_single_exon\": \"\\\"\\\"\", \"discard_intron_redundant_transfrags\": \"\\\"false\\\"\", \"annotation\": \"{\\\"reference_annotation\\\": null, \\\"use_ref_annotation\\\": \\\"Yes\\\", \\\"ignore_nonoverlapping_reference\\\": \\\"false\\\", \\\"__current_case__\\\": 0, \\\"ignore_nonoverlapping_transfrags\\\": \\\"false\\\"}\"}", - "tool_version": "0.9.8", - "type": "tool", - "uuid": "6292c087-6c93-435e-ab1f-348ce4bff2bb", - "workflow_outputs": [] - }, - "39": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.0.6", - "errors": null, - "id": 39, - "input_connections": { - "alignment": { - "id": 21, - "output_name": "output_alignments" - }, - "anno|reference_gene_sets": { - "id": 38, - "output_name": "transcripts_annotated" - } - }, - "inputs": [], - "label": null, - "name": "featureCounts", - "outputs": [ - { - "name": "output_medium", - "type": "tabular" - }, - { - "name": "output_short", - "type": "tabular" - }, - { - "name": "output_full", - "type": "tabular" - }, - { - "name": "output_summary", - "type": "tabular" - }, - { - "name": "output_feature_lengths", - "type": "tabular" - }, - { - "name": "output_jcounts", - "type": "tabular" - } - ], - "position": { - "left": 1330, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.0.6", - "tool_shed_repository": { - "changeset_revision": "92808b865dfb", - "name": "featurecounts", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"pe_parameters\": \"{\\\"only_both_ends\\\": \\\"false\\\", \\\"exclude_chimerics\\\": \\\"true\\\", \\\"fragment_counting_enabled\\\": {\\\"fragment_counting\\\": \\\"\\\", \\\"__current_case__\\\": 1}}\", \"format\": \"\\\"tabdel_short\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"strand_specificity\": \"\\\"1\\\"\", \"include_feature_length_file\": \"\\\"false\\\"\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"anno\": \"{\\\"anno_select\\\": \\\"history\\\", \\\"reference_gene_sets\\\": null, \\\"__current_case__\\\": 2}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"extended_parameters\": \"{\\\"gff_feature_attribute\\\": \\\"transcript_id\\\", \\\"exon_exon_junction_read_counting_enabled\\\": {\\\"__current_case__\\\": 1, \\\"count_exon_exon_junction_reads\\\": \\\"false\\\"}, \\\"read_extension_3p\\\": \\\"0\\\", \\\"frac_overlap_feature\\\": \\\"0\\\", \\\"min_overlap\\\": \\\"1\\\", \\\"read_extension_5p\\\": \\\"0\\\", \\\"contribute_to_multiple_features\\\": \\\"false\\\", \\\"frac_overlap\\\": \\\"0\\\", \\\"primary\\\": \\\"false\\\", \\\"count_split_alignments_only\\\": \\\"false\\\", \\\"by_read_group\\\": \\\"false\\\", \\\"ignore_dup\\\": \\\"false\\\", \\\"mapping_quality\\\": \\\"12\\\", \\\"summarization_level\\\": \\\"false\\\", \\\"largest_overlap\\\": \\\"false\\\", \\\"read_reduction\\\": \\\"\\\", \\\"multimapping_enabled\\\": {\\\"multimapping_counts\\\": \\\"\\\", \\\"__current_case__\\\": 1}, \\\"long_reads\\\": \\\"false\\\", \\\"gff_feature_type\\\": \\\"exon\\\"}\", \"alignment\": \"null\"}", - "tool_version": "1.6.0.6", - "type": "tool", - "uuid": "fc054e7c-a603-4aa6-b3cf-d2e1cd4d7be9", - "workflow_outputs": [] - }, - "4": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 4, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "Megakaryocyte_rep1_forward_read" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 490 - }, - "tool_id": null, - "tool_state": "{\"name\": \"Megakaryocyte_rep1_forward_read\"}", - "tool_version": null, - "type": "data_input", - "uuid": "41e16899-910c-4750-84cf-4bddc17437c2", - "workflow_outputs": [] - }, - "40": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.0.6", - "errors": null, - "id": 40, - "input_connections": { - "alignment": { - "id": 22, - "output_name": "output_alignments" - }, - "anno|reference_gene_sets": { - "id": 38, - "output_name": "transcripts_annotated" - } - }, - "inputs": [], - "label": null, - "name": "featureCounts", - "outputs": [ - { - "name": "output_medium", - "type": "tabular" - }, - { - "name": "output_short", - "type": "tabular" - }, - { - "name": "output_full", - "type": "tabular" - }, - { - "name": "output_summary", - "type": "tabular" - }, - { - "name": "output_feature_lengths", - "type": "tabular" - }, - { - "name": "output_jcounts", - "type": "tabular" - } - ], - "position": { - "left": 1330, - "top": 130 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.0.6", - "tool_shed_repository": { - "changeset_revision": "92808b865dfb", - "name": "featurecounts", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"pe_parameters\": \"{\\\"only_both_ends\\\": \\\"false\\\", \\\"exclude_chimerics\\\": \\\"true\\\", \\\"fragment_counting_enabled\\\": {\\\"fragment_counting\\\": \\\"\\\", \\\"__current_case__\\\": 1}}\", \"format\": \"\\\"tabdel_short\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"strand_specificity\": \"\\\"1\\\"\", \"include_feature_length_file\": \"\\\"false\\\"\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"anno\": \"{\\\"anno_select\\\": \\\"history\\\", \\\"reference_gene_sets\\\": null, \\\"__current_case__\\\": 2}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"extended_parameters\": \"{\\\"gff_feature_attribute\\\": \\\"transcript_id\\\", \\\"exon_exon_junction_read_counting_enabled\\\": {\\\"__current_case__\\\": 1, \\\"count_exon_exon_junction_reads\\\": \\\"false\\\"}, \\\"read_extension_3p\\\": \\\"0\\\", \\\"frac_overlap_feature\\\": \\\"0\\\", \\\"min_overlap\\\": \\\"1\\\", \\\"read_extension_5p\\\": \\\"0\\\", \\\"contribute_to_multiple_features\\\": \\\"false\\\", \\\"frac_overlap\\\": \\\"0\\\", \\\"primary\\\": \\\"false\\\", \\\"count_split_alignments_only\\\": \\\"false\\\", \\\"by_read_group\\\": \\\"false\\\", \\\"ignore_dup\\\": \\\"false\\\", \\\"mapping_quality\\\": \\\"12\\\", \\\"summarization_level\\\": \\\"false\\\", \\\"largest_overlap\\\": \\\"false\\\", \\\"read_reduction\\\": \\\"\\\", \\\"multimapping_enabled\\\": {\\\"multimapping_counts\\\": \\\"\\\", \\\"__current_case__\\\": 1}, \\\"long_reads\\\": \\\"false\\\", \\\"gff_feature_type\\\": \\\"exon\\\"}\", \"alignment\": \"null\"}", - "tool_version": "1.6.0.6", - "type": "tool", - "uuid": "a29ab182-8103-425e-86e8-d71a08277f7c", - "workflow_outputs": [] - }, - "41": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.0.6", - "errors": null, - "id": 41, - "input_connections": { - "alignment": { - "id": 23, - "output_name": "output_alignments" - }, - "anno|reference_gene_sets": { - "id": 38, - "output_name": "transcripts_annotated" - } - }, - "inputs": [], - "label": null, - "name": "featureCounts", - "outputs": [ - { - "name": "output_medium", - "type": "tabular" - }, - { - "name": "output_short", - "type": "tabular" - }, - { - "name": "output_full", - "type": "tabular" - }, - { - "name": "output_summary", - "type": "tabular" - }, - { - "name": "output_feature_lengths", - "type": "tabular" - }, - { - "name": "output_jcounts", - "type": "tabular" - } - ], - "position": { - "left": 1330, - "top": 250 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.0.6", - "tool_shed_repository": { - "changeset_revision": "92808b865dfb", - "name": "featurecounts", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"pe_parameters\": \"{\\\"only_both_ends\\\": \\\"false\\\", \\\"exclude_chimerics\\\": \\\"true\\\", \\\"fragment_counting_enabled\\\": {\\\"fragment_counting\\\": \\\"\\\", \\\"__current_case__\\\": 1}}\", \"format\": \"\\\"tabdel_short\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"strand_specificity\": \"\\\"1\\\"\", \"include_feature_length_file\": \"\\\"false\\\"\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"anno\": \"{\\\"anno_select\\\": \\\"history\\\", \\\"reference_gene_sets\\\": null, \\\"__current_case__\\\": 2}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"extended_parameters\": \"{\\\"gff_feature_attribute\\\": \\\"transcript_id\\\", \\\"exon_exon_junction_read_counting_enabled\\\": {\\\"__current_case__\\\": 1, \\\"count_exon_exon_junction_reads\\\": \\\"false\\\"}, \\\"read_extension_3p\\\": \\\"0\\\", \\\"frac_overlap_feature\\\": \\\"0\\\", \\\"min_overlap\\\": \\\"1\\\", \\\"read_extension_5p\\\": \\\"0\\\", \\\"contribute_to_multiple_features\\\": \\\"false\\\", \\\"frac_overlap\\\": \\\"0\\\", \\\"primary\\\": \\\"false\\\", \\\"count_split_alignments_only\\\": \\\"false\\\", \\\"by_read_group\\\": \\\"false\\\", \\\"ignore_dup\\\": \\\"false\\\", \\\"mapping_quality\\\": \\\"12\\\", \\\"summarization_level\\\": \\\"false\\\", \\\"largest_overlap\\\": \\\"false\\\", \\\"read_reduction\\\": \\\"\\\", \\\"multimapping_enabled\\\": {\\\"multimapping_counts\\\": \\\"\\\", \\\"__current_case__\\\": 1}, \\\"long_reads\\\": \\\"false\\\", \\\"gff_feature_type\\\": \\\"exon\\\"}\", \"alignment\": \"null\"}", - "tool_version": "1.6.0.6", - "type": "tool", - "uuid": "8b73ac2b-9e21-4cd3-bff2-ce0215d3a213", - "workflow_outputs": [] - }, - "42": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.0.6", - "errors": null, - "id": 42, - "input_connections": { - "alignment": { - "id": 24, - "output_name": "output_alignments" - }, - "anno|reference_gene_sets": { - "id": 38, - "output_name": "transcripts_annotated" - } - }, - "inputs": [], - "label": null, - "name": "featureCounts", - "outputs": [ - { - "name": "output_medium", - "type": "tabular" - }, - { - "name": "output_short", - "type": "tabular" - }, - { - "name": "output_full", - "type": "tabular" - }, - { - "name": "output_summary", - "type": "tabular" - }, - { - "name": "output_feature_lengths", - "type": "tabular" - }, - { - "name": "output_jcounts", - "type": "tabular" - } - ], - "position": { - "left": 1330, - "top": 370 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.0.6", - "tool_shed_repository": { - "changeset_revision": "92808b865dfb", - "name": "featurecounts", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"pe_parameters\": \"{\\\"only_both_ends\\\": \\\"false\\\", \\\"exclude_chimerics\\\": \\\"true\\\", \\\"fragment_counting_enabled\\\": {\\\"fragment_counting\\\": \\\"\\\", \\\"__current_case__\\\": 1}}\", \"format\": \"\\\"tabdel_short\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"strand_specificity\": \"\\\"1\\\"\", \"include_feature_length_file\": \"\\\"false\\\"\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"anno\": \"{\\\"anno_select\\\": \\\"history\\\", \\\"reference_gene_sets\\\": null, \\\"__current_case__\\\": 2}\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"extended_parameters\": \"{\\\"gff_feature_attribute\\\": \\\"transcript_id\\\", \\\"exon_exon_junction_read_counting_enabled\\\": {\\\"__current_case__\\\": 1, \\\"count_exon_exon_junction_reads\\\": \\\"false\\\"}, \\\"read_extension_3p\\\": \\\"0\\\", \\\"frac_overlap_feature\\\": \\\"0\\\", \\\"min_overlap\\\": \\\"1\\\", \\\"read_extension_5p\\\": \\\"0\\\", \\\"contribute_to_multiple_features\\\": \\\"false\\\", \\\"frac_overlap\\\": \\\"0\\\", \\\"primary\\\": \\\"false\\\", \\\"count_split_alignments_only\\\": \\\"false\\\", \\\"by_read_group\\\": \\\"false\\\", \\\"ignore_dup\\\": \\\"false\\\", \\\"mapping_quality\\\": \\\"12\\\", \\\"summarization_level\\\": \\\"false\\\", \\\"largest_overlap\\\": \\\"false\\\", \\\"read_reduction\\\": \\\"\\\", \\\"multimapping_enabled\\\": {\\\"multimapping_counts\\\": \\\"\\\", \\\"__current_case__\\\": 1}, \\\"long_reads\\\": \\\"false\\\", \\\"gff_feature_type\\\": \\\"exon\\\"}\", \"alignment\": \"null\"}", - "tool_version": "1.6.0.6", - "type": "tool", - "uuid": "02a66170-4c0c-4c1e-8073-ec626190390e", - "workflow_outputs": [] - }, - "43": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.2", - "errors": null, - "id": 43, - "input_connections": { - "rep_factorName_0|rep_factorLevel_0|countsFile": [ - { + "input_connections": { + "input_file": { + "id": 17, + "output_name": "fastq_out_r1_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 778, + "top": 2290 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "a7e3b025-5fb9-4c9c-a232-a10a2c80d835", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "63e1f1dd-70ab-469e-8bf6-966cfc7a84c6" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "2d555968-dc97-450f-99df-25eaa2368d9b" + } + ] + }, + "29": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 29, + "input_connections": { + "input_file": { + "id": 17, + "output_name": "fastq_out_r2_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 778, + "top": 2590 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "57898d1b-fd1d-452d-a78f-5f42d4961fcb", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "e0d035b4-c63f-4117-b15b-6106996e2546" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "f20d8a11-0740-47b6-94c2-3bbbb3bf56d9" + } + ] + }, + "30": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0+galaxy5", + "errors": null, + "id": 30, + "input_connections": { + "library|input_1": { + "id": 20, + "output_name": "fastq_out_r1_paired" + }, + "library|input_2": { + "id": 20, + "output_name": "fastq_out_r2_paired" + } + }, + "inputs": [], + "label": null, + "name": "HISAT2", + "outputs": [ + { + "name": "output_alignments", + "type": "bam" + } + ], + "position": { + "left": 778, + "top": 890 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/hisat2/hisat2/2.1.0+galaxy5", + "tool_shed_repository": { + "changeset_revision": "0c16cad5e03b", + "name": "hisat2", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"alignment_options\": {\"__current_case__\": 0, \"alignment_options_selector\": \"defaults\"}, \"output_options\": {\"output_options_selector\": \"defaults\", \"__current_case__\": 0}, \"other_options\": {\"other_options_selector\": \"defaults\", \"__current_case__\": 0}, \"scoring_options\": {\"scoring_options_selector\": \"defaults\", \"__current_case__\": 0}, \"spliced_options\": {\"coefficient\": \"0.0\", \"canonical_penalty\": \"0\", \"no_spliced_alignment_options\": {\"no_spliced_alignment\": \"\", \"__current_case__\": 1}, \"nc_function_type\": \"C\", \"constant_term\": \"0.0\", \"nc_coefficient\": \"1.0\", \"noncanonical_penalty\": \"3\", \"known_splice_gtf\": {\"__class__\": \"RuntimeValue\"}, \"nc_constant_term\": \"-8.0\", \"min_intron\": \"20\", \"function_type\": \"C\", \"__current_case__\": 1, \"notmplen\": \"false\", \"tma\": \"--dta\", \"max_intron\": \"500000\", \"spliced_options_selector\": \"advanced\", \"novel_splicesite_outfile\": \"false\"}, \"reporting_options\": {\"reporting_options_selector\": \"defaults\", \"__current_case__\": 0}, \"input_options\": {\"input_options_selector\": \"defaults\", \"__current_case__\": 0}}, \"__page__\": null, \"sum\": {\"new_summary\": \"false\", \"summary_file\": \"false\"}, \"library\": {\"rna_strandness\": \"FR\", \"input_2\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 1, \"input_1\": {\"__class__\": \"ConnectedValue\"}, \"type\": \"paired\", \"paired_options\": {\"paired_options_selector\": \"defaults\", \"__current_case__\": 0}}, \"reference_genome\": {\"source\": \"indexed\", \"__current_case__\": 0, \"index\": \"mm10\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "2.1.0+galaxy5", + "type": "tool", + "uuid": "e2ab9d1e-6b3e-43b8-9c62-57218aa7bc49", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_alignments", + "uuid": "5525e4aa-5ef7-46fe-bfbf-61eeff7471d6" + } + ] + }, + "31": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 31, + "input_connections": { + "input_file": { + "id": 20, + "output_name": "fastq_out_r1_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 778, + "top": 2890 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "38e24d6f-fe1b-4939-953a-452be1f51d09", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "21c23f17-d675-4e2a-8d1b-1ac6e167c556" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "c4a3e0be-83e2-4cb3-a9fc-4487f66eb7f4" + } + ] + }, + "32": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 32, + "input_connections": { + "input_file": { + "id": 20, + "output_name": "fastq_out_r2_paired" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 778, + "top": 3190 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": {\"__class__\": \"RuntimeValue\"}, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": {\"__class__\": \"RuntimeValue\"}, \"adapters\": {\"__class__\": \"RuntimeValue\"}, \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "e6a19a1f-e2cc-4160-911b-860d09cc1b8d", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "c11f2b2f-2859-40bd-83c5-162cf3986c0c" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "f77d32d9-c7c9-44f8-a268-e4020e322a17" + } + ] + }, + "33": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.6", + "errors": null, + "id": 33, + "input_connections": { + "input_bam": { + "id": 21, + "output_name": "output_alignments" + } + }, + "inputs": [], + "label": null, + "name": "StringTie", + "outputs": [ + { + "name": "output_gtf", + "type": "gtf" + } + ], + "position": { + "left": 1106, + "top": 290 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.6", + "tool_shed_repository": { + "changeset_revision": "eba36e001f45", + "name": "stringtie", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"min_bundle_cov\": \"2\", \"min_tlen\": \"200\", \"bdist\": \"50\", \"multi_mapping\": \"false\", \"abundance_estimation\": \"false\", \"fraction\": \"0.15\", \"disable_trimming\": \"false\", \"omit_sequences\": \"\", \"name_prefix\": \"\", \"min_anchor_len\": \"10\", \"bundle_fraction\": \"0.95\", \"min_anchor_cov\": \"1\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"rna_strandness\": \"--fr\", \"input_bam\": {\"__class__\": \"ConnectedValue\"}, \"guide\": {\"use_guide\": \"no\", \"__current_case__\": 0}}", + "tool_version": "1.3.6", + "type": "tool", + "uuid": "05be1a79-4ee1-4205-9f53-1e59cc483797", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_gtf", + "uuid": "8df32560-faae-49df-898a-02f664bda16a" + } + ] + }, + "34": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "errors": null, + "id": 34, + "input_connections": { + "bamInput": { + "id": 21, + "output_name": "output_alignments" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool bamCoverage", + "name": "advancedOpt" + } + ], + "label": null, + "name": "bamCoverage", + "outputs": [ + { + "name": "outFileName", + "type": "bigwig" + } + ], + "position": { + "left": 1106, + "top": 850 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "tool_shed_repository": { + "changeset_revision": "7a7fd0f5f15d", + "name": "deeptools_bam_coverage", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"exactScaling\": \"false\", \"outFileFormat\": \"bigwig\", \"__page__\": null, \"region\": \"\", \"bamInput\": {\"__class__\": \"ConnectedValue\"}, \"binSize\": \"1\", \"scaling\": {\"effectiveGenomeSize\": {\"effectiveGenomeSize_opt\": \"2304947926\", \"__current_case__\": 6}, \"type\": \"1x\", \"__current_case__\": 4}, \"advancedOpt\": {\"ignoreDuplicates\": \"false\", \"centerReads\": \"false\", \"ignoreForNormalization\": \"\", \"minFragmentLength\": \"0\", \"minMappingQuality\": \"1\", \"MNase\": \"false\", \"samFlagInclude\": \"\", \"filterRNAstrand\": \"forward\", \"Offset\": \"\", \"smoothLength\": \"\", \"showAdvancedOpt\": \"yes\", \"__current_case__\": 1, \"samFlagExclude\": \"\", \"doExtendCustom\": {\"__current_case__\": 0, \"doExtend\": \"no\"}, \"skipNAs\": \"false\", \"scaleFactor\": \"1.0\", \"blackListFileName\": {\"__class__\": \"RuntimeValue\"}, \"maxFragmentLength\": \"0\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.3.0.0.0", + "type": "tool", + "uuid": "9df5e150-d61c-4859-b1f8-edfcbef9ec49", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "a8de282b-03c0-4ead-939d-8f337804b292" + } + ] + }, + "35": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "errors": null, + "id": 35, + "input_connections": { + "bamInput": { + "id": 21, + "output_name": "output_alignments" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool bamCoverage", + "name": "advancedOpt" + } + ], + "label": null, + "name": "bamCoverage", + "outputs": [ + { + "name": "outFileName", + "type": "bigwig" + } + ], + "position": { + "left": 1106, + "top": 1530 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "tool_shed_repository": { + "changeset_revision": "7a7fd0f5f15d", + "name": "deeptools_bam_coverage", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"exactScaling\": \"false\", \"outFileFormat\": \"bigwig\", \"__page__\": null, \"region\": \"\", \"bamInput\": {\"__class__\": \"ConnectedValue\"}, \"binSize\": \"1\", \"scaling\": {\"effectiveGenomeSize\": {\"effectiveGenomeSize_opt\": \"2304947926\", \"__current_case__\": 6}, \"type\": \"1x\", \"__current_case__\": 4}, \"advancedOpt\": {\"ignoreDuplicates\": \"false\", \"centerReads\": \"false\", \"ignoreForNormalization\": \"\", \"minFragmentLength\": \"0\", \"minMappingQuality\": \"1\", \"MNase\": \"false\", \"samFlagInclude\": \"\", \"filterRNAstrand\": \"reverse\", \"Offset\": \"\", \"smoothLength\": \"\", \"showAdvancedOpt\": \"yes\", \"__current_case__\": 1, \"samFlagExclude\": \"\", \"doExtendCustom\": {\"__current_case__\": 0, \"doExtend\": \"no\"}, \"skipNAs\": \"false\", \"scaleFactor\": \"1.0\", \"blackListFileName\": {\"__class__\": \"RuntimeValue\"}, \"maxFragmentLength\": \"0\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.3.0.0.0", + "type": "tool", + "uuid": "1a9a4e17-62a8-40c5-b9bd-f0992e7cb134", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "8b7bb1f6-2ae9-4deb-a902-7769b1657ecf" + } + ] + }, + "36": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.6", + "errors": null, + "id": 36, + "input_connections": { + "input_bam": { + "id": 24, + "output_name": "output_alignments" + } + }, + "inputs": [], + "label": null, + "name": "StringTie", + "outputs": [ + { + "name": "output_gtf", + "type": "gtf" + } + ], + "position": { + "left": 1106, + "top": 430 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.6", + "tool_shed_repository": { + "changeset_revision": "eba36e001f45", + "name": "stringtie", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"min_bundle_cov\": \"2\", \"min_tlen\": \"200\", \"bdist\": \"50\", \"multi_mapping\": \"false\", \"abundance_estimation\": \"false\", \"fraction\": \"0.15\", \"disable_trimming\": \"false\", \"omit_sequences\": \"\", \"name_prefix\": \"\", \"min_anchor_len\": \"10\", \"bundle_fraction\": \"0.95\", \"min_anchor_cov\": \"1\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"rna_strandness\": \"--fr\", \"input_bam\": {\"__class__\": \"ConnectedValue\"}, \"guide\": {\"use_guide\": \"no\", \"__current_case__\": 0}}", + "tool_version": "1.3.6", + "type": "tool", + "uuid": "6feba9a1-0cdb-41e6-9f7e-d2ab4b3f6adc", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_gtf", + "uuid": "7496fd31-357e-4884-b95e-d3e6ddf47c51" + } + ] + }, + "37": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "errors": null, + "id": 37, + "input_connections": { + "bamInput": { + "id": 24, + "output_name": "output_alignments" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool bamCoverage", + "name": "advancedOpt" + } + ], + "label": null, + "name": "bamCoverage", + "outputs": [ + { + "name": "outFileName", + "type": "bigwig" + } + ], + "position": { + "left": 1106, + "top": 1020 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "tool_shed_repository": { + "changeset_revision": "7a7fd0f5f15d", + "name": "deeptools_bam_coverage", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"exactScaling\": \"false\", \"outFileFormat\": \"bigwig\", \"__page__\": null, \"region\": \"\", \"bamInput\": {\"__class__\": \"ConnectedValue\"}, \"binSize\": \"1\", \"scaling\": {\"effectiveGenomeSize\": {\"effectiveGenomeSize_opt\": \"2304947926\", \"__current_case__\": 6}, \"type\": \"1x\", \"__current_case__\": 4}, \"advancedOpt\": {\"ignoreDuplicates\": \"false\", \"centerReads\": \"false\", \"ignoreForNormalization\": \"\", \"minFragmentLength\": \"0\", \"minMappingQuality\": \"1\", \"MNase\": \"false\", \"samFlagInclude\": \"\", \"filterRNAstrand\": \"forward\", \"Offset\": \"\", \"smoothLength\": \"\", \"showAdvancedOpt\": \"yes\", \"__current_case__\": 1, \"samFlagExclude\": \"\", \"doExtendCustom\": {\"__current_case__\": 0, \"doExtend\": \"no\"}, \"skipNAs\": \"false\", \"scaleFactor\": \"1.0\", \"blackListFileName\": {\"__class__\": \"RuntimeValue\"}, \"maxFragmentLength\": \"0\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.3.0.0.0", + "type": "tool", + "uuid": "dfb2f1aa-f121-4dba-9105-a177ef5722ff", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "0b03495f-c57b-4a4b-959e-59bfcb3dafd0" + } + ] + }, + "38": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "errors": null, + "id": 38, + "input_connections": { + "bamInput": { + "id": 24, + "output_name": "output_alignments" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool bamCoverage", + "name": "advancedOpt" + } + ], + "label": null, + "name": "bamCoverage", + "outputs": [ + { + "name": "outFileName", + "type": "bigwig" + } + ], + "position": { + "left": 1106, + "top": 1700 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "tool_shed_repository": { + "changeset_revision": "7a7fd0f5f15d", + "name": "deeptools_bam_coverage", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"exactScaling\": \"false\", \"outFileFormat\": \"bigwig\", \"__page__\": null, \"region\": \"\", \"bamInput\": {\"__class__\": \"ConnectedValue\"}, \"binSize\": \"1\", \"scaling\": {\"effectiveGenomeSize\": {\"effectiveGenomeSize_opt\": \"2304947926\", \"__current_case__\": 6}, \"type\": \"1x\", \"__current_case__\": 4}, \"advancedOpt\": {\"ignoreDuplicates\": \"false\", \"centerReads\": \"false\", \"ignoreForNormalization\": \"\", \"minFragmentLength\": \"0\", \"minMappingQuality\": \"1\", \"MNase\": \"false\", \"samFlagInclude\": \"\", \"filterRNAstrand\": \"reverse\", \"Offset\": \"\", \"smoothLength\": \"\", \"showAdvancedOpt\": \"yes\", \"__current_case__\": 1, \"samFlagExclude\": \"\", \"doExtendCustom\": {\"__current_case__\": 0, \"doExtend\": \"no\"}, \"skipNAs\": \"false\", \"scaleFactor\": \"1.0\", \"blackListFileName\": {\"__class__\": \"RuntimeValue\"}, \"maxFragmentLength\": \"0\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.3.0.0.0", + "type": "tool", + "uuid": "d00922af-38a0-450b-81e9-5f94a8f4f5ba", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "ac07c391-dfc6-4fa7-bac9-2ac77095814a" + } + ] + }, + "39": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.6", + "errors": null, "id": 39, - "output_name": "output_short" - }, - { + "input_connections": { + "input_bam": { + "id": 27, + "output_name": "output_alignments" + } + }, + "inputs": [], + "label": null, + "name": "StringTie", + "outputs": [ + { + "name": "output_gtf", + "type": "gtf" + } + ], + "position": { + "left": 1107, + "top": 570 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.6", + "tool_shed_repository": { + "changeset_revision": "eba36e001f45", + "name": "stringtie", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"min_bundle_cov\": \"2\", \"min_tlen\": \"200\", \"bdist\": \"50\", \"multi_mapping\": \"false\", \"abundance_estimation\": \"false\", \"fraction\": \"0.15\", \"disable_trimming\": \"false\", \"omit_sequences\": \"\", \"name_prefix\": \"\", \"min_anchor_len\": \"10\", \"bundle_fraction\": \"0.95\", \"min_anchor_cov\": \"1\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"rna_strandness\": \"--fr\", \"input_bam\": {\"__class__\": \"ConnectedValue\"}, \"guide\": {\"use_guide\": \"no\", \"__current_case__\": 0}}", + "tool_version": "1.3.6", + "type": "tool", + "uuid": "d9a5d396-a2ec-4c32-9522-946cea6b83d3", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_gtf", + "uuid": "1552601b-7419-40fd-9a1a-37b240f6c982" + } + ] + }, + "40": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "errors": null, "id": 40, - "output_name": "output_short" - } - ], - "rep_factorName_0|rep_factorLevel_1|countsFile": [ - { + "input_connections": { + "bamInput": { + "id": 27, + "output_name": "output_alignments" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool bamCoverage", + "name": "advancedOpt" + } + ], + "label": null, + "name": "bamCoverage", + "outputs": [ + { + "name": "outFileName", + "type": "bigwig" + } + ], + "position": { + "left": 1106, + "top": 1190 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "tool_shed_repository": { + "changeset_revision": "7a7fd0f5f15d", + "name": "deeptools_bam_coverage", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"exactScaling\": \"false\", \"outFileFormat\": \"bigwig\", \"__page__\": null, \"region\": \"\", \"bamInput\": {\"__class__\": \"ConnectedValue\"}, \"binSize\": \"1\", \"scaling\": {\"effectiveGenomeSize\": {\"effectiveGenomeSize_opt\": \"2304947926\", \"__current_case__\": 6}, \"type\": \"1x\", \"__current_case__\": 4}, \"advancedOpt\": {\"ignoreDuplicates\": \"false\", \"centerReads\": \"false\", \"ignoreForNormalization\": \"\", \"minFragmentLength\": \"0\", \"minMappingQuality\": \"1\", \"MNase\": \"false\", \"samFlagInclude\": \"\", \"filterRNAstrand\": \"forward\", \"Offset\": \"\", \"smoothLength\": \"\", \"showAdvancedOpt\": \"yes\", \"__current_case__\": 1, \"samFlagExclude\": \"\", \"doExtendCustom\": {\"__current_case__\": 0, \"doExtend\": \"no\"}, \"skipNAs\": \"false\", \"scaleFactor\": \"1.0\", \"blackListFileName\": {\"__class__\": \"RuntimeValue\"}, \"maxFragmentLength\": \"0\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.3.0.0.0", + "type": "tool", + "uuid": "a433db0d-a73f-4be1-8c9a-cb9dffbeb4e2", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "3fcfd3a2-7025-471b-bd48-bb54dbae0ca8" + } + ] + }, + "41": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "errors": null, "id": 41, - "output_name": "output_short" - }, - { + "input_connections": { + "bamInput": { + "id": 27, + "output_name": "output_alignments" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool bamCoverage", + "name": "advancedOpt" + } + ], + "label": null, + "name": "bamCoverage", + "outputs": [ + { + "name": "outFileName", + "type": "bigwig" + } + ], + "position": { + "left": 1106, + "top": 1870 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "tool_shed_repository": { + "changeset_revision": "7a7fd0f5f15d", + "name": "deeptools_bam_coverage", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"exactScaling\": \"false\", \"outFileFormat\": \"bigwig\", \"__page__\": null, \"region\": \"\", \"bamInput\": {\"__class__\": \"ConnectedValue\"}, \"binSize\": \"1\", \"scaling\": {\"effectiveGenomeSize\": {\"effectiveGenomeSize_opt\": \"2304947926\", \"__current_case__\": 6}, \"type\": \"1x\", \"__current_case__\": 4}, \"advancedOpt\": {\"ignoreDuplicates\": \"false\", \"centerReads\": \"false\", \"ignoreForNormalization\": \"\", \"minFragmentLength\": \"0\", \"minMappingQuality\": \"1\", \"MNase\": \"false\", \"samFlagInclude\": \"\", \"filterRNAstrand\": \"reverse\", \"Offset\": \"\", \"smoothLength\": \"\", \"showAdvancedOpt\": \"yes\", \"__current_case__\": 1, \"samFlagExclude\": \"\", \"doExtendCustom\": {\"__current_case__\": 0, \"doExtend\": \"no\"}, \"skipNAs\": \"false\", \"scaleFactor\": \"1.0\", \"blackListFileName\": {\"__class__\": \"RuntimeValue\"}, \"maxFragmentLength\": \"0\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.3.0.0.0", + "type": "tool", + "uuid": "441aaaaa-306b-445d-a0eb-49d7d197797f", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "fa0df65c-1398-409b-8dce-f6f6fb4cf433" + } + ] + }, + "42": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.6", + "errors": null, "id": 42, - "output_name": "output_short" - } - ] - }, - "inputs": [], - "label": null, - "name": "DESeq2", - "outputs": [ - { - "name": "split_output", - "type": "input" - }, - { - "name": "deseq_out", - "type": "tabular" - }, - { - "name": "plots", - "type": "pdf" - }, - { - "name": "counts_out", - "type": "tabular" + "input_connections": { + "input_bam": { + "id": 30, + "output_name": "output_alignments" + } + }, + "inputs": [], + "label": null, + "name": "StringTie", + "outputs": [ + { + "name": "output_gtf", + "type": "gtf" + } + ], + "position": { + "left": 1107, + "top": 710 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie/1.3.6", + "tool_shed_repository": { + "changeset_revision": "eba36e001f45", + "name": "stringtie", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"adv\": {\"min_bundle_cov\": \"2\", \"min_tlen\": \"200\", \"bdist\": \"50\", \"multi_mapping\": \"false\", \"abundance_estimation\": \"false\", \"fraction\": \"0.15\", \"disable_trimming\": \"false\", \"omit_sequences\": \"\", \"name_prefix\": \"\", \"min_anchor_len\": \"10\", \"bundle_fraction\": \"0.95\", \"min_anchor_cov\": \"1\"}, \"__page__\": null, \"__rerun_remap_job_id__\": null, \"rna_strandness\": \"--fr\", \"input_bam\": {\"__class__\": \"ConnectedValue\"}, \"guide\": {\"use_guide\": \"no\", \"__current_case__\": 0}}", + "tool_version": "1.3.6", + "type": "tool", + "uuid": "8b977c7a-1b77-42c7-a2db-e3c5956ee6ad", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_gtf", + "uuid": "11730597-b79b-4c58-978c-44d3f352a899" + } + ] + }, + "43": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "errors": null, + "id": 43, + "input_connections": { + "bamInput": { + "id": 30, + "output_name": "output_alignments" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool bamCoverage", + "name": "advancedOpt" + } + ], + "label": null, + "name": "bamCoverage", + "outputs": [ + { + "name": "outFileName", + "type": "bigwig" + } + ], + "position": { + "left": 1106, + "top": 1360 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "tool_shed_repository": { + "changeset_revision": "7a7fd0f5f15d", + "name": "deeptools_bam_coverage", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"exactScaling\": \"false\", \"outFileFormat\": \"bigwig\", \"__page__\": null, \"region\": \"\", \"bamInput\": {\"__class__\": \"ConnectedValue\"}, \"binSize\": \"1\", \"scaling\": {\"effectiveGenomeSize\": {\"effectiveGenomeSize_opt\": \"2304947926\", \"__current_case__\": 6}, \"type\": \"1x\", \"__current_case__\": 4}, \"advancedOpt\": {\"ignoreDuplicates\": \"false\", \"centerReads\": \"false\", \"ignoreForNormalization\": \"\", \"minFragmentLength\": \"0\", \"minMappingQuality\": \"1\", \"MNase\": \"false\", \"samFlagInclude\": \"\", \"filterRNAstrand\": \"forward\", \"Offset\": \"\", \"smoothLength\": \"\", \"showAdvancedOpt\": \"yes\", \"__current_case__\": 1, \"samFlagExclude\": \"\", \"doExtendCustom\": {\"__current_case__\": 0, \"doExtend\": \"no\"}, \"skipNAs\": \"false\", \"scaleFactor\": \"1.0\", \"blackListFileName\": {\"__class__\": \"RuntimeValue\"}, \"maxFragmentLength\": \"0\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.3.0.0.0", + "type": "tool", + "uuid": "a0b2660b-eba8-4e48-9855-980a45969237", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFileName", + "uuid": "b322012e-acd7-44f4-a4e2-ee4eb4e4bf64" + } + ] + }, + "44": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "errors": null, + "id": 44, + "input_connections": { + "bamInput": { + "id": 30, + "output_name": "output_alignments" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool bamCoverage", + "name": "advancedOpt" + } + ], + "label": null, + "name": "bamCoverage", + "outputs": [ + { + "name": "outFileName", + "type": "bigwig" + } + ], + "position": { + "left": 1106, + "top": 2040 + }, + "post_job_actions": { + "HideDatasetActionoutFileName": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "outFileName" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/bgruening/deeptools_bam_coverage/deeptools_bam_coverage/3.3.0.0.0", + "tool_shed_repository": { + "changeset_revision": "7a7fd0f5f15d", + "name": "deeptools_bam_coverage", + "owner": "bgruening", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"exactScaling\": \"false\", \"outFileFormat\": \"bigwig\", \"__page__\": null, \"region\": \"\", \"bamInput\": {\"__class__\": \"ConnectedValue\"}, \"binSize\": \"1\", \"scaling\": {\"effectiveGenomeSize\": {\"effectiveGenomeSize_opt\": \"2304947926\", \"__current_case__\": 6}, \"type\": \"1x\", \"__current_case__\": 4}, \"advancedOpt\": {\"ignoreDuplicates\": \"false\", \"centerReads\": \"false\", \"ignoreForNormalization\": \"\", \"minFragmentLength\": \"0\", \"minMappingQuality\": \"1\", \"MNase\": \"false\", \"samFlagInclude\": \"\", \"filterRNAstrand\": \"reverse\", \"Offset\": \"\", \"smoothLength\": \"\", \"showAdvancedOpt\": \"yes\", \"__current_case__\": 1, \"samFlagExclude\": \"\", \"doExtendCustom\": {\"__current_case__\": 0, \"doExtend\": \"no\"}, \"skipNAs\": \"false\", \"scaleFactor\": \"1.0\", \"blackListFileName\": {\"__class__\": \"RuntimeValue\"}, \"maxFragmentLength\": \"0\"}, \"__rerun_remap_job_id__\": null}", + "tool_version": "3.3.0.0.0", + "type": "tool", + "uuid": "7189ed72-d46f-49af-b8e1-f8db46e1ba2e", + "workflow_outputs": [] + }, + "45": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie_merge/1.3.6", + "errors": null, + "id": 45, + "input_connections": { + "guide_gff": { + "id": 8, + "output_name": "output" + }, + "input_gtf": [ + { + "id": 33, + "output_name": "output_gtf" + }, + { + "id": 36, + "output_name": "output_gtf" + }, + { + "id": 42, + "output_name": "output_gtf" + }, + { + "id": 39, + "output_name": "output_gtf" + } + ] + }, + "inputs": [], + "label": null, + "name": "StringTie merge", + "outputs": [ + { + "name": "out_gtf", + "type": "gtf" + } + ], + "position": { + "left": 1441, + "top": 298 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/stringtie/stringtie_merge/1.3.6", + "tool_shed_repository": { + "changeset_revision": "eba36e001f45", + "name": "stringtie", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_iso\": \"0.01\", \"min_fpkm\": \"1.0\", \"keep_introns\": \"false\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"min_len\": \"50\", \"guide_gff\": {\"__class__\": \"ConnectedValue\"}, \"min_cov\": \"0\", \"min_tpm\": \"1.0\", \"input_gtf\": {\"__class__\": \"ConnectedValue\"}, \"gap_len\": \"250\"}", + "tool_version": "1.3.6", + "type": "tool", + "uuid": "d4d8f2e1-7ac2-46d0-b541-a6a5cd488a33", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_gtf", + "uuid": "9b43230c-7595-46a5-96bf-15894bb56666" + } + ] + }, + "46": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/gffcompare/gffcompare/0.11.2", + "errors": null, + "id": 46, + "input_connections": { + "annotation|ref_source|reference_annotation": { + "id": 8, + "output_name": "output" + }, + "gffinputs": { + "id": 45, + "output_name": "out_gtf" + } + }, + "inputs": [], + "label": null, + "name": "GffCompare", + "outputs": [ + { + "name": "refmap_output", + "type": "input" + }, + { + "name": "tmap_output", + "type": "input" + }, + { + "name": "transcripts_stats", + "type": "txt" + }, + { + "name": "transcripts_loci", + "type": "tabular" + }, + { + "name": "transcripts_tracking", + "type": "tabular" + }, + { + "name": "transcripts_annotated", + "type": "gtf" + } + ], + "position": { + "left": 1762, + "top": 290 + }, + "post_job_actions": { + "HideDatasetActionrefmap_output": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "refmap_output" + }, + "HideDatasetActiontmap_output": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "tmap_output" + }, + "HideDatasetActiontranscripts_annotated": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "transcripts_annotated" + }, + "HideDatasetActiontranscripts_loci": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "transcripts_loci" + }, + "HideDatasetActiontranscripts_stats": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "transcripts_stats" + }, + "HideDatasetActiontranscripts_tracking": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "transcripts_tracking" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/gffcompare/gffcompare/0.11.2", + "tool_shed_repository": { + "changeset_revision": "0f710191a66d", + "name": "gffcompare", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"seq_data\": {\"use_seq_data\": \"Yes\", \"seq_source\": {\"index_source\": \"cached\", \"index\": \"mm10\", \"__current_case__\": 0}, \"__current_case__\": 1}, \"__page__\": null, \"max_dist_group\": \"100\", \"adv_output\": {\"A\": \"false\", \"p\": \"TCONS\", \"C\": \"false\", \"K\": \"false\", \"X\": \"false\"}, \"max_dist_exon\": \"100\", \"__rerun_remap_job_id__\": null, \"no_merge\": \"false\", \"discard_duplicates\": \"\", \"gffinputs\": {\"__class__\": \"ConnectedValue\"}, \"discard_single_exon\": \"\", \"chr_stats\": \"false\", \"annotation\": {\"strict_match\": \"false\", \"ref_source\": {\"reference_annotation\": {\"__class__\": \"ConnectedValue\"}, \"ref_source_sel\": \"history\", \"__current_case__\": 1}, \"__current_case__\": 0, \"ignore_nonoverlapping_transfrags\": \"false\", \"use_ref_annotation\": \"Yes\", \"ignore_nonoverlapping_reference\": \"false\", \"refmap_tmap\": [\"refmap\", \"tmap\"]}}", + "tool_version": "0.11.2", + "type": "tool", + "uuid": "7198ef30-af2d-4152-899c-b2ba7dc99d56", + "workflow_outputs": [] + }, + "47": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.4+galaxy1", + "errors": null, + "id": 47, + "input_connections": { + "alignment": { + "id": 21, + "output_name": "output_alignments" + }, + "anno|reference_gene_sets": { + "id": 46, + "output_name": "transcripts_annotated" + } + }, + "inputs": [], + "label": null, + "name": "featureCounts", + "outputs": [ + { + "name": "output_short", + "type": "tabular" + }, + { + "name": "output_summary", + "type": "tabular" + } + ], + "position": { + "left": 2090, + "top": 290 + }, + "post_job_actions": { + "HideDatasetActionoutput_short": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_short" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.4+galaxy1", + "tool_shed_repository": { + "changeset_revision": "a37612abf7f9", + "name": "featurecounts", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"pe_parameters\": {\"only_both_ends\": \"false\", \"exclude_chimerics\": \"true\", \"fragment_counting_enabled\": {\"fragment_counting\": \"\", \"__current_case__\": 1}}, \"strand_specificity\": \"1\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"format\": \"tabdel_short\", \"include_feature_length_file\": \"false\", \"anno\": {\"anno_select\": \"history\", \"reference_gene_sets\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 2}, \"extended_parameters\": {\"gff_feature_attribute\": \"transcript_id\", \"exon_exon_junction_read_counting_enabled\": {\"__current_case__\": 1, \"count_exon_exon_junction_reads\": \"false\"}, \"read_extension_3p\": \"0\", \"frac_overlap_feature\": \"0\", \"min_overlap\": \"1\", \"read_extension_5p\": \"0\", \"contribute_to_multiple_features\": \"false\", \"frac_overlap\": \"0\", \"primary\": \"false\", \"count_split_alignments_only\": \"false\", \"by_read_group\": \"false\", \"ignore_dup\": \"false\", \"mapping_quality\": \"12\", \"summarization_level\": \"false\", \"R\": \"false\", \"largest_overlap\": \"false\", \"read_reduction\": \"\", \"multimapping_enabled\": {\"multimapping_counts\": \"\", \"__current_case__\": 1}, \"long_reads\": \"false\", \"gff_feature_type\": \"exon\"}, \"alignment\": {\"__class__\": \"ConnectedValue\"}}", + "tool_version": "1.6.4+galaxy1", + "type": "tool", + "uuid": "95abe7d8-6d49-41dd-8147-e5c7c3764db7", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_summary", + "uuid": "03051c5b-afcc-467c-95f2-116fa87c9a79" + } + ] + }, + "48": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.4+galaxy1", + "errors": null, + "id": 48, + "input_connections": { + "alignment": { + "id": 24, + "output_name": "output_alignments" + }, + "anno|reference_gene_sets": { + "id": 46, + "output_name": "transcripts_annotated" + } + }, + "inputs": [], + "label": null, + "name": "featureCounts", + "outputs": [ + { + "name": "output_short", + "type": "tabular" + }, + { + "name": "output_summary", + "type": "tabular" + } + ], + "position": { + "left": 2085, + "top": 508 + }, + "post_job_actions": { + "HideDatasetActionoutput_short": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_short" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.4+galaxy1", + "tool_shed_repository": { + "changeset_revision": "a37612abf7f9", + "name": "featurecounts", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"pe_parameters\": {\"only_both_ends\": \"false\", \"exclude_chimerics\": \"true\", \"fragment_counting_enabled\": {\"fragment_counting\": \"\", \"__current_case__\": 1}}, \"strand_specificity\": \"1\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"format\": \"tabdel_short\", \"include_feature_length_file\": \"false\", \"anno\": {\"anno_select\": \"history\", \"reference_gene_sets\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 2}, \"extended_parameters\": {\"gff_feature_attribute\": \"transcript_id\", \"exon_exon_junction_read_counting_enabled\": {\"__current_case__\": 1, \"count_exon_exon_junction_reads\": \"false\"}, \"read_extension_3p\": \"0\", \"frac_overlap_feature\": \"0\", \"min_overlap\": \"1\", \"read_extension_5p\": \"0\", \"contribute_to_multiple_features\": \"false\", \"frac_overlap\": \"0\", \"primary\": \"false\", \"count_split_alignments_only\": \"false\", \"by_read_group\": \"false\", \"ignore_dup\": \"false\", \"mapping_quality\": \"12\", \"summarization_level\": \"false\", \"R\": \"false\", \"largest_overlap\": \"false\", \"read_reduction\": \"\", \"multimapping_enabled\": {\"multimapping_counts\": \"\", \"__current_case__\": 1}, \"long_reads\": \"false\", \"gff_feature_type\": \"exon\"}, \"alignment\": {\"__class__\": \"ConnectedValue\"}}", + "tool_version": "1.6.4+galaxy1", + "type": "tool", + "uuid": "9ae13bea-d205-488c-8c9e-6727e69d7a12", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_summary", + "uuid": "90818597-3cff-42ee-8c5d-9e73babac7a3" + } + ] + }, + "49": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.4+galaxy1", + "errors": null, + "id": 49, + "input_connections": { + "alignment": { + "id": 27, + "output_name": "output_alignments" + }, + "anno|reference_gene_sets": { + "id": 46, + "output_name": "transcripts_annotated" + } + }, + "inputs": [], + "label": null, + "name": "featureCounts", + "outputs": [ + { + "name": "output_short", + "type": "tabular" + }, + { + "name": "output_summary", + "type": "tabular" + } + ], + "position": { + "left": 2090, + "top": 730 + }, + "post_job_actions": { + "HideDatasetActionoutput_short": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_short" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.4+galaxy1", + "tool_shed_repository": { + "changeset_revision": "a37612abf7f9", + "name": "featurecounts", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"pe_parameters\": {\"only_both_ends\": \"false\", \"exclude_chimerics\": \"true\", \"fragment_counting_enabled\": {\"fragment_counting\": \"\", \"__current_case__\": 1}}, \"strand_specificity\": \"1\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"format\": \"tabdel_short\", \"include_feature_length_file\": \"false\", \"anno\": {\"anno_select\": \"history\", \"reference_gene_sets\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 2}, \"extended_parameters\": {\"gff_feature_attribute\": \"transcript_id\", \"exon_exon_junction_read_counting_enabled\": {\"__current_case__\": 1, \"count_exon_exon_junction_reads\": \"false\"}, \"read_extension_3p\": \"0\", \"frac_overlap_feature\": \"0\", \"min_overlap\": \"1\", \"read_extension_5p\": \"0\", \"contribute_to_multiple_features\": \"false\", \"frac_overlap\": \"0\", \"primary\": \"false\", \"count_split_alignments_only\": \"false\", \"by_read_group\": \"false\", \"ignore_dup\": \"false\", \"mapping_quality\": \"12\", \"summarization_level\": \"false\", \"R\": \"false\", \"largest_overlap\": \"false\", \"read_reduction\": \"\", \"multimapping_enabled\": {\"multimapping_counts\": \"\", \"__current_case__\": 1}, \"long_reads\": \"false\", \"gff_feature_type\": \"exon\"}, \"alignment\": {\"__class__\": \"ConnectedValue\"}}", + "tool_version": "1.6.4+galaxy1", + "type": "tool", + "uuid": "db762d9c-4d9f-427a-a5d0-0c1bff0ee11b", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_summary", + "uuid": "bfb857ae-181f-40e5-a85c-45ea832609ee" + } + ] + }, + "50": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.4+galaxy1", + "errors": null, + "id": 50, + "input_connections": { + "alignment": { + "id": 30, + "output_name": "output_alignments" + }, + "anno|reference_gene_sets": { + "id": 46, + "output_name": "transcripts_annotated" + } + }, + "inputs": [], + "label": null, + "name": "featureCounts", + "outputs": [ + { + "name": "output_short", + "type": "tabular" + }, + { + "name": "output_summary", + "type": "tabular" + } + ], + "position": { + "left": 2090, + "top": 950 + }, + "post_job_actions": { + "HideDatasetActionoutput_short": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "output_short" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/featurecounts/featurecounts/1.6.4+galaxy1", + "tool_shed_repository": { + "changeset_revision": "a37612abf7f9", + "name": "featurecounts", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"pe_parameters\": {\"only_both_ends\": \"false\", \"exclude_chimerics\": \"true\", \"fragment_counting_enabled\": {\"fragment_counting\": \"\", \"__current_case__\": 1}}, \"strand_specificity\": \"1\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"format\": \"tabdel_short\", \"include_feature_length_file\": \"false\", \"anno\": {\"anno_select\": \"history\", \"reference_gene_sets\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 2}, \"extended_parameters\": {\"gff_feature_attribute\": \"transcript_id\", \"exon_exon_junction_read_counting_enabled\": {\"__current_case__\": 1, \"count_exon_exon_junction_reads\": \"false\"}, \"read_extension_3p\": \"0\", \"frac_overlap_feature\": \"0\", \"min_overlap\": \"1\", \"read_extension_5p\": \"0\", \"contribute_to_multiple_features\": \"false\", \"frac_overlap\": \"0\", \"primary\": \"false\", \"count_split_alignments_only\": \"false\", \"by_read_group\": \"false\", \"ignore_dup\": \"false\", \"mapping_quality\": \"12\", \"summarization_level\": \"false\", \"R\": \"false\", \"largest_overlap\": \"false\", \"read_reduction\": \"\", \"multimapping_enabled\": {\"multimapping_counts\": \"\", \"__current_case__\": 1}, \"long_reads\": \"false\", \"gff_feature_type\": \"exon\"}, \"alignment\": {\"__class__\": \"ConnectedValue\"}}", + "tool_version": "1.6.4+galaxy1", + "type": "tool", + "uuid": "16d0abf6-f6e0-4b5c-a857-114cd7b9b319", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_summary", + "uuid": "35019ed7-acfd-410b-86f4-7f75b84f737e" + } + ] + }, + "51": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.6", + "errors": null, + "id": 51, + "input_connections": { + "select_data|rep_factorName_0|rep_factorLevel_0|countsFile": [ + { + "id": 47, + "output_name": "output_short" + }, + { + "id": 48, + "output_name": "output_short" + } + ], + "select_data|rep_factorName_0|rep_factorLevel_1|countsFile": [ + { + "id": 49, + "output_name": "output_short" + }, + { + "id": 50, + "output_name": "output_short" + } + ] + }, + "inputs": [ + { + "description": "runtime parameter for tool DESeq2", + "name": "batch_factors" + } + ], + "label": null, + "name": "DESeq2", + "outputs": [ + { + "name": "deseq_out", + "type": "tabular" + }, + { + "name": "plots", + "type": "pdf" + }, + { + "name": "counts_out", + "type": "tabular" + } + ], + "position": { + "left": 2418, + "top": 290 + }, + "post_job_actions": { + "HideDatasetActioncounts_out": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "counts_out" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.6", + "tool_shed_repository": { + "changeset_revision": "0696db066a5b", + "name": "deseq2", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"fit_type\": \"1\", \"__page__\": null, \"normVST\": \"false\", \"tximport\": {\"tximport_selector\": \"count\", \"__current_case__\": 1}, \"esf\": \"\", \"outlier_replace_off\": \"false\", \"__rerun_remap_job_id__\": null, \"auto_mean_filter_off\": \"false\", \"header\": \"true\", \"normCounts\": \"true\", \"outlier_filter_off\": \"false\", \"many_contrasts\": \"false\", \"batch_factors\": {\"__class__\": \"RuntimeValue\"}, \"pdf\": \"true\", \"normRLog\": \"false\", \"select_data\": {\"how\": \"datasets_per_level\", \"rep_factorName\": [{\"__index__\": 0, \"factorName\": \"FactorName\", \"rep_factorLevel\": [{\"__index__\": 0, \"factorLevel\": \"GIE\", \"countsFile\": {\"__class__\": \"ConnectedValue\"}}, {\"__index__\": 1, \"factorLevel\": \"Mega\", \"countsFile\": {\"__class__\": \"ConnectedValue\"}}]}], \"__current_case__\": 1}}", + "tool_version": "2.11.40.6", + "type": "tool", + "uuid": "31920f6a-7735-48ea-b477-e7b2933b4f97", + "workflow_outputs": [ + { + "label": null, + "output_name": "plots", + "uuid": "ba05745d-db6f-4077-a524-713fa808be82" + }, + { + "label": null, + "output_name": "deseq_out", + "uuid": "5fab25c2-11d8-424e-9877-4d91fd75c60f" + } + ] + }, + "52": { + "annotation": "", + "content_id": "Filter1", + "errors": null, + "id": 52, + "input_connections": { + "input": { + "id": 51, + "output_name": "deseq_out" + } + }, + "inputs": [], + "label": null, + "name": "Filter", + "outputs": [ + { + "name": "out_file1", + "type": "input" + } + ], + "position": { + "left": 2746, + "top": 290 + }, + "post_job_actions": {}, + "tool_id": "Filter1", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"cond\": \"c7<0.05\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"header_lines\": \"0\", \"chromInfo\": \"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\"}", + "tool_version": "1.1.0", + "type": "tool", + "uuid": "d3f69676-a4ab-422d-9477-e48469e7eb0e", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "ed66aa96-1b4f-4307-8ddf-a9a8ff50412c" + } + ] + }, + "53": { + "annotation": "", + "content_id": "Filter1", + "errors": null, + "id": 53, + "input_connections": { + "input": { + "id": 52, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Filter", + "outputs": [ + { + "name": "out_file1", + "type": "input" + } + ], + "position": { + "left": 2996, + "top": 290 + }, + "post_job_actions": {}, + "tool_id": "Filter1", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"cond\": \"c3>0\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"header_lines\": \"0\", \"chromInfo\": \"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\"}", + "tool_version": "1.1.0", + "type": "tool", + "uuid": "8addb367-a444-40b4-899d-224ac94c3ab5", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "4bb7c046-c14f-448c-9d71-fe78fb90db94" + } + ] + }, + "54": { + "annotation": "", + "content_id": "Filter1", + "errors": null, + "id": 54, + "input_connections": { + "input": { + "id": 52, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Filter", + "outputs": [ + { + "name": "out_file1", + "type": "input" + } + ], + "position": { + "left": 2996, + "top": 410 + }, + "post_job_actions": {}, + "tool_id": "Filter1", + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"cond\": \"c3<0\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"header_lines\": \"0\", \"chromInfo\": \"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\"}", + "tool_version": "1.1.0", + "type": "tool", + "uuid": "ed3d5b8f-82ef-4992-9528-ad9238b30d2f", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "d7dc54e1-74ec-4105-81f0-e205538bbb6f" + } + ] } - ], - "position": { - "left": 1550, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/deseq2/deseq2/2.11.40.2", - "tool_shed_repository": { - "changeset_revision": "9a616afdbda5", - "name": "deseq2", - "owner": "iuc", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"fit_type\": \"\\\"1\\\"\", \"__page__\": null, \"tximport\": \"{\\\"tximport_selector\\\": \\\"count\\\", \\\"__current_case__\\\": 1}\", \"outlier_replace_off\": \"\\\"false\\\"\", \"__rerun_remap_job_id__\": null, \"auto_mean_filter_off\": \"\\\"false\\\"\", \"header\": \"\\\"true\\\"\", \"rep_factorName\": \"[{\\\"__index__\\\": 0, \\\"factorName\\\": \\\"FactorName\\\", \\\"rep_factorLevel\\\": [{\\\"__index__\\\": 0, \\\"factorLevel\\\": \\\"GIE\\\", \\\"countsFile\\\": null}, {\\\"__index__\\\": 1, \\\"factorLevel\\\": \\\"Mega\\\", \\\"countsFile\\\": null}]}]\", \"normCounts\": \"\\\"true\\\"\", \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"many_contrasts\": \"\\\"false\\\"\", \"pdf\": \"\\\"true\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\", \"outlier_filter_off\": \"\\\"false\\\"\"}", - "tool_version": "2.11.40.2", - "type": "tool", - "uuid": "73d67b36-4316-446b-85f6-5b1e2b64f684", - "workflow_outputs": [] }, - "44": { - "annotation": "", - "content_id": "Filter1", - "errors": null, - "id": 44, - "input_connections": { - "input": { - "id": 43, - "output_name": "deseq_out" - } - }, - "inputs": [], - "label": null, - "name": "Filter", - "outputs": [ - { - "name": "out_file1", - "type": "input" - } - ], - "position": { - "left": 1770, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "Filter1", - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"cond\": \"\\\"c7<0.05\\\"\", \"input\": \"null\", \"header_lines\": \"\\\"0\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\"}", - "tool_version": "1.1.0", - "type": "tool", - "uuid": "3581c4be-1732-47fc-ad14-73f5e3a42b23", - "workflow_outputs": [] - }, - "45": { - "annotation": "", - "content_id": "Filter1", - "errors": null, - "id": 45, - "input_connections": { - "input": { - "id": 44, - "output_name": "out_file1" - } - }, - "inputs": [], - "label": null, - "name": "Filter", - "outputs": [ - { - "name": "out_file1", - "type": "input" - } - ], - "position": { - "left": 1990, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "Filter1", - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"cond\": \"\\\"c3>0\\\"\", \"input\": \"null\", \"header_lines\": \"\\\"0\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\"}", - "tool_version": "1.1.0", - "type": "tool", - "uuid": "c9d279df-d6bb-4b48-a743-250e9fb30548", - "workflow_outputs": [] - }, - "46": { - "annotation": "", - "content_id": "Filter1", - "errors": null, - "id": 46, - "input_connections": { - "input": { - "id": 44, - "output_name": "out_file1" - } - }, - "inputs": [], - "label": null, - "name": "Filter", - "outputs": [ - { - "name": "out_file1", - "type": "input" - } - ], - "position": { - "left": 1990, - "top": 130 - }, - "post_job_actions": {}, - "tool_id": "Filter1", - "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"cond\": \"\\\"c3<0\\\"\", \"input\": \"null\", \"header_lines\": \"\\\"0\\\"\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/mm10.len\\\"\"}", - "tool_version": "1.1.0", - "type": "tool", - "uuid": "aa0f881b-5524-4a0c-9cc5-c8fdfe2e3b89", - "workflow_outputs": [] - }, - "5": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 5, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "Megakaryocyte_rep1_reverse_read" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 610 - }, - "tool_id": null, - "tool_state": "{\"name\": \"Megakaryocyte_rep1_reverse_read\"}", - "tool_version": null, - "type": "data_input", - "uuid": "e7b2ddb1-99fc-4898-9c10-e5ac8fa9fd3a", - "workflow_outputs": [] - }, - "6": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 6, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "Megakaryocyte_rep2_forward_read" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 730 - }, - "tool_id": null, - "tool_state": "{\"name\": \"Megakaryocyte_rep2_forward_read\"}", - "tool_version": null, - "type": "data_input", - "uuid": "8eff105a-d216-4399-bac1-a67d3f09514f", - "workflow_outputs": [] - }, - "7": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 7, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "Megakaryocyte_rep2_reverse_read" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 850 - }, - "tool_id": null, - "tool_state": "{\"name\": \"Megakaryocyte_rep2_reverse_read\"}", - "tool_version": null, - "type": "data_input", - "uuid": "f22827e1-68d3-4ae0-9d4a-67bca6a8b288", - "workflow_outputs": [] - }, - "8": { - "annotation": "", - "content_id": null, - "errors": null, - "id": 8, - "input_connections": {}, - "inputs": [ - { - "description": "", - "name": "RefSeq_reference_GTF" - } - ], - "label": null, - "name": "Input dataset", - "outputs": [], - "position": { - "left": 10, - "top": 970 - }, - "tool_id": null, - "tool_state": "{\"name\": \"RefSeq_reference_GTF\"}", - "tool_version": null, - "type": "data_input", - "uuid": "758d9ac9-4e4a-45fa-a5ad-2fb4f5f7f87d", - "workflow_outputs": [] - }, - "9": { - "annotation": "", - "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "errors": null, - "id": 9, - "input_connections": { - "input_file": { - "id": 0, - "output_name": "output" - } - }, - "inputs": [], - "label": null, - "name": "FastQC", - "outputs": [ - { - "name": "html_file", - "type": "html" - }, - { - "name": "text_file", - "type": "txt" - } - ], - "position": { - "left": 230, - "top": 10 - }, - "post_job_actions": {}, - "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72", - "tool_shed_repository": { - "changeset_revision": "c15237684a01", - "name": "fastqc", - "owner": "devteam", - "tool_shed": "toolshed.g2.bx.psu.edu" - }, - "tool_state": "{\"__page__\": null, \"limits\": \"null\", \"input_file\": \"null\", \"__rerun_remap_job_id__\": null, \"__workflow_invocation_uuid__\": \"\\\"fde8952eb77711e8a468005056ba55fb\\\"\", \"contaminants\": \"null\", \"chromInfo\": \"\\\"/cvmfs/data.galaxyproject.org/managed/len/ucsc/?.len\\\"\"}", - "tool_version": "0.72", - "type": "tool", - "uuid": "32c35846-2972-4d71-8af6-03350acd490a", - "workflow_outputs": [] - } - }, - "tags": [ - "transcriptomics" - ], - "uuid": "dc8abeee-46fa-4965-9a58-396b3ac0c310" -} \ No newline at end of file + "tags": [ + "transcriptomics" + ], + "uuid": "42a843bd-6438-482b-8ef9-88978509e013", + "version": 7 +} diff --git a/topics/transcriptomics/tutorials/ref-based/tutorial.bib b/topics/transcriptomics/tutorials/ref-based/tutorial.bib index 90615bc5be0a92..bed40db9567a0b 100644 --- a/topics/transcriptomics/tutorials/ref-based/tutorial.bib +++ b/topics/transcriptomics/tutorials/ref-based/tutorial.bib @@ -13,7 +13,7 @@ @article{anders2015htseq @article{brooks2011conservation, title={Conservation of an RNA regulatory map between Drosophila and mammals}, author={Brooks, Angela N and Yang, Li and Duff, Michael O and Hansen, Kasper D and Park, Jung W and Dudoit, Sandrine and Brenner, Steven E and Graveley, Brenton R}, - journal={Genome research}, + journal={Genome Research}, url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3032923/}, volume={21}, number={2}, @@ -34,10 +34,22 @@ @article{dobin2013star publisher={Oxford University Press} } +@article{ewels2016multiqc, + title={MultiQC: summarize analysis results for multiple tools and samples in a single report}, + author={Ewels, Philip and Magnusson, M{\aa}ns and Lundin, Sverker and K{\"a}ller, Max}, + journal={Bioinformatics}, + volume={32}, + number={19}, + pages={3047--3048}, + year={2016}, + publisher={Oxford University Press}, + url={https://academic.oup.com/bioinformatics/article/32/19/3047/2196507} +} + @article{kim2013tophat2, title={TopHat2: accurate alignment of transcriptomes in the presence of insertions, deletions and gene fusions}, author={Kim, Daehwan and Pertea, Geo and Trapnell, Cole and Pimentel, Harold and Kelley, Ryan and Salzberg, Steven L}, - journal={Genome biology}, + journal={Genome Biology}, url = {https://genomebiology.biomedcentral.com/articles/10.1186/gb-2013-14-4-r36}, volume={14}, number={4}, @@ -49,7 +61,7 @@ @article{kim2013tophat2 @article{kim2015hisat, title={HISAT: a fast spliced aligner with low memory requirements}, author={Kim, Daehwan and Langmead, Ben and Salzberg, Steven L}, - journal={Nature methods}, + journal={Nature Methods}, url = {https://www.nature.com/articles/nmeth.3317}, volume={12}, number={4}, @@ -61,7 +73,7 @@ @article{kim2015hisat @article{kim2019graph, title={Graph-based genome alignment and genotyping with HISAT2 and HISAT-genotype}, author={Kim, Daehwan and Paggi, Joseph M and Park, Chanhee and Bennett, Christopher and Salzberg, Steven L}, - journal={Nature biotechnology}, + journal={Nature Biotechnology}, url = {https://www.nature.com/articles/s41587-019-0201-4}, volume={37}, number={8}, @@ -70,11 +82,10 @@ @article{kim2019graph publisher={Nature Publishing Group} } - @article{levin2010comprehensive, title={Comprehensive comparative analysis of strand-specific RNA sequencing methods}, author={Levin, Joshua Z and Yassour, Moran and Adiconis, Xian and Nusbaum, Chad and Thompson, Dawn Anne and Friedman, Nir and Gnirke, Andreas and Regev, Aviv}, - journal={Nature methods}, + journal={Nature Methods}, url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3005310/}, volume={7}, number={9}, @@ -98,7 +109,7 @@ @article{liao2013featurecounts @article{love2014moderated, title={Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2}, author={Love, Michael I and Huber, Wolfgang and Anders, Simon}, - journal={Genome biology}, + journal={Genome Biology}, url = {https://genomebiology.biomedcentral.com/articles/10.1186/s13059-014-0550-8}, volume={15}, number={12}, @@ -132,7 +143,7 @@ @article{marcel2011cutadapt @article{robinson2011integrative, title={Integrative genomics viewer}, author={Robinson, James T and Thorvaldsd{\'o}ttir, Helga and Winckler, Wendy and Guttman, Mitchell and Lander, Eric S and Getz, Gad and Mesirov, Jill P}, - journal={Nature biotechnology}, + journal={Nature Biotechnology}, url = {https://www.nature.com/nbt/journal/v29/n1/abs/nbt.1754.html}, volume={29}, number={1}, @@ -141,7 +152,6 @@ @article{robinson2011integrative publisher={Nature Publishing Group} } - @article{trapnell2009tophat, title={TopHat: discovering splice junctions with RNA-Seq}, author={Trapnell, Cole and Pachter, Lior and Salzberg, Steven L}, @@ -154,6 +164,18 @@ @article{trapnell2009tophat publisher={Oxford University Press} } +@article{thurmond2018flybase, + title={FlyBase 2.0: the next generation}, + author={Thurmond, Jim and Goodman, Joshua L and Strelets, Victor B and Attrill, Helen and Gramates, L Sian and Marygold, Steven J and Matthews, Beverley B and Millburn, Gillian and Antonazzo, Giulia and Trovisco, Vitor and others}, + journal={Nucleic Acids Research}, + volume={47}, + number={D1}, + pages={D759--D765}, + year={2018}, + publisher={Oxford University Press}, + url={https://academic.oup.com/nar/article-abstract/47/D1/D759/5144957} +} + @article{wang2012rseqc, title={RSeQC: quality control of RNA-seq experiments}, author={Wang, Liguo and Wang, Shengqin and Li, Wei}, @@ -169,7 +191,7 @@ @article{wang2012rseqc @article{young2010gene, title={Gene ontology analysis for RNA-seq: accounting for selection bias}, author={Young, Matthew D and Wakefield, Matthew J and Smyth, Gordon K and Oshlack, Alicia}, - journal={Genome biology}, + journal={Genome Biology}, url = {https://genomebiology.biomedcentral.com/articles/10.1186/gb-2010-11-2-r14}, volume={11}, number={2}, diff --git a/topics/transcriptomics/tutorials/ref-based/tutorial.md b/topics/transcriptomics/tutorials/ref-based/tutorial.md index 8748d378a027e8..cca7ea68a9fce2 100644 --- a/topics/transcriptomics/tutorials/ref-based/tutorial.md +++ b/topics/transcriptomics/tutorials/ref-based/tutorial.md @@ -87,8 +87,8 @@ In the second part of the tutorial, read counts of all 7 samples are used to ide > {% include snippets/create_new_history.md %} > > 2. Import the FASTQ file pairs from [Zenodo]({{ page.zenodo_link }}) or a data library: -> - `GSM461177` (untreated): `GSM461177_1` and `GSM461177_2` -> - `GSM461180` (treated): `GSM461180_1` and `GSM461180_2` +> - `GSM461177` (untreated): `GSM461177_1` and `GSM461177_2` +> - `GSM461180` (treated): `GSM461180_1` and `GSM461180_2` > > ``` > {{ page.zenodo_link }}/files/GSM461177_1.fastqsanger @@ -126,14 +126,14 @@ The reads are raw data from the sequencing machine without any pretreatments. Th # Quality control -During sequencing, errors are introduced, such as incorrect nucleotides being called. These are due to the technical limitations of each sequencing platform. Sequencing errors might bias the analysis and can lead to a misinterpretation of the data. +During sequencing, errors are introduced, such as incorrect nucleotides being called. These are due to the technical limitations of each sequencing platform. Sequencing errors might bias the analysis and can lead to a misinterpretation of the data. Adapters may also be present if the reads are longer than the fragments sequenced and trimming these may improve the number of reads mapped. -Sequence quality control is therefore an essential first step in your analysis. We will use similar tools as described in the ["Quality control" training]({% link topics/sequence-analysis/tutorials/quality-control/tutorial.md %}): [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) and [Cutadapt](https://cutadapt.readthedocs.io/en/stable/guide.html) ({% cite marcel2011cutadapt %}). +Sequence quality control is therefore an essential first step in your analysis. We will use similar tools as described in the ["Quality control" tutorial]({% link topics/sequence-analysis/tutorials/quality-control/tutorial.md %}): [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) to create a report of sequence quality, [MultiQC](https://multiqc.info/) ({% cite ewels2016multiqc %}) to aggregate generated reports and [Cutadapt](https://cutadapt.readthedocs.io/en/stable/guide.html) ({% cite marcel2011cutadapt %}) to improve the quality of sequences via trimming and filtering. > ### {% icon hands_on %} Hands-on: Quality control > > 1. **FastQC** {% icon tool %} with the following parameters: -> - {% icon param-files %} *"Short read data from your current history"*: input datasets selected with **Multiple datasets** +> - {% icon param-files %} *"Short read data from your current history"*: input datasets selected with **Multiple datasets** > > {% include snippets/select_multiple_datasets.md %} > @@ -152,11 +152,11 @@ Sequence quality control is therefore an essential first step in your analysis. > {: .question} > > 3. **MultiQC** {% icon tool %} with the following parameters to aggregate the FastQC reports: -> - In *"Results"* -> - *"Which tool was used generate logs?"*: `FastQC` -> - In *"FastQC output"* -> - *"Type of FastQC output?"*: `Raw data` -> - {% icon param-files %} *"FastQC output"*: `Raw data` files (output of **FastQC** {% icon tool %}) +> - In *"Results"* +> - *"Which tool was used generate logs?"*: `FastQC` +> - In *"FastQC output"* +> - *"Type of FastQC output?"*: `Raw data` +> - {% icon param-files %} *"FastQC output"*: `Raw data` files (output of **FastQC** {% icon tool %}) > > 4. Inspect the webpage output from MultiQC for each FASTQ > @@ -167,32 +167,33 @@ Sequence quality control is therefore an essential first step in your analysis. > > > > > ### {% icon solution %} Solution > > > -> > > 1. Everything seems OK for 3 of the files, but for `GSM461180_2` the quality decreases quite a lot at the end of the sequences: -> > > - The `GSM461177` have 10.3 millions of sequences and `GSM461180` 12.3 millions -> > > - All except `GSM461180_2` have a high proportion of duplicated reads (expected in RNA-Seq data) +> > > 1. Everything seems good for 3 of the files. The `GSM461177` have 10.3 millions of sequences and `GSM461180` 12.3 millions of sequences. But in `GSM461180_2` (reverse reads of GSM461180) the quality decreases quite a lot at the end of the sequences. +> > > +> > > All files except `GSM461180_2` have a high proportion of duplicated reads (expected in RNA-Seq data) +> > > +> > > ![Sequence Counts](../../images/ref-based/fastqc_sequence_counts_plot.png "Sequence Counts") > > > -> > > ![Sequence Counts](../../images/ref-based/fastqc_sequence_counts_plot.png "Sequence Counts") +> > > The "Per base sequence quality" is globally good with a slight decrease at the end of the sequences. For `GSM461180_2`, the decrease is quite large. > > > -> > > - The "Per base sequence quality" is globally good with a slight decrease at the end of the sequences. For `GSM461180_2`, the decrease is quite large. +> > > ![Sequence Quality](../../images/ref-based/fastqc_per_base_sequence_quality_plot.png "Sequence Quality") > > > -> > > ![Sequence Quality](../../images/ref-based/fastqc_per_base_sequence_quality_plot.png "Sequence Quality") +> > > The mean quality score over the reads is quite high, but the distribution is slightly different for `GSM461180_2` > > > -> > > - The mean quality score over the reads is quite high, but the distribution is slightly different for `GSM461180_2` +> > > ![Per Sequence Quality Scores](../../images/ref-based/fastqc_per_sequence_quality_scores_plot.png "Per Sequence Quality Scores") > > > -> > > ![Per Sequence Quality Scores](../../images/ref-based/fastqc_per_sequence_quality_scores_plot.png "Per Sequence Quality Scores") +> > > Reads are not really following a normal distribution of GC content, except `GSM461180_2` > > > -> > > - Reads are not really following a normal distribution of GC content, except `GSM461180_2` +> > > ![Per Sequence GC Content](../../images/ref-based/fastqc_per_sequence_gc_content_plot.png "Per Sequence GC Content") > > > -> > > ![Per Sequence GC Content](../../images/ref-based/fastqc_per_sequence_gc_content_plot.png "Per Sequence GC Content") +> > > Few N in the reads > > > -> > > - Few N in the reads +> > > ![Per base N content](../../images/ref-based/fastqc_per_base_n_content_plot.png "Per base N content") > > > -> > > ![Per base N content](../../images/ref-based/fastqc_per_base_n_content_plot.png "Per base N content") +> > > Duplicated sequences: >10 to >500 > > > -> > > - Duplicated sequences: >10 to >500 +> > > ![Sequence Duplication Levels](../../images/ref-based/fastqc_sequence_duplication_levels_plot.png "Sequence Duplication Levels") > > > -> > > ![Sequence Duplication Levels](../../images/ref-based/fastqc_sequence_duplication_levels_plot.png "Sequence Duplication Levels") -> > > - Almost no known adapters and overrepresented sequences +> > > Almost no known adapters and overrepresented sequences > > > > > > 2. If the quality of the reads is not good, we should: > > > 1. Check what is wrong and think about it: it may come from the type of sequencing or what we sequenced (high quantity of overrepresented sequences in transcriptomics data, biaised percentage of bases in HiC data) @@ -204,7 +205,7 @@ Sequence quality control is therefore an essential first step in your analysis. > {: .hands_on} -We should trim sequenced read to get rid of bases that were sequenced with high uncertainty (= low quality bases) at the read ends but also remove the reads of overall bad quality. +We should trim the reads to get rid of bases that were sequenced with high uncertainty (i.e. low quality bases) at the read ends, and also remove the reads of overall bad quality. {% include topics/sequence-analysis/tutorials/quality-control/paired_end_question.md forward="GSM461177_1" reverse="GSM461177_2" %} @@ -234,7 +235,7 @@ We should trim sequenced read to get rid of bases that were sequenced with high > > 2. How many sequence pairs have been removed because at least one read was shorter than the length cutoff? > > > > > ### {% icon solution %} Solution -> > > 1. For `GSM461177`, 5,072,810 bp has been trimmed for the forward reads (read 1) and 8,648,619 bp on the reverse (read 2) because of quality. For `GSM461180`, 10,224,537 bp on forward and 51,746,850 bp on the reverse. It is not a surprise: we saw that at the end of the sequences the quality was dropping more for the reverse reads than for the forward reads, specially for `GSM461180_2`. +> > > 1. For `GSM461177`, 5,072,810 bp has been trimmed for the forward reads (read 1) and 8,648,619 bp on the reverse (read 2) because of quality. For `GSM461180`, 10,224,537 bp on forward and 51,746,850 bp on the reverse. It is not a surprise: we saw that at the end of the reads the quality was dropping more for the reverse reads than for the forward reads, especially for `GSM461180`. > > > 2. 147,810 (1.4%) reads were too short for `GSM461177` and 1,101,875 (9%) for `GSM461180`. > > {: .solution } > {: .question} @@ -242,27 +243,22 @@ We should trim sequenced read to get rid of bases that were sequenced with high # Mapping -To make sense of the reads, we need to first figure out where the sequenced DNA fragments originated from in the genome, so we can then determine to which genes they belong. - -This process is known as aligning or 'mapping' the reads to a reference. This is equivalent to solving a jigsaw puzzle, but unfortunately, not all pieces are unique. +To make sense of the reads, we need to first figure out where the sequences originated from in the genome, so we can then determine to which genes they belong. When a reference genome for the organism is available, this process is known as aligning or "mapping" the reads to the reference. This is equivalent to solving a jigsaw puzzle, but unfortunately, not all pieces are unique. > ### {% icon comment %} Comment > > Do you want to learn more about the principles behind mapping? Follow our [training]({% link topics/sequence-analysis/tutorials/mapping/tutorial.md %}). {: .comment} -As a reference genome for *Drosophila melanogaster* is available, we can map the sequences to this genome in order to identify which genes are affected by the *Pasilla* gene depletion. +In this study, the authors used *Drosophila melanogaster* cells. We should then map the quality-controlled sequences to the reference genome of *Drosophila melanogaster*. {% include topics/sequence-analysis/tutorials/mapping/ref_genome_explanation.md answer_3="The genome of *Drosophila melanogaster* is known and assembled and it can be used as the reference genome in this analysis. Note that new versions of reference genomes may be released if the assembly improves, for this tutorial we are going to use the release 6 of the *Drosophila melanogaster* reference genome assembly [(dm6)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4383921/)."%} -With eukaryotic transcriptomes most reads originate from processed mRNAs lacking introns, therefore they cannot be simply mapped back to the genome as we normally do for DNA data. Instead the reads must be separated into two categories: - -- Reads that can be mapped entirely within an exon -- Reads spanning two or more exons +With eukaryotic transcriptomes most reads originate from processed mRNAs lacking introns: -![Five types of RNA-Seq reads](../../images/five_type_rna_seq_reads.png "The five types of RNA-seq reads (Figure 1a from {% cite kim2015hisat %})") +![Types of RNA-Seq reads](../../images/ref-based/rna-seq-reads.png "The types of RNA-seq reads (adaption of the Figure 1a from {% cite kim2015hisat %}): reads that mapped entirely within an exon (in red), reads spanning over 2 exons (in blue), read spanning over more than 2 exons (in purple)") -Spliced mappers have been developed to efficiently map transcript-derived reads against genomes: +Therefore they cannot be simply mapped back to the genome as we normally do for DNA data. Spliced-awared mappers have been developed to efficiently map transcript-derived reads against a reference genome: ![Splice-aware alignment](../../images/splice_aware_alignment.png "Principle of spliced mappers: (1) identification of the reads spanning a single exon, (2) identification of the splicing junctions on the unmapped reads") @@ -296,7 +292,7 @@ Spliced mappers have been developed to efficiently map transcript-derived reads ## Mapping -We will map our RNA reads to the *Drosophila melanogaster* genome using **STAR** ({% cite dobin2013star %}). +We will map our reads to the *Drosophila melanogaster* genome using **STAR** ({% cite dobin2013star %}). > ### {% icon hands_on %} Hands-on: Spliced mapping > @@ -342,7 +338,7 @@ We will map our RNA reads to the *Drosophila melanogaster* genome using **STAR** > > > > > ### {% icon solution %} Solution > > > -> > > 1. More than 83% for GSM461177 and more than 79% for GSM461180 +> > > 1. More than 83% for GSM461177 and more than 79% for GSM461180. We can proceed with the analysis since only percentages below 70% should be investigated for potential contamination. > > > 2. We also have access to the number and percentage of reads that are mapped at several location, mapped at too many different location, not mapped because too short. > > > > > > ![STAR Alignment Scores](../../images/ref-based/star_alignment_plot.png "Alignment scores") @@ -353,15 +349,15 @@ We will map our RNA reads to the *Drosophila melanogaster* genome using **STAR** > {: .question} {: .hands_on} -**STAR** generates a BAM file with the mapped reads. +According to the **MultiQC** report, more than 80% of reads for both samples are mapped exactly once to the reference genome. We can proceed with the analysis since only percentages below 70% should be investigated for potential contamination. Both samples have a low (less than 10%) percentage of reads that mapped to multiple locations on the reference genome. This is in the normal range for Illumina short-read sequencing, but may be lower for newer long-read sequencing datasets that can span larger repeated regions in the reference genome. + +The main output of **STAR** is a BAM file. {% include topics/sequence-analysis/tutorials/mapping/bam_explanation.md mapper="RNA STAR" %} ## Inspection of the mapping results -The BAM file contains information about where the reads are mapped on the reference genome. But as it is a binary file containing information for many reads (several million for these samples), it is difficult to inspect and explore the file. - -A powerful tool to visualize the content of BAM files is the Integrative Genomics Viewer (**IGV**, {% cite robinson2011integrative %}). +The BAM file contains information for all our reads, making it difficult to inspect and explore in text format. A powerful tool to visualize the content of BAM files is the Integrative Genomics Viewer (**IGV**, {% cite robinson2011integrative %}). > ### {% icon hands_on %} Hands-on: Inspection of mapping results > @@ -571,18 +567,18 @@ A powerful tool to visualize the content of BAM files is the Integrative Genomic > Now that we have checked the results of the read mapping, we can proceed to the next phase of the analysis. {: .details} -After the mapping, we have the information on where the reads are located on the reference genome. We also know how well they were mapped. The next step in RNA-Seq data analysis is quantification of the number of reads mapped to genomic features (genes, transcripts, exons, ...). +After the mapping, we have now the information on where the reads are located on the reference genome and how well they were mapped. The next step in RNA-Seq data analysis is quantification of the number of reads mapped to genomic features (genes, transcripts, exons, ...). > ### {% icon comment %} Comment > > The quantification depends on both the reference genome (the FASTA file) and its associated annotations (the GTF file). It is extremely important to use an annotation file that corresponds to the same version of the reference genome you used for the mapping (e.g. `dm6` here), as the chromosomal coordinates of genes are usually different amongst different reference genome versions. {: .comment} -In order to identify genes that are regulated by the *Pasilla* gene, we need to identify genes which are differentially expressed between samples with PS gene depletion (treated) and control (untreated) samples. +Here we will focus on the genes as we would like to identify the ones that are differentially expressed because of the Pasilla gene knockdown. # Counting the number of reads per annotated gene -To compare the expression of single genes between different conditions (*e.g.* with or without PS depletion), an essential first step is to quantify the number of reads per gene. +To compare the expression of single genes between different conditions (*e.g.* with or without PS depletion), an essential first step is to quantify the number of reads per gene, or more specifically the number of reads mapping to the exons of each gene. ![Counting the number of reads per annotated gene](../../images/gene_counting.png "Counting the number of reads per annotated gene") @@ -609,13 +605,13 @@ To compare the expression of single genes between different conditions (*e.g.* w > {: .solution} {: .question} -Two main tools could be used for that: [**HTSeq-count**](http://htseq.readthedocs.io/en/release_0.9.1/count.html) ({% cite anders2015htseq %}) or **featureCounts** ({% cite liao2013featurecounts %}). FeatureCounts is considerably faster and requires far less computational resources, so we will use it here. +Two main tools could be used for that: [**HTSeq-count**](http://htseq.readthedocs.io/en/release_0.9.1/count.html) ({% cite anders2015htseq %}) or **featureCounts** ({% cite liao2013featurecounts %}). **featureCounts** is considerably faster and requires far less computational resources, so we will use it here. -In principle, the counting of reads overlapping with genomic features is a fairly simple task. But there are some details that need to be given to **featureCounts**: for example the strandness. +In principle, the counting of reads overlapping with genomic features is a fairly simple task. But there are some details that need to be given to **featureCounts**, e.g. the strandness. ## Estimation of the strandness -RNAs that are typically targeted in RNA-Seq experiments are single stranded (*e.g.*, mRNAs) and thus have polarity (5' and 3' ends that are functionally distinct). During a typical RNA-Seq experiment the information about strandness is lost after both strands of cDNA are synthesized, size selected, and converted into a sequencing library. However, this information can be quite useful for the read counting step: +RNAs that are typically targeted in RNA-Seq experiments are single stranded (*e.g.*, mRNAs) and thus have polarity (5' and 3' ends that are functionally distinct). During a typical RNA-Seq experiment the information about strandness is lost after both strands of cDNA are synthesized, size selected, and converted into a sequencing library. However, this information can be quite useful for the read counting step, especially for reads located on the overlap of 2 genes that are on different strands. ![Why strandness?](../../images/ref-based/strandness_why.png "Read1 will be assigned to gene1 located on the forward strand but Read2 could be assigned to gene1 (forward strand) or gene2 (reverse strand) depending if the strandness information is conserved.") @@ -639,7 +635,7 @@ Some library preparation protocols create so called *stranded* RNA-Seq libraries This information should be provided with your FASTQ files, ask your sequencing facility! If not, try to find it on the site where you downloaded the data or in the corresponding publication. -Another option is to estimate these parameters with a tool called **Infer Experiment** from the RSeQC ({% cite wang2012rseqc %}) tool suite. This tool takes the output of your mappings (BAM files), selects a subsample of your reads and compares their genome coordinates and strands with those of the reference gene model (from an annotation file). Based on the strand of the genes, it can gauge whether sequencing is strand-specific, and if so, how reads are stranded (forward or reverse): +Another option is to estimate these parameters with a tool called **Infer Experiment** from the RSeQC ({% cite wang2012rseqc %}) tool suite. This tool takes the BAM files from the mapping, selects a subsample of the reads and compares their genome coordinates and strands with those of the reference gene model (from an annotation file). Based on the strand of the genes, it can gauge whether sequencing is strand-specific, and if so, how reads are stranded (forward or reverse): ![How to estimate the strandness?](../../images/ref-based/strandness_cases.png "In a stranded forward library, reads map mostly on the genes located on forward strand (here gene1). With stranded reverse library, reads map mostly on genes on the reverse strand (here gene2). With unstranded library, reads maps on genes on both strands.") @@ -656,6 +652,7 @@ Another option is to estimate these parameters with a tool called **Infer Experi {: .hands_on} **Infer Experiment** {% icon tool %} tool generates one file with information on: + - Paired-end or single-end library - Fraction of reads failed to determine - 2 lines @@ -750,17 +747,15 @@ We now run **featureCounts** to count the number of reads per annotated gene. > {: .hands_on} -The main output of **featureCounts** is a table with the counts for each genes in the provided annotation. +The main output of **featureCounts** is a table with the counts, i.e. the number of reads (or fragments in the case of paired-end reads) mapped to each gene (in rows, with their ID in the first column) in the provided annotation. **FeatureCount** generates also the **feature length** output datasets. We will need this file later on when we will run the **goseq** tool. > ### {% icon question %} Question > -> 1. What information does the generated table contain? -> 2. Which feature has the most counts for both samples? (Hint: Use the Sort tool) +> Which feature has the most counts for both samples? (Hint: Use the Sort tool) > > > ### {% icon solution %} Solution > > -> > 1. The table has two columns: the gene ID and the number of reads (or fragments in the case of paired-end reads) mapped to the gene -> > 2. To display the most abundantly detected feature, we need to sort the table of counts. This can be done using the **Sort** {% icon tool %} tool: +> > To display the most abundantly detected feature, we need to sort the table of counts. This can be done using the **Sort** {% icon tool %} tool: > > - {% icon param-file %} *"Sort Query"*: count file, output of by **featureCounts** > > - *"Number of header"*: `1` > > - In *"1: Column selections"*: @@ -805,8 +800,6 @@ The main output of **featureCounts** is a table with the counts for each genes i > {: .solution} {: .question} -**FeatureCount** generates also the **feature length** output datasets. We will need this file later on when we will run the **goseq** tool. - Here we counted reads mapped to genes for two samples. It is really interesting to redo the same procedure on the other datasets, especially to check how parameters differ given the different type of data (single-end versus paired-end). > ### {% icon hands_on %} (Optional) Hands-on: Re-run on the other datasets @@ -1113,7 +1106,7 @@ This expression analysis is estimated from read counts and attempts are made to > We recommend to combine the count tables for different technical replicates (but not for biological replicates) before a differential expression analysis (see [DESeq2 documentation](http://bioconductor.org/packages/devel/bioc/vignettes/DESeq2/inst/doc/DESeq2.html#collapsing-technical-replicates)) {: .details} -Multiple factors with several levels can then be incorporated in the analysis. After normalization we can compare the response of the expression of any gene to the presence of different levels of a factor in a statistically reliable way. +Multiple factors with several levels can then be incorporated in the analysis describing known sources of variation (e.g. treatment, tissue type, gender, batches), with several levels representing the conditions for one factor. After normalization we can compare the response of the expression of any gene to the presence of different levels of a factor in a statistically reliable way. In our example, we have samples with two varying factors that can contribute to differences in gene expression: @@ -1131,27 +1124,23 @@ Here, treatment is the primary factor that we are interested in. The sequencing > > 1. **DESeq2** {% icon tool %} with the following parameters: > - *"how"*: `Select datasets per level` -> - In *"Factor"*: -> - In "1: Factor" -> - *"Specify a factor name"*: `Treatment` -> - In *"Factor level"*: -> - In *"1: Factor level"*: -> - *"Specify a factor level"*: `treated` -> - {% icon param-files %} *"Counts file(s)"*: the 3 gene count files with `treat` in their name -> - In *"2: Factor level"*: -> - *"Specify a factor level"*: `untreated` -> - {% icon param-files %} *"Counts file(s)"*: the 4 gene count files with `untreat` in their name -> -> - Click on {% icon param-repeat %} *"Insert Factor"* (not on "Insert Factor level") -> - In "2: Factor" -> - "Specify a factor name" to `Sequencing` -> - In *"Factor level"*: -> - In *"1: Factor level"*: -> - *"Specify a factor level"*: `PE` -> - {% icon param-files %} *"Counts file(s)"*: the 4 gene count files with `paired` in their name -> - In *"2: Factor level"*: -> - *"Specify a factor level"*: `SE` -> - {% icon param-files %} *"Counts file(s)"*: the 3 gene count files with `single` in their name +> - In "1: Factor" +> - *"Specify a factor name"*: `Treatment` +> - In *"1: Factor level"*: +> - *"Specify a factor level"*: `treated` +> - {% icon param-files %} *"Counts file(s)"*: the 3 gene count files with `treat` in their name +> - In *"2: Factor level"*: +> - *"Specify a factor level"*: `untreated` +> - {% icon param-files %} *"Counts file(s)"*: the 4 gene count files with `untreat` in their name +> - Click on {% icon param-repeat %} *"Insert Factor"* (not on "Insert Factor level") +> - In "2: Factor" +> - "Specify a factor name" to `Sequencing` +> - In *"1: Factor level"*: +> - *"Specify a factor level"*: `PE` +> - {% icon param-files %} *"Counts file(s)"*: the 4 gene count files with `paired` in their name +> - In *"2: Factor level"*: +> - *"Specify a factor level"*: `SE` +> - {% icon param-files %} *"Counts file(s)"*: the 3 gene count files with `single` in their name > - *"Files have header?"*: `No` > - *"Visualising the analysis results"*: `Yes` > - *"Output normalized counts table"*: `Yes` @@ -1320,7 +1309,7 @@ Now we would like to extract the most differentially expressed genes due to the We now have a table with 130 lines corresponding to the most differentially expressed genes. For each gene, we have its ID, its mean normalized counts (averaged over all samples from both conditions), its $$log_{2} FC$$ and other information. -The ID for each gene is something like FBgn0003360, which is an ID from the corresponding database, here Flybase. These IDs are unique but sometimes we prefer to have the gene names, even if they may not reference an unique gene (e.g. duplicated after re-annotation). But gene names may hint already to a function or they help you to search for desired candidates. We would also like to have the location of these genes within the genome. To do that, we need do add extra annotations from the annotation file which we used for mapping and counting. +The ID for each gene is something like FBgn0003360, which is an ID from the corresponding database, here Flybase ({% cite thurmond2018flybase %}). These IDs are unique but sometimes we prefer to have the gene names, even if they may not reference an unique gene (e.g. duplicated after re-annotation). But gene names may hint already to a function or they help you to search for desired candidates. We would also like to display the location of these genes within the genome. We can extract such information from the annotation file which we used for mapping and counting. > ### {% icon hands_on %} Hands-on: Annotation of the differentially expressed genes > @@ -1338,6 +1327,7 @@ The ID for each gene is something like FBgn0003360, which is an ID from the corr {: .hands_on} The generated output is an extension of the previous file: + 1. Gene identifiers 2. Mean normalized counts over all samples 3. Log2 fold change @@ -1391,6 +1381,7 @@ The column names may not be precise so we would like to add them before going fu We could plot the $$log_{2} FC$$ for the extracted genes, but here we would like to look at a heatmap of expression for these genes in the different samples. So we need to extract the normalized counts for these genes. We proceed in several steps: + - Extract and plot the normalized counts for these genes for each sample with a heatmap, using the normalized count file generated by DESeq2 - Compute, extract and plot the Z-score of the normalized counts @@ -1406,7 +1397,7 @@ We proceed in several steps: To extract the normalized counts for the interesting genes, we join the normalized count table generated by DESeq2 with the table we just generated. We will then keep only the lines corresponding to the most differentially expressed genes. > ### {% icon hands_on %} Hands-on: Extract the normalized counts of the most differentially expressed genes -> 3. **Join two Datasets** {% icon tool %} with the following parameters: +> 1. **Join two Datasets** {% icon tool %} with the following parameters: > - {% icon param-file %} *"Join"*: the `Normalized counts` file (output of **DESeq2** {% icon tool %}) > - *"using column"*: `Column: 1` > - {% icon param-file %} *"with"*: `Genes with significant adj p-value & abs(FC) > 2` @@ -1416,7 +1407,7 @@ To extract the normalized counts for the interesting genes, we join the normaliz > > The generated file has more columns than we need for the heatmap: mean normalized counts, $$log_{2} FC$$ and other annotation information. We need to remove the extra columns. > -> 4. **Cut** {% icon tool %} to extract the columns with the gene IDs and normalized counts: +> 2. **Cut** {% icon tool %} to extract the columns with the gene IDs and normalized counts: > - *"Cut columns"*: `c1-c8` > - *"Delimited by"*: `Tab` > - {% icon param-file %} *"From"*: the joined dataset (output of **Join two Datasets** {% icon tool %}) @@ -1469,6 +1460,7 @@ The Z-score $$z_{i,j}$$ for a gene $$i$$ in a sample $$j$$ given the normalized {: .comment} To compute the Z-score, we break the process into 2 steps: + 1. Substract each value by the mean of values in the row (i.e. $$x_{i,j}- \overline{x_i}$$) using the normalized count table 2. Divide the previous values by the standard deviation of values of row, using 2 tables (the normalized counts and the table computed in the previous step) @@ -1535,18 +1527,19 @@ We would like now to plot a heatmap for the Z-scores: # Functional enrichment analysis of the DE genes -We have extracted genes that are differentially expressed in treated (PS gene-depleted) samples compared to untreated samples. Now, we would like to know if the differentially expressed genes are enriched transcripts of genes which belong to more common or specific categories to classify their potential function a bit better. These categories are called Gene Ontologies (GO). +We have extracted genes that are differentially expressed in treated (PS gene-depleted) samples compared to untreated samples. Now, we would like to know if the differentially expressed genes are enriched transcripts of genes which belong to more common or specific categories in order to identify biological functions that might be impacted. ## Gene Ontology analysis [Gene Ontology (GO)](http://www.geneontology.org/) analysis is widely used to reduce complexity and highlight biological processes in genome-wide expression studies. However, standard methods give biased results on RNA-Seq data due to over-detection of differential expression for long and highly-expressed transcripts. -The [**goseq**](https://bioconductor.org/packages/release/bioc/vignettes/goseq/inst/doc/goseq.pdf) tool ({% cite young2010gene %}) provides methods for performing GO analysis of RNA-Seq data, taking length bias into account. The methods and software used by goseq are equally applicable to other category based tests of RNA-Seq data, such as KEGG pathway analysis. +[**goseq**](https://bioconductor.org/packages/release/bioc/vignettes/goseq/inst/doc/goseq.pdf) ({% cite young2010gene %}) provides methods for performing GO analysis of RNA-Seq data while taking length bias into account. **goseq** could also be applied to other category based tests of RNA-Seq data, such as KEGG pathway analysis, as discussed in a further section. **goseq** needs 2 files as inputs: + - A tabular file with the differentially expressed genes from all genes assayed in the RNA-Seq experiment with 2 columns: - the Gene IDs (unique within the file), in uppercase letters - - a boolean telling if the gene is differentially expressed or not: `True` if differentially expressed or `False` if not + - a boolean indicating whether the gene is differentially expressed or not (`True` if differentially expressed or `False` if not) - A file with information about the length of a gene to correct for potential length bias in differentially expressed genes > ### {% icon hands_on %} Hands-on: Prepare the datasets for goseq @@ -1600,7 +1593,8 @@ We have now the two required input files for goseq. **goseq** generates with these parameters 3 outputs: -1. A big table (`Ranked category list - Wallenius method`) with the following columns for each GO term: +1. A table (`Ranked category list - Wallenius method`) with the following columns for each GO term: + 1. `category`: GO category 2. `over_rep_pval`: *p*-value for over-representation of the term in the differentially expressed genes 3. `under_rep_pval`: *p*-value for under-representation of the term in the differentially expressed genes @@ -1648,7 +1642,7 @@ We have now the two required input files for goseq. 3. A table with the differentially expressed genes (from the list we provided) associated to the GO terms (`DE genes for categories (GO/KEGG terms)`) -> ### {% icon comment %} Advanced tutorial on visualization +> ### {% icon comment %} Advanced tutorial on enrichment analysis > > In this tutorial, we covered GO enrichment analysis with **goseq**. To learn other gene set enrichment analysis, please have a look at the ["RNA-Seq genes to pathways"]({% link topics/transcriptomics/tutorials/rna-seq-genes-to-pathways/tutorial.md %}) tutorial. {: .comment} @@ -1701,6 +1695,7 @@ As for the GO terms, 2 files are generated: We could investigate which genes are involved in which pathways by looking at the second file generated by **goseq**. But it can be cumbersome and we would like to see the pathways as represented in the previous image. **Pathview** ({% cite luo2013pathview %}) can help to generate automatically similar images as the previous one but also add extra information about the genes (e.g. expression) in our study. This tool needs 2 main information as inputs: + - Pathway ID(s) to plot, either as just one ID or as a file with one column with the pathway IDs - A tabular file with the genes in the RNA-Seq experiment with 2 (or more) columns: - the gene IDs (unique within the file) diff --git a/topics/transcriptomics/tutorials/rna-interactome/data-library.yaml b/topics/transcriptomics/tutorials/rna-interactome/data-library.yaml new file mode 100644 index 00000000000000..40c9a28babfc27 --- /dev/null +++ b/topics/transcriptomics/tutorials/rna-interactome/data-library.yaml @@ -0,0 +1,35 @@ +--- +destination: + type: library + name: GTN - Material + description: Galaxy Training Network Material + synopsis: Galaxy Training Network Material. See https://training.galaxyproject.org +items: +- name: RNA interactome + description: RNA interactome data analysis + items: + - name: Chimeric Read Analysis from RNA-RNA interactome data + items: + - name: 'DOI: 10.5281/zenodo.3709188' + description: latest + items: + - url: https://zenodo.org/api/files/be3bc8ed-75bd-4470-b662-bca1a503b28d/miRNA_mature.fa.gz + src: url + ext: fasta.gz + info: https://zenodo.org/record/3709188 + - url: https://zenodo.org/api/files/be3bc8ed-75bd-4470-b662-bca1a503b28d/Mus_musculus.GRCm38.dna.fa.gz + src: url + ext: fasta.gz + info: https://zenodo.org/record/3709188 + - url: https://zenodo.org/api/files/be3bc8ed-75bd-4470-b662-bca1a503b28d/SRR2413302.100k.fastq.gz + src: url + ext: fastqsanger.gz + info: https://zenodo.org/record/3709188 + - url: https://zenodo.org/api/files/be3bc8ed-75bd-4470-b662-bca1a503b28d/transcriptome.fa.gz + src: url + ext: fasta.gz + info: https://zenodo.org/record/3709188 + - url: https://zenodo.org/api/files/be3bc8ed-75bd-4470-b662-bca1a503b28d/whole_transcriptome.gff.gz + src: url + ext: gff.gz + info: https://zenodo.org/record/3709188 diff --git a/topics/transcriptomics/tutorials/rna-interactome/tutorial.md b/topics/transcriptomics/tutorials/rna-interactome/tutorial.md new file mode 100644 index 00000000000000..03215e206c912e --- /dev/null +++ b/topics/transcriptomics/tutorials/rna-interactome/tutorial.md @@ -0,0 +1,335 @@ +--- +layout: tutorial_hands_on + +title: RNA-RNA interactome data analysis +zenodo_link: https://zenodo.org/record/3696889 +questions: +- What are the difficulties in mapping chimeric reads from RNA interactome data? +- How multi mapping is a big problem in these datasets? +- How to filter for meaningful results from large analysis output files? +objectives: +- Quality control and data preparation +- Mapping chimeric reads +- Quantification of the mapped loci +- Visualization and filtering of results +time_estimation: 2H +contributors: +- pavanvidem + +--- + + +# Introduction +{:.no_toc} + +<!-- This is a comment. --> + +With the advances in the next-generation sequencing technologies, genome-wide RNA-RNA interaction predictions are now +possible. The most recent line of development has been to ligate the microRNA to the site-specific interaction region of + the target, selecting these interactions via cross-linking to one of the Argonaute proteins required for microRNA-based + regulation, and to sequence the resulting chimeric RNA molecule, for example, the CLASH and CLEAR-CLIP protocols. +Going beyond microRNAs, these protocols can be applied to RNA interactions that involve a regulatory protein +other than Argonaute. To generalize even further, researchers have applied the same idea to the detection of all +transcriptome-wide RNA-RNA interactions, which include both inter- and intramolecular base pairing without the necessity + of choosing a specific regulatory protein for cross-linking. These protocols include LIGR-Seq that maps the human + RNA-RNA interactome and PARIS that focused on long-range structures in human and mouse. + +The reads from these experiments are chimeric with each arm generated from one of the interaction +partners. Due to short lengths, often these sequenced arms ambiguously map to multiple locations and inferring the +origin of these can be quite complicated. Theoretically, alignment tools like `HISAT2` and `STAR` can be used to align +chimeric reads, but they are not efficient at this task. The other alignment tools like `BWA-MEM` or `Bowtie2` can be +used in local alignment settings to map these chimeric reads. In this case user needs to adjust the alignment parameters +to match the read lengths and there needs to be a lot of post-processing to be done to choose the best hits. Recently, +there is also an alignment tool called `CLAN` published to specifically map the chimeric reads from CLASH experiments. + +In this tutorial, we will learn the analysis of a CLEAR-CLIP data set using a tool suite called `ChiRA`. The data used +is a random subsampling (100k reads) of a mouse cortex sample +([GSM1881541](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSM1881541)) prepared using CLEAR-CLIP protocol. It is +a complete analysis framework that can be used starting from raw sequencing reads to analysis and visualization of +results. `ChiRA` uses `BWA-MEM` or `CLAN` to map the reads. Subsequently, it also merges the overlappig alignments and + chooses the best alignments per read by quantifying the all the loci that reads map to. In the end, it scores each + alignment and outputs only the best alignments per read. The final part of this tutorial gives an insight into how to + filter, export and visualize your results using the visualization framework `ChiRAViz`. + + +![ChiRA workflow](../../images/rna-interactome/chira.png "ChiRA workflow. First the reads deduplicated and mapped to transcriptome. Then the mapped loci are merged based on overlapping. The merged loci are quantified and the interactions are scored and reported.") + +> ### Agenda +> +> In this tutorial, we will cover: +> +> 1. TOC +> {:toc} +> +{: .agenda} + +# Get data + +> ### {% icon hands_on %} Hands-on: Data upload +> +> 1. Create a new history for this tutorial +> 2. Import the files from [Zenodo](https://zenodo.org/record/3709188) or from the shared data library +> +> ``` +> https://zenodo.org/record/3709188/files/miRNA_mature.fa.gz +> https://zenodo.org/record/3709188/files/Mus_musculus.GRCm38.dna.fa.gz +> https://zenodo.org/record/3709188/files/SRR2413302.100k.fastq.gz +> https://zenodo.org/record/3709188/files/transcriptome.fa.gz +> https://zenodo.org/record/3709188/files/whole_transcriptome.gff.gz +> ``` +> +> {% include snippets/import_via_link.md %} +> {% include snippets/import_from_data_library.md %} +> +> 3. Rename the datasets +> 4. Check that the datatype +> +> {% include snippets/change_datatype.md datatype="datatypes" %} +> +> 5. Add to each database a tag corresponding to ... +> +> {% include snippets/add_tag.md %} +> +{: .hands_on} + +# Preprocessing + +Before starting with the analysis of data it is always good to check the sequenced reads for low quality bases and +adapters. + +## Quality control + +> ### {% icon hands_on %} Hands-on: Quality check +First use `FastQC` to assess the read quality +> +> 1. **FastQC** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Short read data from your current history"*: `SRR2413302.100k.fastq.gz` (Input dataset) +> +{: .hands_on} + +> ### {% icon question %} Questions +> +> 1. Why do you think `FastQC` failed to find any adapters? +> +> > ### {% icon solution %} Solution +> > +> > 1. Because `FastQC` it uses a set of standard adapters to screen for adapters. The "special" adapters used in this +library preparation are not present in the `FastQC` standard adapters list. +> > +> {: .solution} +> +{: .question} + +## Adapter trimming +Due to the inefficiency of the current RNA interactome protocols, not all reads are not made up of RNA hybrids. In some +cases, reads contain single RNA fragments with adapters or nothing but only adapters. Hence adapter removal is a very important step +in this analysis. In this step, we use `cutadapt` to trim the adapters. As the adapters used in this library are not +standard Illumina adapters, we need to provide them manually. + +> ### {% icon hands_on %} Hands-on: Adapter trimming +We use `cutadapt` to trim the adapter content +> +> 1. **cutadapt** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"FASTQ/A file"*: `SRR2413302.fastq` (Input dataset) +> - In *"Read 1 Options"* +> - *"3' (End) Adapters"* -> *"Insert 3' (End) Adapters"* +> - *"Source"*: `Enter Custom sequence` +> - *"Enter custom 3' adapter sequence"*: `GTGTCAGTCACTTCCAGCGG` +> - *"5' (Front) Adapters"* -> *"Insert 5' (Front) Adapters"* +> - *"Source"*: `Enter Custom sequence` +> - *"Enter custom 5' adapter sequence"*: `NNNNAGGGAGGACGATGCGG` +> - In *"Filter Options"* +> - *"Minimum length"*: `10` +> +{: .hands_on} + + +> ### {% icon hands_on %} Hands-on: Post adapter trimming quality check +It is interesting to see whether our manually entered adapters were trimmed +> +> 1. **FastQC** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Short read data from your current history"*: `Read 1 Output` (output of **cutadapt** {% icon tool %}) +> - Observe the **Per base sequence content** +> ![FastQC per base sequence content](../../images/rna-interactome/chira_fastqc_seq_content.png) +{: .hands_on} +> ### {% icon question %} Questions +> +> 1. Would you be concerned about the abnormal "Per base sequence content towards the end"? +> +> > ### {% icon solution %} Solution +> > +> > 1. Normally yes, but in this case not. Always look at this plot in combination with "Sequence Length Distribution" +plot. It looks like there is huge difference in base composition between 56th and 57th bases. But the number of +sequences that constitute this is very important. From the sequence length distribution, almost all the sequences are of + length of 55 bases. Hence the abnormality in the per base sequence content is just because it is from + very few (if not only 1) sequence. +> > +> {: .solution} +> +{: .question} + +# Analysis of interactome data using `ChiRA` tool suite + +The analysis includes several steps that deal with deduplication mapping, quantification and extraction of interacting +partners. + +## Remove duplicate sequences + +First, we eliminate the duplicate sequences from the library to reduce the computational effort. This will also have an +impact on the quantification of the loci because often these identical sequences might be PCR duplicates. + +> ### {% icon hands_on %} Hands-on +> +> 1. **ChiRA collapse** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input FASTQ file"*: `Read 1 Output` (output of **cutadapt** {% icon tool %}) +> +> > ### {% icon tip %} Tip: Dealing with UMIs +> > +> > * If you have UMIs (at the 5' end) in the sequenced reads, please set *"Length of the UMI if present at the 5' end of your reads"*. +> > * The UMI will be trimmed and put in the unique sequence id. +> {: .tip} +> +{: .hands_on} + + +## Map reads to the reference transcriptome + +> ### {% icon hands_on %} Hands-on: Map chimeric reads from fasta file +Here we use `BWA-MEM` aligner in local alignment mode to locate the chimeric arms on the +transcriptome. Your reference can be single or split in two. Two references are +ideal for example if you have CLASH experimental data where you have separate +miRNA and target references. +> +> 1. **ChiRA map** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input FASTA file"*: `fasta file` (output of **ChiRA collapse** {% icon tool %}) +> - *"Single or split reference?"*: `Split reference` +> - {% icon param-file %} *"Reference FASTA file"*: `miRNA_mature.fa` (Input dataset) +> - {% icon param-file %} *"Second reference FASTA file"*: `transcriptome.fa` (Input dataset) +> - *"aligner"*: `BWA-MEM` +> +{: .hands_on} + + +## Merge overlapping alignment information + +In this step, we merge the overlapping aligned positions to define the read concentrated loci. If an annotation GTF file +produced, the transcriptomic alignment positions are first converted to their corresponding genomic positions. The +merging is also done on reads defining which parts of the reads are mapping that indicates potential interacting segments +of read. + +> ### {% icon hands_on %} Hands-on: +> +> 1. **ChiRA merge** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"Input BED file of alignments"*: `ChiRA aligned BED` (output of **ChiRA map** {% icon tool %}) +> - *"Do you have an annotation in GTF format?"*: `Yes` +> - {% icon param-file %} *"Annotations in GTF format"*: `whole_transcriptome.gff.gz` (Input dataset) +> +> > ### {% icon tip %} Tip: Parameters for interactome/structurome data like SPLASH, PARIS +> > +> > * If you have data that contains large interaction regions, the default `Overlap based` merging may not capture whole interaction regions. +> > * In that case use `blockbuster` merging mode and adjust the paramertes accordingly. +> - From *"Select the mode of merging"*: `Gaussian based (blockbuster)` +> {: .tip} +> +{: .hands_on} + +## Quantify aligned loci to score the alignments + +Now we have the loci where the potential interacting read segments are mapped to. Due to the small length of these arms, there is a +very high chance of multi mapping. Another reason for this is the lenient mapping parameters that are used to increase +the mapping sensitivity. Quantification needs 2 files containing read segements and loci where they are mapping to. From +this information, `ChiRA quanitify` tries to infer the correct origin of reads and calculates the expression of the loci +using a simple expectation-maximization algorithm. + +> ### {% icon hands_on %} Hands-on: Task description +> +> 1. **ChiRA qauntify** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"BED file of aligned segments"*: `ChiRA aligned read segments` (output of **ChiRA merge** {% icon tool %}) +> - {% icon param-file %} *"Tabular file of merged alignments"*: `ChiRA merged alignments` (output of **ChiRA merge** {% icon tool %}) +> +{: .hands_on} + +## Extract the best scoring chimeras + +After having the information about the loci expression, the final step extracts only the best scoring interacting +partners for each read. All the combinations of the transcripts that are overlapping with the interacting loci are +reported. If there is more than one locus with the equal best score then all the best hits are reported. If you have the +genomic fasta file the tool can hybridize the interacting loci sequences using `IntaRNA`. + +> ### {% icon hands_on %} Hands-on: Task description +> +> 1. **ChiRA extract** {% icon tool %} with the following parameters: +> - {% icon param-file %} *"File containing CRLs information"*: `ChiRA quantified loci` (output of **ChiRA qauntify** {% icon tool %}) +> - *"Have genomic information?"*: `Yes` +> - {% icon param-file %} *"Annotations in GTF format"*: `whole_transcriptome.gff.gz` (Input dataset) +> - *"Choose the source for the FASTA file"*: `History` +> - {% icon param-file %} *"FASTA file"*: `Mus_musculus.GRCm38.dna.fa.gz` (Input dataset) +> - *"Did you use single or split reference for alignment?"*: `Split reference` +> - {% icon param-file %} *"Reference FASTA file"*: `miRNA_mature.fa` (Input dataset) +> - {% icon param-file %} *"Second reference FASTA file"*: `transcriptome.da` (Input dataset) +> - *"Hybridize"*: `Yes` +> +{: .hands_on} + +# Visualization + +The output tabular file generated in the above step can be huge with up to some millions of rows depending on the +library size and more than 30 columns. Extracting useful data from this can be very tedious. For example, extracting and +visualizing the distribution of target biotypes of your favorite miRNA can be very tricky and might need more than a +hand full of galaxy tools to achieve. For this reason, there exists a visualization and filtering tool for this data along +with `ChiRA` known as `ChiRAViz`. It is a galaxy visualization framework to work with the output of `ChiRA`. But it does +not directly work with the tabular output we have. Rather it needs a "sqlite" database. For this reason, we first build a +sqlite database from the `ChiRA` output. + +> ### {% icon hands_on %} Hands-on: Data preperation +> +> 1. **Query Tabular** {% icon tool %} with the following parameters: +> - In *"Database Table"*: +> - {% icon param-repeat %} *"Insert Database Table"* +> - {% icon param-file %} *"Tabular Dataset for Table"*: `ChiRA chimeric reads` (output of **ChiRA extract** {% icon tool %}) +> - In *"Table Options"* +> - *"Use first line as column names"*: `Yes` +> - *"Save the sqlite database in your history"*: `Yes` +> +> 2. Change the datatype to `chira.sqlite` +> +> {% include snippets/change_datatype.md datatype="chira.sqlite" %} +> +{: .hands_on} + +> ### {% icon hands_on %} Hands-on: Visualize and chimeras +> +> 1. Please click on {% icon galaxy-barchart %} *"Visualize this data"*. Then click on the `ChiRAViz` visualization. +> This loads the data into the visualization framework and shows some basic plots from the data. +> - The visualization split into two to show the left and the right arms information. +> - On home page pie charts of left and right chimeric arms, types of interactions and top 50 expressed RNAs are shown. +>![ChiRAViz home page](../../images/rna-interactome/chiraviz_home.png) +> 2. Then choose the kind of interactions information you want to see. For example, choose the most abundant `miRNA` and `3_prime_UTR` and click on **"Get interactions"**. +> +>![ChiRAViz selector](../../images/rna-interactome/chiraviz_choose.png) +> +> - **"Chimera"** panel in the middle depicts the mapping positions on the read with read length. +> - **"Interacting partners"** panel shows the information on which transcripts the left and right arm are mapping to with their alignment positions on the transcripts. +> - **"Alignment Information"** panel shows the alignment if present with a possibility to download the alignment. +>![ChiRAViz single interaction](../../images/rna-interactome/chiraviz_single.png) +> +{: .hands_on} + +> ### {% icon hands_on %} Hands-on: Filter interactions and export results +> `ChiRAViz` provides filters to search for keywords like gene symbols, sort interactions by score, filter by score or hybridization energy. Then the filtered interactions can be summarized or exported to a file. In this step, we filter the interactions with most abundant miRNA and consider those which have an `IntaRNA` predicted hybrid. +> - Go to the home page by clicking **Home** on the top. +> - Go to the bottom of the home page to the plot showing top 50 symbols based on their expression. +> - Click on the most abundant miRNA `mmu-miR-466i-5p`. This will populate the left panel with all the interactions containing `mmu-miR-466i-5p`. +> - Filter the entries that contain `IntaRNA` hybrid. If there is no hybrid predicted the value in that filed is `NA` +> - From **"Filter by..."** choose `Hybrid` +> - From **"Choose operator..."** choose `<>` +> - Enter `NA` in the value field and hit the enter key. +> - At this point, you can click on **Summary** to view the summary plots for this subset of interactions. +> - Tick **"Check all"** on the bottom left corner and then click on **Export** to export the resulting interactions. +> - This will export all the results to a file. +{: .hands_on} + +# Conclusion +{:.no_toc} + +Though chimeric reads look normal when inspected in a FASTQ file, the origin of each read is from two different RNA fragments. Limitations of the current sequencing protocols limit the length of each sequenced interacting RNA fragment. These smaller RNA fragments are often harder to map considering that the boundaries of each RNA fragment in the read are unknown. In this tutorial, we have seen how to map these reads and infer the true origins of them by quantifying the mapped loci. The visualization framework gives flexibility in filtering and searching output files, visualize the summaries of filtered data as well as exporting them. diff --git a/topics/transcriptomics/tutorials/rna-interactome/workflows/RNA-interactome-analysis.ga b/topics/transcriptomics/tutorials/rna-interactome/workflows/RNA-interactome-analysis.ga new file mode 100644 index 00000000000000..fe166ee8f6670b --- /dev/null +++ b/topics/transcriptomics/tutorials/rna-interactome/workflows/RNA-interactome-analysis.ga @@ -0,0 +1,598 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "RNA-RNA interactome analysis using ChiRA tools uite", + "format-version": "0.1", + "name": "RNA-RNA interactome analysis", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [], + "label": "FASTQ file", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 200 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "3903dadd-157d-46cc-aeda-382d801f8402", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "11ea3f49-0078-4f7e-88f3-8fed6487765d" + } + ] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [], + "label": "1st reference FASTA file", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 289 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "712d65a9-072c-4255-9e6a-8ef132609153", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "f297f71b-4c13-4d70-b3fa-32c9eaadfbe6" + } + ] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_quantify/chira_quantify/1.1.2+galaxy0", + "errors": null, + "id": 10, + "input_connections": { + "merged": { + "id": 9, + "output_name": "merged_bed" + }, + "segments": { + "id": 9, + "output_name": "segments_bed" + } + }, + "inputs": [], + "label": null, + "name": "ChiRA qauntify", + "outputs": [ + { + "name": "loci", + "type": "tabular" + } + ], + "position": { + "left": 1772, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_quantify/chira_quantify/1.1.2+galaxy0", + "tool_shed_repository": { + "changeset_revision": "903f7a4cfbf0", + "name": "chira_quantify", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"segments\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"min_locus_size\": \"\\\"5\\\"\", \"merged\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"crl\": \"\\\"true\\\"\", \"crl_share\": \"\\\"0.7\\\"\", \"__rerun_remap_job_id__\": null, \"em_threshold\": \"\\\"1.0\\\"\"}", + "tool_version": "1.1.2+galaxy0", + "type": "tool", + "uuid": "0c8c33aa-b6b8-4a03-a201-f08befb15060", + "workflow_outputs": [ + { + "label": null, + "output_name": "loci", + "uuid": "c4bc0ce3-cfe2-4812-ab9a-18a8bc238da3" + } + ] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_extract/chira_extract/1.1.2+galaxy0", + "errors": null, + "id": 11, + "input_connections": { + "annotation|fasta_source|fasta": { + "id": 4, + "output_name": "output" + }, + "annotation|gtf": { + "id": 3, + "output_name": "output" + }, + "loci": { + "id": 10, + "output_name": "loci" + }, + "reference|ref_fasta1": { + "id": 1, + "output_name": "output" + }, + "reference|ref_fasta2": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "ChiRA extract", + "outputs": [ + { + "name": "chimeras", + "type": "tabular" + }, + { + "name": "singletons", + "type": "tabular" + } + ], + "position": { + "left": 2100, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_extract/chira_extract/1.1.2+galaxy0", + "tool_shed_repository": { + "changeset_revision": "dea6bc47a47e", + "name": "chira_extract", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"reference\": \"{\\\"__current_case__\\\": 0, \\\"ref_fasta1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"ref_fasta2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"ref_type\\\": \\\"split\\\"}\", \"tpm_cutoff\": \"\\\"0.0\\\"\", \"chimeric_overlap\": \"\\\"2\\\"\", \"loci\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"hybridize\": \"\\\"true\\\"\", \"__rerun_remap_job_id__\": null, \"score_cutoff\": \"\\\"0.0\\\"\", \"annotation\": \"{\\\"__current_case__\\\": 0, \\\"annot_choice\\\": \\\"yes\\\", \\\"fasta_source\\\": {\\\"__current_case__\\\": 0, \\\"fasta\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"fasta_source_selector\\\": \\\"history\\\"}, \\\"gtf\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}}\"}", + "tool_version": "1.1.2+galaxy0", + "type": "tool", + "uuid": "ce6df2a0-1499-400a-9d59-ae87afbcdd61", + "workflow_outputs": [ + { + "label": null, + "output_name": "singletons", + "uuid": "a0dbc038-4cf6-475f-b2c7-71e4871c2303" + }, + { + "label": null, + "output_name": "chimeras", + "uuid": "7cb1d67a-2c73-4f37-822d-3d089236e938" + } + ] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/query_tabular/query_tabular/3.0.0", + "errors": null, + "id": 12, + "input_connections": { + "tables_0|table": { + "id": 11, + "output_name": "chimeras" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Query Tabular", + "name": "add_to_database" + } + ], + "label": null, + "name": "Query Tabular", + "outputs": [ + { + "name": "sqlitedb", + "type": "sqlite" + } + ], + "position": { + "left": 2428, + "top": 200 + }, + "post_job_actions": { + "HideDatasetActionsqlitedb": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "sqlitedb" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/query_tabular/query_tabular/3.0.0", + "tool_shed_repository": { + "changeset_revision": "33d61c89fb8d", + "name": "query_tabular", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"tables\": \"[{\\\"__index__\\\": 0, \\\"input_opts\\\": {\\\"linefilters\\\": []}, \\\"table\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"tbl_opts\\\": {\\\"col_names\\\": \\\"\\\", \\\"column_names_from_first_line\\\": \\\"true\\\", \\\"indexes\\\": [], \\\"load_named_columns\\\": \\\"false\\\", \\\"pkey_autoincr\\\": \\\"\\\", \\\"table_name\\\": \\\"\\\"}}]\", \"save_db\": \"\\\"true\\\"\", \"addqueries\": \"{\\\"queries\\\": []}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"sqlquery\": \"\\\"\\\"\", \"add_to_database\": \"{\\\"withdb\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}}\", \"query_result\": \"{\\\"__current_case__\\\": 0, \\\"header\\\": \\\"yes\\\", \\\"header_prefix\\\": \\\"35\\\"}\", \"modify_database\": \"{\\\"sql_stmts\\\": []}\", \"workdb\": \"\\\"workdb.sqlite\\\"\"}", + "tool_version": "3.0.0", + "type": "tool", + "uuid": "0e5f7bba-78f6-4493-877d-77810e634d5d", + "workflow_outputs": [] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [], + "label": "2nd reference FASTA file", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 398 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "9a1ad53b-13d2-4165-9363-139e71ab4362", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "a5dd02f4-d338-4e29-9487-073de07db0d2" + } + ] + }, + "3": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 3, + "input_connections": {}, + "inputs": [], + "label": "Annotation GTF file", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 507 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "912457cd-b29e-4d31-9371-f7079518cabc", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "f0dbac2f-0662-4eea-9d79-90455e6b8122" + } + ] + }, + "4": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 4, + "input_connections": {}, + "inputs": [], + "label": "Whole genome FASTA file", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 616 + }, + "tool_id": null, + "tool_state": "{}", + "tool_version": null, + "type": "data_input", + "uuid": "3f5597ea-26fd-4a87-b730-6586e25e74c0", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "e3f87532-5000-42ff-862d-8cdbae711bc3" + } + ] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/lparsons/cutadapt/cutadapt/1.16.5", + "errors": null, + "id": 5, + "input_connections": { + "library|input_1": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "Cutadapt", + "outputs": [ + { + "name": "out1", + "type": "fastqsanger" + }, + { + "name": "report", + "type": "txt" + } + ], + "position": { + "left": 460, + "top": 200 + }, + "post_job_actions": { + "HideDatasetActionreport": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "report" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/lparsons/cutadapt/cutadapt/1.16.5", + "tool_shed_repository": { + "changeset_revision": "49370cb85f0f", + "name": "cutadapt", + "owner": "lparsons", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"output_options\": \"{\\\"info_file\\\": \\\"false\\\", \\\"multiple_output\\\": \\\"false\\\", \\\"report\\\": \\\"true\\\", \\\"rest_file\\\": \\\"false\\\", \\\"too_long_file\\\": \\\"false\\\", \\\"too_short_file\\\": \\\"false\\\", \\\"untrimmed_file\\\": \\\"false\\\", \\\"wildcard_file\\\": \\\"false\\\"}\", \"read_mod_options\": \"{\\\"length\\\": \\\"0\\\", \\\"length_tag\\\": \\\"\\\", \\\"nextseq_trim\\\": \\\"0\\\", \\\"prefix\\\": \\\"\\\", \\\"quality_cutoff\\\": \\\"0\\\", \\\"strip_suffix\\\": \\\"\\\", \\\"suffix\\\": \\\"\\\", \\\"trim_n\\\": \\\"false\\\"}\", \"adapter_options\": \"{\\\"count\\\": \\\"1\\\", \\\"error_rate\\\": \\\"0.1\\\", \\\"mask_adapter\\\": \\\"false\\\", \\\"match_read_wildcards\\\": \\\" \\\", \\\"no_indels\\\": \\\"false\\\", \\\"no_trim\\\": \\\"false\\\", \\\"overlap\\\": \\\"3\\\"}\", \"library\": \"{\\\"__current_case__\\\": 0, \\\"input_1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"r1\\\": {\\\"adapters\\\": [{\\\"__index__\\\": 0, \\\"adapter_source\\\": {\\\"__current_case__\\\": 0, \\\"adapter\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"adapter_name\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"adapter_source_list\\\": \\\"user\\\"}}], \\\"anywhere_adapters\\\": [], \\\"cut\\\": \\\"0\\\", \\\"front_adapters\\\": [{\\\"__index__\\\": 0, \\\"front_adapter_source\\\": {\\\"__current_case__\\\": 0, \\\"front_adapter\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"front_adapter_name\\\": {\\\"__class__\\\": \\\"RuntimeValue\\\"}, \\\"front_adapter_source_list\\\": \\\"user\\\"}}]}, \\\"type\\\": \\\"single\\\"}\", \"filter_options\": \"{\\\"discard\\\": \\\"false\\\", \\\"discard_untrimmed\\\": \\\"false\\\", \\\"max\\\": \\\"0\\\", \\\"max_n\\\": \\\"\\\", \\\"min\\\": \\\"10\\\", \\\"pair_filter\\\": \\\"any\\\"}\", \"__rerun_remap_job_id__\": null}", + "tool_version": "1.16.5", + "type": "tool", + "uuid": "144ba49e-64fe-42d7-8a48-42e65c143a6c", + "workflow_outputs": [ + { + "label": null, + "output_name": "out1", + "uuid": "43730f51-c3cc-4a3c-b52c-4868b729f278" + } + ] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_collapse/chira_collapse/1.1.2+galaxy0", + "errors": null, + "id": 6, + "input_connections": { + "in": { + "id": 5, + "output_name": "out1" + } + }, + "inputs": [], + "label": null, + "name": "ChiRA collapse", + "outputs": [ + { + "name": "out", + "type": "fasta" + } + ], + "position": { + "left": 788, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_collapse/chira_collapse/1.1.2+galaxy0", + "tool_shed_repository": { + "changeset_revision": "2a57d2ef04c6", + "name": "chira_collapse", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"umi_len\": \"\\\"0\\\"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"in\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\"}", + "tool_version": "1.1.2+galaxy0", + "type": "tool", + "uuid": "b2d0228a-c9e6-4135-93d3-2320899e04a4", + "workflow_outputs": [ + { + "label": null, + "output_name": "out", + "uuid": "437b9634-e708-4726-80d6-9895821a2fd1" + } + ] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 7, + "input_connections": { + "input_file": { + "id": 5, + "output_name": "out1" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool FastQC", + "name": "limits" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "contaminants" + }, + { + "description": "runtime parameter for tool FastQC", + "name": "adapters" + } + ], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 788, + "top": 340 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\\\"\\\"\", \"kmers\": \"\\\"7\\\"\", \"limits\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"input_file\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"adapters\": \"{\\\"__class__\\\": \\\"RuntimeValue\\\"}\", \"nogroup\": \"\\\"false\\\"\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "7e08144c-3e94-48a7-b216-4fc9b510ad0c", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "efabbe41-e1bd-4868-b354-448601dba564" + }, + { + "label": null, + "output_name": "text_file", + "uuid": "f3bf1924-e981-4fd6-8229-4558eb69e0ff" + } + ] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_map/chira_map/1.1.2+galaxy0", + "errors": null, + "id": 8, + "input_connections": { + "query": { + "id": 6, + "output_name": "out" + }, + "reference|ref_fasta1": { + "id": 1, + "output_name": "output" + }, + "reference|ref_fasta2": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "ChiRA map", + "outputs": [ + { + "name": "mapped_bed", + "type": "bed" + }, + { + "name": "unmapped_fasta", + "type": "fasta" + } + ], + "position": { + "left": 1116, + "top": 200 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_map/chira_map/1.1.2+galaxy0", + "tool_shed_repository": { + "changeset_revision": "39bb70c2764e", + "name": "chira_map", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"reference\": \"{\\\"__current_case__\\\": 0, \\\"ref_fasta1\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"ref_fasta2\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}, \\\"ref_type\\\": \\\"split\\\"}\", \"chimeric_overlap\": \"\\\"2\\\"\", \"query\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"__rerun_remap_job_id__\": null, \"alignment\": \"{\\\"__current_case__\\\": 0, \\\"align_score1\\\": \\\"18\\\", \\\"align_score2\\\": \\\"10\\\", \\\"aligner\\\": \\\"bwa\\\", \\\"seed_length1\\\": \\\"12\\\", \\\"seed_length2\\\": \\\"6\\\", \\\"stranded\\\": \\\"fw\\\"}\"}", + "tool_version": "1.1.2+galaxy0", + "type": "tool", + "uuid": "3d5fd509-97e4-41bf-b4d8-9e8f27efa75c", + "workflow_outputs": [ + { + "label": null, + "output_name": "unmapped_fasta", + "uuid": "9a841054-24b3-47fb-a415-a64be71e82af" + }, + { + "label": null, + "output_name": "mapped_bed", + "uuid": "e441e28c-2498-483d-a903-39102006babe" + } + ] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_merge/chira_merge/1.1.2+galaxy0", + "errors": null, + "id": 9, + "input_connections": { + "alignments": { + "id": 8, + "output_name": "mapped_bed" + }, + "annotation|gtf": { + "id": 3, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "ChiRA merge", + "outputs": [ + { + "name": "segments_bed", + "type": "bed" + }, + { + "name": "merged_bed", + "type": "tabular" + } + ], + "position": { + "left": 1444, + "top": 200 + }, + "post_job_actions": { + "HideDatasetActionsegments_bed": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "segments_bed" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/iuc/chira_merge/chira_merge/1.1.2+galaxy0", + "tool_shed_repository": { + "changeset_revision": "0170de5072d4", + "name": "chira_merge", + "owner": "iuc", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"merge\": \"{\\\"__current_case__\\\": 0, \\\"alignment_overlap\\\": \\\"0.7\\\", \\\"mode\\\": \\\"overlap\\\"}\", \"segment_overlap\": \"\\\"0.7\\\"\", \"alignments\": \"{\\\"__class__\\\": \\\"ConnectedValue\\\"}\", \"annotation\": \"{\\\"__current_case__\\\": 0, \\\"choice\\\": \\\"yes\\\", \\\"gtf\\\": {\\\"__class__\\\": \\\"ConnectedValue\\\"}}\"}", + "tool_version": "1.1.2+galaxy0", + "type": "tool", + "uuid": "512af86c-54c5-4a3b-ac1c-4f332f6b4bf9", + "workflow_outputs": [ + { + "label": null, + "output_name": "merged_bed", + "uuid": "add0d308-e195-44cf-ba56-b10caa656210" + } + ] + } + }, + "tags": [ + "RNA", + "transcriptomics" + ], + "uuid": "26ec4dda-2693-4cfe-9fd9-9932315aeaa5", + "version": 4 +} diff --git a/topics/transcriptomics/tutorials/rna-interactome/workflows/index.md b/topics/transcriptomics/tutorials/rna-interactome/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/transcriptomics/tutorials/rna-interactome/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/transcriptomics/tutorials/scrna-plates-batches-barcodes/slides.html b/topics/transcriptomics/tutorials/scrna-plates-batches-barcodes/slides.html index 4897ccc237d802..8fcd40ede8785f 100644 --- a/topics/transcriptomics/tutorials/scrna-plates-batches-barcodes/slides.html +++ b/topics/transcriptomics/tutorials/scrna-plates-batches-barcodes/slides.html @@ -6,22 +6,17 @@ tags: - single-cell questions: - - "What are barcodes and how are they applied to batches?" - - "What is the difference between a plate and a batch?" - - "Are batches and lanes the same?" - - "Why are plating setups important to know?" - - "Is it necessary to check barcodes that don't exist in a batch?" + - "What is a batch when it comes to single cells?" + - "What’s the difference between a barcode and an index?" + - "What is batch effect and how do you prevent it?" + - "What is a lane?" objectives: - - "How to describe a plating setup" - - "Proper naming conventions when dealing with multiple batches" - - "Checking for false positives across batches" + - "How to set up plates to prevent batch effect" + - "Proper naming conventions when dealing with scRNA-seq samples" time_estimation: "1h" key_points: - - "Plates are split into Lanes" - - "Batches are Lanes, but names are not reused" - - "Multiple batches can exist in many Plates" - - "Checking all barcodes across Batches eliminates false positives / cross-contamination" - - "Intelligent plating strategies can guard against cross-contamination" + - "Balanced batches and replicates allow bioinformatic batch correction" + - "A sequencing lane often contains multiple batches, and is itself a batch effect!" # (This will be split out of the pre-processing later) # requirements: @@ -39,6 +34,7 @@ - scrna-preprocessing contributors: + - nomadscientist - mtekman - astrovsky01 @@ -48,7 +44,7 @@ ### Sorting Plates -.image-100[![slide5](../../images/scrna-plates-batches-barcodes_slide5.svg)] +.image-100[![slide5](../../images/wab96wellplate.svg)] .left[Plates are *N x M* arrays of wells that cells are sorted, to then be individually amplified and sequenced.] @@ -56,72 +52,88 @@ ### Sorting Plates -.image-100[![slide6](../../images/scrna-plates-batches-barcodes_slide6.svg)] +.image-80[![slide6](../../images/wabexampleplates.png)] -.left[Not all wells need to be occupied by cells, some wells are left empty.] -.center[Why is this the case?] --- -### Sorting Plates +### Setting up Plates -.image-100[![slide7](../../images/scrna-plates-batches-barcodes_slide7.svg)] +.image-75[![slide7](../../images/wabbatchproblems.png)] -.center[Library preparation is not always perfect] -.center[Sample **contamination** from neighbouring wells] +.center[What is the problem with this plate setup?] --- -### Plates and Lanes +### Setting up Plates + +.image-50[![slide7](../../images/wabbatchproblems.png)] + +.center[Batch effect (plate vs plate) cannot be separated from treatment effect in either scenario.] +--- +### Setting up Plates + +.image-50[![slide7](../../images/wabbalancedbatches.png)] -.image-50[![slide5](../../images/scrna-plates-batches-barcodes_slide5.svg)] +.left[Either of these are better set-ups. Mixing columns is good, but not required. Ultimately, batch effect can now be separated from variable effect.] -.center[Sorting Plates are divided into *lanes*:] +--- +### Setting up Plates -.image-50[![slide9](../../images/scrna-plates-batches-barcodes_slide9.svg)] +.image-90[![slide7](../../images/wabreplicates.png)] + +.center[Can't mix samples on plates? Separate replicates evenly and process together.] ??? -Plates are $$N \times M$$ arrays or wells that cells are sorted into and then individually amplified and sequenced. The way these slot are filled depends entirely on the protocol, but usually not all slots are filled. The reason for this will become clear momentarily. -* Lanes demarcate evenly-sized *n x m* rectangular regions on a plate (where *n < N and m < M*). -* Multiple lanes can exist on plate, lanes ideally do not overlap within a plate. +If putting multiple treatments on the same plate is not an option, then having enough separated replicates will also allow for batch correction. Here, you can assess the variation between replicates (and thus batches) as well as between treatments. +--- + +### What about sequencing lanes? + +.center[So now it's time to sequence our samples! How do we combine samples into sequencing lanes?] + +.image-90[![slide7](../../images/wabseqlane.png)] + +.center[This works well, but what if you have too many samples for one lane?] --- -### Plates and Lanes +### What about sequencing lanes? + +.center[So now it's time to sequence our samples! How do we combine samples into sequencing lanes?] + +.image-90[![slide7](../../images/wablanesbad.png)] + +.center[Does this look ok?] + +-- -.image-100[![slide9](../../images/scrna-plates-batches-barcodes_slide9.svg)] -* All slots within a lane are sequenced at the same time. -* All lanes within a plate *may or may not* be sequenced at the same time. -* Lanes can therefore be thought of as different *batches*. +.center[No! You've turned each treatment (A & B) into a batch!] --- -### Lanes and Batches +### What about sequencing lanes? -.image-100[![slide10](../../images/scrna-plates-batches-barcodes_slide10.svg)] -??? -* Lanes and batches describe the same spaces, but not the same samples. -* For this reason, batch numbers should *not* persist across different plates. +.image-75[![slide7](../../images/wablanesgood.png)] + +.center[This is the way to balance your batches at the lane-level.] --- ### Distinguishing cells in a plate -.image-100[![slide11](../../images/scrna-plates-batches-barcodes_slide11.svg)] +.image-60[![slide11](../../images/wabplate.png)] * Cells are selected from a plate by their *barcodes* * Barcodes must be unique - + e.g. *4 x 18 = 72* slots in the plate, need 72 unique cell barcodes - -??? -The way these slots are filled depends entirely on the protocol, but usually not all slots are filled. The reason for this will become clear momentarily + + e.g. 96 wells in a plate, need 96 barcodes to sequence them together --- @@ -149,19 +161,19 @@ ### Questions about Cell Barcodes -.image-75[![slide14](../../images/scrna-plates-batches-barcodes_slide14.svg)] +.image-50[![slide14](../../images/wabplate.png)] -.left[Assuming a lane is a 20x5 array:] +.left[Assuming you sequence one 96-well plate:] 1. How many cell barcodes are needed for a single lane? -1. How many cell barcodes are needed for a plate with 10 lanes? +1. How many cell barcodes are needed if you combine 10 plates into a single sequencing lane? 1. What would be the minimum length of the barcodes for each of the previous questions? -- .footnote[ -1. *20 x 5 = 100 unique barcodes per lane* -1. *20 x 5 x 10 = 1,000 unique barcodes per plate* +1. *96 unique barcodes per lane* +1. *96 x 10 = 960 unique barcodes per plate* ] --- @@ -173,26 +185,26 @@ A single lane? - * 100 barcodes, 4 nucleotides for each base of a barcode + * 96 barcodes, 4 nucleotides for each base of a barcode | Barcodes | Result | |---------|------| | $$4^2 = 16$$ | <small>No, 2 bases is not enough | | $$4^3 = 64$$ | <small>No, 3 bases is not enough | -| $$4^4 = 256$$ | <small>Yes, 4 bases is enough to cover 100 barcodes (and more!) | +| $$4^4 = 256$$ | <small>Yes, 4 bases is enough to cover 96 barcodes (and more!) | ] -- .pull-right[ -A plate with 10 lanes? +10 plates in a single lane? - * 1000 barcodes, 4 nucleotides for each base of a barcode + * 960 barcodes, 4 nucleotides for each base of a barcode | Barcodes | Result | |---------|------| |$$4^4 = 256$$ | <small>No, 4 bases is not enough | -|$$4^5 = 1024$$ | <small>Yes, 5 bases is enough to cover 1,000 barcodes (just barely!) | +|$$4^5 = 1024$$ | <small>Yes, 5 bases is enough to cover 960 barcodes (just barely!) | ] @@ -206,7 +218,7 @@ --> .pull-left[ -* Is 5 nucleotides really enough to capture 1000 cells? +* Is 5 nucleotides really enough to capture 960 cells? * What could go wrong if all barcodes are separated by 1 bp, as shown? ] @@ -342,9 +354,9 @@ * Every transcript in a specific cell has the same cell barcode -* Barcodes are *designed* and are not random oligonucleotides +* Barcodes are *designed* for smaller plate-based protocols, while for split-pool and similar techniques they are randomised. -* Barcode use is *limited* by length and plate size +* Barcode use is *limited* by length and read depth ] -- @@ -360,271 +372,10 @@ </small> ] --- -.pull-right[* How?] - - ---- - -### Intelligent Plating Strategies - -* The main contending questions are: - - 1. How large is each batch? - -??? -How many slots in a batch that we need to barcode for - --- - - 2. How many batches on a plate? - --- - - 3. Should each batch use the same barcodes? - --- - - 4. What **constraints** are there on the plate? - - - -??? -A technician always has to balance quality against cost, and this is illustrated in the following examples: - ---- - -### Example Setup - -.pull-left[ -* Barcodes: - * 24 unique barcodes, with an edit distance of E=2: - - AAA ACC AGG TTT TAA TCC - ATT CCC CAA TGG NAA NCC - CGG CTT GGG NGG NTT ANN - GAA GCC GTT CNN GNN TNN - -] --- -.pull-right[ -* Plates and Lanes: - * 12 slots per lane (3x4) - * 4 lanes per plate - -* Constraints - * Only 2 lanes sequenced at the same time - * i.e. half the plate is sequenced at the same time -] - -??? -Here we use N as an extra base just for example purposes, but you do sometimes see this in other barcodes. -2 lanes at a time, only half - ---- - -### Example 1: Single Plate with a Single Lane - -.bottom-info-box[ -Available Barcodes - - AAA ACC AGG TTT TAA TCC - ATT CCC CAA TGG NAA NCC - CGG CTT GGG NGG NTT ANN - GAA GCC GTT CNN GNN TNN - -] --- - -.image-75[![slide36](../../images/scrna-plates-batches-barcodes_slide36.svg)] - -.pull-left[ -* 12 total slots in Plate 1 - -* 12 slots in Lane 1 - -* All slots filled -] - --- -.pull-right[ -* We only need to use half of our barcodes - -* Why is this wasteful? -] ??? -* Half of the barcodes used for that lane, and the other half we can ignore. -* Wasteful because we are not getting full use of our 24 barcodes in a single sequencing run - ---- - -### Example 2: Single Plate with 2 Lanes - -.bottom-info-box[ -Available Barcodes - - AAA ACC AGG TTT TAA TCC - ATT CCC CAA TGG NAA NCC - CGG CTT GGG NGG NTT ANN - GAA GCC GTT CNN GNN TNN - -] - -* 24 total slots in Plate 1 -* 12 slots in Lane 1, and 12 slots in Lane 2 -* All slots filled - -.image-75[![slide38](../../images/scrna-plates-batches-barcodes_slide38.svg)] - --- -* We can use all of our barcodes -* Maximum number of cells can be sequenced in a single run -* Why might this be too optimal? - - -??? -Here we use all barcodes since these lanes will be sequenced at the same time -Let's look at one final example to see why using all our barcodes on a plate might not be optimal. - ---- - -### Example 3: Single Plate with 2 Lanes, only 1 active - -.bottom-info-box[ -Available Barcodes - - AAA ACC AGG TTT TAA TCC - ATT CCC CAA TGG NAA NCC - CGG CTT GGG NGG NTT ANN - GAA GCC GTT CNN GNN TNN - -] - -* 24 total slots in Plate 1 -* 12 slots in Lane 1, and 12 slots in Lane 2 -* Only slots in Lane 1 filled - -.image-75[![slide40](../../images/scrna-plates-batches-barcodes_slide40.svg)] - - --- -* Why are we still using all barcodes? -* Why have we not filled in Lane 2? - - -??? -All barcodes used, why leave one lane empty? - ---- - -### Example 3: Single Plate with 2 Lanes, only 1 active - -.bottom-info-box[ -Available Barcodes - - AAA ACC AGG TTT TAA TCC - ATT CCC CAA TGG NAA NCC - CGG CTT GGG NGG NTT ANN - GAA GCC GTT CNN GNN TNN - -] - -* What would it mean if we sequenced reads with {TTT,TAA,...,TNN} as their Cell Barcodes? - -.image-75[![slide40](../../images/scrna-plates-batches-barcodes_slide40.svg)] - - --- -* **Cross-Contamination** - * There should be *no cells in that lane*! - * These are contaminants from Lane 1 - * We can ignore these reads and select for the {AAA,ACC,...,GTT} - - -??? -If we see any reads in the Plate which contain barcodes {TTT,TAA,TCC, etc} then we know that some contamination has occurred *because there should be no cells there*. One reason is that the second lane was not completely cleaned before being used. - ---- - -### Example 4: 2 Plates with 2 Lanes, only 1 active (alternate) - -.bottom-info-box[ -Available Barcodes - - AAA ACC AGG TTT TAA TCC - ATT CCC CAA TGG NAA NCC - CGG CTT GGG NGG NTT ANN - GAA GCC GTT CNN GNN TNN - -] - - -* Same as before but extra plate. A single lane used to check for contaminants. -* Alternate barcodes used for each plate - -.image-50[![slide44](../../images/scrna-plates-batches-barcodes_slide44.svg)] - - -<small> -* Why alternate active lanes across plates? -</small> - --- -<small> - * Plate 1 and Plate 2 are sometimes the *same plate* - * Contaminants might carry over *undetected* if same lane is used! -</small> - -??? -* Here we have repeated previous example, but with an extra plate. In the first plate, the first half of the barcodes are used, and in the second plate, the second half of the barcodes are used. - -* Why alternate the barcodes between plates? The full set of barcodes does not change, so why not keep the same format? - -* Loaded at different times, washed clean, re-used. - -* Again, the answer is to reduce cross-contamination. Plate2 will be loaded after Plate1 (and perhaps Plate2 and Plate1 will use the same plate!) If we see any reads in Plate2 that should not be there, we can now surmise where they came from. We also have the added benefit of protecting the cells in Plate2 from those that may have been used in Plate1, since they are in completely different positions across plates. - ---- - -### Example 5: 1 Plate with 2 lanes, both active - -.bottom-info-box[ -Available Barcodes - - AAA ACC AGG TTT TAA TCC - ATT CCC CAA TGG NAA NCC - CGG CTT GGG NGG NTT ANN - GAA GCC GTT CNN GNN TNN - -] - -* Both lanes filled. *All barcodes* are applied individually to *each* lane - -.image-100[![slide46](../../images/scrna-plates-batches-barcodes_slide46.svg)] - -.pull-left[ - -* Why check all barcodes against each lane? - -* Why not separate lanes across different plates? - -] --- -.pull-right[ -* If <small>{TTT,TAA,...,TNN}</small> is detected in Lane 1, or vice versa → **Contamination!** - -* *Benefit of* **detecting cross-contamination** *whilst still* **maximising plate usage** -] -??? -1. Why apply the full set of barcodes to each lane, when only half will actually label? -2. What benefit does this serve, instead of separating them over different plates as in the previous example? - -A1. This setup is actually the same as example 4, but with the two plates merged. Here we can check for cross-contamination in each lane by measuring the real cell labels against the false barcodes. If in lane 1, we detect a significant number of reads with cell barcodes of `TAA` or `ANN`, we can assume that some cross-contamination has occurred since we should not be able to detect these barcodes in that lane. The converse is also true of lane 2. - -A2. We have the benefit of detecting cross-contamination with the same advantages as example 4, but with the cost advantage of sequencing two batches at the same time. - +The number of reads you want per cell determines how many cells you run in a sequencing lane, which in turn tells you how many barcodes you need. --- # Summary @@ -643,6 +394,4 @@ * Reduce sequencing errors -* Check for cross contamination - ] diff --git a/topics/transcriptomics/tutorials/scrna-preprocessing/slides.html b/topics/transcriptomics/tutorials/scrna-preprocessing/slides.html new file mode 100644 index 00000000000000..b5fcdda57785fc --- /dev/null +++ b/topics/transcriptomics/tutorials/scrna-preprocessing/slides.html @@ -0,0 +1,304 @@ +--- +layout: tutorial_slides +logo: "GTN" +title: "Dealing with Cross-Contamination in Fixed Barcode Protocols" +zenodo_link: "" +tags: + - single-cell +questions: + - "What is cross-contamination?" + - "What are fixed barcodes?" + - "Why are plating setups important to know?" + - "Is it necessary to check barcodes that don't exist in a batch?" +objectives: + - "How to describe a plating setup" + - "Proper naming conventions when dealing with multiple batches" + - "Checking for false positives across batches" +time_estimation: "1h" +key_points: + - "Eliminating false positives" + - "Intelligent plating strategies can guard against cross-contamination" + +requirements: + - + type: "internal" + topic_name: transcriptomics + tutorials: + - scrna-plates-batches-barcodes + +contributors: + - mtekman + - astrovsky01 + + +--- +### Fixed Barcode Protocols and Multiplexing + + +The main contending questions are: + + 1. How large is each batch? + +??? +How many slots in a batch that we need to barcode for + +-- + + 2. How many batches on a plate? + +-- + + 3. Should each batch use the same barcodes? + +-- + + 4. What **constraints** are there on the plate? + + + +??? +A technician always has to balance quality against cost, and this is illustrated in the following examples: + +--- + +### Example Setup + +.pull-left[ +* Barcodes: + * 24 unique barcodes, with an edit distance of E=2: + + AAA ACC AGG TTT TAA TCC + ATT CCC CAA TGG NAA NCC + CGG CTT GGG NGG NTT ANN + GAA GCC GTT CNN GNN TNN + +] +-- +.pull-right[ +* Plates and Batches: + * 12 slots per lane (3x4) + * 4 batches per plate + +* Constraints + * Only 2 batches sequenced at the same time + * i.e. half the plate is sequenced at the same time +] + +??? +Here we use N as an extra base just for example purposes, but you do sometimes see this in other barcodes. +2 batches at a time, only half + +--- + +### Example 1: Single Plate with a Single Lane + +.bottom-info-box[ +Available Barcodes + + AAA ACC AGG TTT TAA TCC + ATT CCC CAA TGG NAA NCC + CGG CTT GGG NGG NTT ANN + GAA GCC GTT CNN GNN TNN + +] +-- + +.image-75[![slide36](../../images/scrna-plates-batches-barcodes_slide36.svg)] + +.pull-left[ +* 12 total slots in Plate 1 + +* 12 slots in Lane 1 + +* All slots filled +] + +-- +.pull-right[ +* We only need to use half of our barcodes + +* Why is this wasteful? +] + + +??? +* Half of the barcodes used for that lane, and the other half we can ignore. +* Wasteful because we are not getting full use of our 24 barcodes in a single sequencing run + +--- + +### Example 2: Single Plate with 2 Batches + +.bottom-info-box[ +Available Barcodes + + AAA ACC AGG TTT TAA TCC + ATT CCC CAA TGG NAA NCC + CGG CTT GGG NGG NTT ANN + GAA GCC GTT CNN GNN TNN + +] + +* 24 total slots in Plate 1 +* 12 slots in Lane 1, and 12 slots in Lane 2 +* All slots filled + +.image-75[![slide38](../../images/scrna-plates-batches-barcodes_slide38.svg)] + +-- +* We can use all of our barcodes +* Maximum number of cells can be sequenced in a single run +* Why might this be too optimal? + + +??? +Here we use all barcodes since these batches will be sequenced at the same time +Let's look at one final example to see why using all our barcodes on a plate might not be optimal. + +--- + +### Example 3: Single Plate with 2 Batches, only 1 active + +.bottom-info-box[ +Available Barcodes + + AAA ACC AGG TTT TAA TCC + ATT CCC CAA TGG NAA NCC + CGG CTT GGG NGG NTT ANN + GAA GCC GTT CNN GNN TNN + +] + +* 24 total slots in Plate 1 +* 12 slots in Lane 1, and 12 slots in Lane 2 +* Only slots in Lane 1 filled + +.image-75[![slide40](../../images/scrna-plates-batches-barcodes_slide40.svg)] + + +-- +* Why are we still using all barcodes? +* Why have we not filled in Lane 2? + + +??? +All barcodes used, why leave one lane empty? + +--- + +### Example 3: Single Plate with 2 Batches, only 1 active + +.bottom-info-box[ +Available Barcodes + + AAA ACC AGG TTT TAA TCC + ATT CCC CAA TGG NAA NCC + CGG CTT GGG NGG NTT ANN + GAA GCC GTT CNN GNN TNN + +] + +* What would it mean if we sequenced reads with {TTT,TAA,...,TNN} as their Cell Barcodes? + +.image-75[![slide40](../../images/scrna-plates-batches-barcodes_slide40.svg)] + + +-- +* **Cross-Contamination** + * There should be *no cells in that lane*! + * These are contaminants from Lane 1 + * We can ignore these reads and select for the {AAA,ACC,...,GTT} + + +??? +If we see any reads in the Plate which contain barcodes {TTT,TAA,TCC, etc} then we know that some contamination has occurred *because there should be no cells there*. One reason is that the second lane was not completely cleaned before being used. + +--- + +### Example 4: 2 Plates with 2 Batches, only 1 active (alternate) + +.bottom-info-box[ +Available Barcodes + + AAA ACC AGG TTT TAA TCC + ATT CCC CAA TGG NAA NCC + CGG CTT GGG NGG NTT ANN + GAA GCC GTT CNN GNN TNN + +] + + +* Same as before but extra plate. A single lane used to check for contaminants. +* Alternate barcodes used for each plate + +.image-50[![slide44](../../images/scrna-plates-batches-barcodes_slide44.svg)] + + +<small> +* Why alternate active batches across plates? +</small> + +-- +<small> + * Plate 1 and Plate 2 are sometimes the *same plate* + * Contaminants might carry over *undetected* if same lane is used! +</small> + +??? +* Here we have repeated previous example, but with an extra plate. In the first plate, the first half of the barcodes are used, and in the second plate, the second half of the barcodes are used. + +* Why alternate the barcodes between plates? The full set of barcodes does not change, so why not keep the same format? + +* Loaded at different times, washed clean, re-used. + +* Again, the answer is to reduce cross-contamination. Plate2 will be loaded after Plate1 (and perhaps Plate2 and Plate1 will use the same plate!) If we see any reads in Plate2 that should not be there, we can now surmise where they came from. We also have the added benefit of protecting the cells in Plate2 from those that may have been used in Plate1, since they are in completely different positions across plates. + +--- + +### Example 5: 1 Plate with 2 Batches, both active + +.bottom-info-box[ +Available Barcodes + + AAA ACC AGG TTT TAA TCC + ATT CCC CAA TGG NAA NCC + CGG CTT GGG NGG NTT ANN + GAA GCC GTT CNN GNN TNN + +] + +* Both batches filled. *All barcodes* are applied individually to *each* lane + +.image-100[![slide46](../../images/scrna-plates-batches-barcodes_slide46.svg)] + +.pull-left[ + +* Why check all barcodes against each lane? + +* Why not separate batches across different plates? + +] +-- +.pull-right[ +* If <small>{TTT,TAA,...,TNN}</small> is detected in Lane 1, or vice versa → **Contamination!** + +* *Benefit of* **detecting cross-contamination** *whilst still* **maximising plate usage** +] +??? +1. Why apply the full set of barcodes to each lane, when only half will actually label? +2. What benefit does this serve, instead of separating them over different plates as in the previous example? + +A1. This setup is actually the same as example 4, but with the two plates merged. Here we can check for cross-contamination in each lane by measuring the real cell labels against the false barcodes. If in lane 1, we detect a significant number of reads with cell barcodes of `TAA` or `ANN`, we can assume that some cross-contamination has occurred since we should not be able to detect these barcodes in that lane. The converse is also true of lane 2. + +A2. We have the benefit of detecting cross-contamination with the same advantages as example 4, but with the cost advantage of sequencing two batches at the same time. + +--- + +# Summary + +* Barcodes are often reused across batches if there is a fixed and limited number of them + +* Intelligent plating strategies reduce sequencing errors + +* Cross contamination can be detected by examining false positives across plates + diff --git a/topics/transcriptomics/tutorials/scrna-preprocessing/tutorial.md b/topics/transcriptomics/tutorials/scrna-preprocessing/tutorial.md index d746314a460f69..d44d02c3ec99e6 100644 --- a/topics/transcriptomics/tutorials/scrna-preprocessing/tutorial.md +++ b/topics/transcriptomics/tutorials/scrna-preprocessing/tutorial.md @@ -148,15 +148,11 @@ The size of scRNA files (.fastq) are typically in the gigabyte range and are som {: .hands_on} -<!-- -For a more detailed understanding of the naming conventions used in generating our FASTQ pair, please consult the [*Plates, Batches, and Barcodes*]({% link topics/transcriptomics/tutorials/scrna-plates-batches-barcodes/slides.html %}) slides. ---> - ## Barcode Extraction > ### {% icon comment %} Note > -> Before performing the barcode extraction process, it is recommended that you familiarise yourself with the concepts of designing cell barcodes as given by the [*Plates, Batches, and Barcodes*]({% link topics/transcriptomics/tutorials/scrna-plates-batches-barcodes/slides.html %}) slides 1-26, as well as the [*Understanding Barcodes*]({% link topics/transcriptomics/tutorials/scrna-umis/tutorial.md %}) hands-on material for an introduction into transcript barcodes. +> Before performing the barcode extraction process, it is recommended that you familiarise yourself with the concepts of designing cell barcodes as given by the [*Plates, Batches, and Barcodes*]({% link topics/transcriptomics/tutorials/scrna-plates-batches-barcodes/slides.html %}), as well as the [*Understanding Barcodes*]({% link topics/transcriptomics/tutorials/scrna-umis/tutorial.md %}) hands-on material for an introduction into transcript barcodes. > {: .comment} @@ -636,7 +632,7 @@ Once the merge is complete, we can now peek at our full combined matrix by once In the new combined matrix we see that we have 1536 cells, but this number is greatly overestimated. This is because *not all batches use the same barcodes*, and yet we applied the full set of 192 barcodes against our FASTQ data during the [*Barcode Extraction*](#barcode-extraction) stage previously. -The reason we do this is to test for cross-contamination between batches, the details of which are better explained in the [*Plates, Batches, and Barcodes*]({% link topics/transcriptomics/tutorials/scrna-plates-batches-barcodes/slides.html %}) slides 26-52. +The reason we do this is to test for cross-contamination between batches, the details of which are better explained in the [*accompanying slides*]({% link topics/transcriptomics/tutorials/scrna-preprocessing/slides.html %}). ## Guarding against Cross-Contamination diff --git a/topics/variant-analysis/images/mt_bam_merging.png b/topics/variant-analysis/images/mt_bam_merging.png index c6060253df7795..e52192635ddfad 100644 Binary files a/topics/variant-analysis/images/mt_bam_merging.png and b/topics/variant-analysis/images/mt_bam_merging.png differ diff --git a/topics/variant-analysis/images/mt_bwa_mem.png b/topics/variant-analysis/images/mt_bwa_mem.png index 7cdd037e9ff1cd..2d91b7e9f6fd6c 100644 Binary files a/topics/variant-analysis/images/mt_bwa_mem.png and b/topics/variant-analysis/images/mt_bwa_mem.png differ diff --git a/topics/variant-analysis/images/mt_cut.png b/topics/variant-analysis/images/mt_cut.png index b2dcd1eaa7cb02..d0b25a7516ceb1 100644 Binary files a/topics/variant-analysis/images/mt_cut.png and b/topics/variant-analysis/images/mt_cut.png differ diff --git a/topics/variant-analysis/images/mt_dedup.png b/topics/variant-analysis/images/mt_dedup.png index c712b8c2af15b4..96adddf093b085 100644 Binary files a/topics/variant-analysis/images/mt_dedup.png and b/topics/variant-analysis/images/mt_dedup.png differ diff --git a/topics/variant-analysis/images/mt_filtering.png b/topics/variant-analysis/images/mt_filtering.png index 14881e1aa55e82..07120975257abc 100644 Binary files a/topics/variant-analysis/images/mt_filtering.png and b/topics/variant-analysis/images/mt_filtering.png differ diff --git a/topics/variant-analysis/images/mt_freebayes_allelic_scope.png b/topics/variant-analysis/images/mt_freebayes_allelic_scope.png index e138639ea02a07..22d17559967c0a 100644 Binary files a/topics/variant-analysis/images/mt_freebayes_allelic_scope.png and b/topics/variant-analysis/images/mt_freebayes_allelic_scope.png differ diff --git a/topics/variant-analysis/images/mt_freebayes_alloptions.png b/topics/variant-analysis/images/mt_freebayes_alloptions.png index ac7c146dc5163e..b5bc6fc7dad0bd 100644 Binary files a/topics/variant-analysis/images/mt_freebayes_alloptions.png and b/topics/variant-analysis/images/mt_freebayes_alloptions.png differ diff --git a/topics/variant-analysis/images/mt_freebayes_genome.png b/topics/variant-analysis/images/mt_freebayes_genome.png index 7ef9d1f5b020f9..43599f568899aa 100644 Binary files a/topics/variant-analysis/images/mt_freebayes_genome.png and b/topics/variant-analysis/images/mt_freebayes_genome.png differ diff --git a/topics/variant-analysis/images/mt_freebayes_inputfilters.png b/topics/variant-analysis/images/mt_freebayes_inputfilters.png index 2fcabf43b91510..6328c5c2df712c 100644 Binary files a/topics/variant-analysis/images/mt_freebayes_inputfilters.png and b/topics/variant-analysis/images/mt_freebayes_inputfilters.png differ diff --git a/topics/variant-analysis/images/mt_freebayes_popmodel.png b/topics/variant-analysis/images/mt_freebayes_popmodel.png index ad89ffa63322a1..f24854c0a0a86a 100644 Binary files a/topics/variant-analysis/images/mt_freebayes_popmodel.png and b/topics/variant-analysis/images/mt_freebayes_popmodel.png differ diff --git a/topics/variant-analysis/images/mt_freebayes_regions.png b/topics/variant-analysis/images/mt_freebayes_regions.png index 695b6efa9564a1..9fd85812538e93 100644 Binary files a/topics/variant-analysis/images/mt_freebayes_regions.png and b/topics/variant-analysis/images/mt_freebayes_regions.png differ diff --git a/topics/variant-analysis/images/mt_imported_data.png b/topics/variant-analysis/images/mt_imported_data.png index ed31bbb912ec3d..a6608d6656be95 100644 Binary files a/topics/variant-analysis/images/mt_imported_data.png and b/topics/variant-analysis/images/mt_imported_data.png differ diff --git a/topics/variant-analysis/images/mt_left_align.png b/topics/variant-analysis/images/mt_left_align.png index 9548cc378ffbf5..5a2895c708580a 100644 Binary files a/topics/variant-analysis/images/mt_left_align.png and b/topics/variant-analysis/images/mt_left_align.png differ diff --git a/topics/variant-analysis/images/mt_lib.png b/topics/variant-analysis/images/mt_lib.png index 93aaa30699e084..057f084430ea49 100644 Binary files a/topics/variant-analysis/images/mt_lib.png and b/topics/variant-analysis/images/mt_lib.png differ diff --git a/topics/variant-analysis/images/mt_qc.png b/topics/variant-analysis/images/mt_qc.png index 16ad10ba009eb0..46a1143437c9cd 100644 Binary files a/topics/variant-analysis/images/mt_qc.png and b/topics/variant-analysis/images/mt_qc.png differ diff --git a/topics/variant-analysis/images/mt_tab.png b/topics/variant-analysis/images/mt_tab.png index dce524c5670851..3fab14b5c08341 100644 Binary files a/topics/variant-analysis/images/mt_tab.png and b/topics/variant-analysis/images/mt_tab.png differ diff --git a/topics/variant-analysis/images/mt_vcfToTab.png b/topics/variant-analysis/images/mt_vcfToTab.png index 982ad347d469f2..459b3f9e68719c 100644 Binary files a/topics/variant-analysis/images/mt_vcfToTab.png and b/topics/variant-analysis/images/mt_vcfToTab.png differ diff --git a/topics/variant-analysis/images/mt_vcf_dataset_collapsed.png b/topics/variant-analysis/images/mt_vcf_dataset_collapsed.png index f886ebb0d69350..10920617f54aad 100644 Binary files a/topics/variant-analysis/images/mt_vcf_dataset_collapsed.png and b/topics/variant-analysis/images/mt_vcf_dataset_collapsed.png differ diff --git a/topics/variant-analysis/images/mt_vcf_dataset_expanded.png b/topics/variant-analysis/images/mt_vcf_dataset_expanded.png index a1fc00d42a79fc..aa84f0f3a1e04b 100644 Binary files a/topics/variant-analysis/images/mt_vcf_dataset_expanded.png and b/topics/variant-analysis/images/mt_vcf_dataset_expanded.png differ diff --git a/topics/variant-analysis/images/mt_vcffilter.png b/topics/variant-analysis/images/mt_vcffilter.png index d535eb0b18ac86..3feb1362d0c3d9 100644 Binary files a/topics/variant-analysis/images/mt_vcffilter.png and b/topics/variant-analysis/images/mt_vcffilter.png differ diff --git a/topics/variant-analysis/images/mt_vcfiobio.png b/topics/variant-analysis/images/mt_vcfiobio.png index 4cc4a697c5ad75..88a46728ec303c 100644 Binary files a/topics/variant-analysis/images/mt_vcfiobio.png and b/topics/variant-analysis/images/mt_vcfiobio.png differ diff --git a/topics/variant-analysis/tutorials/non-dip/tutorial.md b/topics/variant-analysis/tutorials/non-dip/tutorial.md index 41191a230c0204..e64fc354d3f767 100644 --- a/topics/variant-analysis/tutorials/non-dip/tutorial.md +++ b/topics/variant-analysis/tutorials/non-dip/tutorial.md @@ -17,39 +17,63 @@ key_points: - "FreeBayes can be effectively used to call variants in haploid systems." contributors: - nekrut + - astrovsky01 --- # Introduction -The majority of life on Earth is non-diploid and represented by prokaryotes, viruses and their derivatives such as our own mitochondria or plant's chloroplasts. In non-diploid systems allele frequencies can range anywhere between 0 and 100% and there could be multiple (not just two) alleles per locus. The main challenge associated with non-diploid variant calling is the difficulty in distinguishing between sequencing noise (abundant in all NGS platforms) and true low frequency variants. Some of the early attempts to do this well have been accomplished on human mitochondrial DNA although the same approaches will work equally good on viral and bacterial genomes: +The majority of life on Earth is non-diploid and represented by prokaryotes, viruses, and their derivatives, such as our own mitochondria or plant's chloroplasts. In non-diploid systems, allele frequencies can range anywhere between 0 and 100% and there could be multiple (not just two) alleles per locus. The main challenge associated with non-diploid variant calling is the difficulty in distinguishing between the sequencing noise (abundant in all NGS platforms) and true low frequency variants. Some of the early attempts to do this well have been accomplished on human mitochondrial DNA although the same approaches will work equally good on viral and bacterial genomes: * 2014 - [Maternal age effect and severe germ-line bottleneck in the inheritance of human mitochondrial DNA](http://www.pnas.org/content/111/43/15474.abstract) * 2015 - [Extensive tissue-related and allele-related mtDNA heteroplasmy suggests positive selection for somatic mutations](http://www.pnas.org/content/112/8/2491.abstract). -As an example of non-diploid system we will be using human mitochondrial genome as an example. However, this approach will also work for most bacterial and viral genomes as well. +As an example of non-diploid systems, we will be using human mitochondrial genome. However, this approach will also work for most bacterial and viral genomes. There are two ways one can call variants: 1. By comparing reads against an existing genome assembly -2. By assembling genome first and then mapping against that assembly +2. By assembling a genome first and then mapping against that assembly | | |--------------------------| | ![2 approaches](../../images/ref_vs_assembly.jpg) | | <small>This figure from a manuscript by [Olson:2015](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4493402/) contrasts the two approaches.</small> | -In this tutorials we will take the *first* path is which we map reads against an existing assembly. Later in the course (after we learn about assembly approaches) we will try the second approach as well. +In this tutorials we will take the *first* path, in which we map reads against an existing assembly. Later in the course (after we learn about assembly approaches) we will try the second approach as well. -The goal of this example is to detect heteroplasmies (variants within mitochondrial DNA). Mitochondria is transmitted maternally and heteroplasmy frequencies may change dramatically and unpredictably during the transmission, due to a germ-line bottleneck [Cree:2008](https://www.nature.com/ng/journal/v40/n2/abs/ng.2007.63.html). As we mentioned above the procedure for finding variants in bacterial or viral genomes will be essentially the same. +The goal of this example is to detect heteroplasmies (variants within mitochondrial DNA). Mitochondria are transmitted maternally, and heteroplasmy frequencies may change dramatically and unpredictably during the transmission due to a germ-line bottleneck [Cree:2008](https://www.nature.com/ng/journal/v40/n2/abs/ng.2007.63.html). As we mentioned above, the procedure for finding variants in bacterial or viral genomes will be essentially the same. -Zenodo contains [datasets representing a child and a mother](https://doi.org/10.5281/zenodo.1251112). These datasets are obtained by paired-end Illumina sequencing of human genomic DNA enriched for mitochondria. The enrichment was performed using long-range PCR with two primer pairs that amplify the entire mitochondrial genome. This means that these samples still contain a lot of DNA from the nuclear genome, which, in this case, is a contaminant. +Zenodo contains [datasets representing a child and a mother](https://doi.org/10.5281/zenodo.1251112). These datasets were obtained by paired-end Illumina sequencing of human genomic DNA enriched for mitochondria. The enrichment was performed using long-range PCR with two primer pairs that amplify the entire mitochondrial genome. Samples will therefore still contain a lot of DNA from the nuclear genome, which, in this case, is a contaminant. # Importing example datasets -For this tutorial we have prepared a subset of data previously [published](http://www.pnas.org/content/111/43/15474.abstract) by our group. Let's import these data into Galaxy. +For this tutorial we have prepared a subset of data previously [published](http://www.pnas.org/content/111/43/15474.abstract) by our group. Let's import these data into Galaxy. They are available from [this Galaxy Library](https://usegalaxy.org/library/list#folders/Fe4842bd0c37b03a7) or via [Zenodo](https://zenodo.org/record/582600) -> ### Data upload from a Galaxy Library +> ### {% icon hands_on %} Hands-on: Getting the data + +> ### Option 1: Data upload from a Galaxy Library +> +> +> +> * Create and name a new history for this tutorial. +> +> {% include snippets/create_new_history.md %} +> +> * Import from [Zenodo](https://zenodo.org/record/1251112) or from the data library the files: +> +> ``` +> https://zenodo.org/record/1251112/files/raw_child-ds-1.fq +> https://zenodo.org/record/1251112/files/raw_child-ds-2.fq +> https://zenodo.org/record/1251112/files/raw_mother-ds-1.fq +> https://zenodo.org/record/1251112/files/raw_mother-ds-2.fq +> ``` +> +{: .hands_on} + +> ### Option 2: Data upload from a Galaxy Library +> +> > > ![Data upload from a Galaxy Library](../../images/mt_lib.png) > @@ -58,13 +82,15 @@ For this tutorial we have prepared a subset of data previously [published](http: > * Click **to History** button. > * Galaxy will prompt you to ask whether you want to import these data into already existing or new history. > * It is better to create a new history, so type some descriptive name within `or create new` text field -> * click **Import** +> * Click **Import** > * A green message will appear once the import is done. Click on it and will see the history you have just created. It will be populated with the four datasets as shown below: > > ![Imported data in history](../../images/mt_imported_data.png) > {: .hands_on} + + # QC'ing the data Before proceeding with the analysis, we need to find out how good the data actually is. For this will use `FastQC` tool that can be found in **NGS: QC and manipulation → FastQC** section of Galaxy tools: @@ -118,7 +144,7 @@ Preparation of sequencing libraries (at least at the time of writing) for techno Duplicates can be identified based on their outer alignment coordinates or using sequence-based clustering. One of the common ways for identification of duplicate reads is the `MarkDuplicates` utility from [Picard](https://broadinstitute.github.io/picard/command-line-overview.html) package. It is designed to identify both PCR and optical duplicates (the following is an excerpt from Picard documentation): -*Duplicates are identified as read pairs having identical 5' positions (coordinate and strand) for both reads in a mate pair (and optionally, matching unique molecular identifier reads; see BARCODE_TAG option). Optical, or more broadly Sequencing, duplicates are duplicates that appear clustered together spatially during sequencing and can arise from optical/imagine-processing artifacts or from bio-chemical processes during clonal amplification and sequencing; they are identified using the READ_NAME_REGEX and the OPTICAL_DUPLICATE_PIXEL_DISTANCE options. The tool's main output is a new SAM or BAM file in which duplicates have been identified in the SAM flags field, or optionally removed (see REMOVE_DUPLICATE and REMOVE_SEQUENCING_DUPLICATES), and optionally marked with a duplicate type in the 'DT' optional attribute. In addition, it also outputs a metrics file containing the numbers of READ_PAIRS_EXAMINED, UNMAPPED_READS, UNPAIRED_READS, UNPAIRED_READ DUPLICATES, READ_PAIR_DUPLICATES, and READ_PAIR_OPTICAL_DUPLICATES. Usage example: java -jar picard.jar MarkDuplicates I=input.bam \ O=marked_duplicates.bam M=marked_dup_metrics.txt.* +*Duplicates are identified as read pairs having identical 5' positions (coordinate and strand) for both reads in a mate pair (and optionally, matching unique molecular identifier reads; see BARCODE_TAG option). Optical, or more broadly Sequencing, duplicates are duplicates that appear clustered together spatially during sequencing and can arise from optical/imagine-processing artifacts or from bio-chemical processes during clonal amplification and sequencing; they are identified using the READ_NAME_REGEX and the OPTICAL_DUPLICATE_PIXEL_DISTANCE options. The tool's main output is a new SAM or BAM file in which duplicates have been identified in the SAM flags field, or optionally removed (see REMOVE_DUPLICATE and REMOVE_SEQUENCING_DUPLICATES), and optionally marked with a duplicate type in the 'DT' optional attribute. In addition, it also outputs a metrics file containing the numbers of READ_PAIRS_EXAMINED, SECONDARY_OR_SUPPLEMENTARY_RDS, UNMAPPED_READS, UNPAIRED_READS, UNPAIRED_READ DUPLICATES, READ_PAIR_DUPLICATES, and READ_PAIR_OPTICAL_DUPLICATES. Usage example: java -jar picard.jar MarkDuplicates I=input.bam \ O=marked_duplicates.bam M=marked_dup_metrics.txt.* Let's use **NGS: Picard** → **MarkDuplicates** tool: @@ -132,8 +158,8 @@ Let's use **NGS: Picard** → **MarkDuplicates** tool: **MarkDuplicates** produces a BAM dataset with duplicates removed and also a metrics file. Let's take a look at the metrics data: ``` -raw_child-ds- 55 27551 55 50 1658 0 0.061026 219628 -raw_mother-ds- 96 54972 96 90 4712 0 0.086459 302063 +raw_child-ds- 55 27551 849 55 50 1658 1 0.061026 219750 +raw_mother-ds- 95 54973 1951 95 89 4712 2 0.08645 302188 ``` where columns are: @@ -141,6 +167,7 @@ where columns are: - LIBRARY (read group in our case) - UNPAIRED_READS_EXAMINED - READ_PAIRS_EXAMINED- +- SECONDARY_OR_SUPPLEMENTARY_RDS - UNMAPPED_READS - UNPAIRED_READ_DUPLICATES - READ_PAIR_DUPLICATES @@ -196,7 +223,7 @@ Remember that we are trying to call variants in mitochondrial genome. Let focus > >Filtering reads. There are several important point to note here: > ->- **mapQuality** is set to ⋝ 20 Mapping quality reflects the probability that the read is placed *incorrectly*. It uses [phred scale](https://en.wikipedia.org/wiki/Phred_quality_score). Thus 20 is 1/100 or 1% chance that the read is incorrectly mapped. By setting this parameter to ⋝ 20 we will keep all reads that have 1% or less probability of being mapped incorrectly. +>- **mapQuality** is set to ≥20. Mapping quality reflects the probability that the read is placed *incorrectly*. It uses [phred scale](https://en.wikipedia.org/wiki/Phred_quality_score). Thus 20 is 1/100 or 1% chance that the read is incorrectly mapped. By setting this parameter to ≥20, we will keep all reads that have 1% or less probability of being mapped incorrectly. >- *isPaired* will eliminate singleton (unpaired) reads (make sure **Yes** is clicked on) >- *isProperPair* will only keep reads that map to the same chromosome and are properly placed (again, make sure **Yes** is clicked) >- *reference* is set to *chrM* @@ -204,7 +231,7 @@ Remember that we are trying to call variants in mitochondrial genome. Let focus # Calling non-diploid variants with FreeBayes -FreeBayes is widely used for calling variants in diploid systems. However, it can also be used for calling variants in pooled samples where the number of samples is not known. This is the exact scenario we have here: in our sample we have multiple mitochondrial (or bacterial or viral) genomes but we do not know exactly how many. Thus we will use the `--pooled-continuous` option of FreeBayes to generate *frequency-based* variant calls as well as some other options highlighted below (the tool is in **NGS: Variant Analysis** → **FreeBayes**): +FreeBayes is widely used for calling variants in diploid systems. However, it can also be used for calling variants in pooled samples where the number of samples is not known. This is the exact scenario we have here: in our sample we have multiple mitochondrial (or bacterial or viral) genomes, but we do not know exactly how many. Thus we will use the `--pooled-continuous` option of FreeBayes to generate *frequency-based* variant calls as well as some other options highlighted below (the tool is in **NGS: Variant Analysis** → **FreeBayes**): > ### Running `FreeBayes` > @@ -245,24 +272,49 @@ FreeBayes is widely used for calling variants in diploid systems. However, it ca >* **Exclude alleles from analysis if their supporting base quality less than** to `30` (phred score of 30). This will make FreeBayes to only consider high quality bases. {: .hands_on} -This will produce a [VCF dataset](https://samtools.github.io/hts-specs/VCFv4.2.pdf) shows below (you may need to scroll sideways to see it in full). It lists 30 sites of interest (everything starting with a `#` is a comment): +This will produce a [VCF dataset](https://samtools.github.io/hts-specs/VCFv4.2.pdf) shows below (you may need to scroll sideways to see it in full). It lists 25 sites of interest (everything starting with a `#` is a comment): ``` Chrom Pos ID Ref Alt Qual Filter Info Format data -##fileformat=VCFv4.1 -##fileDate=20161108 -##source=freeBayes v0.9.20 +##fileformat=VCFv4.2 +##fileDate=20200211 +##source=freeBayes v1.1.0-46-g8d2b3a0-dirty ##reference=/galaxy/data/hg38/sam_index/hg38.fa +##contig=<ID=chr1,length=248956422> +##contig=<ID=chr2,length=242193529> +##contig=<ID=chr3,length=198295559> +##contig=<ID=chr4,length=190214555> +##contig=<ID=chr5,length=181538259> +##contig=<ID=chr6,length=170805979> +##contig=<ID=chr7,length=159345973> +##contig=<ID=chr8,length=145138636> +##contig=<ID=chr9,length=138394717> +##contig=<ID=chr10,length=133797422> +##contig=<ID=chr11,length=135086622> +##contig=<ID=chr12,length=133275309> +##contig=<ID=chr13,length=114364328> +##contig=<ID=chr14,length=107043718> +##contig=<ID=chr15,length=101991189> +##contig=<ID=chr16,length=90338345> +##contig=<ID=chr17,length=83257441> +##contig=<ID=chr18,length=80373285> +##contig=<ID=chr19,length=58617616> +##contig=<ID=chr20,length=64444167> +##contig=<ID=chr21,length=46709983> +##contig=<ID=chr22,length=50818468> +##contig=<ID=chrX,length=156040895> +##contig=<ID=chrY,length=57227415> +##contig=<ID=chrM,length=16569> ##phasing=none -##commandline="freebayes --bam localbam_0.bam --fasta-reference /galaxy/data/hg38/sam_index/hg38.fa --vcf /galaxy-repl/main/files/017/782/dataset_17782376.dat --region chrM:1..16000" +##commandline="freebayes --region chrM:1..16000 --bam b_0.bam --fasta-reference /galaxy/data/hg38/sam_index/hg38.fa --vcf ./vcf_output/part_chrM:1..16000.vcf --theta 0.001 --ploidy 1 -J -K -X -u -n 0 --haplotype-length 3 --min-repeat-size 5 --min-repeat-entropy 0 -m 20 -q 30 -R 0 -Y 0 -e 1000 -F 0.2 -C 2 -G 1 --min-coverage 0 --min-alternate-qsum 0" ##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of samples with data"> ##INFO=<ID=DP,Number=1,Type=Integer,Description="Total read depth at the locus"> ##INFO=<ID=DPB,Number=1,Type=Float,Description="Total read depth per bp at the locus; bases in reads overlapping / bases in haplotype"> ##INFO=<ID=AC,Number=A,Type=Integer,Description="Total number of alternate alleles in called genotypes"> ##INFO=<ID=AN,Number=1,Type=Integer,Description="Total number of alleles in called genotypes"> ##INFO=<ID=AF,Number=A,Type=Float,Description="Estimated allele frequency in the range (0,1]"> -##INFO=<ID=RO,Number=1,Type=Integer,Description="Reference allele observation count, with partial observations recorded fractionally"> -##INFO=<ID=AO,Number=A,Type=Integer,Description="Alternate allele observations, with partial observations recorded fractionally"> +##INFO=<ID=RO,Number=1,Type=Integer,Description="Count of full observations of the reference haplotype."> +##INFO=<ID=AO,Number=A,Type=Integer,Description="Count of full observations of this alternate haplotype."> ##INFO=<ID=PRO,Number=1,Type=Float,Description="Reference allele observation count, with partial observations recorded fractionally"> ##INFO=<ID=PAO,Number=A,Type=Float,Description="Alternate allele observations, with partial observations recorded fractionally"> ##INFO=<ID=QR,Number=1,Type=Integer,Description="Reference allele quality sum in phred"> @@ -287,64 +339,63 @@ Chrom Pos ID Ref Alt Qual Filter Info Format data ##INFO=<ID=DPRA,Number=A,Type=Float,Description="Alternate allele depth ratio. Ratio between depth in samples with each called alternate allele and those without."> ##INFO=<ID=ODDS,Number=1,Type=Float,Description="The log odds ratio of the best genotype combination to the second-best."> ##INFO=<ID=GTI,Number=1,Type=Integer,Description="Number of genotyping iterations required to reach convergence or bailout."> -##INFO=<ID=TYPE,Number=A,Type=String,Description="The type of allele, either snp, mnp, ins, del, or complex."> +##INFO=<ID=TYPE,Number=A,Type=String,Description="The type of allele, either snp, mnp, ins, del, or complex."> ##INFO=<ID=CIGAR,Number=A,Type=String,Description="The extended CIGAR representation of each alternate allele, with the exception that '=' is replaced by 'M' to ease VCF parsing. Note that INDEL alleles do not have the first matched base (which is provided by default, per the spec) referred to by the CIGAR."> -##INFO=<ID=NUMALT,Number=1,Type=Integer,Description="Number of unique non-reference alleles in called genotypes at this position."> +##INFO=<ID=NUMALT,Number=1,Type=Integer,Description="Number of unique non-reference alleles in called genotypes at this position."> ##INFO=<ID=MEANALT,Number=A,Type=Float,Description="Mean number of unique non-reference allele observations per sample with the corresponding alternate alleles."> ##INFO=<ID=LEN,Number=A,Type=Integer,Description="allele length"> ##INFO=<ID=MQM,Number=A,Type=Float,Description="Mean mapping quality of observed alternate alleles"> ##INFO=<ID=MQMR,Number=1,Type=Float,Description="Mean mapping quality of observed reference alleles"> ##INFO=<ID=PAIRED,Number=A,Type=Float,Description="Proportion of observed alternate alleles which are supported by properly paired read fragments"> ##INFO=<ID=PAIREDR,Number=1,Type=Float,Description="Proportion of observed reference alleles which are supported by properly paired read fragments"> -##INFO=<ID=technology.ILLUMINA,Number=A,Type=Float,Description="Fraction of observations supporting the alternate observed in reads from ILLUMINA"> +##INFO=<ID=MIN_DP,Number=1,Type=Integer,Description="Minimum depth in gVCF output block."> +##INFO=<ID=END,Number=1,Type=Integer,Description="Last position (inclusive) in gVCF output record."> +##INFO=<ID=technology.ILLUMINA,Number=A,Type=Float,Description="Fraction of observations supporting the alternate observed in reads from ILLUMINA"> ##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype"> ##FORMAT=<ID=GQ,Number=1,Type=Float,Description="Genotype Quality, the Phred-scaled marginal (or unconditional) probability of the called genotype"> ##FORMAT=<ID=GL,Number=G,Type=Float,Description="Genotype Likelihood, log10-scaled likelihoods of the data given the called genotype for each possible genotype generated from the reference and alternate alleles given the sample ploidy"> ##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth"> +##FORMAT=<ID=AD,Number=R,Type=Integer,Description="Number of observation for each allele"> ##FORMAT=<ID=RO,Number=1,Type=Integer,Description="Reference allele observation count"> ##FORMAT=<ID=QR,Number=1,Type=Integer,Description="Sum of quality of the reference observations"> ##FORMAT=<ID=AO,Number=A,Type=Integer,Description="Alternate allele observation count"> ##FORMAT=<ID=QA,Number=A,Type=Integer,Description="Sum of quality of the alternate observations"> +##FORMAT=<ID=MIN_DP,Number=1,Type=Integer,Description="Minimum depth in gVCF output block."> #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT raw_child-ds- raw_mother-ds- -chrM 73 . A G 33368.5 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1095;CIGAR=1X;DP=1098;DPB=1098;DPRA=0;EPP=107.005;EPPR=5.18177;GTI=0;LEN=1;MEANALT=1.5;MQM=55.7744;MQMR=60;NS=2;NUMALT=1;ODDS=509.945;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=37602;QR=37;RO=1;RPL=359;RPP=284.863;RPPR=5.18177;RPR=736;RUN=1;SAF=507;SAP=16.0213;SAR=588;SRF=0;SRP=5.18177;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:273:0:0:273:9187:-827.167,-82.1812,0 1/1:825:1:37:822:28415:-2554.14,-241.429,0 -chrM 263 . A G 13774.9 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=508;CIGAR=1X;DP=524;DPB=524;DPRA=0;EPP=39.1901;EPPR=0;GTI=0;LEN=1;MEANALT=2.5;MQM=60;MQMR=0;NS=2;NUMALT=1;ODDS=255.818;PAIRED=1;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=15693;QR=0;RO=0;RPL=373;RPP=245.138;RPPR=0;RPR=135;RUN=1;SAF=219;SAP=23.9556;SAR=289;SRF=0;SRP=0;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:154:0:0:150:4661:-419.661,-45.1545,0 1/1:370:0:0:358:11032:-993.047,-107.769,0 -chrM 309 . CT CCTC,CC 4399.1 . AB=0.56535,0.285714;ABP=15.2141,134.229;AC=2,2;AF=0.5,0.5;AN=4;AO=186,94;CIGAR=1M2I1X,1M1X;DP=329;DPB=555.5;DPRA=0,0;EPP=23.6043,97.6311;EPPR=31.9633;GTI=0;LEN=3,1;MEANALT=6,6;MQM=60,59.8085;MQMR=60;NS=2;NUMALT=2;ODDS=89.3381;PAIRED=1,1;PAIREDR=1;PAO=13.3333,13.3333;PQA=339,339;PQR=290;PRO=11.3333;QA=4084,2577;QR=686;RO=30;RPL=114,78;RPP=23.6043,91.8097;RPPR=38.0434;RPR=72,16;RUN=1,1;SAF=0,63;SAP=406.904,26.6655;SAR=186,31;SRF=21;SRP=13.4334;SRR=9;TYPE=complex,snp;technology.ILLUMINA=1,1 GT:DP:RO:QR:AO:QA:GL 1/2:93:6:123:59,23:1308,638:-159.543,-53.5005,-52.9104,-105.161,0,-113.176 1/2:236:24:563:127,71:2776,1939:-368.987,-136.961,-169.835,-200.763,0,-245.13 -chrM 513 . GCACACACACAC GCACACACACACAC 3522.72 . AB=0.647399;ABP=35.6577;AC=3;AF=0.75;AN=4;AO=156;CIGAR=1M2I11M;DP=231;DPB=321.083;DPRA=0;EPP=75.17;EPPR=5.48477;GTI=1;LEN=2;MEANALT=13.5;MQM=60;MQMR=60;NS=2;NUMALT=1;ODDS=3.87694;PAIRED=1;PAIREDR=1;PAO=46.5;PQA=1383.5;PQR=1383.5;PRO=46.5;QA=4585;QR=1403;RO=43;RPL=39;RPP=87.6977;RPPR=3.0608;RPR=117;RUN=1;SAF=111;SAP=63.6445;SAR=45;SRF=26;SRP=7.10075;SRR=17;TYPE=ins;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:58:7:225:44:1251:-105.403,0,-13.0389 0/1:173:36:1178:112:3334:-290.141,0,-96.0932 -chrM 750 . A G 51447.4 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1722;CIGAR=1X;DP=1736;DPB=1736;DPRA=0;EPP=3.03048;EPPR=20.3821;GTI=0;LEN=1;MEANALT=3;MQM=59.8868;MQMR=60;NS=2;NUMALT=1;ODDS=753.623;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=57871;QR=122;RO=8;RPL=720;RPP=103.291;RPPR=12.7819;RPR=1002;RUN=1;SAF=1151;SAP=427.217;SAR=571;SRF=1;SRP=12.7819;SRR=7;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:436:4:53:429:13615:-1220.76,-116.422,0 1/1:1300:4:69:1293:44256:-3977.02,-373.134,0 -chrM 1438 . A G 79172.1 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=2474;CIGAR=1X;DP=2480;DPB=2480;DPRA=0;EPP=7.56039;EPPR=3.44459;GTI=0;LEN=1;MEANALT=1.5;MQM=59.8319;MQMR=58;NS=2;NUMALT=1;ODDS=1085.01;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=88621;QR=102;RO=5;RPL=1546;RPP=338.232;RPPR=3.44459;RPR=928;RUN=1;SAF=1055;SAP=119.304;SAR=1419;SRF=3;SRP=3.44459;SRR=2;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:551:1:16:550:19482:-1752.13,-161.526,0 1/1:1929:4:86:1924:69139:-6214.93,-560.827,0 -chrM 2487 . A C 4432.57 . AB=0.278634;ABP=775.959;AC=1;AF=0.25;AN=4;AO=621;CIGAR=1X;DP=2340;DPB=2340;DPRA=0;EPP=15.1824;EPPR=99.2128;GTI=1;LEN=1;MEANALT=2.5;MQM=59.3285;MQMR=59.9115;NS=2;NUMALT=1;ODDS=63.7254;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=9402;QR=56614;RO=1707;RPL=281;RPP=15.1824;RPPR=127.637;RPR=340;RUN=1;SAF=0;SAP=1351.49;SAR=621;SRF=1352;SRP=1267.49;SRR=355;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/0:524:405:13274:115:1754:-119.206,0,-1156.18 0/1:1816:1302:43340:506:7648:-607.816,0,-3820.28 -chrM 2706 . A G 49482.2 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1889;CIGAR=1X;DP=1969;DPB=1969;DPRA=0;EPP=11.3157;EPPR=6.95112;GTI=0;LEN=1;MEANALT=2.5;MQM=59.9645;MQMR=59.5926;NS=2;NUMALT=1;ODDS=759.158;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=55923;QR=722;RO=27;RPL=810;RPP=86.1918;RPPR=5.02092;RPR=1079;RUN=1;SAF=802;SAP=96.3813;SAR=1087;SRF=18;SRP=9.52472;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:408:5:99:391:11529:-1028.82,-99.3894,0 1/1:1561:22:623:1498:44394:-3939.48,-352.569,0 -chrM 3197 . T C 135699 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=4208;CIGAR=1X;DP=4241;DPB=4241;DPRA=0;EPP=168.325;EPPR=3.13803;GTI=0;LEN=1;MEANALT=3;MQM=59.9943;MQMR=60;NS=2;NUMALT=1;ODDS=2145.76;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=152221;QR=558;RO=17;RPL=2378;RPP=157.977;RPPR=6.20364;RPR=1830;RUN=1;SAF=1641;SAP=445.497;SAR=2567;SRF=8;SRP=3.13803;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:1499:6:179:1486:53236:-4775.26,-416.785,0 1/1:2742:11:379:2722:98985:-8874.65,-758.304,0 -chrM 3243 . A G 46067 . AB=0.612338;ABP=290.859;AC=2;AF=0.5;AN=4;AO=1608;CIGAR=1X;DP=2626;DPB=2626;DPRA=0;EPP=31.0126;EPPR=64.3549;GTI=0;LEN=1;MEANALT=2;MQM=59.9627;MQMR=59.815;NS=2;NUMALT=1;ODDS=1288.98;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=53165;QR=35336;RO=1011;RPL=974;RPP=159.119;RPPR=763.402;RPR=634;RUN=1;SAF=558;SAP=329.898;SAR=1050;SRF=383;SRP=131.935;SRR=628;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/1:1068:221:7574:841:27395:-2380.4,0,-596.524 0/1:1558:790:27762:767:25770:-2317.69,0,-2496.98 -chrM 3483 . G C 685.467 . AB=0.254386;ABP=182.214;AC=1;AF=0.25;AN=4;AO=127;CIGAR=1X;DP=550;DPB=550;DPRA=0;EPP=37.6342;EPPR=22.2028;GTI=1;LEN=1;MEANALT=1.5;MQM=59.4646;MQMR=59.8504;NS=2;NUMALT=1;ODDS=25.0865;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=2032;QR=13200;RO=421;RPL=87;RPP=40.7802;RPPR=245.89;RPR=40;RUN=1;SAF=1;SAP=270.17;SAR=126;SRF=321;SRP=254.927;SRR=100;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/0:208:166:5264:40:608:-35.5966,0,-454.8 0/1:342:255:7936:87:1424:-108.297,0,-694.524 -chrM 3488 . T A 682.097 . AB=0.264706;ABP=166.509;AC=1;AF=0.25;AN=4;AO=130;CIGAR=1X;DP=546;DPB=546;DPRA=0;EPP=44.7694;EPPR=34.7681;GTI=1;LEN=1;MEANALT=1;MQM=59.4231;MQMR=59.7139;NS=2;NUMALT=1;ODDS=17.5994;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=2069;QR=13578;RO=416;RPL=90;RPP=44.7694;RPPR=211.806;RPR=40;RUN=1;SAF=0;SAP=285.302;SAR=130;SRF=315;SRP=242.06;SRR=101;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/0:206:166:5535:40:650:-39.5324,0,-479.353 0/1:340:250:8043:90:1419:-109.544,0,-705.868 -chrM 3511 . A C 434.289 . AB=0.260394;ABP=230.901;AC=1;AF=0.25;AN=4;AO=185;CIGAR=1X;DP=752;DPB=752;DPRA=0;EPP=322.569;EPPR=29.1769;GTI=1;LEN=1;MEANALT=3;MQM=59.7838;MQMR=59.7348;NS=2;NUMALT=1;ODDS=57.1305;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=2698;QR=16673;RO=558;RPL=11;RPP=314.869;RPPR=115.475;RPR=174;RUN=1;SAF=1;SAP=396.094;SAR=184;SRF=292;SRP=5.64097;SRR=266;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/0:295:226:6735:66:923:-61.5611,0,-584.793 0/1:457:332:9938:119:1775:-135.644,0,-870.462 -chrM 4769 . A G 54711.1 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1746;CIGAR=1X;DP=1752;DPB=1752;DPRA=0;EPP=85.7949;EPPR=5.18177;GTI=0;LEN=1;MEANALT=2.5;MQM=51.2801;MQMR=58;NS=2;NUMALT=1;ODDS=911.774;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=61628;QR=15;RO=1;RPL=549;RPP=525.238;RPPR=5.18177;RPR=1197;RUN=1;SAF=1003;SAP=87.0833;SAR=743;SRF=1;SRP=5.18177;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:604:1:15:601:20766:-1867.77,-177.095,0 1/1:1148:0:0:1145:40862:-3677.79,-344.679,0 -chrM 5539 . A G 11837 . AB=0.479167;ABP=6.26751;AC=2;AF=0.5;AN=4;AO=414;CIGAR=1X;DP=864;DPB=864;DPRA=0;EPP=192.358;EPPR=179.441;GTI=0;LEN=1;MEANALT=1.5;MQM=54.1957;MQMR=53.5924;NS=2;NUMALT=1;ODDS=622.768;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=14380;QR=15965;RO=449;RPL=85;RPP=315.283;RPPR=358.189;RPR=329;RUN=1;SAF=309;SAP=221.29;SAR=105;SRF=337;SRP=247.845;SRR=112;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/1:338:249:8721:89:3010:-252.807,0,-766.809 0/1:526:200:7244:325:11370:-1015.56,0,-644.23 -chrM 7028 . C T 76141.7 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=2473;CIGAR=1X;DP=2499;DPB=2499;DPRA=0;EPP=3.74876;EPPR=34.9902;GTI=0;LEN=1;MEANALT=2.5;MQM=55.905;MQMR=57.6364;NS=2;NUMALT=1;ODDS=1210.59;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=85103;QR=439;RO=22;RPL=1260;RPP=4.94996;RPPR=4.58955;RPR=1213;RUN=1;SAF=1102;SAP=66.5485;SAR=1371;SRF=9;SRP=4.58955;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:827:6:107:820:28371:-2543.94,-224.334,0 1/1:1672:16:332:1653:56732:-5076.14,-434.286,0 -chrM 7269 . G A 62196.6 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1937;CIGAR=1X;DP=1947;DPB=1947;DPRA=0;EPP=54.8308;EPPR=5.18177;GTI=0;LEN=1;MEANALT=3;MQM=58.2685;MQMR=60;NS=2;NUMALT=1;ODDS=1033.49;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=69240;QR=16;RO=1;RPL=1011;RPP=11.1099;RPPR=5.18177;RPR=926;RUN=1;SAF=933;SAP=8.66151;SAR=1004;SRF=0;SRP=5.18177;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:704:1:16:698:24364:-2191.49,-206.139,0 1/1:1243:0:0:1239:44876:-4039.06,-372.976,0 -chrM 8557 . G C 2590.97 . AB=0.267066;ABP=790.051;AC=2;AF=0.5;AN=4;AO=446;CIGAR=1X;DP=1670;DPB=1670;DPRA=0;EPP=44.2196;EPPR=97.7883;GTI=0;LEN=1;MEANALT=3;MQM=57.6951;MQMR=59.5256;NS=2;NUMALT=1;ODDS=125.064;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=6303;QR=38747;RO=1212;RPL=177;RPP=44.2196;RPPR=385.426;RPR=269;RUN=1;SAF=2;SAP=954.193;SAR=444;SRF=906;SRP=648.002;SRR=306;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/1:724:538:17225:181:2490:-182.373,0,-1508.7 0/1:946:674:21522:265:3813:-301.57,0,-1895.55 -chrM 8860 . A G 55525 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1846;CIGAR=1X;DP=1861;DPB=1861;DPRA=0;EPP=5.72052;EPPR=6.91895;GTI=0;LEN=1;MEANALT=3;MQM=47.1728;MQMR=58.6;NS=2;NUMALT=1;ODDS=1039.99;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=61929;QR=160;RO=5;RPL=984;RPP=20.5185;RPPR=6.91895;RPR=862;RUN=1;SAF=987;SAP=22.283;SAR=859;SRF=2;SRP=3.44459;SRR=3;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:729:0:0:726:24114:-2170.46,-218.548,0 1/1:1132:5:160:1120:37815:-3389.07,-311.012,0 -chrM 9477 . G A 34109.5 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1099;CIGAR=1X;DP=1104;DPB=1104;DPRA=0;EPP=9.42988;EPPR=3.0103;GTI=0;LEN=1;MEANALT=2;MQM=59.3794;MQMR=60;NS=2;NUMALT=1;ODDS=565.855;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=38032;QR=67;RO=2;RPL=598;RPP=21.6012;RPPR=7.35324;RPR=501;RUN=1;SAF=542;SAP=3.45487;SAR=557;SRF=1;SRP=3.0103;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:401:2:67:398:13308:-1191.76,-109.337,0 1/1:703:0:0:701:24724:-2225.39,-211.022,0 -chrM 9548 . G A 26846.1 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=942;CIGAR=1X;DP=970;DPB=970;DPRA=0;EPP=3.04718;EPPR=3.73412;GTI=0;LEN=1;MEANALT=3;MQM=59.6921;MQMR=60;NS=2;NUMALT=1;ODDS=502.835;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=29956;QR=66;RO=3;RPL=524;RPP=28.9112;RPPR=3.73412;RPR=418;RUN=1;SAF=487;SAP=5.3708;SAR=455;SRF=3;SRP=9.52472;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:364:1:38:350:10822:-970.712,-99.6786,0 1/1:606:2:28:592:19134:-1719.73,-171.045,0 -chrM 11467 . A G 164822 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=5200;CIGAR=1X;DP=5225;DPB=5225;DPRA=0;EPP=350.339;EPPR=4.78696;GTI=0;LEN=1;MEANALT=2.5;MQM=59.9342;MQMR=53.6364;NS=2;NUMALT=1;ODDS=2859.91;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=187277;QR=283;RO=11;RPL=3887;RPP=2769.75;RPPR=3.20771;RPR=1313;RUN=1;SAF=2257;SAP=199.527;SAR=2943;SRF=6;SRP=3.20771;SRR=5;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:2016:2:46:2008:71984:-6474.61,-594.606,0 1/1:3209:9:237:3192:115293:-10355.2,-916.222,0 -chrM 11719 . G A 95624.7 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=3302;CIGAR=1X;DP=3356;DPB=3356;DPRA=0;EPP=179.466;EPPR=18.4661;GTI=0;LEN=1;MEANALT=2;MQM=59.5924;MQMR=58.2353;NS=2;NUMALT=1;ODDS=1506.69;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=106982;QR=483;RO=17;RPL=1766;RPP=37.7986;RPPR=6.20364;RPR=1536;RUN=1;SAF=1728;SAP=18.6065;SAR=1574;SRF=3;SRP=18.4661;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:911:4:122:891:28560:-2559.58,-247.982,0 1/1:2445:13:361:2411:78422:-7025.63,-662.959,0 -chrM 12308 . A G 67204.7 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=2144;CIGAR=1X;DP=2161;DPB=2161;DPRA=0;EPP=8.55647;EPPR=3.87889;GTI=0;LEN=1;MEANALT=2;MQM=59.9664;MQMR=59.7;NS=2;NUMALT=1;ODDS=949.477;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=75192;QR=257;RO=10;RPL=1284;RPP=185.09;RPPR=3.87889;RPR=860;RUN=1;SAF=1005;SAP=21.1964;SAR=1139;SRF=4;SRP=3.87889;SRR=6;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:635:7:216:628:21603:-1924.87,-155.503,0 1/1:1526:3:41:1516:53589:-4819.52,-444.815,0 -chrM 12372 . G A 62064 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1984;CIGAR=1X;DP=1992;DPB=1992;DPRA=0;EPP=10.3697;EPPR=4.45795;GTI=0;LEN=1;MEANALT=2;MQM=59.9919;MQMR=60;NS=2;NUMALT=1;ODDS=933.299;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=69281;QR=192;RO=6;RPL=861;RPP=78.1406;RPPR=4.45795;RPR=1123;RUN=1;SAF=1010;SAP=4.42876;SAR=974;SRF=4;SRP=4.45795;SRR=2;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:634:5:155:628:21590:-1929.21,-164.556,0 1/1:1358:1:37:1356:47691:-4288.95,-401.925,0 -chrM 13617 . T C 28593.6 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=901;CIGAR=1X;DP=906;DPB=906;DPRA=0;EPP=251.346;EPPR=3.73412;GTI=0;LEN=1;MEANALT=2;MQM=59.9034;MQMR=60;NS=2;NUMALT=1;ODDS=462.343;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=32868;QR=92;RO=3;RPL=674;RPP=484.564;RPPR=9.52472;RPR=227;RUN=1;SAF=339;SAP=122.861;SAR=562;SRF=2;SRP=3.73412;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:303:1:14:301:10938:-983.358,-87.1961,0 1/1:603:2:78:600:21930:-1966.72,-168.809,0 -chrM 14766 . C T 60668.6 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=2022;CIGAR=1X;DP=2039;DPB=2039;DPRA=0;EPP=13.3243;EPPR=19.0002;GTI=0;LEN=1;MEANALT=2.5;MQM=59.9782;MQMR=60;NS=2;NUMALT=1;ODDS=954.02;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=67719;QR=140;RO=11;RPL=989;RPP=5.08941;RPPR=12.6832;RPR=1033;RUN=1;SAF=1199;SAP=154.837;SAR=823;SRF=1;SRP=19.0002;SRR=10;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:637:6:78:628:20191:-1810.35,-169.906,0 1/1:1402:5:62:1394:47528:-4272.15,-401.924,0 -chrM 14793 . A G 58080 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=1967;CIGAR=1X;DP=1998;DPB=1998;DPRA=0;EPP=8.57532;EPPR=5.80219;GTI=0;LEN=1;MEANALT=3;MQM=59.9736;MQMR=59.2857;NS=2;NUMALT=1;ODDS=930.516;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=64876;QR=104;RO=7;RPL=1133;RPP=101.705;RPPR=3.32051;RPR=834;RUN=1;SAF=1124;SAP=90.1794;SAR=843;SRF=1;SRP=10.7656;SRR=6;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:600:4:62:589:19341:-1735.29,-163.219,0 1/1:1398:3:42:1378:45535:-4094.54,-403.304,0 -chrM 15301 . G A 76440.4 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=2590;CIGAR=1X;DP=2644;DPB=2644;DPRA=0;EPP=3.76487;EPPR=7.94546;GTI=0;LEN=1;MEANALT=3;MQM=60;MQMR=60;NS=2;NUMALT=1;ODDS=1170.15;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=85385;QR=292;RO=11;RPL=1134;RPP=89.9396;RPPR=4.78696;RPR=1456;RUN=1;SAF=1194;SAP=37.2206;SAR=1396;SRF=3;SRP=7.94546;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:726:5:116:709:23434:-2098.78,-192.286,0 1/1:1918:6:176:1881:61951:-5559.91,-535.386,0 -chrM 15326 . A G 79542.1 . AB=0;ABP=0;AC=4;AF=1;AN=4;AO=2574;CIGAR=1X;DP=2586;DPB=2586;DPRA=0;EPP=3.76956;EPPR=5.18177;GTI=0;LEN=1;MEANALT=3;MQM=60;MQMR=60;NS=2;NUMALT=1;ODDS=1207.35;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=88636;QR=86;RO=4;RPL=1116;RPP=101.683;RPPR=5.18177;RPR=1458;RUN=1;SAF=1198;SAP=29.7395;SAR=1376;SRF=0;SRP=11.6962;SRR=4;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 1/1:715:2:50:710:24322:-2184.63,-204.389,0 1/1:1871:2:36:1864:64314:-5785.22,-552.228,0 +chrM 73 . A G 30438.6 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=949;CIGAR=1X;DP=950;DPB=950;DPRA=0;EPP=144.879;EPPR=5.18177;GTI=0;LEN=1;MEANALT=1;MQM=55.8314;MQMR=60;NS=2;NUMALT=1;ODDS=2187.64;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=34948;QR=37;RO=1;RPL=322;RPP=215.867;RPPR=5.18177;RPR=627;RUN=1;SAF=421;SAP=29.2075;SAR=528;SRF=0;SRP=5.18177;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:226:0,226:0:0:226:8314:-739.462,0 1:724:1,723:1:37:723:26634:-2346.86,0 +chrM 263 . A G 11603.3 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=364;CIGAR=1X;DP=364;DPB=364;DPRA=0;EPP=16.755;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=0;NS=2;NUMALT=1;ODDS=982.556;PAIRED=1;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=13201;QR=0;RO=0;RPL=276;RPP=213.858;RPPR=0;RPR=88;RUN=1;SAF=172;SAP=5.39653;SAR=192;SRF=0;SRP=0;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:108:0,108:0:0:108:3896:-350.812,0 1:256:0,256:0:0:256:9305:-837.344,0 +chrM 310 . TCC CCC 4471 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=150;CIGAR=1X2M;DP=171;DPB=180.333;DPRA=0;EPP=7.70068;EPPR=4.45795;GTI=0;LEN=1;MEANALT=2.5;MQM=59.88;MQMR=60;NS=2;NUMALT=1;ODDS=407.373;PAIRED=1;PAIREDR=1;PAO=11;PQA=237;PQR=0;PRO=0;QA=5147;QR=194;RO=6;RPL=113;RPP=86.6265;RPPR=8.80089;RPR=37;RUN=1;SAF=35;SAP=95.6598;SAR=115;SRF=1;SRP=8.80089;SRR=5;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:54:0,49:0:0:49:1645:-150.867,0 1:117:6,101:6:194:101:3502:-315.963,0 +chrM 513 . GCACACACACAC GCACACACACACAC 2095.84 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=109;CIGAR=1M2I11M;DP=150;DPB=172.167;DPRA=0;EPP=109.173;EPPR=6.05036;GTI=0;LEN=2;MEANALT=3.5;MQM=60;MQMR=60;NS=2;NUMALT=1;ODDS=225.991;PAIRED=1;PAIREDR=1;PAO=5;PQA=101.5;PQR=101.5;PRO=5;QA=3824;QR=1196;RO=35;RPL=19;RPP=103.436;RPPR=4.56135;RPR=90;RUN=1;SAF=80;SAP=54.8268;SAR=29;SRF=24;SRP=13.4954;SRR=11;TYPE=ins;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:34:5,28:5:163:28:996:-74.9521,0 1:116:30,81:30:1033:81:2828:-161.475,0 +chrM 750 . A G 47254.6 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1459;CIGAR=1X;DP=1459;DPB=1459;DPRA=0;EPP=48.5904;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=59.8705;MQMR=0;NS=2;NUMALT=1;ODDS=3230.11;PAIRED=1;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=53335;QR=0;RO=0;RPL=594;RPP=112.315;RPPR=0;RPR=865;RUN=1;SAF=1007;SAP=461.453;SAR=452;SRF=0;SRP=0;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:331:0,331:0:0:331:11988:-1073.7,0 1:1128:0,1128:0:0:1128:41347:-3719.34,0 +chrM 1438 . A G 75374.8 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=2237;CIGAR=1X;DP=2238;DPB=2238;DPRA=0;EPP=47.8812;EPPR=5.18177;GTI=0;LEN=1;MEANALT=1;MQM=59.8605;MQMR=60;NS=2;NUMALT=1;ODDS=5003.07;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=84494;QR=37;RO=1;RPL=1397;RPP=304.171;RPPR=5.18177;RPR=840;RUN=1;SAF=925;SAP=148.392;SAR=1312;SRF=0;SRP=5.18177;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:488:0,488:0:0:488:18416:-1656.39,0 1:1750:1,1749:1:37:1749:66078:-5935.03,0 +chrM 2706 . A G 39098.5 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1222;CIGAR=1X;DP=1235;DPB=1235;DPRA=0;EPP=3.188;EPPR=3.17734;GTI=0;LEN=1;MEANALT=1;MQM=59.9926;MQMR=60;NS=2;NUMALT=1;ODDS=2496.46;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=45333;QR=474;RO=13;RPL=507;RPP=79.8897;RPPR=3.17734;RPR=715;RUN=1;SAF=225;SAP=1062.06;SAR=997;SRF=5;SRP=4.51363;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:246:1,245:1:32:245:9136:-818.843,0 1:989:12,977:12:442:977:36197:-3215.79,0 +chrM 3197 . T C 130583 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=3879;CIGAR=1X;DP=3892;DPB=3892;DPRA=0;EPP=59.2643;EPPR=3.17734;GTI=0;LEN=1;MEANALT=1;MQM=59.9938;MQMR=60;NS=2;NUMALT=1;ODDS=12192.8;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=146498;QR=463;RO=13;RPL=2190;RPP=143.521;RPPR=7.18621;RPR=1689;RUN=1;SAF=1459;SAP=519.999;SAR=2420;SRF=7;SRP=3.17734;SRR=6;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:1358:4,1354:4:150:1354:50893:-4563.63,0 1:2534:9,2525:9:313:2525:95605:-8569.92,0 +chrM 3243 . A G 10397.4 . AB=0;ABP=0;AC=1;AF=0.5;AN=2;AO=1365;CIGAR=1X;DP=3092;DPB=3092;DPRA=0;EPP=116.418;EPPR=46.9792;GTI=0;LEN=1;MEANALT=1;MQM=59.956;MQMR=59.8917;NS=2;NUMALT=1;ODDS=2394.09;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=49004;QR=63273;RO=1727;RPL=849;RPP=179.415;RPPR=105.14;RPR=516;RUN=1;SAF=443;SAP=368.01;SAR=922;SRF=637;SRP=261.033;SRR=1090;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:1035:341,694:341:12439:694:24871:-1118.32,0 0:2057:1386,671:1386:50834:671:24133:0,-2399.65 +chrM 4769 . A G 48890.4 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1545;CIGAR=1X;DP=1545;DPB=1545;DPRA=0;EPP=162.63;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=51.4796;MQMR=0;NS=2;NUMALT=1;ODDS=4468.76;PAIRED=1;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=57939;QR=0;RO=0;RPL=463;RPP=541.537;RPPR=0;RPR=1082;RUN=1;SAF=890;SAP=80.6281;SAR=655;SRF=0;SRP=0;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:517:0,517:0:0:517:19209:-1665.33,0 1:1028:0,1028:0:0:1028:38730:-3308.01,0 +chrM 5539 . A G 3281.62 . AB=0;ABP=0;AC=1;AF=0.5;AN=2;AO=379;CIGAR=1X;DP=787;DPB=787;DPRA=0;EPP=216.428;EPPR=224.5;GTI=0;LEN=1;MEANALT=1;MQM=54.1504;MQMR=53.777;NS=2;NUMALT=1;ODDS=755.62;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=13803;QR=15250;RO=408;RPL=74;RPP=308.741;RPPR=351.808;RPR=305;RUN=1;SAF=286;SAP=216.428;SAR=93;SRF=318;SRP=279.681;SRR=90;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0:299:221,78:221:8252:78:2824:0,-485.016 1:488:187,301:187:6998:301:10979:-358.012,0 +chrM 7028 . C T 70453.4 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=2109;CIGAR=1X;DP=2114;DPB=2114;DPRA=0;EPP=63.8084;EPPR=3.44459;GTI=0;LEN=1;MEANALT=1;MQM=55.9113;MQMR=59.2;NS=2;NUMALT=1;ODDS=6416.42;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=78988;QR=192;RO=5;RPL=1123;RPP=22.3353;RPPR=3.44459;RPR=986;RUN=1;SAF=969;SAP=33.1175;SAR=1140;SRF=3;SRP=3.44459;SRR=2;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:708:1,707:1:39:707:26465:-2367.64,0 1:1406:4,1402:4:153:1402:52523:-4692.5,0 +chrM 7269 . G A 59443.2 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1773;CIGAR=1X;DP=1773;DPB=1773;DPRA=0;EPP=129.209;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=58.3328;MQMR=0;NS=2;NUMALT=1;ODDS=5563.82;PAIRED=1;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=66393;QR=0;RO=0;RPL=929;RPP=11.8591;RPPR=0;RPR=844;RUN=1;SAF=848;SAP=10.2718;SAR=925;SRF=0;SRP=0;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:619:0,619:0:0:619:23040:-2069.26,0 1:1154:0,1154:0:0:1154:43353:-3894.52,0 +chrM 8860 . A G 48674.5 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1552;CIGAR=1X;DP=1556;DPB=1556;DPRA=0;EPP=36.1924;EPPR=5.18177;GTI=0;LEN=1;MEANALT=1;MQM=46.5528;MQMR=58.25;NS=2;NUMALT=1;ODDS=4986.6;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=56983;QR=146;RO=4;RPL=845;RPP=29.6556;RPPR=5.18177;RPR=707;RUN=1;SAF=844;SAP=28.8889;SAR=708;SRF=2;SRP=3.0103;SRR=2;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:598:0,598:0:0:598:21921:-1876.69,0 1:958:4,954:4:146:954:35062:-3002.8,0 +chrM 9477 . G A 31596.7 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=944;CIGAR=1X;DP=946;DPB=946;DPRA=0;EPP=58.9901;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=59.3178;MQMR=60;NS=2;NUMALT=1;ODDS=2909.29;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=35363;QR=67;RO=2;RPL=521;RPP=25.1023;RPPR=7.35324;RPR=423;RUN=1;SAF=469;SAP=3.09311;SAR=475;SRF=1;SRP=3.0103;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:329:2,327:2:67:327:12108:-1080.66,0 1:617:0,617:0:0:617:23255:-2090.4,0 +chrM 9548 . G A 23689.1 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=729;CIGAR=1X;DP=730;DPB=730;DPRA=0;EPP=65.6375;EPPR=5.18177;GTI=0;LEN=1;MEANALT=1;MQM=59.7133;MQMR=60;NS=2;NUMALT=1;ODDS=2252;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=26539;QR=38;RO=1;RPL=394;RPP=13.3792;RPPR=5.18177;RPR=335;RUN=1;SAF=339;SAP=10.7579;SAR=390;SRF=1;SRP=5.18177;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:261:1,260:1:38:260:9395:-838.704,0 1:469:0,469:0:0:469:17144:-1542,0 +chrM 11467 . A G 157655 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=4755;CIGAR=1X;DP=4759;DPB=4759;DPRA=0;EPP=620.69;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=59.9394;MQMR=42.5;NS=2;NUMALT=1;ODDS=15848.9;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=179486;QR=151;RO=4;RPL=3558;RPP=2548.64;RPPR=3.0103;RPR=1197;RUN=1;SAF=1995;SAP=270.266;SAR=2760;SRF=2;SRP=3.0103;SRR=2;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:1820:0,1820:0:0:1820:68685:-6177.29,0 1:2939:4,2935:4:151:2935:110801:-9948.16,0 +chrM 11719 . G A 86257.7 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=2676;CIGAR=1X;DP=2687;DPB=2687;DPRA=0;EPP=15.4873;EPPR=12.6832;GTI=0;LEN=1;MEANALT=1;MQM=59.6039;MQMR=60;NS=2;NUMALT=1;ODDS=6603.9;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=96531;QR=397;RO=11;RPL=1384;RPP=9.87851;RPPR=4.78696;RPR=1292;RUN=1;SAF=1292;SAP=9.87851;SAR=1384;SRF=2;SRP=12.6832;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:714:3,711:3:109:711:25643:-2282.19,0 1:1973:8,1965:8:288:1965:70888:-6347.71,0 +chrM 12308 . A G 63434.1 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1900;CIGAR=1X;DP=1905;DPB=1905;DPRA=0;EPP=73.302;EPPR=3.44459;GTI=0;LEN=1;MEANALT=1;MQM=59.9621;MQMR=60;NS=2;NUMALT=1;ODDS=5056.51;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=71094;QR=184;RO=5;RPL=1169;RPP=222.265;RPPR=3.44459;RPR=731;RUN=1;SAF=907;SAP=11.463;SAR=993;SRF=3;SRP=3.44459;SRR=2;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:547:5,542:5:184:542:20196:-1799.85,0 1:1358:0,1358:0:0:1358:50898:-4577.25,0 +chrM 12372 . G A 58077.1 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1737;CIGAR=1X;DP=1741;DPB=1741;DPRA=0;EPP=74.4189;EPPR=5.18177;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=2;NUMALT=1;ODDS=4910.27;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=64920;QR=149;RO=4;RPL=775;RPP=46.726;RPPR=3.0103;RPR=962;RUN=1;SAF=941;SAP=29.2942;SAR=796;SRF=3;SRP=5.18177;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:539:3,536:3:112:536:19922:-1781.72,0 1:1202:1,1201:1:37:1201:44998:-4043.68,0 +chrM 13617 . T C 27663.7 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=846;CIGAR=1X;DP=848;DPB=848;DPRA=0;EPP=303.228;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=59.8972;MQMR=60;NS=2;NUMALT=1;ODDS=2549.91;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=31932;QR=78;RO=2;RPL=638;RPP=477.603;RPPR=7.35324;RPR=208;RUN=1;SAF=314;SAP=124.993;SAR=532;SRF=1;SRP=3.0103;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:284:0,284:0:0:284:10656:-956.335,0 1:564:2,562:2:78:562:21276:-1906.39,0 +chrM 14766 . C T 54363.3 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1633;CIGAR=1X;DP=1633;DPB=1633;DPRA=0;EPP=21.2132;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=59.9853;MQMR=0;NS=2;NUMALT=1;ODDS=4408.47;PAIRED=1;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=61054;QR=0;RO=0;RPL=852;RPP=9.71354;RPPR=0;RPR=781;RUN=1;SAF=1113;SAP=470.614;SAR=520;SRF=0;SRP=0;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:473:0,473:0:0:473:17508:-1575.01,0 1:1160:0,1160:0:0:1160:43546:-3916.74,0 +chrM 14793 . A G 52354.7 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=1605;CIGAR=1X;DP=1605;DPB=1605;DPRA=0;EPP=123.965;EPPR=0;GTI=0;LEN=1;MEANALT=1;MQM=59.9688;MQMR=0;NS=2;NUMALT=1;ODDS=4357.82;PAIRED=1;PAIREDR=0;PAO=0;PQA=0;PQR=0;PRO=0;QA=58638;QR=0;RO=0;RPL=950;RPP=120.75;RPPR=0;RPR=655;RUN=1;SAF=940;SAP=105.327;SAR=665;SRF=0;SRP=0;SRR=0;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:475:0,475:0:0:475:17313:-1557.59,0 1:1130:0,1130:0:0:1130:41325:-3717.26,0 +chrM 15301 . G A 67202.5 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=2029;CIGAR=1X;DP=2036;DPB=2036;DPRA=0;EPP=73.6971;EPPR=4.45795;GTI=0;LEN=1;MEANALT=1.5;MQM=60;MQMR=60;NS=2;NUMALT=1;ODDS=5288.64;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=75132;QR=224;RO=6;RPL=962;RPP=14.8095;RPPR=3.0103;RPR=1067;RUN=1;SAF=1129;SAP=59.1336;SAR=900;SRF=1;SRP=8.80089;SRR=5;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:563:2,561:2:75:561:20714:-1856.3,0 1:1473:4,1468:4:149:1468:54418:-4880.92,0 +chrM 15326 . A G 73749.6 . AB=0;ABP=0;AC=2;AF=1;AN=2;AO=2200;CIGAR=1X;DP=2201;DPB=2201;DPRA=0;EPP=68.7112;EPPR=5.18177;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=2;NUMALT=1;ODDS=5718.37;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=82190;QR=38;RO=1;RPL=1013;RPP=32.8937;RPPR=5.18177;RPR=1187;RUN=1;SAF=1088;SAP=3.57883;SAR=1112;SRF=0;SRP=5.18177;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:597:1,596:1:38:596:22276:-2000.05,0 1:1604:0,1604:0:0:1604:59914:-5388.94,0 ``` # Filtering VCF data After filtering the data with stringent input parameters (restricting base quality to a minimum of 30 and mapping quality to a minimum of 20) a considerable amount variants due to read-alignment bias exits. [Erik Garrison](https://github.com/ekg) has a beautiful illustration of various biases potentially affecting called variants (and making a locus sequence-able): -| | -|----------------------------| -|![Various biases potentially affecting called variants](../../images/mt_biases.png)| -|<small>Here you can see that in an ideal case (indicated with a green star) a variant is evenly represent by different areas of sequencing reads (cycle and placement biases) and is balanced across the two strands (strand bias). Allele imbalance is not applicable in our case as it reflects significant deviation from the diploid (50/50) expectation (see [here](../../images/freebayes.pdf) for more details).</small>| + + +![Various biases potentially affecting called variants](../../images/mt_biases.png) +<small>Here you can see that in an ideal case (indicated with a green star) a variant is evenly represent by different areas of sequencing reads (cycle and placement biases) and is balanced across the two strands (strand bias). Allele imbalance is not applicable in our case as it reflects significant deviation from the diploid (50/50) expectation (see [here](../../images/freebayes.pdf) for more details).</small> A robust tool set for processing VCF data is provided by [vcflib](https://github.com/vcflib/vcflib) developed by Erik Garrison, the author of FreeBayes. One way to filter VCF is using `INFO` fields of the VCF dataset. If you look at the VCF dataset shown above you will see all comment lines beginning with `##INFO`. These are `INFO` fields. Each VCF record contains a list of `INFO` tags describing a wide range of properties for each VCF record. You will see that FreeBayes and NVC differ significantly in the number and types of `INFO` fields each of these caller generates. This why the two require different filtering strategies. @@ -364,15 +415,12 @@ To perform filtering we will use **NGS: VCF Manipulation** → **VCFfilter** >Filtering FreeBayes VCF for strand bias (`SPR` and `SAP`), placement bias (`EPP`), variant quality (`QUAL`), and depth of coverage (`DP`). {: .hands_on} -The resulting VCF only contains five variants (most comments fields are omitted here): +The resulting VCF only contains two variants (most comments fields are omitted here): ``` #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT raw_child-ds- raw_mother-ds- -chrM 3243 . A G 46067 . AB=0.612338;ABP=290.859;AC=2;AF=0.5;AN=4;AO=1608;CIGAR=1X;DP=2626;DPB=2626;DPRA=0;EPP=31.0126;EPPR=64.3549;GTI=0;LEN=1;MEANALT=2;MQM=59.9627;MQMR=59.815;NS=2;NUMALT=1;ODDS=1288.98;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=53165;QR=35336;RO=1011;RPL=974;RPP=159.119;RPPR=763.402;RPR=634;RUN=1;SAF=558;SAP=329.898;SAR=1050;SRF=383;SRP=131.935;SRR=628;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/1:1068:221:7574:841:27395:-2380.4,0,-596.524 0/1:1558:790:27762:767:25770:-2317.69,0,-2496.98 -chrM 3483 . G C 685.467 . AB=0.254386;ABP=182.214;AC=1;AF=0.25;AN=4;AO=127;CIGAR=1X;DP=550;DPB=550;DPRA=0;EPP=37.6342;EPPR=22.2028;GTI=1;LEN=1;MEANALT=1.5;MQM=59.4646;MQMR=59.8504;NS=2;NUMALT=1;ODDS=25.0865;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=2032;QR=13200;RO=421;RPL=87;RPP=40.7802;RPPR=245.89;RPR=40;RUN=1;SAF=1;SAP=270.17;SAR=126;SRF=321;SRP=254.927;SRR=100;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/0:208:166:5264:40:608:-35.5966,0,-454.8 0/1:342:255:7936:87:1424:-108.297,0,-694.524 -chrM 3488 . T A 682.097 . AB=0.264706;ABP=166.509;AC=1;AF=0.25;AN=4;AO=130;CIGAR=1X;DP=546;DPB=546;DPRA=0;EPP=44.7694;EPPR=34.7681;GTI=1;LEN=1;MEANALT=1;MQM=59.4231;MQMR=59.7139;NS=2;NUMALT=1;ODDS=17.5994;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=2069;QR=13578;RO=416;RPL=90;RPP=44.7694;RPPR=211.806;RPR=40;RUN=1;SAF=0;SAP=285.302;SAR=130;SRF=315;SRP=242.06;SRR=101;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/0:206:166:5535:40:650:-39.5324,0,-479.353 0/1:340:250:8043:90:1419:-109.544,0,-705.868 -chrM 5539 . A G 11837 . AB=0.479167;ABP=6.26751;AC=2;AF=0.5;AN=4;AO=414;CIGAR=1X;DP=864;DPB=864;DPRA=0;EPP=192.358;EPPR=179.441;GTI=0;LEN=1;MEANALT=1.5;MQM=54.1957;MQMR=53.5924;NS=2;NUMALT=1;ODDS=622.768;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=14380;QR=15965;RO=449;RPL=85;RPP=315.283;RPPR=358.189;RPR=329;RUN=1;SAF=309;SAP=221.29;SAR=105;SRF=337;SRP=247.845;SRR=112;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/1:338:249:8721:89:3010:-252.807,0,-766.809 0/1:526:200:7244:325:11370:-1015.56,0,-644.23 -chrM 8557 . G C 2590.97 . AB=0.267066;ABP=790.051;AC=2;AF=0.5;AN=4;AO=446;CIGAR=1X;DP=1670;DPB=1670;DPRA=0;EPP=44.2196;EPPR=97.7883;GTI=0;LEN=1;MEANALT=3;MQM=57.6951;MQMR=59.5256;NS=2;NUMALT=1;ODDS=125.064;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=6303;QR=38747;RO=1212;RPL=177;RPP=44.2196;RPPR=385.426;RPR=269;RUN=1;SAF=2;SAP=954.193;SAR=444;SRF=906;SRP=648.002;SRR=306;TYPE=snp;technology.ILLUMINA=1 GT:DP:RO:QR:AO:QA:GL 0/1:724:538:17225:181:2490:-182.373,0,-1508.7 0/1:946:674:21522:265:3813:-301.57,0,-1895.55 +chrM 3243 . A G 10397.4 . AB=0;ABP=0;AC=1;AF=0.5;AN=2;AO=1365;CIGAR=1X;DP=3092;DPB=3092;DPRA=0;EPP=116.418;EPPR=46.9792;GTI=0;LEN=1;MEANALT=1;MQM=59.956;MQMR=59.8917;NS=2;NUMALT=1;ODDS=2394.09;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=49004;QR=63273;RO=1727;RPL=849;RPP=179.415;RPPR=105.14;RPR=516;RUN=1;SAF=443;SAP=368.01;SAR=922;SRF=637;SRP=261.033;SRR=1090;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 1:1035:341,694:341:12439:694:24871:-1118.32,0 0:2057:1386,671:1386:50834:671:24133:0,-2399.65 +chrM 5539 . A G 3281.62 . AB=0;ABP=0;AC=1;AF=0.5;AN=2;AO=379;CIGAR=1X;DP=787;DPB=787;DPRA=0;EPP=216.428;EPPR=224.5;GTI=0;LEN=1;MEANALT=1;MQM=54.1504;MQMR=53.777;NS=2;NUMALT=1;ODDS=755.62;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=13803;QR=15250;RO=408;RPL=74;RPP=308.741;RPPR=351.808;RPR=305;RUN=1;SAF=286;SAP=216.428;SAR=93;SRF=318;SRP=279.681;SRR=90;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0:299:221,78:221:8252:78:2824:0,-485.016 1:488:187,301:187:6998:301:10979:-358.012,0 ``` # Looking at the data @@ -400,7 +448,7 @@ VCF.IOBIO can be invoked by expanding a VCF dataset in Galaxy's history by click ## IGV -Similarly to VCF.BIOIO expanding a history item representing a VCF dataset will reveal an IGV link: +Similarly to VCF.IOBIO expanding a history item representing a VCF dataset will reveal an IGV link: > ### Displaying data in IGV > @@ -420,7 +468,7 @@ Similarly to VCF.BIOIO expanding a history item representing a VCF dataset will # Digging into the data -Visualizing VCF dataset may be a good way to get an overall idea of the data, but it does not tell a lot of details. For example, above we have visualized site 3,243 using IGV. It is interesting but we need to find out more. One thing we can do is to convert VCF dataset into a tab-delimited representation and play a bit more with it. +Visualizing VCF dataset may be a good way to get an overall idea of the data, but it does not tell a lot of details. For example, above we have visualized site 3,243 using IGV. It is interesting but we need to find out more. One thing we can do is to convert VCF dataset into a tab-delimited representation and with it play a bit more. Using **NGS: VCF Manipulation** → **VCFtoTab-delimited** on the filtered VCF dataset: @@ -434,7 +482,7 @@ Using **NGS: VCF Manipulation** → **VCFtoTab-delimited** on the filtered V > >![VCFtoTab-delimited output](../../images/mt_tab.png) > ->There are 53 columns in this dataset (not all are shown here). +>There are 62 columns in this dataset (not all are shown here). {: .hands_on} The columns in the above dataset represent INFO and Genotype fields on the original VCF dataset. Let's restrict ourselves to just a few: @@ -442,9 +490,9 @@ The columns in the above dataset represent INFO and Genotype fields on the origi * 2 `POS` - position along mitochondrial genome * 4 `REF` - reference allele * 5 `ALT` - alternative allele -* 50 `SAMPLE` - name of the sample -* 51 `AO` - number of alternative observations (how many times do we see the alternative allele at this position in this sample) -* 52 `DP` - depth of coverage at this site for this sample +* 52 `SAMPLE` - name of the sample +* 54 `AO` - number of alternative observations (how many times do we see the alternative allele at this position in this sample) +* 55 `DP` - depth of coverage at this site for this sample To cut these columns out we will use **Text Manipulation** → **Cut** @@ -452,41 +500,34 @@ To cut these columns out we will use **Text Manipulation** → **Cut** > >![Cut tool options](../../images/mt_cut.png) > ->Note that column names are pre-ceded with `c` +>Note that column names are preceded with `c` > >This will generate the following dataset: > >``` >POS REF ALT SAMPLE AO DP >-------------------------------------- ->3243 A G raw_child-ds- 841 1068 ->3243 A G raw_mother-ds- 767 1558 ->3483 G C raw_child-ds- 40 208 ->3483 G C raw_mother-ds- 87 342 ->3488 T A raw_child-ds- 40 206 ->3488 T A raw_mother-ds- 90 340 ->5539 A G raw_child-ds- 89 338 ->5539 A G raw_mother-ds- 325 526 ->8557 G C raw_child-ds- 181 724 ->8557 G C raw_mother-ds- 265 946 -> +>3243 A G raw_child-ds- 694 1035 +>3243 A G raw_mother-ds- 671 2057 +>5539 A G raw_child-ds- 78 299 +>5539 A G raw_mother-ds- 301 488 >``` {: .hands_on} -Let's look at site 4,243. At this site Mother has 841 `G`s (since `G` is an alternative allele) and 1,068-841=227 `A`s. This child has 767 `G`s and 1,558-767=791 `A`s: +Let's look at site 3,243. At this site Mother has 691 `G`s (since `G` is an alternative allele) and 1,035-2057=1386 `A`s. This child has 694 `G`s and 1,035-694=341 `A`s: ``` Allele A G ------------------- -Mother 227 841 -Child 791 767 +Mother 1386 691 +Child 341 694 ``` -Thus the *major* allele in mother (`G`) becomes the *minor* allele in child -- a remarkable frequency change due to mitochondrial bottleneck! +Thus the *major* allele in mother (`A`) becomes the *minor* allele in child -- a remarkable frequency change due to mitochondrial bottleneck! # Take a look at the whole thing This entire analysis is available as a [Galaxy history](https://usegalaxy.org/u/aun1/h/non-diploid-freebayes) that you can import into your Galaxy account and play with. -Now you know how to call variants in non-diploid system, so try it on bacteria, viruses etc... +Now you know how to call variants in non-diploid system, so try it on bacteria, viruses, etc. diff --git a/topics/variant-analysis/tutorials/non-dip/workflows/Calling_variants_in_non-diploid_systems.ga b/topics/variant-analysis/tutorials/non-dip/workflows/Calling_variants_in_non-diploid_systems.ga new file mode 100644 index 00000000000000..2f1c763cb39cf9 --- /dev/null +++ b/topics/variant-analysis/tutorials/non-dip/workflows/Calling_variants_in_non-diploid_systems.ga @@ -0,0 +1,848 @@ +{ + "a_galaxy_workflow": "true", + "annotation": "variant-analysis", + "format-version": "0.1", + "name": "Calling variants in non-diploid systems", + "steps": { + "0": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 0, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "raw_child-ds-1.fq" + } + ], + "label": "raw_child-ds-1.fq", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 301.5 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "2dcb08e6-5039-4144-a603-47a5c91c3a29", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "bcc1e2df-5a6b-4aaa-856c-ed31856351d2" + } + ] + }, + "1": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 1, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "raw_child-ds-2.fq" + } + ], + "label": "raw_child-ds-2.fq", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 383.234375 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "36a31c5b-b283-4009-9bbd-b47ec72a2915", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "97a549ba-b426-48eb-a4bd-249fa8d08b3a" + } + ] + }, + "2": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 2, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "raw_mother-ds-1.fq" + } + ], + "label": "raw_mother-ds-1.fq", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 465 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "699c61d4-2f31-4853-9e1b-a49f11bb1bd3", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "d6550e2e-9e6e-45a8-98b9-374f0d41dc9f" + } + ] + }, + "3": { + "annotation": "", + "content_id": null, + "errors": null, + "id": 3, + "input_connections": {}, + "inputs": [ + { + "description": "", + "name": "raw_mother-ds-2.fq" + } + ], + "label": "raw_mother-ds-2.fq", + "name": "Input dataset", + "outputs": [], + "position": { + "left": 200, + "top": 546.75 + }, + "tool_id": null, + "tool_state": "{\"optional\": false}", + "tool_version": null, + "type": "data_input", + "uuid": "3f624810-6b7e-4f63-aa97-6f391b2f8612", + "workflow_outputs": [ + { + "label": null, + "output_name": "output", + "uuid": "ce1307f3-c166-4439-81c3-6fb06eb760d9" + } + ] + }, + "4": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 4, + "input_connections": { + "input_file": { + "id": 0, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 387.5, + "top": 301.5 + }, + "post_job_actions": { + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": null, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"adapters\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": null, \"chromInfo\": \"/galaxy/server/database/tool-data/shared/ucsc/chrom/?.len\", \"__input_ext\": \"fastqsanger\", \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "71a54431-4e1a-4472-b1bd-f8f9a7790525", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "f98d02c3-a4f2-4f3a-9bd4-c72e7550a877" + } + ] + }, + "5": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 5, + "input_connections": { + "input_file": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 387.5, + "top": 526.5 + }, + "post_job_actions": { + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": null, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"adapters\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": null, \"chromInfo\": \"/galaxy/server/database/tool-data/shared/ucsc/chrom/?.len\", \"__input_ext\": \"fastqsanger\", \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "88a42cbf-c8b6-4cbf-b344-9b3e3c45a045", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "7f939259-0a4e-488e-9b60-4583361487c0" + } + ] + }, + "6": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bwa/bwa_mem/0.7.17.1", + "errors": null, + "id": 6, + "input_connections": { + "fastq_input|fastq_input1": { + "id": 0, + "output_name": "output" + }, + "fastq_input|fastq_input2": { + "id": 1, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Map with BWA-MEM", + "name": "fastq_input" + }, + { + "description": "runtime parameter for tool Map with BWA-MEM", + "name": "fastq_input" + } + ], + "label": null, + "name": "Map with BWA-MEM", + "outputs": [ + { + "name": "bam_output", + "type": "bam" + } + ], + "position": { + "left": 387.5, + "top": 1201.5 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bwa/bwa_mem/0.7.17.1", + "tool_shed_repository": { + "changeset_revision": "4f774c1e6049", + "name": "bwa", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"rg\": {\"rg_selector\": \"set\", \"KS\": \"\", \"read_group_sm_conditional\": {\"do_auto_name\": \"true\", \"__current_case__\": 0}, \"CN\": \"\", \"PU\": \"\", \"read_group_lb_conditional\": {\"do_auto_name\": \"true\", \"__current_case__\": 0}, \"read_group_id_conditional\": {\"do_auto_name\": \"true\", \"__current_case__\": 0}, \"PG\": \"\", \"__current_case__\": 1, \"DT\": \"\", \"PI\": \"\", \"DS\": \"\", \"PL\": \"ILLUMINA\", \"FO\": \"\"}, \"fastq_input\": {\"iset_stats\": \"\", \"fastq_input2\": {\"__class__\": \"RuntimeValue\"}, \"__current_case__\": 0, \"fastq_input_selector\": \"paired\", \"fastq_input1\": {\"__class__\": \"RuntimeValue\"}}, \"analysis_type\": {\"analysis_type_selector\": \"illumina\", \"__current_case__\": 0}, \"reference_source\": {\"ref_file\": \"hg38canon\", \"reference_source_selector\": \"cached\", \"__current_case__\": 0}}", + "tool_version": "0.7.17.1", + "type": "tool", + "uuid": "dca51976-8bdf-4e4b-82b0-3fe467c0b0d1", + "workflow_outputs": [ + { + "label": null, + "output_name": "bam_output", + "uuid": "bd5362a4-86c7-41b2-a33b-8726b5f7163c" + } + ] + }, + "7": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 7, + "input_connections": { + "input_file": { + "id": 2, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 387.5, + "top": 751.5 + }, + "post_job_actions": { + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": null, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"adapters\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": null, \"chromInfo\": \"/galaxy/server/database/tool-data/shared/ucsc/chrom/?.len\", \"__input_ext\": \"fastqsanger\", \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "d310b4c9-c42c-4814-a733-b3ee6b22c97e", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "c41f6648-0c71-414c-8274-46c203d096be" + } + ] + }, + "8": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "errors": null, + "id": 8, + "input_connections": { + "input_file": { + "id": 3, + "output_name": "output" + } + }, + "inputs": [], + "label": null, + "name": "FastQC", + "outputs": [ + { + "name": "html_file", + "type": "html" + }, + { + "name": "text_file", + "type": "txt" + } + ], + "position": { + "left": 387.5, + "top": 976.5 + }, + "post_job_actions": { + "HideDatasetActiontext_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "text_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc/0.72+galaxy1", + "tool_shed_repository": { + "changeset_revision": "e7b2202befea", + "name": "fastqc", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"min_length\": \"\", \"kmers\": \"7\", \"limits\": null, \"input_file\": {\"__class__\": \"ConnectedValue\"}, \"__page__\": null, \"adapters\": null, \"__rerun_remap_job_id__\": null, \"contaminants\": null, \"chromInfo\": \"/galaxy/server/database/tool-data/shared/ucsc/chrom/?.len\", \"__input_ext\": \"fastqsanger\", \"nogroup\": \"false\"}", + "tool_version": "0.72+galaxy1", + "type": "tool", + "uuid": "57cbf8b4-5fea-47f0-ac76-36e8fabadbd1", + "workflow_outputs": [ + { + "label": null, + "output_name": "html_file", + "uuid": "6a0212a5-01af-451d-888a-e8087fa2e306" + } + ] + }, + "9": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bwa/bwa_mem/0.7.17.1", + "errors": null, + "id": 9, + "input_connections": { + "fastq_input|fastq_input1": { + "id": 2, + "output_name": "output" + }, + "fastq_input|fastq_input2": { + "id": 3, + "output_name": "output" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool Map with BWA-MEM", + "name": "fastq_input" + }, + { + "description": "runtime parameter for tool Map with BWA-MEM", + "name": "fastq_input" + } + ], + "label": null, + "name": "Map with BWA-MEM", + "outputs": [ + { + "name": "bam_output", + "type": "bam" + } + ], + "position": { + "left": 387.5, + "top": 1344 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bwa/bwa_mem/0.7.17.1", + "tool_shed_repository": { + "changeset_revision": "4f774c1e6049", + "name": "bwa", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"rg\": {\"rg_selector\": \"set\", \"KS\": \"\", \"read_group_sm_conditional\": {\"do_auto_name\": \"true\", \"__current_case__\": 0}, \"CN\": \"\", \"PU\": \"\", \"read_group_lb_conditional\": {\"do_auto_name\": \"true\", \"__current_case__\": 0}, \"read_group_id_conditional\": {\"do_auto_name\": \"true\", \"__current_case__\": 0}, \"PG\": \"\", \"__current_case__\": 1, \"DT\": \"\", \"PI\": \"\", \"DS\": \"\", \"PL\": \"ILLUMINA\", \"FO\": \"\"}, \"fastq_input\": {\"iset_stats\": \"\", \"fastq_input2\": {\"__class__\": \"RuntimeValue\"}, \"__current_case__\": 0, \"fastq_input_selector\": \"paired\", \"fastq_input1\": {\"__class__\": \"RuntimeValue\"}}, \"analysis_type\": {\"analysis_type_selector\": \"illumina\", \"__current_case__\": 0}, \"reference_source\": {\"ref_file\": \"hg38canon\", \"reference_source_selector\": \"cached\", \"__current_case__\": 0}}", + "tool_version": "0.7.17.1", + "type": "tool", + "uuid": "2c721f3a-bd7d-4ac2-9807-fcea112f45f5", + "workflow_outputs": [ + { + "label": null, + "output_name": "bam_output", + "uuid": "970e9b52-ade1-40e4-867e-d4972b883640" + } + ] + }, + "10": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_MergeSamFiles/2.18.2.1", + "errors": null, + "id": 10, + "input_connections": { + "inputFile": [ + { + "id": 9, + "output_name": "bam_output" + }, + { + "id": 6, + "output_name": "bam_output" + } + ] + }, + "inputs": [], + "label": null, + "name": "MergeSamFiles", + "outputs": [ + { + "name": "outFile", + "type": "bam" + } + ], + "position": { + "left": 633.5, + "top": 302.234375 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_MergeSamFiles/2.18.2.1", + "tool_shed_repository": { + "changeset_revision": "7d34178f2812", + "name": "picard", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"comments\": [], \"assume_sorted\": \"false\", \"merge_sequence_dictionaries\": \"false\", \"validation_stringency\": \"LENIENT\", \"inputFile\": {\"__class__\": \"ConnectedValue\"}}", + "tool_version": "2.18.2.1", + "type": "tool", + "uuid": "3a7b6eae-bc97-4190-a6c9-8b8c455947d6", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFile", + "uuid": "a863a01d-af52-42f0-90e1-497e54b8ec22" + } + ] + }, + "11": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_MarkDuplicates/2.18.2.2", + "errors": null, + "id": 11, + "input_connections": { + "inputFile": { + "id": 10, + "output_name": "outFile" + } + }, + "inputs": [ + { + "description": "runtime parameter for tool MarkDuplicates", + "name": "inputFile" + } + ], + "label": null, + "name": "MarkDuplicates", + "outputs": [ + { + "name": "metrics_file", + "type": "txt" + }, + { + "name": "outFile", + "type": "bam" + } + ], + "position": { + "left": 879.5, + "top": 301.5 + }, + "post_job_actions": { + "HideDatasetActionmetrics_file": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "metrics_file" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/picard/picard_MarkDuplicates/2.18.2.2", + "tool_shed_repository": { + "changeset_revision": "7d34178f2812", + "name": "picard", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"duplicate_scoring_strategy\": \"SUM_OF_BASE_QUALITIES\", \"remove_duplicates\": \"false\", \"read_name_regex\": \"\", \"barcode_tag\": \"\", \"__page__\": null, \"__rerun_remap_job_id__\": null, \"optical_duplicate_pixel_distance\": \"100\", \"comments\": [], \"assume_sorted\": \"true\", \"validation_stringency\": \"LENIENT\", \"inputFile\": {\"__class__\": \"RuntimeValue\"}}", + "tool_version": "2.18.2.2", + "type": "tool", + "uuid": "8f2528f7-0be4-4ea7-9516-ecae820e09bb", + "workflow_outputs": [ + { + "label": null, + "output_name": "outFile", + "uuid": "9fc964c6-7395-454a-b8c0-f31b50c24d71" + } + ] + }, + "12": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/freebayes/bamleftalign/1.1.0.46-0", + "errors": null, + "id": 12, + "input_connections": { + "reference_source|input_bam": { + "id": 11, + "output_name": "outFile" + } + }, + "inputs": [], + "label": null, + "name": "BamLeftAlign", + "outputs": [ + { + "name": "output_bam", + "type": "bam" + } + ], + "position": { + "left": 1125.5, + "top": 301.5 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/freebayes/bamleftalign/1.1.0.46-0", + "tool_shed_repository": { + "changeset_revision": "156b60c1530f", + "name": "freebayes", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"iterations\": \"5\", \"reference_source\": {\"ref_file\": \"hg38\", \"reference_source_selector\": \"cached\", \"input_bam\": {\"__class__\": \"ConnectedValue\"}, \"__current_case__\": 0}, \"chromInfo\": \"/cvmfs/data.galaxyproject.org/managed/len/ucsc/hg38.len\", \"__input_ext\": \"bam\"}", + "tool_version": "1.1.0.46-0", + "type": "tool", + "uuid": "f5f18be9-bd62-41c6-8af4-fb38e93f3858", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_bam", + "uuid": "5a4be808-df52-4766-a1d0-bf95c02f37d7" + } + ] + }, + "13": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/bamtools_filter/bamFilter/2.4.1", + "errors": null, + "id": 13, + "input_connections": { + "input_bam": { + "id": 12, + "output_name": "output_bam" + } + }, + "inputs": [], + "label": null, + "name": "Filter", + "outputs": [ + { + "name": "out_file2", + "type": "txt" + }, + { + "name": "out_file1", + "type": "bam" + } + ], + "position": { + "left": 1371.5, + "top": 301.5 + }, + "post_job_actions": { + "HideDatasetActionout_file2": { + "action_arguments": {}, + "action_type": "HideDatasetAction", + "output_name": "out_file2" + } + }, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/bamtools_filter/bamFilter/2.4.1", + "tool_shed_repository": { + "changeset_revision": "bd735cae4ce6", + "name": "bamtools_filter", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"chromInfo\": \"/cvmfs/data.galaxyproject.org/managed/len/ucsc/hg38.len\", \"__rerun_remap_job_id__\": null, \"conditions\": [{\"__index__\": 0, \"filters\": [{\"__index__\": 0, \"bam_property\": {\"bam_property_selector\": \"mapQuality\", \"bam_property_value\": \">=20\", \"__current_case__\": 14}}, {\"__index__\": 1, \"bam_property\": {\"bam_property_selector\": \"isPaired\", \"bam_property_value\": \"true\", \"__current_case__\": 9}}, {\"__index__\": 2, \"bam_property\": {\"bam_property_selector\": \"isProperPair\", \"bam_property_value\": \"true\", \"__current_case__\": 11}}, {\"__index__\": 3, \"bam_property\": {\"bam_property_selector\": \"reference\", \"bam_property_value\": \"chrM\", \"__current_case__\": 20}}]}], \"rule_configuration\": {\"rules_selector\": \"false\", \"__current_case__\": 0}, \"input_bam\": {\"__class__\": \"ConnectedValue\"}, \"__input_ext\": \"bam\"}", + "tool_version": "2.4.1", + "type": "tool", + "uuid": "3daf6f14-257f-4f1d-b07e-a636c672b685", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "93440503-62dd-4e94-9751-14b32c2cc7e8" + } + ] + }, + "14": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/freebayes/freebayes/1.1.0.46-0", + "errors": null, + "id": 14, + "input_connections": { + "reference_source|batchmode|input_bams": { + "id": 13, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "FreeBayes", + "outputs": [ + { + "name": "output_vcf", + "type": "vcf" + } + ], + "position": { + "left": 1650.5, + "top": 291.5 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/freebayes/freebayes/1.1.0.46-0", + "tool_shed_repository": { + "changeset_revision": "156b60c1530f", + "name": "freebayes", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"__rerun_remap_job_id__\": null, \"options_type\": {\"options_type_selector\": \"full\", \"allele_scope\": {\"no_partial_observations\": \"false\", \"I\": \"false\", \"n\": \"0\", \"min_repeat_length\": \"5\", \"i\": \"false\", \"min_repeat_entropy\": \"0\", \"u\": \"true\", \"__current_case__\": 0, \"X\": \"true\", \"haplotype_length\": \"3\", \"allele_scope_selector\": \"set\"}, \"reporting\": {\"reporting_selector\": \"do_not_set\", \"__current_case__\": 1}, \"genotype_likelihoods\": {\"__current_case__\": 1, \"genotype_likelihoods_selector\": \"do_not_set\"}, \"O\": \"false\", \"population_model\": {\"K\": \"true\", \"J\": \"true\", \"P\": \"1\", \"T\": \"0.001\", \"__current_case__\": 0, \"population_model_selector\": \"set\"}, \"reference_allele\": {\"reference_allele_selector\": \"do_not_set\", \"__current_case__\": 1}, \"optional_inputs\": {\"optional_inputs_selector\": \"do_not_set\", \"__current_case__\": 1}, \"__current_case__\": 0, \"population_mappability_priors\": {\"__current_case__\": 1, \"population_mappability_priors_selector\": \"do_not_set\"}, \"input_filters\": {\"min_coverage\": \"0\", \"C\": \"2\", \"e\": \"1000\", \"__current_case__\": 0, \"G\": \"1\", \"F\": \"0.2\", \"standard_filters\": \"false\", \"m\": \"20\", \"q\": \"30\", \"mismatch_filters\": {\"mismatch_filters_selector\": \"do_not_set\", \"__current_case__\": 1}, \"R\": \"0\", \"use_duplicate_reads\": \"false\", \"Y\": \"0\", \"input_filters_selector\": \"set\", \"min_alternate_qsum\": \"0\"}, \"algorithmic_features\": {\"algorithmic_features_selector\": \"do_not_set\", \"__current_case__\": 1}}, \"reference_source\": {\"batchmode\": {\"input_bams\": {\"__class__\": \"ConnectedValue\"}, \"processmode\": \"individual\", \"__current_case__\": 0}, \"ref_file\": \"hg38\", \"reference_source_selector\": \"cached\", \"__current_case__\": 0}, \"chromInfo\": \"/cvmfs/data.galaxyproject.org/managed/len/ucsc/hg38.len\", \"__input_ext\": \"bam\", \"target_limit_type\": {\"target_limit_type_selector\": \"limit_by_region\", \"region_end\": \"16000\", \"region_chromosome\": \"chrM\", \"region_start\": \"1\", \"__current_case__\": 2}}", + "tool_version": "1.1.0.46-0", + "type": "tool", + "uuid": "729b01c1-b981-4aa7-ba0d-9a7f14121603", + "workflow_outputs": [ + { + "label": null, + "output_name": "output_vcf", + "uuid": "75edfff2-93ba-4ebb-a2db-ad32111cf78a" + } + ] + }, + "15": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/vcffilter/vcffilter2/1.0.0_rc1+galaxy3", + "errors": null, + "id": 15, + "input_connections": { + "input1": { + "id": 14, + "output_name": "output_vcf" + } + }, + "inputs": [], + "label": null, + "name": "VCFfilter:", + "outputs": [ + { + "name": "out_file1", + "type": "vcf" + } + ], + "position": { + "left": 1920.796875, + "top": 294.734375 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/vcffilter/vcffilter2/1.0.0_rc1+galaxy3", + "tool_shed_repository": { + "changeset_revision": "81972652519c", + "name": "vcffilter", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"append_filter\": \"false\", \"__page__\": null, \"filter_sites\": \"false\", \"allele_tag\": \"false\", \"region\": \"\", \"filter_repeat\": [{\"filter_value\": \"SRP > 20\", \"__index__\": 0, \"filter_type\": \"-f\"}, {\"filter_value\": \"SAP > 20\", \"__index__\": 1, \"filter_type\": \"-f\"}, {\"filter_value\": \"EPP > 20\", \"__index__\": 2, \"filter_type\": \"-f\"}, {\"filter_value\": \"QUAL > 30\", \"__index__\": 3, \"filter_type\": \"-f\"}, {\"filter_value\": \"DP > 100\", \"__index__\": 4, \"filter_type\": \"-f\"}], \"tag_pass\": \"false\", \"input1\": {\"__class__\": \"ConnectedValue\"}, \"__rerun_remap_job_id__\": null, \"invert\": \"false\", \"or\": \"false\", \"tag_fail\": \"false\"}", + "tool_version": "1.0.0_rc1+galaxy3", + "type": "tool", + "uuid": "e3afc76b-2480-4983-a0af-5c4d1793a597", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "2cbaab24-e113-417d-8000-d86f58056b1e" + } + ] + }, + "16": { + "annotation": "", + "content_id": "toolshed.g2.bx.psu.edu/repos/devteam/vcf2tsv/vcf2tsv/1.0.0_rc1+galaxy0", + "errors": null, + "id": 16, + "input_connections": { + "input": { + "id": 15, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "VCFtoTab-delimited:", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 2120, + "top": 292.5 + }, + "post_job_actions": {}, + "tool_id": "toolshed.g2.bx.psu.edu/repos/devteam/vcf2tsv/vcf2tsv/1.0.0_rc1+galaxy0", + "tool_shed_repository": { + "changeset_revision": "e92b3c0f9224", + "name": "vcf2tsv", + "owner": "devteam", + "tool_shed": "toolshed.g2.bx.psu.edu" + }, + "tool_state": "{\"__page__\": null, \"g_option\": \"true\", \"__rerun_remap_job_id__\": null, \"null_filler\": \"\", \"input\": {\"__class__\": \"ConnectedValue\"}}", + "tool_version": "1.0.0_rc1+galaxy0", + "type": "tool", + "uuid": "fead8662-0459-431b-b525-fafe5f6ec51e", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "df78f5bb-ef20-46a6-aa2b-bb163d9a877c" + } + ] + }, + "17": { + "annotation": "", + "content_id": "Cut1", + "errors": null, + "id": 17, + "input_connections": { + "input": { + "id": 16, + "output_name": "out_file1" + } + }, + "inputs": [], + "label": null, + "name": "Cut", + "outputs": [ + { + "name": "out_file1", + "type": "tabular" + } + ], + "position": { + "left": 2354, + "top": 301.5 + }, + "post_job_actions": {}, + "tool_id": "Cut1", + "tool_state": "{\"columnList\": \"c2,c4,c5,c52,c54,c55\", \"input\": {\"__class__\": \"ConnectedValue\"}, \"delimiter\": \"T\", \"__rerun_remap_job_id__\": null, \"__page__\": null}", + "tool_version": "1.0.2", + "type": "tool", + "uuid": "9e0ffe7d-7016-49d0-be12-0d2c1f089c60", + "workflow_outputs": [ + { + "label": null, + "output_name": "out_file1", + "uuid": "ef081c3d-223d-4091-8910-7491ffb52e8c" + } + ] + } + }, + "tags": [ + "variant-analysis" + ], + "uuid": "041a2dcb-f735-438e-8fa4-3f38cd0145ee", + "version": 9 +} diff --git a/topics/variant-analysis/tutorials/non-dip/workflows/index.md b/topics/variant-analysis/tutorials/non-dip/workflows/index.md new file mode 100644 index 00000000000000..e092e0ae66ddd4 --- /dev/null +++ b/topics/variant-analysis/tutorials/non-dip/workflows/index.md @@ -0,0 +1,3 @@ +--- +layout: workflow-list +--- diff --git a/topics/visualisation/metadata.yaml b/topics/visualisation/metadata.yaml index 79a777574f5a91..75452ce97e0725 100644 --- a/topics/visualisation/metadata.yaml +++ b/topics/visualisation/metadata.yaml @@ -1,4 +1,4 @@ ---- +--- name: "visualisation" type: "use" title: "Visualisation"