1. Counting DNA Nucleotides 碱基记数
#1. 计算序列中各碱基数目
#!/usr/bin/env python3
nts = {c:0 for c in 'ATGC'}
with open('./test.txt','r') as f:
for a in f:
a = a.upper()
for nt in a.rstrip():
nts[nt] += 1
print (nts)
2.Transcribing DNA into RNA 将DNA转为RNA。
(即用"U"替换"T")
#2. 将DNA序列转化为RNA序列
## 1
import re
with open('./test.txt','r') as f:
for line in f:
line = line.upper()
RnaSeq = re.sub('T','U',line.rstrip())
print(RnaSeq)
## 2
with open('./test.txt','r') as f:
for line in f:
line = line.upper()
print(line.replace('T','U'))
3.Complementing a Strand of DNA DNA互补链
## 1
trans = {'A':'T','T':'A','G':'C','C':'G'}
with open('./test.txt','r') as f:
for line in f:
seq = ''
line = line.upper()
for aa in line.rstrip():
seq += trans.get(aa)
print(seq[::-1])
def reverse_complement(seq):
## 2
ntComplement = {'A':'T','T':'A','G':'C','C':'G'}
RevSeqList = list(reversed(seq))
RevComSeqList = [ntComplement[k] for k in RevSeqList]
RevComSeq = ''.join(RevComSeqList)
return RevComSeq
seq = ''
with open('./test.txt','r') as f:
for line in f:
line = line.upper()
print (reverse_complement(line.rstrip()))
4. Rabbits and Recurrence Relations 兔子问题,斐波那契数列
n=input("n is:\r") #公式为Fn = Fn-1 + k * Fn-2
k=input("k is:\r") #\n代表换行
fn =[1,1];
bool_list=[1,1,0];
for i in range(2,int(n)):
if(bool_list[i]==0):
fn.append(fn[i-1]+int(k)*fn[i-2])
bool_list[i]=1
bool_list.append(0)
i+=1;
else:
bool_list.append(0)
i+=1;
print(fn[int(n)-1])
def fib(n,m):
f= [0,1,1]
for i in range(3,n+1):
if i <= m:
total = f[i-1] + f[i-2]
elif i == m+1:
total = f[i-1] + f[i-2] - 1
else:
total = f[i-1] + f[i-2] - f[i-m-1]
f.append(total)
return(f[n])
inp = input('live month of rabbit(m),and afther n-th month;n<=100,m<=20;input(n,m): ')
[n,m]=map(int,inp.split(','))
print(fib(n,m))
5.Computing GC Content fasta文件中GC含量最大的序列
6.Counting Point Mutations 计算点突变数目
7.Mendel's First Law 孟德尔第一定理
一个群体中有三种基因型的生物:k,显性纯合子;m,杂合子;n,隐性纯合子。假设这对形状由一对等位基因控制,且群体中随机选取的任何两个个体都能交配,求随机选取两个个体交配后,子代拥有显性等位基因的概率。
8.Translating RNA into Protein 将RNA翻译成蛋白质
9. Finding a Motif in DNA 寻找DNA motif
## 1
seq = 'GATATATGCATATACTT'
motif = 'ATAT'
motif_len = len(motif)
position = []
for i in range(len(seq)-motif_len):
if seq[i:i+motif_len] == motif:
position.append(i+1)
print(position)
## 2
import re
seq = 'GATATATGCATATACTT'
print([i.start()+1 for i in re.finditer('(?=ATAT)',seq)])