【Python生信編程筆記】if、for以及while語(yǔ)句小例子

前面我們學(xué)習(xí)了數(shù)據(jù)類(lèi)型以及if、for和while語(yǔ)句,下面,我們用剛剛學(xué)到的知識(shí)來(lái)編程序:

一、估計(jì)蛋白質(zhì)的凈電荷

在固定的pH值下,可以計(jì)算出蛋白質(zhì)的凈電荷和其各個(gè)氨基酸的電荷之和。這是一個(gè)近似值,因?yàn)樗鼪](méi)有考慮到氨基酸是否暴露或隱藏在蛋白質(zhì)結(jié)構(gòu)中。

prot_seq=input('請(qǐng)輸入蛋白序列:').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)
請(qǐng)輸入蛋白序列:EDCHYRYHEH
-1.7710000000000001

二、尋找保守區(qū)域

  • 為了尋找PCR引物,最好使用退化較少(或更保守)的DNA區(qū)域。這個(gè)程序的目的是尋找這個(gè)區(qū)域。

  • 由于一個(gè)PCR引物大約有16個(gè)核苷酸,為了給引物設(shè)計(jì)留出空間,搜索空間應(yīng)該至少有45個(gè)核苷酸長(zhǎng)。

  • 我們應(yīng)該在輸入序列中找到一個(gè)15個(gè)氨基酸的區(qū)域。

  • 15個(gè)氨基酸提供了45個(gè)核苷酸的搜索區(qū)域(每個(gè)氨基酸3個(gè)核苷酸)。

prot_seq=input('請(qǐng)輸入蛋白序列:').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個(gè)氨基酸作為一個(gè)切片
    degen=0
    if len(segment)==15:
        for x in segment:
            degen+=prot_deg.get(x,3.05) #計(jì)算這段蛋白序列的總密碼子
        segs_values.append(degen)
min_value=min(segs_values)  #選最小的即為最保守區(qū)域
min_pos=segs_values.index(min_value)
print('保守區(qū)域?yàn)椋簕0}'.format(prot_seq[min_pos:(min_pos+15)]))
請(qǐng)輸入蛋白序列:ACITSWYQEELTVSTHRRRKY
保守區(qū)域?yàn)椋篊ITSWYQEELTVSTH

使用while語(yǔ)句

prot_seq=input('請(qǐng)輸入蛋白序列:').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))])
請(qǐng)輸入蛋白序列:ACITSWYQEELTVSTHRRRKY
CITSWYQEELTVSTH
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容