美文网首页
【Python生信编程笔记】if、for以及while语句小例子

【Python生信编程笔记】if、for以及while语句小例子

作者: 生信开荒牛 | 来源:发表于2023-06-08 09:24 被阅读0次

前面我们学习了数据类型以及if、for和while语句,下面,我们用刚刚学到的知识来编程序:

一、估计蛋白质的净电荷

在固定的pH值下,可以计算出蛋白质的净电荷和其各个氨基酸的电荷之和。这是一个近似值,因为它没有考虑到氨基酸是否暴露或隐藏在蛋白质结构中。

prot_seq=input('请输入蛋白序列:').upper()
charge=-0.002
aa_charge = {"C":-.045,"D":-.999,"E":-.998,"H":.091,
             "K":1,"R":1,"Y":-.001}
for aa in prot_seq:
    charge=charge+aa_charge.get(aa,0)
print(charge)
请输入蛋白序列:EDCHYRYHEH
-1.7710000000000001

二、寻找保守区域

  • 为了寻找PCR引物,最好使用退化较少(或更保守)的DNA区域。这个程序的目的是寻找这个区域。

  • 由于一个PCR引物大约有16个核苷酸,为了给引物设计留出空间,搜索空间应该至少有45个核苷酸长。

  • 我们应该在输入序列中找到一个15个氨基酸的区域。

  • 15个氨基酸提供了45个核苷酸的搜索区域(每个氨基酸3个核苷酸)。

prot_seq=input('请输入蛋白序列:').upper()
prot_deg = {'A':4, 'C':2, 'D':2, 'E':2, 'F':2, 'G':4,
             'H':2, 'I':3, 'K':2, 'L':6, 'M':1, 'N':2,
             'P':4, 'Q':2, 'R':6, 'S':6, 'T':4, 'V':4,
             'W':1, 'Y':2}
segs_values=[]
for aa in range(len(prot_seq)):
    segment=prot_seq[aa:(aa+15)]  #15个氨基酸作为一个切片
    degen=0
    if len(segment)==15:
        for x in segment:
            degen+=prot_deg.get(x,3.05) #计算这段蛋白序列的总密码子
        segs_values.append(degen)
min_value=min(segs_values)  #选最小的即为最保守区域
min_pos=segs_values.index(min_value)
print('保守区域为:{0}'.format(prot_seq[min_pos:(min_pos+15)]))
请输入蛋白序列:ACITSWYQEELTVSTHRRRKY
保守区域为:CITSWYQEELTVSTH

使用while语句

prot_seq=input('请输入蛋白序列:').upper()
prot_deg = {'A':4, 'C':2, 'D':2, 'E':2, 'F':2, 'G':4,
             'H':2, 'I':3, 'K':2, 'L':6, 'M':1, 'N':2,
             'P':4, 'Q':2, 'R':6, 'S':6, 'T':4, 'V':4,
             'W':1, 'Y':2}
segs_values=[]
segs_seqs=[]
segment=prot_seq[:15]
a=0
while len(segment)==15:
    degen=0
    for x in segment:
        degen+=prot_deg.get(x,3.05)
    segs_values.append(degen)
    segs_seqs.append(segment)
    a+=1
    segment=prot_seq[a:a+15]
print(segs_seqs[segs_values.index(min(segs_values))])
请输入蛋白序列:ACITSWYQEELTVSTHRRRKY
CITSWYQEELTVSTH

相关文章

网友评论

      本文标题:【Python生信编程笔记】if、for以及while语句小例子

      本文链接:https://www.haomeiwen.com/subject/hgooedtx.html