0%

python习题练习1

生物信息学Python习题来自ROSALIND

1. Counting DNA Nucleotides

给定一个DNA序列s=’AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC’,计算这一序列s中四个碱基A、T、C、G的碱基数。

1
2
3
4
5
6
7
8
9
10
s1 ='AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC'

A = s1.count('A',0,len(s1))
T = s1.count('T',0,len(s1))
C = s1.count('C',0,len(s1))
G = s1.count('G',0,len(s1))

list = [A,T,C,G]
for l in list:
print(l,end=' ')

封装在函数中。

1
2
3
4
5
6
7
8
def count(string,substring):
num = string.count(substring,0,len(s1))
return num

print(count(s1,'A'))
print(count(s1,'T'))
print(count(s1,'C'))
print(count(s1,'G'))

2. Transcribing DNA into RNA

给定一个编码链的DNA序列s1=’GATGGAACTTGACTACGTAAATT’,将其转换为RNA序列,即T替换为U。

1
2
3
4
5
6
7
8
9
10
s1 = 'GATGGAACTTGACTACGTAAATT'
s2 = s1.replace('T', 'U')
print(s2)

#封装到函数中
def DNA2RNA(DNAstring):
RNAstring = DNAstring.replace('T','U')
return RNAstring

print(DNA2RNA(s1))

3. Complementing a strand of DNA

给定一个DNA序列s1=’AAAACCCGGT’,得到其反向互补序列。
第一种方法:用字典。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
s1 = 'AAAACCCGGT'

def DNA_Reverse(DNAstring):
return DNAstring[::-1]

def DNA_Complement(DNAstring):
my_dict = {'A':'T',
'T':'A',
'C':'G',
'G':'C',
'a':'t',
't':'a',
'c':'g',
'g':'c'}
DNAstring_list = list(DNAstring)
DNA_com_list = [my_dict[base] for base in DNAstring_list]
DNA_com = ''.join(DNA_com_list)
return DNA_com

def ReverseCom(DNAstring):
rev = DNA_Reverse(DNAstring)
rev_com = DNA_Complement(rev)
return rev_com

print(ReverseCom(s1))

第二种方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
s1 = 'AAAACCCGGT'

def DNA_Reverse(DNAstring):
return DNAstring[::-1]

def DNA_Complement2(DNAstring):
DNAstring = DNAstring.upper()
DNAstring = DNAstring.replace('A','t')
DNAstring = DNAstring.replace('T','A')
DNAstring = DNAstring.replace('C','g')
DNAstring = DNAstring.replace('G','C')
DNAstring = DNAstring.upper()
return DNAstring

def ReverseCom2(DNAstring):
rev = DNA_Reverse(DNAstring)
rev_com = DNA_Complement2(rev)
return rev_com

print(ReverseCom2(s1))