Skip to content

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.

View all of the tooling using the nf-core --help argument.

nf-core --help

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

2.1.1 nf-core pipelines create

The nf-core pipelines 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 pipelines create

Running this command will open a Text User Interface (TUI) for pipeline creation.

Template features can be flexibly included or excluded at the time of creation. You can still use the CLI by providing all values as parameters.

Exercise

Follow these steps create your first pipeline using the nf-core pipelines create TUI:

  1. Run the nf-core pipelines create command
  2. Select Let's go! on the welcome screen
  3. Select Custom on the Choose pipeline type screen
  4. Enter your pipeline details, replacing < YOUR NAME > with your own name, then select Next
    • GitHub organisation: myorg
    • Workflow name: myfirstpipeline
    • A short description of your pipeline: My first pipeline
    • Name of the main author / authors: < YOUR NAME >
  5. Select Continue on the Template features screen
  6. Select Finish on the Final details screen
  7. Wait for the pipeline to be created, then select Continue
  8. Select Finish without creating a repo on the Create GitHub repository screen
  9. Select Close on the HowTo create a GitHub repository page

If run successfully, you will see a new folder in your current directory named myorg-myfirstpipeline.

2.2 Template tour

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

Here, almost everything was included in the template to create opportunities to explore these features.

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 script that calls myfirstpipeline.nf from the workflows folder. The myfirstpipeline.nf file inside the workflows folder 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: Wrappers around a single process
  • Subworkflows: 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 nf-core GitHub repository while the local folder is for components that have been developed independently:

modules/
├── local
│   └── <toolname>
│   │   └── main.nf
│   .

└── nf-core
    ├── <tool name>
    │   ├── environment.yml
    │   ├── main.nf
    │   ├── meta.yml
    │   └── tests
    │       ├── main.nf.test
    │       ├── main.nf.test.snap
    │       └── tags.yml
    .

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

Note

Some nf-core modules are also split into command specific directories:


└── <tool name>
    └── <command>
        ├── environment.yml
        ├── main.nf
        ├── meta.yml
        └── tests
            ├── main.nf.test
            ├── main.nf.test.snap
            └── tags.yml

Note

The nf-core template does not come with a local modules folder by default.

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: A 'blank slate' config file, appropriate for general use on most high performance compute environments.
  • igenomes.config: Defines reference genomes using iGenome paths.
  • igenomes_ignored.config: Empty genomes dictionary to use when igenomes is ignored
  • 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
bump_version: null
lint:
    files_exist:
        - CODE_OF_CONDUCT.md
        - assets/nf-core-myfirstpipeline_logo_light.png
        - docs/images/nf-core-myfirstpipeline_logo_light.png
        - docs/images/nf-core-myfirstpipeline_logo_dark.png
        - .github/ISSUE_TEMPLATE/config.yml
        - .github/workflows/awstest.yml
        - .github/workflows/awsfulltest.yml
    files_unchanged:
        - CODE_OF_CONDUCT.md
        - assets/nf-core-myfirstpipeline_logo_light.png
        - docs/images/nf-core-myfirstpipeline_logo_light.png
        - docs/images/nf-core-myfirstpipeline_logo_dark.png
        - .github/ISSUE_TEMPLATE/bug_report.yml
    multiqc_config:
        - report_comment
    nextflow_config:
        - manifest.name
        - manifest.homePage
        - validation.help.beforeText
        - validation.help.afterText
        - validation.summary.beforeText
        - validation.summary.afterText
nf_core_version: 3.0.1
org_path: null
repository_type: pipeline
template:
    author: Chris
    description: My first pipeline
    force: true
    is_nfcore: false
    name: myfirstpipeline
    org: myorg
    outdir: .
    skip_features: []
    version: 1.0.0dev
update: null

Note

The .nf-core.yml file must match your template features 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 pipelines 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 pipelines 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

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.

Read more about creating and modifying workflows on the GitHub Actions documentation webpage.


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