查看原文
其他

生信入门:Fasta与Fastq格式文件详解

刘飞 基因的生物信息学分析 2022-05-08

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

最后,祝愿大家学习和工作顺意,希望这篇文章能够尽绵薄之力!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存