如果你对生物信息不那么了解,或许会搞混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
- 本文固定链接: https://maimengkong.com/learn/777.html
- 转载请注明: : 萌小白 2021年9月21日 于 卖萌控的博客 发表
- 百度已收录