首页 > 学习课程 > FastQ & FastA傻傻分不清?
2021
09-21

FastQ & FastA傻傻分不清?

如果你对生物信息不那么了解,或许会搞混FASTQ和FASTA,它们都是序列保存的一种格式,是用于NGS分析的基础数据。其实二者很好区分,并且可以通过一定的处理进行格式转换。

FASTQ

FASTQ:是基于文本的,保存生物序列(通常是核酸序列)和其测序质量信息的标准格式。你拿到的测序数据均是fastq格式的。其序列以及质量信息都是使用一个ASCII字符标示,最初是由Sanger开发,目的是将FASTA序列与质量数据放在一起,目前已经成为高通量测序结果的事实标准。

FASTQ文件中每个序列通常有4行信息:

第一行:必须以“@”开头,后面接着唯一的序列ID标识符和描述信息;

第二行:序列字符(核酸为碱基[AGTCN…],蛋白为氨基酸字符[MPVY…]);

第三行:必须以“+”开头,后面可以接第一行“@”后面的内容,也可以不接;

第四行:是第二行中的序列内容每个碱基所对应的测序质量值,用ASCII码表示,可按照一定规则转换为碱基质量得分。不同测序平台,在表示质量值时选择的字符区段也有差异:Sanger = Q+33;Solexa = Q+64。

例如:

@HWI-ST531R:144:D11RDACXX:4:1101:1212:1946 1:N:0:ATTCCT

ATNATGACTCAAGCGCTTCCTCAGTTTAATGAAGCTAACTTCAATGCTGAGATCGTTGACGACATCGAATGGG

+ HWI-ST531R:144:D11RDACXX:4:1101:1212:1946 1:N:0:ATTCCT

?A#AFFDFFHGFFHJJGIJJJIICHIIIIJJGGHIIJJIIJIIJIHGI@FEHIIJBFFHGJJIIHHHDFFFFDCCCCEDDCDDCDEACC

FASTA

Fasta格式也称为Pearson格式,是一种基于文本用于表示核苷酸序列(或氨基酸序列)的格式。在这种格式中碱基对(或氨基酸)用单个字母来编码,且允许在序列前添加序列名及注释。

FASTA格式以“>”开头,紧接着序列的标识符;换行后是序列信息,代表某一条链从5’到3’的序列,一般不超过80个字符。类似FASTQ文件第二行的内容。

例如:

>gi|46575915|ref|NM_008261.2| Mus musculus hepatic nuclear factor 4, alpha (Hnf4a), mRNA

GGGACCTGGGAGGAGGCAGGAGGAGGGCGGGGACGGGGGGGGCTGGGGCTCAGCCCAGGGGCTTGGGTGG

CATCCTGGGCCGGGCAGGACAGGGGGCTAAGGCGTGGGTAGGGGAGAATGCGACTCTCTAAAACCCTTGC

CGGCATGGATATGGCCGACTACAGCGCTGCCCTGGACCCAGCCTACACCACCCTGGAGTTTGAAAATGTG

CAGGTGTTGACCATGGGCAATGACACGTCCCCATCTGAAGGTGCCAACCTCAATTCATCCAACAGCCTGG

GCGTCAGTGCCCTGTGCGCCATCTGTGGCGACCGGGCCACCGGCAAACACTACGGAGCCTCGAGCTGTGA

CGGCTGCAAGGGGTTCTTCAGGAGGAGCGTGAGGAAGAACCACATGT

FASTQ→FASTA

有时候需要将FASTQ格式文件转换为FASTA格式,进一步分析序列信息,那么如何转换呢?其实有多种方法。要注意:fastq文件必须是解压格式的,直接转换压缩文件会出现乱码。

1. 利用Linux的awk命令:

awk '{if(NR%4 == 1){print ">" substr($0, 2)}}{if(NR%4 == 2){print}}' fastq > fasta

2. 利用Biopython处理:

fromBio importSeqIOdeffq2fa(my_file): with open(my_file) as handle: record

with open(my_file) as handle:

record=SeqIO.parse(handle, "fastq")

SeqIO.write(record, "./new.fasta", "fasta")

handle.close()

3. 利用Perl处理:

#! /usr/bin/perl -w #启用perl

use strict;#启用严格的语法提示

open (IN,"my.fastq")||die "open error!n";#打开数据源文件 my.fastq,如果打开失败则终止并输出提示

open (OUT,">my.fasta")||die "open error!n"; #打开输出文件 my.fasta,如果打开失败则终止并输出提示

while (<IN>){ #逐行读取数据源文件my.fastq内容

print OUT ">",$1,"n" if (/^@(.*)/); #如果当前行内容以@开头,则将@换为>,后续内容不变

print OUT $_ if (/^[ATGC]/); #如果当前行内容以A或T或G或C 开头,则输出改行内容

} #其他fastq行内容不输出到输出文件

close (IN); #关闭数据源文件

close (OUT); #关闭输出文件

4. 利用fastx_toolkit的fastq_to_fasta命令处理:

#默认fastq文件的碱基编码格式为phred64,phred33编码的 fastq文件,需要添加参数-Q 33

fastq_to_fasta -i input.fq -o out.fa -Q 33



最后编辑:
作者:萌小白
一个热爱网络的青年!

发布评论

表情