3、请设计一个用于保存和处理DNA序列的类DNASequence,该类具有以下特征和功能:
一个翻译表,定义为类属性,名为transcription_table,类型是字典,用于将DNA符号A、T、G、C分别转换为对应的符号,即A到U、T到A、G到C、C到G。
一个限制酶对照表,定义为类属性,名为enz_dict,类型是字典。所谓限制酶,指的是识别特定DNA序列并在识别区内产生截断的蛋白质。本题只关注两种限制酶,一个是’EcoRI’,识别’ GAATTC’序列,'EcoRV',识别'GATATC'序列。
构造函数__init__(self, seqstring)的参数seqstring为一个字符串,代表一个DNA序列,DNASequence有一个对象属性seqstring保存该字符串。要求将参数seqstring中所有字符转换为大写形式再保存到对象属性seqstring中。
有一个对象方法transcription(self),将对象属性seqstring保存的DNA序列,逐符号翻译为对应符号的DNA序列,如”ATG”翻译为”UAC”。
一个对象方法restriction(self, enz),enz为限制酶名称,类型为字符串。该方法的功能是统计对象属性seqstring中,所给限制酶对应的DNA序列的出现次数。如果不含限制酶对应的DNA序列,返回0。
重载len运算,即重新定义特殊函数__len__(self),用于返回对象属性seqstring的长度。
注意:本题不考虑__init__参数seqstring中字符是否合法,默认所给字符都是ATGC之一。
运行示例:
virus = DNASequence(’atggagagccttgttcttggtgtcaa’)
virus.seqstring
’ATGGAGAGCCTTGTTCTTGGTGTCAA’
virus.transcription()
’ UACCUCUCGGAACAAGAACCACAGUU’
other_virus = DNASequence(’atgatatcggagaggatatcggtgtcaa’)
other_virus.restriction(’EcoRV’)
2
len(virus)
26
代码框架:请将该框架拷贝出去,保存在DNASequence.py文件中。如要测试,请在另外的文件里写测试程序。DNASequence.py只能包含DNASequence类的实现代码,不能有其他的测试代码。提交答题时,只提交DNASequence.py。如有其他代码影响了老师改卷,由此造成的扣分后果,由自己承担。
class DNASequence:
transcription_table = {} #翻译表
enz_dict = {} #限制酶对照表
def init(self, seqstring):
#请在下面编写程序
#请勿修改下面的程序
def __len__(self):
# 请在下面编写程序
# 请勿修改下面的程序
def restriction(self, enz):
# 请在下面编写程序
# 请勿修改下面的程序
def transcription(self):
# 请在下面编写程序
# 请勿修改下面的程序