Nextflow 快速搭建生信分析流程(七)- Splitting Operators

本节我们介绍Nextflow中的Splitting operator类型。Splitting operators-分割操作符分割操作符用于将channel中的元素分割成不同的块儿,这些块结构将会下游的操作符或process使用,常用的分割操作符包括splitCsv, splitFasta, splitFastq, splitText1. splitCsvsplitCsv操作符用于将csv格式的文本文件分割成不同的模块:Channel.from( 'alpha,beta,gamma\n10,20,30\n70,80,90' ).splitCsv().view { row -> "${row[0]} - ${row[1]} - ${row[2]}" }splitCsv中可选参数如下:参数描述by将文件按照指定行分割成不同的块(便于处理大文件)sep文件分隔符,默认为逗号”,”quote是否将字段用引号引起来header是否读取文件头,也可以指定一个列表,定义列名charset编码格式,默认为utf-8strip是否移除字段中前后的空格,默认为falseskip需要跳过的行数limit限制返回的记录条数decompress是否对压缩文件进行解压elem用于分割的元素索引2. splitFastasplitFasta 用于分割fasta格式的文件,并且将分割后的fasta按照序列的顺序存储到Channel中。用户可以通过by参数指定要分割的序列的数目:Channel.fromPath('misc/sample.fa').splitFasta( by: 10 ).view()splitFasta的第二种处理模式,可以将序列保存到record中(如果fasta文件较大,存储到文本中会比较慢),存储到record中后方便后续的处理。Channel.fromPath('misc/sample.fa').splitFasta( record: [id: true, seqString: true ]).filter { record -> record.id =~ /^ENST0.*/ }.view { record -> record.seqString }splitFasta中可以设置的参数如下:参数描述by将文件按照指定行分割成不同的块(默认值为1)size指定内存中保存的文件块的大小,例如 1MBlimit指定每个文件中返回的序列的数目record将fasta文件格式中的序列转换成record形式charset编码格式,默认为utf-8compress是否需要文件压缩,当设置为true时,文件会以gzip格式压缩decompress是否对压缩文件进行解压file当设置为true时将分割后的数据保存成文件,当设置为字符串时按照字符串添加索引后保存文件elem用于分割的元素索引当将fasta序列按照record的形式保存时,可以添加的参数如下:参数描述Idfasta序列的唯一识别符信息headerfasta序列的第一行信息descID后面的文本描述信息text包含header的完整的序列信息seqString序列信息(单行)sequence序列信息(多行)width定义序列字符的长度3. splitFastqsplitFastq用于分割fastq文件。可以通过by参数来控制要分割的序列数目:Channel.fromPath('misc/sample.fastq').splitFastq( by: 10 ).view()第二种分割fastq文件的格式是将序列转换为record的形式。Channel.fromPath('misc/sample.fastq').splitFastq( record: true ).view { record -> record.readHeader }splitFastq还可以分割双端的数据,在读入数据的时候也需要读入双端文件。Channel.fromFilePairs('/my/data/SRR*_{1,2}.fastq', flat:true).splitFastq(by: 100_000, pe:true, file:true).view()参数描述by将文件按照reads数目分割成不同的块(默认值为1)pe当设置为true时会分割双端的数据limit指定每个文件中返回的reads的数目record将fastq文件格式中的序列转换成record形式charset编码格式,默认为utf-8compress是否需要文件压缩,当设置为true时,文件会以gzip格式压缩decompress是否对压缩文件进行解压file当设置为true时将分割后的数据保存成文件,当设置为字符串时按照字符串添加索引后保存文件elem用于分割的元素索引当使用record形式读取时可以设置的参数如下:参数描述readHeader序列的header信息(不包含@符号)readString原始的read信息qualityHeader质控头信息(可能为空)qualityString序列的质量值信息4. splitText文本分割,可以将文本分割成多行:Channel.fromPath('/some/path/*.txt').splitText().view()默认情况下,splitText每次只会处理一行,用户可以通过by参数设定要处理的行数。Channel.fromPath('/some/path/*.txt').splitText( by: 10 ).subscribe {print it;print "--- end of the chunk ---\n"}splitText中可以设置的参数如下:参数描述by处理文本文件的行数(默认值为1)limit指定每个文件中返回的行数charset编码格式,默认为utf-8compress是否需要文件压缩,当设置为true时,文件会以gzip格式压缩decompress是否对压缩文件进行解压file当设置为true时将分割后的数据保存成文件,当设置为字符串时按照字符串添加索引后保存文件elem用于分割的元素索引keepHeader将第一行设置为文件头

(0)

相关推荐