生信入门:Fasta与Fastq格式文件详解
FASTA 文件格式
FASTA格式是一种用于表示核苷酸序列或多肽序列的文本格式。其中碱基对或氨基酸用单个字母来表示,且允许在序列前添加序列名及注释。该格式已成为生物信息学领域的一项标准。
FASTA文件各行记录信息如下:
第一行是由大于号">"开头的任意文字说明,用于序列标记,为了保证后续分析软件能够区分每条序列,单个序列的标识必须是唯一的。
从第二行开始为序列本身,只允许使用既定的核苷酸或氨基酸编码符号。通常核苷酸符号大小写均可,而氨基酸常用大写字母。注意有些程序对大小写有明确要求。一般每行60~80个字母。
核苷酸序列:
A --> adenosine M --> A C (amino)
C --> cytidine S --> G C (strong)
G --> guanine W --> A T (weak)
T --> thymidine B --> G T C
U --> uridine D --> G A T
R --> G A (purine) H --> A C T
Y --> T C (pyrimidine) V --> G C A
K --> G T (keto) N --> A G C T (any)
- gap of indeterminate length
氨基酸序列:
A alanine P proline
B aspartate or asparagine Q glutamine
C cystine R arginine
D aspartate S serine
E glutamate T threonine
F phenylalanine U selenocysteine
G glycine V valine
H histidine W tryptophan
I isoleucine Y tyrosine
K lysine Z glutamate or glutamine
L leucine X any
M methionine * translation stop
N asparagine - gap of indeterminate length
FASTQ 文件格式
FASTQ是一种存储了生物序列以及相应的质量评价的文本格式。其序列以及质量信息都是使用一个ASCII字符标示,现在几乎是高通量测序的标准格式。
FASTQ文件中以四行最为一个基本单元,并对应一条序列的测序信息,各行记录信息如下:
第一行记录序列标识以及相关的描述信息,以‘@’开头,后面跟着序列的描述信息;
第二行为碱基序列;
第三行以‘+’开头,后面是序列标示符、描述信息,或者什么也不加;
第四行是第二行每个碱基对应的质量值,字符数跟第二行的序列是相等的。
FASTQ/FASTA 文件的序列数目统计
在linux下,使用grep命令可以快速进行FASTQ/FASTA 文件的序列数目统计
python %%bash grep "^>" -c DH-002-1.good.fasta
137718
通过统计以 > 开头的个数就能知道文件当中的序列个数。
注意:必须用带引号的">",如果直接用 > 会覆盖你的fasta文件!!!
也许我们可以用相似的方法来统计fastq文件里以 @ 开头的个数:
python %%bash grep "^@" -c DQ-031-2_1.fastq
212354
也可以通过统计文件的总行数除以4来看序列条数:
python %%bash wc -l DQ-031-2_1.fastq
809944 DQ-031-2_1.fastq
而 809,944/4 = 202,486 这与 grep -c 获得的结果竟然不一样!!!为什么呢?这是由于在质量文件中也会出现以@开头的情况。
如果fastq文件第三行只有‘+’,那么可以通过统计‘+’的个数来获得正确的序列数目
python %%bash grep "^+$" -c DQ-031-2_1.fastq
202486
FASTQ 文件格式转换为 FASTA 格式
利用Linux命令head查看一下待转换的fastq文件的开头部分
python %%bash head -8 DQ-031-2_1.fastq
@HWI-D00433:463:HNT7JBCXX:1:1101:19071:2193 1:N:0:TTCTCCAT
CCTACGGGACGCATCAGTGAGGAATATTGGTCAATGGACGCGAGTCTGAACCAGCCAAGTAGCGTGAAGGATGAAGGCCCGATGGGTTGTAAACCTCTTTTATCTGGGAATAAAACGTGCCACGTGTGGTATTTTGTATGTACCATAAGAATAAGTATCGGCTAACTCCGTGCCAGCAGCCGCGGTAATACGGAGGATCCGAGCGTTATCCGGATTTATTGGGTTTAAAGGGTGCGCAGGCGGTCTGTTA
+
DDDDDFHIHHIII0CHHHIHHIHIIIIIIIIIHIHIIHII<EHICHHHIIGEHIIHHHI11<FEDHH1<D<@CH11DE@G/<<C0CG0CGCHII1CEHHHH1<<<DHFEHHHIHI1<111<<1CEEHEHD@CF1<CFEFEHIGHHIG1<FH1<<G<F?C@FHHHIIHHIHHIFEGHGIIHIIIIGHIHHIIC0EHDDHHHHIGGCH/DGHHIDCHIIIFEHHCEHHIEFEH@GHEC-<EHDHH:?H?HHI
@HWI-D00433:463:HNT7JBCXX:1:1101:1713:2316 1:N:0:TTCTCCAT
CCTACGGGGTTCACCAGTAGGGAATCTTCCACAATGGGCGAAAGCCTGATTGAGCAAAGCCGCGTGTTTTAAGAAGGTCTTCGGATCGTAAAACCCTGTTGTTAGAGAAGAAAGTGCGTGCGCGTAACTGTTCACGTTTCTACTGTATCTAACAAGAAAGCACCGGCTAACTACGTTCCATCAGCCGCTTTAATCCTTAGGTTTCAAGCTTTATCCGTATTTATTGGGCGTCACGGGAACGCAGGCGGGC
+
DDDCDH=CHHIHHIIIIIIIIIEHHIIIHIIIHHHIIIIICHHIIIHIEHEHHIIIG1<DGHIIEH0<<1<1DCHHHIGI<G@EGHDC<CGHHCHHIIIHHHFGHIHIIIIIIHI@FCG@0/<C/<0<<DHGEHIGGHEH<FH11<<<DG@HF1<<<D@FE==DC/<FH1D==D0GGHII0F0<DE/</0===GCF00==/D.FGH@?G0DDHHIII#################################
利用Linux命令awk将fastq转化为fasta
python %%bash awk '{if(NR%4==1||NR%4==2){print $0}}' DQ-031-2_1.fastq | \
sed 's/^@/>/g' > DQ-031-2_1.fasta
seqtk 是一款针对fasta/fastq 文件进行处理的小程序,可以拿来快速转换
python %%bash seqtk seq DQ-031-2_1.fastq > DQ-031-2_1.fasta
查看一下转换后的fasta文件
python %%bash head DQ-031-2_1.fasta
>HWI-D00433:463:HNT7JBCXX:1:1101:19071:2193 1:N:0:TTCTCCAT
CCTACGGGACGCATCAGTGAGGAATATTGGTCAATGGACGCGAGTCTGAACCAGCCAAGT
AGCGTGAAGGATGAAGGCCCGATGGGTTGTAAACCTCTTTTATCTGGGAATAAAACGTGC
CACGTGTGGTATTTTGTATGTACCATAAGAATAAGTATCGGCTAACTCCGTGCCAGCAGC
CGCGGTAATACGGAGGATCCGAGCGTTATCCGGATTTATTGGGTTTAAAGGGTGCGCAGG
CGGTCTGTTA
>HWI-D00433:463:HNT7JBCXX:1:1101:1713:2316 1:N:0:TTCTCCAT
CCTACGGGGTTCACCAGTAGGGAATCTTCCACAATGGGCGAAAGCCTGATTGAGCAAAGC
CGCGTGTTTTAAGAAGGTCTTCGGATCGTAAAACCCTGTTGTTAGAGAAGAAAGTGCGTG
CGCGTAACTGTTCACGTTTCTACTGTATCTAACAAGAAAGCACCGGCTAACTACGTTCCA
如果小伙伴们对python熟悉,可以用biopython将fastq转化为fasta
from Bio import SeqIO
def fq2fa(my_file):
with open(my_file) as handle:
record=SeqIO.parse(handle, "fastq")
SeqIO.write(record, my_file+".fa", "fasta")
handle.close()
fq2fa("DQ-031-2_1.fastq")
查看一下转换后的fasta文件
python %%bash head DQ-031-2_1.fastq.fa
>HWI-D00433:463:HNT7JBCXX:1:1101:19071:2193 1:N:0:TTCTCCAT
CCTACGGGACGCATCAGTGAGGAATATTGGTCAATGGACGCGAGTCTGAACCAGCCAAGT
AGCGTGAAGGATGAAGGCCCGATGGGTTGTAAACCTCTTTTATCTGGGAATAAAACGTGC
CACGTGTGGTATTTTGTATGTACCATAAGAATAAGTATCGGCTAACTCCGTGCCAGCAGC
CGCGGTAATACGGAGGATCCGAGCGTTATCCGGATTTATTGGGTTTAAAGGGTGCGCAGG
CGGTCTGTTA
>HWI-D00433:463:HNT7JBCXX:1:1101:1713:2316 1:N:0:TTCTCCAT
CCTACGGGGTTCACCAGTAGGGAATCTTCCACAATGGGCGAAAGCCTGATTGAGCAAAGC
CGCGTGTTTTAAGAAGGTCTTCGGATCGTAAAACCCTGTTGTTAGAGAAGAAAGTGCGTG
CGCGTAACTGTTCACGTTTCTACTGTATCTAACAAGAAAGCACCGGCTAACTACGTTCCA
最后,祝愿大家学习和工作顺意,希望这篇文章能够尽绵薄之力!