一、实验目的
1. 掌握Biopython常用序列分析模块:SeqIO,SeqRecord,
2. 掌握Biopython常用系统发生树分析模块:Phylo
二、实验环境
1. 操作系统:windows
2. 主要软件:Jupyter notebook
三. 实验内容
1. 已知文件test.fasta中包含一定数量的DNA序列,请编程将mRNA序列翻译成氨基酸序列,存放在test_protein.fasta中,同时输出到屏幕。
提示:Bio.Seq的对象可直接调用translate()函数进行mRNA的翻译。SeqRecord的对象可以调用format('fasta')函数,格式化生成fasta格式的字符串。
屏幕输出如下所示(部分):
2. 已知一个系统发生树存在文件“test.newick”中,请使用draw_ascii()函数绘制系统发生树
提示:使用Phylo.read()函数读取系统发生树文件
输出结果示例(部分):
3. 输出上面系统发生树的所有分支名称。
提示:使用get_terminals()函数可获得树的所有分支名称。
4. 修改上面系统发生树的分支名称,把所有分支名称后添加一个*号,并重新使用draw_ascii()函数绘制系统发生树
提示:find_clades()函数可获得所有分支对象;每个分支对象都有name属性,通过修改name属性,即可完成分支名称修改。
输出结果示例(部分):
四、实验报告
1. 使用jupyter notebook文档填写实验报告,导出并提交pdf格式文件。
文件命名规则:”星期几+学号+姓名+实验7.pdf。
2. 记录实验步骤和实验结果
3. 记录实验中遇到的问题,如何解决的。
1、
from Bio import SeqIO
from Bio.Seq import translate
from Bio.SeqRecord import SeqRecord
from Bio.Seq import Seq
fa = "C:/Users/Polo/Desktop/python 高级编程/test.fasta"
with open("test.fasta", "w") as p:
for seq_record in SeqIO.parse(fa, "fasta"):
remainder = len(seq_record.seq) % 3
seqName = seq_record.name
record = translate(seq_record.seq)
if remainder == 0:
print(SeqRecord(id=seqName, seq=record, description="").format('fasta'))
p.write(SeqRecord(id=seqName, seq=record, description="").format('fasta'))
else:
seq_record = seq_record + Seq('N' * (3 - remainder))
print(SeqRecord(id=seqName, seq=record, description="").format('fasta'))
p.write(SeqRecord(id=seqName, seq=record, description="").format('fasta'))
p.close()
2、
from Bio import Phylo
tree = Phylo.read('C:/Users/Polo/Desktop/python 高级编程/test.newick', 'newick')
Phylo.draw_ascii(tree)
3、
from Bio import Phylo
tree = Phylo.read('C:/Users/Polo/Desktop/python 高级编程/test.newick', 'newick')
Branchname = tree.get_terminals()
for i in range(0,99):
try :
print(Branchname[i],end=' ')
except:
break
4
from Bio import Phylo
from Bio.Phylo import draw_ascii
tree = Phylo.read('C:/Users/Polo/Desktop/python 高级编程/test.newick', 'newick')
Branchname = tree.get_terminals()
for i in range(99):
try:
tree.get_terminals()[i].name = str(Branchname[i]) + "*"
except:
break
draw_ascii(tree)