python入门题

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)])

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值