Aller au contenu

2. Getting started

The nf-core pipeline template is a standardized framework designed to streamline the development of Nextflow-based bioinformatics pipelines.

Creating a pipeline using the nf-core template is greatly simplified by the nf-core tooling. It will help you create a pipeline using the set framework that can be modified to suit your own purposes.

Here, you will use the nf-core template to kickstart your pipeline development using the latest version of Nextflow and the nf-core tooling.

2.1 Creating your pipeline

nf-core tooling has commands for pipeline users and developers.

You can view all of the tooling using the --help argument.

nf-core --help

Here we will focus on the tooling to assist pipeline developers, starting with the nf-core create command.

2.1.1 nf-core create

The nf-core create command makes a new pipeline using the nf-core base template with a pipeline name, description, and author. It is the first and most important step for creating a pipeline that will integrate with the wider Nextflow ecosystem.

nf-core create

When executing this command you will be given a series of prompts to setup your pipeline.

? Workflow name <name>
? Description <description>
? Author <name>
? Do you want to customize which parts of the template are used? (y/N) <n>

If the command has run successfully, you will see a new folder in your current directory.

Exercise

Create a pipeline named mypipeline using the nf-core create command.

Note

If run successfully you will see a new folder in your current directory that has been given the name nf-core-mypipeline.

2.1.2 Customizing the template

The nf-core pipeline comes packed with features. However, you may not want to include all of these in your pipeline.

Instead of manually removing these features once the template has been created, you can customize certain areas of the template as it is being created.

The following template areas can be customized:

  • GitHub hosting: Files required for GitHub hosting of the pipeline, e.g., .github/ and .gitignore.
  • GitHub CI: Files required for GitHub continuous integration tests, e.g., .github/workflows/.
  • GitHub badges: GitHub badges in the README.md file.
  • iGenomes config: Pipeline options related to iGenomes, e.g., conf/igenomes.config.
  • nf-core/configs: Repository options that integrate nf-core config profiles.

If you choose to customize the template, the nf-core tooling will provide a series of interactive prompts to help guide your choices.

? Workflow name <name>
? Description <description>
? Author <name>
? Do you want to customize which parts of the template are used? (y/N) <y>
? Pipeline prefix <organisation>
Skip template areas?
    GitHub hosting
    GitHub CI
    GitHub badges
    iGenomes config
    nf-core/configs

Note

GitHub badges were skipped in the example above.

2.1.3 Submit your code to GitHub

The nf-core create command suggests commands for submitting your pipeline to GitHub.

You will first need to create an empty repository on GitHub for your template to be pushed to.

When you are logged into GitHub, you can use the green New repository button in the top right hand corner of the webpage or navigate to https://github.com/new and follow the prompts to make a new repository.

GitHub new repo

Once you have created the repository you can use git to push your template to GitHub.

cd /workspace/gitpod/nf-develop/nf-core-mypipeline
git remote add origin https://github.com/<USERNAME>/<REPO>.git
git push --all origin

https vs ssh

When using Gitpod you must use https not ssh when adding your remote:

For example, you should use:

git remote add origin https://github.com/<USERNAME>/<REPO>.git

Not:

git remote add origin git@github.com:<USERNAME>/<REPO>.git

By default, three branches will all be pushed to GitHub using the commands above.

remote: Resolving deltas: 100% (10/10), done.
To https://github.com/<USERNAME>/myfirstpipeline.git
 * [new branch]      TEMPLATE -> TEMPLATE
 * [new branch]      dev -> dev
 * [new branch]      main -> main

The role each of these branches have in pipeline development will be explained in subsequent sections.

Exercise

Create a new GitHub repository named myfirstpipeline and push your new pipeline using the commands above. You will need to replace <USERNAME> and <REPO> with your GitHub username and myfirstpipeline, respectively.

2.2 Template tour

The nf-core pipeline template comes packed with a lot of files and folders.

While the template may feel overwhelming, a complete understanding isn't required to start developing your pipeline.

2.2.1 Workflows, subworkflows, and modules

The nf-core pipeline template has a main.nf file that calls mypipeline.nf from the workflows folder. The mypipeline.nf file is the central pipeline file that is used to bring everything else together. Instead of having one large monolithic pipeline script, it's broken up into smaller script components, namely, modules and subworkflows:

  • Modules are wrappers around a single process.
  • Subworkflows are two or more modules that are packaged together as a mini workflow.
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1d+VPbSFx1MDAxNv49f4WLnardrVxuPX1cdTAwMWapmtriSlx1MDAwMpgj4WZni1x1MDAxMrZsXHUwMDBin9jCXHUwMDE4ZvK/72tcdTAwMDGWrFx1MDAwYjuxQcxESYHRYbW63/fe+16/fvrjXam05N/13KVcdTAwMGalJXdUcVpete/cLr23+4duf+B1O3CIXHUwMDA2f1x1MDAwZro3/UpwZsP3e4NcdTAwMGa//tp2+k3X77WciouG3uDGaVxy/Juq10WVbvtXz3fbg//Yn7tO2/2t121X/T5cbm+y7FY9v9t/uJfbcttux1x1MDAxZsC3/1x1MDAxN/4ulf5cYn5GWtd3K77Tqbfc4ILgUNhAgXV87263XHUwMDEzNJZcYqVcdTAwMTTlVMrxXHUwMDE53mBcdTAwMWTu57tVOFxcgza74Vx1MDAxMbtraXt7ebPv1m6vT0f31e3WcO/q48mX8LY1r9U68O9aXHUwMDBmXeFUXHUwMDFhN/1Io1x1MDAwNn6/23RPvKrfsHeP7Vx1MDAxZl836EIvhFf1uzf1RsdcdTAwMWRcZiau6faciuff2X1cdTAwMTiP9z70wodSuGdcdTAwMDR/cSWRxlx1MDAxNCtNucJcbrPx0eB6JVx1MDAxMFWKcaZErElr3Vx1MDAxNoxcdTAwMDI06Vx1MDAxZjjYwkZdOpVmXHUwMDFkWtapjs/x+05n0HP6MFbhebePXHUwMDBmSzlBXHUwMDA2S8rN46bGpzRcXK/e8OFcdTAwMWNGXHUwMDE44lx1MDAwNFx1MDAxMyFppCFuMFx1MDAxNppTbFxmx+Fl9u69zWogXHUwMDE2/1x1MDAwYlx1MDAwN6BcdTAwMGZcdTAwMDK1aa/o3LRa0T7sVFx1MDAxZvvwSXxCXHUwMDAxYo97voWPZ8/fiFxiXniHm17VeZBcdTAwMGaiXGJRWFxiKlx1MDAxOVx1MDAwYlx1MDAwN6bldZrx27e6lWYoUu9cIveaTZaZpFmyTFx0XHUwMDExnFx0XHUwMDFjOeM5WV5lja2t0S493jzc6Vx1MDAxYzX3jtavzz5cdTAwMTddllx1MDAwNeVIk4iA2MsoVYhwvVBcdCZaXCLGhGHqUYZ5ilx1MDAwNFNcdTAwMDRcdTAwMTCjRKuEXHUwMDAwXHUwMDEzuJ5QXHUwMDEwXHUwMDE180pcdTAwMTI8via8eixcdFx1MDAxZi9cdTAwMDXfu68ofbezfLDeaFx1MDAxZpcvjlx1MDAxYuMumJBPp9/v3i6Nj3x7/FRcZnyoyH3iup5cdTAwMTHNXHUwMDAxXCJ4enzs3nfN0Jy77OiMd9bLwy6/9UZvXHUwMDAxXHUwMDFmJlDycZAwLFx1MDAxMHRCIMKLhFx0WJPg5lx1MDAwZt+EZVx1MDAxMiaKI64xl/pcdEpcdLBQjjnnmLFcdTAwMDKC5Vxu3+3vXHUwMDBmhsfnO7Q8YmXv/rK3fzxcdTAwMWRY3ud979bep1rXWVx1MDAxYn2tXHLk4Oi4f9rnXHUwMDA3g2KC0HdHflx1MDAxYf64zMZcdTAwMWZX8C/ShOfQx8zWp86mqe+dl2utrtOSTX3YLDz6tEaU4Fx0hFx1MDAwNVdSg8D9ikJy3sCTXGZJYlxm41jTSfCPcZfiVlx1MDAxOUVccmdsXHUwMDBlbtXEgUJYXHUwMDFmcHiVtFx1MDAwZif1XGaCXHUwMDFmPnO341x1MDAxZnj3gXOFJ/Z+dNpe625CSFx1MDAwMkRAXHUwMDAzNzu9XHUwMDFiP0RtsH+l5dUtOpZabm1cdTAwMTI2vlx1MDAwN4xnfNjv9sKjXHUwMDE1uI/jddx+ste7fa/udZzWYcY94Vx1MDAxOd3PT2NOUGTUL52Ba49cdTAwMDZ6Olx1MDAxN+FcdTAwMGZcdTAwMWSdXHUwMDAycUJcImwpjnHKuFx1MDAwMN2tQoX+XHUwMDFjyvPHvqAol1x1MDAxNCMugDlyoVx0ifDL4HJcdTAwMDF+YmDcXHUwMDE2aGSRMFx1MDAxYUuBXHUwMDA1mFssUjxRXHSMT6pUR1RcdTAwMTNcdTAwMDNcdTAwMWNcdTAwMGJMwlwibCt93ramglVcdTAwMWGhXGLmXHUwMDAynHhcdTAwMTFcdTAwMTXkacE68J2+v+p1ql6nPtmwx/DB5lx1MDAxNEYlgHflxrZcdTAwMTIjcD5ghJmm2vY1fIicVXd69llcdTAwMTH485asJp7Z7VSfb1x1MDAwYj7fJqf7p0ct3DkkN1x1MDAxZT/l9d5yeltcYqhz4H7SSMvSXHUwMDE1UYm2aCTAztvxTjSm5Vxm/LVuu+350Nf7Xa/jx/s06LxcdTAwMTWL+IbrJFx1MDAwNlx1MDAxY1x1MDAxZSZ6LK5cdTAwMWF69lx1MDAxYid1fPipXHUwMDE0XCIn+GP8+X/vU8/OXHUwMDEybLuFXCJcdTAwMWR+y7vo71m9XHUwMDE1JrIjQ1hIy6dJ6IA+p8nyh7Ogmlxmnlx1MDAxMmlcdTAwMWKXifFpRpBcXDhTwEDawWPhY59lKo9FStC84E+9UY8ll1x1MDAwMvxcdTAwMDC1KJwntLO3flTeuCAv61x1MDAwYiXvulBvSCpcdTAwMTXfO1x1MDAwZchhaZShTE+vQvKHv6AqRFx1MDAxMoW0MkD94J/RMUVcIlx1MDAxNXhKXFxRwYF/ciVYrF1zjDAjpoyAPmc2li2oSokwU4VcdTAwMTQ0lFDCpDUzJHRlx5FcdTAwMDdhMLA483f0jqb2SJbBPcJcZlx1MDAwM3tcdTAwMTTWXHUwMDAxwmAvlEk6JVx1MDAwNCNwVlxiXHUwMDFjJMHgU/N9nlJ+IG7Sa1M2cCS1XHUwMDEwwlBcdTAwMWOJN0RcdTAwMWJcdTAwMDWekqBEKdudRvA37TFli31wNCHwM/pOgX5MUXw0olx1MDAxN1x1MDAxMpFcdTAwMWWitcaUT1x1MDAxZuvZXHUwMDE4XHUwMDFkN+tycFB1+7f1s3U1uDw3w6IrPkU4miBYXHUwMDBmQVaKuJKTU1hz1nRcdTAwMDJcdTAwMTQukXzCa4vGVqVURqYxP2OMjVx1MDAxMC1kXHUwMDBlrSCqLY7DjCNzRvjEsbnCO2Ws7bZcdTAwMWNcdTAwMTnmOSGaU1x1MDAxZd9cdTAwMWKyIetxg1x1MDAwN1x1MDAxOUrOc4j2y8OG8Ko9vXK2drjcNFx1MDAwM3mNy8VHdDg5XHUwMDE0gFljZFx1MDAwM1x1MDAwMItcZttyiVx1MDAwNJ2ce1x1MDAwZqdcdTAwMTNccprkZk9AXHUwMDE2zIBdpfwnkt9cdTAwMGWSk1x1MDAwM223pyGeXHUwMDExxLmzoFKa+N4xkjU1SoPshFh/XHUwMDBlySer9Ghbn26fXlXXq536Snnwdfms8EhWXCJcdTAwMTH/XGauNFx1MDAxOFx0XHUwMDEwUiy54Vx1MDAwNH7pWJPmyEcoQVx1MDAxMotwljOVjzzlLSRyXG5cdTAwMWWhroiNw7CFsJFcdTAwMWZMe2FcdTAwMTQ6cVx1MDAwNqDnXG50VoyOmkyrxCTDzDA8Pb9cdTAwMTbd0YhsVM8q5YNW86K6vn+yYm6LLsrAmlx1MDAxMDOTuS2BcWJcdTAwMTQlkqXmXHUwMDFkolNcdTAwMDRcdTAwMTiVMVx1MDAxNEZb2WlNnVwiwynmSfJA0S08RlecaNfB0erJ3tftj+W9k5dcdTAwMGV5Zdx6XHUwMDFlca98M0MyJ/uBfNv5fja9lWmcXHUwMDFj7Zijhj+s9OnIOdu6/Dw8vCk+NFx1MDAwNdh0XGZcdTAwMTJHiLHWZFx1MDAwMqBcdTAwMWPIt3XcieFBUpiJtWu+OTck4Fxijzk3oUqMpqaJeGLAeEZQc0VcdTAwMTlWRcy2+YGsmPd537uyK5abe+e3aucjk+07t3YrRtXpvvfJQ8uxjXPNtsmOPrPMdFAhtVx1MDAxMUSQ6Wfi8zu6oFxilEQjQzElXGZzeOBIevBcdTAwMDN/k3ZcdTAwMWGXw1x1MDAwMVx1MDAxZLBlvjBcYlqiqEAjYlxuY4+piXKgXHUwMDEwg9zOXHUwMDE4XHUwMDEz+C8xVjpcIiFPSFRcdTAwMThcdTAwMWJw38lCkDhcdTAwMDdiJ2eQ6Sxi991R3of4rUTAoiR0XHUwMDEy9KJccoBETphcYk9cdTAwMDOtXHUwMDAyN0BcdTAwMDJJllx1MDAwNHylZJR3qtBzvl1cdTAwMWE3yrrxUlx1MDAxOE2ZkFx1MDAxMsg5S2lcdTAwMTU0isApYFx1MDAxYVx1MDAwNbBcdTAwMDJuXHUwMDE0tDDRqLdcdTAwMTR6zpF5uyWkPfy+d9HfM6s9k+14XHUwMDEwzZTWXGZHjNxzei/fXHUwMDEwXHUwMDE0Ve9RhphNQWJWyk3E01x1MDAwZTxcdTAwMGapkFCKSlx1MDAwMVZIskhUa95qjyF7XHUwMDFiwlx1MDAwNXS8IVx1MDAxOFxc7lTPXHUwMDAzXHUwMDEzQoFGSFx1MDAwM9CgSa3HbbqFnZL5XHUwMDFiar3NZrN/8HFl52h3UL9iW3VRu5Kfo1xuJqrUuFx1MDAxMIpLXHUwMDFiwVx1MDAxMYrp1LktXHJDblf5SDvu36v1ymRccvtY3LGva/y84X1ZX7vY3ciYcFx1MDAwM1ZoXHUwMDE4pVx1MDAxYUbX2ImoZKNcYrKzcaD4wEQrIIf6TWu9bJFcdTAwMGaOxoV9RqWXmVlcdTAwMWSZWI/pPI2ZpEC2po+D5Fx1MDAwZm9BVZ7QXHUwMDA20cTKXHUwMDFmXHUwMDAx0kU4XHUwMDE3bJExeo1BglxymGuMXHUwMDA1iPGUUVx1MDAxMEbA6qlcdTAwMTeIgoxF7Fx1MDAwNWnOa8RY9m78l0+uTtx0XHUwMDFlcZXMjMTsdFwiYjCV4GHNwOjyTUtRYS4xXHUwMDAy65ZcdTAwMDA6Z1x1MDAwNCnOyeS099wjKYQjXGZQZzJzUi6JdKGkXHUwMDAx8zeP2bifQF9cbpP4xKukXHUwMDBlivlCPTeEyrNnN0BcdTAwMDY1mPVcdTAwMTmW8+ra5upubX843Fm/X1x1MDAxZHXOnOvq4KLocNdEIyVZylRdkINsXHUwMDE0XWwuXHJcYjjiJJYvM7GeV8WWc42TabhcdTAwMTJcdTAwMGKiLG9mPbowmTPN1CadwagyPLVcdTAwMDB/8sjK8d5OdbWxf0xaklSqwy/rxVx1MDAxN2CONLAympJcbqZcdTAwMTFPrMQtjlx1MDAwMINWXHUwMDE3lnb/vUVYqszlbFx1MDAwMpxcdTAwMDBu9Fxms1j7W6v8fOvw0Ln5Uml3z3b36eGZKr5cdTAwMDRTpDChXGbQTFx1MDAxNTOTy9mYpsgmJlDgMtSu4S2gJFx1MDAwN04hU4uJmv/g/NVR9ZbvdXiNXHUwMDFjd85cdTAwMDfOUbn+adSWxZxnymIl0fSTuJeCYTx0NOv/OYi0XHUwMDBmVi/r1+6G8m9bzY+13a2Tr6tu4SFcIoB8pK6TkmjhjEQgw4yJM5+8yFx1MDAwM7iONiZHXpWQnO01zq/7R2d3Te/yePV8dXPEyrfTXHT++7zv3Vxcadyx5V3V627WV0x5q7XBP4u3TXToq1x1MDAxMFx1MDAxZDpfopOpPXLWi1u/n1x1MDAxOS6nXHUwMDBmXX5cdTAwMWE1xPGZK8/w/sp1fefy9v7uMy+8+uBcdTAwMWHBY4pkSVx1MDAxNsJQrFrQXHUwMDAy1Fx1MDAwN7OLLCWN6a9cdTAwMWNcdTAwMDXCOOfAu1wizfpcdTAwMGLpj71cdTAwMWXW7vnK5+37flxyj/jO6Yqzid+2/mCvoj/Yy+hcdTAwMGaZXHUwMDFkIyGYSGGXaU+vP44v3OFov7N2evH1uj1o7jv7vFr4LFx1MDAxN83BXHUwMDA3SNFcdTAwMWW22IyhZrGlJoDf2uRkZiOcetqQqE2vNtK8qlx1MDAwM/JcdTAwMDNAz1Ugi/LoX1GB8FdRIHy+XG4kM19EZafJMaCbzMhcdTAwMTlcbtbkm6WCKlx1MDAxMKBpiFJmMSxccsFqMl2EKoKkXFxwKrnNfuLcYMOxXHUwMDE2QF11aq5cYtVIizSOz4m2XHUwMDAx8cXU/yx4ikg+ZS5NXHUwMDE0iqFag8NtbPKngp+RXHUwMDAyKmGKiCBcdTAwMGbGJPHUU+WG5HvgpcmEXHUwMDE1SalmWrEgK4VommxcdTAwMGVF0lx1MDAxOPrmXHUwMDBi1+SJt93Gglx1MDAxZH7Ru+jv2ZVadtzSlqQyNvVx+qhMvq0srFazNYWVpthoyUk8+ZdcdTAwMWJEzGJcdTAwMTNDXHUwMDAwcEZRXHI6gGrgS3ZJZqpOS69cYlx1MDAwYkNo64PghVSELbhOm1qLXHUwMDAwsDT0XHUwMDFlY0IyalxiS60yYdRcdTAwMGbU4cqnXHUwMDA0MYVcdTAwMDZeLbYplZpIcLxxNOM1koP3XHUwMDE4K3zTXHUwMDFhbTlHuO32JNYzKrTsMFFm6lx1MDAwYoOuNIyY6etJOKd6pd/ub6+uNVa3u7VP3tWaY4qnzjhSXHUwMDA0XHUwMDE0gDZcdTAwMWEzgFuoXHUwMDA3gqLtXHUwMDFjTKNSYDlcdTAwMDV0PtUxn41cdERcdTAwMThcdTAwMDe9p/Hk0fmX6dKIXGJcdTAwMDNqQT/Mc4a3yotBS+AyWim6cFxuWFx1MDAxYzL1tFxu72XJVPKu8yBTmXVfWKbbwbnE4OzNMOE/Kovdlf6n9e3bYdm9U5/vqq0vV8WDaSxBjVx1MDAwMGwnYy5cdTAwMGZvUZCIxyMkc/c3ktBj2CDB08q9MMqtMZ9cdTAwMDdcdTAwMDLn515857xllnvxVytcdTAwMTIxcXY4tDPa2GzwZtpY4C3EzLJg91TWV91cdTAwMWHmtUtcdTAwMTDOu1x1MDAxNffj7cZx8edxbcnJtKpcdTAwMTBcdTAwMTR8XHUwMDFks9iZmFx1MDAxNOxS0Fx1MDAxOcLEq0U9RlBttkPR1sT8RO/DNlxyeqODOydcdTAwMWZZXHUwMDE5XHUwMDE23/uEX5tcdTAwMWFtiJDT+8hH+8tcdTAwMDdseXjb+8LxSptfn11frq5cdTAwMTVcdTAwMGbAuT6yXHUwMDAy31RS0Fxc4Fx0XHUwMDA3q0AmfWSlkFx1MDAxNlxcSFx1MDAxZD9ajDpcdTAwMTlcdTAwMTSDR23LXHUwMDE1/qyT8cbrZOSs0M90lylmWIB/NsPLx/JTX1xuXHUwMDAz2WSUXHUwMDBlXHUwMDFiTTFcdTAwMDVfXHUwMDE0czpZYlxyzC50ucKYXHUwMDExacDhwVx1MDAwYlx1MDAwNCnSWjKslabMZp7ItPlcdTAwMDeJjOZcdTAwMWPbwkKgXFxEdOnso1dcciRcdTAwMDfr6Fx1MDAxMuTi2GWm4ddC7fJcdTAwMGZPUdhcdTAwMThcdTAwMWFoPaIxMEmDjaBcdTAwMTNr5Vx1MDAxZkJoXHUwMDA2adCllHA4RVMu3vaC0Wy5s1tS4mZ0XHUwMDE2MnWP5pnTnlJoKcgsVeDyJ71cdTAwMGKqesBpQFxcXGKbJFwiXHUwMDA1JnRygsDW52GgkjT4XHUwMDBm9rVYXHUwMDBizGy22V+SwlxiM26kfbVBiuYxyCiQeEw0IUDdcZLPXHUwMDFiZay9LqTmYTpcdTAwMTK/nf90wdQxeoxcYlx1MDAwNmdcdTAwMTC62b7iXHUwMDA0gzeW0C52iZ8yVvp5MOzjNdpcdTAwMTnzXHUwMDA2i+RcIlx1MDAwYlY8WWJnt6TAzah4cpdV2LJcdTAwMWaZXFyFXHUwMDAx4VaGTz89WVx1MDAxYl40uvdcdTAwMWL8wlx1MDAxNfeHh1x1MDAxN5dnvWbZKbr2IVhKUD/gZCtcdTAwMDZ+j6Gx91x1MDAwNHGFRFiyK/qivLlcdTAwMTeMtiFLJTEnTDPwxFJcdTAwMWNcdTAwMWaQXHUwMDEz9LhcZo+nV6KkIC2aXHUwMDBiPoek0DkuXHUwMDE3euAw4EWIWThMrlxcZ7Fvgnn2+2KMfb8nXHUwMDEwv+lletTsnq73Zf2yfXY0osPel49OpV94mSZMoHj0TDC00Kg3x1x1MDAxMklh31RnvaT0JGbAWUJggXWAOzWXXHUwMDA1bj9Gr2epklx1MDAxYbbqe+h1r9+tQItLTyn+pT9+79hcdTAwMTNazqXbKv0+Pt7q3v6+9HDo4adn3yH34eGzf9NruaWh0/pX2/Wdf78v9Vx1MDAxY7/xr1x1MDAxYVg+59/Ra7pBaYRnLvImLlx1MDAwMbvXebrAXHUwMDE5NFx1MDAxMTRcdTAwMWLZfaXfflx1MDAwYjql9Oefk1x1MDAwN6JcdTAwMTdcdTAwMGYqfa/3dL+qWys5/fqg9Ft4QfD3fz6U/vnPx8uWgn/B5/bdcu2mU/FcdTAwMDG0pV+CXHUwMDEzl73SL8FDlZa79pNcdTAwMTe9XGJu+e1lw1x1MDAxMz+HbiFDN1V4h3OWa1x1MDAxMrImVHRmdEdRW/JTzZCzcHbV7FxcXHLWxdHOiVBfetdNUtkr/OpnY1x1MDAxOErW6lxilu4vNJtUYfRQiictXHUwMDFkXYGDz0Tqa+TBXHUwMDA35jAyvLCv95lHztVfbVolZbDttlx1MDAxY1x1MDAxOedcdTAwMTmpS1x1MDAxNp5Jdlx1MDAxMlx1MDAxMvh3wFlUJFx1MDAwMe1ZRN9cXG1//XJfvz7Ah59cdTAwMDebNXqw3twrfqq4IYgnXHUwMDE3ukqN4q9cdTAwMTOd//uLaayKQpjkQFx1MDAxNPD69DRcdTAwMDdgtkIzOY9JlJ+IfiFEJ8fabtFRnlx1MDAxN6Cz51+U1IZxXHUwMDEyUrrn4HzBtlsnO43K5oHc8m73tkSrp++KXHUwMDBlZ0KwQSnZStygxcI55WWeXFzYcsxpXHUwMDA1yDHjXFxJqopcdTAwMTja/JnskI5hXHUwMDEyPXs8tDPiNivWonNcZjFIisGczrDo05dcdTAwMWK1XHUwMDE23tpfdo5cdTAwMGa2T06a5cOzvWbxkJub6lx1MDAwMFx1MDAxOCFI2Fx1MDAxYYBcImZcdTAwMDdcdTAwMDP7bJf1XGJbXHUwMDE3O/7qt9cvR0GlxIpcdTAwMTjy6llcdTAwMGUvXHUwMDE3hnmTdVx1MDAxZN49Qn3J6fVcdTAwMGV86L+xNoVcdTAwMDHzqo+dXHUwMDEwtmBp6Lm3q0n5+Uct2Oyy11x1MDAwMPZcdTAwMTZfbqCav7379n+uMslcdTAwMDcifQ== InputsMODULE_1SUBWORKFLOW_1OutputsMODULE_5MODULE_2MODULE_3MODULE_4WORKFLOWSUBWORKFLOW_1process MODULE_2 { label "process low" input: tuple val(meta), path(fasta) output: tuple val(meta), path(fai) when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' """ my-function $args -i $fasta -o $fai """ }MODULE_2

Within your pipeline repository, modules and subworkflows are stored within local and nf-core folders. The nf-core folder is for components that have come from the online nf-core repository while the local folder is for components that have been developed independently.

modules/
├── local
│   └── <toolname>
│   │   └── main.nf
│   .
└── nf-core
    ├── <toolname>
    │   ├── environment.yml
    │   ├── main.nf
    │   ├── meta.yml
    │   └── tests
    │       ├── main.nf.test
    │       ├── main.nf.test.snap
    │       └── tags.yml
    .

Modules from nf-core follow the same structure and contain a small number of additional files that are used for testing using nf-test and documentation about the module.

2.2.2 Configuration files

The nf-core pipeline template utilizes Nextflows flexible customization options and has a series of configuration files throughout the template.

In the template, the nextflow.config file is a central configuration file and is used to set default values for parameters and other configuration options. The majority of these configuration options are applied by default while others (e.g., software dependency profiles) are included as optional profiles.

There are several configuration files that are stored in the conf folder and are added to the configuration by default or optionally as profiles:

  • base.config: sensible defaults for pipeline resource requests.
  • igenomes.config: configuration settings required to access the igenomes registry.
  • modules.config: additional module directives and arguments.
  • test.config: a profile to run the pipeline with minimal test data.
  • test_full.config: a profile to run the pipeline with a full-sized test dataset.

2.2.3 .nf-core.yml

The .nf-core.yml file is used to specify the repository type and manage linting tests.

.nf-core.yml
repository_type: pipeline

By default, the .nf-core.yml file will only show the repository is a pipeline. However, if the template is customized and parts of the template are removed, this file needs to be modified for linting tests to pass.

2.2.4 nextflow_schema.json

The nextflow_schema.json is a file used to store parameter related information including type, description and help text in a machine readable format. The schema is used for various purposes, including automated parameter validation, help text generation, and interactive parameter form rendering in UI interfaces.

2.2.5 GitHub actions workflows

Automated workflows are an important part of the nf-core pipeline template.

By default, the template comes with several automated tests that utilize GitHub Actions, each of which are configured in the .github/workflows folder:

  • branch.yml: Sets the branch protection for the nf-core repository
  • ci.yml: Run small pipeline tests with the small test datasets
  • clean-up.yml: Automated testing for stale and closed GitHub issues and PRs in the nf-core repo
  • download_pipeline.yml: Test a pipeline download with nf-core download.
  • fix-linting.yml: Fix linting by adding a comment to a PR
  • linting_comment.yml: Triggered after the linting action and posts an automated comment to the PR, even if the PR is coming from a fork
  • linting.yml: Triggered on pushes and PRs to the repository and runs nf-core lint and markdown lint tests to ensure that the code meets the nf-core guidelines
  • release-announcements.yml: Automatic release toot and tweet announcements for nf-core pipeline releases

Notably, many of these tests are only configured for the nf-core repo. However, they can be modified for your repository or ignored if they are superfluous to your requirements.

You can read more about creating and modifying workflows on the GitHub Actions documentation webpage.

Even though many of these action workflows are not relevant for private repositories, it is recommended to keep them in place to prevent nf-core lint from throwing errors.

Note

To enable these workflows you need to click Enable Actions on this Repository under the Actions tab in your GitHub repository.

GitHub actions


Congratulations! You have now created a template pipeline, pushed it to Github and learned about important template files!