下面的代码适用于字符串:
Channel .of('test1.fastq', 'test2.fastq', 'test1.bam', 'test2.bam') .filter( ~/.*bam|.*1.fastq/ ) .view()
但不是路径。有没有一种方法可以让path工作?例如:
path
Channel .fromPath( params.inputs ) .filter( ~/.*bam|.*1.fastq/ ) .view()
谢谢!
yftpprvb1#
filter操作符还允许您指定一个闭包,这将允许您使用Groovy的 find 操作符,例如:
filter
params.inputs = '*.{bam,fastq}' workflow { Channel .fromPath( params.inputs ) .filter { it.name =~ /(\.bam|1\.fastq)$/ } .view() }
另一种方法是使用find()方法,该方法返回列表中的第一个值,如果不存在这样的元素,则返回null。注意,根据Groovy Truth,非空字符串被强制为true:
params.inputs = '*.{bam,fastq}' workflow { Channel .fromPath( params.inputs ) .filter { file -> ['.bam', '1.fastq'].find { file.name.endsWith(it) } } .view() }
1条答案
按热度按时间yftpprvb1#
filter
操作符还允许您指定一个闭包,这将允许您使用Groovy的 find 操作符,例如:另一种方法是使用find()方法,该方法返回列表中的第一个值,如果不存在这样的元素,则返回null。注意,根据Groovy Truth,非空字符串被强制为true: