前面我們學(xué)習(xí)了數(shù)據(jù)類型以及if、for和while語句秃流,下面赂蕴,我們用剛剛學(xué)到的知識來編程序:
一、估計(jì)蛋白質(zhì)的凈電荷
在固定的pH值下舶胀,可以計(jì)算出蛋白質(zhì)的凈電荷和其各個(gè)氨基酸的電荷之和概说。這是一個(gè)近似值,因?yàn)樗鼪]有考慮到氨基酸是否暴露或隱藏在蛋白質(zhì)結(jié)構(gòu)中嚣伐。
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
二糖赔、尋找保守區(qū)域
為了尋找PCR引物,最好使用退化較少(或更保守)的DNA區(qū)域纤控。這個(gè)程序的目的是尋找這個(gè)區(qū)域挂捻。
由于一個(gè)PCR引物大約有16個(gè)核苷酸,為了給引物設(shè)計(jì)留出空間船万,搜索空間應(yīng)該至少有45個(gè)核苷酸長刻撒。
我們應(yīng)該在輸入序列中找到一個(gè)15個(gè)氨基酸的區(qū)域。
15個(gè)氨基酸提供了45個(gè)核苷酸的搜索區(qū)域(每個(gè)氨基酸3個(gè)核苷酸)耿导。
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個(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)]))
請輸入蛋白序列:ACITSWYQEELTVSTHRRRKY
保守區(qū)域?yàn)椋篊ITSWYQEELTVSTH
使用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