我正在对人类蛋白质组进行电子消化,这意味着我试图在某个位置切割每个蛋白质的氨基酸序列。我正在我创建的一个更大的函数中使用Pyteomics解析器函数Pyteomics Parser
我得到这个错误: Pyteomics错误:Pyteomics错误,消息:“不是有效的modX序列:{'sequence':'AKDEVQKN'}”
但是,我不确定AKDEVQKN与modX_Requence编译器的不匹配程度:
_modX_sequence = re.compile(r'^([^-]+-)?((?:[^A-Z-]*[A-Z])+)(-[^-]+)?$')
根据我对这个正则表达式的理解,它应该找到任何不以(-)开头并后跟一系列字母字符的字符串
这是我正在尝试使用的函数
import re
import pyteomics
from pyteomics import fasta, parser
def ButcherShop(df, target, rule,min_length=7,exception=None,max_legnth=100, pH=2.0):
> raw = df[target]
> unique_peptides = set()
> for peptide in raw:
> new_peptides = parser.cleave(peptide, rule=rule,min_length=min_length,exception=exception)
> unique_peptides.update(new_peptides)
> print(f'Done,{len(unique_peptides)} sequences of >= 7 amino acids!')
> pep_dic = [{'sequence': i} for i in unique_peptides]
> for peptides in pep_dic:
> pep_dic['parsed_sequence'] = parser.parse(peptides,show_unmodified_termini=False)
> pep_dic['xlength'] = len(peptides)
> pep_dic['charge'] = int(round(electrochem.charge(peptides, pH=pH)))
> pep_dic['mass']=int(round(Peptide_mass(peptides)))
> pep_dic = [peptide for peptide in pep_dic if peptide['length'] <= int(max_length)]
> pep_df = pd.DataFrame.from_dict(pep_dic)
> return unique_peptides,pep_dic,pep_df
感谢您提供有关如何解决此问题的任何见解
**更新:如果我在不同的集合上运行,我会得到相同的错误,这可能表明是库本身
这里是Pyteomics维护人员
错误消息实际上告诉您问题的根源:
PyteomicsError: Pyteomics error, message: "Not a valid modX sequence: {'sequence': 'AKDEVQKN'}"
这意味着传递的不是字符串
'AKDEVQKN'
,而是字典{'sequence': 'AKDEVQKN'}
。这实际上发生在这里:您应该将序列本身传递给
parse
,而不是dict:不是一个解决方案,而是一些分析
在下面的简单示例代码中,“AKDEVQKN”使用post中的正则表达式进行匹配
产出:
这表明问题在代码的其他地方
~\Anaconda\envs\SciFly\lib\site-packages\pyteomics\parser.py
在第312行,从:
到
在我运行解析器之前,尝试使用它们的有效函数测试所有肽。我在字符串中找不到任何false。我现在正在研究它们的功能或我自己的功能
相关问题 更多 >
编程相关推荐