Before we start

This is a small hands-on tutorial to help you convert your free-style nextflow pipeline to nf-core style one.

Usefull links

Our plan

Environment

Load the pipeline

Convert one module to nf-core

Create a module template

First step is to create a module template for our future module add a manifest to our nextflow config. nf-core/tools needs a pipelinename from the manifest

manifest {
    name            = 'cellgeni/hackaton'
    author          = "CellgenI Team"
    homePage        = '<https://github.com/cellgeni/hackaton>'
    description     = "NF-CORE play-around-and-find out hackaton"
    mainScript      = 'main.nf'
    nextflowVersion = '!>=24.04.2'
    version         = '0.0.1'
}

<aside> 💡

This is step is only relevant for nf-core/tools=3.4.1. You don’t need to do that starting 3.5.0. But it’s nice to have a manifest in your configs anyway!

</aside>

Now we can run the command to create a template

nf-core modules create

#
#                                          ,--./,-.
#          ___     __   __   __   ___     /,-._.--~\\ 
#    |\\ | |__  __ /  ` /  \\ |__) |__         }  {
#    | \\| |       \\__, \\__/ |  \\ |___     \\`-._,-`-,
#                                          `._,._,'
#
#    nf-core/tools version 3.4.1 - <https://nf-co.re>

This command will take a few steps. First it will ask permission to create .nf-core.yml file. This a config file that lets nf-core/tools know the repository type (pipeline/modules). You can read more about nf-core modules create command here: https://nf-co.re/docs/nf-core-tools/modules/create

WARNING  'repository_type' not defined in .nf-core.yml                                                                                                                                                                                        
? Is this repository a pipeline or a modules repository? Pipeline
INFO     To avoid this prompt in the future, add the 'repository_type' key to your .nf-core.yml file.                                                                                                                                         
? Would you like me to add this config now? [y/n] (y): y
INFO     Config added to '.nf-core.yml'  
INFO     Repository type: pipeline                                                                                                                                                                                                            

On the next step nf-core asks for the tool name. I decided to go with adata/attachcellmetadata . I expect there to be multiple modules for AnnData manipulations in the future, so it would be good to have a separate category for them. nf-core/tools tries to find Bioconda package and docker container associated with the main tool.