From ef495a3ffa3eda2bfff92bac030aacc4d3bf5cfa Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Fri, 20 Sep 2024 09:20:48 +0000 Subject: [PATCH 01/42] add new recording from Google Form submission --- .../assembly-decontamination/tutorial.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/topics/assembly/tutorials/assembly-decontamination/tutorial.md b/topics/assembly/tutorials/assembly-decontamination/tutorial.md index 09471a29bd6609..c580f4f017817d 100644 --- a/topics/assembly/tutorials/assembly-decontamination/tutorial.md +++ b/topics/assembly/tutorials/assembly-decontamination/tutorial.md @@ -1,6 +1,5 @@ --- layout: tutorial_hands_on - title: Decontamination of a genome assembly zenodo_link: https://zenodo.org/records/13367433 questions: @@ -11,14 +10,27 @@ objectives: - Remove Mitochondrial DNA from an assembly time_estimation: 1H30M key_points: -- Assembly decontamination is important to avoid false identification of genes, blast hits... +- Assembly decontamination is important to avoid false identification of genes, blast + hits... contributions: authorship: - - delphine-l + - delphine-l +recordings: +- youtube_id: TODO + length: 29M + galaxy_version: " 24.1.2.dev0" + date: '2024-09-20' + speakers: + - delphine-l + captioners: + - delphine-l + bot-timestamp: 1726801100 + --- + When sequencing a genome, it is common that contamination from a foreign organism get mixed with the genomic material of our species of interest. For instance, if you are processing a whole body sample of an insect then you will sequence not only the insect, but everything on and inside of it. When building a reference genome, it is important to separate these contaminants from the genome of our species. Foreign DNA sequences could cause false positive identification when running BLAST analyses, the misidentification of genes that don't actually belong to the species, or they can be incorporated as 'reference' sequence for that species in the public archives when those sequences did not actually belong to that species. From 811dd4c2337e2beeca46cb8248e42fb61070a878 Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Fri, 20 Sep 2024 09:29:42 +0000 Subject: [PATCH 02/42] add new recording from Google Form submission --- .../microbiome/tutorials/dada-16S/tutorial.md | 66 +++++++++++++------ 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/topics/microbiome/tutorials/dada-16S/tutorial.md b/topics/microbiome/tutorials/dada-16S/tutorial.md index e7dc88b0ec62d2..15ba1b021efb5b 100644 --- a/topics/microbiome/tutorials/dada-16S/tutorial.md +++ b/topics/microbiome/tutorials/dada-16S/tutorial.md @@ -1,26 +1,42 @@ --- layout: tutorial_hands_on - title: Building an amplicon sequence variant (ASV) table from 16S data using DADA2 zenodo_link: https://doi.org/10.5281/zenodo.800651 questions: -- What are the primary steps involved in generating an ASV table using DADA2 from 16S rRNA gene sequencing data? -- How does DADA2 improve the accuracy of microbial community analysis compared to traditional OTU-based methods? -- What is the importance of quality filtering in the DADA2 workflow, and how does it impact downstream analyses? -- How does the error rate learning process contribute to the identification of true biological sequences in DADA2? -- What role does chimera removal play in the DADA2 pipeline, and why is it crucial for obtaining reliable ASV data? -- How can phyloseq be used to explore and visualize the ASV table generated by DADA2, and what types of ecological insights can it provide? +- What are the primary steps involved in generating an ASV table using DADA2 from + 16S rRNA gene sequencing data? +- How does DADA2 improve the accuracy of microbial community analysis compared to + traditional OTU-based methods? +- What is the importance of quality filtering in the DADA2 workflow, and how does + it impact downstream analyses? +- How does the error rate learning process contribute to the identification of true + biological sequences in DADA2? +- What role does chimera removal play in the DADA2 pipeline, and why is it crucial + for obtaining reliable ASV data? +- How can phyloseq be used to explore and visualize the ASV table generated by DADA2, + and what types of ecological insights can it provide? objectives: -- Identify the key steps in the DADA2 workflow for generating an ASV table from 16S rRNA gene sequencing data -- Explain the importance of quality filtering, error rate learning, and chimera removal in ensuring accurate microbial community analysis -- Execute the DADA2 pipeline to process raw 16S sequencing data and produce a high-resolution ASV table -- Compare the advantages of ASV-based methods over traditional OTU-based approaches in terms of accuracy and resolution -- Assess the effectiveness of using phyloseq for exploring and visualizing ASV data to gain ecological and evolutionary insights +- Identify the key steps in the DADA2 workflow for generating an ASV table from 16S + rRNA gene sequencing data +- Explain the importance of quality filtering, error rate learning, and chimera removal + in ensuring accurate microbial community analysis +- Execute the DADA2 pipeline to process raw 16S sequencing data and produce a high-resolution + ASV table +- Compare the advantages of ASV-based methods over traditional OTU-based approaches + in terms of accuracy and resolution +- Assess the effectiveness of using phyloseq for exploring and visualizing ASV data + to gain ecological and evolutionary insights time_estimation: 3H key_points: -- DADA2 allows for the generation of precise ASV tables, providing higher resolution and more accurate representation of microbial communities compared to traditional OTU-based methods. -- Key steps such as quality filtering, error rate learning, and chimera removal are essential in the DADA2 pipeline to ensure the reliability and accuracy of the resulting ASV data. -- Tools like phyloseq can be effectively used to explore and visualize ASV tables, facilitating deeper ecological and evolutionary insights into microbial diversity and community structure. +- DADA2 allows for the generation of precise ASV tables, providing higher resolution + and more accurate representation of microbial communities compared to traditional + OTU-based methods. +- Key steps such as quality filtering, error rate learning, and chimera removal are + essential in the DADA2 pipeline to ensure the reliability and accuracy of the resulting + ASV data. +- Tools like phyloseq can be effectively used to explore and visualize ASV tables, + facilitating deeper ecological and evolutionary insights into microbial diversity + and community structure. subtopic: metabarcoding tags: - metabarcoding @@ -33,13 +49,25 @@ contributions: - bernt-matthias - clsiguret edam_ontology: -- topic_3697 # Microbial ecology -- topic_0637 # Taxonomy -- topic_0080 # Sequence analysis -- topic_4038 # Metabarcoding +- topic_3697 +- topic_0637 +- topic_0080 +- topic_4038 +recordings: +- youtube_id: TODO + length: 1H36M + galaxy_version: " 24.1.2.dev0" + date: '2024-09-20' + speakers: + - bernt-matthias + captioners: + - bernt-matthias + bot-timestamp: 1726830881 + --- + The investigation of environmental microbial communities and microbiomes has been revolutionized by the development of high-throughput amplicon sequencing. In amplicon sequencing a particular genetic locus, for example the 16S rRNA gene (or a part of it) in bacteria, is amplified from DNA extracted from the community of interest, From 2023c195b52786bed45b40d1fc8d17750cad9f39 Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Fri, 20 Sep 2024 11:31:03 +0200 Subject: [PATCH 03/42] Update topics/assembly/tutorials/assembly-decontamination/tutorial.md --- topics/assembly/tutorials/assembly-decontamination/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/assembly/tutorials/assembly-decontamination/tutorial.md b/topics/assembly/tutorials/assembly-decontamination/tutorial.md index c580f4f017817d..9b79c32b00869f 100644 --- a/topics/assembly/tutorials/assembly-decontamination/tutorial.md +++ b/topics/assembly/tutorials/assembly-decontamination/tutorial.md @@ -18,7 +18,7 @@ contributions: recordings: - youtube_id: TODO length: 29M - galaxy_version: " 24.1.2.dev0" + galaxy_version: 24.1.2.dev0 date: '2024-09-20' speakers: - delphine-l From ea2c2f1be0660b6fa082afff0fa57d60078a12f8 Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Fri, 20 Sep 2024 11:31:47 +0200 Subject: [PATCH 04/42] Update topics/microbiome/tutorials/dada-16S/tutorial.md --- topics/microbiome/tutorials/dada-16S/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/microbiome/tutorials/dada-16S/tutorial.md b/topics/microbiome/tutorials/dada-16S/tutorial.md index 15ba1b021efb5b..259826eecf7acd 100644 --- a/topics/microbiome/tutorials/dada-16S/tutorial.md +++ b/topics/microbiome/tutorials/dada-16S/tutorial.md @@ -56,7 +56,7 @@ edam_ontology: recordings: - youtube_id: TODO length: 1H36M - galaxy_version: " 24.1.2.dev0" + galaxy_version: 24.1.2.dev0 date: '2024-09-20' speakers: - bernt-matthias From 4a26a563351fcdda214185d73c87415154057be8 Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Fri, 20 Sep 2024 11:32:41 +0200 Subject: [PATCH 05/42] restore comments --- topics/microbiome/tutorials/dada-16S/tutorial.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/topics/microbiome/tutorials/dada-16S/tutorial.md b/topics/microbiome/tutorials/dada-16S/tutorial.md index 259826eecf7acd..1b2b9f3defabaf 100644 --- a/topics/microbiome/tutorials/dada-16S/tutorial.md +++ b/topics/microbiome/tutorials/dada-16S/tutorial.md @@ -49,10 +49,10 @@ contributions: - bernt-matthias - clsiguret edam_ontology: -- topic_3697 -- topic_0637 -- topic_0080 -- topic_4038 +- topic_3697 # Microbial ecology +- topic_0637 # Taxonomy +- topic_0080 # Sequence analysis +- topic_4038 # Metabarcoding recordings: - youtube_id: TODO length: 1H36M From 66edbe7a69597d87638efea297e031c52e8a437a Mon Sep 17 00:00:00 2001 From: Deepti Varshney <44775741+Deeptivarshney@users.noreply.github.com> Date: Fri, 20 Sep 2024 13:05:05 +0200 Subject: [PATCH 06/42] Update topics/assembly/tutorials/assembly-decontamination/tutorial.md --- topics/assembly/tutorials/assembly-decontamination/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/assembly/tutorials/assembly-decontamination/tutorial.md b/topics/assembly/tutorials/assembly-decontamination/tutorial.md index 9b79c32b00869f..6dfe6c02e3a1a0 100644 --- a/topics/assembly/tutorials/assembly-decontamination/tutorial.md +++ b/topics/assembly/tutorials/assembly-decontamination/tutorial.md @@ -16,7 +16,7 @@ contributions: authorship: - delphine-l recordings: -- youtube_id: TODO +- youtube_id: -5oxfNnNwoA length: 29M galaxy_version: 24.1.2.dev0 date: '2024-09-20' From 7e03db68d81cad261a441102588688295b57e40c Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Fri, 20 Sep 2024 13:17:29 +0200 Subject: [PATCH 07/42] Support messaging via postMessage --- _config.yml | 1 + assets/js/main.js | 5 +- assets/js/tutorial-mode.js | 122 +++++++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 assets/js/tutorial-mode.js diff --git a/_config.yml b/_config.yml index 2a57d792bd1109..24b551fae142fc 100644 --- a/_config.yml +++ b/_config.yml @@ -60,6 +60,7 @@ javascript_bundles: - assets/js/clipboard.min.js # Used on anything with a pre - assets/js/anchor.min.js # Used on every page. - assets/js/main.js + - assets/js/tutorial-mode.js # - assets/js/list.min.js # Potentially unused? # Conversion diff --git a/assets/js/main.js b/assets/js/main.js index 170e92628a9d16..69010d0df2efe8 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -1,4 +1,7 @@ -// make boxes collapsible +// GTN Javascript: this appears on *every* page. +// +/* GTN Boxes + */ //LEGACY $(".solution>h3,.details>h3,.tip>h3,.question>h3,.hands_on>h3,.comment>h3").click(function(event) { $(">*:not(h3)", $(this).parent()).toggle(400); diff --git a/assets/js/tutorial-mode.js b/assets/js/tutorial-mode.js new file mode 100644 index 00000000000000..30a59038727b79 --- /dev/null +++ b/assets/js/tutorial-mode.js @@ -0,0 +1,122 @@ +/* GTN Tutorial Mode + * Setup messaging to share events with any Galaxy that is embedding this content. + * + * Originally we suggested admins to setup a proxy of the GTN at + * /training-material/ ensuring that Galaxy and the GTN were on the same + * domain, the same origin. + * + * This let us intermingle the site's content a bit, and call javascript from both sides safely. + * + * We replace it now with postMessage, a widely available and supported API for sharing messages and data between domains. + * https://caniuse.com/mdn-api_window_postmessage + * + * **Messages** + * + * The following communication occurs + * + * GTN | Direction | Galaxy + * ------------ | --------- | ------ + * Navigation | -> | Galaxy stores this in localStorage + * Scroll | -> | Galaxy stores this in localStorage + * Click to Load Tool | -> | Galaxy loads the tool at the specified version + * Click to Load WF | -> | Galaxy activates the TRS API. + * Scrolls | <- | User opens the GTN in Tutorial Mode and Galaxy restores the scroll position + * + * These are the *only* supported messages. + * + * All GTN messages are sent as `action@@data@@other` where `@@` is the + * delimiter, chosen since unlikely to occur naturally + * + * The only Galaxy message sent to us is scroll, and it is just a number. Any + * non-numeric characters are stripped before a scroll is attempted. + * + * **Security** + * precautions are taken where possible and useful. On the Galaxy + * side we'll need to check the origin of the request and ensure it is really + * training.galaxyproject.org (if we ever change domains again, like we've done + * in the past, this should be acceptable as long as the old domain continues + * to load and does not redirect automatically. If it does redirect, tutorial + * mode will stop working (messages will not be processed) until the + * corresponding Galaxy update is made.) + */ + +// Wrapper for postMessage to ensure we always send the same format +function gtnPostMessage(category, message,other){ + parent.postMessage(`${category}@@${message}@@${other}`, "*") +} + +// On load we inform any parent of which url we're at. +// So when the user e.g. navigates pages this can be stored on the galaxy side. +gtnPostMessage('navigate', window.location) + +// We'll also track the scroll position to allow restoring that.. +// +// https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event +// +// Code samples added on or after August 20, 2010 are in the public domain CC0. +// No licensing notice is necessary but if you need one, you can use: +// +// Any copyright is dedicated to the Public Domain: +// https://creativecommons.org/publicdomain/zero/1.0/ +let lastKnownScrollPosition = 0; +let ticking = false; +document.addEventListener("scroll", (event) => { + lastKnownScrollPosition = window.scrollY; + if (!ticking) { + window.requestAnimationFrame(() => { + gtnPostMessage('scroll', lastKnownScrollPosition) + ticking = false; + }); + ticking = true; + } +}); + +// If the user clicks on a tool button/link, we'll inform the parent (Galaxy) +// of that so it can load said tool. +document.querySelectorAll("button.tool,span.tool").forEach((button) => { + button.addEventListener("click", (event) => { + gtnPostMessage( + 'loadTool', + event.target.getAttribute("data-tool"), + event.target.getAttribute("data-version") + ) + }); +}); + +// Same for workflows, no trs-version/trs-server attribute? TODO. +document.querySelectorAll("button.workflow,span.workflow").forEach((button) => { + button.addEventListener("click", (event) => { + gtnPostMessage( + 'loadWorkflow', + event.target.getAttribute("data-workflow") + ) + }); +}); + + +// Lastly, we listen to messages from the parent which enable us to restore our Scroll offset +// +// Every article you read about postMessage is concerned about security, and the origin of the message. +// We here clearly ignore it, so we are playing with potentially dangerous code. +// +// If anyone is able to inject a message into the page, and we are careless +// with this data, they could compromise the GTN. +// +// So we need to be extremely careful with the data we receive. +// +window.addEventListener('message', e => { + // Cross domain messages are allowed from anywhere, since we don't know + // who will embed the GTN and we would like to be able to support this + // scroll behaviour for improved user experience. + + // It *MUST* be an integer. + // So we serialise whatever we get to a string (we don't care about any + // data inside, just, get it as quickly as possible to a string. And + // make sure it contains only numbers. + var safeScrollText = `${e.data}`.replace(/[^0-9]/g, ''); + var scrollPosition = parseInt(safeScrollText, 10); + if (scrollPosition) { + window.scrollTo(0, scrollPosition); + } + return; +},false); From 4a5bf9a28222e0ce8e3edd54022fa5195ed90306 Mon Sep 17 00:00:00 2001 From: Deepti Varshney <44775741+Deeptivarshney@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:44:11 +0200 Subject: [PATCH 08/42] Update topics/microbiome/tutorials/dada-16S/tutorial.md --- topics/microbiome/tutorials/dada-16S/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/microbiome/tutorials/dada-16S/tutorial.md b/topics/microbiome/tutorials/dada-16S/tutorial.md index 1b2b9f3defabaf..c19e76fe51e55c 100644 --- a/topics/microbiome/tutorials/dada-16S/tutorial.md +++ b/topics/microbiome/tutorials/dada-16S/tutorial.md @@ -54,7 +54,7 @@ edam_ontology: - topic_0080 # Sequence analysis - topic_4038 # Metabarcoding recordings: -- youtube_id: TODO +- youtube_id: ISocxcJZEjw length: 1H36M galaxy_version: 24.1.2.dev0 date: '2024-09-20' From 1ac5fcc275d718ba76b92e27769782149eb6cbfc Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Sat, 21 Sep 2024 10:43:19 +0000 Subject: [PATCH 09/42] add new recording from Google Form submission --- .../mitochondrion-assembly/tutorial.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/topics/assembly/tutorials/mitochondrion-assembly/tutorial.md b/topics/assembly/tutorials/mitochondrion-assembly/tutorial.md index 17c19104759c3d..3a5499c98f232f 100644 --- a/topics/assembly/tutorials/mitochondrion-assembly/tutorial.md +++ b/topics/assembly/tutorials/mitochondrion-assembly/tutorial.md @@ -1,8 +1,7 @@ --- layout: tutorial_hands_on - title: Assembly of the mitochondrial genome from PacBio HiFi reads -zenodo_link: 'https://zenodo.org/records/13345315' +zenodo_link: https://zenodo.org/records/13345315 questions: - How to assemble the mitochondrial genome from PacBio Hifi Reads objectives: @@ -10,13 +9,26 @@ objectives: - Understand the outputs of MitoHifi time_estimation: 1H key_points: -- MitoHifi generates the assembly and annotation of the Mitochondrial Genome using a reference sequence. +- MitoHifi generates the assembly and annotation of the Mitochondrial Genome using + a reference sequence. contributors: - delphine-l +recordings: +- youtube_id: TODO + length: 11M + galaxy_version: " 24.1.2.dev0" + date: '2024-09-20' + speakers: + - delphine-l + captioners: + - delphine-l + bot-timestamp: 1726861719 + --- + # Introduction This tutorial will show you how to assemble a mitochondrial genome from PacBio HiFi data using MitoHiFi {% cite uliano2023 %}. From 59a85c1b29b4f64cdb9232ebdd1ffc7271af4c22 Mon Sep 17 00:00:00 2001 From: teresa-m Date: Sun, 22 Sep 2024 14:21:16 +0200 Subject: [PATCH 10/42] Update topics/assembly/tutorials/mitochondrion-assembly/tutorial.md --- topics/assembly/tutorials/mitochondrion-assembly/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/assembly/tutorials/mitochondrion-assembly/tutorial.md b/topics/assembly/tutorials/mitochondrion-assembly/tutorial.md index 3a5499c98f232f..9c36348750a57b 100644 --- a/topics/assembly/tutorials/mitochondrion-assembly/tutorial.md +++ b/topics/assembly/tutorials/mitochondrion-assembly/tutorial.md @@ -14,7 +14,7 @@ key_points: contributors: - delphine-l recordings: -- youtube_id: TODO +- youtube_id: 0ehAZ0DZsFU length: 11M galaxy_version: " 24.1.2.dev0" date: '2024-09-20' From 02bde7c5164ed7912c78d3dbb89ed7f2b5a0e85e Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Tue, 24 Sep 2024 14:09:41 +0100 Subject: [PATCH 11/42] update screenshots --- .../img/workflow-entry.png | Bin 15663 -> 13843 bytes .../img/workflow-invocation.png | Bin 24936 -> 34524 bytes .../img/workflow-run-page.png | Bin 15214 -> 23968 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-entry.png b/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-entry.png index ba367da134b73db462b5a187241528c4eeba0466..d97491578b1ebe5b5ac0dfd12ed73ec7faae0025 100644 GIT binary patch literal 13843 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 x2nuMwZzsGD~9S)El?k5_f+ZJ&o3dWv6eQETws7 z4wr|W69VMUjO18oWEwzo)q8qVP0SPra#~qbd*Zuc!DfqR@2ut(J(0(=j%t9fz?bxwcUCz5UP7isz!`PqkZS0C3@6CB%xT5Nq^Py z?s=!8ikSp&JcKig6A9CZqZ=*Ed$HE(Xn-ak=kPOAs%hC%MP~H(IA9a7}s3fH^^aCK9^`5^}=+C$TXvAZY7WF|s?YetCeGhC7d@j`0t9{Is^tGkA@s z=ks{GM~3@P)13_#i>1uifPSf~#6OR?Z$xP`+Cu?UfKUgQsJFhh)H4aXT&lXTmnYJd zR{gm%0$8${U=GdWt}HLM=cp^_lgq*=Js~fN8+k}ea)rJ_oTNV1$IFGZlh8R6({Gvd z@b%8gd@iHosZ{1Kr>2hBA0~j!TG=$A?>coAX1osIL z$CCBqO5m*e7n9-b^J+|nMzMPND;9fVBXc``w39qQ`7Q3AhFMHCdG9{1<$|}qcb|Sy zjVDZ7EFI)tP)(`@#yN235+(nwZ8u6u4A6>WB5(C7b6}DCv~ZD2`@jKjqpJOq&ibCz zb0(&*X^rhwv_sKJOy7e(6n@BJg!L)ppqh0&(gkp?n0Po0V|s&)S|!hT@`>eQqzTN| zT3%@cRSQ3L!Mr*8v8%%IJkMt1dM}rRl~YVNgRKONPZPo&5W+hb^t_t{|FDowQD%s7 zlZ%!X!2q|_+N?=kXg0mR;0(@Dm3u!;cSN}Sus%CYZ0)llYma!-6VS(QrldG4DebW* z#)+NfnpC)=cU$RXMszzh4T$haA-lGwYqDi#ai3!0*j)>|2?y>rgAGf`7Z<~(I6*oh zG!j@ZZoWYGA1CbKG{I+6JI;r>J9xrQC4k!fH4#RPKxhYwFn^8ERQ2(IQ+i%)&1~~k z`h6o4Fn|~`AZy(Af+4_I!-uw0<4eZr<=Vtd$=u`CkVJ&cW}L(Vuz`K0s!hRo!hmbA zYHOodrA0DT;}$V=$w*eaEwS@iV~(ABE_RVyYn+s1g#apD(bn5xAFl-~?DMNR#Q)<3 zWfB!65_NM7N;TBsk~q&#Io}xe9vkU9BJE#Wb9Ck0XkbIZQoEHnHfLKc`w1o#D2I2~ zDaw`2P>5AUVIMIz=w|lkF1@}b(BJ*AnuvtB#F7K2=&D_ePOt+w$mUJN705&@)Nz3( zOZKtGez>9gv_RSOqzkNO5TYJL;&KjQ2qYl8Z4A%zJZES;4z)V1=!zK3THyE- zRZBjl*JnT!K$7j42tUYgU>&M1Ai=~O`z>@A@Q4e?_#uzgh+|icuu^L(xoEVTC(G-e zVX$7F>o(vCWLplNq`7#EON1Xz&k=(++G*eV;CNP07*pKxnrJCi^!foh0cE`iZ?cYr z2!6wAKFo6-ztn(ra}#|LGjJet@-tuC0GU^jo^;qI^#Hz@fKUFBv0P*okrllwP3mFz z9_&V@i=8G}slQA^+W{T64)}*4akBmX%YyXSe=p&W*Fnp112l!EKz}9*Kd!b}Bl5=! zJ4u#y0D9zmg2^_emrJX+lH$|jp*gBrSbE=j@I6cQFYMeEz7xa7Eu3itaq^7PV|pgU6y?IcxcLN zwXupj8{oL5nJRE7Uyq5*Ntuv2sY&WD=&;B2g2$WIRT-cL5GRdSHZF;a=aifVA!6jLtQR* zn&ddo=K>PM=KM~N7-~z$>4Y|8)@6KaSNpY~@;4D;06>z~ArgHUaH7tjA-rmzW^EKJ zMlGEV(8f)&!ez$^NBc$^oP~ex&iCPXM%16C6%0SccizWM8xV8!I3sg(&3c-nX2p3w zj5ApGM3*E*xYm*Q*RtfFO_?!M9s=u!TspZH_TNx=t^cb(3mx=~k&^`*m6JPW zlh@uROO0-$5ZHaRY-Kc}mB_ag`E)(L@TMmdT*)NeHpbe%BQ!$20zAbIZ9`r}4d# zF%=|y+hteHd1U^QS4!_9@V9OKPDrQ?x*LzAj^+jE-52|)F-P>!@Q|R0@LkYKgj4ls#C^CE z?hQI9;|zNz`i76-Ud)4!bh7GM)L}%hx49PEPG|O)@&_m=hv9~g-eG-C3rH<7K{f`` za;0f`-nw$#PtU(uW9j-8+r)=Q61OB}8kd>kG;tN@?z*WD&)RHJA$#peZMRN3$U>?3 zA0f>{zTz4Dd`qu_U4rioN_%@`86!%qSM*PX&6?A?hBRDv4eD96mENk^m}QH`@2G)g zTd*}eXCP*vwh<6|RJ6-9)X7ROw|m;&#q1FN14q-Uq_bKEkX^adPso9*(MBI?g7VOKe{f9t$`36K>`A zSq!6o-?Tlz<*91;9V{Tv^}?$9)e=zF*fZIpm;^BGP)~A1$qp7P3SCtX>hbD}AwYP$ zvVEmZF~>eZu6(Xhu9nFreQeP!*~R03gkg^aa*}wyl$cPe(4=$g&O{=k9P{*tYI>=!VfJuIiiwKy z3GMdHab`yOvN~inMcJ-8@S;c2u%aJNlWeVrhTeYeSHGgJhTFJ~DXHCdOyeqE1ifU> zq2|s;Uje)A~G*b zH^50;kn9LtGaE4$ZJCp}8Iz#~NR6YhR$s6&LYQNbylWQ!`FlB3x}jm77(vd`JmI1xojpL1YBy@gasQv`p@1gf42>M z$K{TSofV1e!)e(@RR=!SiK3+dZoHs|q+-Iv9Jf0}eUz7q(K$RZeS3iAj5qW)} zp?keegnVB>{0qR`OH5B5fh8;TxU@#XT68RnrY00y_v}oAkFW=1G}sV>w_r8dT5WZH z`%#8{cqmBqhcTxAwU|MW~oYjnqDAE0>Q?w^4(YM8SNQ!nUC_DVHat z5c_RE?qQ!GN{La2%p)*)?WYVO75{^k2V8cfD{$Zs)t!!S{9_*K+%O9k-TXYsrWtR) ziAjS<4w`2F?j{iX>U)Ic@O9I5W%(*;E@22W@7bZ$b5UHi!ki@;?GNr1IU5-+JG@c&HC4LNR!WDW*ZIJrn7xFW!f>gbt)KLo8qjMsh%4 zXI`LkMg2=q%u|LSc4}u%H>1#L_3a^bR9#;pMw$UpF6-PJ&$3n3mxmiK9P& z=;+hk$tldeuRB6`8j%W;j`nVj9f#gi>bZ9{I{wg9GcyQWIoix3=!0M}*Lp%aN%V zwVHdoAGuwUSv5(bw&u-P2L| z+hK&a-2!&+0jmyGyw~^7#ngkJeI_@S+rOu|6*+EbZNR;Sq=hCU*XIRIH;bOMV=yZ8 zJF52)&&_3b*XPyxLe!*QTZ?HMms+E8M;QpuaPj^x#{0-|(1) zw#WWo0t!SI^Htgn6QPqY<>g|bMb}Pl>nRr|u=i#+w*H!oLI|c^{$0v%;*`AxA&2kx zySmq4(4h6f}&d@%W%Dp|NFFI1P9_L<+%>_Jp(z_>wzYSxv0nl z7Z(LVu`C3Aiaqe&djd1vao*L1iWlVXX8xsCI%RFnDT1%&HRqRBA(g5S7EZCuq$?=A z)p<+o5FyBy=W2IQ6+7kIZJ2Ah+q@683u(K&-9eiutNr{Ga&No3(&p#^`=+}xUkEKn z|2LTigU+4fmBF5;Ervyr(-{k_J;t8V-$f;l!Wi3I*QAOd=SNHR-iJNQO{snaPEh~S zW$x;RY{H}pf^EUh?DkZ{g9Zhw51v`Ax}f=KMn-01yMnKc=H)p5+Kw&kDp z&sep=5@MUHcGk)BD%lU$%YM>8CH@~&Q&mOn*(V7N?D*GWN!ebsvmXdMm!2yxY>Wp5 zU>9vj^-{yfWA1dnCf-V}s8-yTIeQXNqv^W2u%EJARGjTjS*04nE#fGTFZ=Fi2ffe#_sE(U3ac!T3vinQS#s zs^&uuw?p7AfjhmSxgNyS4`LM48QXKiSK(|qy4v?Zs(1Ei0Z!eGkjm)%c=COJ!A~4> z*2!}{szyVxsodHim;eVpd3ncdaM@Z9Uw*;?wHZleNF*pMi02oA2hs+rzjxW;Y<}P6 zu-NxhhPbbeEb~zAKv*yCZy&w88i@+u+fUQ^and)LM~Shw4h^uj5B4{uMH`FaI9g!@ z$`36HE5r0Fok|Y4zb~lkG%pR-4C_$%#PsbA=M`16IA-5C0eKtCxdzQ<=AsT5=F8e3 zX_e-B>fkKZf_OjcqN7U6L>RT-7>r^dQilxzGHu?hA`o5>Nr9vATMkyHW+pB4IA z6itkV44NOj=HacxO`kO5!hL~eahZE`HlGP9h4e2wlwjub`hGuGxU7<5GHi}V0(k!E z9+*n={RBxkkHOJ!n$fhmvXYG~XSc4KfX|@lSN}ojgPFlAR*MQX;4ytDvVX!O!?f_fY9KRd zn50i)^0%y#_9`o%!A_}U`P1$lHO)i+QRDwc_%xC|i~4%cW>eQE5L&jlf+hOaOI{MW zitV9#>bJfehNA_3acvb$hMz2pi4G47cal9{AJVMEEytj5psiVVIe{FPU#72G0gWSC z9vJf=0}unM%=|}gM8%@l)9!}lui>;7{OgOG=GVzvyvSz*JTP>g2tf)?JboZ0E9r!e z%aCrRa~GH{b$6||k^d$L{BJ!Cs7tk|2dTRO z5&moG#m`25FRqdbW$S>1<*9AX*{`PRUv_}$zj88FN12g5IAHj%(cPnurWH5u)V`f7 zIP83g=9Jo%DYEM=yH68j(}DP z%M&1k%e=Mdk<^2B#XvRVzyjb+VCP?H;nI))s0oQ4e65!>$WG}?Awd<8NPvXBe}skq fi7|?Tp#P0C@`>>IxFAx-+w=SqUUNTV~I@-pL4!C={(Gp!tEn);RrcqUeGIp_aX7*nx^kY}k(x5pEGQUJOj?ZtW zQ8!;9b^TD35|8ixetJk;-!8`b`{4un#r==Ze?Qwu{(b!%{;%aWO8W1B$02~feLlX1 zJoz)lhe z%T@zRR*2m>wNF+pg8e!GT-j(v%;ueOxcI}LO}9+VZ_>NbRmNL|b2`2^M%^a8wFsf( zoeLZI%%6U=o{JdeFHN5LyqtO+$fxS8m2@NT7$hao;Edb+plZtFUjFI*nqzBiZf9p1 z{I&d4iV2(3_gfSU%kipVJEZ{8;K(_sPs0zN9Bv`%mHRX0Ad(#0n8Ct?nWe$_u5A!L zeAkMhiXvpEKkZ1Yqncrij1g$(Q#h(ske(_xkf**&(#8K2(K&PU^_@%EDo$r{hsfSt z$)032N2kp#u&~YnxMR)5$T|4jPn1b?{6L*KX+B<2-qt&yrlpiyFH4Cgp@*x5z(^BC zTPdNbKk3N7zU@DD*Q^MMxO&x;_C3a&Tm*|a*lt*zjEIeIL^iLK zF%#_dss)*6Wv1N`f<7 z@OVvC^T`Xk6I^qjFyun3U`7-zoFa99-*Iq*?f3?)0ya4cQqTmdetq(w3kQ#Am3hi) zTUaK`bPwr*vcTUa2?v1&d~G-6%NlMVIhGa0_)0GJA)|IT&qlNs>o5<<&@=Rh530gixOA@XPtN-G^bBabv;_~Ua(oL3lHlY z5jPu6!w1U`cj7{8QqxsJXTb4pOZyBBO74ec&<}i>YVeZTqEhq03jJcFhhg$AC`K{N z)g|n(mrr27%D*dbTXj{JiJ0-CYv}Uu_$+H^65*=V!KA18s@6$;anexE};Vi@6%+ zsW5IekgYXGC5NgBCsZd>PS!Lw`I7i;N(8nGetEi0X!1*gxQ%4GY`Isye=RshRk-$5 z9}q&b6;2RzW;`L-2P?q!w{%}U0KXj*%VHC|SO|;w)x1tkCoodWdzuk@laEM%`+rGm z+Bm<+x;`pk>kS0^^0axHREuquBLW-h6sK( zN9SIk^6*t}38MBdUh~y|cierI%y8Stx2H^yio$`r>;zCof>>le{s) z_pqqwm4~>foNzNm?dVEp6wJ7}aTj9_MEKlt+C4SgQ$-Fv9HDi`jzGl$pQAjXgT3}2 z=_dXJYdtjrFxyoct}w}Pz>YCj1K(b=F5fsya0qdMHRY>cwXx_Cn&Q%l3fedwB|q@q z;D}gmWPcjjQT`{n*kWNH*hHA#aCWI%`<2NAm*seFK#Wj|>DA_x)OR|8MRuom=WW?4 zCM}k`J{N8>ChpKC8yCkI^i$dH!WQow&A3Bqs0t^qw?TO8-820aqpFH)!kG^m?oo5g ziqsve#FMtwexwvTx(AY1?MdY1fEL@@2z9F!f%(&BhH7G9C)SnT=7L0vwGodDNb$sByWEI+RLyxRSz`R`f52aT7BB3Mw3Z3Z{yndcs_7L z^+Ms5k~cVez3AFfwCVCO(7Y)OwpG}?mUHEn16V8c<$&Wx1$~-1PxC+0g$p)uuHYRs zFw-2T8=P_H3+<(76HEGioTwBCI|=FL@++Scnp8kIUV4NMLrX7X`0cU~HQ5=It>KkR z9B|jjCMxn{fuqS!fm=;P-EJ3BNX>i>R;}l*B;fv<4Vn6O&yv`&hsc#)&?9AW==J4R zfVb?l(rh}(c z6}5L$w(!rtg-Z$4E)pScVP9ltXc&8WrVMe$qCeQf7k} zo&hsl1_K3YFG4}~&Nr@zDz2Kka)V!L@&rxFB;bc;v~W8jM0)_{rWa21y)Wix%I=#c z#=64itT{}^44HdO7n&upU-;D_+g3+_Q?=A`vwo8)!;CQ!RKO1 z;Ys<&z{*PZK^H!_tE7M(z3H`2a5G7fhP!58GAMym)Qr18J%7wZs}+H4Ann=kdjXrA zb&8u~425m;y1wLOf*)x=L)NH+);1$3&t2v0&7(KZ=Xe< z67}gu-XA7frx=h;`Zg)JG2=QvF0mhU)7)409CXjbUOBvNbz1a=$fRXAz1tB3`Du`` z3CJ71s)cMYeT{zI+W2Z#SZz$=LtQWbHSIdC2cRmzxWLnIG7$Y@Ru@ue7UXcG%)){S zLu!GpeRgfY2#N|Wn)FC-vkJ7W)m8hX(dFtBU=F>Mg0KC!701*xBGzN6Dbx=KP=OXi^kI>9>yar$EuL<;k4h4rOQh{OLi@ z(P)n8w8Nkce9~Hq5=s!$U0i{Ip}Y@P;D}EN`8(ebY!_>kCv+Yd^Hum;(+pO(`)=P` z$5r`e&tXaGeqiV#EN;e+l7eiU7n{xZ<2?z!TXFl`pwkzIcFE1(xYa%hbvX$GRDsll zLpR)2h1(w^_`+a_eg}J>9}82j?tO2lpa-(G|N}6>{2P>84bLU;d^pIsGGB-@)Nd^SGl~&2PgI zjyw!(Qpy3iD&FOQ`yUbLsn0w-n4Uov1hI6zvvvpryKl>mHeL|2cegn_k~kL(6^;OUYs6dYNJ{aVOH& zeYtm^0=2+hRWV~8FZ3-QT?zMkbz^5XkQVMM*`|JTYc#}1HLXVrL?P<1*C$IqzqnoI z6;s`{b^ZY=Po8ger5z6X{QHJ4l3s2?`rFpTUx)Z9LXK(YkE!*pr_yz9R-o2yyGxI% zF5}l5lWtHE>8*cM2@rg*dE!Ii&Wz&YM&O<)Xhfduq81q%A7`>q8PuS~vWB9K>E4)W zZbz7D;;I&u=*v6GWNTc^A8}4==@h$96XFnQ31ZdWr;=zjhGLj`JwB2B15B z4w3**h$EYWHMdJ$2fyM?#-fNF9Sy3``PNiX`S}k{hKu|5tS?+^H1|JlNj4lKln46- z!K^ByvJ7Y1F|xZ<&manHG@{-j6SP*2L~F&AzRf~&Rn5);~zlsta0 z=Cr(&&E26E1#Uj+tUQ&{r*g%OVrohd+-k2pH{QPU@ye2dk$K-k1X}xYTJO!|y(SRB z>*zgJ_#nv?=Y#p>i)vUv^M>b*Nfy56=9`7_-^c&Q%;*KNk?3@mq1n8&fFks;Um#q} zu+WO%TqRtQigKI&L}oEW03!4wySRUO`k z59%{%Vd&l#JJfkk?e4tQ^q2YX^EE%WQiu8Ch3-xn+zv&$s(KOzv!wZ5|5}e-+i)2e z5+&vQGy!=W2*i>0$V7|zT}L}){W{vlXer|;%{P%x4!`_!fti81QkZXGkl zn#gEDT@8Jq78BYm?`8*M*8uvV)(Dn^` zUzJr_9;M7d3!SVo@k2i^&`J3b6>&d2>{Wcax?TEFZLJE0cKapi_66(o=D`W^NI>7% z%eyl)nNdbhJHL^wnZ3CcIhSDd;g0L@B&jQ|J2O?Tjy-8%vC5NTM|4|>mT3y}w875D5^YGKJ87DB$+4h- zir#pj-k43CAp8znpfj!hu zMRbj5(3}$}A1{xZ0~v6=g=9@2t9#F_wb;793=mwL&_v3|6dSCqRu0k{;z-rTpRtwmCJ2tq^QfQo2niCpyj=v_rNjr6wP3;_x%f;Q~6KU|OA4dm*0(!jB_e3sY)6$L zl|b|Hj;rVDR=QcAZL@GS+j+dy{}(;ir#lF%0PDeFLVyyYy#RyemB0`VMVeklIUoX-?|D!|5@*w!j92|CNN)t z)~WgKG5s9L-^G7zQ-CKi4ua6~7V2Nml7?(ge+cjU>z~knYrwvP1+*lA-AeyHmoMn5 zd6nCb0{$~gx%@;^_d)|v;;p~4V(kQ8yn)>MBTBOq@ZXk*t%{n>iuKktPV7cL0ApnuCCrfjQasA*RBKr5HveqUO6T88h4%~0{$5Id*1iQ zHrhtr>?~~a_t%VaTY4Ljtj(0mxPR63Hh6sj{Vf%*#u&$z)B5P|#)QKVg=OlA7|2#M zMcm)~jADLn$L0u1CLE0ZBkTLpz}{o@F}+P+0nr$6+pi?L6fvh*@nE9&SL{c8jCRUm zvNLyID&EwFpmA!uNgnPjg}3^hZxx8o?_I5q z{&Xin@NuxVc`}8-lo9Og8u>P|{1D^QnO9?(o<;qOGtEA#j*bfezq8(!x3o7$sy9** zuUW4^1TS;)a&s4>XM2u_sPH1oHhqYij+9hw%vV8A8`?HgwxXn%KN zj9?sXp0nYwyoygV6d%p=@vs7~sN_0o!pz=-ou06DZS3OysM712LE5>y>lTeR;SJovoxb77HA z9HT>5*}i?_#&v*eYTnblUzP41Tnlauf(9oSA}O(c3Q8U!QVpNwN=XfEjLS^SqK-Za zDHjctjo0BTH&Hkr|9p{GJu5ae&cf>OSYaGn|L|AIAkz_Z4e6@(7aac|U&9xUmv`9e zZ_$(PC^yiW%d<9$^TLc=BNKIC2^`2c{4J)yA*y8{UDB5f1F|I-F~?@OVwa z=O9kU~POGwAPbE@=*CMLVgK3v2Gmw+vU}^>WTu z!)w{QJdvRQwwDcEpZ9UL&z{4lKwP zJBY&R9ETvusx}1fy&+V9`w~987w`g$$(rl zlzUZtS-pD-&k$6*(HvA8)RZiA{>oK|D%3R@cgRPV<-06ygaW#&vP#Zt3293G(dRnC zuOR~RkQC~-I;Qf2?4w0hQUa~*4y@3YqU;aMj6h?@?11_Rt!Ka5VxDGfH)b1lyeg(| z@=PTHR#Fhj^v)E)8|N*kLCw$U^6;&W@A&i2j=A(&W;2lj6Xz}Yll!!#pK`;e-noVY zj-%;zh6!dK?cwEy36yD|-pB6xn%pLP=8~_MEx^aes`nrW-IzC_c^vM6;J`1;$BPiu z85=p<%P^P;GlRJjta=W5wVl=^-%+RWyUr`SQc#rdK`k~fkozOGQ=a(bywGIZu4z06 zNFmkEFRrCWm0pKdNBM~lB|qzcZWz{ei|oHWd&iZ)h^|4;xEH2>^*nITr(tYqF?Rh# z=w9N;{JK!`?kPIvn@nk$;+6FJ2ep0SJYw)>F8_tK)8=r%7nz#cwM!Ub;hNuuVb)6f zvJY=^nioCmdKXjP2H<#lzm8trj-~JmJWuh$LVCMN{Ra}Bs$gC2@69Xf!yFO6edRg1 zM-r(NAsHbbq1ybg*pa8*lke%-VS7^dT$BR|5v;vA9$n_1LJQx~-2Ofn*%*J=g4E}( z)TDjk|3VS(4q-0JeTth~se0VKG`{-sUMP4jgXvWo{Sl899)2BK21uEu2aSN)&6x6P z)r>lHa3+-+Nba8G${=0Bk)c64Og!syKUiwlrY3Yc@mpWb;$);393lWBFbKOYW8 zlybsPk=1q=_Pu0GPvFh6u1#|mcgnI4JL`X_=Sdw^b)j+?s+KsI0kS~!wL^e@yy~5byMorQig3D;Wmzgs@F(vRonh4CP@Db^ z#=?WfDp*f(n|ukMfWMi4=jlYn1W(0$KR2VU<=Ve!fnC#nw;ogL02iVvMm#>FN1U&Q zE@)_8L+VT-U|;gAhCR+n4TrUqRkCZ{h1+7C?hMXD ztCs#5#E5$Ct;L4|b<-E4+`TVGoA2`;6(HL}iX=F?VgtPtNYLAM)F|aiy{W?KqDnb4 zSN*zPrw_c3kWY@i0JY@2w4cx_B`=fa>ESmAfSWh+9Q*FGD)s4fcjjjlBVyxoewbw0 z(0J<$T{Y^U;jA&-?T0%0*C!pT9%sCOhI6r~)gW`v{*os2z}o?u@Q1z}OQVMzdq(pa z91&T5q=b}Uk<&(329)T@+Ugeti@5Mi#^VVH!#D&b$1JckvKrnl(5Gpll)>dzNa@(s zlqJ8dFVuoJ=7{$l+yK&!^PPV3b;G2&NdgmS`<1Xfm4wu-^*cle`CHLpUlQ+BlKJFT zHg?6Cg0}YR=ti^-T0TQ(W{vX-j(Laa;O-AE9xh+J9z1M$`@N9LnRNEc*=}pJl-^NF zWwi8i+H`{!*bUkfX-psc=X2=TJB9&w}StGxD#h2@?47hmWvM%lzt6@|PP zaas_sD#Oxd&j+Zi9EY0{XsWta3S;8lG{|n|&yj?H%nOmYRwYIohvLG-RD_jD6qn#P zBP8?uyK?XR=TA>g&BAfi2fu?ogVEP5;$*YVIZ)rNeQ!B1)0PZJl zWS!))YnADo_SPrQ_@`!Ar-L>M^ITJc&}ALa*_pDJ1WWL=sUbU-C1?K} zsTxuH4?}%K>LD=n^*3Tfm2ZcVqq5Hf6csJcRsA&_aX+IaQs2G;@DxE(jV}AvcMDvX zTwyTN(j`(Zz*vKQCHFq!jn=dhbomm!(N4oK#xr&}rdINWiXE;>)tb=4L9m|P;VB%B zWEK0=nYR_c7?wk1NpWnlQe7BkjY>$7NqHLLrKjIn?_fJKk{8N|_|PU20rk~G<>B$k zjfhuWuE`mA3(Yh8{7?`(F0fbT*3Vg?(6_o1ioAS2?@b1ao_tr+FXsG+JfQn1Gij2O+zI@Wqt&%Uv8X$R4S+Cii< z$$_IJ4}QSH=fVVicG&s)lN?aTJN2i-gEpuPt|317Lep~kYJX4#AN*D#CRMh8)bz{V z@>$g*HL@k0wSV+o#>r6YVn%jDgaCRW@g=h$$dqVL33b)&eKnE<>VQeY@E;>M0PsWA zpxK=%a-iz;>u)9BH&Z>QwXH}_?MY%s1z#SU>!IAMC$X`22kaML%qHm#J*cSDtg2UN zmwJr>78AO?AF)dM`LVDl$A8xXB<_2E;zCX|Z;-U0gR?l`TwKA0EV+4kTm(1!$ZLGr zmHcY-LX4EFKb^R+UmgsmsO!ghNad*HwAooB?xhcjl9hp`7mwA{S<9WlRAKmZN-%sD zqT|%W^O3<9t@X4tmCZuYvt1`HbeeW!GsN8eUvtDb;PVZJj#3&CCp{T4DcX~0I1Le{ zhsc&;PNQ_eRpt8VD~**4@5wMecyAc;^3q&*zPPobD#EsO9pdp31jGNMJA9j`#v9b= z@@kz~>C(j5u@zdA2eF_E;SUinmRAL@{U+3J=BU8Wnbl&!Ew>r|MPJW~H?>2NLGD&3 zqXa<|H!&}aVZM;zjA{PIz=NEp^NrO!7EAF_2MjT$5kFULJSu^9T8An`IPGhJ^u2*$ zzWFaq^-vjgX}B)*63%R=D?2X6cGe*(&oqOmVwqL#Hd(r8uW~{^eP~bOCE4OTGHnZQ z9ZeY75uFYln_F9xZ1O~&p;w}Sl`~75!*AD3w8mhVGlkEyo;WBjMEyj@77}&YSONNs zdOI~d=tH_hcQrZlC?bp608WF5VavU<7_H`bKWV>na`e6s@|(LD&w;z6)7w7bLK2Xk zfd=sO*bJ*2YT?O|otVM%Eg80#0Xv_O^Hj&AfD7rHZSqug_6;X}wC#o@OPttYSkFwjZ z#Gp?U_UshY@34Zj1@-S@(OFoOV4%)SQ>w9&9iD z9_Q)qZZeMPIwiAAQBQU}9tH!sV!-t>u5sSQKBDF3$DNU_^X@nrjL_?#>-?M*avgHa z#CzI%kKZx_OVMS4DfRBXt^bO<(u{)yK=kyvCm0NdHUG28L1iTst@(HXY1^@2;T?TZ+(Qf2uFGIQDnD_@fNbQ41tH| z{sXHAWe^-+lEX_#`kViuaJ-5>-5t1rgZJ~lbc7S|?LQ6zYae%KzI)k66~M0X&`z1( z{x@pJ+I@DKVT+u)dz@=2(SLuU3EEcIL>rP+xABSk4lv|1skDG0-{c z4#l5w!UIr&FI%3|LB?;9#DoaFf^119R?y=f-Vy%d{xu@R=P#Kb_6I(W;ACqVedZ$= z1OxeaY;~Ai=AJhl4sa8Y9rC5o5QMJz%^2C?eU_~Tw8Us zoA*#DTFr+-eC>ScD4!LLNfNtVeI+D2aK2=2q0BW{@U1eQHM z-K3pH6jj9il^~}`n%>c5YVf`3M$Y^WD!c~~VP2$e6+H9I_$w2gU>93@ch{6xd4$!~RkY5T?1rX;=Y12hhI zgaH_uzVIh3jOBiPlug~C%}OnjlErPsG*YHF4{H$^0mo3se}?m~5d)2l)$;SZ&8tX- zvCTi4E*)=q`?N&sj7RhIhn4w`w+rFtWLKm0c@xY%F1bx4RW)^^wAf8PO}}iKGZjw3 z?!xUJ)^a~$dv=t&Y>v%1S)Q1w@};uKv+docyfB6@>#aT0)0}yrKLk)46^Kttj5)EN z>6+xX!{QH2$sFk#N;Z?`$UrPK6 zCXxviZOIdPGp!Z0Cte@mDj3^l*MTMMo%&R(GLM9#n>>)$FiDhB4hQA>K(5plUkmF2t-p>7WYpv-J}v%Z9QAGXtF&jl#Py-mSb z#C+Dkngj0Rr|+uT>cVvf+t!KN1*%4WikTH3guv$Gp?va3F&hzfLx zVu7|K;AKRawV&$verhtA(riP-KI;+H;0w^kl!5{@8-H=~%RPQp)i8sLCGUQaffck*=)pfx(7~?vDQo z{4HZTaZX{)Z1C&}lJ5vta~5Zg<`>U^O(p$+FKrg5SQ($*ChL7!pLuH40(+G-xMw=2 zhugFgnARwt-J0gD_XM*$7OW_HQsd_ej%=u{PseoQ0^66zGLYfl_B)N?2jFgH(|lV} zsZ&2Li6=RuArIk%i}O+@A@`E*%B?nCRT7TJff;%EFGW9V2OVxU8k;>wWzdXC$JUO& z`Cu8~V%PaD>R0Z@I)Cj#(%e(e!Tsb^>izM&3~dr?rNqKDVxMZB)H2mYmcCY%r2Y{} zJ$p45Bk#dUw?l{Q^6)YAfQXalTZw*CrNNCj+jV=j0s4>(9gp zvYZPBRG`Gdes|kXPF;-9S#TX%Gue|2y3vejDL?(?SkpT;HxFAVHn^F4K3>Y=cW+T9 z*RV+`;RU@~4N#?VC~UlyRHe_G`8=isszoIc;Px}H+Jdvz`Ni9x3A3x-ynf@i37&yy!syk-?`4+V{(u< ze6mS#VNE8}l|;OrQS=He^DQl<_>K7Q5aKx;_TJ{e-?kE`&?MEnYmC&%R<``ZE%aHR zn_tfo^~F=|Z-06j-1qEkb`DHe@;+iY59V3!$tAXbhc)rBf$IZ>>u#M<&-ge{_SmV`kR{f>RXxTntRvQC z9Ep1LNDxH``@6Uj1X&~95kssNUU19nr)7#$bC19-#_&icBt?~7)%Xh?cq9@5WeKv# zpXnC3m?r(%=M;3=?rXx{(i*Cz(r5eb-DgiTe7C#5jj|^&2PT!ao<3S58GBQx?>24j zi~-@PMYepHsBBliInyEDy>@~%Fi-RjAze|2CHL3HD)*t5w?D;3ev|w&(K-t{c{HB& zS#{NR0n+`-X8$<;l{ay}N<`ARwTw-2gj?$*v9@(^~7a%;NQ_-N|db z@NoRqNt)Bq_?~>Y?H07T1KBV2OP)=n+Mgc%P7O?Mk@B%TORcue7y8LJH%nLg8DZ}) zar6BO`yF2K-wS9jjjBno8gVF=JZhcoUs8I&KFZ$18`BZ)@3lYj*4TJRUS2N!bScvu zPu<*7NW@v~+u-L{q2;XueO=B5ox)2zAxR{h69h`b>qZ>31aS;~h9~P?P}x~m8CBLO z<#1!p_4rE9g6SjMNTgCqp3w_yh67&B;_;TlUq{=U%vs7e!}cR@k|oo~Xt!39=TR{yE17mg2~~=7H~`h9 z>HY<$d3#4(e}4;GiOcb{-ok$7@W4skRa@3CPKK(#U}JVa-SY^SaFZp=MrTu5Ibt_H zDGd2(p8q?%rsrUG<<6M74T^y-i%z(7LnoEOk2C0tnS@ii)+E9 zluEnTw6m=SMiBruc&xpDIMnm#wyZ#8)rxA0^nP7=qV|U?qTk}Y!wo}PGZlvPA1zGR zenNMQv%F=f(YD|c&8SF#eXp-r8&cgwA9ZYMt^RJWNNa^l$u=$;0i^`3y?8Q%hexMhJ&K%oJ;o9pP;@raX(mCwV%W|7hBr%EZCFmRs^UxaN{! zk800|+L8vfsD^k1QP*84= zKpq1iHU3p)>b@N5zg%{I`)TM(W9&i8FPFo<-f&Pld#O58Uu-~Ixa8BdpE8H#b<^V( z!*wwd&fXGC<|29$0B2zFmoJfhLXk?!WBb?Hc>mJu9wdk}7ES#(3)FB8 z3%?X;bA1SdJ?Kx;91F`{5S8J_{raYetYAjyuyWZT*`aOXudy@GhIFguFvQUq#pxRY zSl~9zoc0{Qk0MsNcKe^Qg8y^R7xEtx;5CMe`7_6Vd>~ev=LYwG@q4vrO!#reT1D!~ z`4yIbdOn92f450gh`$}Gf;4QgX_P6-9pjzV-?M`(si}IzXuLHcHMZRJ@&+$ZQ!DFi zl-n7mD%@nv@GpW*Z6@!B$4~FoejlxKuZtOmlV|;a-~Y3Nowmv0)~McDLX6ug$w8-% zs;G^|>qeBK0x^mB_})xgp8CW`soNwSnxpK5Te3Jo={$!6j5f3k@Fk6rbGxsJYB#P$ zvc~3T`PFgWK4|x%2fN{aqCR$+`!{yg6SYlNrDrDEOdkD;o|lMf(8s9T z)P_B$SapC)WJhe8!70yNxztXUwJXcmtvCQ#C)WWWQ>knmK7Jm>)8Xw1fR)-C;XfN@!{cpe6fASS|x1X8w#_V znxbo7%q#(2>?dc+_P@{;Sp2#FSASIPNu}N#ef;%l{1kGdmU0c=z6&~;@_0}0wKv(B zvn5m<9?J;k(cw3OCElo4=Q%tnAY-UV=R)L7?{*7&xm_Kbt7eQCYpo@3oF+8 zJoCpoz6%Zm61fiQLpR(&E-3*AwRExiNoh zAa9)TwPc%$ixfPf5+gC3BBaM@xp%Qpu;MIfxKsO%C6`(s9%{C#=hGI}|qj+-NFk5s@9Rs26HiDPmbJY(|PgkDc$VjQ$HwzPwr+A&T|l}9}%%e27e zzqqxGzi!O|kpGi(Mx&5(iIbN;C#JU3iB$(@o5ZF_=8 zQV=qRc~^~r_|>OUZZ(eI4m^QF{!*g+gS(GXqm!Nig+<9#`vh~2`eKs0yl(1|sY`xq zZU0UYVVmdT@(UD)(hhW)23dL48tJw3sOcT#&Edp-c6Sp)%^ zKf^#tv5xiHz{9ES5)2^k<4vM1<8BF{cAHpip4{_rMJt9O12Tyb7WZN0=VfHR6#ojK zgu?(9bzAWM#xlFSz;FesO|W4d!>BmU6L04^T}UvXS5*ALl5X{5n0@6j?$*rQrhZ(Y zj;gE=6$e}tUy~QG!SUw245`n*DKUuO_yHt`5Dx4FnT^ zS;aM)$m@58-0XI65Ze2n)*QUS@V$R8c}AP3zPpan&1ZiTuO17YZLiC3?E-ZSW7_j+ zj7G6WWpoa8&Xpg1;?>CS9x0oJ-E-3gqN?Y0(%A8n`hPC`Al5K1uVA*%)P3Z7D zy+Q%VS~#b!UthX!&(7*N*Po|TE+KjU@Sb z?K`2H{5C$+*6{%2m+1kNVQims8S=YU3^)d^KAdAtMvs ziz`IC(k%oNbxOMXN~Q<{Yx|By6R;hGBt)R96gKkic&A{d%!w(WG(u#fEXQ51tnL9f zL#`_V{Zr1l%63T8a&gRV?3-qw1j;-WliQa+Av$zy_7@EV=wvvWFdL(C*KXc(;Lx z;%c4iV9;O*!hv4gp6%*)z`sL&ET>I0HKhp_l&mJPFPndvwch_*@|W@tJ!1Vm+W)f? z{!jHA2ABRrsQ(iX{r_RA_qq)K`9*K#;s0A#`M(uI{%^nX{qL2Q(`#op4Do7#PeSem Q{8pvBw2D;On|B}o9~tntHvj+t diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-invocation.png b/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-invocation.png index ce58c20d75365e0ac8bb29cc671fee9742c176fc..f1496c796b67d23101e00e389c373a2b61b6cfba 100644 GIT binary patch literal 34524 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 bU|s^>UeEh7YemdIfSQDetZ=2Ee&GKB*d3$Q literal 24936 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 diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-run-page.png b/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-run-page.png index b14810804f8ddd59d12a09c842011754b29232df..6096404cf1b61c609763e5fea370d6ea4faa37eb 100644 GIT binary patch literal 23968 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 literal 15214 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 NWd(KlB3aW9{|o=GgpB|I From 1ecc6585195b6ba838942bfa973dee682abd6182 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Tue, 24 Sep 2024 15:57:52 +0100 Subject: [PATCH 12/42] update intro/best practices --- .../ro-crate-galaxy-best-practices/tutorial.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index 03cd2fb7489c1b..d871cb0df1d87c 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -31,7 +31,8 @@ One of the most useful additions to a workflow is a suite of tests, which help c > > -> In this tutorial, you will learn how to create a git repo, and begin working with it. +> In this tutorial, you will learn about the best practices that the Galaxy community +has created for workflows. > > 1. TOC > {:toc} @@ -41,7 +42,19 @@ One of the most useful additions to a workflow is a suite of tests, which help c ## Community best practices -Though the practices listed above can be considered general enough to be applicable to any kind of software, individual communities usually add their own specific sets of rules and conventions that help users quickly find their way around software projects, understand them more easily and reuse them more effectively. The Galaxy community, for instance, has a [guide on best practices for maintaining workflows](https://planemo.readthedocs.io/en/latest/best_practices_workflows.html). +Though the practices listed above can be considered general enough to be applicable to any kind of software, individual communities usually add their own specific sets of rules and conventions that help users quickly find their way around software projects, understand them more easily and reuse them more effectively. The Galaxy community, for instance, has a [guide on best practices for maintaining workflows](https://planemo.readthedocs.io/en/latest/best_practices_workflows.html). These best practices include: + +* all workflow inputs and outputs are explicit and labelled +* tools used in the workflow are packaged with Galaxy by default or are available from the Galaxy ToolShed +* the workflow creator and license are specified +* the workflow has tests +* the workflow is published on GitHub, a public GitLab server, or another public version-controlled repository +* the workflow is registered with a workflow registry such as WorkflowHub or Dockstore + +> Apply best practices for workflow structure +> +> Read through the "Workflow Structure" section of the [guide on best practices for maintaining workflows](https://planemo.readthedocs.io/en/latest/best_practices_workflows.html#workflow-structure) and update your workflow so that it meets the recommendations. +{: .hands_on} The [Intergalactic Workflow Commission (IWC)](https://github.com/galaxyproject/iwc) is a collection of highly curated Galaxy workflows that follow best practices and conform to a specific GitHub directory layout, as specified in the [guide on adding workflows](https://github.com/galaxyproject/iwc/blob/main/workflows/README.md#adding-workflows). In particular, the workflow file must be accompanied by a [Planemo test file](https://planemo.readthedocs.io/en/latest/test_format.html) with the same name but a `-test.yml` extension, and a `test-data` directory that contains the datasets used by the tests described in the test file. The guide also specifies how to fulfill other requirements such as setting a license, a creator and a version tag. A new workflow can be proposed for inclusion in the collection by opening a pull request to the [IWC repository](https://github.com/galaxyproject/iwc): if it passes the review and is merged, it will be published to [iwc-workflows](https://github.com/iwc-workflows). The publication process also generates a metadata file that turns the repository into a [Workflow Testing RO-Crate](https://crs4.github.io/life_monitor/workflow_testing_ro_crate), which can be registered to [WorkflowHub](https://workflowhub.eu/) and [LifeMonitor](https://www.lifemonitor.eu/). From 8c0f041d15232fd4f74baae06eb643a6b573c584 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Tue, 24 Sep 2024 15:59:06 +0100 Subject: [PATCH 13/42] tweaks for clarity and UI change --- .../ro-crate-galaxy-best-practices/tutorial.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index d871cb0df1d87c..81f6f1d613bd88 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -73,7 +73,7 @@ rm -fv ro-crate-metadata.json repo2rocrate --repo-url https://github.com/iwc-workflows/parallel-accession-download ``` -This adds an `ro-crate-metadata.json` file at the top level with metadata generated based on the tool's knowledge of the expected repository layout. By specifying a zip file as an output, we can directly generate an RO-Crate in the format accepted by WorkflowHub and LifeMonitor: +This adds an `ro-crate-metadata.json` file at the top level with metadata generated based on the tool's knowledge of the expected repository layout. By specifying a zip file as an output with the `-o` option, we can directly generate an RO-Crate in the format accepted by WorkflowHub and LifeMonitor: ```bash repo2rocrate --repo-url https://github.com/iwc-workflows/parallel-accession-download -o ../parallel-accession-download.crate.zip @@ -95,6 +95,7 @@ As an example we will use this [simple workflow](https://github.com/crs4/life_mo > 1. Download [the workflow](https://raw.githubusercontent.com/crs4/life_monitor/50cdb790ff125613aa07e70cb439e3a36b82d0bf/interaction_experiments/workflow_examples/galaxy/sort-and-change-case/sort-and-change-case.ga) to a `sort-and-change-case.ga` file. > 1. Download [this input dataset](https://raw.githubusercontent.com/crs4/life_monitor/50cdb790ff125613aa07e70cb439e3a36b82d0bf/interaction_experiments/workflow_examples/galaxy/sort-and-change-case/input.bed) to an `input.bed` file. > 1. Upload the workflow to Galaxy (e.g., [Galaxy Europe](https://usegalaxy.eu/)): from the upper menu, click on "Workflow" > "Import" > "Browse", choose `sort-and-change-case.ga` and then click "Import workflow". +> 1. Rename the uploaded workflow from `sort-and-change-case (imported from uploaded file)` to `sort-and-change-case` by clicking the pencil icon next to the workflow name. > 1. Start a new history: click on the "+" button on the History panel to the right. > 1. Upload the input dataset to the new history: on the left panel, go to "Upload Data" > "Choose local files" and select `input.bed`, then click "Start" > "Close". > 1. Wait for the file to finish uploading (i.e., for the loading circle on the dataset's line in the history to disappear). @@ -107,7 +108,7 @@ As an example we will use this [simple workflow](https://github.com/crs4/life_mo > ![Workflow Run Page](img/workflow-run-page.png) > > 1. Wait for the workflow execution to finish. -> 1. On the upper menu, go to "User" > "Workflow Invocations", click on the invocation corresponding to the workflow just run and copy the invocation's ID. In my case it says "Invocation: a043e8c60873170b" on the right, where `a043e8c60873170b` is the ID. +> 1. On the upper menu, go to "Data" > "Workflow Invocations", expand the invocation corresponding to the workflow just run and copy the invocation's ID. In my case it says "Invocation ID: 86ecc02a9dd77649" on the right, where `86ecc02a9dd77649` is the ID. > > ![Workflow Invocation](img/workflow-invocation.png) > @@ -116,17 +117,24 @@ As an example we will use this [simple workflow](https://github.com/crs4/life_mo > ![API key](img/api-key.png) > > 1. Run `planemo workflow_test_init --galaxy_url https://usegalaxy.eu --from_invocation INVOCATION_ID --galaxy_user_key API_KEY`, replacing `INVOCATION_ID` with the actual invocation ID and `API_KEY` with the actual API key. If you're not using the Galaxy Europe instance, also replace `https://usegalaxy.eu` with the URL of the instance you're using. -> 1. Rename `sort-and-change-case-(imported-from-uploaded-file).ga` to `sort-and-change-case.ga` and `sort-and-change-case-(imported-from-uploaded-file)-tests.yml` to `sort-and-change-case-tests.yml`. The rest of the files generated by Planemo are under `test-data`. +> 1. Browse the files that have been created - `sort-and-change-case-tests.yml` and `test_data/` {: .hands_on} +To build up the test suite further, you can invoke the workflow multiple times with different inputs, and use each invocation to generate a test, using the same command as before: + ```bash planemo workflow_test_init --galaxy_url https://usegalaxy.eu --from_invocation INVOCATION_ID --galaxy_user_key API_KEY ``` +Each invocation should test a different behavior of the workflow. This could mean using different datatypes for inputs, or changing the workflow settings to produce different results. + + + +## Adding a workflow to GitHub -## Adding a GitHub workflow +In the previous section, you learned how to generate a test layout for an example Galaxy workflow. This procedure also gives you the file structure you need to populate the GitHub repository in line with community best practices. One thing is still missing though: a GitHub workflow to test the Galaxy workflow automatically. Let's create this now. -In the previous section, we have learned how to generate a test layout for an example Galaxy workflow. You can apply the same procedure to your workflow and get the file structure you need to populate the GitHub repository. One thing is still missing though: a GitHub workflow to test the Galaxy workflow automatically. At the top level of the repository, create a `.github/workflows` directory and place a `wftest.yml` file inside it with the following content: +At the top level of the repository, create a `.github/workflows` directory and place a `wftest.yml` file inside it with the following content: ```yaml name: Periodic workflow test From de400148ccdfbc30e4dbf5e1186b0eee8b02bba8 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Tue, 24 Sep 2024 15:59:33 +0100 Subject: [PATCH 14/42] add questions for hands-on section --- .../ro-crate-galaxy-best-practices/tutorial.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index 81f6f1d613bd88..4d7641739619f9 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -120,6 +120,22 @@ As an example we will use this [simple workflow](https://github.com/crs4/life_mo > 1. Browse the files that have been created - `sort-and-change-case-tests.yml` and `test_data/` {: .hands_on} +> +> +> 1. How do the files in `test_data/` relate to your Galaxy history? +> 2. Look at the contents of `sort-and-change-case-tests.yml`. What are the expected outputs of the test? +> +> > +> > +> > 1. The files in `test_data/` correspond to the output files in the history, though some of the names are different: +> > 1. `bed_input.bed` has the same name in the history - this is the input file we uploaded +> > 2. `sorted_bed.bed` corresponds to the `Sort on data 1` step (you can confirm this by viewing the file contents) +> > 2. `uppercase_bed.tabular` corresponds to the `Change case on data 2` step (you can confirm this by viewing the file contents) +> > 2. The expected outputs are `test-data/sorted_bed.bed` and `test-data/uppercase_bed.tabular`. This means that when the workflow is run on the input (`test-data/bed_input.bed`), it is expected to produce two files that look exactly like those outputs. +> > +> {: .solution} +{: .question} + To build up the test suite further, you can invoke the workflow multiple times with different inputs, and use each invocation to generate a test, using the same command as before: ```bash From 3289cfe91a458141172422b20ad435ee91eb523e Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Wed, 25 Sep 2024 09:36:34 +0000 Subject: [PATCH 15/42] add new recording from Google Form submission --- .../tutorials/amr-gene-detection/tutorial.md | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md b/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md index 5f3008d169f6c2..4b70de1cc20895 100644 --- a/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md +++ b/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md @@ -1,19 +1,19 @@ --- layout: tutorial_hands_on - title: Identification of AMR genes in an assembled bacterial genome -zenodo_link: 'https://zenodo.org/record/10572227' +zenodo_link: https://zenodo.org/record/10572227 questions: - Which resistance genes are on a bacterial genome? - Where are the genes located on the genome? objectives: - Run a series of tool to assess the presence of antimicrobial resistance genes (ARG) -- Get information about ARGs +- Get information about ARGs - Visualize the ARGs and plasmid genes in their genomic context time_estimation: 2h key_points: - staramr is a powerful tool to predict ARGs and plasmid genes -- Visualization of the ARGs and plasmid genes in their genomic context helps to make sense of the data +- Visualization of the ARGs and plasmid genes in their genomic context helps to make + sense of the data tags: - gmod - illumina @@ -23,15 +23,14 @@ tags: - microgalaxy subtopic: prokaryote edam_ontology: -- topic_3673 # Whole genome sequencing -- topic_3305 # Public health and epidemiology -- topic_0622 # Genomics -- topic_3301 # Microbiology -- topic_0080 # Sequence analysis -- topic_3324 # Infectious disease -- topic_4013 # Antimicrobial resistance +- topic_3673 +- topic_3305 +- topic_0622 +- topic_3301 +- topic_0080 +- topic_3324 +- topic_4013 level: Introductory - contributions: authorship: - bazante1 @@ -44,18 +43,30 @@ contributions: funding: - avans-atgm - abromics - follow_up_training: -- type: "internal" +- type: internal topic_name: visualisation tutorials: - jbrowse -- type: "internal" +- type: internal topic_name: galaxy-interface tutorials: - history-to-workflow +recordings: +- youtube_id: TODO + length: 26M + galaxy_version: 24.1.2.dev0 + date: '2024-09-24' + speakers: + - SaimMomin12 + captioners: + - SaimMomin12 + bot-timestamp: 1727199012 + + --- + Antimicrobial resistance (AMR) is a global phenomenon with no geographical or species boundaries, which poses an important threat to human, animal and environmental health. It is a complex and growing problem that compromises our ability to treat bacterial infections. AMR gene content can be assessed from whole genome sequencing to detect known resistance mechanisms and potentially identify novel mechanisms. From 599d768a0237c7b7c9f095f021f97189c78fe645 Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Wed, 25 Sep 2024 13:10:31 +0200 Subject: [PATCH 16/42] Move to e-learning learningResourceType --- _plugins/jekyll-jsonld.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_plugins/jekyll-jsonld.rb b/_plugins/jekyll-jsonld.rb index 46e135d09045e4..80c7a0185b7d09 100644 --- a/_plugins/jekyll-jsonld.rb +++ b/_plugins/jekyll-jsonld.rb @@ -796,7 +796,7 @@ def generate_material_jsonld(material, topic, site) if (material['name'] == 'tutorial.md') || (material['name'] == 'slides.html') data['learningResourceType'] = if material['name'] == 'tutorial.md' - 'hands-on tutorial' + 'e-learning' else 'slides' end @@ -905,7 +905,7 @@ def generate_material_jsonld(material, topic, site) '@context': 'http://schema.org', '@type': 'LearningResource', url: (page['hands_on_url']).to_s, - learningResourceType: 'hands-on tutorial', + learningResourceType: 'e-learning', interactivityType: 'expositive', } ) @@ -921,7 +921,7 @@ def generate_material_jsonld(material, topic, site) "/#{tuto}/tutorial.html", name: (page['title']).to_s, description: "Hands-on for '#{page['title']}' tutorial", - learningResourceType: 'hands-on tutorial', + learningResourceType: 'e-learning', interactivityType: 'expositive', provider: GTN } From 0ececf29558cf80398e8b3140764d8f6ec1554b0 Mon Sep 17 00:00:00 2001 From: Deepti Varshney <44775741+Deeptivarshney@users.noreply.github.com> Date: Wed, 25 Sep 2024 13:46:26 +0200 Subject: [PATCH 17/42] Update topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md --- .../genome-annotation/tutorials/amr-gene-detection/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md b/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md index 4b70de1cc20895..a4c6fb76da2330 100644 --- a/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md +++ b/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md @@ -53,7 +53,7 @@ follow_up_training: tutorials: - history-to-workflow recordings: -- youtube_id: TODO +- youtube_id: hfiYCIcD0ww length: 26M galaxy_version: 24.1.2.dev0 date: '2024-09-24' From e5c211177aeab86887f3d789dfbbc872f9953143 Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Wed, 25 Sep 2024 13:56:12 +0200 Subject: [PATCH 18/42] restore comments --- .../tutorials/amr-gene-detection/tutorial.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md b/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md index a4c6fb76da2330..fd77f245dcc2a7 100644 --- a/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md +++ b/topics/genome-annotation/tutorials/amr-gene-detection/tutorial.md @@ -23,13 +23,13 @@ tags: - microgalaxy subtopic: prokaryote edam_ontology: -- topic_3673 -- topic_3305 -- topic_0622 -- topic_3301 -- topic_0080 -- topic_3324 -- topic_4013 +- topic_3673 # Whole genome sequencing +- topic_3305 # Public health and epidemiology +- topic_0622 # Genomics +- topic_3301 # Microbiology +- topic_0080 # Sequence analysis +- topic_3324 # Infectious disease +- topic_4013 # Antimicrobial resistance level: Introductory contributions: authorship: From 697e96a19806d97bda52d575f8ae34a30dec8fd1 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 13:15:22 +0100 Subject: [PATCH 19/42] update hands-on for new best practices feature --- _config.yml | 1 + .../ro-crate-galaxy-best-practices/tutorial.md | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 2a57d792bd1109..51eabde7fdaae9 100644 --- a/_config.yml +++ b/_config.yml @@ -166,6 +166,7 @@ icon-tag: galaxy-toggle: fas fa-toggle-on galaxy-upload: fas fa-upload galaxy-download: fas fa-download + galaxy-wf-best-practices: fas fa-wand-magic-sparkles galaxy-wf-connection: fas fa-arrows-alt-h galaxy-wf-edit: fa fa-edit galaxy-wf-new: fas fa-plus diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index 4d7641739619f9..07d41f6d87027f 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -27,7 +27,9 @@ notebook: A workflow, just like any other piece of software, can be formally correct and runnable but still lack a number of additional features that might help its reusability, interoperability, understandability, etc. -One of the most useful additions to a workflow is a suite of tests, which help check that the workflow is operating as intended. A test case consists of a set of inputs and corresponding expected outputs, together with a procedure for comparing the workflow's actual outputs with the expected ones. It might be the case, in fact, that a test may be considered successful even if the actual outputs do not match the expected ones exactly, for instance because the computation involves a certain degree of randomness, or the output includes timestamps or randomly generated identifiers. Providing documentation is also important to help understand the workflow's purpose and mode of operation, its requirements, the effect of its parameters, etc. Even a single, well structured README file can go a long way towards getting users started with your workflow, especially if complemented by examples that include sample inputs and running instructions. +One of the most useful additions to a workflow is a suite of tests, which help check that the workflow is operating as intended. A test case consists of a set of inputs and corresponding expected outputs, together with a procedure for comparing the workflow's actual outputs with the expected ones. It might be the case, in fact, that a test may be considered successful even if the actual outputs do not match the expected ones exactly, for instance because the computation involves a certain degree of randomness, or the output includes timestamps or randomly generated identifiers. + +Providing documentation is also important to help understand the workflow's purpose and mode of operation, its requirements, the effect of its parameters, etc. Even a single, well structured README file can go a long way towards getting users started with your workflow, especially if complemented by examples that include sample inputs and running instructions. > > @@ -39,10 +41,15 @@ has created for workflows. > {: .agenda} +> Using your own workflow +> +> This tutorial assumes that you already have a Galaxy workflow that you want to apply best practices to. You can follow along using any workflow you have created or imported during a previous tutorial (such as [A short introduction to Galaxy](https://training.galaxyproject.org/training-material/topics/introduction/tutorials/galaxy-intro-short/workflows/)). +> +{: .tip} ## Community best practices -Though the practices listed above can be considered general enough to be applicable to any kind of software, individual communities usually add their own specific sets of rules and conventions that help users quickly find their way around software projects, understand them more easily and reuse them more effectively. The Galaxy community, for instance, has a [guide on best practices for maintaining workflows](https://planemo.readthedocs.io/en/latest/best_practices_workflows.html). These best practices include: +Though the practices listed in the introduction can be considered general enough to be applicable to any kind of software, individual communities usually add their own specific sets of rules and conventions that help users quickly find their way around software projects, understand them more easily and reuse them more effectively. The Galaxy community, for instance, has a [guide on best practices for maintaining workflows](https://planemo.readthedocs.io/en/latest/best_practices_workflows.html). These best practices include: * all workflow inputs and outputs are explicit and labelled * tools used in the workflow are packaged with Galaxy by default or are available from the Galaxy ToolShed @@ -53,7 +60,11 @@ Though the practices listed above can be considered general enough to be applica > Apply best practices for workflow structure > -> Read through the "Workflow Structure" section of the [guide on best practices for maintaining workflows](https://planemo.readthedocs.io/en/latest/best_practices_workflows.html#workflow-structure) and update your workflow so that it meets the recommendations. +> 1. Go to the {% icon galaxy-wf-edit %} **Edit** page for your workflow. +> 1. Click {% icon galaxy-wf-options %} **Workflow Options** and select {% icon galaxy-wf-best-practices %} **Best Practices** +> 1. Resolve the warnings that appear until every item has a green tick. +> +> ![Workflow Best Practices Review tab, showing some warnings and some ticks](img/workflow-best-practices.png) {: .hands_on} The [Intergalactic Workflow Commission (IWC)](https://github.com/galaxyproject/iwc) is a collection of highly curated Galaxy workflows that follow best practices and conform to a specific GitHub directory layout, as specified in the [guide on adding workflows](https://github.com/galaxyproject/iwc/blob/main/workflows/README.md#adding-workflows). In particular, the workflow file must be accompanied by a [Planemo test file](https://planemo.readthedocs.io/en/latest/test_format.html) with the same name but a `-test.yml` extension, and a `test-data` directory that contains the datasets used by the tests described in the test file. The guide also specifies how to fulfill other requirements such as setting a license, a creator and a version tag. A new workflow can be proposed for inclusion in the collection by opening a pull request to the [IWC repository](https://github.com/galaxyproject/iwc): if it passes the review and is merged, it will be published to [iwc-workflows](https://github.com/iwc-workflows). The publication process also generates a metadata file that turns the repository into a [Workflow Testing RO-Crate](https://crs4.github.io/life_monitor/workflow_testing_ro_crate), which can be registered to [WorkflowHub](https://workflowhub.eu/) and [LifeMonitor](https://www.lifemonitor.eu/). From 77073632a075b72b7b2cf438958416ed4e66a485 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 13:15:36 +0100 Subject: [PATCH 20/42] add image of best practices tab --- .../img/workflow-best-practices.png | Bin 0 -> 91914 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-best-practices.png diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-best-practices.png b/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-best-practices.png new file mode 100644 index 0000000000000000000000000000000000000000..e5d43dbc331fc733d36a832fa5c7462cd5881d6f GIT binary patch literal 91914 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

PzHADG*m~ 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 s6=8MBiH|yVE&GjcasT&^WYn Date: Wed, 25 Sep 2024 13:27:52 +0100 Subject: [PATCH 21/42] add hands-on to create tests for own workflow --- .../tutorials/ro-crate-galaxy-best-practices/tutorial.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index 07d41f6d87027f..3c2bbe07da1e43 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -155,6 +155,12 @@ planemo workflow_test_init --galaxy_url https://usegalaxy.eu --from_invocation I Each invocation should test a different behavior of the workflow. This could mean using different datatypes for inputs, or changing the workflow settings to produce different results. +> Repeat for your own workflow +> 1. Create a new folder on your computer to store the workflow. +> 1. Download the Galaxy workflow you updated to follow best practices earlier in this tutorial. You can do this by going to the Workflow page and clicking {% icon galaxy-download %} **Download workflow in .ga format**. +> 1. Create a new Galaxy history, and run the workflow on some appropriate input data. +> 1. Use `planemo` to turn that workflow invocation into a test case. +{: .hands_on} ## Adding a workflow to GitHub From f72e3effd94423338cc9a7838a1be9a5df733e53 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 13:28:26 +0100 Subject: [PATCH 22/42] tweak hands-on title --- .../fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index 3c2bbe07da1e43..16f875a4416758 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -155,7 +155,7 @@ planemo workflow_test_init --galaxy_url https://usegalaxy.eu --from_invocation I Each invocation should test a different behavior of the workflow. This could mean using different datatypes for inputs, or changing the workflow settings to produce different results. -> Repeat for your own workflow +> Generate tests for your own workflow > 1. Create a new folder on your computer to store the workflow. > 1. Download the Galaxy workflow you updated to follow best practices earlier in this tutorial. You can do this by going to the Workflow page and clicking {% icon galaxy-download %} **Download workflow in .ga format**. > 1. Create a new Galaxy history, and run the workflow on some appropriate input data. From 2903d7214b8ebf97f2ca07055b322c21b73d4492 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 13:32:00 +0100 Subject: [PATCH 23/42] add guidance on actually uploading to GH --- .../fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index 16f875a4416758..45f4c2cf86e24d 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -207,3 +207,5 @@ Replacing `sort-and-change-case.ga` with the name of your actual Galaxy workflow * run `planemo test` on the Galaxy workflow An example of a repository built according to the guidelines given here is [simleo/ccs-bam-to-fastq-qc-crate](https://github.com/simleo/ccs-bam-to-fastq-qc-crate), which realizes the Workflow Testing RO-Crate setup for [BAM-to-FASTQ-QC](https://workflowhub.eu/workflows/220). + +Your workflow is now ready to add to GitHub! If you're not familiar with GitHub, follow these instructions to create a repository and upload your workflow files: [Uploading a project to GitHub](https://docs.github.com/en/get-started/start-your-journey/uploading-a-project-to-github). From 58776f7a63b301fa23b031f6bb3c636b6daa7e03 Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Wed, 25 Sep 2024 15:09:57 +0200 Subject: [PATCH 24/42] Improve the description field with About and Abstract --- _plugins/jekyll-jsonld.rb | 39 +++++++++++++++++++++++++++++++-------- _plugins/util.rb | 23 +++++++++++++++++++++++ 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/_plugins/jekyll-jsonld.rb b/_plugins/jekyll-jsonld.rb index 80c7a0185b7d09..822596d6ee348b 100644 --- a/_plugins/jekyll-jsonld.rb +++ b/_plugins/jekyll-jsonld.rb @@ -3,6 +3,7 @@ require 'json' require './_plugins/gtn' require './_plugins/gtn/git' +require './_plugins/util' module Jekyll # Generate JSON-LD metadata for the GTN. @@ -794,12 +795,35 @@ def generate_material_jsonld(material, topic, site) data['isPartOf'] = topic_desc + data['abstract'] = material + .fetch('content', '') + .strip + .split("\n") + .first + + if ! data['abstract'].nil? + data['abstract'] = data['abstract'] + .gsub(/\{\{\s*site.baseurl\s*\}\}/, url_prefix(site)) + .gsub(/\[{{\s*site.url\s*}}/, '[' + url_prefix(site)) + .gsub(/{% link (topics[^%]*).md %}/, url_prefix(site) + '\1.html') + .gsub(/{% link (topics[^%]*).html %}/, url_prefix(site) + '\1.html') + .gsub(/\s*\(?{%\s*cite [^}]+\s*%}\)?/, '') + .gsub('{{ site.github_repository }}', safe_site_config(site, 'github_repository', 'https://example.com')) + .gsub(/{% snippet ([^%]*) %}/, '') + .gsub(/{% include ([^%]*) %}/, '') + end + + description.push("## Abstract\n\n#{data['abstract']}\n\n") + if (material['name'] == 'tutorial.md') || (material['name'] == 'slides.html') - data['learningResourceType'] = if material['name'] == 'tutorial.md' - 'e-learning' - else - 'slides' - end + + if material['name'] == 'tutorial.md' + data['learningResourceType'] = 'e-learning' + description.push("## About This Material\n\nThis is a Hands-on Tutorial from the GTN which is usable either for individual self-study, or as a teaching material in a classroom.\n\n") + else + data['learningResourceType'] = 'slides' + end + data['name'] = material['title'] data['url'] = "#{site['url']}#{site['baseurl']}#{material['url']}" @@ -817,8 +841,8 @@ def generate_material_jsonld(material, topic, site) description.push("## Questions this #{material['type']} will address\n\n - #{questions}\n\n") end if material.key?('objectives') && !material['objectives'].nil? && material['objectives'].length.positive? - objectives = material['objectives'].join("\n - ") - description.push("## Learning Objectives\n\n - #{objectives}\n\n") + objectives = material['objectives'].map{|x| "- #{x}"}.join("\n") + description.push("## Learning Objectives\n\n#{objectives}\n\n") data['teaches'] = objectives end if material.key?('keypoints') && !material['keypoints'].nil? && material['keypoints'].length.positive? @@ -991,7 +1015,6 @@ def generate_material_jsonld(material, topic, site) data['educationalLevel'] = material.key?('level') ? eduLevel[material['level']] : 'Beginner' data['mentions'] = mentions - data['abstract'] = material.fetch('content', '').strip.split("\n").first data end diff --git a/_plugins/util.rb b/_plugins/util.rb index a75ce60584aa28..e6d2fcace20b15 100644 --- a/_plugins/util.rb +++ b/_plugins/util.rb @@ -27,3 +27,26 @@ def collapse_event_date_pretty(event) "#{s.strftime('%B')} #{s.day}, #{s.year}#{dash}#{e.strftime('%B')} #{e.day}, #{e.year}" end end + +def safe_site_config(site, key, default) + if !site.config.nil? && site.config.key?(key) + site.config[key] + else + default + end +end + + +def url_prefix(site) + if !site.config.nil? && site.config.key?('url') + "#{site.config['url']}#{site.config['baseurl']}" + else + 'http://localhost:4000/training-material/' + end +end + +def markdownify(site, text) + site.find_converter_instance( + Jekyll::Converters::Markdown + ).convert(text.to_s) +end From 6bf47da59ac06579ad1ef66488b38a51ced93177 Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Wed, 25 Sep 2024 15:32:04 +0200 Subject: [PATCH 25/42] improve notebook resource linking --- _plugins/jekyll-jsonld.rb | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/_plugins/jekyll-jsonld.rb b/_plugins/jekyll-jsonld.rb index 822596d6ee348b..f0aa53132eb123 100644 --- a/_plugins/jekyll-jsonld.rb +++ b/_plugins/jekyll-jsonld.rb @@ -868,14 +868,41 @@ def generate_material_jsonld(material, topic, site) name: "Associated Workflows" }) end - if actual_material.key?('zenodo_link') + + # Notebooks + if actual_material.key?('notebook') && actual_material['notebook']['language'] != 'r' + # Python, Bash, SQL (all via jupyter) + url = "#{site['url']}#{site['baseurl']}#{material['dir']}#{material['topic_name']}-#{material['tutorial_name']}.ipynb" + mentions.push({ + '@type': 'Thing', + url: url, + name: "Jupyter Notebook (with Solutions)" + }) + mentions.push({ + '@type': 'Thing', + url: url.gsub(/\.ipynb$/, '-course.ipynb'), + name: "Jupyter Notebook (without Solutions)" + }) + else # Actual R + url = "#{site['url']}#{site['baseurl']}#{material['dir']}#{material['topic_name']}-#{material['tutorial_name']}.Rmd" mentions.push({ '@type': 'Thing', - url: (actual_material['zenodo_link']).to_s, - name: "Associated Training Datasets" + url: url, + name: "Quarto/RMarkdown Notebook" }) end + # Zenodo link out + if actual_material.key?('zenodo_link') && ! actual_material['zenodo_link'].nil? + if actual_material['zenodo_link'].length.positive? + mentions.push({ + '@type': 'Thing', + url: (actual_material['zenodo_link']).to_s, + name: "Associated Training Datasets" + }) + end + end + if description.empty? description.push(material.fetch('content', '').strip.split("\n").first) end From b4283f8b24fdc6a704118b1b450d9a92303e050e Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 16:30:33 +0100 Subject: [PATCH 26/42] update section title --- .../fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index 45f4c2cf86e24d..c34ad6648d80a1 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -163,7 +163,7 @@ Each invocation should test a different behavior of the workflow. This could mea {: .hands_on} -## Adding a workflow to GitHub +## Adding a GitHub workflow for running tests automatically In the previous section, you learned how to generate a test layout for an example Galaxy workflow. This procedure also gives you the file structure you need to populate the GitHub repository in line with community best practices. One thing is still missing though: a GitHub workflow to test the Galaxy workflow automatically. Let's create this now. From 866974c9de27b5047ee52c96afe6bacf2a31b22b Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 16:41:26 +0100 Subject: [PATCH 27/42] use internal link --- .../fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index c34ad6648d80a1..4ed676b0001718 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -43,7 +43,7 @@ has created for workflows. > Using your own workflow > -> This tutorial assumes that you already have a Galaxy workflow that you want to apply best practices to. You can follow along using any workflow you have created or imported during a previous tutorial (such as [A short introduction to Galaxy](https://training.galaxyproject.org/training-material/topics/introduction/tutorials/galaxy-intro-short/workflows/)). +> This tutorial assumes that you already have a Galaxy workflow that you want to apply best practices to. You can follow along using any workflow you have created or imported during a previous tutorial (such as [A short introduction to Galaxy]({% link topics/introduction/tutorials/galaxy-intro-short/workflows/index.md %})). > {: .tip} From 89f33bf8562bcd1b2ee0356de9eca8d643916691 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 18:07:38 +0100 Subject: [PATCH 28/42] make use of faq tip --- faqs/galaxy/workflows_best_practices.md | 12 +++++++++--- .../img/workflow-best-practices.png | Bin 91914 -> 0 bytes .../ro-crate-galaxy-best-practices/tutorial.md | 13 +++---------- 3 files changed, 12 insertions(+), 13 deletions(-) delete mode 100644 topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-best-practices.png diff --git a/faqs/galaxy/workflows_best_practices.md b/faqs/galaxy/workflows_best_practices.md index 84bbdb4a1355d4..862bb448ec2c11 100644 --- a/faqs/galaxy/workflows_best_practices.md +++ b/faqs/galaxy/workflows_best_practices.md @@ -3,17 +3,23 @@ title: Ensuring Workflows meet Best Practices area: workflows box_type: tip layout: faq -contributors: [hexylena] +contributors: [hexylena, elichad] --- When you are editing a workflow, there are a number of additional steps you can take to ensure that it is a Best Practice workflow and will be more reusable. 1. Open a workflow for editing -1. In the workflow menu bar, you'll find the {% icon galaxy-wf-options %} Workflow Options dropdown menu. -1. Click on it and select "Best Practices" from the dropdown menu. +1. In the workflow menu bar, you'll find the {% icon galaxy-wf-options %} **Workflow Options** dropdown menu. +1. Click on it and select {% icon galaxy-wf-best-practices %} **Best Practices** from the dropdown menu. ![screenshot showing the best practices menu item in the gear dropdown.]({% link faqs/galaxy/images/best-practices1.png %}) 1. This will take you to a new side panel, which allows you to investigate and correct any issues with your workflow. ![screenshot showing the best practices side panel. several issues are raised like a missing annotation with a link to add that, and non-optional inputs that are unconnected. Additionally several items already have green checks like the workflow defining creator information and a license.]({% link faqs/galaxy/images/best-practices2.png %}) + +The Galaxy community also has a [guide on best practices for maintaining workflows](https://planemo.readthedocs.io/en/latest/best_practices_workflows.html). This guide includes the best practices from the Galaxy workflow panel, plus: + +* adding tests to the workflow +* publishing the workflow on GitHub, a public GitLab server, or another public version-controlled repository +* registering the workflow with a workflow registry such as WorkflowHub or Dockstore diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-best-practices.png b/topics/fair/tutorials/ro-crate-galaxy-best-practices/img/workflow-best-practices.png deleted file mode 100644 index e5d43dbc331fc733d36a832fa5c7462cd5881d6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91914 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

PzHADG*m~ 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 s6=8MBiH|yVE&GjcasT&^WYn Apply best practices for workflow structure > -> 1. Go to the {% icon galaxy-wf-edit %} **Edit** page for your workflow. -> 1. Click {% icon galaxy-wf-options %} **Workflow Options** and select {% icon galaxy-wf-best-practices %} **Best Practices** +> 1. Open your workflow for editing and find the **Best Practices** panel (see the tip above). > 1. Resolve the warnings that appear until every item has a green tick. > -> ![Workflow Best Practices Review tab, showing some warnings and some ticks](img/workflow-best-practices.png) {: .hands_on} The [Intergalactic Workflow Commission (IWC)](https://github.com/galaxyproject/iwc) is a collection of highly curated Galaxy workflows that follow best practices and conform to a specific GitHub directory layout, as specified in the [guide on adding workflows](https://github.com/galaxyproject/iwc/blob/main/workflows/README.md#adding-workflows). In particular, the workflow file must be accompanied by a [Planemo test file](https://planemo.readthedocs.io/en/latest/test_format.html) with the same name but a `-test.yml` extension, and a `test-data` directory that contains the datasets used by the tests described in the test file. The guide also specifies how to fulfill other requirements such as setting a license, a creator and a version tag. A new workflow can be proposed for inclusion in the collection by opening a pull request to the [IWC repository](https://github.com/galaxyproject/iwc): if it passes the review and is merged, it will be published to [iwc-workflows](https://github.com/iwc-workflows). The publication process also generates a metadata file that turns the repository into a [Workflow Testing RO-Crate](https://crs4.github.io/life_monitor/workflow_testing_ro_crate), which can be registered to [WorkflowHub](https://workflowhub.eu/) and [LifeMonitor](https://www.lifemonitor.eu/). From d9b8cd797301d6ccffb1e5e4dc21431c3542c756 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 18:10:24 +0100 Subject: [PATCH 29/42] add elichad to contributors --- topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index b0830cce31cd6a..057b8ef82ddba0 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -17,6 +17,7 @@ priority: 3 contributions: authorship: - simleo + - elichad funding: - by-covid license: Apache-2.0 From b3a7ca00db12ef2cf05557188b17bf54fd0da73d Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Wed, 25 Sep 2024 18:21:08 +0100 Subject: [PATCH 30/42] fix internal link --- .../fair/tutorials/ro-crate-submitting-life-monitor/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/fair/tutorials/ro-crate-submitting-life-monitor/tutorial.md b/topics/fair/tutorials/ro-crate-submitting-life-monitor/tutorial.md index 3adae3e4e3a213..b8af20014fe481 100644 --- a/topics/fair/tutorials/ro-crate-submitting-life-monitor/tutorial.md +++ b/topics/fair/tutorials/ro-crate-submitting-life-monitor/tutorial.md @@ -87,7 +87,7 @@ tests** for your workflow]({% link topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md %}#generating-tests-for-your-workflow) using [Planemo](https://planemo.readthedocs.io/en/latest/best_practices_workflows.html#tests), as well as configuring a [GitHub Actions -workflow]({% link topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md %}#adding-a-github-workflow) to automatically +workflow]({% link topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md %}#adding-a-github-workflow-for-running-tests-automatically) to automatically run those tests. Don't worry if this sounds like a lot: the [best practices]({% link topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md %}) document provides straightforward instructions. From b90920d9a708bf74fe751022714f24e111b6ddb6 Mon Sep 17 00:00:00 2001 From: Helena Date: Thu, 26 Sep 2024 10:37:35 +0200 Subject: [PATCH 31/42] Fix else case which spuriously annotated tutorials as having Quarto when they did not --- _plugins/jekyll-jsonld.rb | 42 ++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/_plugins/jekyll-jsonld.rb b/_plugins/jekyll-jsonld.rb index f0aa53132eb123..a8bb42036d25aa 100644 --- a/_plugins/jekyll-jsonld.rb +++ b/_plugins/jekyll-jsonld.rb @@ -870,26 +870,28 @@ def generate_material_jsonld(material, topic, site) end # Notebooks - if actual_material.key?('notebook') && actual_material['notebook']['language'] != 'r' - # Python, Bash, SQL (all via jupyter) - url = "#{site['url']}#{site['baseurl']}#{material['dir']}#{material['topic_name']}-#{material['tutorial_name']}.ipynb" - mentions.push({ - '@type': 'Thing', - url: url, - name: "Jupyter Notebook (with Solutions)" - }) - mentions.push({ - '@type': 'Thing', - url: url.gsub(/\.ipynb$/, '-course.ipynb'), - name: "Jupyter Notebook (without Solutions)" - }) - else # Actual R - url = "#{site['url']}#{site['baseurl']}#{material['dir']}#{material['topic_name']}-#{material['tutorial_name']}.Rmd" - mentions.push({ - '@type': 'Thing', - url: url, - name: "Quarto/RMarkdown Notebook" - }) + if actual_material.key?('notebook') + if actual_material['notebook']['language'] != 'r' + # Python, Bash, SQL (all via jupyter) + url = "#{site['url']}#{site['baseurl']}#{material['dir']}#{material['topic_name']}-#{material['tutorial_name']}.ipynb" + mentions.push({ + '@type': 'Thing', + url: url, + name: "Jupyter Notebook (with Solutions)" + }) + mentions.push({ + '@type': 'Thing', + url: url.gsub(/\.ipynb$/, '-course.ipynb'), + name: "Jupyter Notebook (without Solutions)" + }) + elsif actual_material['notebook']['language'] == 'r' # Actual R + url = "#{site['url']}#{site['baseurl']}#{material['dir']}#{material['topic_name']}-#{material['tutorial_name']}.Rmd" + mentions.push({ + '@type': 'Thing', + url: url, + name: "Quarto/RMarkdown Notebook" + }) + end end # Zenodo link out From 71113d124df8d7b6eaf8496ac8ec61a86cbaddcc Mon Sep 17 00:00:00 2001 From: Helena Date: Thu, 26 Sep 2024 10:39:27 +0200 Subject: [PATCH 32/42] broken box truly not sure how this got through --- topics/data-science/tutorials/sql-advanced/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/data-science/tutorials/sql-advanced/tutorial.md b/topics/data-science/tutorials/sql-advanced/tutorial.md index dd9c4e79a4ea89..d388a3defc22f1 100644 --- a/topics/data-science/tutorials/sql-advanced/tutorial.md +++ b/topics/data-science/tutorials/sql-advanced/tutorial.md @@ -343,7 +343,7 @@ this query: -- Try solutions here! ``` -> ## Averaging with NULL +> Averaging with NULL > > The average of a set of values is the sum of the values > divided by the number of values. From af2ebfbfb9d5810c90f95a2d0ab23607d80fe5c8 Mon Sep 17 00:00:00 2001 From: Saskia Hiltemann Date: Thu, 26 Sep 2024 11:27:39 +0200 Subject: [PATCH 33/42] only scroll if hash given in url --- _layouts/event.html | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/_layouts/event.html b/_layouts/event.html index 65d7b73cecc5b2..8e325857253495 100644 --- a/_layouts/event.html +++ b/_layouts/event.html @@ -502,14 +502,15 @@

Promote the Event

// on load of the page: switch to the currently selected tab var hash = window.location.hash; - - var potential_tab = $('#myTab button[data-target="' + hash + '"]') - if (potential_tab.length != 0) { - potential_tab.tab('show'); - } else { - var target_tab = '#' + $(`${hash}`).closest(".tab-pane").attr("id") - $('#myTab button[data-target="' + target_tab + '"]').tab('show'); - $(hash).get(0).scrollIntoView(); + if (hash){ + var potential_tab = $('#myTab button[data-target="' + hash + '"]') + if (potential_tab.length != 0) { + potential_tab.tab('show'); + } else { + var target_tab = '#' + $(`${hash}`).closest(".tab-pane").attr("id") + $('#myTab button[data-target="' + target_tab + '"]').tab('show'); + $(hash).get(0).scrollIntoView(); + } } }); })(window, document); From 8aab47bebf857477ce23017dc4e67a4a7dcfcc33 Mon Sep 17 00:00:00 2001 From: Helena Date: Thu, 26 Sep 2024 11:34:05 +0200 Subject: [PATCH 34/42] Revert "Support tutorial mode via postMessage" --- _config.yml | 1 - assets/js/main.js | 5 +- assets/js/tutorial-mode.js | 122 ------------------------------------- 3 files changed, 1 insertion(+), 127 deletions(-) delete mode 100644 assets/js/tutorial-mode.js diff --git a/_config.yml b/_config.yml index 544a37e82339a6..51eabde7fdaae9 100644 --- a/_config.yml +++ b/_config.yml @@ -60,7 +60,6 @@ javascript_bundles: - assets/js/clipboard.min.js # Used on anything with a pre - assets/js/anchor.min.js # Used on every page. - assets/js/main.js - - assets/js/tutorial-mode.js # - assets/js/list.min.js # Potentially unused? # Conversion diff --git a/assets/js/main.js b/assets/js/main.js index 69010d0df2efe8..170e92628a9d16 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -1,7 +1,4 @@ -// GTN Javascript: this appears on *every* page. -// -/* GTN Boxes - */ +// make boxes collapsible //LEGACY $(".solution>h3,.details>h3,.tip>h3,.question>h3,.hands_on>h3,.comment>h3").click(function(event) { $(">*:not(h3)", $(this).parent()).toggle(400); diff --git a/assets/js/tutorial-mode.js b/assets/js/tutorial-mode.js deleted file mode 100644 index 30a59038727b79..00000000000000 --- a/assets/js/tutorial-mode.js +++ /dev/null @@ -1,122 +0,0 @@ -/* GTN Tutorial Mode - * Setup messaging to share events with any Galaxy that is embedding this content. - * - * Originally we suggested admins to setup a proxy of the GTN at - * /training-material/ ensuring that Galaxy and the GTN were on the same - * domain, the same origin. - * - * This let us intermingle the site's content a bit, and call javascript from both sides safely. - * - * We replace it now with postMessage, a widely available and supported API for sharing messages and data between domains. - * https://caniuse.com/mdn-api_window_postmessage - * - * **Messages** - * - * The following communication occurs - * - * GTN | Direction | Galaxy - * ------------ | --------- | ------ - * Navigation | -> | Galaxy stores this in localStorage - * Scroll | -> | Galaxy stores this in localStorage - * Click to Load Tool | -> | Galaxy loads the tool at the specified version - * Click to Load WF | -> | Galaxy activates the TRS API. - * Scrolls | <- | User opens the GTN in Tutorial Mode and Galaxy restores the scroll position - * - * These are the *only* supported messages. - * - * All GTN messages are sent as `action@@data@@other` where `@@` is the - * delimiter, chosen since unlikely to occur naturally - * - * The only Galaxy message sent to us is scroll, and it is just a number. Any - * non-numeric characters are stripped before a scroll is attempted. - * - * **Security** - * precautions are taken where possible and useful. On the Galaxy - * side we'll need to check the origin of the request and ensure it is really - * training.galaxyproject.org (if we ever change domains again, like we've done - * in the past, this should be acceptable as long as the old domain continues - * to load and does not redirect automatically. If it does redirect, tutorial - * mode will stop working (messages will not be processed) until the - * corresponding Galaxy update is made.) - */ - -// Wrapper for postMessage to ensure we always send the same format -function gtnPostMessage(category, message,other){ - parent.postMessage(`${category}@@${message}@@${other}`, "*") -} - -// On load we inform any parent of which url we're at. -// So when the user e.g. navigates pages this can be stored on the galaxy side. -gtnPostMessage('navigate', window.location) - -// We'll also track the scroll position to allow restoring that.. -// -// https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event -// -// Code samples added on or after August 20, 2010 are in the public domain CC0. -// No licensing notice is necessary but if you need one, you can use: -// -// Any copyright is dedicated to the Public Domain: -// https://creativecommons.org/publicdomain/zero/1.0/ -let lastKnownScrollPosition = 0; -let ticking = false; -document.addEventListener("scroll", (event) => { - lastKnownScrollPosition = window.scrollY; - if (!ticking) { - window.requestAnimationFrame(() => { - gtnPostMessage('scroll', lastKnownScrollPosition) - ticking = false; - }); - ticking = true; - } -}); - -// If the user clicks on a tool button/link, we'll inform the parent (Galaxy) -// of that so it can load said tool. -document.querySelectorAll("button.tool,span.tool").forEach((button) => { - button.addEventListener("click", (event) => { - gtnPostMessage( - 'loadTool', - event.target.getAttribute("data-tool"), - event.target.getAttribute("data-version") - ) - }); -}); - -// Same for workflows, no trs-version/trs-server attribute? TODO. -document.querySelectorAll("button.workflow,span.workflow").forEach((button) => { - button.addEventListener("click", (event) => { - gtnPostMessage( - 'loadWorkflow', - event.target.getAttribute("data-workflow") - ) - }); -}); - - -// Lastly, we listen to messages from the parent which enable us to restore our Scroll offset -// -// Every article you read about postMessage is concerned about security, and the origin of the message. -// We here clearly ignore it, so we are playing with potentially dangerous code. -// -// If anyone is able to inject a message into the page, and we are careless -// with this data, they could compromise the GTN. -// -// So we need to be extremely careful with the data we receive. -// -window.addEventListener('message', e => { - // Cross domain messages are allowed from anywhere, since we don't know - // who will embed the GTN and we would like to be able to support this - // scroll behaviour for improved user experience. - - // It *MUST* be an integer. - // So we serialise whatever we get to a string (we don't care about any - // data inside, just, get it as quickly as possible to a string. And - // make sure it contains only numbers. - var safeScrollText = `${e.data}`.replace(/[^0-9]/g, ''); - var scrollPosition = parseInt(safeScrollText, 10); - if (scrollPosition) { - window.scrollTo(0, scrollPosition); - } - return; -},false); From 12a17e978098748c737b05930eb21eee042bab5a Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Thu, 26 Sep 2024 11:38:42 +0200 Subject: [PATCH 35/42] Fail on any failures --- .github/workflows/ci-main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml index a4b9adb8e97708..11d974a2c02da7 100644 --- a/.github/workflows/ci-main.yml +++ b/.github/workflows/ci-main.yml @@ -66,8 +66,8 @@ jobs: - name: Check Tutorial Formatting run: | - find topics/ -name tutorial.md | xargs -n 1 python bin/check-broken-boxes.py | reviewdog -efm="%f:%l: %m" -filter-mode=file -reporter=github-pr-review - bundle exec ruby bin/lint.rb --format rdjson | reviewdog -filter-mode=file -reporter=github-pr-review -f=rdjsonl -fail-on-error + find topics/ -name tutorial.md | xargs -n 1 python bin/check-broken-boxes.py | reviewdog -efm="%f:%l: %m" -filter-mode=file -reporter=github-pr-review -fail-level=any + bundle exec ruby bin/lint.rb --format rdjson | reviewdog -filter-mode=file -reporter=github-pr-review -f=rdjsonl -fail-level=any env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} From d502745e5570ee7883b0f7e5b0fdb8933d5a050c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 09:40:07 +0000 Subject: [PATCH 36/42] Bump webrick from 1.8.1 to 1.8.2 Bumps [webrick](https://github.com/ruby/webrick) from 1.8.1 to 1.8.2. - [Release notes](https://github.com/ruby/webrick/releases) - [Commits](https://github.com/ruby/webrick/compare/v1.8.1...v1.8.2) --- updated-dependencies: - dependency-name: webrick dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 74f96469c95bac..417dd1e86c7e42 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,7 +110,7 @@ GEM typhoeus (1.4.0) ethon (>= 0.9.0) unicode-display_width (2.5.0) - webrick (1.8.1) + webrick (1.8.2) yell (2.2.2) zeitwerk (2.6.12) From 4d8a360f205836174d829b778c0198fa3ced1eb6 Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Thu, 26 Sep 2024 11:49:37 +0200 Subject: [PATCH 37/42] Fix remaining broken boxes since our checker stopped working --- .../tutorials/vgp_genome_assembly/tutorial.md | 137 ++++++++--------- .../community-tool-table/tutorial.md | 11 +- .../dev/tutorials/tool-annotation/tutorial.md | 4 +- .../tutorials/tool-from-scratch/tutorial.md | 2 +- .../fair-data-registration/tutorial.md | 4 +- .../tutorial.md | 3 +- .../tutorial.md | 2 +- .../tutorial.md | 3 + .../tutorial.md | 10 +- .../tutorial.md | 6 +- .../tutorials/beacon_cnv_query/tutorial.md | 48 +++--- .../tutorials/beaconise_1000hg/tutorial.md | 142 +++++++++--------- 12 files changed, 190 insertions(+), 182 deletions(-) diff --git a/topics/assembly/tutorials/vgp_genome_assembly/tutorial.md b/topics/assembly/tutorials/vgp_genome_assembly/tutorial.md index 0c64418270c5f9..ef50d16210f0c6 100644 --- a/topics/assembly/tutorials/vgp_genome_assembly/tutorial.md +++ b/topics/assembly/tutorials/vgp_genome_assembly/tutorial.md @@ -548,34 +548,34 @@ Let's use gfastats to get a basic idea of what our assembly looks like. We'll ru > > 2. Rename outputs of `gfastats` step to as `Hap1 stats` and `Hap2 stats` > -> > > This would generate summary files that look like this (only the first six rows are shown): -> > > -> > > ``` -> > > Expected genome size 11747160 -> > > # scaffolds 0 -> > > Total scaffold length 0 -> > > Average scaffold length nan -> > > Scaffold N50 0 -> > > Scaffold auN 0.00 -> > > ``` -> > > -> > > Because we ran `gfastats` on hap1 and hap2 outputs of `hifiasm` we need to join the two outputs together for easier interpretation: +> This would generate summary files that look like this (only the first six rows are shown): +> +> ``` +> Expected genome size 11747160 +> # scaffolds 0 +> Total scaffold length 0 +> Average scaffold length nan +> Scaffold N50 0 +> Scaffold auN 0.00 +> ``` +> +> Because we ran `gfastats` on hap1 and hap2 outputs of `hifiasm` we need to join the two outputs together for easier interpretation: > > 3. Run {% tool [Column join](toolshed.g2.bx.psu.edu/repos/iuc/collection_column_join/collection_column_join/0.0.3) %} with the following parameters: > - {% icon param-files %} *"Input file"*: select `Hap1 stats` and the `Hap2 stats` datasets. Keep all other settings as they are. > > 4. Rename the output as `gfastats on hap1 and hap2 (full)` > -> > > This would generate a joined summary file that looks like this (only the first five rows are shown): -> > > -> > > ``` -> > > # gaps 0 0 -> > > # gaps in scaffolds 0 0 -> > > # paths 0 0 -> > > # segments 17 16 -> > > ``` -> > > -> > > Now let's extract only relevant information by excluding all lines containing the word `scaffold` since there are no scaffolds at this stage of the assembly process (only contigs): +> This would generate a joined summary file that looks like this (only the first five rows are shown): +> +> ``` +> # gaps 0 0 +> # gaps in scaffolds 0 0 +> # paths 0 0 +> # segments 17 16 +> ``` +> +> Now let's extract only relevant information by excluding all lines containing the word `scaffold` since there are no scaffolds at this stage of the assembly process (only contigs): > > 5. Run {% tool [Search in textfiles](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_grep_tool/1.1.1) %} with the following parameters: > - {% icon param-files %} *"Input file"*: select `gfastats on hap1 and hap2 (full)` @@ -756,35 +756,35 @@ Let's use gfastats to get a basic idea of what our assembly looks like. We'll ru > > 2. Rename outputs of `gfastats` step to as `Primary stats` and `Alternate stats` > -> > > This would generate summary files that look like this (only the first six rows are shown): -> > > -> > > ``` -> > > Expected genome size 11747160 -> > > # scaffolds 25 -> > > Total scaffold length 18519764 -> > > Average scaffold length 740790.56 -> > > Scaffold N50 813311 -> > > Scaffold auN 913050.77 -> > > ``` -> > > -> > > Because we ran `gfastats` on Primary and Alternate outputs of `hifiasm` we need to join the two outputs together for easier interpretation: +> This would generate summary files that look like this (only the first six rows are shown): +> +> ``` +> Expected genome size 11747160 +> # scaffolds 25 +> Total scaffold length 18519764 +> Average scaffold length 740790.56 +> Scaffold N50 813311 +> Scaffold auN 913050.77 +> ``` +> +> Because we ran `gfastats` on Primary and Alternate outputs of `hifiasm` we need to join the two outputs together for easier interpretation: > > 3. Run {% tool [Column join](toolshed.g2.bx.psu.edu/repos/iuc/collection_column_join/collection_column_join/0.0.3) %} with the following parameters: > - {% icon param-files %} *"Input file"*: select `Primary stats` and the `Alternate stats` datasets (these are from **Step 2** above). Keep all other setting as they are. > > 4. Rename the output as `gfastats on Pri and Alt (full)` > -> > > This would generate a joined summary file that looks like this (only five rows are shown): -> > > -> > > ``` -> > > # contigs 25 10 -> > > # dead ends . 16 -> > > # disconnected components . 7 -> > > # edges . 6 -> > > # gaps 0 0 -> > > ``` -> > > -> > > Now let's extract only relevant information by excluding all lines containing the word `scaffold` since there are no scaffolds at this stage of the assembly process (only contigs): +> This would generate a joined summary file that looks like this (only five rows are shown): +> +> ``` +> # contigs 25 10 +> # dead ends . 16 +> # disconnected components . 7 +> # edges . 6 +> # gaps 0 0 +> ``` +> +> Now let's extract only relevant information by excluding all lines containing the word `scaffold` since there are no scaffolds at this stage of the assembly process (only contigs): > > 5. Run {% tool [Search in textfiles](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_grep_tool/1.1.1) %} with the following parameters: > - {% icon param-files %} *"Input file"*: select `gfastats on Pri and Alt (full)` @@ -876,7 +876,7 @@ Despite BUSCO being robust for species that have been widely studied, it can be > - {% icon param-file %} *"First genome assembly"*: `Primary contigs FASTA` > - {% icon param-file %} *"Second genome assembly"*: `Alternate contigs FASTA` > -> > > (REMINDER: `Primary contigs FASTA` and `Alternate contigs FASTA` were generated [earlier](#gfa2fasta_solo)) +> (REMINDER: `Primary contigs FASTA` and `Alternate contigs FASTA` were generated [earlier](#gfa2fasta_solo)) > {: .hands_on} @@ -913,23 +913,24 @@ The first relevant parameter is the `Estimated genome size`. > Get estimated genome size > > 1. Look at the `GenomeScope summary` output (generated during *k*-mer profiling [step](#genome-profiling-with-genomescope2)). The file should have content that looks like this (it may not be exactly like this): -> > ``` -> > GenomeScope version 2.0 -> > input file = .... -> > output directory = . -> > p = 2 -> > k = 31 -> > TESTING set to TRUE -> > -> > property min max -> > Homozygous (aa) 99.4165% 99.4241% -> > Heterozygous (ab) 0.575891% 0.583546% -> > Genome Haploid Length 11,739,321 bp 11,747,160 bp -> > Genome Repeat Length 722,921 bp 723,404 bp -> > Genome Unique Length 11,016,399 bp 11,023,755 bp -> > Model Fit 92.5159% 96.5191% -> > Read Error Rate 0.000943206% 0.000943206% -> > ``` +> +> ``` +> GenomeScope version 2.0 +> input file = .... +> output directory = . +> p = 2 +> k = 31 +> TESTING set to TRUE +> +> property min max +> Homozygous (aa) 99.4165% 99.4241% +> Heterozygous (ab) 0.575891% 0.583546% +> Genome Haploid Length 11,739,321 bp 11,747,160 bp +> Genome Repeat Length 722,921 bp 723,404 bp +> Genome Unique Length 11,016,399 bp 11,023,755 bp +> Model Fit 92.5159% 96.5191% +> Read Error Rate 0.000943206% 0.000943206% +> ``` > > 2. Copy the number value for the maximum Genome Haploid Length to your clipboard (CTRL + C on Windows; CMD + C on MacOS). > 3. Click on "Upload Data" in the toolbox on the left. @@ -992,7 +993,7 @@ Now let's parse the `transition between haploid & diploid` and `upper bound for > > > {: .question} > -> > Now let's get the transition parameter. +> Now let's get the transition parameter. > > 5. Run {% tool [Advanced Cut](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_cut_tool/1.1.0) %} with the following parameters: > - {% icon param-file %} *"File to cut"*: `Parsing purge parameters` @@ -1318,11 +1319,11 @@ Before we begin, we need to upload BioNano data: > > 1. Copy the following URLs into clipboard. You can do this by clicking on {% icon copy %} button in the right upper corner of the box below. It will appear if you mouse over the box. > -> > ``` -> > https://zenodo.org/records/5887339/files/bionano.cmap -> > ``` +> ``` +> https://zenodo.org/records/5887339/files/bionano.cmap +> ``` > -> 2. Upload datasets into Galaxy +> 2. Upload datasets into Galaxy > - set the datatype to `cmap` > > {% snippet faqs/galaxy/datasets_import_via_link.md format="cmap" %} diff --git a/topics/dev/tutorials/community-tool-table/tutorial.md b/topics/dev/tutorials/community-tool-table/tutorial.md index 79871b679d6ab3..3dd8bfd945901f 100644 --- a/topics/dev/tutorials/community-tool-table/tutorial.md +++ b/topics/dev/tutorials/community-tool-table/tutorial.md @@ -130,14 +130,17 @@ an example of the file that is used to manually filter the tools for a community > 1. Download the `tools.tsv` file in `results/`. > 2. Open `tools.tsv` with a Spreadsheet Software. > 3. Review each line corresponding to a tool - - You can also just review some tools. Those tools that are not reviewed will be have `FALSE` in the `Reviewed` columns the updated table. +> +> You can also just review some tools. Those tools that are not reviewed will be have `FALSE` in the `Reviewed` columns the updated table. +> > 1. Change the value in the `Reviewed` column from `FALSE` to `TRUE` (this will be done automatically if an entry of the tool in `tools_status.tsv` exists). > 2. Add `TRUE` to the `To keep` column if the tool should be kept, and `FALSE` if not. > 3. Add `TRUE` or `FALSE` also to the `Deprecated` column. +> > 4. Copy paste the `Galaxy wrapper id`, `To keep`, `Deprecated` column in a new table (in that order). - - This can also be done using the reference function of your Spreadsheet Software. +> +> This can also be done using the reference function of your Spreadsheet Software. +> > 5. Export the new table as TSV (without header). > 6. Submit the TSV as `tools_status.tsv` in your community folder. > 7. Wait for the Pull Request to be merged diff --git a/topics/dev/tutorials/tool-annotation/tutorial.md b/topics/dev/tutorials/tool-annotation/tutorial.md index 9215bbc1b72bce..f2ebf4e609a045 100644 --- a/topics/dev/tutorials/tool-annotation/tutorial.md +++ b/topics/dev/tutorials/tool-annotation/tutorial.md @@ -188,7 +188,7 @@ To link a Galaxy tool to its corresponding bio.tools entry, we need to first fin > 2. Search your tool > 3. Expand the row > 4. Open the link shown in the `Galaxy wrapper parsed folder` column - +> {: .hands_on} Now we have the wrapper, and can add the bio.tools entry. @@ -214,4 +214,4 @@ Now we have the wrapper, and can add the bio.tools entry. > {: .hands_on} -# Conclusion \ No newline at end of file +# Conclusion diff --git a/topics/dev/tutorials/tool-from-scratch/tutorial.md b/topics/dev/tutorials/tool-from-scratch/tutorial.md index 3bbcd56589aac7..694c0c8932e2ad 100644 --- a/topics/dev/tutorials/tool-from-scratch/tutorial.md +++ b/topics/dev/tutorials/tool-from-scratch/tutorial.md @@ -462,7 +462,7 @@ Note that for using `planemo`from a new shell you will need to activate the pyth > > ```bash > > planemo, version 0.74.3 > > ``` -> {: .code-out} +> {: .code-in} > > 2. `planemo --help` will show the available commands with a short desctiption (lint, test, and serve will be part of this tutorial) > 3. `planemo SUBCOMMAND --help` will show the usage information for the corresponding subcommand. Try to obtain the information for the `lint` subcommand. diff --git a/topics/fair/tutorials/fair-data-registration/tutorial.md b/topics/fair/tutorials/fair-data-registration/tutorial.md index 72a25f0adada44..ac2e637302433c 100644 --- a/topics/fair/tutorials/fair-data-registration/tutorial.md +++ b/topics/fair/tutorials/fair-data-registration/tutorial.md @@ -109,7 +109,7 @@ Discipline-specific repositories cater for communities and datatypes, and typica > > > An example of a discipline-specific repository is [ArrayExpress](https://www.ebi.ac.uk/biostudies/arrayexpress) database. ArrayExpress stores data from high-through functional genomics assays, such as RNAseq, ChIPseq and expression microarrays. -The data submission interface of ArrayExpress is called [Annotare](https://www.ebi.ac.uk/fg/annotare/login/). Without creating a login, what help is given to a person looking to submit a dataset for the first time? +> The data submission interface of ArrayExpress is called [Annotare](https://www.ebi.ac.uk/fg/annotare/login/). Without creating a login, what help is given to a person looking to submit a dataset for the first time? > > > > > @@ -127,7 +127,7 @@ The data submission interface of ArrayExpress is called [Annotare](https://www.e > > > > > > Open the **Findability** pulldown on the left hand banner to find recipes for the following: -[Depositing to generic repositories - Zenodo use case](https://faircookbook.elixir-europe.org/content/recipes/findability/zenodo-deposition.html) and [Registering Datasets in Wikidata](https://faircookbook.elixir-europe.org/content/recipes/findability/registeringDatasets.html). +> > [Depositing to generic repositories - Zenodo use case](https://faircookbook.elixir-europe.org/content/recipes/findability/zenodo-deposition.html) and [Registering Datasets in Wikidata](https://faircookbook.elixir-europe.org/content/recipes/findability/registeringDatasets.html). > > > {: .solution} {: .question} diff --git a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md index 057b8ef82ddba0..05345b949f0a9c 100644 --- a/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md +++ b/topics/fair/tutorials/ro-crate-galaxy-best-practices/tutorial.md @@ -34,8 +34,7 @@ Providing documentation is also important to help understand the workflow's purp > > -> In this tutorial, you will learn about the best practices that the Galaxy community -has created for workflows. +> In this tutorial, you will learn about the best practices that the Galaxy community has created for workflows. > > 1. TOC > {:toc} diff --git a/topics/genome-annotation/tutorials/secondary-metabolite-discovery/tutorial.md b/topics/genome-annotation/tutorials/secondary-metabolite-discovery/tutorial.md index 82bc02c345e744..0fde73815a8517 100644 --- a/topics/genome-annotation/tutorials/secondary-metabolite-discovery/tutorial.md +++ b/topics/genome-annotation/tutorials/secondary-metabolite-discovery/tutorial.md @@ -104,7 +104,7 @@ E.g. the workflow could be combined with metagenomic workflows, that allow to sc > > Genome download > > > > This downloads the `Streptomyces coelicolor A3(2) complete genome`, -which should be a great source for biosynthetic gene clusters (BGCs). +> > which should be a great source for biosynthetic gene clusters (BGCs). > {: .comment} > {: .hands_on} diff --git a/topics/microbiome/tutorials/pathogen-detection-from-nanopore-foodborne-data/tutorial.md b/topics/microbiome/tutorials/pathogen-detection-from-nanopore-foodborne-data/tutorial.md index c9bf3ba522b03f..a2d3e8e1178e38 100644 --- a/topics/microbiome/tutorials/pathogen-detection-from-nanopore-foodborne-data/tutorial.md +++ b/topics/microbiome/tutorials/pathogen-detection-from-nanopore-foodborne-data/tutorial.md @@ -783,6 +783,7 @@ To prepare the **ABRicate**{% icon tool %} output tabulars of both samples for f
+> Antimicrobial Resistance Genes Identification > 1. {% tool [Replace](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_find_and_replace/1.1.4) %} with the following parameters: > - {% icon param-file %} *"File to process"*: `report` (output of **ABRicate** {% icon tool %}) > - In *"Find and Replace"*: @@ -803,6 +804,7 @@ To prepare the **ABRicate**{% icon tool %} output tabulars of both samples for f > > 2. Rename the output collection `AMRs` {: .hands-on} +
> @@ -874,6 +876,7 @@ To prepare the **ABRicate**{% icon tool %} output tabulars of both samples for f
+> Replace Text > 1. {% tool [Replace](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_find_and_replace/1.1.4) %} with the following parameters: > - {% icon param-file %} *"File to process"*: `report` (output of **ABRicate** {% icon tool %}) > - In *"Find and Replace"*: diff --git a/topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.md b/topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.md index a7660669da7187..12ef70a8ac2a4d 100644 --- a/topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.md +++ b/topics/single-cell/tutorials/scrna-case_alevin-combine-datasets/tutorial.md @@ -169,11 +169,11 @@ You can access the data for this tutorial in multiple ways: > - {% icon param-file %} *"Annotated data matrix"*: `N701-400k` > - *"Function to manipulate the object"*: `Concatenate along the observations axis` > - {% icon param-file %} *"Annotated data matrix to add"*: `Select all the other matrix files from bottom to top, N702 to N707` -> -> -> >If you imported files from Zenodo instead of using the input history, yours might not be in the same order as ours. Since the files will be concatenated in the order that you click, it will be helpful if you click them in the same order, from N702 to N707. This will ensure your samples are given the same batch numbers as we got in this tutorial, which will help when we're adding in metadata later! - {: .comment} -> +> +> > +> > If you imported files from Zenodo instead of using the input history, yours might not be in the same order as ours. Since the files will be concatenated in the order that you click, it will be helpful if you click them in the same order, from N702 to N707. This will ensure your samples are given the same batch numbers as we got in this tutorial, which will help when we're adding in metadata later! +> {: .comment} +> > > Don't add N701! > > You are adding files to N701, so do not add N701 to itself! > {: .warning} diff --git a/topics/transcriptomics/tutorials/differential-isoform-expression/tutorial.md b/topics/transcriptomics/tutorials/differential-isoform-expression/tutorial.md index cc3344a78430a7..c3baebd597f86f 100644 --- a/topics/transcriptomics/tutorials/differential-isoform-expression/tutorial.md +++ b/topics/transcriptomics/tutorials/differential-isoform-expression/tutorial.md @@ -131,10 +131,12 @@ Next we will retrieve the remaining datasets. > {: .hands_on} - +{: .details} +--> # Quality assessment diff --git a/topics/variant-analysis/tutorials/beacon_cnv_query/tutorial.md b/topics/variant-analysis/tutorials/beacon_cnv_query/tutorial.md index 8e13fd30effed9..11113bb2ce83fb 100644 --- a/topics/variant-analysis/tutorials/beacon_cnv_query/tutorial.md +++ b/topics/variant-analysis/tutorials/beacon_cnv_query/tutorial.md @@ -86,30 +86,30 @@ Those parametars are, "CHROMOSOME", "Start", and "End". > > > > What types of information can be extracted from records? > > -> > > ```json -> > >{'_id': ObjectId('66c466431ea6cb4184ee0f2f'), -> > > 'assemblyId': 'GRCh38', -> > > 'biosampleId': 'MP2PRT-PARNFH-TMP1-A, MP2PRT-PARNFH-NM1-A', -> > > 'definitions': {'Location': {'chromosome': '17', -> > > 'end': 43170245, -> > > 'start': 43044295}}, -> > > 'diseaseType': 'acute lymphoblastic leukemia', -> > > 'gene': 'BRCA1', -> > > 'geneID': 'ENSG00000012048.23', -> > > 'id': 'refvar-66c466431ea6cb4184ee0f2f', -> > > 'info': {'caseID': 'MP2PRT-PARNFH, MP2PRT-PARNFH', -> > > 'cnCount': 3, -> > > 'fileName': 'f11b7fb7-a610-4978-b5c4-523450a0fd5f.wgs.ASCAT.gene_level.copy_number_variation.tsv', -> > > 'legacyId': 'DUP:chr17:43044295-43170245', -> > > 'projectID': 'MP2PRT-ALL', -> > > 'sampleType': 'Blood Derived Cancer - Bone Marrow, Blood Derived ' -> > > 'Cancer - Bone Marrow, Post-treatment'}, -> > > 'primarySite': 'hematopoietic and reticuloendothelial systems', -> > > 'updated': '2024-08-19T21:23:09.374531', -> > > 'variantInternalId': '17:43044295-43170245:EFO:0030071', -> > > 'variantState': {'id': 'EFO:0030071', 'label': 'low-level gain'}, -> > > 'variantType': 'DUP'} -> > > ``` +> > ```json +> > {'_id': ObjectId('66c466431ea6cb4184ee0f2f'), +> > 'assemblyId': 'GRCh38', +> > 'biosampleId': 'MP2PRT-PARNFH-TMP1-A, MP2PRT-PARNFH-NM1-A', +> > 'definitions': {'Location': {'chromosome': '17', +> > 'end': 43170245, +> > 'start': 43044295}}, +> > 'diseaseType': 'acute lymphoblastic leukemia', +> > 'gene': 'BRCA1', +> > 'geneID': 'ENSG00000012048.23', +> > 'id': 'refvar-66c466431ea6cb4184ee0f2f', +> > 'info': {'caseID': 'MP2PRT-PARNFH, MP2PRT-PARNFH', +> > 'cnCount': 3, +> > 'fileName': 'f11b7fb7-a610-4978-b5c4-523450a0fd5f.wgs.ASCAT.gene_level.copy_number_variation.tsv', +> > 'legacyId': 'DUP:chr17:43044295-43170245', +> > 'projectID': 'MP2PRT-ALL', +> > 'sampleType': 'Blood Derived Cancer - Bone Marrow, Blood Derived ' +> > 'Cancer - Bone Marrow, Post-treatment'}, +> > 'primarySite': 'hematopoietic and reticuloendothelial systems', +> > 'updated': '2024-08-19T21:23:09.374531', +> > 'variantInternalId': '17:43044295-43170245:EFO:0030071', +> > 'variantState': {'id': 'EFO:0030071', 'label': 'low-level gain'}, +> > 'variantType': 'DUP'} +> > ``` > > > > > > > > 1. Identifiers and IDs: diff --git a/topics/variant-analysis/tutorials/beaconise_1000hg/tutorial.md b/topics/variant-analysis/tutorials/beaconise_1000hg/tutorial.md index 58a383a6c9f5cb..bc8f7449ad4e7a 100644 --- a/topics/variant-analysis/tutorials/beaconise_1000hg/tutorial.md +++ b/topics/variant-analysis/tutorials/beaconise_1000hg/tutorial.md @@ -109,45 +109,45 @@ We will use docker and docker-compose for this step. If you don't have it instal > nano docker-compose.yaml > ``` > 4. Copy the text below into the `docker-compose.yaml` file -> >```yaml -> > version: '3.6' -> > services: -> > -> > mongo-client: -> > image: mongo:3.6 -> > restart: unless-stopped -> > volumes: -> > - ./mongo/db:/data/db -> > - ./mongo-init:/docker-entrypoint-initdb.d -> > ports: -> > - "27017:27017" -> > environment: -> > MONGO_INITDB_ROOT_USERNAME: root -> > MONGO_INITDB_ROOT_PASSWORD: example -> > -> > mongo-express: -> > image: mongo-express -> > restart: unless-stopped -> > environment: -> > - ME_CONFIG_MONGODB_SERVER=mongo-client -> > - ME_CONFIG_MONGODB_PORT=27017 -> > - ME_CONFIG_BASICAUTH_USERNAME=root -> > - ME_CONFIG_BASICAUTH_PASSWORD=example -> > ports: -> > - "8081:8081" -> > -> > mongo-init: -> > image: mongo:3.6 -> > restart: "no" -> > depends_on: -> > - mongo-client -> > environment: -> > - MONGO_INITDB_DATABASE=admin -> > - MONGO_INITDB_ROOT_USERNAME=root -> > - MONGO_INITDB_ROOT_PASSWORD=example -> > volumes: -> > - ./mongo-init:/docker-entrypoint-initdb.d -> > ``` +> ```yaml +> version: '3.6' +> services: +> +> mongo-client: +> image: mongo:3.6 +> restart: unless-stopped +> volumes: +> - ./mongo/db:/data/db +> - ./mongo-init:/docker-entrypoint-initdb.d +> ports: +> - "27017:27017" +> environment: +> MONGO_INITDB_ROOT_USERNAME: root +> MONGO_INITDB_ROOT_PASSWORD: example +> +> mongo-express: +> image: mongo-express +> restart: unless-stopped +> environment: +> - ME_CONFIG_MONGODB_SERVER=mongo-client +> - ME_CONFIG_MONGODB_PORT=27017 +> - ME_CONFIG_BASICAUTH_USERNAME=root +> - ME_CONFIG_BASICAUTH_PASSWORD=example +> ports: +> - "8081:8081" +> +> mongo-init: +> image: mongo:3.6 +> restart: "no" +> depends_on: +> - mongo-client +> environment: +> - MONGO_INITDB_DATABASE=admin +> - MONGO_INITDB_ROOT_USERNAME=root +> - MONGO_INITDB_ROOT_PASSWORD=example +> volumes: +> - ./mongo-init:/docker-entrypoint-initdb.d +> ``` > 5. Create the path `mongo/db` in your directory using `$mkdir` tool > ```bash > mkdir mongo @@ -168,23 +168,23 @@ We will use docker and docker-compose for this step. If you don't have it instal > nano create-user.js > ``` > 9. Copy the text below into the `create-user.js` file -> >```js -> > // create_user.js -> > -> > // Connect to the admin database -> > var adminDB = db.getSiblingDB("admin"); -> > -> > // Create a new user with read-only access to all databases -> > adminDB.createUser({ -> > user: "query_user", -> > pwd: "querypassword", -> > roles: [ -> > { role: "read", db: "admin" }, -> > { role: "read", db: "Beacon" }, // Adjust this for your needs -> > // Add additional read roles as needed -> > ] -> >}); -> > ``` +> ```js +> // create_user.js +> +> // Connect to the admin database +> var adminDB = db.getSiblingDB("admin"); +> +> // Create a new user with read-only access to all databases +> adminDB.createUser({ +> user: "query_user", +> pwd: "querypassword", +> roles: [ +> { role: "read", db: "admin" }, +> { role: "read", db: "Beacon" }, // Adjust this for your needs +> // Add additional read roles as needed +> ] +> }); +> ``` > This will add a user (user name: `query_user` and password:`querypassword`) account with read-only permission to the Beacon database. This is important to avoid unwanted modifications to the Beacon database. > To know more about MongoDB, please read the [MongoDB documentation](https://www.mongodb.com/docs/). > 10. Run the command `$docker-compose` in the directory containing the `docker-compose.yaml` file with the specified parameters. @@ -456,21 +456,21 @@ We are looking to see if there is a deletion mutation in the gene **located** in > - *"END"*: `243620819` > - *"VARIANT STATE ID"*: `EFO:0030068` > The srarch function will queiry the Beacon database and print out the resutls that matches our quiery specifications. In this case it will print something like this. -> > ```json -> > {'_id': ObjectId('6690160a3a936e8e0a7828e2'), -> > 'assemblyId': 'GRCh38', -> > 'biosampleId': 'HG00096', -> > 'definitions': {'Location': {'chromosome': '1', -> > 'end': 243620819, -> > 'start': 243618689}}, -> > 'id': 'refvar-6690160a3a936e8e0a7828e2', -> > 'info': {'cnCount': 1, -> > 'cnValue': 0.422353, -> > 'legacyId': 'DRAGEN:LOSS:chr1:243618690-243620819'}, -> > 'updated': '2024-07-11T17:26:27.265115', -> > 'variantInternalId': 'chr1:243618689-243620819:EFO:0030068', -> > 'variantState': {'id': 'EFO:0030068', 'label': 'low-level loss'}} -> > ``` +> ```json +> {'_id': ObjectId('6690160a3a936e8e0a7828e2'), +> 'assemblyId': 'GRCh38', +> 'biosampleId': 'HG00096', +> 'definitions': {'Location': {'chromosome': '1', +> 'end': 243620819, +> 'start': 243618689}}, +> 'id': 'refvar-6690160a3a936e8e0a7828e2', +> 'info': {'cnCount': 1, +> 'cnValue': 0.422353, +> 'legacyId': 'DRAGEN:LOSS:chr1:243618690-243620819'}, +> 'updated': '2024-07-11T17:26:27.265115', +> 'variantInternalId': 'chr1:243618689-243620819:EFO:0030068', +> 'variantState': {'id': 'EFO:0030068', 'label': 'low-level loss'}} +> ``` > > When sharing a Beacon protocol, it is important to provide users with read-only access to query the Beacon database. Creating read-only users for Beacon-providing institutions helps prevent unwanted data overwrites that can occur by mistake. > From 49863b233d4b59f650a075747335e057a8aa8f45 Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Thu, 26 Sep 2024 11:57:26 +0200 Subject: [PATCH 38/42] fix json ld failures cc #5362 --- topics/community/tutorials/sig_define/tutorial.md | 6 ++---- .../tutorials/tool-generators-advanced/tutorial.md | 10 ++++------ .../single-cell/tutorials/GO-enrichment/tutorial.md | 12 +++++------- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/topics/community/tutorials/sig_define/tutorial.md b/topics/community/tutorials/sig_define/tutorial.md index 73568c7f62110a..a1498195a27b8e 100644 --- a/topics/community/tutorials/sig_define/tutorial.md +++ b/topics/community/tutorials/sig_define/tutorial.md @@ -37,6 +37,8 @@ follow_up_training: - sig_create --- +In Galaxy, the term *[Special Interest Group](https://galaxyproject.org/community/sig)* (**SIG**) refers to a dedicated scientific community that crosses individual lab boundaries and wants to collaborate, share resources, support each other, and/or collectively advocate on a given theme. We have **SIGs** based on [**region**](https://galaxyproject.org/community/sig/#regional-communities), [**domain of science**](https://galaxyproject.org/community/sig/#communities-of-practice), and more. You might consider that a **SIG** covers any group of like-minded Galaxy enthusiasts not currently combined into a [**Working Group**](https://galaxyproject.org/community/wg/). + > > > In this tutorial, we will cover: @@ -46,10 +48,6 @@ follow_up_training: > {: .agenda} -# Special Interest Groups - -In Galaxy, the term *[Special Interest Group](https://galaxyproject.org/community/sig)* (**SIG**) refers to a dedicated scientific community that crosses individual lab boundaries and wants to collaborate, share resources, support each other, and/or collectively advocate on a given theme. We have **SIGs** based on [**region**](https://galaxyproject.org/community/sig/#regional-communities), [**domain of science**](https://galaxyproject.org/community/sig/#communities-of-practice), and more. You might consider that a **SIG** covers any group of like-minded Galaxy enthusiasts not currently combined into a [**Working Group**](https://galaxyproject.org/community/wg/). -
Person looking at a diagram with a central rectangle connected to many other nodes representing people and connections
You can find a directory of current [**SIGs** below](https://galaxyproject.org/community/sig/). diff --git a/topics/dev/tutorials/tool-generators-advanced/tutorial.md b/topics/dev/tutorials/tool-generators-advanced/tutorial.md index 1d33bba701100c..6c6bd0c8fa143b 100644 --- a/topics/dev/tutorials/tool-generators-advanced/tutorial.md +++ b/topics/dev/tutorials/tool-generators-advanced/tutorial.md @@ -51,6 +51,10 @@ recordings: --- +Galaxy users who write and share scripts useful for scientific analyses are likely to be reading this material, perhaps after seeing the "Hello Galaxy" +demonstration. It was written to help you find out about the capabilities and limits of the ToolFactory by experimenting with it yourself. +It is hoped that this advanced tutorial will introduce some features that potentially make the ToolFactory useful in your work. + > > > 1. TOC @@ -58,12 +62,6 @@ recordings: > {: .agenda} ---- - -Galaxy users who write and share scripts useful for scientific analyses are likely to be reading this material, perhaps after seeing the "Hello Galaxy" -demonstration. It was written to help you find out about the capabilities and limits of the ToolFactory by experimenting with it yourself. -It is hoped that this advanced tutorial will introduce some features that potentially make the ToolFactory useful in your work. - # Background and a user's guide to this training material This training material is unlike most other GTN tutorials. There is no specific tool building curriculum on offer because it is hard to know how diff --git a/topics/single-cell/tutorials/GO-enrichment/tutorial.md b/topics/single-cell/tutorials/GO-enrichment/tutorial.md index 94fa4ada897f6a..7fb0e6343736d9 100644 --- a/topics/single-cell/tutorials/GO-enrichment/tutorial.md +++ b/topics/single-cell/tutorials/GO-enrichment/tutorial.md @@ -37,6 +37,11 @@ contributors: - MennaGamal --- +In the tutorial [Filter, plot and explore single-cell RNA-seq data with Scanpy]({% link topics/single-cell/tutorials/scrna-case_basic-pipeline/tutorial.md %}), we took an important step in our single-cell RNA sequencing analysis by identifying marker genes for each of the clusters in our dataset. These marker genes are crucial, as they help us distinguish between different cell types and states, giving us a clearer picture of the cellular diversity within our samples. +However, simply identifying marker genes is just the beginning. To truly understand what makes each cluster unique, we need to dive deeper into the biological functions these genes are involved in. This is where Gene Ontology (GO) enrichment analysis comes into play. +We will perform GO enrichment analysis as a type of over-representation analysis (ORA), ORA is a statistical method that determines whether genes from pre-defined sets (e.g. genes belonging to a specific GO term) are expressed more than would be expected in a subset of your data. The most commonly used statistical tests are Fischer's exact test and hypergeometric test, more details about them are explained in the tutorial slides. + + > > > In this tutorial, we will cover: @@ -46,13 +51,6 @@ contributors: > {: .agenda} -# Introduction - -In the tutorial [Filter, plot and explore single-cell RNA-seq data with Scanpy]({% link topics/single-cell/tutorials/scrna-case_basic-pipeline/tutorial.md %}), we took an important step in our single-cell RNA sequencing analysis by identifying marker genes for each of the clusters in our dataset. These marker genes are crucial, as they help us distinguish between different cell types and states, giving us a clearer picture of the cellular diversity within our samples. -However, simply identifying marker genes is just the beginning. To truly understand what makes each cluster unique, we need to dive deeper into the biological functions these genes are involved in. This is where Gene Ontology (GO) enrichment analysis comes into play. -We will perform GO enrichment analysis as a type of over-representation analysis (ORA), ORA is a statistical method that determines whether genes from pre-defined sets (e.g. genes belonging to a specific GO term) are expressed more than would be expected in a subset of your data. The most commonly used statistical tests are Fischer's exact test and hypergeometric test, more details about them are explained in the tutorial slides. - - # Data description In this tutorial will use the following datasets: From 09065d7c6b48905aea99fbb51b96b093c68827ef Mon Sep 17 00:00:00 2001 From: Helena Rasche Date: Thu, 26 Sep 2024 11:58:01 +0200 Subject: [PATCH 39/42] bold unnecessary --- .../tutorials/secondary-metabolite-discovery/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/genome-annotation/tutorials/secondary-metabolite-discovery/tutorial.md b/topics/genome-annotation/tutorials/secondary-metabolite-discovery/tutorial.md index 0fde73815a8517..e8c441c4231fad 100644 --- a/topics/genome-annotation/tutorials/secondary-metabolite-discovery/tutorial.md +++ b/topics/genome-annotation/tutorials/secondary-metabolite-discovery/tutorial.md @@ -304,7 +304,7 @@ not have a header. {: .hands_on} -## **Remove duplicated molecules** +## Remove duplicated molecules > Remove duplicated molecules > From 5167733be076e5d7640c02fcdafe36866813f60d Mon Sep 17 00:00:00 2001 From: Wolfgang Maier Date: Thu, 26 Sep 2024 15:47:46 +0200 Subject: [PATCH 40/42] Update pangolin version used in SARS-CoV-2 variant discovery tutorial --- .../tutorials/sars-cov-2-variant-discovery/tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md b/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md index 62e8aa9d7bc89d..7e8b7d3cc43bad 100644 --- a/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md +++ b/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md @@ -266,7 +266,7 @@ Besides the sequenced reads data, we need at least two additional datasets for c > 1. {% tool [Upload](upload1) %} the reference to your history via the link above and make sure the dataset format is set to `fasta`. > > {% snippet faqs/galaxy/datasets_import_via_link.md format="fasta" %} -> 2. {% tool [Replace Text in entire line](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/1.1.2) in entire line %} to simplify the reference sequence name +> 2. {% tool [Replace Text in entire line](toolshed.g2.bx.psu.edu/repos/bgruening/text_processing/tp_replace_in_line/9.3+galaxy1) in entire line %} to simplify the reference sequence name > - {% icon param-file %} *"File to process"*: the uploaded reference sequence from the ENA > - In {% icon param-repeat %} *"1. Replacement"*: > - *"Find pattern"*: `^>.+` @@ -866,7 +866,7 @@ Pangolin (Phylogenetic Assignment of Named Global Outbreak LINeages) can be used > From consensus sequences to clade assignments using Pangolin > -> 1. {% tool [Pangolin](toolshed.g2.bx.psu.edu/repos/iuc/pangolin/pangolin/4.2+galaxy0) %} with the following parameters: +> 1. {% tool [Pangolin](toolshed.g2.bx.psu.edu/repos/iuc/pangolin/pangolin/4.3+galaxy2) %} with the following parameters: > - {% icon param-file %} *"Input FASTA File(s)"*: `Multisample consensus FASTA` > - *"Include header line in output file"*: `Yes` > From a874c93eaf36eecc42681d0fbbff493a861fb2be Mon Sep 17 00:00:00 2001 From: Wolfgang Maier Date: Thu, 26 Sep 2024 16:17:02 +0200 Subject: [PATCH 41/42] Remove link to outdated zenodo data This data was only used in a former version of the training --- .../tutorials/sars-cov-2-variant-discovery/tutorial.md | 1 - 1 file changed, 1 deletion(-) diff --git a/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md b/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md index 7e8b7d3cc43bad..e0dbc1ef54b58f 100644 --- a/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md +++ b/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md @@ -4,7 +4,6 @@ layout: tutorial_hands_on title: Mutation calling, viral genome reconstruction and lineage/clade assignment from SARS-CoV-2 sequencing data subtopic: one-health level: Intermediate -zenodo_link: "https://zenodo.org/record/5036687" questions: - How can a complete analysis, including viral consensus sequence reconstruction and lineage assignment be performed? - How can such an analysis be kept manageable for lots of samples, yet flexible enough to handle different types of input data? From 593c2f0ca128a86c82bbfc9f4b734f48fc20fd32 Mon Sep 17 00:00:00 2001 From: Wolfgang Maier Date: Thu, 26 Sep 2024 16:35:17 +0200 Subject: [PATCH 42/42] Point to updated data library folder --- .../tutorials/sars-cov-2-variant-discovery/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md b/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md index e0dbc1ef54b58f..c95849077f4a38 100644 --- a/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md +++ b/topics/variant-analysis/tutorials/sars-cov-2-variant-discovery/tutorial.md @@ -241,7 +241,7 @@ For the suggested batch of early Omicron data we suggest downloading it via URLs > > - Option 2: Import from a shared data library > -> {% snippet faqs/galaxy/datasets_import_from_data_library.md astype="as a Collection" collection_type="List of Pairs" collection_name="Sequencing data" tohistory="the history you created for this tutorial" path="GTN - Material / Variant analysis / Mutation calling, viral genome reconstruction and lineage/clade assignment from SARS-CoV-2 sequencing data / DOI: 10.5281/zenodo.5036686" box_type="none" %} +> {% snippet faqs/galaxy/datasets_import_from_data_library.md astype="as a Collection" collection_type="List of Pairs" collection_name="Sequencing data" tohistory="the history you created for this tutorial" path="GTN - Material / Variant analysis / Mutation calling, viral genome reconstruction and lineage/clade assignment from SARS-CoV-2 sequencing data / Omicron_batch_analysis" box_type="none" %} > {: .hands_on}