Nextflow 快速搭建生信分析流程(四)- Channel
本节我们介绍Nextflow中的Channel类型,Channel是nextflow中process之间进行数据传递的通道。
Channel主要有两个属性:
采用异步操作的方式进行数据传递;
数据接收采用block的形式,直到数据流信息传递过来之后才会“转交”给接收的process;
Channel类型介绍:
Queue Channel
Queue Channel采用非block的形式进行存储(FIFO),用于连接两个process,Queue Channel通常是通过factory的方法产生,包括from, fromPath等方法。Process的输出也经常以Channel的方式进行存储;
注意:Queue channel只能使用一次。
2. Value channel
Value Channel是一个数值型的通道,可以无限次的使用,同时可以被多个process调用。可以产生value channel的操作符包括first, last, collect, count, min, max, reduce, sum。
Channel方法介绍:
Of 方法:
of 方法可以创建任何类型的数据,例如:
ch =Channel.of(1, 3, 4, 6, “hello world”)
ch.view{ “value:$it “ }
2. Value 方法:
Value方法用于产生数值型的channel:
Exp1 = Chanel.value()
Exp2 = Channel.value(“Hello there”)
Exp3 = Channel.value([1,2,3,4,5])
3. fromList 方法:
fromList 用于产生一个含有元素的列表:
Channel
.fromList(['a’,'b’, 'c’])
.view{ “value:$it”}
4. fromPath 方法:
myFileChannel = Channel.fromPath( '/data/ *.fp' )
fromPath方法支持正则表达式,方法中可以添加的参数如下:
参数名称 |
参数描述 |
glob |
是否支持正则表达式,默认为true |
type |
返回的类型,file, dir, any 默认为file |
hidden |
是否显示隐藏文件,默认为false |
maxDepth |
读取目录的深度 |
followLinks |
是否读取链接文件 |
relative |
是否使用相对路径,默认为false |
checkIfExists |
是否检查路径是否存在,默认为false |
5. fromFilePairs 方法:
fromFilePairs方法可以使用正则表达式的方式匹配双端测序文件,Channel可以以列表的形式每次释放一对文件。
Channel
.fromFilePairs('/my/data/SRR*_{1,2}.fastq')
.view()
方法中可以添加的参数如下:
参数名称 |
参数描述 |
type |
返回的类型,file, dir, any 默认为file |
hidden |
是否显示隐藏文件,默认为false |
maxDepth |
读取目录的深度 |
followLinks |
是否读取链接文件 |
size |
每个item中的元素个数,默认为2,设置为-1时不加任何限制 |
flat |
当设置为true时,将会把元素转成单个释放 |
checkIfExists |
是否检查路径是否存在,默认为false |
6. fromSRA 方法:
fromSRA方法可以直接下载NCBI中的SRA数据,并且将SRA直接转成fastq文件。
ids = ['ERR908507', 'ERR908506', 'ERR908505']
Channel
.fromSRA(ids)
.view()
方法中可以添加的参数如下:
参数名称 |
参数描述 |
apiKey |
NCBI中的API key |
cache |
是否缓存API信息, 默认为true |
max |
并行下载数据的数目,默认没有限制 |
7. watchPath 方法:
watchPath方法会监控一个目录中文件的变化,当文件名称与watchPath中定义的表达式相匹配时,就会释放匹配到的元素,默认情况下只会监控新产生的文件。
Channel
.watchPath( '/path/*.fa' )
.subscribe { println "Fasta file:$it" }
可选参数如下:
参数名称 |
参数描述 |
create |
监控创建的新文件 |
modify |
监控修改的文件 |
delete |
监控删除的文件 |