使用 nextflow 拆分成对的 fasta 文件

Split paired fasta files with nextflow

我有一对 fasta 文件,我想将它们分成更小的块以并行处理。

第一个 fasta reads.fasta 包含 DNA 序列

>/kingdoms/rce/workspace1/Nanopore/20180223-run9/RawData/BC-BD-chr10/i0013771_20180416_FAH66366_MN19358_sequencing_run_1042_63976_read_126980_ch_412_strand.fast5_template_deepnano {'mapped_end': 24599, 'num_matches': 22704, 'mapped_strand': '+', 'clipped_bases_end': 18, 'num_insertions': 715, 'mapped_start': 226, 'mapped_chrom': 'chr10', 'num_mismatches': 795, 'clipped_bases_start': 154, 'num_deletions': 874} 
CXXACCCGGAGXXXCAGCXAAAAGCXAXACXXACXACCXXTAXXXTATGXXXACXXXXXAXAGACXGTCXXXXCAXCCXACXCCTXCGCACTTGXCXCXCGCXACXGCCGXGCAACAAACACXAAAXCAAAACAGXAAAAXACXACAXCAAAACGCATAXXCCCXAGAAAAAAAXXXTCXXACAATAXACXAXACXACACAAXACABAAXCAGXGACXXXCGXAACAACAAXXXCCTXCACXCXCCAACTXCXCXGCXCGAAXCCCXACATAAXAATATAXCAAAXCXACCGXCXGGAACAXCAXCGCXAXCCAGCXCXTTGXGAACCGCXACCAXCAGCABGXACAGXGGXACCCXCGTGXCAXCXGCAGCGAGAACTXCAACGXXXGCCAAAXCAAGCCAATGXGGXAACAACCACACC
>/kingdoms/rce/workspace1/Nanopore/20180223-run9/RawData/BC-BD-chr10/i0013771_20180416_FAH66366_MN19358_sequencing_run_1042_63976_read_55042_ch_362_strand.fast5_template_deepnano {'mapped_end': 202484, 'num_matches': 12382, 'mapped_strand': '-', 'clipped_bases_end': 33, 'num_insertions': 442, 'mapped_start': 189194, 'mapped_chrom': 'chr10', 'num_mismatches': 461, 'clipped_bases_start': 20, 'num_deletions': 447} 
XGAXXXTAATGXTAAAXCGAXAGXACCAAGXCXXTTGTTGTAXACXAGAXCCAXXCCXAATATAXCTGTAXCGAGXACAXCGXCTAXXAATGXXCCTGXAAXXXXCAGXXCAAAAXXACXXXXCAAXTBGXXTAXGAAXXCAXCCAAXCXCTGXXCAXXGCXXGCCGCAAXXACGCAGXCAXCAACAXAGACXGCAAXCAXXAGAXXXXBAXCCXCGGXXXGGTAXAAXCCCGGAGTAXAAGAGXXATCXXXCAGXCCAAXXCCAXXCAAGTATTGTCXXAGAXGAXCAXXCCAXTCXXXAGGACXCTGXXXXAGACCATAXAACGCCXTAXXXAGCXXGACXACACAXCXCCXAXCAXGCGGATGXGGGATGTATAXXBCTTCTXCCAAXXXAGCATAXAGGAAXGCAXGAXXGA
...

第二个 fasta reads.fasta_values 包含由 space 分隔的值序列,对应于 reads.fasta 的 DNA 序列(顺序相同)

>/kingdoms/rce/workspace1/Nanopore/20180223-run9/RawData/BC-BD-chr10/i0013771_20180416_FAH66366_MN19358_sequencing_run_1042_63976_read_126980_ch_412_strand.fast5_template_deepnano
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.03 0.03 0.03 0.03 0.03 0.03
>/kingdoms/rce/workspace1/Nanopore/20180223-run9/RawData/BC-BD-chr10/i0013771_20180416_FAH66366_MN19358_sequencing_run_1042_63976_read_55042_ch_362_strand.fast5_template_deepnano
0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09 0.09
...

我想得到几对较小的文件。

目前,我尝试将它们配对,然后拆分它们,但这只会拆分该对中的第一个文件。

Channel
    .fromFilePairs("reads{.fasta,.fasta_values}", flat:true)
    .splitFasta(by: 1, file:true)
    .println()

输出:

[reads, reads.1.fasta, reads.fasta_values]
[reads, reads.2.fasta, reads.fasta_values]
[reads, reads.3.fasta, reads.fasta_values]

虽然我想要这样的东西

[reads, reads.1.fasta, reads.1.fasta_values]
[reads, reads.2.fasta, reads.2.fasta_values]
[reads, reads.3.fasta, reads.3.fasta_values]

我认为对于 fastq 文件的双端读取,类似的事情是可行的,但我无法找到如何使用 fasta 文件。

感谢任何帮助,
谢谢。

好的,我找到了,只需要 splitFasta

中的参数 elem
Channel
    .fromFilePairs("reads{.fasta,.fasta_values}", flat:true)
    .splitFasta(by: 1, file:true, elem:[1,2])
    .println()