【ROSALIND】【練Python,學生信】52 從前綴譜到多肽序列

如果第一次閱讀本系列文檔請先移步閱讀【ROSALIND】【練Python,學生信】00 寫在前面 ?謝謝配合~

題目:
從譜圖到多肽序列(Inferring Protein from Spectrum)
Given: A list L of n (n≤100) positive real numbers.
所給:一個包含n(n≤100)個正實數(shù)的列表L。
Return: A protein string of length n?1 whose prefix spectrum is equal to L (if multiple solutions exist, you may output any one of them). Consult the monoisotopic mass table.
需得:一條長度為n-1的肽鏈,其前綴譜為L(如果有多個可能結果,返回一個即可)。請參考單一同位素質(zhì)量表。
附:單一同位素質(zhì)量表
測試數(shù)據(jù)
3524.8542
3710.9335
3841.974
3970.0326
4057.0646
測試輸出
WMQS
?
生物學背景
? ? ? ??在20 計算多肽鏈的質(zhì)量中,我們了解到如何用氨基酸殘基的單一同位素質(zhì)量,從多肽序列計算肽段質(zhì)量。本題則解決如何從殘基的質(zhì)量反推序列。
? ? ? ??質(zhì)譜是當今蛋白質(zhì)組學研究中最常用的技術,其原理是檢測分子的質(zhì)荷比。在蛋白質(zhì)組學研究中,樣本經(jīng)氣化后被離子化,進入電磁場,在力的作用下根據(jù)所帶電荷和分子量被分開。質(zhì)譜的輸出結果是譜圖,橫坐標表示離子的質(zhì)荷比(m/z)值,縱坐標則表示離子流的強度。
? ? ? ??在本題中,我們先將問題簡化,僅考慮離子的質(zhì)量。在質(zhì)譜分析中,我們檢測的是大量的同一個蛋白,蛋白在檢測過程中被打碎成肽段,我們假設每次斷裂都發(fā)生在兩個氨基酸之間,這樣就可以通過碎片推出原始的蛋白序列。方法是測量原序列和每個碎片的質(zhì)量,N端產(chǎn)生的碎片離子被稱為前綴(prefixes),即b離子;C端產(chǎn)生的碎片被稱為后綴(suffixes),即y離子。兩個相鄰b離子(或y離子)的質(zhì)量之差就是一個氨基酸殘基的質(zhì)量。
? ? ? ??舉例來說,我們假設有一個多肽鏈“PRTEIN”,被打碎后有下面五種情況:"P" 和"RTEIN";"PR" 和"TEIN";"PRT" 和"EIN"; "PRTE" 和"IN"; "PRTEI" 和"N"。"PRT" 和"PR"質(zhì)量之差必然是"T"。因此,如果我們能知道每個b離子的質(zhì)量,我們就能推測這個蛋白質(zhì)的序列。
? ? ? ??前綴譜是一個多肽序列所有前綴組成的列表。
?
思路
? ? ? ??本題較簡單,把所給單一同位素質(zhì)量表讀取為一個字典,根據(jù)前綴表中每兩個元素的差值查出對應殘基即可。
? ? ? ??但本題有一個讓人比較迷惑的地方:I和L的質(zhì)量是一模一樣的。所以根據(jù)字典的特性,在讀取的單一同位素質(zhì)量表中實際上只有I和L其中之一。好在已足以滿足題目要求。
?
代碼