我的数据总是以四个为单位
采用以下格式(称为FASTQ):

@SRR018006.2016 GA2:6:1:20:650 length=36
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
+SRR018006.2016 GA2:6:1:20:650 length=36
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+!
@SRR018006.19405469 GA2:6:100:1793:611 length=36
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+SRR018006.19405469 GA2:6:100:1793:611 length=36
7);;).;);;/;*.2>/@@7;@77<..;)58)5/>/


有没有简单的sed / awk / bash方法将它们转换为
这种格式(称为FASTA):

>SRR018006.2016 GA2:6:1:20:650 length=36
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006.19405469 GA2:6:100:1793:611 length=36
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC


原则上,我们要提取每个4块中的前两行
并将@替换为>

最佳答案

这是一个古老的问题,并且已经提供了许多不同的解决方案。由于可接受的答案使用sed但存在一个明显的问题(即当@符号出现在质量行的第一个字母时,它将用>替换@),因此我不得不提供一个简单的基于sed的解决方案:

sed -n '1~4s/^@/>/p;2~4p'


唯一的假设是,每次读取在FASTQ文件中恰好占据4行,但是根据我的经验,这似乎非常安全。

fastx工具包中的fastq_to_fasta脚本也可以使用。 (值得一提的是,您需要指定-Q33选项以适应现在常见的Phred + 33 Qual编码。这很有趣,因为它仍然会丢弃质量数据!)

10-07 15:35