Fasta 文件处理大全

Posted by Cooper on February 20, 2019

#

1.文件格式介绍

3.统计

查看有多少行:

1
grep '>' example.fasta | wc

Fast 文件统计

如果想对fastq文件进行统计,例如统计序列条数,碱基总数,reads读长分布等,可以使用seqkit工具进行操作:

1
seqkit stats 0_6_1.fq 0_6_2.fq 

如果想统计fastq文件每条序列ATCG四种碱基组成以及质量值分布,可以使用seqtk comp工具来完成。

1
seqtk comp SRR8651554_1.fastq.gz SRR8651554_2.fastq.gz

如果按照位点进行统计,例如统计第一个位点所有序列ATCG以及质量值分布,可以适应seqtk fqchk命令。fqchk的结果可以用来绘制碱基质量以及含量分布图。

1
seqtk fqchk SRR8651554_1.fastq.gz

合并文件

如果有多个fastq文件,可以使用seqtk mergerpe进行合并,其实cat或者zcat也可以合并,不过seqtk的合并方式有一些差别,cat是将一个文件追加到另一个文件结尾,seqtk mergerpe是每次取文件一个单位合并。

1
seqtk mergepe SRR8651554_1.fastq.gz SRR8651554_2.fastq.gz  |  head -20

过滤短的序列

Ion Torrent,pacbio,nanopore测序的fastq文件序列长度并不相同,通常需要过滤较短的序列,例如过滤掉长度小于150bp的序列。可以使用seqtk seq或者seqkit seq进行操作。

1
2
3
4
5
#过滤小于150bp序列,并压缩输出 
seqkit seq -m 150 nanopore.fastq.gz | gzip -  >filter_150.fq.gz
seqtk seq -L 150 nanopore.fastq.gz
#保留小于150bp序列
seqkit seq -M 150 nanopore.fastq.gz

转换为列表格式

如何将fastq格式转换为列表格式?可以使用seqkit fx2tb,为什么要做这一步处理呢,转换为列表,这样方便根据ID进行处理。将四行数据转换为一行三列,这样就可以使用常用的列表处理程序来进行处理,例如awk。当然处理完了,还可以使用tab2fx将列表转为换fastq格式。

1
seqkit fx2tab SRR8651554_1.fastq.gz

质量值转换

目前测序得到的fastq文件,都采用phred+33的格式,但是如果处理之前的文件,还有可能遇见phred+64的模式,一般软件中包含–phred33或者–phred64选项,当然也可以直接在两种质量值之间进行转换。

1
2
3
4
#将illumina 1.8转换为1.5
seqkit convert --to Illumina-1.5+ SRR8651554_1.fastq.gz |head -4
#将illumina 1.5转换为1.8,什么都不加就是转换为1.8
seqkit convert  SRR8651554_illmina1.5.gz

质量控制QC

fastq格式的质量控制其实非常简单,我们前面统计的各种指标,质控软件可以一次性进行统计,绘制出质控图,包括碱基含量分布图与碱基质量分布图通过这两个图来判断fastq文件质量好坏。可以一次性统计很多文件,每个测序数据会生成一个html格式结果和一个压缩格式的文件夹。如果样品太多可以使用multiqc合并多个结果。

1
fastqc -o outdir -t threads fastq1 fastq2 ...

将多行fasta转换成一行

1
awk '/^>/ {printf("\n%s\n",$0);next; } { printf("%s",$0);}  END {printf("\n");}' < cs_complete_mrna.fa > cs_complete_mrna_one.fa

将fasta每行序列不超过某个数:

1
seqtk seq -l 25

grep去除–:grep -v

1
seqtk seq -l 25 cs_complete_mrna_one.fa |grep ">" -A 1 |grep -v -- "^--$">test.fa