2017-02-10 125 views
1

我正在使用的數據來自Excel文件,其索引1上含有氨基酸序列。我試圖計算不同的屬性基於使用BioPython的序列。我現在的代碼是:BioPython:氨基酸序列含有'J',無法計算分子量

import xlrd 
import sys 
from Bio.SeqUtils.ProtParam import ProteinAnalysis 

print '~~~~~~~~~~~~~~~ EXCEL PARSER FOR PVA/NON-PVA DATA ~~~~~~~~~~~~~~~' 

print 'Path to Excel file:', str(sys.argv[1]) 
fname = sys.argv[1] 
workbook = xlrd.open_workbook(fname, 'rU') 

print '' 
print 'The sheet names that have been found in the Excel file: ' 
sheet_names = workbook.sheet_names() 
number_of_sheet = 1 
for sheet_name in sheet_names: 
    print '*', number_of_sheet, ':  ', sheet_name 
    number_of_sheet += 1 

with open("thefile.txt","w") as f: 
    lines = [] 
    f.write('LENGTH.SEQUENCE,SEQUENCE,MOLECULAR.WEIGHT\n') 
    for sheet_name in sheet_names: 
     worksheet = workbook.sheet_by_name(sheet_name) 
     print 'opened: ', sheet_name 
     for i in range(1, worksheet.nrows): 
      row = worksheet.row_values(i) 
      analysed_seq = ProteinAnalysis(row[1].encode('utf-8')) 
      weight = analysed_seq.molecular_weight() 
      lines.append('{},{},{}\n'.format(row[2], row[1].encode('utf-8'), weight)) 
    f.writelines(lines) 

它一直在工作,直到我加入了分子量的計算。這表明以下錯誤:

Traceback (most recent call last): 
    File "Excel_PVAdata_Parser.py", line 28, in <module> 
    weight = analysed_seq.molecular_weight() 
    File "/usr/lib/python2.7/dist-packages/Bio/SeqUtils/ProtParam.py", line 114, in molecular_weight 
    total_weight += aa_weights[aa] 
KeyError: 'J' 

我看着在Excel中的數據文件,這表明氨基酸序列不包含J.是否有人知道一個包BioPython的其中捕獲有「未知氨基酸」或有另一個建議?

+0

這個問題似乎是非常多的包特定,這不是任何Python標準模塊。我建議看看一個特定的論壇或在項目的github頁面。 – Raf

回答

2

由於peterjc表示,J是編碼亮氨酸(L)或異亮氨酸(I)的模糊氨基酸。兩者具有相同分子量:

>>> from Bio.SeqUtils.ProtParam import ProteinAnalysis 
>>> ProteinAnalysis('L').molecular_weight() 
131.1729 
>>> ProteinAnalysis('I').molecular_weight() 
131.1729 

所以,你可以暫時用兩種LI替換J所有出現計算分子量。

+0

非常感謝!我將編寫一個函數來驗證序列,並在出現問題時將J更改爲L. –

+0

我應該檢查一下,看得很清楚。 Biopython在沒有用戶干預的情況下爲「J」做這件事似乎是合理的。您是否想要提出要求或提出問題? – peterjc

3

Biopython使用蛋白質分子量爲IUPAC,見https://github.com/biopython/biopython/blob/master/Bio/Data/IUPACData.py

J是爲亮氨酸或異亮氨酸(L或I)不明確的氨基酸編碼,和在NMR被用於其中不能得知這些分開。

根據您需要分子量的原因,您可能適合使用L和I的重量平均值?

+0

非常感謝!我將編寫一個函數來驗證序列,並在發生L時更改J. –