SlideShare a Scribd company logo
Phil Ewels, Gisela Gabernet, Rike Hanssen
Contributing to nf-core
Last updated March 2022
Documentation
Slack workspace
Hackathons
Twitter updates
Starter template
Code guidelines
Helper tools
CI code linting
and tests
Stable pipelines
Centralised
configs
Download
for offline use
List and update
pipelines
What is nf-core?
Participate
Develop
Deploy
Contribution guidelines
Cooperate, don’t duplicate
One pipeline per analysis type, contribute
by adding new tools, new features…
Develop with the community
Join slack, communicate and
contribute together to a pipeline
https://nf-co.re/usage/tutorials/nf_core_contributing_overview
2 Creating
3 Testing
4 Modules
5 Releasing
1 Installation
Tutorial
Installation
Helper tools
pip install nf-core
conda install -c bioconda nf-core
Helper tools
nf-core --help
Helper tools
nf-core list
Creating pipelines 01
0110
0001
01101
nf-core create
Template
nf-core create
Template
Template
Template
├── CHANGELOG.md
├── CITATIONS.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── assets
│ ├── ...
├── bin
│ └── ...
├── conf
│ ├── ...
├── docs
│ ├── ...
├── lib
│ ├── ...
├── main.nf
├── modules
│ ├── local
│ └── nf-core
├── modules.json
├── nextflow.config
├── nextflow_schema.json
├── subworkflows
│ └── local
└── workflows
└── pipeline.nf
• 12 directories
• 32 files
• + > 40 hidden files
Template
├── CHANGELOG.md
├── CITATIONS.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── assets
│ ├── ...
├── bin
│ └── ...
├── conf
│ ├── ...
├── docs
│ ├── ...
├── lib
│ ├── ...
├── main.nf
├── modules
│ ├── local
│ └── nf-core
├── modules.json
├── nextflow.config
├── nextflow_schema.json
├── subworkflows
│ └── local
└── workflows
└── pipeline.nf
Nextflow code
DSL2 brings modularity
A pipeline can contain:
• modules
• subworkflows
• workflows
Template
├── CHANGELOG.md
├── CITATIONS.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── assets
│ ├── ...
├── bin
│ └── ...
├── conf
│ ├── ...
├── docs
│ ├── ...
├── lib
│ ├── NfcoreSchema.groovy
│ ├── NfcoreTemplate.groovy
│ ├── Utils.groovy
│ ├── pipeline.groovy
│ ├── WorkflowMain.groovy
│ └── nfcore_external_java_deps.jar
├── main.nf
├── modules
├── modules.json
├── nextflow.config
├── nextflow_schema.json
├── subworkflows
└── workflows
Groovy classes and
functions used by the
pipeline
Template
├── CHANGELOG.md
├── CITATIONS.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── assets
│ ├── email_template.html
│ ├── email_template.txt
│ ├── multiqc_config.yaml
│ ├── nf-core-pipeline_logo.png
│ ├── samplesheet.csv
│ ├── schema_input.json
│ └── sendmail_template.txt
├── bin
│ └── check_samplesheet.py
├── conf
│ ├── ...
├── docs
│ ├── ...
├── lib
├── main.nf
├── modules
├── modules.json
├── nextflow.config
├── nextflow_schema.json
├── subworkflows
└── workflows
bin/
• Executable scripts
• Added to the path by
Nextflow
assets/
• Email template
• MultiQC config
• Pipeline logo
• Input file schema
Template
├── CHANGELOG.md
├── CITATIONS.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── assets
│ ├── ...
├── bin
│ └── ...
├── conf
│ ├── ...
├── docs
│ ├── README.md
│ ├── images
│ ├── output.md
│ └── usage.md
├── lib
├── main.nf
├── modules
├── modules.json
├── nextflow.config
├── nextflow_schema.json
├── subworkflows
└── workflows
Documentation
• rendered on the website
Template
├── CHANGELOG.md
├── CITATIONS.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── assets
│ ├── ...
├── bin
│ └── ...
├── conf
│ ├── ...
├── docs
│ ├── README.md
│ ├── images
│ ├── output.md
│ └── usage.md
├── lib
├── main.nf
├── modules
├── modules.json
├── nextflow.config
├── nextflow_schema.json
├── subworkflows
└── workflows
Parameter documentation
• rendered from json
nf-core schema build
Template
├── CHANGELOG.md
├── CITATIONS.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── assets
│ ├── ...
├── bin
│ └── ...
├── conf
│ ├── base.config
│ ├── igenomes.config
│ ├── modules.config
│ ├── test.config
│ └── test_full.config
├── docs
│ ├── ...
├── lib
├── main.nf
├── modules
├── modules.json
├── nextflow.config
├── nextflow_schema.json
├── subworkflows
└── workflows
Configuration
nextflow.config imports:
+
Template
├── CHANGELOG.md
├── CITATIONS.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── assets
│ ├── ...
├── bin
│ └── ...
├── conf
│ ├── base.config
│ ├── igenomes.config
│ ├── modules.config
│ ├── test.config
│ └── test_full.config
├── docs
│ ├── ...
├── lib
├── main.nf
├── modules
├── modules.json
├── nextflow.config
├── nextflow_schema.json
├── subworkflows
└── workflows
Configuration
nextflow.config imports:
Test profile
Full test profile
Run with GitHub actions:
Template
├── .editorconfig
├── .github
│ ├── .dockstore.yml
│ ├── CONTRIBUTING.md
│ ├── ISSUE_TEMPLATE
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ └── feature_request.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows
│ ├── awsfulltest.yml
│ ├── awstest.yml
│ ├── branch.yml
│ ├── ci.yml
│ ├── linting.yml
│ └── linting_comment.yml
├── .gitignore
├── .markdownlint.yml
the hidden files:
GitHub actions workflows
• AWS full pipeline tests
• AWS pipeline tests
• Branch protection
• CI tests
• Linting tests
• Linting comment
Template
Forks & branches
Forks & branches
Branch Merge
Forks & branches
@ewels
@nf-core
Fork
Forks & branches
Pull Request
Merge
dev
master
TEMPLATE
Forks & branches
dev
master
TEMPLATE
Forks & branches
Stable releases only
dev
master
TEMPLATE
Forks & branches
Used by @nf-core-bot
to keep in sync
dev
master
TEMPLATE
Forks & branches
All development code
(and all pull requests)
Forks & branches
PRs must be against the dev branch
Changelog must be updated
PRs need to be reviewed
REMEMBER!
Testing pipelines
Lint tests
nf-core lint
Lint tests
nf-core lint .
https://nf-co.re/errors
nextflow run nf-core/rnaseq -profile test,docker
Test data
Test data
Make a new branch for your pipeline
Add a really (really!) tiny dataset
Set up the test config to use raw URLs
Exercises 2, 3
Exercise 2 (creating pipelines)
• Make a new pipeline using the template
• Update the readme file to fill in
the TODO statements
• Add a new process to the pipeline
in main.nf
• Add the new software dependencies from
this process in to environment.yaml
Exercise 3 (testing pipelines)
• Run nf-core lint on your pipeline and
make note of any test warnings / failures
• Read up on one or two of the linting rules
on the nf-core website and see if you can
fix some.
• Take a look at conf/test.config and
switch the test data for another dataset
on nf-core/test_data
nf-core modules
modules
nf-core modules --help
modules
nf-core modules list
modules
modules
nf-core modules install
modules
nf-core modules create
Exercise 4
Exercise 4 (modules)
• Use the pipeline you created in Exercise 2 and add an
already existing nf-core module (e.g. trimgalore).
• Connect the module to the main pipeline workflow.
Releasing pipelines
First release
https://nf-co.re/developers/adding_pipelines
Tell us about it: #new-pipelines
Join the @nf-core organisation
Fork your repo to nf-core
Set up Zenodo
First release
https://nf-co.re/developers/adding_pipelines
Community review: "Pseudo PR"
Open PR from dev to master
Make sure that all tests are passing
Create release on GitHub
Version numbers
Semantic versioning: 1.4.3
Major - results not backwards compatible
Minor - new feature(s)
Patch - bug fix
nf-core bump-version 1.4.3
nf-core bump-version --nextflow 19.07.0
Help!
https://nf-co.re/join
Template updates
Exercise 5
Exercise 5 (releasing pipelines)
• Use nf-core bump-version to update the required version of Nextflow in your pipeline
• Bump your pipeline's version to 1.0, ready for its first release!
• Make sure that you're signed up to the nf-core slack (https://nf-co.re/join) and drop us a line
about your latest and greatest pipeline plans!
• Ask to be a member of the nf-core GitHub organisation by commenting on this GitHub issue:
https://github.com/nf-core/nf-co.re/issues/3
• If you're a twitter user, make sure to follow the @nf_core twitter account
Ad

More Related Content

What's hot (20)

DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best Practices
Docker, Inc.
 
Docker for Java developers at JavaLand
Docker for Java developers at JavaLandDocker for Java developers at JavaLand
Docker for Java developers at JavaLand
Johan Janssen
 
Docker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHPDocker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHP
Chris Tankersley
 
Kernel Recipes 2016 - The kernel report
Kernel Recipes 2016 - The kernel reportKernel Recipes 2016 - The kernel report
Kernel Recipes 2016 - The kernel report
Anne Nicolas
 
Upgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleetUpgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleet
Davide Cavalca
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
Jules Pierre-Louis
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
Fabio Kung
 
PHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding stylePHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding style
Bo-Yi Wu
 
MPL: modular pipeline library - Dynamic Talks Milwaukee 4/11/2019
MPL: modular pipeline library - Dynamic Talks Milwaukee 4/11/2019MPL: modular pipeline library - Dynamic Talks Milwaukee 4/11/2019
MPL: modular pipeline library - Dynamic Talks Milwaukee 4/11/2019
Grid Dynamics
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
ericlongtx
 
Deployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails WorldDeployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails World
Nikhil Mungel
 
Select, manage, and backport the long term stable kernels
Select, manage, and backport the long term stable kernelsSelect, manage, and backport the long term stable kernels
Select, manage, and backport the long term stable kernels
SZ Lin
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2
Michal Ziarnik
 
Kyua and Jenkins: Testing Framework for BSD
Kyua and Jenkins: Testing Framework for BSDKyua and Jenkins: Testing Framework for BSD
Kyua and Jenkins: Testing Framework for BSD
Craig Rodrigues
 
Composer
ComposerComposer
Composer
Nils Adermann
 
Deploying .NET applications with the Nix package manager
Deploying .NET applications with the Nix package managerDeploying .NET applications with the Nix package manager
Deploying .NET applications with the Nix package manager
Sander van der Burg
 
OPNFV Arno Installation and Validation Walk Through
OPNFV Arno Installation and Validation Walk ThroughOPNFV Arno Installation and Validation Walk Through
OPNFV Arno Installation and Validation Walk Through
OPNFV
 
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp
 
Composer (PHP Usergroup Karlsruhe)
Composer (PHP Usergroup Karlsruhe)Composer (PHP Usergroup Karlsruhe)
Composer (PHP Usergroup Karlsruhe)
Nils Adermann
 
What is the merge window?
What is the merge window?What is the merge window?
What is the merge window?
Macpaul Lin
 
DCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best PracticesDCSF19 Dockerfile Best Practices
DCSF19 Dockerfile Best Practices
Docker, Inc.
 
Docker for Java developers at JavaLand
Docker for Java developers at JavaLandDocker for Java developers at JavaLand
Docker for Java developers at JavaLand
Johan Janssen
 
Docker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHPDocker for Developers - Sunshine PHP
Docker for Developers - Sunshine PHP
Chris Tankersley
 
Kernel Recipes 2016 - The kernel report
Kernel Recipes 2016 - The kernel reportKernel Recipes 2016 - The kernel report
Kernel Recipes 2016 - The kernel report
Anne Nicolas
 
Upgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleetUpgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleet
Davide Cavalca
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
Jules Pierre-Louis
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
Fabio Kung
 
PHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding stylePHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding style
Bo-Yi Wu
 
MPL: modular pipeline library - Dynamic Talks Milwaukee 4/11/2019
MPL: modular pipeline library - Dynamic Talks Milwaukee 4/11/2019MPL: modular pipeline library - Dynamic Talks Milwaukee 4/11/2019
MPL: modular pipeline library - Dynamic Talks Milwaukee 4/11/2019
Grid Dynamics
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
ericlongtx
 
Deployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails WorldDeployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails World
Nikhil Mungel
 
Select, manage, and backport the long term stable kernels
Select, manage, and backport the long term stable kernelsSelect, manage, and backport the long term stable kernels
Select, manage, and backport the long term stable kernels
SZ Lin
 
Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2Pipeline as code - new feature in Jenkins 2
Pipeline as code - new feature in Jenkins 2
Michal Ziarnik
 
Kyua and Jenkins: Testing Framework for BSD
Kyua and Jenkins: Testing Framework for BSDKyua and Jenkins: Testing Framework for BSD
Kyua and Jenkins: Testing Framework for BSD
Craig Rodrigues
 
Deploying .NET applications with the Nix package manager
Deploying .NET applications with the Nix package managerDeploying .NET applications with the Nix package manager
Deploying .NET applications with the Nix package manager
Sander van der Burg
 
OPNFV Arno Installation and Validation Walk Through
OPNFV Arno Installation and Validation Walk ThroughOPNFV Arno Installation and Validation Walk Through
OPNFV Arno Installation and Validation Walk Through
OPNFV
 
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devsITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp 2013 - Alessandro Pilotti - Git crash course for Visual Studio devs
ITCamp
 
Composer (PHP Usergroup Karlsruhe)
Composer (PHP Usergroup Karlsruhe)Composer (PHP Usergroup Karlsruhe)
Composer (PHP Usergroup Karlsruhe)
Nils Adermann
 
What is the merge window?
What is the merge window?What is the merge window?
What is the merge window?
Macpaul Lin
 

Similar to Tutorial contributing to nf-core (20)

Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Pantheon
 
Digital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meeting
Henry Schreiner
 
The Popper Experimentation Protocol and CLI tool
The Popper Experimentation Protocol and CLI toolThe Popper Experimentation Protocol and CLI tool
The Popper Experimentation Protocol and CLI tool
Ivo Jimenez
 
Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024
Henry Schreiner
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)
Peter Bittner
 
Collaboration With Git and GitHub
Collaboration With Git and GitHubCollaboration With Git and GitHub
Collaboration With Git and GitHub
Alec Clews
 
Infrastructure as Code for Network
Infrastructure as Code for NetworkInfrastructure as Code for Network
Infrastructure as Code for Network
Damien Garros
 
When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?
Niklas Heidloff
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Max Romanovsky
 
Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023
Henry Schreiner
 
Deploying to DigitalOcean With GitHub Actions
Deploying to DigitalOcean With GitHub ActionsDeploying to DigitalOcean With GitHub Actions
Deploying to DigitalOcean With GitHub Actions
DigitalOcean
 
Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?
AFUP_Limoges
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 
Heroku
HerokuHeroku
Heroku
Bhagwat Kumar
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
EatDog
 
Intermediate git
Intermediate gitIntermediate git
Intermediate git
Dan Shrader
 
Don't Fear the Autotools
Don't Fear the AutotoolsDon't Fear the Autotools
Don't Fear the Autotools
Scott Garman
 
Before & After Docker Init
Before & After Docker InitBefore & After Docker Init
Before & After Docker Init
Angel Borroy López
 
Software development practices in python
Software development practices in pythonSoftware development practices in python
Software development practices in python
Jimmy Lai
 
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Evgeniy Kuzmin
 
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Pantheon
 
Digital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meeting
Henry Schreiner
 
The Popper Experimentation Protocol and CLI tool
The Popper Experimentation Protocol and CLI toolThe Popper Experimentation Protocol and CLI tool
The Popper Experimentation Protocol and CLI tool
Ivo Jimenez
 
Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024
Henry Schreiner
 
Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)Avoid the Vendor Lock-in Trap (with App Deployment)
Avoid the Vendor Lock-in Trap (with App Deployment)
Peter Bittner
 
Collaboration With Git and GitHub
Collaboration With Git and GitHubCollaboration With Git and GitHub
Collaboration With Git and GitHub
Alec Clews
 
Infrastructure as Code for Network
Infrastructure as Code for NetworkInfrastructure as Code for Network
Infrastructure as Code for Network
Damien Garros
 
When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?
Niklas Heidloff
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Max Romanovsky
 
Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023
Henry Schreiner
 
Deploying to DigitalOcean With GitHub Actions
Deploying to DigitalOcean With GitHub ActionsDeploying to DigitalOcean With GitHub Actions
Deploying to DigitalOcean With GitHub Actions
DigitalOcean
 
Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?
AFUP_Limoges
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
EatDog
 
Intermediate git
Intermediate gitIntermediate git
Intermediate git
Dan Shrader
 
Don't Fear the Autotools
Don't Fear the AutotoolsDon't Fear the Autotools
Don't Fear the Autotools
Scott Garman
 
Software development practices in python
Software development practices in pythonSoftware development practices in python
Software development practices in python
Jimmy Lai
 
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Evgeniy Kuzmin
 
Ad

Recently uploaded (20)

Metamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative JourneyMetamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative Journey
Arshad Shaikh
 
Geography Sem II Unit 1C Correlation of Geography with other school subjects
Geography Sem II Unit 1C Correlation of Geography with other school subjectsGeography Sem II Unit 1C Correlation of Geography with other school subjects
Geography Sem II Unit 1C Correlation of Geography with other school subjects
ProfDrShaikhImran
 
SPRING FESTIVITIES - UK AND USA -
SPRING FESTIVITIES - UK AND USA            -SPRING FESTIVITIES - UK AND USA            -
SPRING FESTIVITIES - UK AND USA -
Colégio Santa Teresinha
 
Quality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdfQuality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdf
Dr. Bindiya Chauhan
 
How to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of saleHow to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of sale
Celine George
 
Social Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy StudentsSocial Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy Students
DrNidhiAgarwal
 
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
larencebapu132
 
To study Digestive system of insect.pptx
To study Digestive system of insect.pptxTo study Digestive system of insect.pptx
To study Digestive system of insect.pptx
Arshad Shaikh
 
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdfBiophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
PKLI-Institute of Nursing and Allied Health Sciences Lahore , Pakistan.
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptxSCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
Ronisha Das
 
How to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odooHow to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odoo
Celine George
 
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Library Association of Ireland
 
Unit 6_Introduction_Phishing_Password Cracking.pdf
Unit 6_Introduction_Phishing_Password Cracking.pdfUnit 6_Introduction_Phishing_Password Cracking.pdf
Unit 6_Introduction_Phishing_Password Cracking.pdf
KanchanPatil34
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
How to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POSHow to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POS
Celine George
 
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public SchoolsK12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
dogden2
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...
Sandeep Swamy
 
Metamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative JourneyMetamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative Journey
Arshad Shaikh
 
Geography Sem II Unit 1C Correlation of Geography with other school subjects
Geography Sem II Unit 1C Correlation of Geography with other school subjectsGeography Sem II Unit 1C Correlation of Geography with other school subjects
Geography Sem II Unit 1C Correlation of Geography with other school subjects
ProfDrShaikhImran
 
Quality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdfQuality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdf
Dr. Bindiya Chauhan
 
How to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of saleHow to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of sale
Celine George
 
Social Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy StudentsSocial Problem-Unemployment .pptx notes for Physiotherapy Students
Social Problem-Unemployment .pptx notes for Physiotherapy Students
DrNidhiAgarwal
 
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
larencebapu132
 
To study Digestive system of insect.pptx
To study Digestive system of insect.pptxTo study Digestive system of insect.pptx
To study Digestive system of insect.pptx
Arshad Shaikh
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptxSCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
SCI BIZ TECH QUIZ (OPEN) PRELIMS XTASY 2025.pptx
Ronisha Das
 
How to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odooHow to Set warnings for invoicing specific customers in odoo
How to Set warnings for invoicing specific customers in odoo
Celine George
 
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Library Association of Ireland
 
Unit 6_Introduction_Phishing_Password Cracking.pdf
Unit 6_Introduction_Phishing_Password Cracking.pdfUnit 6_Introduction_Phishing_Password Cracking.pdf
Unit 6_Introduction_Phishing_Password Cracking.pdf
KanchanPatil34
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
How to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POSHow to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POS
Celine George
 
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public SchoolsK12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
dogden2
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...The ever evoilving world of science /7th class science curiosity /samyans aca...
The ever evoilving world of science /7th class science curiosity /samyans aca...
Sandeep Swamy
 
Ad

Tutorial contributing to nf-core

  • 1. Phil Ewels, Gisela Gabernet, Rike Hanssen Contributing to nf-core Last updated March 2022
  • 2. Documentation Slack workspace Hackathons Twitter updates Starter template Code guidelines Helper tools CI code linting and tests Stable pipelines Centralised configs Download for offline use List and update pipelines What is nf-core? Participate Develop Deploy
  • 3. Contribution guidelines Cooperate, don’t duplicate One pipeline per analysis type, contribute by adding new tools, new features… Develop with the community Join slack, communicate and contribute together to a pipeline
  • 6. Helper tools pip install nf-core conda install -c bioconda nf-core
  • 14. Template ├── CHANGELOG.md ├── CITATIONS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets │ ├── ... ├── bin │ └── ... ├── conf │ ├── ... ├── docs │ ├── ... ├── lib │ ├── ... ├── main.nf ├── modules │ ├── local │ └── nf-core ├── modules.json ├── nextflow.config ├── nextflow_schema.json ├── subworkflows │ └── local └── workflows └── pipeline.nf • 12 directories • 32 files • + > 40 hidden files Template
  • 15. ├── CHANGELOG.md ├── CITATIONS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets │ ├── ... ├── bin │ └── ... ├── conf │ ├── ... ├── docs │ ├── ... ├── lib │ ├── ... ├── main.nf ├── modules │ ├── local │ └── nf-core ├── modules.json ├── nextflow.config ├── nextflow_schema.json ├── subworkflows │ └── local └── workflows └── pipeline.nf Nextflow code DSL2 brings modularity A pipeline can contain: • modules • subworkflows • workflows Template
  • 16. ├── CHANGELOG.md ├── CITATIONS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets │ ├── ... ├── bin │ └── ... ├── conf │ ├── ... ├── docs │ ├── ... ├── lib │ ├── NfcoreSchema.groovy │ ├── NfcoreTemplate.groovy │ ├── Utils.groovy │ ├── pipeline.groovy │ ├── WorkflowMain.groovy │ └── nfcore_external_java_deps.jar ├── main.nf ├── modules ├── modules.json ├── nextflow.config ├── nextflow_schema.json ├── subworkflows └── workflows Groovy classes and functions used by the pipeline Template
  • 17. ├── CHANGELOG.md ├── CITATIONS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets │ ├── email_template.html │ ├── email_template.txt │ ├── multiqc_config.yaml │ ├── nf-core-pipeline_logo.png │ ├── samplesheet.csv │ ├── schema_input.json │ └── sendmail_template.txt ├── bin │ └── check_samplesheet.py ├── conf │ ├── ... ├── docs │ ├── ... ├── lib ├── main.nf ├── modules ├── modules.json ├── nextflow.config ├── nextflow_schema.json ├── subworkflows └── workflows bin/ • Executable scripts • Added to the path by Nextflow assets/ • Email template • MultiQC config • Pipeline logo • Input file schema Template
  • 18. ├── CHANGELOG.md ├── CITATIONS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets │ ├── ... ├── bin │ └── ... ├── conf │ ├── ... ├── docs │ ├── README.md │ ├── images │ ├── output.md │ └── usage.md ├── lib ├── main.nf ├── modules ├── modules.json ├── nextflow.config ├── nextflow_schema.json ├── subworkflows └── workflows Documentation • rendered on the website Template
  • 19. ├── CHANGELOG.md ├── CITATIONS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets │ ├── ... ├── bin │ └── ... ├── conf │ ├── ... ├── docs │ ├── README.md │ ├── images │ ├── output.md │ └── usage.md ├── lib ├── main.nf ├── modules ├── modules.json ├── nextflow.config ├── nextflow_schema.json ├── subworkflows └── workflows Parameter documentation • rendered from json nf-core schema build Template
  • 20. ├── CHANGELOG.md ├── CITATIONS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets │ ├── ... ├── bin │ └── ... ├── conf │ ├── base.config │ ├── igenomes.config │ ├── modules.config │ ├── test.config │ └── test_full.config ├── docs │ ├── ... ├── lib ├── main.nf ├── modules ├── modules.json ├── nextflow.config ├── nextflow_schema.json ├── subworkflows └── workflows Configuration nextflow.config imports: + Template
  • 21. ├── CHANGELOG.md ├── CITATIONS.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── assets │ ├── ... ├── bin │ └── ... ├── conf │ ├── base.config │ ├── igenomes.config │ ├── modules.config │ ├── test.config │ └── test_full.config ├── docs │ ├── ... ├── lib ├── main.nf ├── modules ├── modules.json ├── nextflow.config ├── nextflow_schema.json ├── subworkflows └── workflows Configuration nextflow.config imports: Test profile Full test profile Run with GitHub actions: Template
  • 22. ├── .editorconfig ├── .github │ ├── .dockstore.yml │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows │ ├── awsfulltest.yml │ ├── awstest.yml │ ├── branch.yml │ ├── ci.yml │ ├── linting.yml │ └── linting_comment.yml ├── .gitignore ├── .markdownlint.yml the hidden files: GitHub actions workflows • AWS full pipeline tests • AWS pipeline tests • Branch protection • CI tests • Linting tests • Linting comment Template
  • 26. Forks & branches Pull Request Merge
  • 29. dev master TEMPLATE Forks & branches Used by @nf-core-bot to keep in sync
  • 30. dev master TEMPLATE Forks & branches All development code (and all pull requests)
  • 31. Forks & branches PRs must be against the dev branch Changelog must be updated PRs need to be reviewed REMEMBER!
  • 34. Lint tests nf-core lint . https://nf-co.re/errors
  • 35. nextflow run nf-core/rnaseq -profile test,docker Test data
  • 36. Test data Make a new branch for your pipeline Add a really (really!) tiny dataset Set up the test config to use raw URLs
  • 37. Exercises 2, 3 Exercise 2 (creating pipelines) • Make a new pipeline using the template • Update the readme file to fill in the TODO statements • Add a new process to the pipeline in main.nf • Add the new software dependencies from this process in to environment.yaml Exercise 3 (testing pipelines) • Run nf-core lint on your pipeline and make note of any test warnings / failures • Read up on one or two of the linting rules on the nf-core website and see if you can fix some. • Take a look at conf/test.config and switch the test data for another dataset on nf-core/test_data
  • 44. Exercise 4 Exercise 4 (modules) • Use the pipeline you created in Exercise 2 and add an already existing nf-core module (e.g. trimgalore). • Connect the module to the main pipeline workflow.
  • 46. First release https://nf-co.re/developers/adding_pipelines Tell us about it: #new-pipelines Join the @nf-core organisation Fork your repo to nf-core Set up Zenodo
  • 47. First release https://nf-co.re/developers/adding_pipelines Community review: "Pseudo PR" Open PR from dev to master Make sure that all tests are passing Create release on GitHub
  • 48. Version numbers Semantic versioning: 1.4.3 Major - results not backwards compatible Minor - new feature(s) Patch - bug fix nf-core bump-version 1.4.3 nf-core bump-version --nextflow 19.07.0
  • 51. Exercise 5 Exercise 5 (releasing pipelines) • Use nf-core bump-version to update the required version of Nextflow in your pipeline • Bump your pipeline's version to 1.0, ready for its first release! • Make sure that you're signed up to the nf-core slack (https://nf-co.re/join) and drop us a line about your latest and greatest pipeline plans! • Ask to be a member of the nf-core GitHub organisation by commenting on this GitHub issue: https://github.com/nf-core/nf-co.re/issues/3 • If you're a twitter user, make sure to follow the @nf_core twitter account