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

系统要求

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容