fasta 序列解析

fasta格式最常见,也最常用,也是分析中最简单的格式吧,以>开始后续字符表示序列名称,空格后对序列进行描述(可能不存在),换行即为序列信息,可包括换行。下面是一个fasta格式序列实例:

1
2
3
4
>gi|187608668|ref|NM_001043364.2| Bombyx mori moricin (Mor), mRNA
AAACCGCGCAGTTATTTAAAATATGAATATTTTAAAACTTTTCTTTGTTTTTA
CAACGACAACTGTGTACTATTTTTTATATTTGGTTCGAAAAGTTGCATTATTA
ACGATTTTAGAAAATAAAACTACTTTACTTTTACACG

这个实例中序列名字为gi|187608668|ref|NM_001043364.2|,下面就直接贴上常用的fasta解析脚本:

python手动解析

1
2
3
4
5
6
7
8
9
def parse_fasta(fa):
seq = {}
with open(fa) as fa:
for i in fa:
if i.startswith(">"):
name = i[1:].partition(' ')[0]
else:
seq[name] = seq.get(name, '') + i.strip()
return seq

使用HTSeq模块

1
2
3
def parse_fasta_by_HTSeq(fa):
import HTSeq
return {i.name:i.seq for i in HTSeq.FastaReader(fa)}

当然还能使用biopython进行解析,我不太常用这一模块,就不写了

fasta输出格式化

1
2
3
4
5
def format_fasta(seq, len=60):
tmp = ''
for i in range((len(seq)//len)+1):
tmp += '{}\n'.format(seq[(i*60):((i+1)*60)])
return tmp
---------本文结束,感谢您的阅读---------