<!-- .slide: data-background="https://raw.githubusercontent.com/maxulysse/maxulysse.github.io/main/assets/img/svg/green_transparent_bg.svg" -->
# nf-core: a best-practice framework for creating Nextflow pipelines and sharing them with the community
<small>
Friederike Hanssen ▸ <a href="https://github.com/FriederikeHanssen" style="color:white;" ><i class="fa fa-github"></i> @FriederikeHanssen</a>
<a href="https://portal.qbic.uni-tuebingen.de/portal/" style="color:white;" >QBiC</a> ▸ Tübingen
Maxime U Garcia ▸ <a href="https://github.com/maxulysse" style="color:white;" ><i class="fa fa-github"></i> @maxulysse</a>
<a href="https://seqera.io/" style="color:white;" >Seqera Labs</a> ▸ Barcelona | Stockholm
ISCB/ECCB 2023 Tutorial IP7 : <a href="https://www.iscb.org/ismbeccb2023" style="color:white;" ><i class="fa fa-globe"></i> iscb.org/ismbeccb2023</a>
</small>
---
<!-- should be no longer than 30 min, ideally shorter -->
Session 1: Introduction to nf-core
Quick Nextflow intro: DSL language, Nextflow advantages (portability)
Overview of the nf-core community and for users and developers
How to use nf-core resources
---
<div class="my-section">
# Reproducibility
<img src="https://hackmd.io/_uploads/rkwlVh3I3.png" height="600px" />
</div>
---
<div class="my-section">
# Nextflow
Nextflow enables scalable and reproducible scientific workflows using software containers <...> on clouds and clusters.
</div>
<img src="https://github.com/nextflow-io/trademark/blob/8a986330d004c63b7f8582d091fdc78a0f639e52/nextflow2014_big.png">
---
<div class="my-section">
# Containers
</div>
---
<div class="my-section">
# Bioconda / Biocontainers
</div>
---
# Portability
---
<div class="my-section">
# What is nf-core?
A community effort to collect a curated set of Nextflow pipelines
</div>
---
<div class="my-section">
# Plan for the next 3 hours
🧑🏫 **Session 1**: Shared modules and subworkflows<!-- .element: class="fragment" -->
💻 **Practical session 1**: Test out nf-core/tools<!-- .element: class="fragment" -->
🧑🏫 **Session 2**: Use nf-core/tools to create a pipeline and add modules/subworkflows<!-- .element: class="fragment" -->
☕ **Coffee Break**<!-- .element: class="fragment" -->
💻 **Practical session 2**: Create an example pipeline with nf-core/tools<!-- .element: class="fragment" -->
</div>
---
# 🧑🏫 Session 2: Shared modules and subworkflows (15min)
---
<div class="my-section">
# Overview of a pipeline:

</div>
---
<div class="my-section">
# Module
🌯 Nextflow wrapper around a (single) tool<!-- .element: class="fragment" -->
👨👩👦👦 Community guidelines on how to build them:<!-- .element: class="fragment" -->
* Common structure enforced with template<!-- .element: class="fragment" -->
* CI tests on tiny test data on each change<!-- .element: class="fragment" -->
* Tools *should* be in bioconda<!-- .element: class="fragment" -->
📤 Very general, to be used in any pipeline<!-- .element: class="fragment" -->
* Configurable on a pipeline level<!-- .element: class="fragment" -->
🤝 Available at [nf-core/modules](https://github.com/nf-core/modules)
<!-- .element: class="fragment" -->
<!-- </div>
<div>
<img src="https://hackmd.io/_uploads/SkRQ6NjL2.png" style="float: right; width: 450px;"></img>
</div>
</div> -->
</div>
---
<div class="my-section">
# Subworkflows
Very similar to modules:
🪢 Combine modules together that are used together:<!-- .element: class="fragment" -->
* i.e. genomics quality control tools<!-- .element: class="fragment" -->
👨👩👦👦 Community guidelines<!-- .element: class="fragment" -->
🤝 Available at [nf-core/modules](https://github.com/nf-core/modules)
<!-- .element: class="fragment" -->
</div>
---
<div class="my-section">
# nf-core/tools
🧰 Python tool to interact with pipelines/modules/subworkflows
💻 For both: developers & users
📥 Install with `pip` or `conda`
</div>
---
<div class="my-section">
# Gitpod
Practical session 1:
Start up Gitpod, should be nf-core/modules? should come with everything pre-installed
*(Rike also needs an intro there :D ),
if we want them to create a simple new module then we need to either find a simple tool that is not in nf-core/modules or make a custom repo?, or we don't but rather want them to get an idea of the modules repo and refer to further tutorials on how to create modules yourself *
Try out nf-core/tools for listing modules, listing available pipelines and creating modules from a template.
</div>
---
<div class="my-section">
# 💻 Practical Session 1 (30min)
- Start GitPod:
- Has nf-core/tools pre-installed
- Try out nf-core/tools:
- list all available pipelines
- list all available modules
- create a module from the template
</div>
---
<div class="my-section">
# Start Gitpod
screen shot here
</div>
---
<div class="my-section">
# Try out nf-core/tools
List all pipelines:
```
nf-core pipelines list
```
List all modules:
```
nf-core modules list
```
<!-- TODO we need to pick an easy tool`: samtools faidx?-->
Create a new module from template:
```
nf-core modules create <todo: provide a tool>
```
</div>
---
<div class="my-section">
Walk through the modules template?
</div>
---
# 🧑🏫 Session 3: Create a pipeline from a template (30min)
---
Introduction to nf-core tools for creating a Nextflow pipeline from a template
modules/subworkflows
---
<div class="my-section">
# Coffee break (15min)

</div>
---
# 💻 Practical session 2: Create a pipeline from a template (2h)
---
- Create a new pipeline using the nf-core template
- Expand pipeline with tools in nf-core modules
- Run with simple test-data
- Expand pipeline with a subworkflow from nf-core modules
---
Feedback survey: [google.forms](https://docs.google.com/forms/d/e/1FAIpQLSf_0RTzbDDMYLoB6sshSJ_uKtbTrC1xESEknfIexsdboh7lHA/viewform)
---
<h2 style="color:black;">Need help?</p>
<!-- .slide: data-background="https://raw.githubusercontent.com/maxulysse/maxulysse.github.io/main/assets/img/svg/green_white_bg.svg" -->
<a href="https://nf-co.re/join"><img src="https://upload.wikimedia.org/wikipedia/commons/d/d5/Slack_icon_2019.svg" class="endslide_logo"></a> <a href="https://www.twitter.com/nf_core"><i class="fa fa-twitter endslide_logo"></i></a> <a href="https://mstdn.science/@nf_core"><img src="https://upload.wikimedia.org/wikipedia/commons/d/d5/Mastodon_logotype_%28simple%29_new_hue.svg" class="endslide_logo"></a> <a href="https://github.com/nf-core"><img src="https://upload.wikimedia.org/wikipedia/commons/c/c2/GitHub_Invertocat_Logo.svg" class="endslide_logo"></a> <a href="https://www.youtube.com/c/nf-core"><img src="https://upload.wikimedia.org/wikipedia/commons/0/09/YouTube_full-color_icon_%282017%29.svg" class="endslide_logo"></a>
<br>
<a href="https://nf-co.re/" style="color:black;" class="endslide_link" >https://nf-co.re/</a>
<br>
<img src="https://chanzuckerberg.com/wp-content/themes/czi/img/logo.svg">
---
<style>
.my-section {
text-align: left;
}
.my-section img {
display: block;
margin: 0 auto;
}
body {
background-image: url(https://raw.githubusercontent.com/nf-core/logos/master/nf-core-logos/nf-core-logo-square.svg);
background-size: 7.5%;
background-repeat: no-repeat;
background-position: 3% 96%;
background-color: #181a1b;
}
.reveal body {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal h1 {
font-family: 'Roboto', sans-serif;
font-style: bold;
font-weight: 600;
color: white;
font-size: 62px;
}
.reveal h2 {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal h3 {
font-family: 'Roboto', sans-serif;
font-style: italic;
font-weight: 300;
color: white;
}
.reveal p {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal li {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal pre {
background-color: #272822 !important;
display: inline-block;
border-radius: 7px;
color: #aaaba9;
}
.reveal pre code {
color: #eeeeee;
background-color: #272822;
font-size: 100%;
}
.reveal code {
background-color: #272822;
font-size: 75%;
}
.reveal .progress {
color: #24B064;
}
.reveal .controls button {
color: #24B064;
}
.reveal blockquote {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
padding: 5px;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgb(0 0 0 / 20%);
}
.multi-column{
display: grid;
grid-auto-flow: column;
}
.endslide_link {
font-family:Monaco, monospace;
font-weight:bold;
}
.endslide_logo {
width: 10%;
}
</style>
{"metaMigratedAt":"2023-06-18T05:25:41.158Z","metaMigratedFrom":"YAML","title":"ISCB/ECCB 2023 Tutorial","breaks":true,"contributors":"[{\"id\":\"2aeca590-9d00-4b4f-a58a-620945456c9f\",\"add\":8767,\"del\":3965},{\"id\":\"fb193497-1111-470c-a594-827d34b6f673\",\"add\":4200,\"del\":0}]"}