Next Flow 官方文档学习

连祈
2022-12-09 / 0 评论 / 30 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年12月12日,已超过859天没有更新,若内容或图片失效,请留言反馈。

从Your first script开始

params.str = 'Hello world!'

process splitLetters {
  output:
    path 'chunk_*'

  """
  printf '${params.str}' | split -b 6 - chunk_
  """
}

process convertToUpper {
  input:
    path x
  output:
    stdout

  """
  cat $x | tr '[a-z]' '[A-Z]'
  """
  #bash中的tr命令 ,执行字符串转换(替换)
  #简单的查找替换
  #如该句指令,指将小写字母转化为大写字母
  #语法:管道输入 | tr '[SET1]' '[SET2]'
  #这里,SET1 代表要在文本中找到的字母,SET2 代表要替换的字母。
  #tr -d 用于删除指定的字符
  #tr -c 用于将连续重复的指定字符变唯一
}

workflow {
  splitLetters | flatten | convertToUpper | view { it.trim() }
}

''是针对字符的,比如a;而""是针对字符串的,比如"hello"。而shell呢,主要是用c/c++实现的,所以在shell里,""和''是有区别的。

单引号限制最大,任何的字符都会原样输出,变量是无效的
双引号比较友好,可以引用,也可以有转义字符

例子:
当您需要访问脚本中的系统环境变量时,您有两个选择。
如果不需要访问任何 Nextflow 变量,则可以使用单引号定义脚本块:

process printPath {
  '''
  echo The path is: $PATH
  '''
}

否则,您可以使用双引号定义脚本,并通过以下方式转义系统环境变量 用反斜杠字符作为前缀,如以下示例所示:\

process doOtherThings {
  """
  blastp -db \$DB -query query.fa -outfmt 6 > blast_result
  cat blast_result | head -n $MAX | cut -f 2 > top_hits
  blastdbcmd -db \$DB -entry_batch top_hits > sequences
  """
}

一句话解释:单引号直接传送给bash,双引号先尝试进行nextflow进行解析,获取类似$的关键字,完成替换(或识别完转义)后输送给bash


解释器:shebang

#!/usr/bin/perl

Nextflow脚本语言是Groovy编程语言的扩展。 Groovy是Java虚拟机的强大编程语言。下一个流 语法专门用于以声明方式简化计算管道的编写。

Nextflow可以执行任何一段Groovy代码或使用JVM平台的任何库。

注意看一下隐式变量
其中含有很多脚本自带的常用变量

脚本自身也有一个解释器,以java为基础可以完成基本的编程操作

如条件判断:

if ()
{}
else
{}

字符串操作与python 支持 + 连接两个字符串
多行字符串使用
"""
string_line1
string_line2
"""
如果在多行字符串内的行末加上 \ 反斜杠会取消换行
"""
string_line1 \
string_line2
"""
这些都和基本的编程语言一致

0

评论 (0)

取消