-
Notifications
You must be signed in to change notification settings - Fork 933
/
Copy pathtutorial_hands_on.html
561 lines (491 loc) · 31.7 KB
/
tutorial_hands_on.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
---
layout: base
---
{% comment %}
TODO(hexylena) someday resolve the duplication of topic_material, own_material, and new_material.
We should ONLY be using new_material (if at all possible.)
{% endcomment %}
{% assign topic = site.data[page.topic_name] %}
{% assign contributors = site.data['contributors'] %}
{% assign topic_material = site | topic_filter:page.topic_name %}
{% assign language = site.other_languages %}
{% assign intro_link = false %}
{% assign intro_target = "" %}
{% assign associated_slides = false %}
{% assign own_material = null %}
{% for material in topic_material %}
{% if material.draft != "true" or jekyll.environment != "production" %}
{% if material.tutorial_name == page.tutorial_name %}
{% assign own_material = material %}
{% if material.slides %}
{% assign associated_slides = true %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
{% assign new_material = site | fetch_tutorial_material:page.topic_name, page.tutorial_name %}
<!-- Gitter -->
{% if page.gitter %}
{% assign gitter = page.gitter %}
{% elsif topic.gitter %}
{% assign gitter = topic.gitter %}
{% else %}
{% assign gitter = site.gitter_url %}
{% endif %}
{% assign locale = site.data.lang[page.lang] %}
{% if topic.custom_css %}
<style>
{{ topic.custom_css }}
</style>
{% endif %}
<article class="tutorial topic-{{ page.topic_name }}">
<h1 data-toc-skip>{{ page.title }}</h1>
{% if page.draft %}
<div class="alert alert-warning" role="alert">
<h4 class="alert-heading">Under Development!</h4>
<p>This tutorial is not in its final state. The content may change a lot in the next months.
Because of this status, it is also not listed in the topic pages.</p>
</div>
{% endif %}
<section aria-labelledby="overview-box" id="tutorial-metadata">
{% include _includes/contributors-line.html page=page %}
<blockquote class="overview">
<div id="overview-box" class="box-title">{{ locale['overview'] | default: "Overview"}}</div>
{% unless page.license %}
<img alt="Creative Commons License: CC-BY" class="float-right" style="border-width:0; display: inline-block; margin:0" src="{% link assets/images/cc-by.png %}" width="88" height="31"/>
{% endunless %}
<strong>{% icon question aria=false %} {{ locale['questions'] | default: "Questions" }}:</strong>
<ul>
{% for question in page.questions %}
<li>{{ question | markdownify }}</li>
{% endfor %}
</ul>
<strong>{% icon objectives aria=false %} {{ locale['objectives'] | default: "Objectives" }}: </strong>
<ul>
{% for objective in page.objectives %}
<li>{{ objective | markdownify }}</li>
{% endfor %}
</ul>
{% if topic.requirements or page.requirements %}
<strong>{% icon requirements aria=false %} {{ locale['requirements'] | default: "Requirements"}}:</strong>
<ul>
{% include _includes/display_extra_training.md extra_trainings=topic.requirements %}
{% include _includes/display_extra_training.md extra_trainings=page.requirements %}
</ul>
{% endif %}
{% if page.time_estimation %}
<div><strong>{% icon time aria=false %} {{ locale['time-estimation'] | default: "Time estimation"}}:</strong> {{ page.time_estimation | duration_to_human }}</div>
{% endif %}
{% if page.level %}
<div><strong>{% icon level aria=false %} {{ locale['level'] | default: "Level"}}: </strong>
{% include _includes/difficulty-indicator.html level=page.level textlabel=true %}</div>
{% endif %}
{% if own_material.supported_servers or topic.docker_image %}
{% assign tuto_has_docker = true %}
{% endif %}
{% if own_material.zenodo_link and own_material.zenodo_link != "" %}
{% assign tuto_has_zenodo = true %}
{% endif %}
<div id="supporting-materials"><strong><i class="fa fa-external-link" aria-hidden="true"></i> {{ locale['supporting-materials'] | default: "Supporting Materials" }}:</strong></div>
<ul class="supporting_material">
{% if associated_slides %}
<li class="btn btn-default"><a href="{{ site.baseurl }}/topics/{{ topic.name }}/tutorials/{{ page.tutorial_name }}/slides.html" title="Slides for this tutorial">
{% icon slides aria=false %} {{ locale['slides'] | default: "Slides"}}
</a></li>
{% elsif intro_link %}
<li class="btn btn-default supporting_material"><a href="{{ site.baseurl }}/topics/{{ topic.name }}/slides/{{ intro_target }}" title="Topic Overview slides">
{% icon slides aria=false %} Topic Overview slides
</a></li>
{% endif %}
{% if tuto_has_zenodo %}
<li class="btn btn-default supporting_material">{% include _includes/resource-zenodo.html material=own_material topic=topic.name label=true %}</li>
{% endif %}
{% if own_material.workflows %}
<li class="btn btn-default supporting_material">{% include _includes/resource-workflows.html material=own_material topic=topic.name label=true %}</li>
{% endif %}
{% if own_material.tours %}
<li class="btn btn-default supporting_material">{% include _includes/resource-tours.html material=own_material topic=topic.name label=true %}</li>
{% endif %}
{% if own_material.input_histories %}
<li class="btn btn-default supporting_material">{% include _includes/resource-input-histories.html material=own_material topic=topic.name label=true %}</li>
{% endif %}
{% if own_material.answer_histories %}
<li class="btn btn-default supporting_material">{% include _includes/resource-answer-histories.html material=own_material topic=topic.name label=true %}</li>
{% endif %}
{% if own_material.notebook %}
<li class="btn btn-default supporting_material">{% include _includes/resource-notebooks.html material=own_material topic=topic.name label=true %}</li>
{% endif %}
{% assign faqpage = page.dir | append: 'faqs/index.md' | remove_first: '/' %}
{% capture hasfaq %}{% file_exists {{faqpage}} %}{% endcapture %}
{% if hasfaq == "true" %}
<li class="btn btn-default supporting_material">{% include _includes/resource-faqs.html material=own_material topic=topic.name %}</li>
{% endif %}
<!-- Check the GTN Video Library for recordings of this tutorial or associated slides -->
{% include _includes/resource-recordings.html label=true wrapper=true %}
{% if tuto_has_docker %}
{% if topic.type == 'use' or topic.type == 'basics' %}
<li class="btn btn-default supporting_material">{% include _includes/instance-dropdown.html material=own_material docker=topic.docker_image label=true %}</li>
{% endif %}
{% endif %}
</ul>
<div><strong>{% icon last_modification aria=false %} {{ locale['published'] | default: "Published" }}:</strong> {{ page | gtn_pub_date | date: "%b %-d, %Y"}} </div>
<div><strong>{% icon last_modification aria=false %} {{ locale['last-modification'] | default: "Last modification" }}:</strong> {{ page | last_modified_at | date: "%b %-d, %Y"}} </div>
<div><strong>{% icon license aria=false %} {{ locale['license'] | default: "License" }}:</strong>
{% if page.copyright %}
{{ page.copyright }}.
{% endif %}
{{ locale['license-framework'] | default: "Tutorial Content is licensed under" }}
{% if page.license %}
<a rel="license" href="https://spdx.org/licenses/{{ page.license }}">{{ page.license }}</a>.
{% else %}
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
{% endif %}
The GTN Framework is licensed under <a rel="license" href="{{ site.github_repository }}/blob/main/LICENSE.md">MIT</a>
</div>
{% if page.short_id %}
<div><strong>{% icon purl %} <abbr title="Persistent URL">PURL</abbr>:</strong> <a href="https://gxy.io/GTN:{{ page.short_id }}">https://gxy.io/GTN:{{ page.short_id }}</a> </div>
{% endif %}
{% assign own_material_id = own_material.id %}
{% if page.lang %}
{% capture own_material_id %}{{ own_material.id }}:{{ page.lang }}{% endcapture %}
{% endif %}
{% assign feedback_count = site | get_feedback_count: own_material_id %}
{% if feedback_count > 0 %}
<div><strong>{% icon rating %} Rating:</strong> <a href="#feedback-responses">{{ site | get_rating_recent:own_material_id }}</a> ({{ site | get_feedback_count_recent: own_material_id }} recent ratings, {{ feedback_count }} all time)</div>
{% endif %}
<div><strong>{% icon version %} Revision:</strong> {{ page | get_version_number }} </div>
</blockquote>
</section>
<div class="container">
<div class="row">
<!-- sidebar, which will move to the top on a small screen -->
<div class="col-sm-2 hide-when-printing">
<nav id="toc" data-toggle="toc" class="sticky-top" aria-label="Table of Contents"></nav>
</div>
<div class="col-sm-10">
{% if own_material.notebook %}
<section aria-label="Tutorial Notebook access information" id="tutorial-notebook">
{% capture ipynbpath %}{{ site.url }}{{ site.baseurl }}/{{ page.path | replace: "tutorial.md", "" }}{{ page.topic_name }}-{{ own_material.tutorial_name }}.ipynb{% endcapture %}
{% capture ipynbpathnosoln %}{{ site.url }}{{ site.baseurl }}/{{ page.path | replace: "tutorial.md", "" }}{{ page.topic_name }}-{{ own_material.tutorial_name }}-course.ipynb{% endcapture %}
{% capture ipynbpathsimple %}{{ page.topic_name }}-{{ own_material.tutorial_name }}.ipynb{% endcapture %}
{% capture ipynbpathsimplenosoln %}{{ page.topic_name }}-{{ own_material.tutorial_name }}-course.ipynb{% endcapture %}
{% if own_material.notebook.snippet %}
{% assign pagesnippet = own_material.notebook.snippet %}
{% snippet {{own_material.notebook.snippet}} %}
{% elsif own_material.notebook.language == "r" %}
<blockquote class="comment">
<div class="box-title">{{locale['best-in-rstudio'] | default: "Best viewed in RStudio" }}</div>
<p>
This tutorial is available as an RMarkdown file and best viewed in RStudio! You can load this notebook in RStudio on one of the UseGalaxy.* servers<!--, or you can click to run it in MyBinder-->
</p>
<p><b>Launching the notebook in RStudio in Galaxy</b></p>
<ol>
<li><a href="{% link faqs/galaxy/interactive_tools_rstudio_launch.md %}">Instructions to Launch RStudio</a></li>
<li>Access the R console in RStudio (bottom left quarter of the screen)</li>
<li>Run the following code:
{% capture howtodownload %}
```R
download.file("{{ site.url }}{{ site.baseurl }}/{{ page.path | replace: "tutorial.md", ""}}{{ page.topic_name }}-{{ own_material.tutorial_name }}.Rmd", "{{ page.topic_name }}-{{ own_material.tutorial_name }}.Rmd")
download.file("{{ site.url }}{{ site.baseurl }}/assets/css/r-notebook.css", "gtn.css"){% if page.cited %}
download.file("{{ site.url }}{{ site.baseurl }}/{{ page.path | replace: ".md", ".bib"}}", "{{ page.topic_name }}-{{ own_material.tutorial_name }}.bib"){% endif %}
```
{% endcapture %}
{{ howtodownload | markdownify }}
</li>
<li>Double click the RMarkdown document that appears in the list of files on the right.</li>
</ol>
<p><b>Downloading the notebook</b></p>
<ol>
<li>Right click this link: <a href="{{ site.url }}{{ site.baseurl }}/{{ page.path | replace: "tutorial.md", ""}}{{ page.topic_name }}-{{ own_material.tutorial_name }}.Rmd">tutorial.Rmd</a></li>
<li>Save Link As...</li>
</ol>
<p><b>Alternative Formats</b></p>
<ol>
<li>This tutorial is also available as a <a href="{{ ipynbpath }}">Jupyter Notebook (With Solutions)</a>, <a href="{{ ipynbpathnosoln }}">Jupyter Notebook (Without Solutions)</a></li>
</ol>
</blockquote>
{% snippet faqs/galaxy/interactive_tools_rstudio_rmarkdown.md %}
{% else %}
<blockquote class="comment">
<div class="box-title">{{locale['best-in-jupyter'] | default: "Best viewed in a Jupyter Notebook" }}</div>
<p>
This tutorial is best viewed in a Jupyter notebook! You can load this notebook one of the following ways<!--, or you can click to run it in MyBinder-->
</p>
<!--
<p><b>Launching on MyBinder</b>
Click here and the notebook will launch on MyBinder.org
<a href="https://mybinder.org/v2/gh/galaxyproject/training-material/main?filepath={{ site.baseurl | replace: '/','' }}%2F{{ page.path | replace: '/','%2F' }}.ipynb" title="Launch notebook on MyBinder"><img src="https://mybinder.org/badge_logo.svg" alt="My Binder Logo"/></a>
</p>
-->
{% if page.notebook.pyolite %}
<p><b>Run on the GTN with JupyterLite (in-browser computations)</b>
<ol>
<li><a href="{{ site.baseurl }}/jupyter/lab/index.html?path={{ ipynbpathsimple }}">Click to Launch JupyterLite</a></li>
</ol>
</p>
{% endif %}
<p><b>Launching the notebook in Jupyter in Galaxy</b>
<ol>
<li><a href="{% link faqs/galaxy/interactive_tools_jupyter_launch.md %}">Instructions to Launch JupyterLab</a></li>
<li>Open a Terminal in JupyterLab with <b>File -> New -> Terminal</b></li>
<li>Run <code>wget {{ ipynbpath }}</code></li>
<li>Select the notebook that appears in the list of files on the left.</li>
</ol>
</p>
<p><b>Downloading the notebook</b>
<ol>
<li>Right click one of these links: <a href="{{ ipynbpath }}">Jupyter Notebook (With Solutions)</a>, <a href="{{ ipynbpathnosoln }}">Jupyter Notebook (Without Solutions)</a></li>
<li>Save Link As..</li>
</ol>
</p>
</blockquote>
{% endif %}
</section>
{% endif %}
<section aria-label="Tutorial Content" id="tutorial-content">
{{ content
| replace: '<blockquote class="hands_on">', '<blockquote class="notranslate hands_on">'
}}
</section>
<section aria-label="Tutorial Footer, Feedback, Citation" id="tutorial-footer">
<h3>You've Finished the Tutorial</h3>
<button id="tutorial-finish-button" class="btn btn-primary" onclick="tutorial_finish()">I finished this tutorial 👍</button>
<p style="display: none" id="tutorial-finish-text">Please also consider filling out the <a href="#gtn-feedback">Feedback Form</a> as well!</p>
<script>
function tutorial_finish() {
if(typeof plausible !== 'undefined'){
// Plausible may be undefined (script blocked)
// or it may be defined, but opted-out (select box/DNT),
// which means `plausible()` will work but not send data, *nor* execute the callback.
plausible('TutorialComplete', {props: {path: document.location.pathname}})
}
// since the callback is completely cosmetic, we'll just issue it optimistically.
tutorial_finish_finish();
}
function tutorial_finish_finish() {
document.getElementById("tutorial-finish-button").innerText = 'Congrats! Thanks for letting us know! 🎉'
document.getElementById("tutorial-finish-button").disabled = true
document.getElementById("tutorial-finish-button").disabled = true
document.getElementById("tutorial-finish-text").style.display = 'block'
}
</script>
{% if page.key_points %}
<blockquote class="key_points">
<div class="box-title">{% icon keypoints aria=false %} {{locale['key-points'] | default: "Key points" }}</div>
<ul>
{% for key_point in page.key_points %}
<li>{{ key_point | markdownify }}</li>
{% endfor %}
</ul>
</blockquote>
{% endif %}
<h1>{{ locale['faqs'] | default: "Frequently Asked Questions" }}</h1>
Have questions about this tutorial? Check out the {% if hasfaq == "true" %}<a href="faqs/">tutorial FAQ page</a> or the {% endif %} <a href="{{site.baseurl}}/topics/{{topic.name}}/faqs/">FAQ page for the {{topic.title}} topic</a> to see if your question is listed there.
If not, please ask your question on the <a href="{{site.gitter_url}}">GTN Gitter Channel</a> or the
<a href="https://help.galaxyproject.org">Galaxy Help Forum</a>
<!--
{% if own_material.quiz %}
<h1 data-toc-skip>Quizzes</h1>
<p>Check your understanding with these quizzes</p>
{% for q in own_material.quiz %}
<h2>{{ q.title }}</h2>
<div class="contributors-line">{% include _includes/contributor-list.html contributors=q.contributors badge=true %}</div>
<ul>
<li>
<a href="{% link quiz/quiz.html %}?mode=self&quiz={{ site.baseurl }}/{{ q.path }}">Self Study Mode</a> - do the quiz at your own pace, to check your understanding.
</li>
<li>
<a href="{% link quiz/quiz.html %}?mode=teacher&quiz={{ site.baseurl }}/{{ q.path }}">Classroom Mode</a> - do the quiz synchronously with a classroom of students.
</li>
</ul>
{% endfor %}
{% endif %}
-->
{% if topic.references %}
<h1 data-toc-skip>Useful literature</h1>
<p>Further information, including links to documentation and original publications, regarding the tools, analysis techniques and the interpretation of results described in this tutorial can be found <a href="{{ site.baseurl }}/topics/{{ topic.name }}#references">here</a>.</p>
{% endif %}
{% if page.cited %}
<h1 id="bibliography">{{locale['references']| default: "References" }}</h1>
{% bibliography --cited %}
{% endif %}
{% if page.abbreviations %}
<h1 data-toc-skip>{{ locale['glossary'] | default: "Glossary"}}</h1>
<dl>
{% assign sorted_abbrs = page.abbreviations | sort %}
{% for abbr in sorted_abbrs %}
<dt>{{ abbr[0] }}</dt>
<dd>{{ abbr[1] }}</dd>
{% endfor %}
</dl>
{% endif %}
<h1 id="gtn-feedback">{{locale['feedback'] | default: "Feedback" }}</h1>
<p class="text-muted">{{ locale['feedback-text'] | default: "Did you use this material as an instructor? Feel free to give us feedback on"}} <a href="https://github.com/galaxyproject/training-material/issues/1452">{{ locale['feedback-link-text'] | default: "how it went"}}</a>.
<br>{{ locale['feedback-text-learner'] | default: "Did you use this material as a learner or student? Click the form below to leave feedback." }}<i class="fas fa-hand-point-down"></i>
</p>
<iframe id="feedback-google" class="google-form" src="https://docs.google.com/forms/d/e/1FAIpQLSd4VZptFTQ03kHkMz0JyW9b6_S8geU5KjNE_tLM0dixT3ZQmA/viewform?embedded=true&entry.1235803833={{ own_material_id }}"><a href="https://docs.google.com/forms/d/e/1FAIpQLSd4VZptFTQ03kHkMz0JyW9b6_S8geU5KjNE_tLM0dixT3ZQmA/viewform?embedded=true&entry.1235803833={{ own_material_id }}">Feedback Form</a></iframe>
<h1>{{locale['citing-tutorial'] | default: "Citing this Tutorial"}}</h1>
<p>
<ol>
<li id="citation-text">
{% assign c = page.contributions.authorship | default: page.contributors %}
{%- include _includes/contributor-list.html contributors=c sep=", " -%}, {{ page.last_modified_at | date: "%Y" }} <b>{{ page.title }} (Galaxy Training Materials)</b>. <a href="{{ site.url }}{{ site.baseurl }}{{page.url}}">{{ site.url }}{{ site.baseurl }}{{page.url}}</a> Online; accessed TODAY
</li>
<li>
Hiltemann, Saskia, Rasche, Helena et al., 2023 <b>Galaxy Training: A Powerful Framework for Teaching!</b> PLOS Computational Biology <a href="https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1010752">10.1371/journal.pcbi.1010752</a>
</li>
<li>
Batut et al., 2018 <b>Community-Driven Data Analysis Training for Biology</b> Cell Systems <a href="https://doi.org/10.1016%2Fj.cels.2018.05.012">10.1016/j.cels.2018.05.012</a>
</li>
</ol>
</p>
<!-- collapsible boxcontaining the BibTeX-formatted citation -->
<blockquote class="details">
<div id="citation-bibtex" class="box-title">
<button type="button" aria-controls="citation-bibtex" aria-expanded="false">
<i class="fas fa-info-circle" aria-hidden="true"></i>
<span class="visually-hidden"></span> BibTeX<span role="button" class="fold-unfold fa fa-minus-square" aria-hidden="true"></span>
</button>
</div>
<p style="display: none;">
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight">
<code id="citation-code">@misc{% raw %}{{% endraw %}{{topic.name}}-{{page.tutorial_name}},
{% assign authors = page | filter_authors -%}
author = "{%- include _includes/contributor-list.html contributors=authors sep=" and " -%}",
title = "{{ page.title }} (Galaxy Training Materials)",
year = "{{ page.last_modified_at | date: "%Y"}}",
month = "{{ page.last_modified_at | date: "%m"}}",
day = "{{ page.last_modified_at | date: "%d" }}",
url = "{% raw %}\url{{% endraw %}{{ site.url }}{{ site.baseurl }}{{page.url}}{% raw %}}{% endraw %}",
note = "[Online; accessed TODAY]"
}
@article{Hiltemann_2023,
doi = {10.1371/journal.pcbi.1010752},
url = {https://doi.org/10.1371%2Fjournal.pcbi.1010752},
year = 2023,
month = {jan},
publisher = {Public Library of Science ({PLoS})},
volume = {19},
number = {1},
pages = {e1010752},
author = {Saskia Hiltemann and Helena Rasche and Simon Gladman and Hans-Rudolf Hotz and Delphine Larivi{\`{e}}re and Daniel Blankenberg and Pratik D. Jagtap and Thomas Wollmann and Anthony Bretaudeau and Nadia Gou{\'{e}} and Timothy J. Griffin and Coline Royaux and Yvan Le Bras and Subina Mehta and Anna Syme and Frederik Coppens and Bert Droesbeke and Nicola Soranzo and Wendi Bacon and Fotis Psomopoulos and Crist{\'{o}}bal Gallardo-Alba and John Davis and Melanie Christine Föll and Matthias Fahrner and Maria A. Doyle and Beatriz Serrano-Solano and Anne Claire Fouilloux and Peter van Heusden and Wolfgang Maier and Dave Clements and Florian Heyl and Björn Grüning and B{\'{e}}r{\'{e}}nice Batut and},
editor = {Francis Ouellette},
title = {Galaxy Training: A powerful framework for teaching!},
journal = {PLoS Comput Biol}
}
</code>
</pre></div></div>
</p>
</blockquote>
{% if page.contributions and page.contributions.funding %}
<h2 id="funding">{{locale['references']| default: "Funding" }}</h2>
<p>These individuals or organisations provided funding support for the development of this resource</p>
{% include _includes/funding-statement.md funders=page.contributions.funding %}
{% endif %}
<script>
// update the date on load, or leave fallback of 'today'
const citationTodaysDate = new Date();
document.getElementById("citation-code").innerHTML = document.getElementById("citation-code").innerHTML.replace("TODAY", citationTodaysDate.toDateString());
document.getElementById("citation-text").innerHTML = document.getElementById("citation-text").innerHTML.replace("TODAY", citationTodaysDate.toDateString());
</script>
{% icon congratulations aria=false %} {{locale['congrats'] | default: "Congratulations on successfully completing this tutorial!"}}
{% if topic.name == "contributing" %}
<blockquote class="agenda">
<div class="box-title">Developing GTN training material</div>
This tutorial is part of a series to develop GTN training material, feel free to also look at:
{% assign topic = site.data[page.topic_name] %}
<ol>
{% for material in topic_material %}
{% if material.draft != true or jekyll.environment != "production" %}
{% if material.hands_on %}
<li><a href="{{ site.baseurl }}/topics/{{ topic.name }}/tutorials/{{ material.tutorial_name }}/tutorial.html">{{ material.title }}</a></li>
{% elsif material.slides %}
<li><a href="{{ site.baseurl }}/topics/{{ topic.name }}/tutorials/{{ material.tutorial_name }}/slides.html">{{ material.title }}</a></li>
{% endif %}
{% endif %}
{% endfor %}
</ol>
</blockquote>
{% endif %}
{% if page.follow_up_training %}
<blockquote class="agenda follow-up">
<div class="box-title">Go Further</div>
<strong class="follow-up">{% icon curriculum aria=false %} Do you want to extend your knowledge? Follow one of our recommended follow-up trainings:</strong>
<ul>
{% include _includes/display_extra_training.md extra_trainings=page.follow_up_training %}
</ul>
</blockquote>
{% endif %}
{% if own_material.tools %}
<blockquote class="details follow-up" id="admins-install-missing-tools">
<div id="admin-missing-tools" class="box-title">
<button type="button" aria-controls="admin-missing-tools" aria-expanded="false">
<i class="fas fa-info-circle" aria-hidden="true"></i>
<span class="visually-hidden"></span> Galaxy Administrators: Install the missing tools<span role="button" class="fold-unfold fa fa-minus-square" aria-hidden="true"></span>
</button>
</div>
<p>You can use Ephemeris's <code>shed-tools install</code> command to install the tools used in this tutorial.</p>
<div class="highlight"><pre class="highlight"><code>shed-tools install [-g GALAXY] [-a API_KEY] -t <(curl {{ own_material.api }} | jq .admin_install_yaml -r)</code></pre></div>
<p>Alternatively you can copy and paste the following YAML</p>
<div class="highlight"><pre class="highlight"><code>{{ own_material.admin_install_yaml }}</code></pre></div>
</blockquote>
{% endif %}
<blockquote class="details hide-when-printing" id="feedback-responses">
<div id="feedback-response-c" class="box-title">
<button type="button" aria-controls="feedback-response-c" aria-expanded="false">
<i class="fas fa-info-circle" aria-hidden="true"></i>
<span class="visually-hidden"></span> Feedback<span role="button" class="fold-unfold fa fa-minus-square" aria-hidden="true"></span>
</button>
</div>
<p>
{% assign feedback_histo = site | get_rating_histogram_chart:own_material_id %}
<table class="charts-css bar show-labels" style="--labels-size: 8rem; overflow-y: hidden">
{% for hist in feedback_histo %}
<tr>
<th scope="row">{{ hist[0] | to_stars }}</th>
<td style="--size: {{ hist[1][1] }}">{{ hist[1][0] }}</td>
</tr>
{% endfor %}
</table>
</p>
{% assign feedbacks = site | get_recent_feedbacks:own_material_id %}
{% comment %} Uncomment to debug feedback size: <p>Feedbacks Count: {{ feedbacks.size }}</p> {% endcomment %}
{% if feedbacks.size > 0 %}
{% for feedback in feedbacks %}
<b>{{ feedback[0] }}</b>
<ul>
{% for feed in feedback[1] %}
<li>
{{ feed.rating | to_stars }}:
{% if feed.pro %}<b>Liked</b>: {{ feed.pro }}{% endif %}
{% if feed.con %}<b>Disliked</b>: {{ feed.con }}{% endif %}
</li>
{% endfor %}
</ul>
{% endfor %}
{% else %}
<p>No feedback has been recieved yet for this training. Be the first one by filling in the feedback form from <a href="#gtn-feedback">above</a>. </p>
{% endif %}
</blockquote>
{% assign upcoming_events = site | get_upcoming_events_for_this: new_material %}
{% assign upcoming_event_count = upcoming_events | size %}
{% if upcoming_event_count > 0 %}
<blockquote class="details hide-when-printing" id="upcoming-events">
<div id="upcoming-events-c" class="box-title">
<button type="button" aria-controls="upcoming-events-c" aria-expanded="false">
<i class="fas fa-calendar" aria-hidden="true"></i>
Upcoming events which cover this topic<span role="button" class="fold-unfold fa fa-minus-square" aria-hidden="true"></span>
</button>
</div>
<p>Want to learn more with a live instructor? Check out these upcoming events:</p>
{% include _includes/event-table.html events=upcoming_events campaign="via-tutorial" %}
</blockquote>
{% endif %}
</section>
</div>
</div>
</div>
</article>
<br/>
<br/>
<br/>