我正在尝试编辑一个Fastq文件,其中包含基因组数据和每个序列的独特分子标识符。在
前两次读取的示例如下所示:
1 @HISEQ:230:C6G45ANXX:3:1101:1395:2141 1:N:0:ACAGTGGTTGAACCTT
2 TGACGGCACTTTCTCTTCCCAACCACGTGGCTGCAGACTTCTTGCTCTCAAGTTGTCCTGACATGCTCTGAGAGCACACACAACATACATACAACACCTGGATCTGTGAATTAATTACTGCCTAGG
3 +
4 BB//<<BFBFFF<FFFFBBB<<<F/FBBB<FF/B<FFFFFFFFFFFFFFBFFFBFB/FBFFB//F//B<FFF</</BF<BBBFFFFF//B<FBFF/77F/B/BF7/FF/<BF/7FFFFBBF//B7B
5 @HISEQ:230:C6G45ANXX:3:1101:1498:2162 1:N:0:ACAGTGGTTGAACCTT
6 TGACGGCACTTTCTCTTCCCAACCACGTGGCTGCAGACTTCTTGCTCTCAAGTTGTCCTGACATGCTCTGAGAGCACACACAACATACATACAACACCTGGATCTGTGAATTAATTACTGCCTAGG
7 +
8 BBB<B<F<FFFFFFFBFFFFFFBFFFFBFF/F<FFFFBBFFFFFFFFFFBFB/BFFFFFFFFFFFBFFB/<<<FFFFFFFFFFFFFFBFFFF##################################
这些线路解释如下:
^{pr2}$我需要一个输出文件,其中给定序列的所有精确重复(及其对应的信息)都已被删除。也就是说,我需要删除那些4行的块,其中第2行已经出现在文件中。在
因此在上面的例子中,由于序列与第2行和第6行相匹配,输出文件应该包含第1、2、3和4行,而不是5、6、7和8行。在
结果输出文件:
1 @HISEQ:230:C6G45ANXX:3:1101:1395:2141 1:N:0:ACAGTGGTTGAACCTT
2 TGACGGCACTTTCTCTTCCCAACCACGTGGCTGCAGACTTCTTGCTCTCAAGTTGTCCTGACATGCTCTGAGAGCACACACAACATACATACAACACCTGGATCTGTGAATTAATTACTGCCTAGG
3 +
4 BB//<<BFBFFF<FFFFBBB<<<F/FBBB<FF/B<FFFFFFFFFFFFFFBFFFBFB/FBFFB//F//B<FFF</</BF<BBBFFFFF//B<FBFF/77F/B/BF7/FF/<BF/7FFFFBBF//B7B
我想你在FASTQ订单上少了一行。在您的例子中:
所以第1-3行(垃圾)实际上是前一条记录的前3行,第9-11行是下一条记录的前3行。在
无论如何,我建议您使用BioPython的SeqIO来解析FASTQ文件并消除重复。在
一种基本方法是:
^{pr2}$这将读取每个记录并计算要存储在列表中的序列的校验和。如果每个后续记录的序列尚未遇到校验和,则只将其添加到输出(“unique”)的列表中。在
这似乎是我们在文件中循环两次的最佳情况:首先计算重复项,然后打印相应的行:
这里的关键是使用文件中的4K+2行,并跟踪到目前为止出现了哪些行。如果是这样,我们存储
K
(来自4K+2
),这样在文件的下一个循环中,我们将避免那些行的形式为4K+0/1/2/3
。在为了清楚起见,我假设第一列中的行不在那里(我不知道添加这些行是为了澄清还是真的存在)。移除它们应该很简单。在
测试
^{pr2}$相关问题 更多 >
编程相关推荐