From f61003497ea6a7e938722c302d9ed299471e566d Mon Sep 17 00:00:00 2001 From: Gerard Capes Date: Wed, 26 Jan 2022 14:39:07 +0000 Subject: [PATCH 1/2] Consolidate links Also clobber trailing whitespace. --- _episodes/04-reusing_tools.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/_episodes/04-reusing_tools.md b/_episodes/04-reusing_tools.md index 29cb376..601f490 100644 --- a/_episodes/04-reusing_tools.md +++ b/_episodes/04-reusing_tools.md @@ -12,7 +12,7 @@ keypoints: ## Pre-written tool descriptions When you start a CWL workflow, it is recommended to check if there is already a CWL document available for the tools you want to use. -[Bio-cwl-tools](https://github.com/common-workflow-library/bio-cwl-tools) is a library of CWL documents for biology/life-sciences related tools. +[Bio-cwl-tools][bio-cwl-tools] is a library of CWL documents for biology/life-sciences related tools. The CWL documents of the previous steps were already provided for you, however, you can also find them in this library. In this episode you will use the bio-cwl-tools library to add the last step to the workflow. @@ -22,11 +22,11 @@ The last step of our workflow is counting the RNA-seq reads for which we will us > ## Exercise > -> Find the `featureCounts` tool in the [bio-cwl-tools library](https://github.com/common-workflow-library/bio-cwl-tools). +> Find the `featureCounts` tool in the [bio-cwl-tools library][bio-cwl-tools]. > Have a look at the CWL document. Which inputs does this tool need? And what are the outputs of this tool? > > > ## Solution -> > The `featureCounts` CWL document can be found at https://github.com/common-workflow-library/bio-cwl-tools/blob/release/subread/featureCounts.cwl ; it has 2 inputs: `annotations` (line 6) and `mapped_reads`, both files. These inputs can be found on lines 6 and 9. +> > The `featureCounts` CWL document can be found in the [GitHub repo][featurecounts-cwl]; it has 2 inputs: `annotations` (line 6) and `mapped_reads`, both files. These inputs can be found on lines 6 and 9. > > The output of this tool is a file called `featurecounts` (line 21). > > > {: .solution} @@ -140,4 +140,8 @@ cwltool rna_seq_workflow.cwl workflow_input.yml ~~~ {: .language-bash} +[bio-cwl-tools]: https://github.com/common-workflow-library/bio-cwl-tools +[featurecounts-cwl]: https://github.com/common-workflow-library/bio-cwl-tools/blob/release/subread/featureCounts.cwl + {% include links.md %} + From 834bb2725894a7dee215544d225c8ec26ccca8ba Mon Sep 17 00:00:00 2001 From: Gerard Capes Date: Wed, 26 Jan 2022 14:50:54 +0000 Subject: [PATCH 2/2] Use git submodule rather than downloading from GitHub Fix #67. --- _episodes/04-reusing_tools.md | 20 ++++++-------------- fig/GitHub_featureCounts.png | Bin 18029 -> 0 bytes 2 files changed, 6 insertions(+), 14 deletions(-) delete mode 100644 fig/GitHub_featureCounts.png diff --git a/_episodes/04-reusing_tools.md b/_episodes/04-reusing_tools.md index 601f490..f7d47f7 100644 --- a/_episodes/04-reusing_tools.md +++ b/_episodes/04-reusing_tools.md @@ -33,23 +33,15 @@ The last step of our workflow is counting the RNA-seq reads for which we will us {: .challenge} {% include links.md %} -After finding the `featureCounts` tool, we need to download the tool to the directory in which our workflow is located. -To download the tool, we go to the `featureCounts.cwl` GitHub page and open the raw file. -The screenshot below shows where you can find this button. +We need a local copy of `featureCounts` in order to use it in our workflow. +We already imported this as a git submodule during setup, +so the tool should be located at `bio-cwl-tools/subreads/featureCounts.cwl`. -![]({{page.root}}/fig/GitHub_featureCounts.png) - -There are two approaches to download the CWL document. -1. Copy the script to a new file in an editor, for example VSCode, and save the document in your directory. -2. Use the `wget` command in the command line. You need to copy the URL of the raw file and use this command: -``` -wget [URL] -``` -{: .language-bash} > ## Exercise -> Use either of the two approaches above to download the `featureCounts` tool and add the `featureCounts` tool to the workflow. -> Similar to the `STAR` tool, this tool also needs more RAM than the default. To run the tool a minimum of 500 MiB of RAM is needed. +> Add the `featureCounts` tool to the workflow. +> Similar to the `STAR` tool, this tool also needs more RAM than the default. +> To run the tool a minimum of 500 MiB of RAM is needed. > Use a `requirements` entry with `ResourceRequirement` to allocate a `ramMin` of 500. > Use the inputs and output of the previous exercise to connect this step to previous steps. > diff --git a/fig/GitHub_featureCounts.png b/fig/GitHub_featureCounts.png deleted file mode 100644 index 94c93e29bb840327bc207ff65d01ba11bbd1524c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18029 zcmcJ%2{@Zw*FUNQZMCXT6)i0tsVdqMYVL%Z=Xq+Yro=o25jv@-6fHHyOwE#*A|yn$ zRi!l#AraA?K^y!XXj3<8{+WJ*SAHUa*j>ib!ZfS<4gLdq{v(#gRxs6E(l>N5}1MKTr@ z2+sNa#O1>i@3VWo4jTGI<|hc}S}ch<3gT71$;2CsXwZ~5Sf@k>Vte<>c94+XSp+)>%*)^)7iNaznqT1TpR6-WhjclUy_4F*P?0{+LzZ0w~tl)zxidNo) zI@3zJ@a`<1$@dK}s_Rj57i6`H`(CoDC)jkPkB}+f~9BKR%h944O_Xsjw&GfZ}AUBaWB``~ACJ>g5tZ~_HGSbX;9L;sF<(ru9I3HMQ>5D4A(2E zJn#I3ZE0IgKqXiPm?@#&##-97>|5x)W+%y*o*TibtF*&ffOFiy+NhH8aL$>Ov&v6= z_on=;*7D^c@PJyRbGMaXBrCD!#oGdB##nzEecoYeIFV)d}ef3VfnQvz~j3g1QxmK9Wpv2V^6Zrzo6jZr&QQ3 zKH8$=O$3{DNJ+!mzX2zn9fhBW%uzvuN^K-d#l_CSx|6MHLE0%^?s&#LkU|%kJoIz ztBIK*2d)2kjQ#m4EKoGie$e?PH+WT*8pBVs?nVcBRg9= zgfyD5_|1q$x_ZiJWJpA21puTpM==~FG|C&RqN7Uqw>OMsoHpKDA=qXWinPA^rYBuF zs|ku*F7dn!TCI3tSSNnvEtbB7Cc!0zX0fhfX=n>$8y1K$nvpZOq6XfvNS{2{=%B8- ztWI-9kDOp9CEsRjsG@D|nII>7mWxT%x-Odq5*;h5#q(=BJ;r||)5TkAzBC?LsL*uE z=iXjIZgwG;h9+C0zUC;ox@9+ZeM#IJZw6Z`0*lMaa#4Mb$G^i|Q^<`EquufqtfQhr zlW4Z@ypgJ+02@Ee9i>e;r;#_8UavBG(XOq})Xd=MITfdmFADB=DhJtUNuuY!zp=8T zbAa%T*<0*Ytor8drP9<$lrx za&g_c?@_v1Is^Ij=$(Y^Y;ZCUHZJ6yrsy^I6;y;Fzxt#m@?43pQ?XgOY{HIa;6EbS zTSwVj!&!F1m6u;Hxjf3qa$q-PX)IX!bd%tp!Z zyG1HCqS&KqBC?>trmdadKG2nMG<<9B2;@&=W#x4!%0D?EWT|iY{;(ZI@r@&~eD;}! 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 vCI2pV`FDxcf60{mzrXV2ztf5S=Jr0s#hdom8