美文网首页
nextflow中文文档(1):开始使用

nextflow中文文档(1):开始使用

作者: 大大的世界和小小的人儿 | 来源:发表于2021-10-26 14:22 被阅读0次

    系统要求

    Nextflow可以用于任何POSIX兼容系统(Linux, OS X等)。它需要安装Bash 3.2(或更高版本)和Java 8(或更高版本,最多15)。
    在计算机集群中执行时,需要使用共享文件系统来共享任务输入/输出文件。
    Windows system is supported through WSL.

    安装

    1.下载

    $ wget -qO- https://get.nextflow.io | bash
    or
    $ curl -s https://get.nextflow.io | bash
    

    这将在当前目录中创建nextflow主可执行文件。
    2.make

    $ chmod +x nextflow
    

    通过运行chmod +x nextflow在您的系统上创建二进制可执行文件。
    3.添加到环境变量(Optional)
    将nextflow文件移动到您的$PATH变量可访问的目录中(这只是为了避免在每次运行nextflow时记住并输入完整的路径)。

    !Tip

    设置export CAPSULE_LOG=none以减少依赖项安装日志的冗长性。

    !Note

    为了避免下载依赖项,您还可以为每个Nextflow发布版本使用从Github提供的Nextflow - version -all发行版。

    1. Github发布页面找到所需的版本,复制 nextflow-VERSION-all 版本的URL,并在终端上下载:wget -qO- ASSET-URL。它将在当前目录中创建所有包含的nextflow-VERSION-all可执行文件。

    升级更新

    nextflow self-update
    

    !Tip

    您可以临时切换或坚持使用特定版本的Nextflow,只需要在Nextflow命令前加上NXF_VER环境变量。例如

    NXF_VER=20.04.0 nextflow run hello
    

    Stable和Edge版本

    Nextflow的稳定版本将在每年的第1季度和第3季度发布,基本时间表为6个月。除了稳定版本,Edge版本还会按月发布。这个版本用于测试和使用最新的更新和实验特性。要使用最新的Edge版本,请在shell终端中运行以下代码:

    export NXF_EDGE=1
    nextflow self-update
    

    你的第一个脚本

    复制下面的示例复制并保存成名为tutorial.nf的文件中。

    #!/usr/bin/env nextflow
    
    params.str = 'Hello world!'
    
    process splitLetters {
    
        output:
        file 'chunk_*' into letters
    
        """
        printf '${params.str}' | split -b 6 - chunk_
        """
    }
    
    
    process convertToUpper {
    
        input:
        file x from letters.flatten()
    
        output:
        stdout result
    
        """
        cat $x | tr '[a-z]' '[A-Z]'
        """
    }
    
    result.view { it.trim() }
    

    这个脚本定义了两个过程。第一个将字符串分割成6个字符的块,每个块以chunk_ 为前缀写入一个文件,第二个接收这些文件并将其内容转换为大写字母。结果字符串在 result 通道上发出,最终输出由 view 操作符打印。
    在终端中输入以下命令来执行脚本:

    nextflow run tutorial.nf
    

    它将输出类似于下面所示的文本:

    N E X T F L O W  ~  version 19.04.0
    executor >  local (3)
    [69/c8ea4a] process > splitLetters   [100%] 1 of 1 ✔
    [84/c8b7f1] process > convertToUpper [100%] 2 of 2 ✔
    HELLO
    WORLD!
    

    可以看到,第一个进程执行一次,第二个进程执行两次。最后打印结果字符串。
    值得注意的是,进程convertToUpper是并行执行的,因此不能保证处理第一次分割的实例(the chunk Hello)会在处理第二次分割的实例(the chunk world!)之前执行。
    因此,完全有可能以不同的顺序打印出最终结果:

    WORLD!
    HELLO
    

    !Tip

    十六进制数,如22/7548fa,标识唯一的进程执行。这些数字也是每个进程执行的目录的前缀。您可以检查将文件更改到目录$PWD/work所生成的文件,并使用这些数字来查找进程的执行路径。

    修改和恢复

    Nextflow跟踪管道中执行的所有进程。如果修改脚本的某些部分,则只会重新执行实际更改的流程。未更改的进程的执行将被跳过,并使用缓存的结果。
    这在测试或修改部分管道时很有帮助,因为不用从头开始重新执行它。
    为了完成本教程,请修改前面示例中的convertToUpper进程,将进程脚本替换为字符串rev $x,使进程看起来如下所示

    process convertToUpper {
    
        input:
        file x from letters
    
        output:
        stdout result
    
        """
        rev $x
        """
    }
    

    然后以相同的名称保存文件,并通过在命令行中添加-resume选项来执行它

    nextflow run tutorial.nf -resume
    

    它将打印类似的输出结果:

    N E X T F L O W  ~  version 19.04.0
    executor >  local (2)
    [69/c8ea4a] process > splitLetters   [100%] 1 of 1, cached: 1 ✔
    [d0/e94f07] process > convertToUpper [100%] 2 of 2 ✔
    olleH
    !dlrow
    

    您将看到实际上跳过了进程splitLetters的执行(进程ID是相同的),并从缓存中检索其结果。第二个进程按预期执行,打印反转的字符串。

    !Tip

    管道结果默认缓存在目录$PWD/work中。根据您的脚本,这个文件夹可能会占用大量磁盘空间。如果您确定不会恢复管道执行,请定期清理此文件夹。

    管道参数

    管道参数的声明只需在变量名前加上前缀参数,由点字符分隔。它们的值可以在命令行上指定,方法是在参数名称前加上一个双破折号,即--paramName
    在本教程中,您可以尝试执行前面的示例,指定不同的输入字符串参数,如下所示:

    nextflow run tutorial.nf --str 'Bonjour le monde'
    

    命令行上指定的字符串将覆盖参数的默认值。输出是这样的:

    N E X T F L O W  ~  version 19.04.0
    executor >  local (4)
    [8b/16e7d7] process > splitLetters   [100%] 1 of 1 ✔
    [eb/729772] process > convertToUpper [100%] 3 of 3 ✔
    m el r
    edno
    uojnoB
    

    !Tip

    从20.11.0版开始,参数名称中的任何.(点)字符被解释为分隔符或嵌套作用域,例如--foo.bar Hello将以params.foo.bar的形式从脚本中访问。如果你想要一个参数名包括.(点)字符使用反斜杠字符转义,例如--foo\.bar Hello

    相关文章

      网友评论

          本文标题:nextflow中文文档(1):开始使用

          本文链接:https://www.haomeiwen.com/subject/kqoualtx.html